From 555d702903fb0857122024e1ab78a72d122d3f16 Mon Sep 17 00:00:00 2001 From: Jens-Heiner Rechtien Date: Wed, 26 Mar 2003 17:07:02 +0000 Subject: MWS_SRX644: migrate branch mws_srx644 -> HEAD --- sc/addin/datefunc/dfa.src | 267 +- sc/addin/datefunc/makefile.mk | 7 +- sc/addin/rot13/makefile.mk | 7 +- sc/addin/rot13/rot13.src | 61 +- sc/inc/chgtrack.hxx | 6 +- sc/inc/chgviset.hxx | 9 +- sc/inc/compiler.hxx | 9 +- sc/inc/document.hxx | 18 +- sc/inc/global.hxx | 5 +- sc/inc/refdata.hxx | 5 +- sc/inc/scdll.hxx | 16 +- sc/inc/scextopt.hxx | 5 +- sc/inc/scmod.hxx | 10 +- sc/inc/tabopparams.hxx | 136 + sc/inc/unonames.hxx | 6 +- sc/prj/build.lst | 2 +- sc/prj/d.lst | 12 +- sc/source/core/data/attarray.cxx | 12 +- sc/source/core/data/bcaslot.cxx | 6 +- sc/source/core/data/cell.cxx | 22 +- sc/source/core/data/column3.cxx | 7 +- sc/source/core/data/conditio.cxx | 92 +- sc/source/core/data/docpool.cxx | 27 +- sc/source/core/data/documen2.cxx | 5 +- sc/source/core/data/documen3.cxx | 45 +- sc/source/core/data/documen4.cxx | 8 +- sc/source/core/data/documen8.cxx | 24 +- sc/source/core/data/document.cxx | 57 +- sc/source/core/data/dpsdbtab.cxx | 6 +- sc/source/core/data/dptabsrc.cxx | 14 +- sc/source/core/data/drwlayer.cxx | 6 +- sc/source/core/data/global.cxx | 9 +- sc/source/core/data/markarr.cxx | 7 +- sc/source/core/data/patattr.cxx | 10 +- sc/source/core/data/table3.cxx | 22 +- sc/source/core/data/table4.cxx | 10 +- sc/source/core/data/table6.cxx | 15 +- sc/source/core/data/validat.cxx | 8 +- sc/source/core/inc/interpre.hxx | 35 +- sc/source/core/src/compiler.src | 15 +- sc/source/core/tool/chartarr.cxx | 11 +- sc/source/core/tool/chgtrack.cxx | 19 +- sc/source/core/tool/chgviset.cxx | 56 +- sc/source/core/tool/compiler.cxx | 35 +- sc/source/core/tool/detfunc.cxx | 14 +- sc/source/core/tool/editutil.cxx | 10 +- sc/source/core/tool/interpr1.cxx | 199 +- sc/source/core/tool/interpr2.cxx | 136 +- sc/source/core/tool/interpr3.cxx | 100 +- sc/source/core/tool/interpr4.cxx | 953 ++-- sc/source/core/tool/interpr5.cxx | 24 +- sc/source/core/tool/rangenam.cxx | 6 +- sc/source/core/tool/rangeseq.cxx | 10 +- sc/source/core/tool/rechead.cxx | 6 +- sc/source/core/tool/scmatrix.cxx | 10 +- sc/source/core/tool/subtotal.cxx | 211 +- sc/source/core/tool/token.cxx | 28 +- sc/source/filter/dif/difexp.cxx | 245 +- sc/source/filter/dif/difimp.cxx | 162 +- sc/source/filter/excel/biffdump.cxx | 1763 ++++--- sc/source/filter/excel/biffrecdumper.ini | 1 + sc/source/filter/excel/colrowst.cxx | 7 +- sc/source/filter/excel/excdoc.cxx | 213 +- sc/source/filter/excel/excel.cxx | 4 +- sc/source/filter/excel/excform.cxx | 13 +- sc/source/filter/excel/excform8.cxx | 11 +- sc/source/filter/excel/excimp8.cxx | 343 +- sc/source/filter/excel/excobj.cxx | 19 +- sc/source/filter/excel/excrecds.cxx | 660 +-- sc/source/filter/excel/exctools.cxx | 85 +- sc/source/filter/excel/expop2.cxx | 15 +- sc/source/filter/excel/fontbuff.cxx | 4 +- sc/source/filter/excel/impop.cxx | 120 +- sc/source/filter/excel/makefile.mk | 5 +- sc/source/filter/excel/namebuff.cxx | 18 +- sc/source/filter/excel/read.cxx | 44 +- sc/source/filter/excel/xecontent.cxx | 4 +- sc/source/filter/excel/xehelper.cxx | 27 +- sc/source/filter/excel/xelink.cxx | 4 +- sc/source/filter/excel/xerecord.cxx | 36 +- sc/source/filter/excel/xeroot.cxx | 25 +- sc/source/filter/excel/xestream.cxx | 4 +- sc/source/filter/excel/xestyle.cxx | 811 +++- sc/source/filter/excel/xicontent.cxx | 11 +- sc/source/filter/excel/xihelper.cxx | 20 +- sc/source/filter/excel/xilink.cxx | 21 +- sc/source/filter/excel/xiroot.cxx | 51 +- sc/source/filter/excel/xistream.cxx | 34 +- sc/source/filter/excel/xistyle.cxx | 578 +-- sc/source/filter/excel/xlocx.cxx | 286 ++ sc/source/filter/excel/xlroot.cxx | 26 +- sc/source/filter/excel/xlstyle.cxx | 8 +- sc/source/filter/excel/xltools.cxx | 72 +- sc/source/filter/ftools/fapihelper.cxx | 8 +- sc/source/filter/ftools/fprogressbar.cxx | 131 +- sc/source/filter/ftools/ftools.cxx | 123 +- sc/source/filter/ftools/makefile.mk | 4 +- sc/source/filter/html/htmlimp.cxx | 31 +- sc/source/filter/html/htmlpars.cxx | 1964 ++++++-- sc/source/filter/inc/XclExpChangeTrack.hxx | 4 +- sc/source/filter/inc/XclImpChangeTrack.hxx | 4 +- sc/source/filter/inc/colrowst.hxx | 4 +- sc/source/filter/inc/dif.hxx | 119 +- sc/source/filter/inc/eeparser.hxx | 14 +- sc/source/filter/inc/excdefs.hxx | 9 +- sc/source/filter/inc/excdoc.hxx | 4 +- sc/source/filter/inc/excform.hxx | 6 +- sc/source/filter/inc/excimp8.hxx | 30 +- sc/source/filter/inc/excrecds.hxx | 185 +- sc/source/filter/inc/exp_op.hxx | 4 +- sc/source/filter/inc/fapihelper.hxx | 4 +- sc/source/filter/inc/filt_pch.hxx | 6 +- sc/source/filter/inc/fprogressbar.hxx | 152 +- sc/source/filter/inc/ftools.hxx | 64 +- sc/source/filter/inc/htmlpars.hxx | 616 ++- sc/source/filter/inc/imp_op.hxx | 5 +- sc/source/filter/inc/lotimpop.hxx | 4 +- sc/source/filter/inc/namebuff.hxx | 10 +- sc/source/filter/inc/root.hxx | 12 +- sc/source/filter/inc/scflt.hxx | 8 +- sc/source/filter/inc/xcl97dum.hxx | 26 +- sc/source/filter/inc/xcl97esc.hxx | 11 +- sc/source/filter/inc/xcl97rec.hxx | 156 +- sc/source/filter/inc/xecontent.hxx | 4 +- sc/source/filter/inc/xehelper.hxx | 9 +- sc/source/filter/inc/xelink.hxx | 4 +- sc/source/filter/inc/xerecord.hxx | 52 +- sc/source/filter/inc/xeroot.hxx | 11 +- sc/source/filter/inc/xestream.hxx | 4 +- sc/source/filter/inc/xestyle.hxx | 294 +- sc/source/filter/inc/xicontent.hxx | 6 +- sc/source/filter/inc/xihelper.hxx | 9 +- sc/source/filter/inc/xilink.hxx | 9 +- sc/source/filter/inc/xiroot.hxx | 20 +- sc/source/filter/inc/xistream.hxx | 20 +- sc/source/filter/inc/xistyle.hxx | 122 +- sc/source/filter/inc/xlconst.hxx | 83 +- sc/source/filter/inc/xlocx.hxx | 158 + sc/source/filter/inc/xlroot.hxx | 25 +- sc/source/filter/inc/xlstyle.hxx | 29 +- sc/source/filter/inc/xltools.hxx | 25 +- sc/source/filter/lotus/filter.cxx | 12 +- sc/source/filter/lotus/lotform.cxx | 4 +- sc/source/filter/lotus/lotimpop.cxx | 4 +- sc/source/filter/lotus/lotread.cxx | 13 +- sc/source/filter/lotus/op.cxx | 12 +- sc/source/filter/lotus/tool.cxx | 6 +- sc/source/filter/rtf/eeimpars.cxx | 23 +- sc/source/filter/starcalc/scflt.cxx | 21 +- sc/source/filter/xcl97/XclExpChangeTrack.cxx | 4 +- sc/source/filter/xcl97/XclImpChangeTrack.cxx | 4 +- sc/source/filter/xcl97/makefile.mk | 5 +- sc/source/filter/xcl97/xcl97dum.cxx | 131 +- sc/source/filter/xcl97/xcl97esc.cxx | 106 +- sc/source/filter/xcl97/xcl97rec.cxx | 404 +- .../filter/xml/XMLChangeTrackingImportHelper.cxx | 7 +- sc/source/filter/xml/XMLConverter.cxx | 9 +- sc/source/filter/xml/XMLStylesExportHelper.cxx | 4 +- sc/source/filter/xml/XMLStylesExportHelper.hxx | 4 +- sc/source/filter/xml/XMLTableMasterPageExport.cxx | 12 +- sc/source/filter/xml/xmlcelli.cxx | 7 +- sc/source/filter/xml/xmldrani.cxx | 16 +- sc/source/filter/xml/xmlexprt.cxx | 99 +- sc/source/filter/xml/xmlexprt.hxx | 15 +- sc/source/filter/xml/xmlwrap.cxx | 16 +- sc/source/ui/Accessibility/AccessibleCell.cxx | 13 +- .../ui/Accessibility/AccessibleContextBase.cxx | 76 +- .../ui/Accessibility/AccessibleCsvControl.cxx | 37 +- sc/source/ui/Accessibility/AccessibleDocument.cxx | 32 +- .../AccessibleDocumentPagePreview.cxx | 375 +- .../Accessibility/AccessiblePreviewHeaderCell.cxx | 112 +- .../ui/Accessibility/AccessiblePreviewTable.cxx | 29 +- .../ui/Accessibility/AccessibleSpreadsheet.cxx | 18 +- sc/source/ui/Accessibility/AccessibleTableBase.cxx | 14 +- sc/source/ui/Accessibility/AccessibleText.cxx | 56 +- sc/source/ui/app/inputhdl.cxx | 33 +- sc/source/ui/app/inputwin.cxx | 106 +- sc/source/ui/app/msgpool.cxx | 6 +- sc/source/ui/app/scdll.cxx | 6 +- sc/source/ui/app/scmod.cxx | 24 +- sc/source/ui/app/template.cxx | 34 +- sc/source/ui/app/typemap.cxx | 5 +- sc/source/ui/app/uiitems.cxx | 166 +- sc/source/ui/cctrl/popmenu.cxx | 18 +- sc/source/ui/dbgui/asciiopt.cxx | 17 +- sc/source/ui/dbgui/asciiopt.src | 13 +- sc/source/ui/dbgui/consdlg.src | 51 +- sc/source/ui/dbgui/csvcontrol.cxx | 45 +- sc/source/ui/dbgui/csvgrid.cxx | 105 +- sc/source/ui/dbgui/csvruler.cxx | 15 +- sc/source/ui/dbgui/csvtablebox.cxx | 15 +- sc/source/ui/dbgui/dapitype.src | 73 +- sc/source/ui/dbgui/fieldwnd.cxx | 29 +- sc/source/ui/dbgui/imoptdlg.src | 6 +- sc/source/ui/dbgui/pivot.src | 39 +- sc/source/ui/dbgui/pvfundlg.src | 137 +- sc/source/ui/dbgui/pvlaydlg.cxx | 25 +- sc/source/ui/dbgui/scendlg.src | 103 +- sc/source/ui/dbgui/tpsort.cxx | 13 +- sc/source/ui/dbgui/validate.src | 281 +- sc/source/ui/docshell/dbdocimp.cxx | 4 +- sc/source/ui/docshell/docfunc.cxx | 29 +- sc/source/ui/docshell/docsh.cxx | 25 +- sc/source/ui/docshell/docsh3.cxx | 19 +- sc/source/ui/docshell/impex.cxx | 20 +- sc/source/ui/docshell/pagedata.cxx | 8 +- sc/source/ui/docshell/tpstat.src | 49 +- sc/source/ui/drawfunc/drformsh.src | 142 +- sc/source/ui/drawfunc/drtxtob.cxx | 24 +- sc/source/ui/drawfunc/fudraw.cxx | 72 +- sc/source/ui/drawfunc/fuins2.cxx | 48 +- sc/source/ui/drawfunc/futext2.cxx | 9 +- sc/source/ui/drawfunc/objdraw.src | 361 +- sc/source/ui/formdlg/dwfunctr.src | 61 +- sc/source/ui/formdlg/formdata.cxx | 4 +- sc/source/ui/formdlg/formdlgs.src | 35 +- sc/source/ui/formdlg/parawin.src | 6 +- sc/source/ui/inc/AccessibleContextBase.hxx | 8 +- sc/source/ui/inc/AccessibleCsvControl.hxx | 6 +- sc/source/ui/inc/AccessibleDocumentPagePreview.hxx | 6 +- sc/source/ui/inc/AccessiblePreviewHeaderCell.hxx | 10 +- sc/source/ui/inc/AccessibleText.hxx | 7 +- sc/source/ui/inc/csvcontrol.hxx | 59 +- sc/source/ui/inc/csvgrid.hxx | 8 +- sc/source/ui/inc/docfunc.hxx | 5 +- sc/source/ui/inc/fieldwnd.hxx | 8 +- sc/source/ui/inc/inputwin.hxx | 5 +- sc/source/ui/inc/olinewin.hxx | 24 +- sc/source/ui/inc/output.hxx | 11 +- sc/source/ui/inc/preview.hxx | 6 +- sc/source/ui/inc/prevwsh.hxx | 7 +- sc/source/ui/inc/pvlaydlg.hxx | 9 +- sc/source/ui/inc/tabview.hxx | 7 +- sc/source/ui/inc/tabvwsh.hxx | 6 +- sc/source/ui/inc/tphf.hxx | 4 +- sc/source/ui/inc/viewdata.hxx | 6 +- sc/source/ui/miscdlgs/acredlin.cxx | 8 +- sc/source/ui/miscdlgs/acredlin.src | 413 +- sc/source/ui/miscdlgs/highred.cxx | 14 +- sc/source/ui/miscdlgs/highred.src | 74 +- sc/source/ui/miscdlgs/instbdlg.src | 111 +- sc/source/ui/miscdlgs/linkarea.src | 17 +- sc/source/ui/miscdlgs/tabopdlg.cxx | 6 +- sc/source/ui/navipi/navipi.src | 37 +- sc/source/ui/optdlg/opredlin.cxx | 4 +- sc/source/ui/optdlg/tpcalc.cxx | 26 +- sc/source/ui/pagedlg/hfedtdlg.src | 25 +- sc/source/ui/pagedlg/pagedlg.src | 39 +- sc/source/ui/pagedlg/tphf.src | 14 +- sc/source/ui/src/attrdlg.src | 41 +- sc/source/ui/src/autofmt.src | 172 +- sc/source/ui/src/condfrmt.src | 37 +- sc/source/ui/src/crnrdlg.src | 30 +- sc/source/ui/src/dbnamdlg.src | 33 +- sc/source/ui/src/filter.src | 69 +- sc/source/ui/src/globstr.src | 387 +- sc/source/ui/src/hdrcont.src | 151 +- sc/source/ui/src/miscdlgs.src | 107 +- sc/source/ui/src/namedlg.src | 113 +- sc/source/ui/src/opredlin.src | 60 +- sc/source/ui/src/optdlg.src | 71 +- sc/source/ui/src/popup.src | 77 +- sc/source/ui/src/sc.src | 8 +- sc/source/ui/src/scerrors.src | 113 +- sc/source/ui/src/scfuncs.src | 5047 +++++++++++++------- sc/source/ui/src/scstring.src | 279 +- sc/source/ui/src/scwarngs.src | 48 +- sc/source/ui/src/simpref.src | 43 +- sc/source/ui/src/solvrdlg.src | 173 +- sc/source/ui/src/sortdlg.src | 52 +- sc/source/ui/src/subtdlg.src | 204 +- sc/source/ui/src/tabopdlg.src | 202 +- sc/source/ui/src/textdlgs.src | 156 +- sc/source/ui/src/toolbox.src | 715 ++- sc/source/ui/styleui/scstyles.src | 6 +- sc/source/ui/styleui/styledlg.src | 103 +- sc/source/ui/undo/undocell.cxx | 15 +- sc/source/ui/unoobj/cellsuno.cxx | 9 +- sc/source/ui/unoobj/datauno.cxx | 65 +- sc/source/ui/unoobj/defltuno.cxx | 8 +- sc/source/ui/unoobj/fielduno.cxx | 8 +- sc/source/ui/unoobj/shapeuno.cxx | 67 +- sc/source/ui/unoobj/srchuno.cxx | 6 +- sc/source/ui/unoobj/unodoc.cxx | 109 + sc/source/ui/view/formatsh.cxx | 63 +- sc/source/ui/view/gridwin.cxx | 74 +- sc/source/ui/view/gridwin4.cxx | 20 +- sc/source/ui/view/hdrcont.cxx | 11 +- sc/source/ui/view/olinewin.cxx | 209 +- sc/source/ui/view/olkact.cxx | 234 +- sc/source/ui/view/output.cxx | 91 +- sc/source/ui/view/output2.cxx | 132 +- sc/source/ui/view/preview.cxx | 36 +- sc/source/ui/view/prevloc.cxx | 6 +- sc/source/ui/view/prevwsh.cxx | 17 +- sc/source/ui/view/printfun.cxx | 93 +- sc/source/ui/view/tabview5.cxx | 11 +- sc/source/ui/view/tabvwsh2.cxx | 12 +- sc/source/ui/view/tabvwsh3.cxx | 13 +- sc/source/ui/view/tabvwsh4.cxx | 32 +- sc/source/ui/view/tabvwshb.cxx | 4 +- sc/source/ui/view/tabvwshf.cxx | 16 +- sc/source/ui/view/tabvwshg.cxx | 17 +- sc/source/ui/view/viewdata.cxx | 39 +- sc/source/ui/view/viewfun5.cxx | 4 +- sc/source/ui/view/viewfunc.cxx | 36 +- sc/util/hidother.src | 12 +- sc/util/makefile.mk | 19 +- sc/xml/ScDrawPageObj.xml | 296 ++ 309 files changed, 17764 insertions(+), 10711 deletions(-) create mode 100644 sc/inc/tabopparams.hxx create mode 100644 sc/source/filter/excel/xlocx.cxx create mode 100644 sc/source/filter/inc/xlocx.hxx create mode 100644 sc/source/ui/unoobj/unodoc.cxx create mode 100644 sc/xml/ScDrawPageObj.xml (limited to 'sc') diff --git a/sc/addin/datefunc/dfa.src b/sc/addin/datefunc/dfa.src index 9cc38af9759c..bff23ee7c886 100644 --- a/sc/addin/datefunc/dfa.src +++ b/sc/addin/datefunc/dfa.src @@ -2,9 +2,9 @@ * * $RCSfile: dfa.src,v $ * - * $Revision: 1.22 $ + * $Revision: 1.23 $ * - * last change: $Author: rt $ $Date: 2001-11-16 22:54:13 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:03:08 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -87,8 +87,9 @@ Resource RID_SC_ADDIN_DFA Text[ greek ] = " 1"; Text[ korean ] = "날짜 1"; Text[ turkish ] = "Tarih 1"; - Text[ catalan ] = "Fecha 1"; - Text[ finnish ] = "P?iv?m??r? 1"; + Text[ catalan ] = "Data 1"; + Text[ finnish ] = "Pivmr 1"; + Text[ thai ] = "วันที่ 1"; }; String DFA_PAR_DATE2_NAME // Name of Date2 Parameter { @@ -114,8 +115,9 @@ Resource RID_SC_ADDIN_DFA Text[ greek ] = " 2"; Text[ korean ] = "날짜 2"; Text[ turkish ] = "Tarih 2"; - Text[ catalan ] = "Fecha 2"; - Text[ finnish ] = "P?iv?m??r? 2"; + Text[ catalan ] = "Data 2"; + Text[ finnish ] = "Pivmr 2"; + Text[ thai ] = "วันที่ 2"; }; String DFA_PAR_MODE_NAME // Name of Mode Parameter { @@ -123,7 +125,7 @@ Resource RID_SC_ADDIN_DFA Text [ english ] = "Mode" ; Text[ english_us ] = "Mode"; Text[ portuguese ] = "Modo"; - Text[ russian ] = " "; + Text[ russian ] = ""; Text[ dutch ] = "Modus"; Text[ french ] = "Mode"; Text[ spanish ] = "Modo"; @@ -132,7 +134,7 @@ Resource RID_SC_ADDIN_DFA Text[ swedish ] = "Typ"; Text[ polish ] = "Tryb"; Text[ portuguese_brazilian ] = "Mode"; - Text[ japanese ] = "モード"; + Text[ japanese ] = "モード"; Text[ chinese_simplified ] = "类型"; Text[ chinese_traditional ] = "類型"; Text[ arabic ] = " "; @@ -141,8 +143,9 @@ Resource RID_SC_ADDIN_DFA Text[ greek ] = ""; Text[ korean ] = "모드"; Text[ turkish ] = "Tr"; - Text[ catalan ] = "Modo"; + Text[ catalan ] = "Mode"; Text[ finnish ] = "Tila"; + Text[ thai ] = "โหมด"; }; String DFA_PAR_DATE_NAME // Name of Date Parameter @@ -169,8 +172,9 @@ Resource RID_SC_ADDIN_DFA Text[ greek ] = ""; Text[ korean ] = "날짜"; Text[ turkish ] = "Tarih"; - Text[ catalan ] = "Fecha"; - Text[ finnish ] = "P?iv?m??r?"; + Text[ catalan ] = "Data"; + Text[ finnish ] = "Pivmr"; + Text[ thai ] = "วันที่"; }; String DFA_PAR_DATE_DESC // Description of Date Parameter @@ -179,7 +183,7 @@ Resource RID_SC_ADDIN_DFA Text [ english ] = "a internal date value" ; Text[ english_us ] = "Internal number of the date"; Text[ portuguese ] = "Nmero interno da data"; - Text[ russian ] = " "; + Text[ russian ] = " "; Text[ dutch ] = "Interne waarde van de datum"; Text[ french ] = "Le numro de srie de la date"; Text[ spanish ] = "Nmero interno de la fecha"; @@ -188,17 +192,18 @@ Resource RID_SC_ADDIN_DFA Text[ swedish ] = "Datumets interna tal"; Text[ polish ] = "Wewntrzna liczba daty"; Text[ portuguese_brazilian ] = "a internal date value"; - Text[ japanese ] = "日付のシリアル値"; + Text[ japanese ] = "日付のシリアル値"; Text[ chinese_simplified ] = "日期的系统内部数字"; Text[ chinese_traditional ] = "日期的內部數字"; Text[ arabic ] = " "; Text[ dutch ] = "Interne waarde van de datum"; Text[ chinese_simplified ] = "日期的系统内部数字"; Text[ greek ] = " "; - Text[ korean ] = "날짜의 숫자"; + Text[ korean ] = "날짜 내부값"; Text[ turkish ] = "Dahili tarih says"; - Text[ catalan ] = "Nmero interno de la fecha"; - Text[ finnish ] = "P?iv?m??r?n sis?inen numero"; + Text[ catalan ] = "Nmero intern de la data"; + Text[ finnish ] = "Pivmrn sisinen numero"; + Text[ thai ] = "ตัวเลขภายในของวันที่"; }; /*-=======================================================================*/ @@ -226,8 +231,9 @@ Resource RID_SC_ADDIN_DFA Text[ greek ] = ""; Text[ korean ] = "주"; Text[ turkish ] = "Hafta"; - Text[ catalan ] = "Semanas"; - Text[ finnish ] = "Viikot"; + Text[ catalan ] = "Setmanes"; + Text[ finnish ] = "VIIKOT"; + Text[ thai ] = "สัปดาห์"; }; String DFA_WEEK_DESC // Description { @@ -235,10 +241,10 @@ Resource RID_SC_ADDIN_DFA Text [ english ] = "returns number of weeks between two dates" ; Text[ english_us ] = "Returns the difference in weeks between two dates"; Text[ portuguese ] = "devolve o nmero de semanas entre duas datas"; - Text[ russian ] = " "; + Text[ russian ] = " "; Text[ dutch ] = "Bepaalt het aantal weken tussen twee datums"; Text[ french ] = "Renvoie la diffrence en semaines de deux dates"; - Text[ spanish ] = "Determina la diferencia en semanas de dos fechas"; + Text[ spanish ] = "Devuelve la diferencia semanal de dos fechas"; Text[ italian ] = "Restituisce la differenza settimanale di due date"; Text[ danish ] = "Bestemmer ugedifferensen mellem to datoer"; Text[ swedish ] = "Bestmmer veckodifferensen mellan tv datum"; @@ -253,8 +259,9 @@ Resource RID_SC_ADDIN_DFA Text[ greek ] = " "; Text[ korean ] = "두 날짜 사이의 주 수를 결정"; Text[ turkish ] = "ki veri arasndaki hafta farkn bulur"; - Text[ catalan ] = "Determina la diferencia en semanas de dos fechas"; - Text[ finnish ] = "Palauttaa kahden p?iv?m??r?n v?lisen eron viikkoina"; + Text[ catalan ] = "Retorna la diferncia en setmanes entre dues dates"; + Text[ finnish ] = "Palauttaa kahden pivmrn vlisen eron viikkoina"; + Text[ thai ] = "กลับไปยังผลต่างในสัปดาห์ระหว่างวันสองวัน"; }; String DFA_WEEK_PAR1_DESC // Description of Parameter 1 { @@ -263,10 +270,10 @@ Resource RID_SC_ADDIN_DFA Text[ language_user1 ] = "J?geres Datum ist das Gegenteil von older date"; Text[ english_us ] = "The end date for calculating the difference in weeks"; Text[ portuguese ] = "Data mais recente para a diferena em semanas"; - Text[ russian ] = " ."; + Text[ russian ] = " ."; Text[ dutch ] = "De vroegere datum"; Text[ french ] = "Date la plus rcente pour la diffrence en semaines"; - Text[ spanish ] = "Fecha ms reciente para la diferencia en semanas"; + Text[ spanish ] = "La fecha ms reciente para la diferencia semanal"; Text[ italian ] = "La data pi recente per la differenza settimanale"; Text[ danish ] = "Yngre dato for ugedifferensen"; Text[ swedish ] = "Yngre datum fr veckodifferensen"; @@ -279,10 +286,11 @@ Resource RID_SC_ADDIN_DFA Text[ dutch ] = "De vroegere datum"; Text[ chinese_simplified ] = "属于一个周差额的较早的日期"; Text[ greek ] = " "; - Text[ korean ] = "두 날짜 사이 계산에서의 마지막 날짜"; + Text[ korean ] = "주일 수 차이 계산의 최종 날짜"; Text[ turkish ] = "Hafta fark hesab iin daha ge olan tarih"; - Text[ catalan ] = "Fecha ms reciente para la diferencia en semanas"; - Text[ finnish ] = "Lopetusp?iv?m??r? laskettaessa p?iv?m??rien v?linen ero viikkoina"; + Text[ catalan ] = "Data final per calcular la diferncia en setmanes"; + Text[ finnish ] = "Lopetuspivmr laskettaessa pivmrien vlinen ero viikkoina"; + Text[ thai ] = "วันสิ้นสุดสำหรับการคำนวณผลต่างในสัปดาห์"; }; String DFA_WEEK_PAR2_DESC // Description of Parameter 2 { @@ -290,10 +298,10 @@ Resource RID_SC_ADDIN_DFA Text [ english ] = "the younger date for the week difference" ; Text[ english_us ] = "The start date for calculating the difference weeks"; Text[ portuguese ] = "Data mais antiga para a diferena em semanas"; - Text[ russian ] = " ."; + Text[ russian ] = " ."; Text[ dutch ] = "De latere datum"; Text[ french ] = "Date la plus ancienne pour la diffrence en semaines"; - Text[ spanish ] = "Fecha ms antigua para la diferencia en semanas"; + Text[ spanish ] = "La fecha ms vieja para la diferencia semanal"; Text[ italian ] = "La data meno recente per la differenza settimanale"; Text[ danish ] = "ldre dato for ugedifferensen"; Text[ swedish ] = "ldre datum fr veckodifferensen"; @@ -306,10 +314,11 @@ Resource RID_SC_ADDIN_DFA Text[ dutch ] = "De latere datum"; Text[ chinese_simplified ] = "属于一个周差额的较晚的日期"; Text[ greek ] = " "; - Text[ korean ] = "두 날짜 사이 계산에서의 시작 날짜"; + Text[ korean ] = "주일 수 차이 계산의 시작 날짜"; Text[ turkish ] = "Hafta fark hesab iin daha erken olan tarih"; - Text[ catalan ] = "Fecha ms antigua para la diferencia en semanas"; - Text[ finnish ] = "Aloitusp?iv?m??r? laskettaessa p?iv?m??rien v?linen ero viikkoina"; + Text[ catalan ] = "Data d'inici per calcular la diferncia en setmanes"; + Text[ finnish ] = "Aloituspivmr laskettaessa pivmrien vlinen ero viikkoina"; + Text[ thai ] = "วันเริ่มต้นสำหรับคำนวณผลต่างสัปดาห์"; }; String DFA_WEEK_PAR3_DESC // Description of Parameter 3 { @@ -317,16 +326,16 @@ Resource RID_SC_ADDIN_DFA Text [ english ] = "Mode=0 means week interval, Mode=1 means by week of year" ; Text[ english_us ] = "Type of difference calculation: mode=0 means the interval, mode=1 means calendar weeks"; Text[ portuguese ] = "Modo de formao da diferena: modo=0 para intervalos; modo=1 para semanas."; - Text[ russian ] = " : =0 , =1 "; + Text[ russian ] = " : =0 , =1 "; Text[ dutch ] = "Modus=0 betekent aantal , Modus=1 betekent in kalenderweken"; Text[ french ] = "Mode de calcul de la diffrence Mode=0 pour l'intervalle, Mode=1 pour les semaines de l'anne"; - Text[ spanish ] = "Tipo de formacin de diferencia: Tipo=0 significa intervalo; tipo=1, semanas del ao"; + Text[ spanish ] = "Tipo de clculo de la diferencia, tipo=0 significa intervalo, tipo=1, semanas del ao"; Text[ italian ] = "Modo di calcolo della differenza Modo=0 per l'intervallo, Modo=1 per le settimane dell'anno"; Text[ danish ] = "Differensdannelsestype Type=O betyder interval, Type=1 betyder i kalenderuger"; - Text[ swedish ] = "Typ av differensbildning typ=0 heter intervall, typ=1 heter i kalenderveckan"; + Text[ swedish ] = "Typ av differensbildning typ=0 betyder intervall, typ=1 betyder i kalenderveckor"; Text[ polish ] = "Rodzaj obliczania rnicy: Typ=0 oznacza przedzia, Typ=1 - tygodnie kalendarzowe."; Text[ portuguese_brazilian ] = "Mode=0 means week interval, Mode=1 means by week of year"; - Text[ japanese ] = "計算方法: モード=0 は7日単位、モード=1 はカレンダーの週で計算されます。"; + Text[ japanese ] = "計算方法: モード=0 は7日単位、モード=1 はカレンダーの週で計算されます。"; Text[ chinese_simplified ] = "得出差额的类型 Mode=0 表示间隔, Mode=1 表示一年的星期数"; Text[ chinese_traditional ] = "得出差額的類型 Mode=0 表示間隔, Mode=1 表示一年的星期數"; Text[ arabic ] = " : mode=0 mode=1 "; @@ -335,8 +344,9 @@ Resource RID_SC_ADDIN_DFA Text[ greek ] = " : =0 , =1 "; Text[ korean ] = "차이 계산 형태: 모드=0 은 간격을 의미하고, 모드=1 은 주를 의미한다"; Text[ turkish ] = "Fark hesab tr, tr=0 aralk, tr=1 ise takvim haftas cinsinden anlamna gelir"; - Text[ catalan ] = "Tipo de formacin de diferencia: Tipo=0 significa intervalo; tipo=1, semanas del ao"; - Text[ finnish ] = "Erotuslaskennan tyyppi: tila = 0 tarkoittaa v?li?, tila = 1 tarkoittaa kalenteriviikkoja"; + Text[ catalan ] = "Tipus de clcul de la diferncia: mode=0 indica interval i mode=1 indica setmanes del calendari"; + Text[ finnish ] = "Erotuslaskennan tyyppi: tila = 0 tarkoittaa vli, tila = 1 tarkoittaa kalenteriviikkoja"; + Text[ thai ] = "ชนิดของการคำนวณที่ต่างกัน: โหมด=0 หมายความถึงการเว้นช่วงเวลา, โหมด=1 หมายถึงสัปดาห์ตามปฏิทิน"; }; /*-=======================================================================*/ @@ -365,8 +375,9 @@ Resource RID_SC_ADDIN_DFA Text[ greek ] = ""; Text[ korean ] = "월"; Text[ turkish ] = "Ay"; - Text[ catalan ] = "Meses"; - Text[ finnish ] = "Kuukaudet"; + Text[ catalan ] = "Mesos"; + Text[ finnish ] = "KUUKAUDET"; + Text[ thai ] = "เดือน"; }; String DFA_MONTHS_DESC // Description { @@ -377,7 +388,7 @@ Resource RID_SC_ADDIN_DFA Text[ russian ] = " "; Text[ dutch ] = "Bepaalt het aantal maanden tussen twee datums"; Text[ french ] = "Renvoie la diffrence en mois de deux dates"; - Text[ spanish ] = "Determina la diferencia en meses entre dos fechas"; + Text[ spanish ] = "Devuelve la diferencia mensual de dos fechas"; Text[ italian ] = "Restituisce la differenza mensile di due date"; Text[ danish ] = "Bestemmer mnedsdifferensen mellem to datoer"; Text[ swedish ] = "Bestmmer mnadsdifferensen mellan tv datum"; @@ -392,8 +403,9 @@ Resource RID_SC_ADDIN_DFA Text[ greek ] = " "; Text[ korean ] = "두 날짜 사이의 개월수를 결정"; Text[ turkish ] = "ki veri arasndaki ay farkn belirler"; - Text[ catalan ] = "Determina la diferencia en meses entre dos fechas"; - Text[ finnish ] = "M??ritt?? kahden p?iv?m??r?n v?liss? olevien kuukausien m??r?n"; + Text[ catalan ] = "Determina el nombre de mesos entre dues dates"; + Text[ finnish ] = "Mritt kahden pivmrn vliss olevien kuukausien mrn"; + Text[ thai ] = "กำหนดจำนวนเดือนระหว่างวันสองวัน"; }; String DFA_MONTHS_PAR1_DESC // Description of Parameter 1 { @@ -401,10 +413,10 @@ Resource RID_SC_ADDIN_DFA Text [ english ] = "the older date for the month difference" ; Text[ english_us ] = "The end date for calculating the difference in months"; Text[ portuguese ] = "Data mais recente para a diferena em meses"; - Text[ russian ] = " ."; + Text[ russian ] = " ."; Text[ dutch ] = "de vroegere datum"; Text[ french ] = "Date la plus rcente pour la diffrence en mois"; - Text[ spanish ] = "Fecha ms reciente para la diferencia mensual"; + Text[ spanish ] = "La fecha ms reciente para la diferencia mensual"; Text[ italian ] = "La data pi recente per la differenza mensile"; Text[ danish ] = "Yngre dato for mnedsdifferensen"; Text[ swedish ] = "Yngre datum fr mnadsdifferensen"; @@ -417,10 +429,11 @@ Resource RID_SC_ADDIN_DFA Text[ dutch ] = "de vroegere datum"; Text[ chinese_simplified ] = "属于一个月差额的较早的日期"; Text[ greek ] = " "; - Text[ korean ] = "개월 수 계산에서의 마지막 날짜"; + Text[ korean ] = "개월 수 차이 계산의 최종 날짜"; Text[ turkish ] = "Ay fark hesab iin daha ge olan tarih"; - Text[ catalan ] = "Fecha ms reciente para la diferencia mensual"; - Text[ finnish ] = "Lopetusp?iv?m??r? laskettaessa p?iv?m??rien v?linen ero kuukausina"; + Text[ catalan ] = "Data final per calcular la diferncia en mesos"; + Text[ finnish ] = "Lopetuspivmr laskettaessa pivmrien vlinen ero kuukausina"; + Text[ thai ] = "วันสิ้นสุดสำหรับการคำนวณผลต่างในเดือน"; }; String DFA_MONTHS_PAR2_DESC // Description of Parameter 2 { @@ -428,10 +441,10 @@ Resource RID_SC_ADDIN_DFA Text [ english ] = "the younger date for the month difference" ; Text[ english_us ] = "The start date for calculating the difference in months"; Text[ portuguese ] = "Data mais antiga para a diferena em meses"; - Text[ russian ] = " ."; + Text[ russian ] = " ."; Text[ dutch ] = "Latere datum"; Text[ french ] = "Date la plus ancienne pour la diffrence en mois"; - Text[ spanish ] = "Fecha ms antigua para la diferencia mensual"; + Text[ spanish ] = "La fecha ms vieja para la diferencia mensual"; Text[ italian ] = "La data meno recente per la differenza mensile"; Text[ danish ] = "ldre dato for mnedsdifferensen"; Text[ swedish ] = "ldre datum fr mnadsdifferensen"; @@ -444,10 +457,11 @@ Resource RID_SC_ADDIN_DFA Text[ dutch ] = "Latere datum"; Text[ chinese_simplified ] = "属于一个月差额的较晚的日期"; Text[ greek ] = " "; - Text[ korean ] = "개월 수 계산에서의 시작 날짜"; + Text[ korean ] = "개월 수 차이 계산의 시작 날짜"; Text[ turkish ] = "Ay fark hesab iin daha erken olan tarih"; - Text[ catalan ] = "Fecha ms antigua para la diferencia mensual"; - Text[ finnish ] = "Aloitusp?iv?m??r? laskettaessa p?iv?m??rien v?linen ero kuukausina"; + Text[ catalan ] = "Data inicial per calcular la diferncia en mesos"; + Text[ finnish ] = "Aloituspivmr laskettaessa pivmrien vlinen ero kuukausina"; + Text[ thai ] = "วันเริ่มต้นสำหรับการคำนวณผลต่างในเดือน"; }; String DFA_MONTHS_PAR3_DESC // Description of Parameter 2 { @@ -455,26 +469,27 @@ Resource RID_SC_ADDIN_DFA Text [ english ] = "Mode=0 means month interval, Mode=1 means by month of year" ; Text[ english_us ] = "Type of difference calculation: Mode = 0 means interval, mode = 1 means in calendar months"; Text[ portuguese ] = "Modo de formao da diferena: modo=0 para intervalos; modo=1 para meses."; - Text[ russian ] = " : =0 , =1 ."; + Text[ russian ] = " : =0 , =1 "; Text[ dutch ] = "Modus=0 betekent aantal, Modus=1 betekent in kalendermaanden"; Text[ french ] = "Mode de calcul de la diffrence Mode=0 pour l'intervalle, Mode=1 pour les mois de l'anne"; - Text[ spanish ] = "Tipo de formacin de diferencia: Tipo=0 significa intervalo; tipo=1, meses del ao"; + Text[ spanish ] = "Tipo de clculo de la diferencia, tipo=0 significa intervalo, tipo=1, meses del ao"; Text[ italian ] = "Modo di calcolo della differenza Modo=0 per l'intervallo, Modo=1 per i mesi dell'anno"; Text[ danish ] = "Differensdannelsestype Type=O betyder interval, Type=1 betyder i kalendermneder"; - Text[ swedish ] = "Typ av differensbildning typ=0 heter intervall, typ=1 heter i kalendermnaden"; + Text[ swedish ] = "Typ av differensbildning typ=0 betyder intervall, typ=1 betyder i kalendermnader"; Text[ polish ] = "Rodzaj obliczania rnicy: Typ=0 oznacza przedzia, Typ=1 - miesice kalendarzowe."; Text[ portuguese_brazilian ] = "Mode=0 means month interval, Mode=1 means by month of year"; - Text[ japanese ] = "計算方法: モード=0 は一定単位、モード=1 はカレンダーの月で計算されます。"; + Text[ japanese ] = "計算方法: モード=0 は一定単位、モード=1 はカレンダーの月で計算されます。"; Text[ chinese_simplified ] = "得出差额 Mode=0 表示间隔, Mode=1 表示一年的月数"; Text[ chinese_traditional ] = "得出差額 Mode=0 表示間隔, Mode=1 表示一年的月數"; Text[ arabic ] = " : mode=0 mode=1 "; Text[ dutch ] = "Modus=0 betekent aantal, Modus=1 betekent in kalendermaanden"; Text[ chinese_simplified ] = "得出差额 Mode=0 表示间隔, Mode=1 表示一年的月数"; Text[ greek ] = " : =0 , =1 "; - Text[ korean ] = "차이 계산 형태: 모드=0 은 간격을 의미하고, 모드=1은 개월을 의미한다"; + Text[ korean ] = "차이 계산 형태: 모드=0 은 간격을 의미하고 모드=1은 개월을 의미합니다."; Text[ turkish ] = "Fark hesab tr, tr=0 aralk, tr=1 ise takvim ay cinsinden anlamna gelir"; - Text[ catalan ] = "Tipo de formacin de diferencia: Tipo=0 significa intervalo; tipo=1, meses del ao"; - Text[ finnish ] = "Erotuslaskennan tyyppi: tila = 0 tarkoittaa v?li?, tila = 1 tarkoittaa kalenterikuukausia"; + Text[ catalan ] = "Tipus de clcul de la diferncia: mode=0 indica interval i mode=1 indica mesos del calendari"; + Text[ finnish ] = "Erotuslaskennan tyyppi: tila = 0 tarkoittaa vli, tila = 1 tarkoittaa kalenterikuukausia"; + Text[ thai ] = "ชนิดของการคำนวณที่ต่างกัน: โหมด = 0 หมายถึงการเว้นช่วงเวลา, โหมด = 1 หมายถึงเดือนตามปฏิทิน"; }; /*-=======================================================================*/ @@ -501,10 +516,11 @@ Resource RID_SC_ADDIN_DFA Text[ dutch ] = "Jaren"; Text[ chinese_simplified ] = "Years"; Text[ greek ] = ""; - Text[ korean ] = "년도"; + Text[ korean ] = "년"; Text[ turkish ] = "Yl"; - Text[ catalan ] = "Aos"; - Text[ finnish ] = "Vuodet"; + Text[ catalan ] = "Anys"; + Text[ finnish ] = "VUODET"; + Text[ thai ] = "ปี"; }; String DFA_YEARS_DESC // Description { @@ -512,10 +528,10 @@ Resource RID_SC_ADDIN_DFA Text [ english ] = "returns number of years between two dates" ; Text[ english_us ] = "Returns the difference in years between two dates"; Text[ portuguese ] = "devolve o nmero de anos entre duas datas"; - Text[ russian ] = " "; + Text[ russian ] = " "; Text[ dutch ] = "Bepaalt het aantal jaren tussen twee datums"; Text[ french ] = "Renvoie la diffrence en annes de deux dates"; - Text[ spanish ] = "Determina la diferencia en aos de dos fechas"; + Text[ spanish ] = "Devuelve la diferencia anual de dos fechas"; Text[ italian ] = "Restituisce la differenza annuale di due date"; Text[ danish ] = "Bestemmer rsdifferensen mellem to datoer"; Text[ swedish ] = "Bestmmer rsdifferensen mellan tv datum"; @@ -528,10 +544,11 @@ Resource RID_SC_ADDIN_DFA Text[ dutch ] = "Bepaalt het aantal jaren tussen twee datums"; Text[ chinese_simplified ] = "计算两个数据的年差额"; Text[ greek ] = " "; - Text[ korean ] = "두 날짜 사이의 년도 차이 결정"; + Text[ korean ] = "두 날짜 사이의 연도차를 구합니다."; Text[ turkish ] = "ki veri arasndaki yl farkn bulur"; - Text[ catalan ] = "Determina la diferencia en aos de dos fechas"; - Text[ finnish ] = "Palauttaa kahden p?iv?m??r?n v?lisen eron vuosina"; + Text[ catalan ] = "Retorna la diferncia en anys entre dues dates"; + Text[ finnish ] = "Palauttaa kahden pivmrn vlisen eron vuosina"; + Text[ thai ] = "กลับไปสู่ผลต่างในปีระหว่างวันสองวัน"; }; String DFA_YEARS_PAR1_DESC // Description of Parameter 1 { @@ -539,10 +556,10 @@ Resource RID_SC_ADDIN_DFA Text [ english ] = "the older date for the year difference" ; Text[ english_us ] = "The end date for calculating the difference in years"; Text[ portuguese ] = "Data mais recente para a diferena em anos"; - Text[ russian ] = " ."; + Text[ russian ] = " ."; Text[ dutch ] = "De vroegere datum"; Text[ french ] = "Date la plus rcente pour la diffrence en annes"; - Text[ spanish ] = "Fecha ms reciente para la diferencia en aos"; + Text[ spanish ] = "La fecha ms reciente para la diferencia anual"; Text[ italian ] = "La data meno recente per la differenza annuale"; Text[ danish ] = "Yngre dato for rsdifferensen"; Text[ swedish ] = "Yngre datum fr rsdifferensen"; @@ -555,10 +572,11 @@ Resource RID_SC_ADDIN_DFA Text[ dutch ] = "De vroegere datum"; Text[ chinese_simplified ] = "属于一个年差额的较早的日期"; Text[ greek ] = " "; - Text[ korean ] = "년 차이 계산에서의 마지막 날짜"; + Text[ korean ] = "연도차 계산의 최종 날짜"; Text[ turkish ] = "Yl fark hesab iin daha ge olan tarih"; - Text[ catalan ] = "Fecha ms reciente para la diferencia en aos"; - Text[ finnish ] = "Lopetusp?iv?m??r? laskettaessa p?iv?m??rien v?linen ero vuosina"; + Text[ catalan ] = "Data final per calcular la diferncia en anys"; + Text[ finnish ] = "Lopetuspivmr laskettaessa pivmrien vlinen ero vuosina"; + Text[ thai ] = "วันสิ้นสุดสำหรับการคำนวณผลต่างในปี"; }; String DFA_YEARS_PAR2_DESC // Description of Parameter 2 { @@ -566,10 +584,10 @@ Resource RID_SC_ADDIN_DFA Text [ english ] = "the younger date for the year difference" ; Text[ english_us ] = "The start date for calculating the difference in years"; Text[ portuguese ] = "Data mais antiga para a diferena em anos"; - Text[ russian ] = " ."; + Text[ russian ] = " ."; Text[ dutch ] = "De latere datum"; Text[ french ] = "Date la plus ancienne pour la diffrence en annes"; - Text[ spanish ] = "Fecha ms antigua para la diferencia en aos"; + Text[ spanish ] = "La fecha ms vieja para la diferencia anual"; Text[ italian ] = "La data meno recente per la differenza annuale"; Text[ danish ] = "ldre dato for rsdifferensen"; Text[ swedish ] = "ldre datum fr rsdifferensen"; @@ -582,10 +600,11 @@ Resource RID_SC_ADDIN_DFA Text[ dutch ] = "De latere datum"; Text[ chinese_simplified ] = "属于一个年差额的较晚的日期"; Text[ greek ] = " "; - Text[ korean ] = "년 차이 계산에서의 시작 날짜"; + Text[ korean ] = "연도차 계산의 시작 날짜"; Text[ turkish ] = "Yl fark hesab iin daha erken olan tarih"; - Text[ catalan ] = "Fecha ms antigua para la diferencia en aos"; - Text[ finnish ] = "Aloitusp?iv?m??r? laskettaessa p?iv?m??rien v?linen ero vuosina"; + Text[ catalan ] = "Data inicial per calcular la diferncia en anys"; + Text[ finnish ] = "Aloituspivmr laskettaessa pivmrien vlinen ero vuosina"; + Text[ thai ] = "วันเริ่มต้นสำหรับการคำนวณผลต่างในหลายปี"; }; String DFA_YEARS_PAR3_DESC // Description of Parameter 2 { @@ -593,26 +612,27 @@ Resource RID_SC_ADDIN_DFA Text [ english ] = "Mode=0 means year interval, Mode=1 means by calendar years" ; Text[ english_us ] = "Type of difference calculation: Mode=0 means interval, mode=1 means in calendar years."; Text[ portuguese ] = "Modo de formao da diferena: modo=0 para intervalos; modo=1 para anos ."; - Text[ russian ] = " : =0 , =1 "; + Text[ russian ] = " : =0 , =1 "; Text[ dutch ] = "Modus=0 betekent aantal, modus=1 betekent in kalenderjaren"; Text[ french ] = "Mode de calcul de la diffrence Mode=0 pour l'intervalle, Mode=1 pour les annes"; - Text[ spanish ] = "Tipo de formacin de diferencia: Tipo=0 significa intervalo; tipo=1, aos naturales"; + Text[ spanish ] = "Tipo de clculo de la diferencia, tipo=0 significa intervalo, tipo=1, aos naturales"; Text[ italian ] = "Modo di calcolo della differenza Modo=0 per l'intervallo, Modo=1 per l'anno"; Text[ danish ] = "Differensdannelsestype Type=O betyder interval, Type=1 betyder i kalenderr"; - Text[ swedish ] = "Typ av differensbildning typ=0 heter intervall, typ=1 heter i kalenderren"; + Text[ swedish ] = "Typ av differensbildning typ=0 betyder intervall, typ=1 betyder i kalenderr"; Text[ polish ] = "Rodzaj obliczania rnicy: Typ=0 oznacza przedzia, Typ=1 - lata kalendarzowe."; Text[ portuguese_brazilian ] = "Mode=0 means year interval, Mode=1 means by calendar years"; - Text[ japanese ] = "計算方法: モード=0 は一定単位、モード=1 はカレンダーの年で計算されます。"; + Text[ japanese ] = "計算方法: モード=0 は一定単位、モード=1 はカレンダーの年で計算されます。"; Text[ chinese_simplified ] = "得出差额的类型 Mode=0 表示年间隔, Mode=1 表示星期年数"; Text[ chinese_traditional ] = "得出差額的類型 Mode=0 表示年間隔, Mode=1 表示星期年數"; Text[ arabic ] = " : mode=0 mode=1 "; Text[ dutch ] = "Modus=0 betekent aantal, modus=1 betekent in kalenderjaren"; Text[ chinese_simplified ] = "得出差额的类型 Mode=0 表示年间隔, Mode=1 表示星期年数"; Text[ greek ] = " : =0 , =1 "; - Text[ korean ] = "차이 계산 형태: 모드=0 은 간격을 의미하고, 모드=1은 년을 의미한다."; + Text[ korean ] = "차이 계산 형태: 모드=0 은 간격으로, 모드=1은 연도로 계산합니다."; Text[ turkish ] = "Fark hesab tr, tr=0 aralk, tr=1 ise takvim yl cinsinden anlamna gelir"; - Text[ catalan ] = "Tipo de formacin de diferencia: Tipo=0 significa intervalo; tipo=1, aos naturales"; - Text[ finnish ] = "Erotuslaskennan tyyppi: tila = 0 tarkoittaa v?li?, tila = 1 tarkoittaa kalenterivuosia."; + Text[ catalan ] = "Tipus de clcul de la diferncia: mode=0 indica interval i mode=1 indica anys del calendari"; + Text[ finnish ] = "Erotuslaskennan tyyppi: tila = 0 tarkoittaa vli, tila = 1 tarkoittaa kalenterivuosia."; + Text[ thai ] = "ชนิดของการคำนวณที่ต่างกัน: โหมด=0 หมายถึงการเว้นช่วงเวลา, โหมด=1 หมายถึงปีตามปฏิทิน"; }; /*-=======================================================================*/ @@ -623,7 +643,7 @@ Resource RID_SC_ADDIN_DFA Text [ english ] = "IsLeapYear" ; Text[ english_us ] = "IsLeapYear"; Text[ portuguese ] = "AnoBissexto"; - Text[ russian ] = " "; + Text[ russian ] = " "; Text[ dutch ] = "IsSchrikkelJaar"; Text[ french ] = "EstAnneBissextile"; Text[ spanish ] = "EsAoBisiesto"; @@ -641,8 +661,9 @@ Resource RID_SC_ADDIN_DFA Text[ greek ] = ""; Text[ korean ] = "윤년"; Text[ turkish ] = "Artkyldr"; - Text[ catalan ] = "EsAoBisiesto"; - Text[ finnish ] = "OnKarkausvuosi"; + Text[ catalan ] = "IsLeapYear"; + Text[ finnish ] = "ONKARK_VUOSI"; + Text[ thai ] = "เป็นปีอธิกวาร"; }; String DFA_ISLEAPYEAR_DESC // Description { @@ -650,8 +671,8 @@ Resource RID_SC_ADDIN_DFA Text [ english ] = "returns 1 if the date is in a LeapYear, 0 otherwise" ; Text[ english_us ] = "Returns 1 (TRUE) if a leap year is used, otherwise 0 (FALSE) is returned"; Text[ portuguese ] = "devolve 1(VERDADEIRO) se o ano for um ano bissexto, caso contrrio 0 (FALSO)"; - Text[ russian ] = " 1 (), , 0 ()"; - Text[ dutch ] = "Geeft als resultaat 1(WAAR) als het jaar een schrikkeljaar is, andrs 0(ONWAAR)"; + Text[ russian ] = " 1 (), , 0 ()"; + Text[ dutch ] = "Geeft als resultaat 1(WAAR) als het jaar een schrikkeljaar is, anders 0(ONWAAR)"; Text[ french ] = "Renvoie 1 (VRAI) si l'anne est une anne bissextile, sinon 0 (FAUX)"; Text[ spanish ] = "Devuelve 1(VERDADERO) si el ao es bisiesto; si no, 0(FALSO)"; Text[ italian ] = "Restituisce 1(VERO) se l'anno bisestile, altrimenti 0(FALSO)"; @@ -659,17 +680,18 @@ Resource RID_SC_ADDIN_DFA Text[ swedish ] = "Returnerar 1(SANT) om ret r ett skottr annars 0(FALSKT)"; Text[ polish ] = "Podaje 1 (PRAWDA), jeli rok jest rokiem przestpnym, w innym wypadku 0 (FASZ)."; Text[ portuguese_brazilian ] = "returns 1 if the date is in a LeapYear, 0 otherwise"; - Text[ japanese ] = "その年が閏年であれば 1(TRUE)、そうでなければ 0(FALSE)を返します。"; + Text[ japanese ] = "指定した日付が閏年の場合は 1(TRUE)、そうでない場合は 0(FALSE)を返します。"; Text[ chinese_simplified ] = "如果是闰年就反馈 1(TRUE) ,否则就反馈 0 (FALSE)"; Text[ chinese_traditional ] = "如果是閏年就傳回 1(TRUE),否則就傳回 0 (FALSE)"; Text[ arabic ] = " 1 () ɡ 0 ()"; - Text[ dutch ] = "Geeft als resultaat 1(WAAR) als het jaar een schrikkeljaar is, andrs 0(ONWAAR)"; + Text[ dutch ] = "Geeft als resultaat 1(WAAR) als het jaar een schrikkeljaar is, anders 0(ONWAAR)"; Text[ chinese_simplified ] = "如果是闰年就反馈 1(TRUE) ,否则就反馈 0 (FALSE)"; Text[ greek ] = " 1 () , 0 ()"; - Text[ korean ] = "윤년이면 1(참)이 되고, 그렇지 않으면 0(거짓)이된다."; + Text[ korean ] = "윤년이면 1(TRUE)로 아니면 0(FALSE)으로 계산합니다."; Text[ turkish ] = "Yl, artkyl ise 1(DORU) aksi halde 0(YANLI) verir"; - Text[ catalan ] = "Devuelve 1(VERDADERO) si el ao es bisiesto; si no, 0(FALSO)"; - Text[ finnish ] = "Palauttaa arvon 1 (TRUE), jos karkausvuotta k?ytet??n, muussa tapauksessa palautetaan arvo 0 (FALSE)"; + Text[ catalan ] = "Retorna 1 (TRUE) si fem servir un any de trasps, o 0 (FALSE) en cas contrari"; + Text[ finnish ] = "Palauttaa arvon 1 (TRUE), jos karkausvuotta kytetn, muussa tapauksessa palautetaan arvo 0 (FALSE)"; + Text[ thai ] = "ส่งกลับ 1 (จริง) ถ้าใช้ปีอธิกวารแล้ว มิฉะนั้น ส่งกลับ 0 (เท็จ) "; }; /*-=======================================================================*/ @@ -696,10 +718,11 @@ Resource RID_SC_ADDIN_DFA Text[ dutch ] = "DagenInMaand"; Text[ chinese_simplified ] = "DaysInMonth"; Text[ greek ] = ""; - Text[ korean ] = "월의 날짜 수"; + Text[ korean ] = "월의 날짜 값"; Text[ turkish ] = "AydakiGnSays"; - Text[ catalan ] = "DasEnMes"; - Text[ finnish ] = "P?ivi?kuukaudessa"; + Text[ catalan ] = "DaysInMonth"; + Text[ finnish ] = "PIVT_KUUKAUSI"; + Text[ thai ] = "วันในเดือน"; }; String DFA_DAYSINMONTH_DESC // Description { @@ -710,7 +733,7 @@ Resource RID_SC_ADDIN_DFA Text[ russian ] = " "; Text[ dutch ] = "Geeft als resultaat het aantal dagen in een maand bij een bepaalde datum"; Text[ french ] = "Renvoie le nombre de jours dans le mois en relation avec la date indique."; - Text[ spanish ] = "Determina la cantidad de das en un mes para una fecha"; + Text[ spanish ] = "Devuelve el nmero de das del mes en relacin a la fecha indicada."; Text[ italian ] = "Restituisce il numero dei giorni del mese per una determinata data"; Text[ danish ] = "Bestemmer antallet af dage i en mned til en dato"; Text[ swedish ] = "Bestmmer antalet dagar i mnaden till ett datum"; @@ -723,10 +746,11 @@ Resource RID_SC_ADDIN_DFA Text[ dutch ] = "Geeft als resultaat het aantal dagen in een maand bij een bepaalde datum"; Text[ chinese_simplified ] = "计算一个属于给定日期的月的天数"; Text[ greek ] = " "; - Text[ korean ] = "날짜와 관련, 그 달에서의 날짜 수를 결정"; + Text[ korean ] = "입력한 날짜와 관련된 달의 일수를 구합니다."; Text[ turkish ] = "Girilen tarihe gre ayn gn saysn bulur"; - Text[ catalan ] = "Determina la cantidad de das en un mes para una fecha"; - Text[ finnish ] = "Palauttaa p?ivien m??r?n siin? kuukaudessa, johon liittyv? p?iv?m??r? sy?ettiin"; + Text[ catalan ] = "Retorna el nombre de dies del mes segons la data introduda"; + Text[ finnish ] = "Palauttaa pivien mrn siin kuukaudessa, johon liittyv pivmr sytettiin"; + Text[ thai ] = "ส่งกลับจำนวนวันในเดือนในความสัมพันธ์กับวันที่ที่ป้อน"; }; /*-=======================================================================*/ @@ -753,10 +777,11 @@ Resource RID_SC_ADDIN_DFA Text[ dutch ] = "DagenInJaar"; Text[ chinese_simplified ] = "DaysInYear"; Text[ greek ] = ""; - Text[ korean ] = "년의 날짜 수"; + Text[ korean ] = "DaysInYear"; Text[ turkish ] = "YldakiGnSays"; - Text[ catalan ] = "DasEnAo"; - Text[ finnish ] = "P?ivi?vuodessa"; + Text[ catalan ] = "DaysInYear"; + Text[ finnish ] = "PIVT_VUOSI"; + Text[ thai ] = "วันในปี"; }; String DFA_DAYSINYEAR_DESC // Description { @@ -767,7 +792,7 @@ Resource RID_SC_ADDIN_DFA Text[ russian ] = " ."; Text[ dutch ] = "Geeft als resultaat het aantal dagen in een jaar bij een bepaalde datum"; Text[ french ] = "Renvoie le nombre de jours dans l'anne en relation avec la date indique."; - Text[ spanish ] = "Determina la cantidad de das en un ao para una fecha"; + Text[ spanish ] = "Devuelve el nmero de das del ao en relacin a la fecha introducida. "; Text[ italian ] = "Restituisce il numero dei giorni dell'anno per una deteminata data"; Text[ danish ] = "Bestemmer antallet af dage i et r til en dato"; Text[ swedish ] = "Bestmmer antalet dagar i ret till ett datum"; @@ -780,10 +805,11 @@ Resource RID_SC_ADDIN_DFA Text[ dutch ] = "Geeft als resultaat het aantal dagen in een jaar bij een bepaalde datum"; Text[ chinese_simplified ] = "计算一个属于给定日期的年的天数"; Text[ greek ] = " "; - Text[ korean ] = "날짜와 관련, 년의 날짜 수를 결정"; + Text[ korean ] = "입력한 날짜와 관련하여 한 해의 일수를 구합니다."; Text[ turkish ] = "Girilen tarihe gre yln gn saysn bulur"; - Text[ catalan ] = "Determina la cantidad de das en un ao para una fecha"; - Text[ finnish ] = "Palauttaa p?ivien m??r?n siin? vuodessa, johon liittyv? p?iv?m??r? sy?ettiin"; + Text[ catalan ] = "Retorna el nombre de dies de l'any segons la data introduda"; + Text[ finnish ] = "Palauttaa pivien mrn siin vuodessa, johon liittyv pivmr sytettiin"; + Text[ thai ] = "ส่งกลับจำนวนวันในหนึ่งปีในความสัมพันธ์กับวันที่ที่ป้อน"; }; /*-=======================================================================*/ @@ -810,10 +836,11 @@ Resource RID_SC_ADDIN_DFA Text[ dutch ] = "WekenInJaar"; Text[ chinese_simplified ] = "WeeksInYear"; Text[ greek ] = "ܸ"; - Text[ korean ] = "년의 주 수"; + Text[ korean ] = "WeeksInYear"; Text[ turkish ] = "YldakiHaftaSays"; - Text[ catalan ] = "SemanasEnAo"; - Text[ finnish ] = "ViikkoaVuodessa"; + Text[ catalan ] = "WeeksInYear"; + Text[ finnish ] = "VIIKOT_VUOSI"; + Text[ thai ] = "สัปดาห์ในปี"; }; String DFA_WEEKSINYEAR_DESC // Description { @@ -821,10 +848,10 @@ Resource RID_SC_ADDIN_DFA Text [ english ] = "returns the number of weeks in the year for a date" ; Text[ english_us ] = "Returns the number of weeks in the year in relation to a date"; Text[ portuguese ] = "Devolve o nmero de semanas no ano para uma determinada data"; - Text[ russian ] = " ."; + Text[ russian ] = " ."; Text[ dutch ] = "Geeft als resultaat het aantal weken in een jaar bij een datum"; Text[ french ] = "Renvoie le nombre de semaines dans l'anne en relation avec la date indique."; - Text[ spanish ] = "Determina la cantidad de semanas en un ao para una fecha"; + Text[ spanish ] = "Devuelve el nmero de semanas del ao en relacin a una fecha"; Text[ italian ] = "Restituisce il numero delle settimane dell'anno per una determinata data"; Text[ danish ] = "Bestemmer antallet af dage i en mned til en dato"; Text[ swedish ] = "Bestmmer antalet veckor p ret till ett datum"; @@ -837,10 +864,11 @@ Resource RID_SC_ADDIN_DFA Text[ dutch ] = "Geeft als resultaat het aantal weken in een jaar bij een datum"; Text[ chinese_simplified ] = "计算一个属于给定日期的年的星期数"; Text[ greek ] = " "; - Text[ korean ] = "날짜와 관련,년의 주 수를 결정"; + Text[ korean ] = "입력한 날짜와 관련된 해의 주일 수를 구합니다."; Text[ turkish ] = "Girilen tarihe gre yln hafta saysn bulur"; - Text[ catalan ] = "Determina la cantidad de semanas en un ao para una fecha"; - Text[ finnish ] = "Palauttaa viikkojen m??r?n siin? vuodessa, johon liittyv? p?iv?m??r? sy?ettiin"; + Text[ catalan ] = "Retorna el nombre de setmanes de l'any segons una data"; + Text[ finnish ] = "Palauttaa viikkojen mrn siin vuodessa, johon liittyv pivmr sytettiin"; + Text[ thai ] = "ส่งกลับจำนวนสัปดาห์ในปีในความสัมพันธ์กับวันที่"; }; }; @@ -856,3 +884,8 @@ Resource RID_SC_ADDIN_DFA + + + + + diff --git a/sc/addin/datefunc/makefile.mk b/sc/addin/datefunc/makefile.mk index 43d9983c676e..7f6fc02f5239 100644 --- a/sc/addin/datefunc/makefile.mk +++ b/sc/addin/datefunc/makefile.mk @@ -2,9 +2,9 @@ # # $RCSfile: makefile.mk,v $ # -# $Revision: 1.3 $ +# $Revision: 1.4 $ # -# last change: $Author: hjs $ $Date: 2002-05-14 11:07:04 $ +# last change: $Author: hr $ $Date: 2003-03-26 18:03:16 $ # # The Contents of this file are made available subject to the terms of # either of the following licenses @@ -117,8 +117,9 @@ $(MISC)$/cl2c.pl: ..$/util/cl2c.pl @+$(COPY) ..$/util$/cl2c.pl $@ .ENDIF +# convert C++ //... comments to C /*...*/ comments without affecting http://... $(INCCOM)$/xlang.h : $(SOLARINCDIR)$/tools$/lang.hxx - @+$(COPY) $(SOLARINCDIR)$/tools$/lang.hxx $@ + @+$(SED) -e "s#\([ \t]\)//\(.*\)#\1/*\2 */#" -e "s#^//\(.*\)#/*\1 */#" $(SOLARINCDIR)$/tools$/lang.hxx >$@ $(SLOFILES) : $(INCCOM)$/xlang.h diff --git a/sc/addin/rot13/makefile.mk b/sc/addin/rot13/makefile.mk index 96652cb8532f..1debfdc9d070 100644 --- a/sc/addin/rot13/makefile.mk +++ b/sc/addin/rot13/makefile.mk @@ -2,9 +2,9 @@ # # $RCSfile: makefile.mk,v $ # -# $Revision: 1.3 $ +# $Revision: 1.4 $ # -# last change: $Author: hjs $ $Date: 2002-05-14 11:10:57 $ +# last change: $Author: hr $ $Date: 2003-03-26 18:03:18 $ # # The Contents of this file are made available subject to the terms of # either of the following licenses @@ -114,8 +114,9 @@ $(MISC)$/cl2c.pl: ..$/util$/cl2c.pl @+$(COPY) ..$/util$/cl2c.pl $@ .ENDIF +# convert C++ //... comments to C /*...*/ comments without affecting http://... $(INCCOM)$/xlang.h : $(SOLARINCDIR)$/tools$/lang.hxx - @+$(COPY) $(SOLARINCDIR)$/tools$/lang.hxx $@ + @+$(SED) -e "s#\([ \t]\)//\(.*\)#\1/*\2 */#" -e "s#^//\(.*\)#/*\1 */#" $(SOLARINCDIR)$/tools$/lang.hxx >$@ $(SLOFILES) : $(INCCOM)$/xlang.h diff --git a/sc/addin/rot13/rot13.src b/sc/addin/rot13/rot13.src index 4cc4119e9fbc..ac1d7bbeb39a 100644 --- a/sc/addin/rot13/rot13.src +++ b/sc/addin/rot13/rot13.src @@ -2,9 +2,9 @@ * * $RCSfile: rot13.src,v $ * - * $Revision: 1.12 $ + * $Revision: 1.13 $ * - * last change: $Author: kz $ $Date: 2001-07-26 22:31:52 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:03:20 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -69,8 +69,8 @@ Resource RID_SC_ADDIN_ROT13 Text [ english ] = "ROT13 Algorithm, each alphabetical character of the text is rotated by 13 in the alphabet" ; Text[ english_us ] = "ROT13 Algorithm, each alphabetical character of the text is rotated by 13 in the alphabet"; Text[ portuguese ] = "ROT13 Algoritmo: rotao de 13 caracteres no alfabeto para cada um dos caracteres alfabticos do texto."; - Text[ russian ] = " ROT13: , 13 ."; - Text[ dutch ] = "ROT13 Algorithme, ieder alfabetisch teken van de tekst roteert met het 13e in het alfabet."; + Text[ russian ] = " ROT13: , 13 ."; + Text[ dutch ] = "ROT13 Algoritme, ieder alfabetisch teken van de tekst roteert met het 13e in het alfabet."; Text[ french ] = "ROT13 Algorythme, remplacement de chaque caractre alphabtique du texte par rotation de 13 caractres dans l'alphabet."; Text[ spanish ] = "Algoritmo ROT13, cada carcter alfabtico del texto rodar 13 espacios en el alfabeto."; Text[ italian ] = "ROT13 algoritmo, ogni carattere alfabetico del testo viene ruotato di 13 nell'alfabeto."; @@ -78,18 +78,19 @@ Resource RID_SC_ADDIN_ROT13 Text[ swedish ] = "ROT13 algoritm, varje alfabetiskt tecken i texten roteras med 13 i alfabetet."; Text[ polish ] = "Algorytm ROT13, kady alfabetyczny znak tekstu zostanie obrcony o 13 w alfabecie."; Text[ portuguese_brazilian ] = "ROT13 Algorithm, each alphabetical character of the text is rotated by 13 in the alphabet"; - Text[ japanese ] = "ROT13 ٺؽсA÷Ă̊ȩޯĕ13ƂɌJԂ܂B"; - Text[ chinese_simplified ] = "ROT13 ıÿĸĸĵ13ĸѭת"; - Text[ chinese_traditional ] = "ROT13 khA夺CӦrNur13Ӧr`C"; + Text[ japanese ] = "ROT13 アルゴリズム、アルファベット文字を13字ずらして文字列を暗号化します。"; + Text[ chinese_simplified ] = "ROT13 法则,文本内每个字母将沿字母表的第13个字母循环旋转。"; + Text[ chinese_traditional ] = "ROT13 法則,本文內每個字母將沿字母表的第13個字母循環旋轉。"; Text[ arabic ] = " ROT13 13 ."; - Text[ dutch ] = "ROT13 Algorithme, ieder alfabetisch teken van de tekst roteert met het 13e in het alfabet."; - Text[ chinese_simplified ] = "ROT13 ıÿĸĸĵ13ĸѭת"; + Text[ dutch ] = "ROT13 Algoritme, ieder alfabetisch teken van de tekst roteert met het 13e in het alfabet."; + Text[ chinese_simplified ] = "ROT13 法则,文本内每个字母将沿字母表的第13个字母循环旋转。"; Text[ greek ] = " ROT13, 13 "; - Text[ korean ] = "ROT13 ˰, ؽƮ ĺ ڴ ĺ 13 ڸ ̵մϴ."; + Text[ korean ] = "ROT13 알고리즘, 텍스트의 모든 알파벳 문자는 알파벳에서 13 자리씩 이동합니다."; Text[ turkish ] = "ROT13 Algoritmi, metnin her alfabetik karakteri alfabe iinde 13 sra dndrlr."; Text[ language_user1 ] = " "; - Text[ catalan ] = "Algoritmo ROT13, cada carcter alfabtico del texto rodar 13 espacios en el alfabeto."; + Text[ catalan ] = "Algorisme ROT13, cada carcter alfabtic del text es desplaa 13 posicions dins de l'alfabet"; Text[ finnish ] = "ROT13-koodaus; jokaista tekstin aakkosnumeerista merkki siirretn aakkosissa 13 askelta"; + Text[ thai ] = "อัลกอริธึม ROT13 , แต่ละตัวอักษรของข้อความหมุนโดย 13 ในตัวอักษร"; }; String ROT13_PAR1_NAME // Name of Parameter 1 @@ -107,18 +108,19 @@ Resource RID_SC_ADDIN_ROT13 Text[ swedish ] = "Text"; Text[ polish ] = "Tekst"; Text[ portuguese_brazilian ] = "Text"; - Text[ japanese ] = "÷"; - Text[ chinese_simplified ] = "Text"; - Text[ chinese_traditional ] = "r"; + Text[ japanese ] = "文字列"; + Text[ chinese_simplified ] = "text"; + Text[ chinese_traditional ] = "文字"; Text[ arabic ] = ""; Text[ dutch ] = "Tekst"; - Text[ chinese_simplified ] = "Text"; + Text[ chinese_simplified ] = "text"; Text[ greek ] = ""; - Text[ korean ] = "ؽƮ"; + Text[ korean ] = "텍스트"; Text[ turkish ] = "Metin"; Text[ language_user1 ] = " "; - Text[ catalan ] = "Texto"; + Text[ catalan ] = "Text"; Text[ finnish ] = "Teksti"; + Text[ thai ] = "ข้อความ"; }; String ROT13_PAR1_DESC // Description of Parameter 1 @@ -130,24 +132,25 @@ Resource RID_SC_ADDIN_ROT13 Text[ russian ] = ", "; Text[ dutch ] = "de tekst die roteert"; Text[ french ] = "Le texte de rotation"; - Text[ spanish ] = "El texto que debe rodar"; + Text[ spanish ] = "Texto que debe rodar"; Text[ italian ] = "Il testo da ruotare"; Text[ danish ] = "Teksten, som skal roteres"; Text[ swedish ] = "Texten som skall roteras"; Text[ polish ] = "Tekst, ktry ma zosta obrcony"; Text[ portuguese_brazilian ] = "the text which should be rotated"; - Text[ japanese ] = "JԂ÷"; - Text[ chinese_simplified ] = "Ҫת"; - Text[ chinese_traditional ] = "n઺"; + Text[ japanese ] = "13字ずらして暗号化する文字列。"; + Text[ chinese_simplified ] = "要旋转的文字"; + Text[ chinese_traditional ] = "要旋轉的本文"; Text[ arabic ] = " "; Text[ dutch ] = "de tekst die roteert"; - Text[ chinese_simplified ] = "Ҫת"; + Text[ chinese_simplified ] = "要旋转的文字"; Text[ greek ] = " "; - Text[ korean ] = "ȸ ؽƮ"; + Text[ korean ] = "회전될 텍스트"; Text[ turkish ] = "Dndrlecek metin"; Text[ language_user1 ] = " "; - Text[ catalan ] = "El texto que debe rodar"; + Text[ catalan ] = "Text que s'ha de desplaar"; Text[ finnish ] = "Kierrettv teksti"; + Text[ thai ] = "ข้อความที่ถูกหมุน"; }; }; @@ -156,3 +159,13 @@ Resource RID_SC_ADDIN_ROT13 + + + + + + + + + + diff --git a/sc/inc/chgtrack.hxx b/sc/inc/chgtrack.hxx index 18f228019e85..b936244bef31 100644 --- a/sc/inc/chgtrack.hxx +++ b/sc/inc/chgtrack.hxx @@ -2,9 +2,9 @@ * * $RCSfile: chgtrack.hxx,v $ * - * $Revision: 1.16 $ + * $Revision: 1.17 $ * - * last change: $Author: er $ $Date: 2002-04-15 11:06:58 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:03:33 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -1255,6 +1255,8 @@ public: } ULONG GetLastSavedActionNumber() const { return nMarkLastSaved; } + void SetLastSavedActionNumber(ULONG nNew) + { nMarkLastSaved = nNew; } ScChangeAction* GetLastSaved() const { return aTable.Get( nMarkLastSaved ); } ScChangeActionContent** GetContentSlots() const { return ppContentSlots; } diff --git a/sc/inc/chgviset.hxx b/sc/inc/chgviset.hxx index 87d595e5a508..1a6a87511e3a 100644 --- a/sc/inc/chgviset.hxx +++ b/sc/inc/chgviset.hxx @@ -2,9 +2,9 @@ * * $RCSfile: chgviset.hxx,v $ * - * $Revision: 1.2 $ + * $Revision: 1.3 $ * - * last change: $Author: nn $ $Date: 2000-11-20 10:26:42 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:03:33 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -81,6 +81,8 @@ namespace utl { class TextSearch; } +class ScDocument; + class ScChangeViewSettings { private: @@ -173,6 +175,9 @@ public: ScChangeViewSettings& operator= ( const ScChangeViewSettings& r ); + /// Adjust dates according to selected DateMode + void AdjustDateMode( const ScDocument& rDoc ); + }; diff --git a/sc/inc/compiler.hxx b/sc/inc/compiler.hxx index 8af0dd74017c..255fbfb400da 100644 --- a/sc/inc/compiler.hxx +++ b/sc/inc/compiler.hxx @@ -2,9 +2,9 @@ * * $RCSfile: compiler.hxx,v $ * - * $Revision: 1.14 $ + * $Revision: 1.15 $ * - * last change: $Author: er $ $Date: 2002-11-21 16:10:18 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:03:34 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -337,6 +337,8 @@ class ScTokenArray // nVal kann auch kombinierte Bits enthalten, // aber nur ein exklusives Bit darf gesetzt sein! + BOOL ImplGetReference( ScRange& rRange, BOOL bValidOnly ) const; + public: ScTokenArray(); ScTokenArray( const ScTokenArray& ); // Zuweisung mit Referenzen auf Tokens @@ -364,7 +366,8 @@ public: BOOL HasOpCodeRPN( OpCode ) const; BOOL HasName() const; // token of type svIndex BOOL HasNameOrColRowName() const; // token of type svIndex or opcode ocColRowName - BOOL IsReference( ScRange& rRange ) const; // exactly and only one range + BOOL IsReference( ScRange& rRange ) const; // exactly and only one range (valid or deleted) + BOOL IsValidReference( ScRange& rRange ) const; // exactly and only one valid range (no #REF!s) BOOL GetTableOpRefs( // exactly and only one multiple operation ScAddress& rFormula, ScAddress& rColFirstPos, ScAddress& rColRelPos, diff --git a/sc/inc/document.hxx b/sc/inc/document.hxx index d1792aa201e2..0ee37414279a 100644 --- a/sc/inc/document.hxx +++ b/sc/inc/document.hxx @@ -2,9 +2,9 @@ * * $RCSfile: document.hxx,v $ * - * $Revision: 1.64 $ + * $Revision: 1.65 $ * - * last change: $Author: er $ $Date: 2002-12-05 16:00:12 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:03:34 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -91,6 +91,10 @@ #include "brdcst.hxx" #endif +#ifndef SC_TABOPPARAMS_HXX +#include "tabopparams.hxx" +#endif + class KeyEvent; class OutputDevice; class SdrObject; @@ -407,6 +411,11 @@ private: Timer aTrackTimer; +public: + ScTabOpList aTableOpList; // list of ScInterpreterTableOpParams currently in use + ScInterpreterTableOpParams aLastTableOpParams; // remember last params +private: + LanguageType eLanguage; // default language LanguageType eCjkLanguage; // default language for asian text LanguageType eCtlLanguage; // default language for complex text @@ -479,6 +488,8 @@ private: BYTE nInDdeLinkUpdate; // originating DDE links (stacked bool) + BOOL bInUnoBroadcast; + mutable BOOL bStyleSheetUsageInvalid; @@ -1534,6 +1545,9 @@ public: if ( nInterpreterTableOpLevel ) nInterpreterTableOpLevel--; } + // add a formula to be remembered for TableOp broadcasts + void AddTableOpFormulaCell( ScFormulaCell* ); + void InvalidateLastTableOpParams() { aLastTableOpParams.bValid = FALSE; } BOOL IsInDtorClear() const { return bInDtorClear; } void SetExpandRefs( BOOL bVal ) { bExpandRefs = bVal; } BOOL IsExpandRefs() { return bExpandRefs; } diff --git a/sc/inc/global.hxx b/sc/inc/global.hxx index c5fb99ea5542..3d9e888470e7 100644 --- a/sc/inc/global.hxx +++ b/sc/inc/global.hxx @@ -2,9 +2,9 @@ * * $RCSfile: global.hxx,v $ * - * $Revision: 1.21 $ + * $Revision: 1.22 $ * - * last change: $Author: er $ $Date: 2002-11-12 18:28:04 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:03:35 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -296,6 +296,7 @@ inline BOOL ValidColRowTab(USHORT nCol, USHORT nRow, USHORT nTab) #define HASATTR_CONDITIONAL 512 #define HASATTR_ROTATE 1024 #define HASATTR_NOTOVERLAPPED 2048 +#define HASATTR_RTL 4096 #define HASATTR_PAINTEXT ( HASATTR_LINES | HASATTR_SHADOW | HASATTR_CONDITIONAL ) diff --git a/sc/inc/refdata.hxx b/sc/inc/refdata.hxx index 17c48522f810..a70bcea8b341 100644 --- a/sc/inc/refdata.hxx +++ b/sc/inc/refdata.hxx @@ -2,9 +2,9 @@ * * $RCSfile: refdata.hxx,v $ * - * $Revision: 1.1 $ + * $Revision: 1.2 $ * - * last change: $Author: er $ $Date: 2001-02-21 18:22:13 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:03:36 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -131,6 +131,7 @@ struct SingleRefData // Single reference (one address) into the sheet inline BOOL IsRowDeleted() const { return Flags.bRowDeleted; } inline void SetTabDeleted( BOOL bVal ) { Flags.bTabDeleted = (bVal ? TRUE : FALSE ); } inline BOOL IsTabDeleted() const { return Flags.bTabDeleted; } + inline BOOL IsDeleted() const { return IsColDeleted() || IsRowDeleted() || IsTabDeleted(); } inline void SetFlag3D( BOOL bVal ) { Flags.bFlag3D = (bVal ? TRUE : FALSE ); } inline BOOL IsFlag3D() const { return Flags.bFlag3D; } diff --git a/sc/inc/scdll.hxx b/sc/inc/scdll.hxx index 391f2b83ba89..e081f0dd8448 100644 --- a/sc/inc/scdll.hxx +++ b/sc/inc/scdll.hxx @@ -2,9 +2,9 @@ * * $RCSfile: scdll.hxx,v $ * - * $Revision: 1.1.1.1 $ + * $Revision: 1.2 $ * - * last change: $Author: hr $ $Date: 2000-09-18 16:44:50 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:03:36 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -116,13 +116,6 @@ public: //------------------------------------------------------------------------- -#ifdef WNT -typedef void ( __cdecl * ScSigCatchFunc )( int ); -#else -typedef void ( * ScSigCatchFunc )( int ); -#endif -typedef ScSigCatchFunc ( * ScLibSignalFunc )( int, ScSigCatchFunc ); - class ScModuleDummy: public SfxModule /* [Description] @@ -137,17 +130,14 @@ public: // SvFactory name convention: // 'p' + SfxObjectShell-subclass + 'Factory' SotFactory* pScDocShellFactory; - ScLibSignalFunc pSignalFunc; ScModuleDummy( ResMgr *pResMgr, BOOL bDummy, SfxObjectFactory* pFact ) : SfxModule(pResMgr, bDummy, pFact, NULL), - pScDocShellFactory(pFact), pSignalFunc(0) + pScDocShellFactory(pFact) {} virtual SfxModule* Load(); - ScLibSignalFunc GetSignalFunc() { return pSignalFunc; } - static SvGlobalName GetID(USHORT nFileFormat); static USHORT HasID(const SvGlobalName& rName); }; diff --git a/sc/inc/scextopt.hxx b/sc/inc/scextopt.hxx index fcf708b02a5e..05b7a08c14eb 100644 --- a/sc/inc/scextopt.hxx +++ b/sc/inc/scextopt.hxx @@ -2,9 +2,9 @@ * * $RCSfile: scextopt.hxx,v $ * - * $Revision: 1.5 $ + * $Revision: 1.6 $ * - * last change: $Author: jmarmion $ $Date: 2002-12-10 14:04:37 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:03:36 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -161,7 +161,6 @@ public: // Cursor UINT16 nCurCol; // aktuelle Cursor-Position UINT16 nCurRow; - double fColScale; // <= 0 -> invalid // ------------------------------------------------------------------- ScExtDocOptions( void ); ~ScExtDocOptions(); diff --git a/sc/inc/scmod.hxx b/sc/inc/scmod.hxx index 8ca4e46d82d5..dc6d1f732058 100644 --- a/sc/inc/scmod.hxx +++ b/sc/inc/scmod.hxx @@ -2,9 +2,9 @@ * * $RCSfile: scmod.hxx,v $ * - * $Revision: 1.10 $ + * $Revision: 1.11 $ * - * last change: $Author: nn $ $Date: 2002-10-24 17:17:17 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:03:36 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -94,7 +94,7 @@ class SfxErrorHandler; class SvxErrorHandler; class SvtAccessibilityOptions; -namespace svx { class ColorConfig; } +namespace svtools { class ColorConfig; } class ScRange; class ScDocument; @@ -169,7 +169,7 @@ class ScModule: public ScModuleDummy, public SfxListener ScInputCfg* pInputCfg; ScPrintCfg* pPrintCfg; ScNavipiCfg* pNavipiCfg; - svx::ColorConfig* pColorConfig; + svtools::ColorConfig* pColorConfig; SvtAccessibilityOptions* pAccessOptions; SfxErrorHandler* pErrorHdl; SvxErrorHandler* pSvxErrorHdl; @@ -248,7 +248,7 @@ public: static BOOL HasThesaurusLanguage( USHORT nLang ); ScNavipiCfg& GetNavipiCfg(); - svx::ColorConfig& GetColorConfig(); + svtools::ColorConfig& GetColorConfig(); SvtAccessibilityOptions& GetAccessOptions(); void ModifyOptions( const SfxItemSet& rOptSet ); diff --git a/sc/inc/tabopparams.hxx b/sc/inc/tabopparams.hxx new file mode 100644 index 000000000000..f6dd98bbfbaf --- /dev/null +++ b/sc/inc/tabopparams.hxx @@ -0,0 +1,136 @@ +/************************************************************************* + * + * $RCSfile: tabopparams.hxx,v $ + * + * $Revision: 1.2 $ + * + * last change: $ $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifndef SC_TABOPPARAMS_HXX +#define SC_TABOPPARAMS_HXX + +#ifndef SC_SCGLOB_HXX +#include "global.hxx" +#endif +#include + +class ScFormulaCell; + +struct ScInterpreterTableOpParams +{ + ScAddress aOld1; + ScAddress aNew1; + ScAddress aOld2; + ScAddress aNew2; + ScAddress aFormulaPos; + ::std::vector< ScFormulaCell* > aNotifiedFormulaCells; + ::std::vector< ScAddress > aNotifiedFormulaPos; + BOOL bValid; + BOOL bRefresh; + BOOL bCollectNotifications; + + ScInterpreterTableOpParams() + : bValid( FALSE ) + , bRefresh( FALSE ) + , bCollectNotifications( TRUE ) + { + } + + ScInterpreterTableOpParams( const ScInterpreterTableOpParams& r ) + : aOld1( r.aOld1 ) + , aNew1( r.aNew1 ) + , aOld2( r.aOld2 ) + , aNew2( r.aNew2 ) + , aFormulaPos( r.aFormulaPos ) + , aNotifiedFormulaCells( r.aNotifiedFormulaCells ) + , aNotifiedFormulaPos( r.aNotifiedFormulaPos ) + , bValid( r.bValid ) + , bRefresh( r.bRefresh ) + , bCollectNotifications( r.bCollectNotifications ) + { + } + + ScInterpreterTableOpParams& operator =( const ScInterpreterTableOpParams& r ) + { + aOld1 = r.aOld1; + aNew1 = r.aNew1; + aOld2 = r.aOld2; + aNew2 = r.aNew2; + aFormulaPos = r.aFormulaPos; + aNotifiedFormulaCells = r.aNotifiedFormulaCells; + aNotifiedFormulaPos = r.aNotifiedFormulaPos; + bValid = r.bValid; + bRefresh = r.bRefresh; + bCollectNotifications = r.bCollectNotifications; + return *this; + } + + operator ==( const ScInterpreterTableOpParams& r ) + { + return + bValid && r.bValid && + aOld1 == r.aOld1 && + aOld2 == r.aOld2 && + aFormulaPos == r.aFormulaPos ; + // aNotifiedFormula(Cells|Pos), aNew1, aNew2, bRefresh, + // bCollectNotifications are not compared + } +}; + +DECLARE_LIST( ScTabOpList, ScInterpreterTableOpParams* ); + +#endif // SC_TABOPPARAMS_HXX + diff --git a/sc/inc/unonames.hxx b/sc/inc/unonames.hxx index 5eb77e7e5066..7d4960896d73 100644 --- a/sc/inc/unonames.hxx +++ b/sc/inc/unonames.hxx @@ -2,9 +2,9 @@ * * $RCSfile: unonames.hxx,v $ * - * $Revision: 1.48 $ + * $Revision: 1.49 $ * - * last change: $Author: sab $ $Date: 2002-11-11 12:35:47 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:03:37 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -262,6 +262,7 @@ #define SC_UNONAME_CONTHDR "ContainsHeader" #define SC_UNONAME_MAXFLD "MaxFieldCount" #define SC_UNONAME_ORIENT "Orientation" +#define SC_UNONAME_SORTCOLUMNS "SortColumns" #define SC_UNONAME_SORTFLD "SortFields" #define SC_UNONAME_SORTASC "SortAscending" #define SC_UNONAME_ENUSLIST "EnableUserSortList" @@ -271,6 +272,7 @@ #define SC_UNONAME_AUTOFLT "AutoFilter" #define SC_UNONAME_FLTCRT "FilterCriteriaSource" #define SC_UNONAME_USEFLTCRT "UseFilterCriteriaSource" +#define SC_UNONAME_ENABSORT "EnableSort" // text fields #define SC_UNONAME_ANCTYPE "AnchorType" diff --git a/sc/prj/build.lst b/sc/prj/build.lst index 257a016e0972..1832b6e05ad3 100644 --- a/sc/prj/build.lst +++ b/sc/prj/build.lst @@ -1,4 +1,4 @@ -sc sc : offmgr NULL +sc sc : offmgr boost NULL sc sc usr1 - all sc_mkout NULL sc sc\inc get - all sc_inc NULL sc sc\prj get - all sc_prj NULL diff --git a/sc/prj/d.lst b/sc/prj/d.lst index 0e6cc343a647..7be9f46e98eb 100644 --- a/sc/prj/d.lst +++ b/sc/prj/d.lst @@ -1,12 +1,4 @@ -mkdir: %_DEST%\odk%_EXT% -mkdir: %_DEST%\odk%_EXT%\inc -mkdir: %_DEST%\odk%_EXT%\lib -mkdir: %_DEST%\odk%_EXT%\src -mkdir: %_DEST%\odk%_EXT%\pck ..\inc\sc.lst %_DEST%\inc%_EXT%\sc.lst -..\%__SRC%\inc\scinter.h %_DEST%\odk\inc%_EXT%\scinter.h -..\%__SRC%\lib\scinter.lib %_DEST%\odk\lib%_EXT%\scinter.lib -..\%__SRC%\misc\scinter.c %_DEST%\odk\src%_EXT%\scinter.c ..\%__SRC%\bin\scalc3.exe %_DEST%\bin%_EXT%\scalc3.exe ..\%__SRC%\bin\*.sym %_DEST%\bin%_EXT%\*.sym ..\%__SRC%\bin\scalc3.pdb %_DEST%\bin%_EXT%\scalc3.pdb @@ -27,9 +19,7 @@ touch: ..\%__SRC%\misc\sc.hid %_DEST%\bin%_EXT%\sc.hid ..\inc\sc.hrc %_DEST%\inc%_EXT%\sc.hrc mkdir: %_DEST%\inc\%_EXT%\sc hedabu: ..\inc\scdll.hxx %_DEST%\inc%_EXT%\sc\scdll.hxx -mkdir: %_DEST%\ucr%_EXT%\sc -..\%__SRC%\ucr\*.ucr %_DEST%\ucr%_EXT%\sc\*.ucr -..\xml\*.xml %_DEST%\xml\*.xml +..\xml\*.xml %_DEST%\xml%_EXT%\*.xml ..\%__SRC%\lib\lib*static*.dylib %_DEST%\lib%_EXT%\lib*static*.dylib diff --git a/sc/source/core/data/attarray.cxx b/sc/source/core/data/attarray.cxx index 541a9b9f1944..044341c21936 100644 --- a/sc/source/core/data/attarray.cxx +++ b/sc/source/core/data/attarray.cxx @@ -2,9 +2,9 @@ * * $RCSfile: attarray.cxx,v $ * - * $Revision: 1.10 $ + * $Revision: 1.11 $ * - * last change: $Author: er $ $Date: 2002-12-05 16:08:56 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:03:50 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -70,6 +70,7 @@ #include "scitems.hxx" #include #include +#include #include #include @@ -1315,6 +1316,13 @@ BOOL ScAttrArray::HasAttrib( USHORT nRow1, USHORT nRow2, USHORT nMask ) const if ( eLoc == SVX_SHADOW_BOTTOMLEFT || eLoc == SVX_SHADOW_BOTTOMRIGHT ) bFound = TRUE; } + if ( nMask & HASATTR_RTL ) + { + const SvxFrameDirectionItem& rDirection = + (const SvxFrameDirectionItem&) pPattern->GetItem( ATTR_WRITINGDIR ); + if ( rDirection.GetValue() == FRMDIR_HORI_RIGHT_TOP ) + bFound = TRUE; + } } return bFound; diff --git a/sc/source/core/data/bcaslot.cxx b/sc/source/core/data/bcaslot.cxx index 778b4185aa16..13c00812d8f6 100644 --- a/sc/source/core/data/bcaslot.cxx +++ b/sc/source/core/data/bcaslot.cxx @@ -2,9 +2,9 @@ * * $RCSfile: bcaslot.cxx,v $ * - * $Revision: 1.3 $ + * $Revision: 1.4 $ * - * last change: $Author: er $ $Date: 2002-11-27 21:19:51 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:03:51 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -442,7 +442,7 @@ ScBroadcastAreaSlotMachine::~ScBroadcastAreaSlotMachine() if ( *pp ) delete *pp; } - delete ppSlots; + delete[] ppSlots; for ( ScBroadcastArea* pBCA = pBCAlwaysList->First(); pBCA; pBCA = pBCAlwaysList->Next() ) { diff --git a/sc/source/core/data/cell.cxx b/sc/source/core/data/cell.cxx index 30c0e5b87ec7..50c59d806d13 100644 --- a/sc/source/core/data/cell.cxx +++ b/sc/source/core/data/cell.cxx @@ -2,9 +2,9 @@ * * $RCSfile: cell.cxx,v $ * - * $Revision: 1.15 $ + * $Revision: 1.16 $ * - * last change: $Author: er $ $Date: 2002-10-01 17:18:23 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:03:51 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -918,7 +918,7 @@ void ScFormulaCell::Save( SvStream& rStream, ScMultipleWriteHeader& rHdr ) const rHdr.StartEntry(); - if ( bIsValue && !pCode->GetError() && !SOMA_FINITE( nErgValue ) ) + if ( bIsValue && !pCode->GetError() && !::rtl::math::isFinite( nErgValue ) ) { DBG_ERRORFILE( msgDbgInfinity ); pCode->SetError( errIllegalFPOperation ); @@ -1187,7 +1187,7 @@ void ScFormulaCell::CalcAfterLoad() // gespeichert werden, woraufhin spaeter im NumberFormatter die BLC Lib // bei einem fabs(-NAN) abstuerzt (#32739#) // hier fuer alle Systeme ausbuegeln, damit da auch Err503 steht - if ( bIsValue && !SOMA_FINITE( nErgValue ) ) + if ( bIsValue && !::rtl::math::isFinite( nErgValue ) ) { DBG_ERRORFILE("Formelzelle INFINITY !!! Woher kommt das Dokument?"); nErgValue = 0.0; @@ -1456,7 +1456,7 @@ void ScFormulaCell::Interpret() && !pCode->IsRecalcModeAlways() ) pDocument->RemoveFromFormulaTree( this ); #ifndef PRODUCT - if ( bIsValue && !pCode->GetError() && !SOMA_FINITE( nErgValue ) ) + if ( bIsValue && !pCode->GetError() && !::rtl::math::isFinite( nErgValue ) ) { DBG_ERRORFILE( msgDbgInfinity ); nErgValue = 0.0; @@ -1515,7 +1515,11 @@ void __EXPORT ScFormulaCell::SFX_NOTIFY( SfxBroadcaster& rBC, if ( p->GetId() & SC_HINT_TABLEOPDIRTY ) { bForceTrack = !bTableOpDirty; - bTableOpDirty = TRUE; + if ( !bTableOpDirty ) + { + pDocument->AddTableOpFormulaCell( this ); + bTableOpDirty = TRUE; + } } else { @@ -1570,7 +1574,11 @@ void ScFormulaCell::SetTableOpDirty() { if ( !bTableOpDirty || !pDocument->IsInFormulaTree( this ) ) { - bTableOpDirty = TRUE; + if ( !bTableOpDirty ) + { + pDocument->AddTableOpFormulaCell( this ); + bTableOpDirty = TRUE; + } pDocument->AppendToFormulaTrack( this ); pDocument->TrackFormulas( SC_HINT_TABLEOPDIRTY ); } diff --git a/sc/source/core/data/column3.cxx b/sc/source/core/data/column3.cxx index 2d6a65955ffb..a8c3d12a5908 100644 --- a/sc/source/core/data/column3.cxx +++ b/sc/source/core/data/column3.cxx @@ -2,9 +2,9 @@ * * $RCSfile: column3.cxx,v $ * - * $Revision: 1.8 $ + * $Revision: 1.9 $ * - * last change: $Author: er $ $Date: 2002-11-27 21:29:21 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:03:52 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -560,7 +560,8 @@ void ScColumn::DeleteRange( USHORT nStartIndex, USHORT nEndIndex, USHORT nDelFla pOldCell->ForgetBroadcaster(); pOldCell->Delete(); } - delete ppDelCells; + + delete[] ppDelCells; } diff --git a/sc/source/core/data/conditio.cxx b/sc/source/core/data/conditio.cxx index 9e19f53e8fd1..d2620d6d1e50 100644 --- a/sc/source/core/data/conditio.cxx +++ b/sc/source/core/data/conditio.cxx @@ -2,9 +2,9 @@ * * $RCSfile: conditio.cxx,v $ * - * $Revision: 1.10 $ + * $Revision: 1.11 $ * - * last change: $Author: nn $ $Date: 2002-08-15 14:35:04 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:03:52 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -71,7 +71,7 @@ #include #include #include -#include +#include #ifndef _UNOTOOLS_COLLATORWRAPPER_HXX #include @@ -536,25 +536,77 @@ void ScConditionEntry::CompileXML() TRUE, FALSE, TRUE ); } +void lcl_CondUpdateInsertTab( ScTokenArray& rCode, USHORT nInsTab, USHORT nPosTab, BOOL& rChanged ) +{ + // Insert table: only update absolute table references. + // (Similar to ScCompiler::UpdateInsertTab with bIsName=TRUE, result is the same as for named ranges) + // For deleting, ScCompiler::UpdateDeleteTab is used because of the handling of invalid references. + + rCode.Reset(); + ScToken* p = rCode.GetNextReference(); + while( p ) + { + SingleRefData& rRef1 = p->GetSingleRef(); + if ( !rRef1.IsTabRel() && nInsTab <= rRef1.nTab ) + { + rRef1.nTab += 1; + rRef1.nRelTab = rRef1.nTab - nPosTab; + rChanged = TRUE; + } + if( p->GetType() == svDoubleRef ) + { + SingleRefData& rRef2 = p->GetDoubleRef().Ref2; + if ( !rRef2.IsTabRel() && nInsTab <= rRef2.nTab ) + { + rRef2.nTab += 1; + rRef2.nRelTab = rRef2.nTab - nPosTab; + rChanged = TRUE; + } + } + p = rCode.GetNextReference(); + } +} + void ScConditionEntry::UpdateReference( UpdateRefMode eUpdateRefMode, const ScRange& rRange, short nDx, short nDy, short nDz ) { + BOOL bInsertTab = ( eUpdateRefMode == URM_INSDEL && nDz == 1 ); + BOOL bDeleteTab = ( eUpdateRefMode == URM_INSDEL && nDz == -1 ); + BOOL bChanged1 = FALSE; BOOL bChanged2 = FALSE; if (pFormula1) { - ScCompiler aComp( pDoc, aSrcPos, *pFormula1 ); - aComp.UpdateNameReference( eUpdateRefMode, rRange, nDx, nDy, nDz, bChanged1); + if ( bInsertTab ) + lcl_CondUpdateInsertTab( *pFormula1, rRange.aStart.Tab(), aSrcPos.Tab(), bChanged1 ); + else + { + ScCompiler aComp( pDoc, aSrcPos, *pFormula1 ); + if ( bDeleteTab ) + aComp.UpdateDeleteTab( rRange.aStart.Tab(), FALSE, TRUE, bChanged1 ); + else + aComp.UpdateNameReference( eUpdateRefMode, rRange, nDx, nDy, nDz, bChanged1 ); + } + if (bChanged1) - DELETEZ(pFCell1); // wird bei IsValid wieder angelegt + DELETEZ(pFCell1); // is created again in IsValid } if (pFormula2) { - ScCompiler aComp( pDoc, aSrcPos, *pFormula2 ); - aComp.UpdateNameReference( eUpdateRefMode, rRange, nDx, nDy, nDz, bChanged2); + if ( bInsertTab ) + lcl_CondUpdateInsertTab( *pFormula2, rRange.aStart.Tab(), aSrcPos.Tab(), bChanged2 ); + else + { + ScCompiler aComp( pDoc, aSrcPos, *pFormula2 ); + if ( bDeleteTab ) + aComp.UpdateDeleteTab( rRange.aStart.Tab(), FALSE, TRUE, bChanged2 ); + else + aComp.UpdateNameReference( eUpdateRefMode, rRange, nDx, nDy, nDz, bChanged2 ); + } + if (bChanged2) - DELETEZ(pFCell2); // wird bei IsValid wieder angelegt + DELETEZ(pFCell2); // is created again in IsValid } } @@ -729,7 +781,7 @@ BOOL ScConditionEntry::IsValid( double nArg ) const double nTemp = nComp1; nComp1 = nComp2; nComp2 = nTemp; } - // Alle Grenzfaelle muessen per SolarMath::ApproxEqual getestet werden! + // Alle Grenzfaelle muessen per ::rtl::math::approxEqual getestet werden! BOOL bValid = FALSE; switch (eOp) @@ -737,33 +789,33 @@ BOOL ScConditionEntry::IsValid( double nArg ) const case SC_COND_NONE: break; // immer FALSE; case SC_COND_EQUAL: - bValid = SolarMath::ApproxEqual( nArg, nComp1 ); + bValid = ::rtl::math::approxEqual( nArg, nComp1 ); break; case SC_COND_NOTEQUAL: - bValid = !SolarMath::ApproxEqual( nArg, nComp1 ); + bValid = !::rtl::math::approxEqual( nArg, nComp1 ); break; case SC_COND_GREATER: - bValid = ( nArg > nComp1 ) && !SolarMath::ApproxEqual( nArg, nComp1 ); + bValid = ( nArg > nComp1 ) && !::rtl::math::approxEqual( nArg, nComp1 ); break; case SC_COND_EQGREATER: - bValid = ( nArg >= nComp1 ) || SolarMath::ApproxEqual( nArg, nComp1 ); + bValid = ( nArg >= nComp1 ) || ::rtl::math::approxEqual( nArg, nComp1 ); break; case SC_COND_LESS: - bValid = ( nArg < nComp1 ) && !SolarMath::ApproxEqual( nArg, nComp1 ); + bValid = ( nArg < nComp1 ) && !::rtl::math::approxEqual( nArg, nComp1 ); break; case SC_COND_EQLESS: - bValid = ( nArg <= nComp1 ) || SolarMath::ApproxEqual( nArg, nComp1 ); + bValid = ( nArg <= nComp1 ) || ::rtl::math::approxEqual( nArg, nComp1 ); break; case SC_COND_BETWEEN: bValid = ( nArg >= nComp1 && nArg <= nComp2 ) || - SolarMath::ApproxEqual( nArg, nComp1 ) || SolarMath::ApproxEqual( nArg, nComp2 ); + ::rtl::math::approxEqual( nArg, nComp1 ) || ::rtl::math::approxEqual( nArg, nComp2 ); break; case SC_COND_NOTBETWEEN: bValid = ( nArg < nComp1 || nArg > nComp2 ) && - !SolarMath::ApproxEqual( nArg, nComp1 ) && !SolarMath::ApproxEqual( nArg, nComp2 ); + !::rtl::math::approxEqual( nArg, nComp1 ) && !::rtl::math::approxEqual( nArg, nComp2 ); break; case SC_COND_DIRECT: - bValid = !SolarMath::ApproxEqual( nComp1, 0.0 ); + bValid = !::rtl::math::approxEqual( nComp1, 0.0 ); break; default: DBG_ERROR("unbekannte Operation bei ScConditionEntry"); @@ -777,7 +829,7 @@ BOOL ScConditionEntry::IsValidStr( const String& rArg ) const // Interpret muss schon gerufen sein if ( eOp == SC_COND_DIRECT ) // Formel ist unabhaengig vom Inhalt - return !SolarMath::ApproxEqual( nVal1, 0.0 ); + return !::rtl::math::approxEqual( nVal1, 0.0 ); // Wenn Bedingung Zahl enthaelt, immer FALSE, ausser bei "ungleich" diff --git a/sc/source/core/data/docpool.cxx b/sc/source/core/data/docpool.cxx index 204d69a12d40..73441248fa46 100644 --- a/sc/source/core/data/docpool.cxx +++ b/sc/source/core/data/docpool.cxx @@ -2,9 +2,9 @@ * * $RCSfile: docpool.cxx,v $ * - * $Revision: 1.16 $ + * $Revision: 1.17 $ * - * last change: $Author: nn $ $Date: 2002-09-09 13:57:54 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:03:53 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -110,7 +110,7 @@ #include "sc.hrc" // Slot-IDs -#define SC_MAX_POOLREF (SFX_ITEMS_MAXREF - 39) +#define SC_MAX_POOLREF (SFX_ITEMS_OLD_MAXREF - 39) #define SC_SAFE_POOLREF (SC_MAX_POOLREF + 20) // STATIC DATA ----------------------------------------------------------- @@ -394,7 +394,7 @@ __EXPORT ScDocumentPool::~ScDocumentPool() for ( USHORT i=0; i < ATTR_ENDINDEX-ATTR_STARTINDEX+1; i++ ) { - SetRef( *ppPoolDefaults[i], 0 ); + SetRefCount( *ppPoolDefaults[i], 0 ); delete ppPoolDefaults[i]; } @@ -590,13 +590,13 @@ void __EXPORT ScDocumentPool::Remove( const SfxPoolItem& rItem ) { if ( rItem.Which() == ATTR_PATTERN ) // nur Pattern ist special { - USHORT nRef = rItem.GetRef(); - if ( nRef >= SC_MAX_POOLREF && nRef <= SFX_ITEMS_MAXREF ) + ULONG nRef = rItem.GetRefCount(); + if ( nRef >= (ULONG) SC_MAX_POOLREF && nRef <= (ULONG) SFX_ITEMS_OLD_MAXREF ) { - if ( nRef != SC_SAFE_POOLREF ) + if ( nRef != (ULONG) SC_SAFE_POOLREF ) { DBG_ERROR("Wer fummelt da an meinen Ref-Counts herum"); - SetRef( (SfxPoolItem&)rItem, SC_SAFE_POOLREF ); + SetRefCount( (SfxPoolItem&)rItem, (ULONG) SC_SAFE_POOLREF ); } return; // nicht herunterzaehlen } @@ -606,15 +606,14 @@ void __EXPORT ScDocumentPool::Remove( const SfxPoolItem& rItem ) void ScDocumentPool::CheckRef( const SfxPoolItem& rItem ) // static { - USHORT nRef = rItem.GetRef(); - if ( nRef >= SC_MAX_POOLREF && nRef <= SFX_ITEMS_MAXREF ) + ULONG nRef = rItem.GetRefCount(); + if ( nRef >= (ULONG) SC_MAX_POOLREF && nRef <= (ULONG) SFX_ITEMS_OLD_MAXREF ) { // beim Apply vom Cache wird evtl. um 2 hochgezaehlt (auf MAX+1 oder SAFE+2), // heruntergezaehlt wird nur einzeln (in LoadCompleted) - DBG_ASSERT( nRef<=SC_MAX_POOLREF+1 || (nRef>=SC_SAFE_POOLREF-1 && nRef<=SC_SAFE_POOLREF+2), - "ScDocumentPool::CheckRef" ); - - SetRef( (SfxPoolItem&)rItem, SC_SAFE_POOLREF ); + DBG_ASSERT( nRef<=(ULONG)SC_MAX_POOLREF+1 || (nRef>=(ULONG)SC_SAFE_POOLREF-1 && nRef<=(ULONG)SC_SAFE_POOLREF+2), + "ScDocumentPool::CheckRef" ); + SetRefCount( (SfxPoolItem&)rItem, (ULONG) SC_SAFE_POOLREF ); } } diff --git a/sc/source/core/data/documen2.cxx b/sc/source/core/data/documen2.cxx index b2fa8cac2f6f..fca61c6d6d98 100644 --- a/sc/source/core/data/documen2.cxx +++ b/sc/source/core/data/documen2.cxx @@ -2,9 +2,9 @@ * * $RCSfile: documen2.cxx,v $ * - * $Revision: 1.37 $ + * $Revision: 1.38 $ * - * last change: $Author: er $ $Date: 2002-12-05 16:08:58 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:03:54 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -385,6 +385,7 @@ ScDocument::ScDocument( ScDocumentMode eMode, pCacheFieldEditEngine( NULL ), nInDdeLinkUpdate( 0 ), nXMLImportedFormulaCount( 0 ), + bInUnoBroadcast( FALSE ), bStyleSheetUsageInvalid( TRUE ) { eSrcSet = gsl_getSystemTextEncoding(); diff --git a/sc/source/core/data/documen3.cxx b/sc/source/core/data/documen3.cxx index 725fadfafa66..263fd84d3e2a 100644 --- a/sc/source/core/data/documen3.cxx +++ b/sc/source/core/data/documen3.cxx @@ -2,9 +2,9 @@ * * $RCSfile: documen3.cxx,v $ * - * $Revision: 1.16 $ + * $Revision: 1.17 $ * - * last change: $Author: sab $ $Date: 2002-09-06 08:53:54 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:03:54 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -160,6 +160,7 @@ #include "sc.hrc" // SID_LINK #include "hints.hxx" #include "dpobject.hxx" +#include "unoguard.hxx" using namespace com::sun::star; @@ -748,15 +749,53 @@ void ScDocument::AddUnoObject( SfxListener& rObject ) void ScDocument::RemoveUnoObject( SfxListener& rObject ) { if (pUnoBroadcaster) + { rObject.EndListening( *pUnoBroadcaster ); + + if ( bInUnoBroadcast ) + { + // #107294# Broadcasts from ScDocument::BroadcastUno are the only way that + // uno object methods are called without holding a reference. + // + // If RemoveUnoObject is called from an object dtor in the finalizer thread + // while the main thread is calling BroadcastUno, the dtor thread must wait + // (or the object's Notify might try to access a deleted object). + // The SolarMutex can't be locked here because if a component is called from + // a VCL event, the main thread has the SolarMutex locked all the time. + // + // This check is done after calling EndListening, so a later BroadcastUno call + // won't touch this object. + + vos::IMutex& rSolarMutex = Application::GetSolarMutex(); + if ( rSolarMutex.tryToAcquire() ) + { + // BroadcastUno is always called with the SolarMutex locked, so if it + // can be acquired, this is within the same thread (should not happen) + DBG_ERRORFILE( "RemoveUnoObject called from BroadcastUno" ); + rSolarMutex.release(); + } + else + { + // let the thread that called BroadcastUno continue + while ( bInUnoBroadcast ) + { + vos::OThread::yield(); + } + } + } + } else - DBG_ERROR("kein Uno-Broadcaster??!?"); + DBG_ERROR("No Uno broadcaster"); } void ScDocument::BroadcastUno( const SfxHint &rHint ) { if (pUnoBroadcaster) + { + bInUnoBroadcast = TRUE; pUnoBroadcaster->Broadcast( rHint ); + bInUnoBroadcast = FALSE; + } } void ScDocument::UpdateReference( UpdateRefMode eUpdateRefMode, diff --git a/sc/source/core/data/documen4.cxx b/sc/source/core/data/documen4.cxx index 4c3b7640f5d5..a636e48f7ff6 100644 --- a/sc/source/core/data/documen4.cxx +++ b/sc/source/core/data/documen4.cxx @@ -2,9 +2,9 @@ * * $RCSfile: documen4.cxx,v $ * - * $Revision: 1.9 $ + * $Revision: 1.10 $ * - * last change: $Author: dr $ $Date: 2001-08-03 13:43:21 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:03:55 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -502,8 +502,8 @@ double ScDocument::RoundValueAsShown( double fVal, ULONG nFormat ) } else nPrecision = (short)GetDocOptions().GetStdPrecision(); - double fRound = SolarMath::Round( fVal, nPrecision ); - if ( SolarMath::ApproxEqual( fVal, fRound ) ) + double fRound = ::rtl::math::round( fVal, nPrecision ); + if ( ::rtl::math::approxEqual( fVal, fRound ) ) return fVal; // durch Rundung hoechstens Fehler else return fRound; diff --git a/sc/source/core/data/documen8.cxx b/sc/source/core/data/documen8.cxx index 32b2dd60a6ed..4391a1b9f753 100644 --- a/sc/source/core/data/documen8.cxx +++ b/sc/source/core/data/documen8.cxx @@ -2,9 +2,9 @@ * * $RCSfile: documen8.cxx,v $ * - * $Revision: 1.28 $ + * $Revision: 1.29 $ * - * last change: $Author: dr $ $Date: 2002-11-27 15:08:06 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:03:55 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -234,11 +234,21 @@ SfxPrinter* ScDocument::GetPrinter() void ScDocument::SetPrinter( SfxPrinter* pNewPrinter ) { - SfxPrinter* pOld = pPrinter; - pPrinter = pNewPrinter; - UpdateDrawPrinter(); - delete pOld; - InvalidateTextWidth(); + if ( pNewPrinter == pPrinter ) + { + // #i6706# SetPrinter is called with the same printer again if + // the JobSetup has changed. In that case just call UpdateDrawPrinter + // (SetRefDevice for drawing layer) because of changed text sizes. + UpdateDrawPrinter(); + } + else + { + SfxPrinter* pOld = pPrinter; + pPrinter = pNewPrinter; + UpdateDrawPrinter(); + delete pOld; + } + InvalidateTextWidth(); // in both cases } //------------------------------------------------------------------------ diff --git a/sc/source/core/data/document.cxx b/sc/source/core/data/document.cxx index 9c3f13cb5d65..137255e64086 100644 --- a/sc/source/core/data/document.cxx +++ b/sc/source/core/data/document.cxx @@ -2,9 +2,9 @@ * * $RCSfile: document.cxx,v $ * - * $Revision: 1.47 $ + * $Revision: 1.48 $ * - * last change: $Author: er $ $Date: 2002-12-05 16:08:59 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:03:56 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -73,6 +73,7 @@ #define ITEMID_FIELD EE_FEATURE_FIELD #include +#include #include #include #include @@ -208,6 +209,8 @@ BOOL ScDocument::GetTable( const String& rName, USHORT& rTab ) const BOOL ScDocument::ValidTabName( const String& rName ) const { + /* If changed, ScfTools::ConvertToScSheetName (sc/source/filter/ftools/ftools.cxx) + needs to be changed too. */ using namespace ::com::sun::star::i18n; sal_Int32 nStartFlags = KParseTokens::ANY_LETTER_OR_NUMBER | KParseTokens::ASC_UNDERSCORE; @@ -2234,6 +2237,24 @@ void ScDocument::SetTableOpDirty( const ScRange& rRange ) } +void ScDocument::AddTableOpFormulaCell( ScFormulaCell* pCell ) +{ + ScInterpreterTableOpParams* p = aTableOpList.Last(); + if ( p && p->bCollectNotifications ) + { + if ( p->bRefresh ) + { // refresh pointers only + p->aNotifiedFormulaCells.push_back( pCell ); + } + else + { // init both, address and pointer + p->aNotifiedFormulaCells.push_back( pCell ); + p->aNotifiedFormulaPos.push_back( pCell->aPos ); + } + } +} + + void ScDocument::CalcAll() { BOOL bOldAutoCalc = GetAutoCalc(); @@ -3074,7 +3095,29 @@ BOOL ScDocument::HasAttrib( USHORT nCol1, USHORT nRow1, USHORT nTab1, break; } if (!bAnyItem) - nMask &= ~ATTR_ROTATE_VALUE; + nMask &= ~HASATTR_ROTATE; + } + + if ( nMask & HASATTR_RTL ) + { + // first check if right-to left is in the pool at all + // (the same item is used in cell and page format) + + ScDocumentPool* pPool = xPoolHelper->GetDocPool(); + + BOOL bHasRtl = FALSE; + USHORT nDirCount = pPool->GetItemCount( ATTR_WRITINGDIR ); + for (USHORT nItem=0; nItemGetItem( ATTR_WRITINGDIR, nItem ); + if ( pItem && ((const SvxFrameDirectionItem*)pItem)->GetValue() == FRMDIR_HORI_RIGHT_TOP ) + { + bHasRtl = TRUE; + break; + } + } + if (!bHasRtl) + nMask &= ~HASATTR_RTL; } if (!nMask) @@ -3083,7 +3126,15 @@ BOOL ScDocument::HasAttrib( USHORT nCol1, USHORT nRow1, USHORT nTab1, BOOL bFound = FALSE; for (USHORT i=nTab1; i<=nTab2 && !bFound; i++) if (pTab[i]) + { + if ( nMask & HASATTR_RTL ) + { + if ( GetEditTextDirection(i) == EE_HTEXTDIR_R2L ) // sheet default + bFound = TRUE; + } + bFound |= pTab[i]->HasAttrib( nCol1, nRow1, nCol2, nRow2, nMask ); + } return bFound; } diff --git a/sc/source/core/data/dpsdbtab.cxx b/sc/source/core/data/dpsdbtab.cxx index c81b92e48d05..9007f6ad881f 100644 --- a/sc/source/core/data/dpsdbtab.cxx +++ b/sc/source/core/data/dpsdbtab.cxx @@ -2,9 +2,9 @@ * * $RCSfile: dpsdbtab.cxx,v $ * - * $Revision: 1.5 $ + * $Revision: 1.6 $ * - * last change: $Author: nn $ $Date: 2001-01-26 19:26:10 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:03:57 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -379,7 +379,7 @@ void lcl_FillItemData( ScDPItemData& rData, if (!pImpl->pFormatter) pImpl->pFormatter = new SvNumberFormatter( pImpl->xServiceManager, ScGlobal::eLnge ); - ULONG nIndex = pImpl->pFormatter->GetStandardFormat( NUMBERFORMAT_DATE, ScGlobal::eLnge ); + ULONG nIndex = pImpl->pFormatter->GetStandardFormat( nNumType, ScGlobal::eLnge ); pImpl->pFormatter->GetInputLineString( rData.fValue, nIndex, rData.aString ); } } diff --git a/sc/source/core/data/dptabsrc.cxx b/sc/source/core/data/dptabsrc.cxx index 89f37ec3b38d..9f918cff9efe 100644 --- a/sc/source/core/data/dptabsrc.cxx +++ b/sc/source/core/data/dptabsrc.cxx @@ -2,9 +2,9 @@ * * $RCSfile: dptabsrc.cxx,v $ * - * $Revision: 1.6 $ + * $Revision: 1.7 $ * - * last change: $Author: er $ $Date: 2001-03-14 18:05:33 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:03:58 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -68,7 +68,7 @@ // INCLUDE --------------------------------------------------------------- #include -#include +#include #include #include "dptabsrc.hxx" @@ -1802,10 +1802,10 @@ ScDPMembers::ScDPMembers( ScDPSource* pSrc, long nD, long nH, long nL ) : double fLastVal = rStrings[nFirstString-1]->GetValue(); long nFirstYear = pSource->GetData()->GetDatePart( - (long)SolarMath::ApproxFloor( fFirstVal ), + (long)::rtl::math::approxFloor( fFirstVal ), nHier, nLev ); long nLastYear = pSource->GetData()->GetDatePart( - (long)SolarMath::ApproxFloor( fLastVal ), + (long)::rtl::math::approxFloor( fLastVal ), nHier, nLev ); nMbrCount = nLastYear + 1 - nFirstYear; @@ -1962,7 +1962,7 @@ ScDPMember* ScDPMembers::getByIndex(long nIndex) const const TypedStrCollection& rStrings = pSource->GetData()->GetColumnEntries(nSrcDim); double fFirstVal = rStrings[0]->GetValue(); long nFirstYear = pSource->GetData()->GetDatePart( - (long)SolarMath::ApproxFloor( fFirstVal ), + (long)::rtl::math::approxFloor( fFirstVal ), nHier, nLev ); nVal = nFirstYear + nIndex; @@ -2034,7 +2034,7 @@ BOOL ScDPMember::IsNamedItem( const ScDPItemData& r ) const if ( nHier != SC_DAPI_HIERARCHY_FLAT && pSource->IsDateDimension( nSrcDim ) && r.bHasValue ) { long nComp = pSource->GetData()->GetDatePart( - (long)SolarMath::ApproxFloor( r.fValue ), + (long)::rtl::math::approxFloor( r.fValue ), nHier, nLev ); // fValue is converted from integer, so simple comparison works diff --git a/sc/source/core/data/drwlayer.cxx b/sc/source/core/data/drwlayer.cxx index abede2acac0e..32bd7139ec73 100644 --- a/sc/source/core/data/drwlayer.cxx +++ b/sc/source/core/data/drwlayer.cxx @@ -2,9 +2,9 @@ * * $RCSfile: drwlayer.cxx,v $ * - * $Revision: 1.19 $ + * $Revision: 1.20 $ * - * last change: $Author: nn $ $Date: 2002-10-07 18:11:29 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:03:58 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -330,6 +330,8 @@ ScDrawLayer::ScDrawLayer( ScDocument* pDocument, const String& rName ) : __EXPORT ScDrawLayer::~ScDrawLayer() { + Broadcast(SdrHint(HINT_MODELCLEARED)); + Clear(); delete pUndoGroup; diff --git a/sc/source/core/data/global.cxx b/sc/source/core/data/global.cxx index 7b68fbcbe8b3..fb4c79baf8c9 100644 --- a/sc/source/core/data/global.cxx +++ b/sc/source/core/data/global.cxx @@ -2,9 +2,9 @@ * * $RCSfile: global.cxx,v $ * - * $Revision: 1.29 $ + * $Revision: 1.30 $ * - * last change: $Author: er $ $Date: 2002-11-12 18:27:38 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:03:59 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -130,7 +130,6 @@ #include "interpre.hxx" #include "strload.hxx" #include "docpool.hxx" -#include "scdll.hxx" // ScLibSignalFunc #include "unitconv.hxx" #include "globstr.hrc" #include "scfuncs.hrc" @@ -650,9 +649,6 @@ void ScGlobal::Init() UpdatePPT(NULL); ScCompiler::Init(); -#if SOMA_FPSIGNAL_JUMP - ScInterpreter::pSignalFunc = SC_DLL()->GetSignalFunc(); -#endif srand( (unsigned) time( NULL ) ); // Random Seed Init fuer Interpreter InitAddIns(); @@ -744,7 +740,6 @@ void ScGlobal::Clear() DELETEZ(pStarCalcFunctionList); // vor ResMgr zerstoeren! DELETEZ(pStarCalcFunctionMgr); ScCompiler::DeInit(); - ScInterpreter::aTableOpList.Clear(); ScInterpreter::GlobalExit(); // statischen Stack loeschen DELETEZ(pEmptyBrushItem); diff --git a/sc/source/core/data/markarr.cxx b/sc/source/core/data/markarr.cxx index ca9eac0fc004..76a31dbe5349 100644 --- a/sc/source/core/data/markarr.cxx +++ b/sc/source/core/data/markarr.cxx @@ -2,9 +2,9 @@ * * $RCSfile: markarr.cxx,v $ * - * $Revision: 1.4 $ + * $Revision: 1.5 $ * - * last change: $Author: er $ $Date: 2002-01-18 16:58:05 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:03:59 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -384,8 +384,7 @@ void ScMarkArray::MoveTo(USHORT nStartRow, USHORT nEndRow, ScMarkArray& rMarkArr void ScMarkArray::CopyMarksTo( ScMarkArray& rDestMarkArray ) const { - if (rDestMarkArray.pData) - delete rDestMarkArray.pData; + delete[] rDestMarkArray.pData; if (pData) { diff --git a/sc/source/core/data/patattr.cxx b/sc/source/core/data/patattr.cxx index 247f4c3f64d0..52e77d9f72a8 100644 --- a/sc/source/core/data/patattr.cxx +++ b/sc/source/core/data/patattr.cxx @@ -2,9 +2,9 @@ * * $RCSfile: patattr.cxx,v $ * - * $Revision: 1.18 $ + * $Revision: 1.19 $ * - * last change: $Author: nn $ $Date: 2002-12-10 17:23:43 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:03:59 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -74,7 +74,7 @@ #include #include #include -#include +#include #include #include #include @@ -424,7 +424,7 @@ void ScPatternAttr::GetFont( Font& rFont, ScAutoFontColorMode eAutoMode, aBackColor = *pBackConfigColor; } else - aBackColor.SetColor( SC_MOD()->GetColorConfig().GetColorValue(svx::DOCCOLOR).nColor ); + aBackColor.SetColor( SC_MOD()->GetColorConfig().GetColorValue(svtools::DOCCOLOR).nColor ); } // get system text color for comparison @@ -437,7 +437,7 @@ void ScPatternAttr::GetFont( Font& rFont, ScAutoFontColorMode eAutoMode, aSysTextColor = *pTextConfigColor; } else - aSysTextColor.SetColor( SC_MOD()->GetColorConfig().GetColorValue(svx::FONTCOLOR).nColor ); + aSysTextColor.SetColor( SC_MOD()->GetColorConfig().GetColorValue(svtools::FONTCOLOR).nColor ); // select the resulting color if ( aBackColor.IsDark() && aSysTextColor.IsDark() ) diff --git a/sc/source/core/data/table3.cxx b/sc/source/core/data/table3.cxx index 24d60a2ea270..6f5258122f05 100644 --- a/sc/source/core/data/table3.cxx +++ b/sc/source/core/data/table3.cxx @@ -2,9 +2,9 @@ * * $RCSfile: table3.cxx,v $ * - * $Revision: 1.13 $ + * $Revision: 1.14 $ * - * last change: $Author: er $ $Date: 2002-11-27 21:40:50 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:00 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -67,7 +67,7 @@ // INCLUDE --------------------------------------------------------------- -#include +#include #include #include #include @@ -1007,26 +1007,26 @@ BOOL ScTable::ValidQuery(USHORT nRow, const ScQueryParam& rParam, switch (rEntry.eOp) { case SC_EQUAL : - bOk = SolarMath::ApproxEqual( nCellVal, rEntry.nVal ); + bOk = ::rtl::math::approxEqual( nCellVal, rEntry.nVal ); break; case SC_LESS : - bOk = (nCellVal < rEntry.nVal) && !SolarMath::ApproxEqual( nCellVal, rEntry.nVal ); + bOk = (nCellVal < rEntry.nVal) && !::rtl::math::approxEqual( nCellVal, rEntry.nVal ); break; case SC_GREATER : - bOk = (nCellVal > rEntry.nVal) && !SolarMath::ApproxEqual( nCellVal, rEntry.nVal ); + bOk = (nCellVal > rEntry.nVal) && !::rtl::math::approxEqual( nCellVal, rEntry.nVal ); break; case SC_LESS_EQUAL : - bOk = (nCellVal < rEntry.nVal) || SolarMath::ApproxEqual( nCellVal, rEntry.nVal ); + bOk = (nCellVal < rEntry.nVal) || ::rtl::math::approxEqual( nCellVal, rEntry.nVal ); if ( bOk && pbTestEqualCondition ) - bTestEqual = SolarMath::ApproxEqual( nCellVal, rEntry.nVal ); + bTestEqual = ::rtl::math::approxEqual( nCellVal, rEntry.nVal ); break; case SC_GREATER_EQUAL : - bOk = (nCellVal > rEntry.nVal) || SolarMath::ApproxEqual( nCellVal, rEntry.nVal ); + bOk = (nCellVal > rEntry.nVal) || ::rtl::math::approxEqual( nCellVal, rEntry.nVal ); if ( bOk && pbTestEqualCondition ) - bTestEqual = SolarMath::ApproxEqual( nCellVal, rEntry.nVal ); + bTestEqual = ::rtl::math::approxEqual( nCellVal, rEntry.nVal ); break; case SC_NOT_EQUAL : - bOk = !SolarMath::ApproxEqual( nCellVal, rEntry.nVal ); + bOk = !::rtl::math::approxEqual( nCellVal, rEntry.nVal ); break; } } diff --git a/sc/source/core/data/table4.cxx b/sc/source/core/data/table4.cxx index 4e1062402838..0a76562803bf 100644 --- a/sc/source/core/data/table4.cxx +++ b/sc/source/core/data/table4.cxx @@ -2,9 +2,9 @@ * * $RCSfile: table4.cxx,v $ * - * $Revision: 1.7 $ + * $Revision: 1.8 $ * - * last change: $Author: sab $ $Date: 2002-12-04 11:22:38 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:00 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -91,7 +91,7 @@ #endif #include #include -#include +#include #include #include @@ -321,7 +321,7 @@ void ScTable::FillAnalyse( USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow { nVal2 = ((ScValueCell*)pCell)->GetValue(); double nDiff = nVal2 - nVal1; - if ( !SolarMath::ApproxEqual( nDiff, rInc ) ) + if ( !::rtl::math::approxEqual( nDiff, rInc ) ) bVal = FALSE; nVal1 = nVal2; } @@ -383,7 +383,7 @@ void ScTable::FillAnalyse( USHORT nCol1, USHORT nRow1, USHORT nCol2, USHORT nRow if ( nFlag1 == nFlag2 ) { double nDiff = (double)nVal2 - (double)nVal1; - if ( !SolarMath::ApproxEqual( nDiff, rInc ) ) + if ( !::rtl::math::approxEqual( nDiff, rInc ) ) bVal = FALSE; nVal1 = nVal2; } diff --git a/sc/source/core/data/table6.cxx b/sc/source/core/data/table6.cxx index a805c99e8b47..b5ca2bc3131f 100644 --- a/sc/source/core/data/table6.cxx +++ b/sc/source/core/data/table6.cxx @@ -2,9 +2,9 @@ * * $RCSfile: table6.cxx,v $ * - * $Revision: 1.5 $ + * $Revision: 1.6 $ * - * last change: $Author: er $ $Date: 2002-01-18 16:25:38 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:01 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -67,6 +67,8 @@ // INCLUDE --------------------------------------------------------------- +#include + #include #include "table.hxx" @@ -711,6 +713,15 @@ BOOL ScTable::SearchAndReplace(const SvxSearchItem& rSearchItem, // SearchParam no longer needed - SearchOptions contains all settings com::sun::star::util::SearchOptions aSearchOptions = rSearchItem.GetSearchOptions(); aSearchOptions.Locale = *ScGlobal::pLocale; + + // #107259# reflect UseAsianOptions flag in SearchOptions + // (use only ignore case and width if asian options are disabled). + // This is also done in SvxSearchDialog CommandHdl, but not in API object. + if ( !rSearchItem.IsUseAsianOptions() ) + aSearchOptions.transliterateFlags &= + ( com::sun::star::i18n::TransliterationModules_IGNORE_CASE | + com::sun::star::i18n::TransliterationModules_IGNORE_WIDTH ); + pSearchText = new utl::TextSearch( aSearchOptions ); if (nCommand == SVX_SEARCHCMD_FIND) diff --git a/sc/source/core/data/validat.cxx b/sc/source/core/data/validat.cxx index 98ca5fe02c93..053c9151481c 100644 --- a/sc/source/core/data/validat.cxx +++ b/sc/source/core/data/validat.cxx @@ -2,9 +2,9 @@ * * $RCSfile: validat.cxx,v $ * - * $Revision: 1.8 $ + * $Revision: 1.9 $ * - * last change: $Author: nn $ $Date: 2002-06-27 16:30:14 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:02 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -83,7 +83,7 @@ #include #include #include -#include +#include #include @@ -526,7 +526,7 @@ BOOL ScValidationData::IsDataValid( ScBaseCell* pCell, const ScAddress& rPos ) c case SC_VALID_TIME: bOk = bIsVal; if ( bOk && eDataMode == SC_VALID_WHOLE ) - bOk = SolarMath::ApproxEqual( nVal, floor(nVal+0.5) ); // ganze Zahlen + bOk = ::rtl::math::approxEqual( nVal, floor(nVal+0.5) ); // ganze Zahlen if ( bOk ) bOk = IsCellValid( pCell, rPos ); break; diff --git a/sc/source/core/inc/interpre.hxx b/sc/source/core/inc/interpre.hxx index 6840ed769875..88626462d9f1 100644 --- a/sc/source/core/inc/interpre.hxx +++ b/sc/source/core/inc/interpre.hxx @@ -2,9 +2,9 @@ * * $RCSfile: interpre.hxx,v $ * - * $Revision: 1.13 $ + * $Revision: 1.14 $ * - * last change: $Author: er $ $Date: 2002-12-08 17:13:47 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:11 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -66,8 +66,8 @@ #include -#ifndef _TOOLS_SOLMATH_HXX -#include // SOMA_FPSIGNAL_JUMP +#ifndef INCLUDED_RTL_MATH_HXX +#include #endif #ifndef SC_COMPILER_HXX @@ -115,10 +115,6 @@ class SvNumberFormatter; }; #endif -#ifndef _TABOPLIST_DECLARED -#define _TABOPLIST_DECLARED -DECLARE_LIST (TabOpList, USHORT*); -#endif struct ScCompare { @@ -175,13 +171,7 @@ class ScInterpreter public: DECL_FIXEDMEMPOOL_NEWDEL( ScInterpreter ) -#if SOMA_FPSIGNAL_JUMP - static jmp_buf* pJumpBuf; // fuer die mySignal-Funktion - static ScLibSignalFunc pSignalFunc; // signal() Wrapper der App -#endif static USHORT nGlobalError; // globale Fehlervariable - static ULONG nInterpCount; // Zaehlt aktuelle Interpreteraufrufe - static TabOpList aTableOpList; // Liste von Ref-Arrays fuer Mehrfachoperat. #if SC_SPEW_ENABLED static ScSpew theSpew; #endif @@ -211,9 +201,6 @@ private: StackVar eResult; USHORT nGlobError; // lokale Kopie -#if SOMA_FPSIGNAL_JUMP - jmp_buf* pLocalJumpBuf; // lokale Kopie -#endif const ScToken* pCur; // aktuelles Token String aTempStr; // fuer GetString() ScTokenStack* pStackObj; // enthaelt den Stack @@ -223,7 +210,6 @@ private: USHORT sp; // der Stackpointer USHORT maxsp; // der maximale StackPointer double** ppGlobSortArray; // Pointer auf Array zum Sortieren - USHORT* pTableOp; // der lokale Pointer auf das aktuelle TableOp ScMatrix** ppTempMatArray; // Array fuer temporaere Matrizen USHORT nMatCount; // dazugehoeriger Zaehler BOOL bMatDel; // und Kontrollvariable @@ -433,7 +419,15 @@ void ScLookup(); void ScHLookup(); void ScVLookup(); void ScSubTotal(); -BOOL GetDBParams(USHORT& rTab, ScQueryParam& rParam); + +// If upon call rMissingField==TRUE then the database field parameter may be +// missing (Xcl DCOUNT() syntax), or may be faked as missing by having the +// value 0.0 or being exactly the entire database range reference (old SO +// compatibility). If this was the case then rMissingField is set to TRUE upon +// return. If rMissingField==FALSE upon call all "missing cases" are considered +// to be an error. +BOOL GetDBParams( USHORT& rTab, ScQueryParam& rParam, BOOL& rMissingField ); + void DBIterator( ScIterFunc ); void ScDBSum(); void ScDBCount(); @@ -501,7 +495,7 @@ void ScEven(); void ScOdd(); void ScCeil(); void ScFloor(); -void RoundNumber( SolarMathRoundingMode eMode ); +void RoundNumber( rtl_math_RoundingMode eMode ); void ScRound(); void ScRoundUp(); void ScRoundDown(); @@ -704,7 +698,6 @@ public: { if (nError && !nGlobalError) nGlobalError = nError; } static USHORT GetError() { return nGlobalError; } - static void MySigFunc(int sig); const String& GetStringResult() { return aResult; } double GetNumResult() { return nResult; } diff --git a/sc/source/core/src/compiler.src b/sc/source/core/src/compiler.src index f238cc561943..90d360104e85 100644 --- a/sc/source/core/src/compiler.src +++ b/sc/source/core/src/compiler.src @@ -2,9 +2,9 @@ * * $RCSfile: compiler.src,v $ * - * $Revision: 1.36 $ + * $Revision: 1.37 $ * - * last change: $Author: vg $ $Date: 2002-11-27 16:36:10 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:11 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -5099,7 +5099,7 @@ Resource RID_SC_FUNCTION_NAMES Text[ chinese_simplified ] = "DPRODUCT"; Text[ russian ] = ""; Text[ polish ] = "BD.ILOCZYN"; - Text[ japanese ] = "DPRODUKT"; + Text[ japanese ] = "DPRODUCT"; Text[ chinese_traditional ] = "DPRODUCT"; Text[ arabic ] = "DPRODUCT"; Text[ dutch ] = "DBPRODUKT"; @@ -5845,7 +5845,7 @@ Resource RID_SC_FUNCTION_NAMES Text [ french ] = "CHERCHE" ; Text [ swedish ] = "SK" ; Text [ dutch ] = "VIND.SPEC" ; - Text [ spanish ] = "HALLAR" ; + Text [ spanish ] = "BUSCAR" ; Text [ english_us ] = "SEARCH" ; Text[ chinese_simplified ] = "SEARCH"; Text[ russian ] = ""; @@ -7825,7 +7825,7 @@ Resource RID_SC_FUNCTION_NAMES Text [ french ] = "NO.SEMAINE" ; Text [ swedish ] = "VECKONR" ; Text [ dutch ] = "KALENDERWEEK" ; - Text [ spanish ] = "SEM.DEL.AO" ; + Text [ spanish ] = "NUM.SEMANA" ; Text [ english_us ] = "WEEKNUM" ; Text[ chinese_simplified ] = "WEEKNUM"; Text[ russian ] = "."; @@ -8410,3 +8410,8 @@ Resource RID_SC_FUNCTION_NAMES_ENGLISH + + + + + diff --git a/sc/source/core/tool/chartarr.cxx b/sc/source/core/tool/chartarr.cxx index 460628470eb7..66607689ba15 100644 --- a/sc/source/core/tool/chartarr.cxx +++ b/sc/source/core/tool/chartarr.cxx @@ -2,9 +2,9 @@ * * $RCSfile: chartarr.cxx,v $ * - * $Revision: 1.10 $ + * $Revision: 1.11 $ * - * last change: $Author: er $ $Date: 2002-07-09 13:11:54 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:13 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -1315,12 +1315,13 @@ ScChartPositionMap::ScChartPositionMap( USHORT nChartCols, USHORT nChartRows, ScChartPositionMap::~ScChartPositionMap() { - USHORT j; - for ( j=0; j < nCount; j++ ) + for ( ULONG nIndex=0; nIndex < nCount; nIndex++ ) { - delete ppData[j]; + delete ppData[nIndex]; } delete [] ppData; + + USHORT j; for ( j=0; j < nColCount; j++ ) { delete ppColHeader[j]; diff --git a/sc/source/core/tool/chgtrack.cxx b/sc/source/core/tool/chgtrack.cxx index 4e36417c1c65..277fe6bf3d48 100644 --- a/sc/source/core/tool/chgtrack.cxx +++ b/sc/source/core/tool/chgtrack.cxx @@ -2,9 +2,9 @@ * * $RCSfile: chgtrack.cxx,v $ * - * $Revision: 1.15 $ + * $Revision: 1.16 $ * - * last change: $Author: er $ $Date: 2002-04-15 11:08:01 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:13 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -107,6 +107,7 @@ #include "scmod.hxx" // SC_MOD #include "inputopt.hxx" // GetExpandRefs #include "patattr.hxx" +#include "hints.hxx" #include "globstr.hrc" @@ -2643,10 +2644,24 @@ void __EXPORT ScChangeTrack::Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) rSet.GetPool()->GetWhich( SID_ATTR_ADDRESS ), TRUE, &pItem ) == SFX_ITEM_SET ) { + USHORT nOldCount = aUserCollection.GetCount(); + String aStr( ((SvxAddressItem*)pItem)->GetFirstName() ); aStr += ' '; aStr += ((SvxAddressItem*)pItem)->GetName(); SetUser( aStr ); + + if ( aUserCollection.GetCount() != nOldCount ) + { + // New user in collection -> have to repaint because + // colors may be different now (#106697#). + // (Has to be done in the Notify handler, to be sure + // the user collection has already been updated) + + SfxObjectShell* pDocSh = pDoc->GetDocumentShell(); + if (pDocSh) + pDocSh->Broadcast( ScPaintHint( ScRange(0,0,0,MAXCOL,MAXROW,MAXTAB), PAINT_GRID ) ); + } } } } diff --git a/sc/source/core/tool/chgviset.cxx b/sc/source/core/tool/chgviset.cxx index 5bddd6be0a5f..c3c71208d36c 100644 --- a/sc/source/core/tool/chgviset.cxx +++ b/sc/source/core/tool/chgviset.cxx @@ -2,9 +2,9 @@ * * $RCSfile: chgviset.cxx,v $ * - * $Revision: 1.2 $ + * $Revision: 1.3 $ * - * last change: $Author: nn $ $Date: 2000-11-20 10:29:51 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:13 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -69,6 +69,7 @@ #include "chgviset.hxx" #include "rechead.hxx" +#include "chgtrack.hxx" // ----------------------------------------------------------------------- ScChangeViewSettings::~ScChangeViewSettings() @@ -221,6 +222,53 @@ void ScChangeViewSettings::Store( SvStream& rStream ) const } - - +void ScChangeViewSettings::AdjustDateMode( const ScDocument& rDoc ) +{ + switch ( eDateMode ) + { // corresponds with ScViewUtil::IsActionShown + case SCDM_DATE_EQUAL : + case SCDM_DATE_NOTEQUAL : + aFirstDateTime.SetTime( 0 ); + aLastDateTime = aFirstDateTime; + aLastDateTime.SetTime( 23595999 ); + break; + case SCDM_DATE_SAVE: + { + const ScChangeAction* pLast = 0; + ScChangeTrack* pTrack = rDoc.GetChangeTrack(); + if ( pTrack ) + { + pLast = pTrack->GetLastSaved(); + if ( pLast ) + { + aFirstDateTime = pLast->GetDateTime(); +#if 0 +// This would be the proper handling. But since the SvxTPFilter dialog uses +// DateField/TimeField, and the filter dialog is used in ScAcceptChgDlg as the +// controlling instance, and the TimeFields are used there without seconds or +// 100ths, we'd display some extra entries between the floor of the minute and +// the start of the next minute. + // add one 100th second to point past last saved + aFirstDateTime += Time( 0, 0, 0, 1 ); +#else + // Set the next minute as the start time and assume that + // the document isn't saved, reloaded, edited and filter set + // all together during the gap between those two times. + aFirstDateTime += Time( 0, 1 ); + aFirstDateTime.SetSec(0); + aFirstDateTime.Set100Sec(0); +#endif + } + } + if ( !pLast ) + { + aFirstDateTime.SetDate( 18990101 ); + aFirstDateTime.SetTime( 0 ); + } + aLastDateTime = Date(); + aLastDateTime.SetYear( aLastDateTime.GetYear() + 100 ); + } + break; + } +} diff --git a/sc/source/core/tool/compiler.cxx b/sc/source/core/tool/compiler.cxx index 838649917353..be6397ecb5a1 100644 --- a/sc/source/core/tool/compiler.cxx +++ b/sc/source/core/tool/compiler.cxx @@ -2,9 +2,9 @@ * * $RCSfile: compiler.cxx,v $ * - * $Revision: 1.38 $ + * $Revision: 1.39 $ * - * last change: $Author: er $ $Date: 2002-11-21 18:26:56 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:14 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -82,8 +82,8 @@ #ifndef _URLOBJ_HXX #include #endif -#ifndef _TOOLS_SOLMATH_HXX -#include +#ifndef INCLUDED_RTL_MATH_HXX +#include #endif #include #include @@ -2229,8 +2229,18 @@ void ScCompiler::PutCode( ScRawToken* p ) void ScCompiler::PutCode( ScToken* p ) { - if( pc >= MAXCODE ) + if( pc >= MAXCODE-1 ) + { + if ( pc == MAXCODE-1 ) + { + p = new ScByteToken( ocStop ); + *pCode++ = p; + ++pc; + p->IncRef(); + } SetError(errCodeOverflow); + return; + } if( pArr->GetError() && !bCompileForFAP ) return; *pCode++ = p; pc++; @@ -3614,21 +3624,22 @@ ScToken* ScCompiler::CreateStringFromToken( rtl::OUStringBuffer& rBuffer, ScToke { case svDouble: { - String aStr; if ( pSymbolTable == pSymbolTableEnglish ) { // Don't go via number formatter, slows down XML export // significantly because on every formula the number formatter // has to switch to/from English/native language. - SolarMath::DoubleToString( aStr, t->GetDouble(), 'A', INT_MAX, - '.', TRUE ); + ::rtl::math::doubleToUStringBuffer( rBuffer, t->GetDouble(), + rtl_math_StringFormat_Automatic, + rtl_math_DecimalPlaces_Max, '.', TRUE ); } else { - SolarMath::DoubleToString( aStr, t->GetDouble(), 'A', INT_MAX, - ScGlobal::pLocaleData->getNumDecimalSep().GetChar(0), - TRUE ); + ::rtl::math::doubleToUStringBuffer( rBuffer, t->GetDouble(), + rtl_math_StringFormat_Automatic, + rtl_math_DecimalPlaces_Max, + ScGlobal::pLocaleData->getNumDecimalSep().GetChar(0), + TRUE ); } - rBuffer.append(aStr); } break; case svString: diff --git a/sc/source/core/tool/detfunc.cxx b/sc/source/core/tool/detfunc.cxx index dee591d018ae..8e4c535038ad 100644 --- a/sc/source/core/tool/detfunc.cxx +++ b/sc/source/core/tool/detfunc.cxx @@ -2,9 +2,9 @@ * * $RCSfile: detfunc.cxx,v $ * - * $Revision: 1.10 $ + * $Revision: 1.11 $ * - * last change: $Author: nn $ $Date: 2002-05-16 07:18:05 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:15 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -68,7 +68,7 @@ // INCLUDE --------------------------------------------------------------- #include "scitems.hxx" -#include +#include #include #include #include @@ -1927,10 +1927,10 @@ void ScDetectiveFunc::InitializeColors() { // may be called several times to update colors from configuration - const svx::ColorConfig& rColorCfg = SC_MOD()->GetColorConfig(); - nArrowColor = rColorCfg.GetColorValue(svx::CALCDETECTIVE).nColor; - nErrorColor = rColorCfg.GetColorValue(svx::CALCDETECTIVEERROR).nColor; - nCommentColor = rColorCfg.GetColorValue(svx::CALCNOTESBACKGROUND).nColor; + const svtools::ColorConfig& rColorCfg = SC_MOD()->GetColorConfig(); + nArrowColor = rColorCfg.GetColorValue(svtools::CALCDETECTIVE).nColor; + nErrorColor = rColorCfg.GetColorValue(svtools::CALCDETECTIVEERROR).nColor; + nCommentColor = rColorCfg.GetColorValue(svtools::CALCNOTESBACKGROUND).nColor; bColorsInitialized = TRUE; } diff --git a/sc/source/core/tool/editutil.cxx b/sc/source/core/tool/editutil.cxx index 8a8968dbe033..38e6e0b75e54 100644 --- a/sc/source/core/tool/editutil.cxx +++ b/sc/source/core/tool/editutil.cxx @@ -2,9 +2,9 @@ * * $RCSfile: editutil.cxx,v $ * - * $Revision: 1.18 $ + * $Revision: 1.19 $ * - * last change: $Author: nn $ $Date: 2002-09-23 14:13:00 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:15 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -74,7 +74,7 @@ #define ITEMID_FIELD EE_FEATURE_FIELD #include -#include +#include #include #include #include @@ -795,8 +795,8 @@ String __EXPORT ScFieldEditEngine::CalcFieldValue( const SvxFieldItem& rField, break; } - svx::ColorConfigEntry eEntry = - INetURLHistory::GetOrCreate()->QueryUrl( aURL ) ? svx::LINKSVISITED : svx::LINKS; + svtools::ColorConfigEntry eEntry = + INetURLHistory::GetOrCreate()->QueryUrl( aURL ) ? svtools::LINKSVISITED : svtools::LINKS; rTxtColor = new Color( SC_MOD()->GetColorConfig().GetColorValue(eEntry).nColor ); } else diff --git a/sc/source/core/tool/interpr1.cxx b/sc/source/core/tool/interpr1.cxx index 3feddd32cffb..9ea66e805c64 100644 --- a/sc/source/core/tool/interpr1.cxx +++ b/sc/source/core/tool/interpr1.cxx @@ -2,9 +2,9 @@ * * $RCSfile: interpr1.cxx,v $ * - * $Revision: 1.24 $ + * $Revision: 1.25 $ * - * last change: $Author: er $ $Date: 2002-12-08 17:12:10 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:15 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -168,7 +168,7 @@ void ScInterpreter::ScChoseJump() { const short* pJump = pCur->GetJump(); short nJumpCount = pJump[ 0 ]; - double nJumpIndex = SolarMath::ApproxFloor( GetDouble() ); + double nJumpIndex = ::rtl::math::approxFloor( GetDouble() ); if ((nJumpIndex >= 1) && (nJumpIndex < nJumpCount)) aCode.Jump( pJump[ (short) nJumpIndex ], pJump[ nJumpCount ] ); else @@ -185,7 +185,7 @@ short ScInterpreter::CompareFunc( const ScCompare& rComp ) ; // leere Zelle == leere Zelle, nRes 0 else if( rComp.bVal[ 1 ] ) { - if ( !SolarMath::ApproxEqual( rComp.nVal[ 1 ], 0.0 ) ) + if ( !::rtl::math::approxEqual( rComp.nVal[ 1 ], 0.0 ) ) { if ( rComp.nVal[ 1 ] < 0.0 ) nRes = 1; // leere Zelle > -x @@ -205,7 +205,7 @@ short ScInterpreter::CompareFunc( const ScCompare& rComp ) { if( rComp.bVal[ 0 ] ) { - if ( !SolarMath::ApproxEqual( rComp.nVal[ 0 ], 0.0 ) ) + if ( !::rtl::math::approxEqual( rComp.nVal[ 0 ], 0.0 ) ) { if ( rComp.nVal[ 0 ] < 0.0 ) nRes = -1; // -x < leere Zelle @@ -225,7 +225,7 @@ short ScInterpreter::CompareFunc( const ScCompare& rComp ) { if( rComp.bVal[ 1 ] ) { - if ( !SolarMath::ApproxEqual( rComp.nVal[ 0 ], rComp.nVal[ 1 ] ) ) + if ( !::rtl::math::approxEqual( rComp.nVal[ 0 ], rComp.nVal[ 1 ] ) ) { if( rComp.nVal[ 0 ] - rComp.nVal[ 1 ] < 0 ) nRes = -1; @@ -859,25 +859,25 @@ void ScInterpreter::ScRad() void ScInterpreter::ScSin() { - PushDouble(SolarMath::Sin(GetDouble())); + PushDouble(::rtl::math::sin(GetDouble())); } void ScInterpreter::ScCos() { - PushDouble(SolarMath::Cos(GetDouble())); + PushDouble(::rtl::math::cos(GetDouble())); } void ScInterpreter::ScTan() { - PushDouble(SolarMath::Tan(GetDouble())); + PushDouble(::rtl::math::tan(GetDouble())); } void ScInterpreter::ScCot() { - PushDouble(1.0 / SolarMath::Tan(GetDouble())); + PushDouble(1.0 / ::rtl::math::tan(GetDouble())); } @@ -1641,7 +1641,7 @@ short ScInterpreter::IsEven() SetIllegalParameter(); } if (nRes) - nRes = ( fmod( SolarMath::ApproxFloor( fabs( fVal ) ), 2.0 ) < 0.5 ); + nRes = ( fmod( ::rtl::math::approxFloor( fabs( fVal ) ), 2.0 ) < 0.5 ); return nRes; } @@ -2334,8 +2334,8 @@ double ScInterpreter::IterateParameters( ScIterFunc eFunc, BOOL bTextAsZero ) } switch( eFunc ) { - case ifSUM: fRes = SolarMath::ApproxAdd( fRes, fMem ); break; - case ifAVERAGE: fRes = SolarMath::ApproxAdd( fRes, fMem ) / nCount; break; + case ifSUM: fRes = ::rtl::math::approxAdd( fRes, fMem ); break; + case ifAVERAGE: fRes = ::rtl::math::approxAdd( fRes, fMem ) / nCount; break; case ifCOUNT2: case ifCOUNT: fRes = nCount; break; case ifPRODUCT: if ( !nCount ) fRes = 0.0; break; @@ -2479,7 +2479,7 @@ void ScInterpreter::GetStVarParams( double& rVal, double& rValCount, SetError(errIllegalParameter); } } - rVal = SolarMath::ApproxSub( fSumSqr, fSum*fSum/rValCount ); + rVal = ::rtl::math::approxSub( fSumSqr, fSum*fSum/rValCount ); } @@ -3309,7 +3309,7 @@ void ScInterpreter::ScSumIf() } } while ( aCellIter.GetNext() ); } - PushDouble( SolarMath::ApproxAdd( fSum, fMem ) ); + PushDouble( ::rtl::math::approxAdd( fSum, fMem ) ); } else SetIllegalParameter(); @@ -3685,7 +3685,7 @@ void ScInterpreter::ScHLookup() bSorted = GetBool(); else bSorted = TRUE; - double fIndex = SolarMath::ApproxFloor( GetDouble() ) - 1.0; + double fIndex = ::rtl::math::approxFloor( GetDouble() ) - 1.0; ScMatrix* pMat = NULL; USHORT nC, nR; USHORT nCol1, nRow1, nTab1, nCol2, nRow2, nTab2; @@ -3939,7 +3939,7 @@ void ScInterpreter::ScVLookup() bSorted = GetBool(); else bSorted = TRUE; - double fIndex = SolarMath::ApproxFloor( GetDouble() ) - 1.0; + double fIndex = ::rtl::math::approxFloor( GetDouble() ) - 1.0; ScMatrix* pMat = NULL; USHORT nC, nR; USHORT nCol1, nRow1, nTab1, nCol2, nRow2, nTab2; @@ -4192,7 +4192,7 @@ void ScInterpreter::ScSubTotal() // Wir muessen den 1. Parameter tief aus dem Stack herausfischen! const ScToken* p = pStack[ sp - nParamCount ]; PushTempToken( *p ); - int nFunc = (int) SolarMath::ApproxFloor( GetDouble() ); + int nFunc = (int) ::rtl::math::approxFloor( GetDouble() ); if( nFunc < 1 || nFunc > 11 ) SetIllegalParameter(); else @@ -4227,9 +4227,16 @@ void ScInterpreter::ScSubTotal() #endif -BOOL ScInterpreter::GetDBParams(USHORT& rTab, ScQueryParam& rParam) +BOOL ScInterpreter::GetDBParams(USHORT& rTab, ScQueryParam& rParam, + BOOL& rMissingField ) { BOOL bRet = FALSE; + BOOL bAllowMissingField = FALSE; + if ( rMissingField ) + { + bAllowMissingField = TRUE; + rMissingField = FALSE; + } if ( GetByte() == 3 ) { @@ -4239,10 +4246,14 @@ BOOL ScInterpreter::GetDBParams(USHORT& rTab, ScQueryParam& rParam) BOOL bByVal = TRUE; double nVal; String aStr; + ScRange aMissingRange; + BOOL bRangeFake = FALSE; switch (GetStackType()) { case svDouble : - nVal = GetDouble(); + nVal = ::rtl::math::approxFloor( GetDouble() ); + if ( bAllowMissingField && nVal == 0.0 ) + rMissingField = TRUE; // fake missing parameter break; case svString : bByVal = FALSE; @@ -4262,17 +4273,56 @@ BOOL ScInterpreter::GetDBParams(USHORT& rTab, ScQueryParam& rParam) } } break; + case svDoubleRef : + if ( bAllowMissingField ) + { // fake missing parameter for old SO compatibility + bRangeFake = TRUE; + PopDoubleRef( aMissingRange ); + } + else + { + PopError(); + SetError( errIllegalParameter ); + } + break; + case svMissing : + PopError(); + if ( bAllowMissingField ) + rMissingField = TRUE; + else + SetError( errIllegalParameter ); + break; + default: + PopError(); + SetError( errIllegalParameter ); } USHORT nDBCol1, nDBRow1, nDBTab1, nDBCol2, nDBRow2, nDBTab2; PopDoubleRef(nDBCol1, nDBRow1, nDBTab1, nDBCol2, nDBRow2, nDBTab2); + if ( nGlobalError == 0 && bRangeFake ) + { + // range parameter must match entire database range + if ( aMissingRange == ScRange( nDBCol1, nDBRow1, nDBTab1, nDBCol2, + nDBRow2, nDBTab2) ) + rMissingField = TRUE; + else + SetError( errIllegalParameter ); + } + if (nGlobalError == 0) { USHORT nField = nDBCol1; BOOL bFound = TRUE; - if (bByVal) - nField = Min(nDBCol2, (USHORT)(nDBCol1 + (USHORT)SolarMath::ApproxFloor(nVal) - 1)); + if ( rMissingField ) + ; // special case + else if ( bByVal ) + { + if ( nVal <= 0 || nVal > (nDBCol2 - nDBCol1 + 1) ) + bFound = FALSE; + else + nField = Min(nDBCol2, (USHORT)(nDBCol1 + (USHORT)nVal - 1)); + } else { bFound = FALSE; @@ -4303,6 +4353,12 @@ BOOL ScInterpreter::GetDBParams(USHORT& rTab, ScQueryParam& rParam) rParam.bDuplicate = TRUE; if (pDok->CreateQueryParam(nQCol1, nQRow1, nQCol2, nQRow2, nQTab1, rParam)) { + // An allowed missing field parameter sets the result field + // to any of the query fields, just to be able to return + // some cell from the iterator. + if ( rMissingField ) + nField = rParam.GetEntry(0).nField; + rParam.nCol1 = nField; rParam.nCol2 = nField; rTab = nDBTab1; @@ -4336,9 +4392,10 @@ void ScInterpreter::DBIterator( ScIterFunc eFunc ) double nErg = 0.0; double fMem = 0.0; BOOL bNull = TRUE; - long nCount = 0; + ULONG nCount = 0; ScQueryParam aQueryParam; - if (GetDBParams(nTab1, aQueryParam)) + BOOL bMissingField = FALSE; + if ( GetDBParams( nTab1, aQueryParam, bMissingField) ) { double nVal; USHORT nErr; @@ -4381,8 +4438,8 @@ void ScInterpreter::DBIterator( ScIterFunc eFunc ) switch( eFunc ) { case ifCOUNT: nErg = nCount; break; - case ifSUM: nErg = SolarMath::ApproxAdd( nErg, fMem ); break; - case ifAVERAGE: nErg = (nCount ? SolarMath::ApproxAdd( nErg, fMem ) / nCount : 0); break; + case ifSUM: nErg = ::rtl::math::approxAdd( nErg, fMem ); break; + case ifAVERAGE: nErg = ::rtl::math::approxAdd( nErg, fMem ) / nCount; break; } PushDouble( nErg ); } @@ -4396,7 +4453,49 @@ void ScInterpreter::ScDBSum() void ScInterpreter::ScDBCount() { - DBIterator( ifCOUNT ); + USHORT nTab; + ScQueryParam aQueryParam; + BOOL bMissingField = TRUE; + if ( GetDBParams( nTab, aQueryParam, bMissingField) ) + { + ULONG nCount = 0; + if ( bMissingField ) + { // count all matching records + // TODO: currently the QueryIterators only return cell pointers of + // existing cells, so if a query matches an empty cell there's + // nothing returned, and therefor not counted! + // Since this has ever been the case and this code here only came + // into existance to fix #i6899 and it never worked before we'll + // have to live with it until we reimplement the iterators to also + // return empty cells, which would mean to adapt all callers of + // iterators. + ScQueryCellIterator aCellIter( pDok, nTab, aQueryParam); + if ( aCellIter.GetFirst() ) + { + do + { + nCount++; + } while ( aCellIter.GetNext() ); + } + } + else + { // count only matching records with a value in the "result" field + double nVal; + USHORT nErr = 0; + ScQueryValueIterator aValIter( pDok, nTab, aQueryParam); + if ( aValIter.GetFirst( nVal, nErr) && !nErr ) + { + do + { + nCount++; + } while ( aValIter.GetNext( nVal, nErr) && !nErr ); + } + SetError( nErr ); + } + PushDouble( nCount ); + } + else + SetIllegalParameter(); } @@ -4404,7 +4503,8 @@ void ScInterpreter::ScDBCount2() { USHORT nTab; ScQueryParam aQueryParam; - if (GetDBParams(nTab, aQueryParam)) + BOOL bMissingField = FALSE; + if (GetDBParams( nTab, aQueryParam, bMissingField)) { ULONG nCount = 0; ScQueryCellIterator aCellIter(pDok, nTab, aQueryParam); @@ -4453,7 +4553,8 @@ void ScInterpreter::GetDBStVarParams( double& rVal, double& rValCount ) double fSumSqr = 0.0; USHORT nTab; ScQueryParam aQueryParam; - if (GetDBParams(nTab, aQueryParam)) + BOOL bMissingField = FALSE; + if (GetDBParams( nTab, aQueryParam, bMissingField)) { double fVal; USHORT nErr; @@ -4472,7 +4573,7 @@ void ScInterpreter::GetDBStVarParams( double& rVal, double& rValCount ) } else SetIllegalParameter(); - rVal = SolarMath::ApproxSub( fSumSqr, fSum*fSum/rValCount ); + rVal = ::rtl::math::approxSub( fSumSqr, fSum*fSum/rValCount ); } @@ -4550,9 +4651,9 @@ void ScInterpreter::ScAdress() if (nParamCount == 4) sTabStr = GetString(); if (nParamCount >= 3) - nAbs = (USHORT) SolarMath::ApproxFloor(GetDouble()); - USHORT nCol = (USHORT) SolarMath::ApproxFloor(GetDouble()); - USHORT nRow = (USHORT) SolarMath::ApproxFloor(GetDouble()); + nAbs = (USHORT) ::rtl::math::approxFloor(GetDouble()); + USHORT nCol = (USHORT) ::rtl::math::approxFloor(GetDouble()); + USHORT nRow = (USHORT) ::rtl::math::approxFloor(GetDouble()); if (nCol < 1 || nCol > MAXCOL + 1 || nRow < 1 || nRow > MAXROW + 1) { SetIllegalParameter(); @@ -4594,11 +4695,11 @@ void ScInterpreter::ScOffset() { short nColNew, nRowNew, nColPlus, nRowPlus; if (nParamCount == 5) - nColNew = (short) SolarMath::ApproxFloor(GetDouble()); + nColNew = (short) ::rtl::math::approxFloor(GetDouble()); if (nParamCount >= 4) - nRowNew = (short) SolarMath::ApproxFloor(GetDouble()); - nColPlus = (short) SolarMath::ApproxFloor(GetDouble()); - nRowPlus = (short) SolarMath::ApproxFloor(GetDouble()); + nRowNew = (short) ::rtl::math::approxFloor(GetDouble()); + nColPlus = (short) ::rtl::math::approxFloor(GetDouble()); + nRowPlus = (short) ::rtl::math::approxFloor(GetDouble()); USHORT nCol1, nRow1, nTab1, nCol2, nRow2, nTab2; if ( (nParamCount == 5 && nColNew == 0) || (nParamCount >= 4 && nRowNew == 0) ) @@ -4664,15 +4765,15 @@ void ScInterpreter::ScIndex() short nBereich, nMaxAnz, nCount; USHORT nCol, nRow; if (nParamCount == 4) - nBereich = (short) SolarMath::ApproxFloor(GetDouble()); + nBereich = (short) ::rtl::math::approxFloor(GetDouble()); else nBereich = 1; if (nParamCount >= 3) - nCol = (USHORT) SolarMath::ApproxFloor(GetDouble()); + nCol = (USHORT) ::rtl::math::approxFloor(GetDouble()); else nCol = 0; if (nParamCount >= 2) - nRow = (USHORT) SolarMath::ApproxFloor(GetDouble()); + nRow = (USHORT) ::rtl::math::approxFloor(GetDouble()); else nRow = 0; if (GetStackType() == svByte) // vorher MultiSelektion? @@ -4875,7 +4976,7 @@ void ScInterpreter::ScCurrency() double fDec; if (nParamCount == 2) { - fDec = SolarMath::ApproxFloor(GetDouble()); + fDec = ::rtl::math::approxFloor(GetDouble()); if (fDec < -15.0 || fDec > 15.0) { SetIllegalArgument(); @@ -4961,7 +5062,7 @@ void ScInterpreter::ScFixed() bThousand = TRUE; if (nParamCount >= 2) { - fDec = SolarMath::ApproxFloor(GetDouble()); + fDec = ::rtl::math::approxFloor(GetDouble()); if (fDec < -15.0 || fDec > 15.0) { SetIllegalArgument(); @@ -5051,7 +5152,7 @@ void ScInterpreter::ScLeft() xub_StrLen n; if (nParamCount == 2) { - double nVal = SolarMath::ApproxFloor(GetDouble()); + double nVal = ::rtl::math::approxFloor(GetDouble()); if ( nVal < 0.0 || nVal > STRING_MAXLEN ) { SetIllegalParameter(); @@ -5077,7 +5178,7 @@ void ScInterpreter::ScRight() xub_StrLen n; if (nParamCount == 2) { - double nVal = SolarMath::ApproxFloor(GetDouble()); + double nVal = ::rtl::math::approxFloor(GetDouble()); if ( nVal < 0.0 || nVal > STRING_MAXLEN ) { SetIllegalParameter(); @@ -5104,7 +5205,7 @@ void ScInterpreter::ScSearch() { if (nParamCount == 3) { - fAnz = SolarMath::ApproxFloor(GetDouble()); + fAnz = ::rtl::math::approxFloor(GetDouble()); if (fAnz > double(STRING_MAXLEN)) { SetIllegalParameter(); @@ -5140,8 +5241,8 @@ void ScInterpreter::ScMid() { if ( MustHaveParamCount( GetByte(), 3 ) ) { - double fAnz = SolarMath::ApproxFloor(GetDouble()); - double fAnfang = SolarMath::ApproxFloor(GetDouble()); + double fAnz = ::rtl::math::approxFloor(GetDouble()); + double fAnfang = ::rtl::math::approxFloor(GetDouble()); const String& rStr = GetString(); if (fAnfang < 1.0 || fAnz < 0.0 || fAnfang > double(STRING_MAXLEN) || fAnz > double(STRING_MAXLEN)) SetIllegalParameter(); @@ -5184,7 +5285,7 @@ void ScInterpreter::ScSubstitute() xub_StrLen nAnz; if (nParamCount == 4) { - double fAnz = SolarMath::ApproxFloor(GetDouble()); + double fAnz = ::rtl::math::approxFloor(GetDouble()); if( fAnz < 1 || fAnz > STRING_MAXLEN ) { SetIllegalParameter(); @@ -5234,7 +5335,7 @@ void ScInterpreter::ScRept() { if ( MustHaveParamCount( GetByte(), 2 ) ) { - double fAnz = SolarMath::ApproxFloor(GetDouble()); + double fAnz = ::rtl::math::approxFloor(GetDouble()); String aStr( GetString() ); if ( fAnz < 0.0 ) SetIllegalParameter(); diff --git a/sc/source/core/tool/interpr2.cxx b/sc/source/core/tool/interpr2.cxx index 554f46d3bb6e..70837df1da4f 100644 --- a/sc/source/core/tool/interpr2.cxx +++ b/sc/source/core/tool/interpr2.cxx @@ -2,9 +2,9 @@ * * $RCSfile: interpr2.cxx,v $ * - * $Revision: 1.11 $ + * $Revision: 1.12 $ * - * last change: $Author: er $ $Date: 2001-03-15 21:31:13 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:16 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -152,45 +152,45 @@ void ScInterpreter::ScGetActTime() void ScInterpreter::ScGetYear() { Date aDate = *(pFormatter->GetNullDate()); - aDate += (long) SolarMath::ApproxFloor(GetDouble()); + aDate += (long) ::rtl::math::approxFloor(GetDouble()); PushDouble( (double) aDate.GetYear() ); } void ScInterpreter::ScGetMonth() { Date aDate = *(pFormatter->GetNullDate()); - aDate += (long) SolarMath::ApproxFloor(GetDouble()); + aDate += (long) ::rtl::math::approxFloor(GetDouble()); PushDouble( (double) aDate.GetMonth() ); } void ScInterpreter::ScGetDay() { Date aDate = *(pFormatter->GetNullDate()); - aDate += (long)SolarMath::ApproxFloor(GetDouble()); + aDate += (long)::rtl::math::approxFloor(GetDouble()); PushDouble((double) aDate.GetDay()); } void ScInterpreter::ScGetMin() { double fTime = GetDouble(); - fTime -= SolarMath::ApproxFloor(fTime); // Datumsanteil weg - long nVal = (long)SolarMath::ApproxFloor(fTime*D_TIMEFACTOR+0.5) % 3600; + fTime -= ::rtl::math::approxFloor(fTime); // Datumsanteil weg + long nVal = (long)::rtl::math::approxFloor(fTime*D_TIMEFACTOR+0.5) % 3600; PushDouble( (double) (nVal/60) ); } void ScInterpreter::ScGetSec() { double fTime = GetDouble(); - fTime -= SolarMath::ApproxFloor(fTime); // Datumsanteil weg - long nVal = (long)SolarMath::ApproxFloor(fTime*D_TIMEFACTOR+0.5) % 60; + fTime -= ::rtl::math::approxFloor(fTime); // Datumsanteil weg + long nVal = (long)::rtl::math::approxFloor(fTime*D_TIMEFACTOR+0.5) % 60; PushDouble( (double) nVal ); } void ScInterpreter::ScGetHour() { double fTime = GetDouble(); - fTime -= SolarMath::ApproxFloor(fTime); // Datumsanteil weg - long nVal = (long)SolarMath::ApproxFloor(fTime*D_TIMEFACTOR+0.5) / 3600; + fTime -= ::rtl::math::approxFloor(fTime); // Datumsanteil weg + long nVal = (long)::rtl::math::approxFloor(fTime*D_TIMEFACTOR+0.5) / 3600; PushDouble((double) nVal); } @@ -218,12 +218,12 @@ void ScInterpreter::ScGetDayOfWeek() { short nFlag; if (nParamCount == 2) - nFlag = (short) SolarMath::ApproxFloor(GetDouble()); + nFlag = (short) ::rtl::math::approxFloor(GetDouble()); else nFlag = 1; Date aDate = *(pFormatter->GetNullDate()); - aDate += (long)SolarMath::ApproxFloor(GetDouble()); + aDate += (long)::rtl::math::approxFloor(GetDouble()); int nVal = (int) aDate.GetDayOfWeek(); if (nFlag == 1) { @@ -242,10 +242,10 @@ void ScInterpreter::ScGetWeekOfYear() { if ( MustHaveParamCount( GetByte(), 2 ) ) { - short nFlag = (short) SolarMath::ApproxFloor(GetDouble()); + short nFlag = (short) ::rtl::math::approxFloor(GetDouble()); Date aDate = *(pFormatter->GetNullDate()); - aDate += (long)SolarMath::ApproxFloor(GetDouble()); + aDate += (long)::rtl::math::approxFloor(GetDouble()); PushInt( (int) aDate.GetWeekOfYear( nFlag == 1 ? SUNDAY : MONDAY )); } } @@ -256,7 +256,7 @@ void ScInterpreter::ScEasterSunday() if ( MustHaveParamCount( GetByte(), 1 ) ) { INT16 nDay, nMonth, nYear; - nYear = (INT16) SolarMath::ApproxFloor( GetDouble() ); + nYear = (INT16) ::rtl::math::approxFloor( GetDouble() ); if ( nYear < 100 ) nYear = pFormatter->ExpandTwoDigitYear( nYear ); // don't worry, be happy :) @@ -285,9 +285,9 @@ void ScInterpreter::ScGetDate() nFuncFmtType = NUMBERFORMAT_DATE; if ( MustHaveParamCount( GetByte(), 3 ) ) { - INT16 nDay = (INT16) SolarMath::ApproxFloor(GetDouble()); - INT16 nMonth = (INT16) SolarMath::ApproxFloor(GetDouble()); - INT16 nYear = (INT16) SolarMath::ApproxFloor(GetDouble()); + INT16 nDay = (INT16) ::rtl::math::approxFloor(GetDouble()); + INT16 nMonth = (INT16) ::rtl::math::approxFloor(GetDouble()); + INT16 nYear = (INT16) ::rtl::math::approxFloor(GetDouble()); if (nYear < 0) SetIllegalParameter(); else @@ -344,9 +344,9 @@ void ScInterpreter::ScGetDiffDate360() else fSign = 1.0; Date aDate1 = *(pFormatter->GetNullDate()); - aDate1 += (long) SolarMath::ApproxFloor(nDate1); + aDate1 += (long) ::rtl::math::approxFloor(nDate1); Date aDate2 = *(pFormatter->GetNullDate()); - aDate2 += (long) SolarMath::ApproxFloor(nDate2); + aDate2 += (long) ::rtl::math::approxFloor(nDate2); if (aDate1.GetDay() == 31) aDate1 -= (ULONG) 1; else if (!bFlag) @@ -418,25 +418,25 @@ void ScInterpreter::ScAbs() void ScInterpreter::ScInt() { - PushDouble(SolarMath::ApproxFloor(GetDouble())); + PushDouble(::rtl::math::approxFloor(GetDouble())); } -void ScInterpreter::RoundNumber( SolarMathRoundingMode eMode ) +void ScInterpreter::RoundNumber( rtl_math_RoundingMode eMode ) { BYTE nParamCount = GetByte(); if ( MustHaveParamCount( nParamCount, 1, 2 ) ) { double fVal = 0.0; if (nParamCount == 1) - fVal = SolarMath::Round( GetDouble(), 0, eMode ); + fVal = ::rtl::math::round( GetDouble(), 0, eMode ); else { - INT32 nDec = (INT32) SolarMath::ApproxFloor(GetDouble()); + INT32 nDec = (INT32) ::rtl::math::approxFloor(GetDouble()); if( nDec < -20 || nDec > 20 ) SetIllegalArgument(); else - fVal = SolarMath::Round( GetDouble(), (short)nDec, eMode ); + fVal = ::rtl::math::round( GetDouble(), (short)nDec, eMode ); } PushDouble(fVal); } @@ -444,17 +444,17 @@ void ScInterpreter::RoundNumber( SolarMathRoundingMode eMode ) void ScInterpreter::ScRound() { - RoundNumber( SolarMathRoundCorrected ); + RoundNumber( rtl_math_RoundingMode_Corrected ); } void ScInterpreter::ScRoundDown() { - RoundNumber( SolarMathRoundDown ); + RoundNumber( rtl_math_RoundingMode_Down ); } void ScInterpreter::ScRoundUp() { - RoundNumber( SolarMathRoundUp ); + RoundNumber( rtl_math_RoundingMode_Up ); } void ScInterpreter::ScCeil() @@ -472,9 +472,9 @@ void ScInterpreter::ScCeil() else { if ( !bAbs && fVal < 0.0 ) - PushDouble(SolarMath::ApproxFloor(fVal/fDec) * fDec); + PushDouble(::rtl::math::approxFloor(fVal/fDec) * fDec); else - PushDouble(SolarMath::ApproxCeil(fVal/fDec) * fDec); + PushDouble(::rtl::math::approxCeil(fVal/fDec) * fDec); } } } @@ -494,9 +494,9 @@ void ScInterpreter::ScFloor() else { if ( !bAbs && fVal < 0.0 ) - PushDouble(SolarMath::ApproxCeil(fVal/fDec) * fDec); + PushDouble(::rtl::math::approxCeil(fVal/fDec) * fDec); else - PushDouble(SolarMath::ApproxFloor(fVal/fDec) * fDec); + PushDouble(::rtl::math::approxFloor(fVal/fDec) * fDec); } } } @@ -505,9 +505,9 @@ void ScInterpreter::ScEven() { double fVal = GetDouble(); if (fVal < 0.0) - PushDouble(SolarMath::ApproxFloor(fVal/2.0) * 2.0); + PushDouble(::rtl::math::approxFloor(fVal/2.0) * 2.0); else - PushDouble(SolarMath::ApproxCeil(fVal/2.0) * 2.0); + PushDouble(::rtl::math::approxCeil(fVal/2.0) * 2.0); } void ScInterpreter::ScOdd() @@ -515,13 +515,13 @@ void ScInterpreter::ScOdd() double fVal = GetDouble(); if (fVal >= 0.0) { - fVal = SolarMath::ApproxCeil(fVal); + fVal = ::rtl::math::approxCeil(fVal); if (fmod(fVal, 2.0) == 0.0) fVal += 1.0; } else { - fVal = SolarMath::ApproxFloor(fVal); + fVal = ::rtl::math::approxFloor(fVal); if (fmod(fVal, 2.0) == 0.0) fVal -= 1.0; } @@ -886,7 +886,7 @@ void ScInterpreter::ScGDA2() if (nParamCount == 4) nMonate = 12.0; else - nMonate = SolarMath::ApproxFloor(GetDouble()); + nMonate = ::rtl::math::approxFloor(GetDouble()); double nPeriode = GetDouble(); double nDauer = GetDouble(); double nRest = GetDouble(); @@ -898,17 +898,17 @@ void ScInterpreter::ScGDA2() return; } double nAbRate = 1.0 - pow(nRest / nWert, 1.0 / nDauer); - nAbRate = SolarMath::ApproxFloor((nAbRate * 1000.0) + 0.5) / 1000.0; + nAbRate = ::rtl::math::approxFloor((nAbRate * 1000.0) + 0.5) / 1000.0; double nErsteAbRate = nWert * nAbRate * nMonate / 12.0; double nGda2; - if (SolarMath::ApproxFloor(nPeriode) == 1) + if (::rtl::math::approxFloor(nPeriode) == 1) nGda2 = nErsteAbRate; else { double nSummAbRate = nErsteAbRate; double nMin = nDauer; if (nMin > nPeriode) nMin = nPeriode; - USHORT iMax = (USHORT)SolarMath::ApproxFloor(nMin); + USHORT iMax = (USHORT)::rtl::math::approxFloor(nMin); for (USHORT i = 2; i <= iMax; i++) { nGda2 = (nWert - nSummAbRate) * nAbRate; @@ -925,7 +925,7 @@ double ScInterpreter::ScInterVDB(double fWert,double fRest,double fDauer, double fDauer1,double fPeriode,double fFaktor) { double fVdb=0; - double fIntEnd = SolarMath::ApproxCeil(fPeriode); + double fIntEnd = ::rtl::math::approxCeil(fPeriode); ULONG nLoopEnd = (ULONG) fIntEnd; double fTerm, fLia; @@ -1002,8 +1002,8 @@ void ScInterpreter::ScVDB() SetIllegalParameter(); else { - double fIntStart = SolarMath::ApproxFloor(fAnfang); - double fIntEnd = SolarMath::ApproxCeil(fEnde); + double fIntStart = ::rtl::math::approxFloor(fAnfang); + double fIntEnd = ::rtl::math::approxCeil(fEnde); ULONG nLoopStart = (ULONG) fIntStart; ULONG nLoopEnd = (ULONG) fIntEnd; @@ -1030,11 +1030,11 @@ void ScInterpreter::ScVDB() double fPart; //@Die Frage aller Fragen: "Ist das hier richtig" - if(!SolarMath::ApproxEqual(fAnfang,SolarMath::ApproxFloor(fAnfang))) + if(!::rtl::math::approxEqual(fAnfang,::rtl::math::approxFloor(fAnfang))) { if(fFaktor>1) { - if(fAnfang>fDauer/2 || SolarMath::ApproxEqual(fAnfang,fDauer/2)) + if(fAnfang>fDauer/2 || ::rtl::math::approxEqual(fAnfang,fDauer/2)) { fPart=fAnfang-fDauer/2; fAnfang=fDauer/2; @@ -1318,8 +1318,8 @@ void ScInterpreter::ScKumZinsZ() { double fZins, fZzr, fBw, fAnfang, fEnde, fF, fRmz, fZinsZ; fF = GetDouble(); - fEnde = SolarMath::ApproxFloor(GetDouble()); - fAnfang = SolarMath::ApproxFloor(GetDouble()); + fEnde = ::rtl::math::approxFloor(GetDouble()); + fAnfang = ::rtl::math::approxFloor(GetDouble()); fBw = GetDouble(); fZzr = GetDouble(); fZins = GetDouble(); @@ -1358,8 +1358,8 @@ void ScInterpreter::ScKumKapZ() { double fZins, fZzr, fBw, fAnfang, fEnde, fF, fRmz, fKapZ; fF = GetDouble(); - fEnde = SolarMath::ApproxFloor(GetDouble()); - fAnfang = SolarMath::ApproxFloor(GetDouble()); + fEnde = ::rtl::math::approxFloor(GetDouble()); + fAnfang = ::rtl::math::approxFloor(GetDouble()); fBw = GetDouble(); fZzr = GetDouble(); fZins = GetDouble(); @@ -1403,7 +1403,7 @@ void ScInterpreter::ScEffektiv() SetIllegalParameter(); else { - fPerioden = SolarMath::ApproxFloor(fPerioden); + fPerioden = ::rtl::math::approxFloor(fPerioden); PushDouble(pow(1.0 + fNominal/fPerioden, fPerioden) - 1.0); } } @@ -1420,7 +1420,7 @@ void ScInterpreter::ScNominal() SetIllegalParameter(); else { - fPerioden = SolarMath::ApproxFloor(fPerioden); + fPerioden = ::rtl::math::approxFloor(fPerioden); PushDouble( (pow(fEffektiv + 1.0, 1.0 / fPerioden) - 1.0) * fPerioden ); } } @@ -1432,7 +1432,7 @@ void ScInterpreter::ScMod() { double nVal2 = GetDouble(); double nVal1 = GetDouble(); - PushDouble(nVal1 - (SolarMath::ApproxFloor(nVal1 / nVal2) * nVal2)); + PushDouble(nVal1 - (::rtl::math::approxFloor(nVal1 / nVal2) * nVal2)); } } @@ -1534,7 +1534,7 @@ void ScInterpreter::ScBackSolver() xn = xn - (fn / fs); } } - double nX = SolarMath::ApproxFloor((nBestX / nDelta) + 0.5) * nDelta; + double nX = ::rtl::math::approxFloor((nBestX / nDelta) + 0.5) * nDelta; if ( bRet ) { pValue->SetValue( nX ); @@ -1761,7 +1761,7 @@ void ScInterpreter::ScDde() { BYTE nMode = SC_DDE_DEFAULT; if (nParamCount == 4) - nMode = (BYTE) SolarMath::ApproxFloor(GetDouble()); + nMode = (BYTE) ::rtl::math::approxFloor(GetDouble()); String aItem = GetString(); String aTopic = GetString(); String aAppl = GetString(); @@ -1867,7 +1867,7 @@ void ScInterpreter::ScBase() xub_StrLen nMinLen; if ( nParamCount == 3 ) { - double fLen = SolarMath::ApproxFloor( GetDouble() ); + double fLen = ::rtl::math::approxFloor( GetDouble() ); if ( 1.0 <= fLen && fLen < STRING_MAXLEN ) nMinLen = (xub_StrLen) fLen; else if ( fLen == 0.0 ) @@ -1877,8 +1877,8 @@ void ScInterpreter::ScBase() } else nMinLen = 1; - double fBase = SolarMath::ApproxFloor( GetDouble() ); - double fVal = SolarMath::ApproxFloor( GetDouble() ); + double fBase = ::rtl::math::approxFloor( GetDouble() ); + double fVal = ::rtl::math::approxFloor( GetDouble() ); double fChars = ((fVal > 0.0 && fBase > 0.0) ? (ceil( log( fVal ) / log( fBase ) ) + 2.0) : 2.0); @@ -1914,21 +1914,21 @@ void ScInterpreter::ScBase() while ( fVal && p > pBuf ) { //! mit fmod Rundungsfehler ab 2**48 -// double fDig = SolarMath::ApproxFloor( fmod( fVal, fBase ) ); +// double fDig = ::rtl::math::approxFloor( fmod( fVal, fBase ) ); // so ist es etwas besser - double fInt = SolarMath::ApproxFloor( fVal / fBase ); + double fInt = ::rtl::math::approxFloor( fVal / fBase ); double fMult = fInt * fBase; #ifdef DEBUG // #53943# =BASIS(1e308;36) => GPF mit - // nDig = (size_t) SolarMath::ApproxFloor( fVal - fMult ); + // nDig = (size_t) ::rtl::math::approxFloor( fVal - fMult ); // trotz vorheriger Pruefung ob fVal >= fMult double fDebug1 = fVal - fMult; // fVal := 7,5975311883090e+290 // fMult := 7,5975311883090e+290 // fDebug1 := 1,3848924157003e+275 <- RoundOff-Error - // fVal != fMult, aber: SolarMath::ApproxEqual( fVal, fMult ) == TRUE - double fDebug2 = SolarMath::ApproxSub( fVal, fMult ); - // und SolarMath::ApproxSub( fVal, fMult ) == 0 + // fVal != fMult, aber: ::rtl::math::approxEqual( fVal, fMult ) == TRUE + double fDebug2 = ::rtl::math::approxSub( fVal, fMult ); + // und ::rtl::math::approxSub( fVal, fMult ) == 0 double fDebug3 = ( fInt ? fVal / fInt : 0.0 ); // Nach dem strange fDebug1 und fVal < fMult ist eigentlich // fDebug2 == fBase, trotzdem wird das mit einem Vergleich @@ -1942,7 +1942,7 @@ void ScInterpreter::ScBase() } else { - double fDig = SolarMath::ApproxFloor( SolarMath::ApproxSub( fVal, fMult ) ); + double fDig = ::rtl::math::approxFloor( ::rtl::math::approxSub( fVal, fMult ) ); if ( bDirt ) { bDirt = FALSE; @@ -1983,7 +1983,7 @@ void ScInterpreter::ScDecimal() { // Text, Base if ( MustHaveParamCount( GetByte(), 2 ) ) { - double fBase = SolarMath::ApproxFloor( GetDouble() ); + double fBase = ::rtl::math::approxFloor( GetDouble() ); String aStr( GetString() ); if ( !nGlobalError && 2 <= fBase && fBase <= 36 ) { @@ -2064,8 +2064,8 @@ void ScInterpreter::ScRoman() BYTE nParamCount = GetByte(); if( MustHaveParamCount( nParamCount, 1, 2 ) ) { - double fMode = (nParamCount == 2) ? SolarMath::ApproxFloor( GetDouble() ) : 0.0; - double fVal = SolarMath::ApproxFloor( GetDouble() ); + double fMode = (nParamCount == 2) ? ::rtl::math::approxFloor( GetDouble() ) : 0.0; + double fVal = ::rtl::math::approxFloor( GetDouble() ); if( nGlobalError ) SetIllegalParameter(); else if( (fMode >= 0.0) && (fMode < 5.0) && (fVal >= 0.0) && (fVal < 4000.0) ) diff --git a/sc/source/core/tool/interpr3.cxx b/sc/source/core/tool/interpr3.cxx index 1ef06c51a018..246b84921e07 100644 --- a/sc/source/core/tool/interpr3.cxx +++ b/sc/source/core/tool/interpr3.cxx @@ -2,9 +2,9 @@ * * $RCSfile: interpr3.cxx,v $ * - * $Revision: 1.6 $ + * $Revision: 1.7 $ * - * last change: $Author: er $ $Date: 2001-09-06 13:36:03 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:16 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -240,7 +240,7 @@ double ScInterpreter::gauss(double x) double asympt[] = { -1.0, 1.0, -3.0, 15.0, -105.0 }; double xAbs = fabs(x); - USHORT xShort = (USHORT)SolarMath::ApproxFloor(xAbs); + USHORT xShort = (USHORT)::rtl::math::approxFloor(xAbs); double nVal = 0.0; if (xShort == 0) nVal = taylor(t0, 11, (xAbs * xAbs)) * xAbs; @@ -285,7 +285,7 @@ double ScInterpreter::gaussinv(double x) double ScInterpreter::Fakultaet(double x) { - x = SolarMath::ApproxFloor(x); + x = ::rtl::math::approxFloor(x); if (x < 0.0) return 0.0; else if (x == 0.0) @@ -311,7 +311,7 @@ double ScInterpreter::Fakultaet(double x) double ScInterpreter::BinomKoeff(double n, double k) { double nVal = 0.0; - k = SolarMath::ApproxFloor(k); + k = ::rtl::math::approxFloor(k); if (n < k) nVal = 0.0; else if (k == 0.0) @@ -377,7 +377,7 @@ double ScInterpreter::GetGamma(double x) double G = GammaHelp(x, bReflect); G = pow(x+5.5,x+0.5)*G/exp(x+5.5); if (bReflect) - G = F_PI*x/(G*SolarMath::Sin(F_PI*x)); + G = F_PI*x/(G*::rtl::math::sin(F_PI*x)); return G; } @@ -387,7 +387,7 @@ double ScInterpreter::GetLogGamma(double x) double G = GammaHelp(x, bReflect); G = (x+0.5)*log(x+5.5)+log(G)-(x+5.5); if (bReflect) - G = log(F_PI*x)-G-log(SolarMath::Sin(F_PI*x)); + G = log(F_PI*x)-G-log(::rtl::math::sin(F_PI*x)); return G; } @@ -615,8 +615,8 @@ void ScInterpreter::ScKombin() { if ( MustHaveParamCount( GetByte(), 2 ) ) { - double k = SolarMath::ApproxFloor(GetDouble()); - double n = SolarMath::ApproxFloor(GetDouble()); + double k = ::rtl::math::approxFloor(GetDouble()); + double n = ::rtl::math::approxFloor(GetDouble()); if (k < 0.0 || n < 0.0 || k > n) SetIllegalArgument(); else @@ -628,8 +628,8 @@ void ScInterpreter::ScKombin2() { if ( MustHaveParamCount( GetByte(), 2 ) ) { - double k = SolarMath::ApproxFloor(GetDouble()); - double n = SolarMath::ApproxFloor(GetDouble()); + double k = ::rtl::math::approxFloor(GetDouble()); + double n = ::rtl::math::approxFloor(GetDouble()); if (k < 0.0 || n < 0.0 || k > n) SetIllegalArgument(); else @@ -641,8 +641,8 @@ void ScInterpreter::ScVariationen() { if ( MustHaveParamCount( GetByte(), 2 ) ) { - double k = SolarMath::ApproxFloor(GetDouble()); - double n = SolarMath::ApproxFloor(GetDouble()); + double k = ::rtl::math::approxFloor(GetDouble()); + double n = ::rtl::math::approxFloor(GetDouble()); if (n < 0.0 || k < 0.0 || k > n) SetIllegalArgument(); else if (k == 0.0) @@ -661,8 +661,8 @@ void ScInterpreter::ScVariationen2() { if ( MustHaveParamCount( GetByte(), 2 ) ) { - double k = SolarMath::ApproxFloor(GetDouble()); - double n = SolarMath::ApproxFloor(GetDouble()); + double k = ::rtl::math::approxFloor(GetDouble()); + double n = ::rtl::math::approxFloor(GetDouble()); if (n < 0.0 || k < 0.0 || k > n) SetIllegalArgument(); else @@ -677,9 +677,9 @@ void ScInterpreter::ScB() return ; if (nParamCount == 3) { - double x = SolarMath::ApproxFloor(GetDouble()); + double x = ::rtl::math::approxFloor(GetDouble()); double p = GetDouble(); - double n = SolarMath::ApproxFloor(GetDouble()); + double n = ::rtl::math::approxFloor(GetDouble()); if (n < 0.0 || x < 0.0 || x > n || p < 0.0 || p > 1.0) SetIllegalArgument(); else @@ -797,8 +797,8 @@ void ScInterpreter::ScBinomDist() { double kum = GetDouble(); // 0 oder 1 double p = GetDouble(); // p - double n = SolarMath::ApproxFloor(GetDouble()); // n - double x = SolarMath::ApproxFloor(GetDouble()); // x + double n = ::rtl::math::approxFloor(GetDouble()); // n + double x = ::rtl::math::approxFloor(GetDouble()); // x double fFactor, q, fSum; if (n < 0.0 || x < 0.0 || x > n || p < 0.0 || p > 1.0) SetIllegalArgument(); @@ -877,7 +877,7 @@ void ScInterpreter::ScCritBinom() { double alpha = GetDouble(); // alpha double p = GetDouble(); // p - double n = SolarMath::ApproxFloor(GetDouble()); + double n = ::rtl::math::approxFloor(GetDouble()); if (n < 0.0 || alpha <= 0.0 || alpha >= 1.0 || p < 0.0 || p > 1.0) SetIllegalArgument(); else @@ -1000,8 +1000,8 @@ void ScInterpreter::ScTDist() { if ( !MustHaveParamCount( GetByte(), 3 ) ) return; - double fFlag = SolarMath::ApproxFloor(GetDouble()); - double fDF = SolarMath::ApproxFloor(GetDouble()); + double fFlag = ::rtl::math::approxFloor(GetDouble()); + double fDF = ::rtl::math::approxFloor(GetDouble()); double T = GetDouble(); if (fDF < 1.0 || T < 0.0 || (fFlag != 1.0 && fFlag != 2.0) ) { @@ -1019,8 +1019,8 @@ void ScInterpreter::ScFDist() { if ( !MustHaveParamCount( GetByte(), 3 ) ) return; - double fF2 = SolarMath::ApproxFloor(GetDouble()); - double fF1 = SolarMath::ApproxFloor(GetDouble()); + double fF2 = ::rtl::math::approxFloor(GetDouble()); + double fF1 = ::rtl::math::approxFloor(GetDouble()); double fF = GetDouble(); if (fF < 0.0 || fF1 < 1.0 || fF2 < 1.0 || fF1 >= 1.0E10 || fF2 >= 1.0E10) { @@ -1034,7 +1034,7 @@ void ScInterpreter::ScChiDist() { if ( !MustHaveParamCount( GetByte(), 2 ) ) return; - double fDF = SolarMath::ApproxFloor(GetDouble()); + double fDF = ::rtl::math::approxFloor(GetDouble()); double fChi = GetDouble(); if (fDF < 1.0 || fDF >= 1.0E5 || fChi < 0.0 ) { @@ -1068,7 +1068,7 @@ void ScInterpreter::ScPoissonDist() { double kum = GetDouble(); // 0 oder 1 double lambda = GetDouble(); // Mittelwert - double x = SolarMath::ApproxFloor(GetDouble()); // x + double x = ::rtl::math::approxFloor(GetDouble()); // x if (lambda < 0.0 || x < 0.0) SetIllegalArgument(); else if (kum == 0.0) // Dichte @@ -1103,10 +1103,10 @@ void ScInterpreter::ScHypGeomDist() { if ( MustHaveParamCount( GetByte(), 4 ) ) { - double N = SolarMath::ApproxFloor(GetDouble()); - double M = SolarMath::ApproxFloor(GetDouble()); - double n = SolarMath::ApproxFloor(GetDouble()); - double x = SolarMath::ApproxFloor(GetDouble()); + double N = ::rtl::math::approxFloor(GetDouble()); + double M = ::rtl::math::approxFloor(GetDouble()); + double n = ::rtl::math::approxFloor(GetDouble()); + double x = ::rtl::math::approxFloor(GetDouble()); if( (x < 0.0) || (n < x) || (M < x) || (N < n) || (N < M) || (x < n - N + M) ) { @@ -1311,7 +1311,7 @@ void ScInterpreter::ScTInv() { if ( !MustHaveParamCount( GetByte(), 2 ) ) return; - double fDF = SolarMath::ApproxFloor(GetDouble()); + double fDF = ::rtl::math::approxFloor(GetDouble()); double fP = GetDouble(); if (fDF < 1.0 || fDF >= 1.0E5 || fP <= 0.0 || fP > 1.0 ) { @@ -1343,8 +1343,8 @@ void ScInterpreter::ScFInv() { if ( !MustHaveParamCount( GetByte(), 3 ) ) return; - double fF2 = SolarMath::ApproxFloor(GetDouble()); - double fF1 = SolarMath::ApproxFloor(GetDouble()); + double fF2 = ::rtl::math::approxFloor(GetDouble()); + double fF1 = ::rtl::math::approxFloor(GetDouble()); double fP = GetDouble(); if (fP <= 0.0 || fF1 < 1.0 || fF2 < 1.0 || fF1 >= 1.0E10 || fF2 >= 1.0E10 || fP > 1.0) { @@ -1376,7 +1376,7 @@ void ScInterpreter::ScChiInv() { if ( !MustHaveParamCount( GetByte(), 2 ) ) return; - double fDF = SolarMath::ApproxFloor(GetDouble()); + double fDF = ::rtl::math::approxFloor(GetDouble()); double fP = GetDouble(); if (fDF < 1.0 || fDF >= 1.0E5 || fP <= 0.0 || fP > 1.0 ) { @@ -1398,7 +1398,7 @@ void ScInterpreter::ScConfidence() { if ( MustHaveParamCount( GetByte(), 3 ) ) { - double n = SolarMath::ApproxFloor(GetDouble()); + double n = ::rtl::math::approxFloor(GetDouble()); double sigma = GetDouble(); double alpha = GetDouble(); if (sigma <= 0.0 || alpha <= 0.0 || alpha >= 1.0 || n < 1.0) @@ -1522,8 +1522,8 @@ void ScInterpreter::ScTTest() { if ( !MustHaveParamCount( GetByte(), 4 ) ) return; - double fTyp = SolarMath::ApproxFloor(GetDouble()); - double fAnz = SolarMath::ApproxFloor(GetDouble()); + double fTyp = ::rtl::math::approxFloor(GetDouble()); + double fAnz = ::rtl::math::approxFloor(GetDouble()); if (fAnz != 1.0 && fAnz != 2.0) { SetIllegalArgument(); @@ -1678,8 +1678,8 @@ void ScInterpreter::ScTTest() } fT = fabs(fSum1/fCount1 - fSum2/fCount2)/sqrt(fS1+fS2); double c = fS1/(fS1+fS2); -// s.u. fF = SolarMath::ApproxFloor(1.0/(c*c/(fCount1-1.0)+(1.0-c)*(1.0-c)/(fCount2-1.0))); -// fF = SolarMath::ApproxFloor((fS1+fS2)*(fS1+fS2)/(fS1*fS1/(fCount1-1.0) + fS2*fS2/(fCount2-1.0))); +// s.u. fF = ::rtl::math::approxFloor(1.0/(c*c/(fCount1-1.0)+(1.0-c)*(1.0-c)/(fCount2-1.0))); +// fF = ::rtl::math::approxFloor((fS1+fS2)*(fS1+fS2)/(fS1*fS1/(fCount1-1.0) + fS2*fS2/(fCount2-1.0))); // GetTDist wird mit GetBetaDist berechnet und kommt auch mit nicht ganzzahligen // Freiheitsgraden klar. Dann stimmt das Ergebnis auch mit Excel ueberein (#52406#): @@ -2469,8 +2469,8 @@ void ScInterpreter::ScPercentile() PushDouble(pSArray[0]); else { - ULONG nIndex = (ULONG)SolarMath::ApproxFloor(alpha*(nSize-1)); - double fDiff = alpha*(nSize-1) - SolarMath::ApproxFloor(alpha*(nSize-1)); + ULONG nIndex = (ULONG)::rtl::math::approxFloor(alpha*(nSize-1)); + double fDiff = alpha*(nSize-1) - ::rtl::math::approxFloor(alpha*(nSize-1)); DBG_ASSERT(nIndex >= 0 && nIndex < nSize, "ScPercentile: falscher Index (1)"); if (fDiff == 0.0) PushDouble(pSArray[nIndex]); @@ -2496,7 +2496,7 @@ void ScInterpreter::ScQuartile() { if ( !MustHaveParamCount( GetByte(), 2 ) ) return; - double fFlag = SolarMath::ApproxFloor(GetDouble()); + double fFlag = ::rtl::math::approxFloor(GetDouble()); if (fFlag < 0.0 || fFlag > 4.0) { SetIllegalArgument(); @@ -2522,8 +2522,8 @@ void ScInterpreter::ScQuartile() PushDouble(pSArray[0]); else if (fFlag == 1.0) { - ULONG nIndex = (ULONG)SolarMath::ApproxFloor(0.25*(nSize-1)); - double fDiff = 0.25*(nSize-1) - SolarMath::ApproxFloor(0.25*(nSize-1)); + ULONG nIndex = (ULONG)::rtl::math::approxFloor(0.25*(nSize-1)); + double fDiff = 0.25*(nSize-1) - ::rtl::math::approxFloor(0.25*(nSize-1)); DBG_ASSERT(nIndex >= 0 && nIndex < nSize, "ScQuartile: falscher Index (1)"); if (fDiff == 0.0) PushDouble(pSArray[nIndex]); @@ -2543,8 +2543,8 @@ void ScInterpreter::ScQuartile() } else if (fFlag == 3.0) { - ULONG nIndex = (ULONG)SolarMath::ApproxFloor(0.75*(nSize-1)); - double fDiff = 0.75*(nSize-1) - SolarMath::ApproxFloor(0.75*(nSize-1)); + ULONG nIndex = (ULONG)::rtl::math::approxFloor(0.75*(nSize-1)); + double fDiff = 0.75*(nSize-1) - ::rtl::math::approxFloor(0.75*(nSize-1)); DBG_ASSERT(nIndex >= 0 && nIndex < nSize, "ScQuartile: falscher Index (3)"); if (fDiff == 0.0) PushDouble(pSArray[nIndex]); @@ -2631,7 +2631,7 @@ void ScInterpreter::ScLarge() return; double* pSortArray = NULL; ULONG nSize = 0; - ULONG k = (ULONG) SolarMath::ApproxFloor(GetDouble()); + ULONG k = (ULONG) ::rtl::math::approxFloor(GetDouble()); if (k <= 0) { SetIllegalArgument(); @@ -2681,7 +2681,7 @@ void ScInterpreter::ScSmall() return; double* pSortArray = NULL; ULONG nSize = 0; - ULONG k = (ULONG) SolarMath::ApproxFloor(GetDouble()); + ULONG k = (ULONG) ::rtl::math::approxFloor(GetDouble()); if (k <= 0) { SetIllegalArgument(); @@ -2734,7 +2734,7 @@ void ScInterpreter::ScPercentrank() double fPrec; if (nParamCount == 3) { - fPrec = SolarMath::ApproxFloor(GetDouble()); + fPrec = ::rtl::math::approxFloor(GetDouble()); if (fPrec < 1.0) { SetIllegalArgument(); @@ -2833,7 +2833,7 @@ void ScInterpreter::ScTrimMean() #else double* pSArray = pSortArray; #endif - ULONG nIndex = (ULONG) SolarMath::ApproxFloor(alpha*(double)nSize); + ULONG nIndex = (ULONG) ::rtl::math::approxFloor(alpha*(double)nSize); if (nIndex % 2 != 0) nIndex--; nIndex /= 2; diff --git a/sc/source/core/tool/interpr4.cxx b/sc/source/core/tool/interpr4.cxx index 540f0b25fb21..c816bf9c100c 100644 --- a/sc/source/core/tool/interpr4.cxx +++ b/sc/source/core/tool/interpr4.cxx @@ -2,9 +2,9 @@ * * $RCSfile: interpr4.cxx,v $ * - * $Revision: 1.23 $ + * $Revision: 1.24 $ * - * last change: $Author: er $ $Date: 2002-12-06 17:25:50 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:17 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -124,7 +124,6 @@ using namespace com::sun::star; #include "scmatrix.hxx" #include "adiasync.hxx" #include "sc.hrc" -#include "scdll.hxx" // ScLibSignalFunc #include "cellsuno.hxx" #include "optuno.hxx" #include "rangeseq.hxx" @@ -140,105 +139,10 @@ extern BOOL bOderSo; // in GLOBAL.CXX USHORT ScInterpreter::nGlobalError = 0; // fuer matherr -#if SOMA_FPSIGNAL_JUMP -jmp_buf* ScInterpreter::pJumpBuf = NULL; // fuer die mySignal-Funktion -ScLibSignalFunc ScInterpreter::pSignalFunc = NULL; // signal() Wrapper der App -#endif - -TabOpList ScInterpreter::aTableOpList; #if SC_SPEW_ENABLED ScSpew ScInterpreter::theSpew; #endif -//------------------------------------------------------- - -#if SOMA_FPSIGNAL_JUMP - -#if ( defined (MSC) && defined (WIN) && ! ( defined (WNT) ) ) -extern "C" int _matherr(struct _exception *except); -#elif defined (OS2) && !defined( WTC ) -extern "C" int _matherr(struct exception *except); -#elif defined (OS2) && defined( WTC ) -extern "C" double _matherr(struct exception *except); -#elif defined (LINUX) -extern "C" int matherr(struct __exception *except); -#elif defined (UNX) && !defined (LINUX) -extern "C" int matherr(struct exception *except); -#endif - -#ifndef _UNDERFLOW -#define _UNDERFLOW UNDERFLOW -#endif - -#if ( defined (MSC) && defined (WIN) && ! ( defined (WNT) ) ) - - -int _matherr(struct _exception *except) -{ - if( except->type == _UNDERFLOW ) - except->retval = 0.0; - else - { - ScInterpreter::SetError(errIllegalFPOperation); - except->retval = 1.0; - } - return 1; -}; - -#elif defined (OS2) - - -#ifndef WTC -int _matherr(struct exception *except) -#else -double _matherr(struct exception *except) -#endif -{ - if( except->type == UNDERFLOW ) - except->retval = 0.0; - else - { - ScInterpreter::SetError(errIllegalFPOperation); - except->retval = 1.0; - } - return 1; -}; -#elif ( defined UNX && !defined LINUX ) - - -int matherr(struct exception *except) -{ - if( except->type == UNDERFLOW ) - except->retval = 0.0; - else - { - ScInterpreter::SetError(errIllegalFPOperation); - except->retval = 1.0; - } - return 1; -}; -#endif - -#endif - - -void ScInterpreter::MySigFunc(int sig) -{ -#if SOMA_FPSIGNAL_JUMP - SOMA_FPRESET(); // reinitialize math package - longjmp(*ScInterpreter::pJumpBuf,1); -#endif -} - -/* inline: - -void ScInterpreter::SetError(USHORT nError) -{ - if( nError && !nGlobalError ) - nGlobalError = nError; -} -*/ - //------------------------------------------------------------------------- // Funktionen fr den Zugriff auf das Document //------------------------------------------------------------------------- @@ -246,50 +150,47 @@ void ScInterpreter::SetError(USHORT nError) void ScInterpreter::ReplaceCell( ScAddress& rPos ) { - USHORT nCol, nRow, nTab; - nCol = rPos.Col(); - nRow = rPos.Row(); - nTab = rPos.Tab(); - USHORT* pTOp = aTableOpList.First(); + ScInterpreterTableOpParams* pTOp = pDok->aTableOpList.First(); while (pTOp) { - if (nCol == pTOp[0] && nRow == pTOp[1] && nTab == pTOp[2]) + if ( rPos == pTOp->aOld1 ) { - rPos.Set( pTOp[3], pTOp[4], pTOp[5] ); + rPos = pTOp->aNew1; return ; } - else if (nCol == pTOp[6] && nRow == pTOp[7] && nTab == pTOp[8]) + else if ( rPos == pTOp->aOld2 ) { - rPos.Set( pTOp[9], pTOp[10], pTOp[11] ); + rPos = pTOp->aNew2; return ; } else - pTOp = aTableOpList.Next(); + pTOp = pDok->aTableOpList.Next(); } } void ScInterpreter::ReplaceCell( USHORT& rCol, USHORT& rRow, USHORT& rTab ) { - USHORT* pTOp = aTableOpList.First(); + ScAddress aPos( rCol, rRow, rTab ); + ScInterpreterTableOpParams* pTOp = pDok->aTableOpList.First(); while (pTOp) { - if (rCol == pTOp[0] && rRow == pTOp[1] && rTab == pTOp[2]) + if ( aPos == pTOp->aOld1 ) { - rCol = pTOp[3]; - rRow = pTOp[4]; - rTab = pTOp[5]; + rCol = pTOp->aNew1.Col(); + rRow = pTOp->aNew1.Row(); + rTab = pTOp->aNew1.Tab(); return ; } - else if (rCol == pTOp[6] && rRow == pTOp[7] && rTab == pTOp[8]) + else if ( aPos == pTOp->aOld2 ) { - rCol = pTOp[9]; - rRow = pTOp[10]; - rTab = pTOp[11]; + rCol = pTOp->aNew2.Col(); + rRow = pTOp->aNew2.Row(); + rTab = pTOp->aNew2.Tab(); return ; } else - pTOp = aTableOpList.Next(); + pTOp = pDok->aTableOpList.Next(); } } @@ -300,16 +201,14 @@ BOOL ScInterpreter::IsTableOpInRange( const ScRange& rRange ) return FALSE; // not considered to be a range in TableOp sense // we can't replace a single cell in a range - USHORT* pTOp = aTableOpList.First(); + ScInterpreterTableOpParams* pTOp = pDok->aTableOpList.First(); while (pTOp) { - ScAddress aAdr( pTOp[0], pTOp[1], pTOp[2] ); - if ( rRange.In( aAdr ) ) + if ( rRange.In( pTOp->aOld1 ) ) return TRUE; - aAdr.Set( pTOp[6], pTOp[7], pTOp[8] ); - if ( rRange.In( aAdr ) ) + if ( rRange.In( pTOp->aOld2 ) ) return TRUE; - pTOp = aTableOpList.Next(); + pTOp = pDok->aTableOpList.Next(); } return FALSE; } @@ -954,7 +853,7 @@ void ScInterpreter::PopSingleRef(USHORT& rCol, USHORT &rRow, USHORT& rTab) SetError( errNoRef ), rRow = 0; if( rTab < 0 || rTab >= pDok->GetTableCount() || rRef.IsTabDeleted() ) SetError( errNoRef ), rTab = 0; - if ( aTableOpList.Count() > 0 ) + if ( pDok->aTableOpList.Count() > 0 ) ReplaceCell( rCol, rRow, rTab ); return; } @@ -996,7 +895,7 @@ void ScInterpreter::PopSingleRef( ScAddress& rAdr ) if( nTab < 0 || nTab >= pDok->GetTableCount() || rRef.IsTabDeleted() ) SetError( errNoRef ), nTab = 0; rAdr.Set( (USHORT)nCol, (USHORT)nRow, (USHORT)nTab ); - if ( aTableOpList.Count() > 0 ) + if ( pDok->aTableOpList.Count() > 0 ) ReplaceCell( rAdr ); return; } @@ -1063,7 +962,7 @@ void ScInterpreter::PopDoubleRef(USHORT& rCol1, USHORT &rRow1, USHORT& rTab1, if( rTab2 < 0 || rTab2 >= nMaxTab || rRef.IsTabDeleted() ) SetError( errNoRef ), rTab2 = 0; } - if ( aTableOpList.Count() > 0 && !bDontCheckForTableOp ) + if ( pDok->aTableOpList.Count() > 0 && !bDontCheckForTableOp ) { ScRange aRange( rCol1, rRow1, rTab1, rCol2, rRow2, rTab2 ); if ( IsTableOpInRange( aRange ) ) @@ -1135,7 +1034,7 @@ void ScInterpreter::PopDoubleRef( ScRange& rRange, BOOL bDontCheckForTableOp ) SetError( errNoRef ), nTab = 0; rRange.aEnd.Set( (USHORT)nCol, (USHORT)nRow, (USHORT)nTab ); } - if ( aTableOpList.Count() > 0 && !bDontCheckForTableOp ) + if ( pDok->aTableOpList.Count() > 0 && !bDontCheckForTableOp ) { if ( IsTableOpInRange( rRange ) ) SetError( errIllegalParameter ); @@ -1214,16 +1113,14 @@ ScMatrix* ScInterpreter::PopMatrix() void ScInterpreter::PushDouble(double nVal) { -#if !SOMA_FPSIGNAL_JUMP - if (!SOMA_FINITE(nVal)) + if (!::rtl::math::isFinite(nVal)) { - if ( SolarMath::IsNAN( nVal ) ) + if ( ::rtl::math::isNan( nVal ) ) SetError(errNoValue); else SetError(errIllegalFPOperation); nVal = 0.0; } -#endif PushTempToken( new ScDoubleToken( nVal ) ); } @@ -1518,7 +1415,8 @@ void ScInterpreter::ScDBGet() { USHORT nTab; ScQueryParam aQueryParam; - if (GetDBParams(nTab, aQueryParam)) + BOOL bMissingField = FALSE; + if (GetDBParams( nTab, aQueryParam, bMissingField)) { ScBaseCell* pCell; ScQueryCellIterator aCellIter(pDok, nTab, aQueryParam); @@ -1816,8 +1714,8 @@ void ScInterpreter::ScExternal() case SC_ADDINARG_INTEGER: { double fVal = GetDouble(); - double fInt = (fVal >= 0.0) ? SolarMath::ApproxFloor( fVal ) : - SolarMath::ApproxCeil( fVal ); + double fInt = (fVal >= 0.0) ? ::rtl::math::approxFloor( fVal ) : + ::rtl::math::approxCeil( fVal ); if ( fInt >= LONG_MIN && fInt <= LONG_MAX ) aParam <<= (INT32)fInt; else @@ -1841,8 +1739,8 @@ void ScInterpreter::ScExternal() case svSingleRef: { double fVal = GetDouble(); - double fInt = (fVal >= 0.0) ? SolarMath::ApproxFloor( fVal ) : - SolarMath::ApproxCeil( fVal ); + double fInt = (fVal >= 0.0) ? ::rtl::math::approxFloor( fVal ) : + ::rtl::math::approxCeil( fVal ); if ( fInt >= LONG_MIN && fInt <= LONG_MAX ) { INT32 nIntVal = (long)fInt; @@ -2429,64 +2327,72 @@ void ScInterpreter::ScTableOp() SetIllegalParameter(); return; } - ScAddress aFAdr; - USHORT nOCol1, nORow1, nOTab1, nNCol1, nNRow1, nNTab1; - USHORT nOCol2, nORow2, nOTab2, nNCol2, nNRow2, nNTab2; - ScRange aRange2; + ScInterpreterTableOpParams* pTableOp = new ScInterpreterTableOpParams; if (nParamCount == 5) { - PopSingleRef(nNCol2, nNRow2, nNTab2); - PopSingleRef(nOCol2, nORow2, nOTab2); - aRange2.aStart.Set( nOCol2, nORow2, nOTab2 ); - aRange2.aEnd = aRange2.aStart; + PopSingleRef( pTableOp->aNew2 ); + PopSingleRef( pTableOp->aOld2 ); } - else - nOCol2 = MAXCOL+1; - PopSingleRef(nNCol1, nNRow1, nNTab1); - PopSingleRef(nOCol1, nORow1, nOTab1); - ScRange aRange1( nOCol1, nORow1, nOTab1 ); - PopSingleRef( aFAdr ); - pTableOp = new USHORT[12]; - pTableOp[0] = nOCol1; - pTableOp[1] = nORow1; - pTableOp[2] = nOTab1; - pTableOp[3] = nNCol1; - pTableOp[4] = nNRow1; - pTableOp[5] = nNTab1; - pTableOp[6] = nOCol2; - pTableOp[7] = nORow2; - pTableOp[8] = nOTab2; - pTableOp[9] = nNCol2; - pTableOp[10] = nNRow2; - pTableOp[11] = nNTab2; - aTableOpList.Insert(pTableOp); + PopSingleRef( pTableOp->aNew1 ); + PopSingleRef( pTableOp->aOld1 ); + PopSingleRef( pTableOp->aFormulaPos ); + pTableOp->bValid = TRUE; + pDok->aTableOpList.Insert( pTableOp ); pDok->IncInterpreterTableOpLevel(); - pDok->SetTableOpDirty( aRange1 ); - if ( nOCol2 != MAXCOL+1 ) - pDok->SetTableOpDirty( aRange2 ); - ScBaseCell* pFCell = pDok->GetCell( aFAdr ); - if (pFCell && pFCell->GetCellType() == CELLTYPE_FORMULA) + BOOL bReuseLastParams = (pDok->aLastTableOpParams == *pTableOp); + if ( bReuseLastParams ) + { + pTableOp->aNotifiedFormulaPos = pDok->aLastTableOpParams.aNotifiedFormulaPos; + pTableOp->bRefresh = TRUE; + for ( ::std::vector< ScAddress >::const_iterator iBroadcast( + pTableOp->aNotifiedFormulaPos.begin() ); + iBroadcast != pTableOp->aNotifiedFormulaPos.end(); + ++iBroadcast ) + { // emulate broadcast and indirectly collect cell pointers + ScBaseCell* pCell = pDok->GetCell( *iBroadcast ); + if ( pCell && pCell->GetCellType() == CELLTYPE_FORMULA ) + ((ScFormulaCell*)pCell)->SetTableOpDirty(); + } + } + else + { // broadcast and indirectly collect cell pointers and positions + pDok->SetTableOpDirty( pTableOp->aOld1 ); + if ( nParamCount == 5 ) + pDok->SetTableOpDirty( pTableOp->aOld2 ); + } + pTableOp->bCollectNotifications = FALSE; + + ScBaseCell* pFCell = pDok->GetCell( pTableOp->aFormulaPos ); + if ( pFCell && pFCell->GetCellType() == CELLTYPE_FORMULA ) ((ScFormulaCell*)pFCell)->SetDirtyVar(); - if (HasCellValueData(pFCell)) - PushDouble(GetCellValue( aFAdr, pFCell )); + if ( HasCellValueData( pFCell ) ) + PushDouble( GetCellValue( pTableOp->aFormulaPos, pFCell )); else { String aCellString; - GetCellString(aCellString, pFCell); - PushString(aCellString); + GetCellString( aCellString, pFCell ); + PushString( aCellString ); } - if (pTableOp) + + pDok->aTableOpList.Remove( pTableOp ); + // set dirty again once more to be able to recalculate original + for ( ::std::vector< ScFormulaCell* >::const_iterator iBroadcast( + pTableOp->aNotifiedFormulaCells.begin() ); + iBroadcast != pTableOp->aNotifiedFormulaCells.end(); + ++iBroadcast ) { - aTableOpList.Remove(pTableOp); - delete [] pTableOp; - pTableOp = NULL; + (*iBroadcast)->SetTableOpDirty(); } - pDok->SetTableOpDirty( aRange1 ); - if ( nOCol2 != MAXCOL+1 ) - pDok->SetTableOpDirty( aRange2 ); - if (pFCell && pFCell->GetCellType() == CELLTYPE_FORMULA) + if ( !bReuseLastParams ) + { + pTableOp->aNotifiedFormulaCells.clear(); + pDok->aLastTableOpParams = *pTableOp; + } + delete pTableOp; + + if ( pFCell && pFCell->GetCellType() == CELLTYPE_FORMULA ) { ((ScFormulaCell*)pFCell)->SetDirtyVar(); ((ScFormulaCell*)pFCell)->GetErrCode(); // recalculate original @@ -2495,6 +2401,7 @@ void ScInterpreter::ScTableOp() pDok->DecInterpreterTableOpLevel(); } + /* void ScInterpreter::ScErrCell() @@ -2634,7 +2541,7 @@ void ScInterpreter::ScCalcTeam() { ShowTheTeam(); String aTeam( RTL_CONSTASCII_USTRINGPARAM( "Timm, Ballach, Rathke, Rentz, Nebel" ) ); - if ( (GetByte() == 1) && SolarMath::ApproxEqual( GetDouble(), 1996) ) + if ( (GetByte() == 1) && ::rtl::math::approxEqual( GetDouble(), 1996) ) aTeam.AppendAscii( " (a word with 'B': -Olk, -Nietsch, -Daeumling)" ); PushString( aTeam ); bShown = TRUE; @@ -2969,17 +2876,11 @@ StackVar ScInterpreter::Interpret() USHORT nErrorFunctionCount = 0; USHORT nStackBase; -#if SOMA_FPSIGNAL_JUMP - BOOL bIllegalFPOperationSignal = FALSE; - pLocalJumpBuf = pJumpBuf; - pJumpBuf = (jmp_buf*) new BYTE[sizeof(jmp_buf)]; -#endif nGlobError = nGlobalError; nGlobalError = 0; nMatCount = 0; bMatDel = FALSE; ppGlobSortArray = NULL; - pTableOp = NULL; nStackBase = sp = maxsp = 0; nRetFmtType = NUMBERFORMAT_UNDEFINED; nFuncFmtType = NUMBERFORMAT_UNDEFINED; @@ -2990,10 +2891,13 @@ StackVar ScInterpreter::Interpret() glSubTotal = FALSE; UINT16 nOldOpCode = ocStop; - SOMA_FPCONTROL(); // FP-Exceptions ein-/ausschalten -#if SOMA_FPSIGNAL_JUMP - ScSigCatchFunc pOldSigFunc = (pSignalFunc)( SC_SIGFPE, MySigFunc ); -#endif // SOMA_FPSIGNAL_JUMP + // Once upon a time we used to have FP exceptions on, and there was a + // Windows printer driver that kept switching off exceptions, so we had to + // switch them back on again every time. Who knows if there isn't a driver + // that keeps switching exceptions on, now that we run with exceptions off, + // so reassure exceptions are really off. + SAL_MATH_FPEXCEPTIONS_OFF(); + aCode.Reset(); while( ( pCur = aCode.Next() ) != NULL && (!nGlobalError || nErrorFunction <= nErrorFunctionCount) ) @@ -3022,323 +2926,313 @@ StackVar ScInterpreter::Interpret() if ( nStackBase > sp ) nStackBase = sp; // underflow?!? -#if SOMA_FPSIGNAL_JUMP - if (setjmp(*pJumpBuf)) + switch( eOp ) { - bIllegalFPOperationSignal = TRUE; - SetError( errIllegalFPOperation ); + case ocSep: + case ocClose: // vom Compiler gepusht + case ocMissing : ScMissing(); break; + case ocMacro : ScMacro(); break; + case ocDBArea : ScDBArea(); break; + case ocColRowNameAuto : ScColRowNameAuto(); break; +// gesondert case ocPush : Push( (ScToken&) *pCur ); break; + case ocIf : ScIfJump(); break; + case ocChose : ScChoseJump(); break; + case ocAdd : ScAdd(); break; + case ocSub : ScSub(); break; + case ocMul : ScMul(); break; + case ocDiv : ScDiv(); break; + case ocAmpersand : ScAmpersand(); break; + case ocPow : ScPow(); break; + case ocEqual : ScEqual(); break; + case ocNotEqual : ScNotEqual(); break; + case ocLess : ScLess(); break; + case ocGreater : ScGreater(); break; + case ocLessEqual : ScLessEqual(); break; + case ocGreaterEqual : ScGreaterEqual(); break; + case ocAnd : ScAnd(); break; + case ocOr : ScOr(); break; + case ocIntersect : ScIntersect(); break; + case ocNot : ScNot(); break; + case ocNegSub : + case ocNeg : ScNeg(); break; + case ocPercentSign : ScPercentSign(); break; + case ocPi : ScPi(); break; +// case ocDefPar : ScDefPar(); break; + case ocRandom : ScRandom(); break; + case ocTrue : ScTrue(); break; + case ocFalse : ScFalse(); break; + case ocGetActDate : ScGetActDate(); break; + case ocGetActTime : ScGetActTime(); break; + case ocNoValue : nGlobalError = NOVALUE; + PushInt(0); break; + case ocDeg : ScDeg(); break; + case ocRad : ScRad(); break; + case ocSin : ScSin(); break; + case ocCos : ScCos(); break; + case ocTan : ScTan(); break; + case ocCot : ScCot(); break; + case ocArcSin : ScArcSin(); break; + case ocArcCos : ScArcCos(); break; + case ocArcTan : ScArcTan(); break; + case ocArcCot : ScArcCot(); break; + case ocSinHyp : ScSinHyp(); break; + case ocCosHyp : ScCosHyp(); break; + case ocTanHyp : ScTanHyp(); break; + case ocCotHyp : ScCotHyp(); break; + case ocArcSinHyp : ScArcSinHyp(); break; + case ocArcCosHyp : ScArcCosHyp(); break; + case ocArcTanHyp : ScArcTanHyp(); break; + case ocArcCotHyp : ScArcCotHyp(); break; + case ocExp : ScExp(); break; + case ocLn : ScLn(); break; + case ocLog10 : ScLog10(); break; + case ocSqrt : ScSqrt(); break; + case ocFact : ScFact(); break; + case ocGetYear : ScGetYear(); break; + case ocGetMonth : ScGetMonth(); break; + case ocGetDay : ScGetDay(); break; + case ocGetDayOfWeek : ScGetDayOfWeek(); break; + case ocWeek : ScGetWeekOfYear(); break; + case ocEasterSunday : ScEasterSunday(); break; + case ocGetHour : ScGetHour(); break; + case ocGetMin : ScGetMin(); break; + case ocGetSec : ScGetSec(); break; + case ocPlusMinus : ScPlusMinus(); break; + case ocAbs : ScAbs(); break; + case ocInt : ScInt(); break; + case ocEven : ScEven(); break; + case ocOdd : ScOdd(); break; + case ocPhi : ScPhi(); break; + case ocGauss : ScGauss(); break; + case ocStdNormDist : ScStdNormDist(); break; + case ocFisher : ScFisher(); break; + case ocFisherInv : ScFisherInv(); break; + case ocIsEmpty : ScIsEmpty(); break; + case ocIsString : ScIsString(); break; + case ocIsNonString : ScIsNonString(); break; + case ocIsLogical : ScIsLogical(nOldOpCode); break; + case ocType : ScType(); break; + case ocCell : ScCell(); break; + case ocIsRef : ScIsRef(); break; + case ocIsValue : ScIsValue(); break; + case ocIsFormula : ScIsFormula(); break; + case ocFormula : ScFormula(); break; + case ocIsNV : ScIsNV(); break; + case ocIsErr : ScIsErr(); break; + case ocIsError : ScIsError(); break; + case ocIsEven : ScIsEven(); break; + case ocIsOdd : ScIsOdd(); break; + case ocN : ScN(); break; + case ocGetDateValue : ScGetDateValue(); break; + case ocGetTimeValue : ScGetTimeValue(); break; + case ocCode : ScCode(); break; + case ocTrim : ScTrim(); break; + case ocUpper : ScUpper(); break; + case ocPropper : ScPropper(); break; + case ocLower : ScLower(); break; + case ocLen : ScLen(); break; + case ocT : ScT(); break; + case ocClean : ScClean(); break; + case ocValue : ScValue(); break; + case ocChar : ScChar(); break; + case ocArcTan2 : ScArcTan2(); break; + case ocMod : ScMod(); break; + case ocPower : ScPower(); break; + case ocRound : ScRound(); break; + case ocRoundUp : ScRoundUp(); break; + case ocTrunc : + case ocRoundDown : ScRoundDown(); break; + case ocCeil : ScCeil(); break; + case ocFloor : ScFloor(); break; + case ocSumProduct : ScSumProduct(); break; + case ocSumSQ : ScSumSQ(); break; + case ocSumX2MY2 : ScSumX2MY2(); break; + case ocSumX2DY2 : ScSumX2DY2(); break; + case ocSumXMY2 : ScSumXMY2(); break; + case ocLog : ScLog(); break; + case ocGGT : ScGGT(); break; + case ocKGV : ScKGV(); break; + case ocGetDate : ScGetDate(); break; + case ocGetTime : ScGetTime(); break; + case ocGetDiffDate : ScGetDiffDate(); break; + case ocGetDiffDate360 : ScGetDiffDate360(); break; + case ocMin : ScMin( FALSE ); break; + case ocMinA : ScMin( TRUE ); break; + case ocMax : ScMax( FALSE ); break; + case ocMaxA : ScMax( TRUE ); break; + case ocSum : ScSum(); break; + case ocProduct : ScProduct(); break; + case ocNBW : ScNBW(); break; + case ocIKV : ScIKV(); break; + case ocMIRR : ScMIRR(); break; + case ocISPMT : ScISPMT(); break; + case ocAverage : ScAverage( FALSE ); break; + case ocAverageA : ScAverage( TRUE ); break; + case ocCount : ScCount(); break; + case ocCount2 : ScCount2(); break; + case ocVar : ScVar( FALSE ); break; + case ocVarA : ScVar( TRUE ); break; + case ocVarP : ScVarP( FALSE ); break; + case ocVarPA : ScVarP( TRUE ); break; + case ocStDev : ScStDev( FALSE ); break; + case ocStDevA : ScStDev( TRUE ); break; + case ocStDevP : ScStDevP( FALSE ); break; + case ocStDevPA : ScStDevP( TRUE ); break; + case ocBW : ScBW(); break; + case ocDIA : ScDIA(); break; + case ocGDA : ScGDA(); break; + case ocGDA2 : ScGDA2(); break; + case ocVBD : ScVDB(); break; + case ocLaufz : ScLaufz(); break; + case ocLIA : ScLIA(); break; + case ocRMZ : ScRMZ(); break; + case ocColumns : ScColumns(); break; + case ocRows : ScRows(); break; + case ocTables : ScTables(); break; + case ocColumn : ScColumn(); break; + case ocRow : ScRow(); break; + case ocTable : ScTable(); break; + case ocZGZ : ScZGZ(); break; + case ocZW : ScZW(); break; + case ocZZR : ScZZR(); break; + case ocZins : ScZins(); break; + case ocZinsZ : ScZinsZ(); break; + case ocKapz : ScKapz(); break; + case ocKumZinsZ : ScKumZinsZ(); break; + case ocKumKapZ : ScKumKapZ(); break; + case ocEffektiv : ScEffektiv(); break; + case ocNominal : ScNominal(); break; + case ocSubTotal : ScSubTotal(); break; + case ocDBSum : ScDBSum(); break; + case ocDBCount : ScDBCount(); break; + case ocDBCount2 : ScDBCount2(); break; + case ocDBAverage : ScDBAverage(); break; + case ocDBGet : ScDBGet(); break; + case ocDBMax : ScDBMax(); break; + case ocDBMin : ScDBMin(); break; + case ocDBProduct : ScDBProduct(); break; + case ocDBStdDev : ScDBStdDev(); break; + case ocDBStdDevP : ScDBStdDevP(); break; + case ocDBVar : ScDBVar(); break; + case ocDBVarP : ScDBVarP(); break; + case ocIndirect : ScIndirect(); break; + case ocAdress : ScAdress(); break; + case ocMatch : ScMatch(); break; + case ocCountEmptyCells : ScCountEmptyCells(); break; + case ocCountIf : ScCountIf(); break; + case ocSumIf : ScSumIf(); break; + case ocLookup : ScLookup(); break; + case ocVLookup : ScVLookup(); break; + case ocHLookup : ScHLookup(); break; + case ocIndex : ScIndex(); break; + case ocMultiArea : ScMultiArea(); break; + case ocOffset : ScOffset(); break; + case ocAreas : ScAreas(); break; + case ocCurrency : ScCurrency(); break; + case ocReplace : ScReplace(); break; + case ocFixed : ScFixed(); break; + case ocFind : ScFind(); break; + case ocExact : ScExact(); break; + case ocLeft : ScLeft(); break; + case ocRight : ScRight(); break; + case ocSearch : ScSearch(); break; + case ocMid : ScMid(); break; + case ocText : ScText(); break; + case ocSubstitute : ScSubstitute(); break; + case ocRept : ScRept(); break; + case ocConcat : ScConcat(); break; + case ocMatValue : ScMatValue(); break; + case ocMatrixUnit : ScEMat(); break; + case ocMatDet : ScMatDet(); break; + case ocMatInv : ScMatInv(); break; + case ocMatMult : ScMatMult(); break; + case ocMatTrans : ScMatTrans(); break; + case ocMatRef : ScMatRef(); break; + case ocBackSolver : ScBackSolver(); break; + case ocB : ScB(); break; + case ocNormDist : ScNormDist(); break; + case ocExpDist : ScExpDist(); break; + case ocBinomDist : ScBinomDist(); break; + case ocPoissonDist : ScPoissonDist(); break; + case ocKombin : ScKombin(); break; + case ocKombin2 : ScKombin2(); break; + case ocVariationen : ScVariationen(); break; + case ocVariationen2 : ScVariationen2(); break; + case ocHypGeomDist : ScHypGeomDist(); break; + case ocLogNormDist : ScLogNormDist(); break; + case ocTDist : ScTDist(); break; + case ocFDist : ScFDist(); break; + case ocChiDist : ScChiDist(); break; + case ocStandard : ScStandard(); break; + case ocAveDev : ScAveDev(); break; + case ocDevSq : ScDevSq(); break; + case ocKurt : ScKurt(); break; + case ocSchiefe : ScSkew(); break; + case ocModalValue : ScModalValue(); break; + case ocMedian : ScMedian(); break; + case ocGeoMean : ScGeoMean(); break; + case ocHarMean : ScHarMean(); break; + case ocWeibull : ScWeibull(); break; + case ocKritBinom : ScCritBinom(); break; + case ocNegBinomVert : ScNegBinomDist(); break; + case ocNoName : ScNoName(); break; + case ocZTest : ScZTest(); break; + case ocTTest : ScTTest(); break; + case ocFTest : ScFTest(); break; + case ocRank : ScRank(); break; + case ocPercentile : ScPercentile(); break; + case ocPercentrank : ScPercentrank(); break; + case ocLarge : ScLarge(); break; + case ocSmall : ScSmall(); break; + case ocFrequency : ScFrequency(); break; + case ocQuartile : ScQuartile(); break; + case ocNormInv : ScNormInv(); break; + case ocSNormInv : ScSNormInv(); break; + case ocConfidence : ScConfidence(); break; + case ocTrimMean : ScTrimMean(); break; + case ocProb : ScProbability(); break; + case ocCorrel : ScCorrel(); break; + case ocCovar : ScCovar(); break; + case ocPearson : ScPearson(); break; + case ocRSQ : ScRSQ(); break; + case ocSTEYX : ScSTEXY(); break; + case ocSlope : ScSlope(); break; + case ocIntercept : ScIntercept(); break; + case ocTrend : ScTrend(); break; + case ocGrowth : ScGrowth(); break; + case ocRGP : ScRGP(); break; + case ocRKP : ScRKP(); break; + case ocForecast : ScForecast(); break; + case ocGammaLn : ScLogGamma(); break; + case ocGammaDist : ScGammaDist(); break; + case ocGammaInv : ScGammaInv(); break; + case ocChiTest : ScChiTest(); break; + case ocChiInv : ScChiInv(); break; + case ocTInv : ScTInv(); break; + case ocFInv : ScFInv(); break; + case ocLogInv : ScLogNormInv(); break; + case ocBetaDist : ScBetaDist(); break; + case ocBetaInv : ScBetaInv(); break; + case ocExternal : ScExternal(); break; + case ocTableOp : ScTableOp(); break; +// case ocErrCell : ScErrCell(); break; + case ocStop : break; + case ocErrorType : ScErrorType(); break; + case ocCurrent : ScCurrent(); break; + case ocStyle : ScStyle(); break; + case ocDde : ScDde(); break; + case ocBase : ScBase(); break; + case ocDecimal : ScDecimal(); break; + case ocConvert : ScConvert(); break; + case ocRoman : ScRoman(); break; + case ocArabic : ScArabic(); break; + case ocAnswer : ScAnswer(); break; + case ocTeam : ScCalcTeam(); break; + case ocTTT : ScTTT(); break; + case ocSpew : ScSpewFunc(); break; + case ocGame : ScGame(); break; + default : SetError(errUnknownOpCode); PushInt(0); break; } - else -#endif - { - switch( eOp ) - { - case ocSep: - case ocClose: // vom Compiler gepusht - case ocMissing : ScMissing(); break; - case ocMacro : ScMacro(); break; - case ocDBArea : ScDBArea(); break; - case ocColRowNameAuto : ScColRowNameAuto(); break; -// gesondert case ocPush : Push( (ScToken&) *pCur ); break; - case ocIf : ScIfJump(); break; - case ocChose : ScChoseJump(); break; - case ocAdd : ScAdd(); break; - case ocSub : ScSub(); break; - case ocMul : ScMul(); break; - case ocDiv : ScDiv(); break; - case ocAmpersand : ScAmpersand(); break; - case ocPow : ScPow(); break; - case ocEqual : ScEqual(); break; - case ocNotEqual : ScNotEqual(); break; - case ocLess : ScLess(); break; - case ocGreater : ScGreater(); break; - case ocLessEqual : ScLessEqual(); break; - case ocGreaterEqual : ScGreaterEqual(); break; - case ocAnd : ScAnd(); break; - case ocOr : ScOr(); break; - case ocIntersect : ScIntersect(); break; - case ocNot : ScNot(); break; - case ocNegSub : - case ocNeg : ScNeg(); break; - case ocPercentSign : ScPercentSign(); break; - case ocPi : ScPi(); break; -// case ocDefPar : ScDefPar(); break; - case ocRandom : ScRandom(); break; - case ocTrue : ScTrue(); break; - case ocFalse : ScFalse(); break; - case ocGetActDate : ScGetActDate(); break; - case ocGetActTime : ScGetActTime(); break; - case ocNoValue : nGlobalError = NOVALUE; - PushInt(0); break; - case ocDeg : ScDeg(); break; - case ocRad : ScRad(); break; - case ocSin : ScSin(); break; - case ocCos : ScCos(); break; - case ocTan : ScTan(); break; - case ocCot : ScCot(); break; - case ocArcSin : ScArcSin(); break; - case ocArcCos : ScArcCos(); break; - case ocArcTan : ScArcTan(); break; - case ocArcCot : ScArcCot(); break; - case ocSinHyp : ScSinHyp(); break; - case ocCosHyp : ScCosHyp(); break; - case ocTanHyp : ScTanHyp(); break; - case ocCotHyp : ScCotHyp(); break; - case ocArcSinHyp : ScArcSinHyp(); break; - case ocArcCosHyp : ScArcCosHyp(); break; - case ocArcTanHyp : ScArcTanHyp(); break; - case ocArcCotHyp : ScArcCotHyp(); break; - case ocExp : ScExp(); break; - case ocLn : ScLn(); break; - case ocLog10 : ScLog10(); break; - case ocSqrt : ScSqrt(); break; - case ocFact : ScFact(); break; - case ocGetYear : ScGetYear(); break; - case ocGetMonth : ScGetMonth(); break; - case ocGetDay : ScGetDay(); break; - case ocGetDayOfWeek : ScGetDayOfWeek(); break; - case ocWeek : ScGetWeekOfYear(); break; - case ocEasterSunday : ScEasterSunday(); break; - case ocGetHour : ScGetHour(); break; - case ocGetMin : ScGetMin(); break; - case ocGetSec : ScGetSec(); break; - case ocPlusMinus : ScPlusMinus(); break; - case ocAbs : ScAbs(); break; - case ocInt : ScInt(); break; - case ocEven : ScEven(); break; - case ocOdd : ScOdd(); break; - case ocPhi : ScPhi(); break; - case ocGauss : ScGauss(); break; - case ocStdNormDist : ScStdNormDist(); break; - case ocFisher : ScFisher(); break; - case ocFisherInv : ScFisherInv(); break; - case ocIsEmpty : ScIsEmpty(); break; - case ocIsString : ScIsString(); break; - case ocIsNonString : ScIsNonString(); break; - case ocIsLogical : ScIsLogical(nOldOpCode); break; - case ocType : ScType(); break; - case ocCell : ScCell(); break; - case ocIsRef : ScIsRef(); break; - case ocIsValue : ScIsValue(); break; - case ocIsFormula : ScIsFormula(); break; - case ocFormula : ScFormula(); break; - case ocIsNV : ScIsNV(); break; - case ocIsErr : ScIsErr(); break; - case ocIsError : ScIsError(); break; - case ocIsEven : ScIsEven(); break; - case ocIsOdd : ScIsOdd(); break; - case ocN : ScN(); break; - case ocGetDateValue : ScGetDateValue(); break; - case ocGetTimeValue : ScGetTimeValue(); break; - case ocCode : ScCode(); break; - case ocTrim : ScTrim(); break; - case ocUpper : ScUpper(); break; - case ocPropper : ScPropper(); break; - case ocLower : ScLower(); break; - case ocLen : ScLen(); break; - case ocT : ScT(); break; - case ocClean : ScClean(); break; - case ocValue : ScValue(); break; - case ocChar : ScChar(); break; - case ocArcTan2 : ScArcTan2(); break; - case ocMod : ScMod(); break; - case ocPower : ScPower(); break; - case ocRound : ScRound(); break; - case ocRoundUp : ScRoundUp(); break; - case ocTrunc : - case ocRoundDown : ScRoundDown(); break; - case ocCeil : ScCeil(); break; - case ocFloor : ScFloor(); break; - case ocSumProduct : ScSumProduct(); break; - case ocSumSQ : ScSumSQ(); break; - case ocSumX2MY2 : ScSumX2MY2(); break; - case ocSumX2DY2 : ScSumX2DY2(); break; - case ocSumXMY2 : ScSumXMY2(); break; - case ocLog : ScLog(); break; - case ocGGT : ScGGT(); break; - case ocKGV : ScKGV(); break; - case ocGetDate : ScGetDate(); break; - case ocGetTime : ScGetTime(); break; - case ocGetDiffDate : ScGetDiffDate(); break; - case ocGetDiffDate360 : ScGetDiffDate360(); break; - case ocMin : ScMin( FALSE ); break; - case ocMinA : ScMin( TRUE ); break; - case ocMax : ScMax( FALSE ); break; - case ocMaxA : ScMax( TRUE ); break; - case ocSum : ScSum(); break; - case ocProduct : ScProduct(); break; - case ocNBW : ScNBW(); break; - case ocIKV : ScIKV(); break; - case ocMIRR : ScMIRR(); break; - case ocISPMT : ScISPMT(); break; - case ocAverage : ScAverage( FALSE ); break; - case ocAverageA : ScAverage( TRUE ); break; - case ocCount : ScCount(); break; - case ocCount2 : ScCount2(); break; - case ocVar : ScVar( FALSE ); break; - case ocVarA : ScVar( TRUE ); break; - case ocVarP : ScVarP( FALSE ); break; - case ocVarPA : ScVarP( TRUE ); break; - case ocStDev : ScStDev( FALSE ); break; - case ocStDevA : ScStDev( TRUE ); break; - case ocStDevP : ScStDevP( FALSE ); break; - case ocStDevPA : ScStDevP( TRUE ); break; - case ocBW : ScBW(); break; - case ocDIA : ScDIA(); break; - case ocGDA : ScGDA(); break; - case ocGDA2 : ScGDA2(); break; - case ocVBD : ScVDB(); break; - case ocLaufz : ScLaufz(); break; - case ocLIA : ScLIA(); break; - case ocRMZ : ScRMZ(); break; - case ocColumns : ScColumns(); break; - case ocRows : ScRows(); break; - case ocTables : ScTables(); break; - case ocColumn : ScColumn(); break; - case ocRow : ScRow(); break; - case ocTable : ScTable(); break; - case ocZGZ : ScZGZ(); break; - case ocZW : ScZW(); break; - case ocZZR : ScZZR(); break; - case ocZins : ScZins(); break; - case ocZinsZ : ScZinsZ(); break; - case ocKapz : ScKapz(); break; - case ocKumZinsZ : ScKumZinsZ(); break; - case ocKumKapZ : ScKumKapZ(); break; - case ocEffektiv : ScEffektiv(); break; - case ocNominal : ScNominal(); break; - case ocSubTotal : ScSubTotal(); break; - case ocDBSum : ScDBSum(); break; - case ocDBCount : ScDBCount(); break; - case ocDBCount2 : ScDBCount2(); break; - case ocDBAverage : ScDBAverage(); break; - case ocDBGet : ScDBGet(); break; - case ocDBMax : ScDBMax(); break; - case ocDBMin : ScDBMin(); break; - case ocDBProduct : ScDBProduct(); break; - case ocDBStdDev : ScDBStdDev(); break; - case ocDBStdDevP : ScDBStdDevP(); break; - case ocDBVar : ScDBVar(); break; - case ocDBVarP : ScDBVarP(); break; - case ocIndirect : ScIndirect(); break; - case ocAdress : ScAdress(); break; - case ocMatch : ScMatch(); break; - case ocCountEmptyCells : ScCountEmptyCells(); break; - case ocCountIf : ScCountIf(); break; - case ocSumIf : ScSumIf(); break; - case ocLookup : ScLookup(); break; - case ocVLookup : ScVLookup(); break; - case ocHLookup : ScHLookup(); break; - case ocIndex : ScIndex(); break; - case ocMultiArea : ScMultiArea(); break; - case ocOffset : ScOffset(); break; - case ocAreas : ScAreas(); break; - case ocCurrency : ScCurrency(); break; - case ocReplace : ScReplace(); break; - case ocFixed : ScFixed(); break; - case ocFind : ScFind(); break; - case ocExact : ScExact(); break; - case ocLeft : ScLeft(); break; - case ocRight : ScRight(); break; - case ocSearch : ScSearch(); break; - case ocMid : ScMid(); break; - case ocText : ScText(); break; - case ocSubstitute : ScSubstitute(); break; - case ocRept : ScRept(); break; - case ocConcat : ScConcat(); break; - case ocMatValue : ScMatValue(); break; - case ocMatrixUnit : ScEMat(); break; - case ocMatDet : ScMatDet(); break; - case ocMatInv : ScMatInv(); break; - case ocMatMult : ScMatMult(); break; - case ocMatTrans : ScMatTrans(); break; - case ocMatRef : ScMatRef(); break; - case ocBackSolver : ScBackSolver(); break; - case ocB : ScB(); break; - case ocNormDist : ScNormDist(); break; - case ocExpDist : ScExpDist(); break; - case ocBinomDist : ScBinomDist(); break; - case ocPoissonDist : ScPoissonDist(); break; - case ocKombin : ScKombin(); break; - case ocKombin2 : ScKombin2(); break; - case ocVariationen : ScVariationen(); break; - case ocVariationen2 : ScVariationen2(); break; - case ocHypGeomDist : ScHypGeomDist(); break; - case ocLogNormDist : ScLogNormDist(); break; - case ocTDist : ScTDist(); break; - case ocFDist : ScFDist(); break; - case ocChiDist : ScChiDist(); break; - case ocStandard : ScStandard(); break; - case ocAveDev : ScAveDev(); break; - case ocDevSq : ScDevSq(); break; - case ocKurt : ScKurt(); break; - case ocSchiefe : ScSkew(); break; - case ocModalValue : ScModalValue(); break; - case ocMedian : ScMedian(); break; - case ocGeoMean : ScGeoMean(); break; - case ocHarMean : ScHarMean(); break; - case ocWeibull : ScWeibull(); break; - case ocKritBinom : ScCritBinom(); break; - case ocNegBinomVert : ScNegBinomDist(); break; - case ocNoName : ScNoName(); break; - case ocZTest : ScZTest(); break; - case ocTTest : ScTTest(); break; - case ocFTest : ScFTest(); break; - case ocRank : ScRank(); break; - case ocPercentile : ScPercentile(); break; - case ocPercentrank : ScPercentrank(); break; - case ocLarge : ScLarge(); break; - case ocSmall : ScSmall(); break; - case ocFrequency : ScFrequency(); break; - case ocQuartile : ScQuartile(); break; - case ocNormInv : ScNormInv(); break; - case ocSNormInv : ScSNormInv(); break; - case ocConfidence : ScConfidence(); break; - case ocTrimMean : ScTrimMean(); break; - case ocProb : ScProbability(); break; - case ocCorrel : ScCorrel(); break; - case ocCovar : ScCovar(); break; - case ocPearson : ScPearson(); break; - case ocRSQ : ScRSQ(); break; - case ocSTEYX : ScSTEXY(); break; - case ocSlope : ScSlope(); break; - case ocIntercept : ScIntercept(); break; - case ocTrend : ScTrend(); break; - case ocGrowth : ScGrowth(); break; - case ocRGP : ScRGP(); break; - case ocRKP : ScRKP(); break; - case ocForecast : ScForecast(); break; - case ocGammaLn : ScLogGamma(); break; - case ocGammaDist : ScGammaDist(); break; - case ocGammaInv : ScGammaInv(); break; - case ocChiTest : ScChiTest(); break; - case ocChiInv : ScChiInv(); break; - case ocTInv : ScTInv(); break; - case ocFInv : ScFInv(); break; - case ocLogInv : ScLogNormInv(); break; - case ocBetaDist : ScBetaDist(); break; - case ocBetaInv : ScBetaInv(); break; - case ocExternal : ScExternal(); break; - case ocTableOp : ScTableOp(); break; -// case ocErrCell : ScErrCell(); break; - case ocStop : break; - case ocErrorType : ScErrorType(); break; - case ocCurrent : ScCurrent(); break; - case ocStyle : ScStyle(); break; - case ocDde : ScDde(); break; - case ocBase : ScBase(); break; - case ocDecimal : ScDecimal(); break; - case ocConvert : ScConvert(); break; - case ocRoman : ScRoman(); break; - case ocArabic : ScArabic(); break; - case ocAnswer : ScAnswer(); break; - case ocTeam : ScCalcTeam(); break; - case ocTTT : ScTTT(); break; - case ocSpew : ScSpewFunc(); break; - case ocGame : ScGame(); break; - default : SetError(errUnknownOpCode); PushInt(0); break; - } - } // of else ( !setjmp ) // aeussere Funktion bestimmt das Format eines Ausdrucks if ( nFuncFmtType != NUMBERFORMAT_UNDEFINED ) @@ -3384,25 +3278,6 @@ StackVar ScInterpreter::Interpret() } } } -#if SOMA_FPSIGNAL_JUMP - if ( bIllegalFPOperationSignal ) - { - if ( sp ) - { // eigentlich kann kein Ergebnis gepusht worden sein - ScToken* pRes = pStack[ sp - 1 ]; - if ( pRes->GetOpCode() == ocPush - && pRes->GetType() == svDouble - && !SOMA_FINITE( pRes->nValue ) ) - { - pRes->nValue = 0.0; - } - else - PushInt(0); - } - else - PushInt(0); - } -#endif if ( nErrorFunction >= nErrorFunctionCount ) ++nErrorFunction; // das war's, Fehler => Abbruch else @@ -3416,14 +3291,6 @@ StackVar ScInterpreter::Interpret() Pop(); PushTempToken( *pResult ); } -#if SOMA_FPSIGNAL_JUMP - if ( bIllegalFPOperationSignal ) - { - bIllegalFPOperationSignal = FALSE; - SOMA_FPCONTROL(); // FP-Exceptions ein-/ausschalten - (pSignalFunc)( SC_SIGFPE, MySigFunc ); // reestablish handler - } -#endif } } @@ -3554,20 +3421,15 @@ StackVar ScInterpreter::Interpret() } else SetError(errNoCode); -#if !SOMA_FPSIGNAL_JUMP - if (!SOMA_FINITE(nResult)) + + if (!::rtl::math::isFinite(nResult)) { - if ( SolarMath::IsNAN( nResult ) ) + if ( ::rtl::math::isNan( nResult ) ) SetError(errNoValue); else SetError(errIllegalFPOperation); nResult = 0.0; } -#else - delete [] pJumpBuf; - pJumpBuf = (jmp_buf*) pLocalJumpBuf; - (pSignalFunc)(SC_SIGFPE, pOldSigFunc); -#endif if( nRetTypeExpr != NUMBERFORMAT_UNDEFINED ) { @@ -3607,11 +3469,6 @@ StackVar ScInterpreter::Interpret() while( maxsp-- ) (*p++)->DecRef(); nGlobalError = nGlobError; - if (pTableOp) - { - aTableOpList.Remove(pTableOp); - delete [] pTableOp; - } return eResult; } diff --git a/sc/source/core/tool/interpr5.cxx b/sc/source/core/tool/interpr5.cxx index bf1e1167989e..9d14d3df9f87 100644 --- a/sc/source/core/tool/interpr5.cxx +++ b/sc/source/core/tool/interpr5.cxx @@ -2,9 +2,9 @@ * * $RCSfile: interpr5.cxx,v $ * - * $Revision: 1.7 $ + * $Revision: 1.8 $ * - * last change: $Author: er $ $Date: 2001-07-12 21:31:46 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:17 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -640,8 +640,8 @@ void ScInterpreter::ScMatValue() { if ( MustHaveParamCount( GetByte(), 3 ) ) { - USHORT nR = (USHORT) SolarMath::ApproxFloor(GetDouble()); // 0 bis nAnz - 1 - USHORT nC = (USHORT) SolarMath::ApproxFloor(GetDouble()); // 0 bis nAnz - 1 + USHORT nR = (USHORT) ::rtl::math::approxFloor(GetDouble()); // 0 bis nAnz - 1 + USHORT nC = (USHORT) ::rtl::math::approxFloor(GetDouble()); // 0 bis nAnz - 1 switch (GetStackType()) { case svSingleRef : @@ -741,7 +741,7 @@ void ScInterpreter::ScEMat() { if ( MustHaveParamCount( GetByte(), 1 ) ) { - ULONG nDim = (ULONG) SolarMath::ApproxFloor(GetDouble()); + ULONG nDim = (ULONG) ::rtl::math::approxFloor(GetDouble()); if ( nDim * nDim > ScMatrix::GetElementsMax() || nDim == 0) SetIllegalArgument(); else @@ -1351,7 +1351,7 @@ ScMatrix* ScInterpreter::MatAdd(ScMatrix* pMat1, ScMatrix* pMat2) for (j = 0; j < nMinR; j++) { if (pMat1->IsValueOrEmpty(i,j) && pMat2->IsValueOrEmpty(i,j)) - pResMat->PutDouble( SolarMath::ApproxAdd( pMat1->GetDouble(i,j), + pResMat->PutDouble( ::rtl::math::approxAdd( pMat1->GetDouble(i,j), pMat2->GetDouble(i,j)), i, j); else pResMat->PutString(ScGlobal::GetRscString( @@ -1385,7 +1385,7 @@ ScMatrix* ScInterpreter::MatSub(ScMatrix* pMat1, ScMatrix* pMat2) for (j = 0; j < nMinR; j++) { if (pMat1->IsValueOrEmpty(i,j) && pMat2->IsValueOrEmpty(i,j)) - pResMat->PutDouble( SolarMath::ApproxSub( pMat1->GetDouble(i,j), + pResMat->PutDouble( ::rtl::math::approxSub( pMat1->GetDouble(i,j), pMat2->GetDouble(i,j)), i, j); else pResMat->PutString(ScGlobal::GetRscString( @@ -1650,7 +1650,7 @@ void ScInterpreter::ScAdd() for ( ULONG i = 0; i < nCount; i++ ) { if (pMat->IsValue(i)) - pResMat->PutDouble( SolarMath::ApproxAdd( pMat->GetDouble(i), fVal), i); + pResMat->PutDouble( ::rtl::math::approxAdd( pMat->GetDouble(i), fVal), i); else pResMat->PutString(ScGlobal::GetRscString(STR_NO_VALUE), i); } @@ -1661,7 +1661,7 @@ void ScInterpreter::ScAdd() SetNoValue(); } else - PushDouble( SolarMath::ApproxAdd( fVal1, fVal2 ) ); + PushDouble( ::rtl::math::approxAdd( fVal1, fVal2 ) ); if ( nFmtCurrencyType == NUMBERFORMAT_CURRENCY ) { nFuncFmtType = nFmtCurrencyType; @@ -1849,7 +1849,7 @@ void ScInterpreter::ScSub() if (bFlag) { for ( ULONG i = 0; i < nCount; i++ ) { if (pMat->IsValue(i)) - pResMat->PutDouble( SolarMath::ApproxSub( fVal, pMat->GetDouble(i)), i); + pResMat->PutDouble( ::rtl::math::approxSub( fVal, pMat->GetDouble(i)), i); else pResMat->PutString(ScGlobal::GetRscString(STR_NO_VALUE), i); } @@ -1857,7 +1857,7 @@ void ScInterpreter::ScSub() else { for ( ULONG i = 0; i < nCount; i++ ) { if (pMat->IsValue(i)) - pResMat->PutDouble( SolarMath::ApproxSub( pMat->GetDouble(i), fVal), i); + pResMat->PutDouble( ::rtl::math::approxSub( pMat->GetDouble(i), fVal), i); else pResMat->PutString(ScGlobal::GetRscString(STR_NO_VALUE), i); } @@ -1869,7 +1869,7 @@ void ScInterpreter::ScSub() SetNoValue(); } else - PushDouble( SolarMath::ApproxSub( fVal1, fVal2 ) ); + PushDouble( ::rtl::math::approxSub( fVal1, fVal2 ) ); if ( nFmtCurrencyType == NUMBERFORMAT_CURRENCY ) { nFuncFmtType = nFmtCurrencyType; diff --git a/sc/source/core/tool/rangenam.cxx b/sc/source/core/tool/rangenam.cxx index 62b6025f49a3..1f17d252bd17 100644 --- a/sc/source/core/tool/rangenam.cxx +++ b/sc/source/core/tool/rangenam.cxx @@ -2,9 +2,9 @@ * * $RCSfile: rangenam.cxx,v $ * - * $Revision: 1.11 $ + * $Revision: 1.12 $ * - * last change: $Author: er $ $Date: 2002-11-28 16:14:51 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:18 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -582,6 +582,8 @@ void ScRangeData::MakeValidName( String& rName ) // static BOOL ScRangeData::IsNameValid( const String& rName, ScDocument* pDoc ) { + /* If changed, ScfTools::ConvertToScDefinedName (sc/source/filter/ftools/ftools.cxx) + needs to be changed too. */ xub_StrLen nPos = 0; xub_StrLen nLen = rName.Len(); if ( !nLen || !ScCompiler::IsCharWordChar( rName.GetChar(nPos++) ) ) diff --git a/sc/source/core/tool/rangeseq.cxx b/sc/source/core/tool/rangeseq.cxx index 23ea3df81336..d737c0b1b459 100644 --- a/sc/source/core/tool/rangeseq.cxx +++ b/sc/source/core/tool/rangeseq.cxx @@ -2,9 +2,9 @@ * * $RCSfile: rangeseq.cxx,v $ * - * $Revision: 1.3 $ + * $Revision: 1.4 $ * - * last change: $Author: nn $ $Date: 2001-04-10 18:46:13 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:18 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -66,7 +66,7 @@ #pragma hdrstop #include -#include +#include #include #include @@ -83,8 +83,8 @@ using namespace com::sun::star; long lcl_DoubleToLong( double fVal ) { - double fInt = (fVal >= 0.0) ? SolarMath::ApproxFloor( fVal ) : - SolarMath::ApproxCeil( fVal ); + double fInt = (fVal >= 0.0) ? ::rtl::math::approxFloor( fVal ) : + ::rtl::math::approxCeil( fVal ); if ( fInt >= LONG_MIN && fInt <= LONG_MAX ) return (long)fInt; else diff --git a/sc/source/core/tool/rechead.cxx b/sc/source/core/tool/rechead.cxx index 07c66ddb771b..cfc57818325d 100644 --- a/sc/source/core/tool/rechead.cxx +++ b/sc/source/core/tool/rechead.cxx @@ -2,9 +2,9 @@ * * $RCSfile: rechead.cxx,v $ * - * $Revision: 1.1.1.1 $ + * $Revision: 1.2 $ * - * last change: $Author: hr $ $Date: 2000-09-19 00:16:18 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:18 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -176,7 +176,7 @@ ScMultipleReadHeader::~ScMultipleReadHeader() rStream.SetError( SCWARN_IMPORT_INFOLOST ); } delete pMemStream; - delete pBuf; + delete[] pBuf; rStream.Seek(nEndPos); } diff --git a/sc/source/core/tool/scmatrix.cxx b/sc/source/core/tool/scmatrix.cxx index 09e203d311e7..d61d80f9cfce 100644 --- a/sc/source/core/tool/scmatrix.cxx +++ b/sc/source/core/tool/scmatrix.cxx @@ -2,9 +2,9 @@ * * $RCSfile: scmatrix.cxx,v $ * - * $Revision: 1.5 $ + * $Revision: 1.6 $ * - * last change: $Author: er $ $Date: 2001-04-23 20:25:02 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:19 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -76,8 +76,8 @@ #ifndef _STREAM_HXX //autogen #include #endif -#ifndef _TOOLS_SOLMATH_HXX -#include +#ifndef INCLUDED_RTL_MATH_HXX +#include #endif //------------------------------------------------------------------------ @@ -179,7 +179,7 @@ void ScMatrix::Store(SvStream& rStream) const rStream << (USHORT) 1; rStream << (BYTE) CELLTYPE_VALUE; double fVal; - SolarMath::SetNAN( fVal, FALSE ); + ::rtl::math::setNan( &fVal ); rStream << fVal; return; } diff --git a/sc/source/core/tool/subtotal.cxx b/sc/source/core/tool/subtotal.cxx index 83596a778db5..448c5e831d59 100644 --- a/sc/source/core/tool/subtotal.cxx +++ b/sc/source/core/tool/subtotal.cxx @@ -2,9 +2,9 @@ * * $RCSfile: subtotal.cxx,v $ * - * $Revision: 1.2 $ + * $Revision: 1.3 $ * - * last change: $Author: mh $ $Date: 2001-10-23 15:15:45 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:19 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -88,8 +88,6 @@ #include "subtotal.hxx" #include "interpre.hxx" -#include "scdll.hxx" // ScLibSignalFunc - // STATIC DATA ----------------------------------------------------------- jmp_buf SubTotal::aGlobalJumpBuf; @@ -126,118 +124,54 @@ void SubTotal::UpdateNoVal() void SubTotal::Update( double nVal ) { - SOMA_FPCONTROL(); // FP-Exceptions ein-/ausschalten -#if SOMA_FPSIGNAL_JUMP - ScSigCatchFunc pOldSigFunc = (ScInterpreter::pSignalFunc)( SC_SIGFPE, ScInterpreter::MySigFunc ); - jmp_buf* pSaveBuf = ScInterpreter::pJumpBuf; - ScInterpreter::pJumpBuf = &aGlobalJumpBuf; - if (setjmp(aGlobalJumpBuf)) - { - if (nProgress == 0) - { - bSumOk = FALSE; - bProductOk = FALSE; - bSumSqrOk = FALSE; - } - else if (nProgress == 1) - { - bProductOk = FALSE; - bSumSqrOk = FALSE; - } - else - { - bSumSqrOk = FALSE; - DBG_ASSERT(nProgress == 2,"subtotal.cxx: Update(1)"); - } - } - else -#endif // SOMA_FPSIGNAL_JUMP - { - nCount++; - nCount2++; - if (nVal > nMax) nMax = nVal; - if (nVal < nMin) nMin = nVal; - nProgress = 0; - if (bSumOk) nSum += nVal; - nProgress = 1; - if (bProductOk) nProduct *= nVal; - nProgress = 2; - if (bSumSqrOk) nSumSqr += nVal*nVal; - } -#if !SOMA_FPSIGNAL_JUMP - if (!SOMA_FINITE(nSum)) + SAL_MATH_FPEXCEPTIONS_OFF(); + nCount++; + nCount2++; + if (nVal > nMax) nMax = nVal; + if (nVal < nMin) nMin = nVal; + nProgress = 0; + if (bSumOk) nSum += nVal; + nProgress = 1; + if (bProductOk) nProduct *= nVal; + nProgress = 2; + if (bSumSqrOk) nSumSqr += nVal*nVal; + if (!::rtl::math::isFinite(nSum)) bSumOk = FALSE; - if (!SOMA_FINITE(nProduct)) + if (!::rtl::math::isFinite(nProduct)) bProductOk = FALSE; - if (!SOMA_FINITE(nSumSqr)) + if (!::rtl::math::isFinite(nSumSqr)) bSumSqrOk = FALSE; -#else // SOMA_FPSIGNAL_JUMP - ScInterpreter::pJumpBuf = pSaveBuf; - (ScInterpreter::pSignalFunc)( SC_SIGFPE, pOldSigFunc ); -#endif } void SubTotal::Update( const SubTotal& rVal ) { - SOMA_FPCONTROL(); // FP-Exceptions ein-/ausschalten -#if SOMA_FPSIGNAL_JUMP - ScSigCatchFunc pOldSigFunc = (ScInterpreter::pSignalFunc)( SC_SIGFPE, ScInterpreter::MySigFunc ); - jmp_buf* pSaveBuf = ScInterpreter::pJumpBuf; - ScInterpreter::pJumpBuf = &aGlobalJumpBuf; - if (setjmp(aGlobalJumpBuf)) - { - if (nProgress == 0) - { - bSumOk = FALSE; - bProductOk = FALSE; - bSumSqrOk = FALSE; - } - else if (nProgress == 1) - { - bProductOk = FALSE; - bSumSqrOk = FALSE; - } - else - { - DBG_ASSERT(nProgress == 2,"subtotal.cxx: Update(2)"); - bSumSqrOk = FALSE; - } - } + SAL_MATH_FPEXCEPTIONS_OFF(); + nCount += rVal.nCount; + nCount2 += rVal.nCount2; + if (rVal.nMax > nMax) nMax = rVal.nMax; + if (rVal.nMin < nMin) nMin = rVal.nMin; + nProgress = 0; + if (rVal.bSumOk && bSumOk) + nSum += rVal.nSum; else -#endif // SOMA_FPSIGNAL_JUMP - { - nCount += rVal.nCount; - nCount2 += rVal.nCount2; - if (rVal.nMax > nMax) nMax = rVal.nMax; - if (rVal.nMin < nMin) nMin = rVal.nMin; - nProgress = 0; - if (rVal.bSumOk && bSumOk) - nSum += rVal.nSum; - else - bSumOk = FALSE; - nProgress = 1; - if (rVal.bProductOk && bProductOk) - nProduct *= rVal.nProduct; - else - bProductOk = FALSE; - nProgress = 2; - if (rVal.bSumSqrOk && bSumSqrOk) - nSumSqr += rVal.nSumSqr; - else - bSumSqrOk = FALSE; - } -#if !SOMA_FPSIGNAL_JUMP - if (!SOMA_FINITE(nSum)) bSumOk = FALSE; - if (!SOMA_FINITE(nProduct)) + nProgress = 1; + if (rVal.bProductOk && bProductOk) + nProduct *= rVal.nProduct; + else bProductOk = FALSE; - if (!SOMA_FINITE(nSumSqr)) + nProgress = 2; + if (rVal.bSumSqrOk && bSumSqrOk) + nSumSqr += rVal.nSumSqr; + else + bSumSqrOk = FALSE; + if (!::rtl::math::isFinite(nSum)) + bSumOk = FALSE; + if (!::rtl::math::isFinite(nProduct)) + bProductOk = FALSE; + if (!::rtl::math::isFinite(nSumSqr)) bSumSqrOk = FALSE; -#else // SOMA_FPSIGNAL_JUMP - ScInterpreter::pJumpBuf = pSaveBuf; - (ScInterpreter::pSignalFunc)( SC_SIGFPE, pOldSigFunc ); -#endif } @@ -344,12 +278,9 @@ double SubTotal::Result( USHORT nFunction ) const BOOL SubTotal::SafePlus(double& fVal1, double fVal2) { BOOL bOk = TRUE; - SOMA_FPCONTROL(); // FP-Exceptions ein-/ausschalten -#if SOMA_FPSIGNAL_JUMP - ScSigCatchFunc pOldSigFunc = (ScInterpreter::pSignalFunc)( SC_SIGFPE, ScInterpreter::MySigFunc ); - jmp_buf* pSaveBuf = ScInterpreter::pJumpBuf; - ScInterpreter::pJumpBuf = &aGlobalJumpBuf; - if (setjmp(aGlobalJumpBuf)) + SAL_MATH_FPEXCEPTIONS_OFF(); + fVal1 += fVal2; + if (!::rtl::math::isFinite(fVal1)) { bOk = FALSE; if (fVal2 > 0.0) @@ -357,22 +288,6 @@ BOOL SubTotal::SafePlus(double& fVal1, double fVal2) else fVal1 = -DBL_MAX; } - else -#endif // SOMA_FPSIGNAL_JUMP - fVal1 += fVal2; -#if !SOMA_FPSIGNAL_JUMP - if (!SOMA_FINITE(fVal1)) - { - bOk = FALSE; - if (fVal2 > 0.0) - fVal1 = DBL_MAX; - else - fVal1 = -DBL_MAX; - } -#else // SOMA_FPSIGNAL_JUMP - ScInterpreter::pJumpBuf = pSaveBuf; - (ScInterpreter::pSignalFunc)( SC_SIGFPE, pOldSigFunc ); -#endif return bOk; } @@ -380,29 +295,13 @@ BOOL SubTotal::SafePlus(double& fVal1, double fVal2) BOOL SubTotal::SafeMult(double& fVal1, double fVal2) { BOOL bOk = TRUE; - SOMA_FPCONTROL(); // FP-Exceptions ein-/ausschalten -#if SOMA_FPSIGNAL_JUMP - ScSigCatchFunc pOldSigFunc = (ScInterpreter::pSignalFunc)( SC_SIGFPE, ScInterpreter::MySigFunc ); - jmp_buf* pSaveBuf = ScInterpreter::pJumpBuf; - ScInterpreter::pJumpBuf = &aGlobalJumpBuf; - if (setjmp(aGlobalJumpBuf)) - { - bOk = FALSE; - fVal1 = DBL_MAX; - } - else -#endif // SOMA_FPSIGNAL_JUMP - fVal1 *= fVal2; -#if !SOMA_FPSIGNAL_JUMP - if (!SOMA_FINITE(fVal1)) + SAL_MATH_FPEXCEPTIONS_OFF(); + fVal1 *= fVal2; + if (!::rtl::math::isFinite(fVal1)) { bOk = FALSE; fVal1 = DBL_MAX; } -#else // SOMA_FPSIGNAL_JUMP - ScInterpreter::pJumpBuf = pSaveBuf; - (ScInterpreter::pSignalFunc)( SC_SIGFPE, pOldSigFunc ); -#endif return bOk; } @@ -410,28 +309,12 @@ BOOL SubTotal::SafeMult(double& fVal1, double fVal2) BOOL SubTotal::SafeDiv(double& fVal1, double fVal2) { BOOL bOk = TRUE; - SOMA_FPCONTROL(); // FP-Exceptions ein-/ausschalten -#if SOMA_FPSIGNAL_JUMP - ScSigCatchFunc pOldSigFunc = (ScInterpreter::pSignalFunc)( SC_SIGFPE, ScInterpreter::MySigFunc ); - jmp_buf* pSaveBuf = ScInterpreter::pJumpBuf; - ScInterpreter::pJumpBuf = &aGlobalJumpBuf; - if (setjmp(aGlobalJumpBuf)) + SAL_MATH_FPEXCEPTIONS_OFF(); + fVal1 /= fVal2; + if (!::rtl::math::isFinite(fVal1)) { bOk = FALSE; fVal1 = DBL_MAX; } - else -#endif // SOMA_FPSIGNAL_JUMP - fVal1 /= fVal2; -#if !SOMA_FPSIGNAL_JUMP - if (!SOMA_FINITE(fVal1)) - { - bOk = FALSE; - fVal1 = DBL_MAX; - } -#else // SOMA_FPSIGNAL_JUMP - ScInterpreter::pJumpBuf = pSaveBuf; - (ScInterpreter::pSignalFunc)( SC_SIGFPE, pOldSigFunc ); -#endif return bOk; } diff --git a/sc/source/core/tool/token.cxx b/sc/source/core/tool/token.cxx index 7d13c69c7a6b..c4e787a2b07d 100644 --- a/sc/source/core/tool/token.cxx +++ b/sc/source/core/tool/token.cxx @@ -2,9 +2,9 @@ * * $RCSfile: token.cxx,v $ * - * $Revision: 1.14 $ + * $Revision: 1.15 $ * - * last change: $Author: er $ $Date: 2002-09-27 17:18:23 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:19 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -1026,7 +1026,7 @@ BOOL ScTokenArray::HasNameOrColRowName() const return FALSE; } -BOOL ScTokenArray::IsReference( ScRange& rRange ) const +BOOL ScTokenArray::ImplGetReference( ScRange& rRange, BOOL bValidOnly ) const { BOOL bIs = FALSE; if ( pCode && nLen == 1 ) @@ -1038,7 +1038,7 @@ BOOL ScTokenArray::IsReference( ScRange& rRange ) const { const SingleRefData& rRef = ((const ScSingleRefToken*)pToken)->GetSingleRef(); rRange.aStart = rRange.aEnd = ScAddress( rRef.nCol, rRef.nRow, rRef.nTab ); - bIs = TRUE; + bIs = !bValidOnly || !rRef.IsDeleted(); } else if ( pToken->GetType() == svDoubleRef ) { @@ -1047,13 +1047,23 @@ BOOL ScTokenArray::IsReference( ScRange& rRange ) const const SingleRefData& rRef2 = rCompl.Ref2; rRange.aStart = ScAddress( rRef1.nCol, rRef1.nRow, rRef1.nTab ); rRange.aEnd = ScAddress( rRef2.nCol, rRef2.nRow, rRef2.nTab ); - bIs = TRUE; + bIs = !bValidOnly || (!rRef1.IsDeleted() && !rRef2.IsDeleted()); } } } return bIs; } +BOOL ScTokenArray::IsReference( ScRange& rRange ) const +{ + return ImplGetReference( rRange, FALSE ); +} + +BOOL ScTokenArray::IsValidReference( ScRange& rRange ) const +{ + return ImplGetReference( rRange, TRUE ); +} + inline void lcl_GetAddress( ScAddress& rAddress, const ScToken& rToken ) { if ( rToken.GetType() == svSingleRef ) @@ -1499,7 +1509,7 @@ ScToken* ScTokenArray::Add( ScToken* t ) { if( !pCode ) pCode = new ScToken*[ MAXCODE ]; - if( nLen < MAXCODE ) + if( nLen < MAXCODE-1 ) { pCode[ nLen++ ] = t; if( t->GetOpCode() == ocPush @@ -1511,6 +1521,12 @@ ScToken* ScTokenArray::Add( ScToken* t ) else { t->Delete(); + if ( nLen == MAXCODE-1 ) + { + t = new ScByteToken( ocStop ); + pCode[ nLen++ ] = t; + t->IncRef(); + } return NULL; } } diff --git a/sc/source/filter/dif/difexp.cxx b/sc/source/filter/dif/difexp.cxx index 9fb53e904930..59f8cc1bf2d0 100644 --- a/sc/source/filter/dif/difexp.cxx +++ b/sc/source/filter/dif/difexp.cxx @@ -2,9 +2,9 @@ * * $RCSfile: difexp.cxx,v $ * - * $Revision: 1.5 $ + * $Revision: 1.6 $ * - * last change: $Author: er $ $Date: 2002-12-06 17:26:49 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:25 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -67,7 +67,7 @@ //------------------------------------------------------------------------ -#include +#include #include @@ -79,6 +79,9 @@ #include "global.hxx" #include "progress.hxx" +#ifndef _RTL_TENCINFO_H +#include +#endif FltError ScExportDif( SvStream& rStream, ScDocument* pDoc, const ScAddress& rOutPos, const CharSet eNach, UINT32 nDifOption ) @@ -94,42 +97,53 @@ FltError ScExportDif( SvStream& rStream, ScDocument* pDoc, } -void lcl_EscapeQuotes( ByteString& rString ) -{ - // Quotes in (quoted) strings have to be escaped (duplicated) - // (at least Excel and Quattro do it that way) - - // This has to be done after converting the string to 8-bit characters, - // because different characters (typographic quotes) might get converted - // into quote characters. - - xub_StrLen nPos = 0; - while( ( nPos = rString.Search( (sal_Char)'"', nPos ) ) != STRING_NOTFOUND ) - { - rString.Insert( (sal_Char)'"', nPos ); - nPos += 2; - } -} - - FltError ScExportDif( SvStream& rOut, ScDocument* pDoc, - const ScRange&rRange, const CharSet eNach, UINT32 nDifOption ) + const ScRange&rRange, const CharSet eCharSet, UINT32 nDifOption ) { DBG_ASSERT( rRange.aStart <= rRange.aEnd, "*ScExportDif(): Range unsortiert!" ); DBG_ASSERTWARNING( rRange.aStart.Tab() == rRange.aEnd.Tab(), "ScExportDif(): nur eine Tabelle bidde!" ); + const CharSet eStreamCharSet = rOut.GetStreamCharSet(); + if ( eStreamCharSet != eCharSet ) + rOut.SetStreamCharSet( eCharSet ); + + sal_Unicode cStrDelim('"'); + ByteString aStrDelimEncoded; // only used if not Unicode + UniString aStrDelimDecoded; // only used if context encoding + BOOL bContextOrNotAsciiEncoding; + if ( eCharSet == RTL_TEXTENCODING_UNICODE ) + { + rOut.StartWritingUnicodeText(); + bContextOrNotAsciiEncoding = FALSE; + } + else + { + aStrDelimEncoded = ByteString( cStrDelim, eCharSet ); + rtl_TextEncodingInfo aInfo; + aInfo.StructSize = sizeof(aInfo); + if ( rtl_getTextEncodingInfo( eCharSet, &aInfo ) ) + { + bContextOrNotAsciiEncoding = + (((aInfo.Flags & RTL_TEXTENCODING_INFO_CONTEXT) != 0) || + ((aInfo.Flags & RTL_TEXTENCODING_INFO_ASCII) == 0)); + if ( bContextOrNotAsciiEncoding ) + aStrDelimDecoded = String( aStrDelimEncoded, eCharSet ); + } + else + bContextOrNotAsciiEncoding = FALSE; + } + const sal_Char* p2DoubleQuotes_LF = "\"\"\n"; const sal_Char* pSpecDataType_LF = "-1,0\n"; const sal_Char* pEmptyData = "1,0\n\"\"\n"; - const sal_Char* pStringData = "1,0\n\""; + const sal_Char* pStringData = "1,0\n"; const sal_Char* pNumData = "0,"; const sal_Char* pNumDataERROR = "0,0\nERROR\n"; FltError eRet = eERR_OK; - ByteString aTmp; - ByteString aOS; - String aUniString; + String aOS; + String aString; UINT16 nEndCol = rRange.aEnd.Col(); UINT16 nEndRow = rRange.aEnd.Row(); UINT16 nNumCols = nEndCol - rRange.aStart.Col() + 1; @@ -140,7 +154,7 @@ FltError ScExportDif( SvStream& rOut, ScDocument* pDoc, const BOOL bPlain = ( nDifOption == SC_DIFOPT_PLAIN ); - ScProgress aPrgrsBar( NULL, ScGlobal::GetRscString( STR_LOAD_DOC ), nNumRows ); + ScProgress aPrgrsBar( pDoc->GetDocumentShell(), ScGlobal::GetRscString( STR_LOAD_DOC ), nNumRows ); aPrgrsBar.SetState( 0 ); @@ -148,41 +162,47 @@ FltError ScExportDif( SvStream& rOut, ScDocument* pDoc, DBG_ASSERT( pDoc->HasTable( nTab ), "*ScExportDif(): Tabelle nicht vorhanden!" ); aOS = pKeyTABLE; - aOS += "\n0,1\n\""; + aOS.AppendAscii( "\n0,1\n\"" ); - pDoc->GetName( nTab, aUniString ); - aOS += ByteString( aUniString, eNach ); - aOS += "\"\n"; - rOut.Write( aOS.GetBuffer(), aOS.Len() ); + pDoc->GetName( nTab, aString ); + aOS += aString; + aOS.AppendAscii( "\"\n" ); + rOut.WriteUnicodeOrByteText( aOS ); // VECTORS aOS = pKeyVECTORS; - aOS += "\n0,"; - aOS += ByteString::CreateFromInt32( nNumCols ); - aOS += '\n'; - aOS += p2DoubleQuotes_LF; - rOut.Write( aOS.GetBuffer(), aOS.Len() ); + aOS.AppendAscii( "\n0," ); + aOS += String::CreateFromInt32( nNumCols ); + aOS += sal_Unicode('\n'); + aOS.AppendAscii( p2DoubleQuotes_LF ); + rOut.WriteUnicodeOrByteText( aOS ); // TUPLES aOS = pKeyTUPLES; - aOS += "\n0,"; - aOS += ByteString::CreateFromInt32( nNumRows ); - aOS += '\n'; - aOS += p2DoubleQuotes_LF; - rOut.Write( aOS.GetBuffer(), aOS.Len() ); + aOS.AppendAscii( "\n0," ); + aOS += String::CreateFromInt32( nNumRows ); + aOS += sal_Unicode('\n'); + aOS.AppendAscii( p2DoubleQuotes_LF ); + rOut.WriteUnicodeOrByteText( aOS ); // DATA - rOut << pKeyDATA << "\n0,0\n" << p2DoubleQuotes_LF; + aOS = pKeyDATA; + aOS.AppendAscii( "\n0,0\n" ); + aOS.AppendAscii( p2DoubleQuotes_LF ); + rOut.WriteUnicodeOrByteText( aOS ); UINT16 nColCnt, nRowCnt; ScBaseCell* pAkt; - const sal_Char* pOutString; for( nRowCnt = rRange.aStart.Row() ; nRowCnt <= nEndRow ; nRowCnt++ ) { - rOut << pSpecDataType_LF << pKeyBOT << '\n'; + aOS.AssignAscii( pSpecDataType_LF ); + aOS += pKeyBOT; + aOS += sal_Unicode('\n'); + rOut.WriteUnicodeOrByteText( aOS ); for( nColCnt = rRange.aStart.Col() ; nColCnt <= nEndCol ; nColCnt++ ) { + bool bWriteStringData = false; pDoc->GetCell( nColCnt, nRowCnt, nTab, pAkt ); if( pAkt ) { @@ -190,89 +210,138 @@ FltError ScExportDif( SvStream& rOut, ScDocument* pDoc, { case CELLTYPE_NONE: case CELLTYPE_NOTE: - pOutString = pEmptyData; + aOS.AssignAscii( pEmptyData ); break; case CELLTYPE_VALUE: - aOS = pNumData; + aOS.AssignAscii( pNumData ); if( bPlain ) { fVal = ( ( ScValueCell * ) pAkt )->GetValue(); - aUniString.Erase(); - SolarMath::DoubleToString( aUniString, fVal, 'G', 14, '.', TRUE ); - aOS += ByteString( aUniString, eNach ); + aOS += String( ::rtl::math::doubleToUString( + fVal, rtl_math_StringFormat_G, 14, '.', + TRUE)); } else { - pDoc->GetInputString( nColCnt, nRowCnt, nTab, aUniString ); - aOS += ByteString( aUniString, eNach ); + pDoc->GetInputString( nColCnt, nRowCnt, nTab, aString ); + aOS += aString; } - aOS += "\nV\n"; - pOutString = aOS.GetBuffer(); + aOS.AppendAscii( "\nV\n" ); break; case CELLTYPE_EDIT: - aOS = pStringData; - ( ( ScEditCell* ) pAkt )->GetString( aUniString ); - aTmp = ByteString( aUniString, eNach ); - lcl_EscapeQuotes( aTmp ); - aOS += aTmp; - aOS += "\"\n"; - pOutString = aOS.GetBuffer(); + ( ( ScEditCell* ) pAkt )->GetString( aString ); + bWriteStringData = true; break; case CELLTYPE_STRING: - aOS = pStringData; - ( ( ScStringCell* ) pAkt )->GetString( aUniString ); - aTmp = ByteString( aUniString, eNach ); - lcl_EscapeQuotes( aTmp ); - aOS += aTmp; - aOS += "\"\n"; - pOutString = aOS.GetBuffer(); + ( ( ScStringCell* ) pAkt )->GetString( aString ); + bWriteStringData = true; break; case CELLTYPE_FORMULA: if ( ((ScFormulaCell*)pAkt)->GetErrCode() ) - pOutString = pNumDataERROR; + aOS.AssignAscii( pNumDataERROR ); else if( pAkt->HasValueData() ) { - aOS = pNumData; + aOS.AssignAscii( pNumData ); if( bPlain ) { fVal = ( ( ScFormulaCell * ) pAkt )->GetValue(); - aUniString.Erase(); - SolarMath::DoubleToString( aUniString, fVal, 'G', 14, '.', TRUE ); - aOS += ByteString( aUniString, eNach ); + aOS += String( ::rtl::math::doubleToUString( + fVal, rtl_math_StringFormat_G, 14, + '.', TRUE)); } else { - pDoc->GetInputString( nColCnt, nRowCnt, nTab, aUniString ); - aOS += ByteString( aUniString, eNach ); + pDoc->GetInputString( nColCnt, nRowCnt, nTab, aString ); + aOS += aString; } - aOS += "\nV\n"; - pOutString = aOS.GetBuffer(); + aOS.AppendAscii( "\nV\n" ); } else if( pAkt->HasStringData() ) { - aOS = pStringData; - ( ( ScFormulaCell * ) pAkt )->GetString( aUniString ); - aTmp = ByteString( aUniString, eNach ); - lcl_EscapeQuotes( aTmp ); - aOS += aTmp; - aOS += "\"\n"; - pOutString = aOS.GetBuffer(); + ( ( ScFormulaCell * ) pAkt )->GetString( aString ); + bWriteStringData = true; } else - pOutString = pNumDataERROR; + aOS.AssignAscii( pNumDataERROR ); break; } } else - pOutString = pEmptyData; + aOS.AssignAscii( pEmptyData ); - rOut << pOutString; + if ( !bWriteStringData ) + rOut.WriteUnicodeOrByteText( aOS ); + else + { + // for an explanation why this complicated, see + // sc/source/ui/docsh.cxx:ScDocShell::AsciiSave() + // In fact we should create a common method if this would be + // needed just one more time.. + aOS.AssignAscii( pStringData ); + rOut.WriteUnicodeOrByteText( aOS, eCharSet ); + if ( eCharSet == RTL_TEXTENCODING_UNICODE ) + { + xub_StrLen nPos = aString.Search( cStrDelim ); + while ( nPos != STRING_NOTFOUND ) + { + aString.Insert( cStrDelim, nPos ); + nPos = aString.Search( cStrDelim, nPos+2 ); + } + rOut.WriteUniOrByteChar( cStrDelim, eCharSet ); + rOut.WriteUnicodeText( aString ); + rOut.WriteUniOrByteChar( cStrDelim, eCharSet ); + } + else if ( bContextOrNotAsciiEncoding ) + { + // to byte encoding + ByteString aStrEnc( aString, eCharSet ); + // back to Unicode + UniString aStrDec( aStrEnc, eCharSet ); + // search on re-decoded string + xub_StrLen nPos = aStrDec.Search( aStrDelimDecoded ); + while ( nPos != STRING_NOTFOUND ) + { + aStrDec.Insert( aStrDelimDecoded, nPos ); + nPos = aStrDec.Search( aStrDelimDecoded, + nPos+1+aStrDelimDecoded.Len() ); + } + // write byte re-encoded + rOut.WriteUniOrByteChar( cStrDelim, eCharSet ); + rOut.WriteUnicodeOrByteText( aStrDec, eCharSet ); + rOut.WriteUniOrByteChar( cStrDelim, eCharSet ); + } + else + { + ByteString aStrEnc( aString, eCharSet ); + // search on encoded string + xub_StrLen nPos = aStrEnc.Search( aStrDelimEncoded ); + while ( nPos != STRING_NOTFOUND ) + { + aStrEnc.Insert( aStrDelimEncoded, nPos ); + nPos = aStrEnc.Search( aStrDelimEncoded, + nPos+1+aStrDelimEncoded.Len() ); + } + // write byte encoded + rOut.Write( aStrDelimEncoded.GetBuffer(), + aStrDelimEncoded.Len() ); + rOut.Write( aStrEnc.GetBuffer(), aStrEnc.Len() ); + rOut.Write( aStrDelimEncoded.GetBuffer(), + aStrDelimEncoded.Len() ); + } + rOut.WriteUniOrByteChar( '\n', eCharSet ); + } } aPrgrsBar.SetState( nRowCnt ); } - rOut << pSpecDataType_LF << pKeyEOD << '\n'; + aOS.AssignAscii( pSpecDataType_LF ); + aOS += pKeyEOD; + aOS += sal_Unicode('\n'); + rOut.WriteUnicodeOrByteText( aOS ); + + // restore original value + rOut.SetStreamCharSet( eStreamCharSet ); return eRet; } diff --git a/sc/source/filter/dif/difimp.cxx b/sc/source/filter/dif/difimp.cxx index 87f63c82a63b..0469842fbdf7 100644 --- a/sc/source/filter/dif/difimp.cxx +++ b/sc/source/filter/dif/difimp.cxx @@ -2,9 +2,9 @@ * * $RCSfile: difimp.cxx,v $ * - * $Revision: 1.4 $ + * $Revision: 1.5 $ * - * last change: $Author: er $ $Date: 2002-10-31 19:15:02 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:26 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -73,7 +73,7 @@ #include "dif.hxx" #include "filter.hxx" -#include "fltprgrs.hxx" +#include "fprogressbar.hxx" #include "flttools.hxx" #include "scerrors.hxx" #include "document.hxx" @@ -83,51 +83,25 @@ #include "attrib.hxx" -const sal_Char* pKeyTABLE = "TABLE"; -const sal_Char* pKeyVECTORS = "VECTORS"; -const sal_Char* pKeyTUPLES = "TUPLES"; -const sal_Char* pKeyDATA = "DATA"; -const sal_Char* pKeyBOT = "BOT"; -const sal_Char* pKeyEOD = "EOD"; -const sal_Char* pKeyERROR = "ERROR"; -const sal_Char* pKeyTRUE = "TRUE"; -const sal_Char* pKeyFALSE = "FALSE"; -const sal_Char* pKeyNA = "NA"; - - -#if __ALIGNMENT4 == 1 -UINT32 DifParser::nBOT = *( ( UINT32* ) pKeyBOT ); -UINT32 DifParser::nEOD = *( ( UINT32* ) pKeyEOD ); -UINT32 DifParser::n1_0 = *( ( UINT32* ) "1,0" ); -#else -sal_Char DifParser::cBOT_0 = 'B'; -sal_Char DifParser::cBOT_1 = 'O'; -sal_Char DifParser::cBOT_2 = 'T'; -sal_Char DifParser::cBOT_3 = 0x00; -sal_Char DifParser::cEOD_0 = 'E'; -sal_Char DifParser::cEOD_1 = 'O'; -sal_Char DifParser::cEOD_2 = 'D'; -sal_Char DifParser::cEOD_3 = 0x00; -sal_Char DifParser::c1_0_0 = '1'; -sal_Char DifParser::c1_0_1 = ','; -sal_Char DifParser::c1_0_2 = '0'; -sal_Char DifParser::c1_0_3 = 0x00; -#endif - -#if __ALIGNMENT2 == 1 -UINT16 DifParser::nV = *( ( UINT16* ) "V" ); -#else -sal_Char DifParser::cV_0 = 'V'; -sal_Char DifParser::cV_1 = 0x00; -#endif - - +const sal_Unicode pKeyTABLE[] = { 'T', 'A', 'B', 'L', 'E', 0 }; +const sal_Unicode pKeyVECTORS[] = { 'V', 'E', 'C', 'T', 'O', 'R', 'S', 0 }; +const sal_Unicode pKeyTUPLES[] = { 'T', 'U', 'P', 'L', 'E', 'S', 0 }; +const sal_Unicode pKeyDATA[] = { 'D', 'A', 'T', 'A', 0 }; +const sal_Unicode pKeyBOT[] = { 'B', 'O', 'T', 0 }; +const sal_Unicode pKeyEOD[] = { 'E', 'O', 'D', 0 }; +const sal_Unicode pKeyERROR[] = { 'E', 'R', 'R', 'O', 'R', 0 }; +const sal_Unicode pKeyTRUE[] = { 'T', 'R', 'U', 'E', 0 }; +const sal_Unicode pKeyFALSE[] = { 'F', 'A', 'L', 'S', 'E', 0 }; +const sal_Unicode pKeyNA[] = { 'N', 'A', 0 }; +const sal_Unicode pKeyV[] = { 'V', 0 }; +const sal_Unicode pKey1_0[] = { '1', ',', '0', 0 }; FltError ScImportDif( SvStream& rIn, ScDocument* pDoc, const ScAddress& rInsPos, const CharSet eVon, UINT32 nDifOption ) { DifParser aDifParser( rIn, nDifOption, *pDoc, eVon ); + const BOOL bPlain = aDifParser.IsPlain(); UINT16 nBaseTab = rInsPos.Tab(); @@ -136,7 +110,7 @@ FltError ScImportDif( SvStream& rIn, ScDocument* pDoc, const ScAddress& rInsPos, BOOL bSyntErrWarn = FALSE; BOOL bOverflowWarn = FALSE; - ByteString& rData = aDifParser.aData; + String& rData = aDifParser.aData; BOOL bData = FALSE; UINT16 nNumCols = 0; @@ -144,7 +118,7 @@ FltError ScImportDif( SvStream& rIn, ScDocument* pDoc, const ScAddress& rInsPos, rIn.Seek( 0 ); - FilterProgressBar aPrgrsBar( rIn ); + ScfStreamProgressBar aPrgrsBar( rIn, pDoc->GetDocumentShell() ); while( eTopic != T_DATA && eTopic != T_END ) { @@ -161,7 +135,7 @@ FltError ScImportDif( SvStream& rIn, ScDocument* pDoc, const ScAddress& rInsPos, if( aDifParser.nVector != 0 || aDifParser.nVal != 1 ) bSyntErrWarn = TRUE; if( bData ) - pDoc->RenameTab( nBaseTab, String( rData, eVon ) ); + pDoc->RenameTab( nBaseTab, rData ); } break; case T_VECTORS: @@ -261,13 +235,13 @@ FltError ScImportDif( SvStream& rIn, ScDocument* pDoc, const ScAddress& rInsPos, aDifParser.nNumFormat ); } else if( rData == pKeyNA || rData == pKeyERROR ) - pCell = new ScStringCell( String( rData, eVon ) ); + pCell = new ScStringCell( rData ); else { - ByteString aTmp( "#IND: " ); + String aTmp( RTL_CONSTASCII_USTRINGPARAM( "#IND: " )); aTmp += rData; - aTmp += '?'; - pCell = new ScStringCell( String( aTmp, eVon ) ); + aTmp += sal_Unicode('?'); + pCell = new ScStringCell( aTmp ); } pDoc->PutCell( nColCnt, nRowCnt, nBaseTab, pCell, ( BOOL ) TRUE ); @@ -286,7 +260,7 @@ FltError ScImportDif( SvStream& rIn, ScDocument* pDoc, const ScAddress& rInsPos, if( rData.Len() > 0 ) { pDoc->PutCell( nColCnt, nRowCnt, nBaseTab, - ScBaseCell::CreateTextCell( String( rData, eVon ), pDoc ), ( BOOL ) TRUE ); + ScBaseCell::CreateTextCell( rData, pDoc ), ( BOOL ) TRUE ); } } else @@ -326,6 +300,14 @@ DifParser::DifParser( SvStream& rNewIn, const UINT32 nOption, ScDocument& rDoc, rIn( rNewIn ) { eCharSet = e; + if ( rIn.GetStreamCharSet() != eCharSet ) + { + DBG_ERRORFILE( "CharSet passed overrides and modifies StreamCharSet" ); + rIn.SetStreamCharSet( eCharSet ); + } + if ( eCharSet == RTL_TEXTENCODING_UNICODE ) + rIn.StartReadingUnicodeText(); + bPlain = ( nOption == SC_DIFOPT_PLAIN ); if( bPlain ) @@ -339,22 +321,33 @@ TOPIC DifParser::GetNextTopic( void ) { enum STATE { S_VectorVal, S_Data, S_END, S_START, S_UNKNOWN, S_ERROR_L2 }; - static const sal_Char* ppKeys[] = + static const sal_Unicode pKeyLABEL[] = { 'L', 'A', 'B', 'E', 'L', 0 }; + static const sal_Unicode pKeyCOMMENT[] = { 'C', 'O', 'M', 'M', 'E', 'N', 'T', 0 }; + static const sal_Unicode pKeySIZE[] = { 'S', 'I', 'Z', 'E', 0 }; + static const sal_Unicode pKeyPERIODICITY[] = { 'P', 'E', 'R', 'I', 'O', 'D', 'I', 'C', 'I', 'T', 'Y', 0 }; + static const sal_Unicode pKeyMAJORSTART[] = { 'M', 'A', 'J', 'O', 'R', 'S', 'T', 'A', 'R', 'T', 0 }; + static const sal_Unicode pKeyMINORSTART[] = { 'M', 'I', 'N', 'O', 'R', 'S', 'T', 'A', 'R', 'T', 0 }; + static const sal_Unicode pKeyTRUELENGTH[] = { 'T', 'R', 'U', 'E', 'L', 'E', 'N', 'G', 'T', 'H', 0 }; + static const sal_Unicode pKeyUINITS[] = { 'U', 'I', 'N', 'I', 'T', 'S', 0 }; + static const sal_Unicode pKeyDISPLAYUNITS[] = { 'D', 'I', 'S', 'P', 'L', 'A', 'Y', 'U', 'N', 'I', 'T', 'S', 0 }; + static const sal_Unicode pKeyUNKNOWN[] = { 0 }; + + static const sal_Unicode* ppKeys[] = { pKeyTABLE, // 0 pKeyVECTORS, pKeyTUPLES, pKeyDATA, - "LABEL", - "COMMENT", // 5 - "SIZE", - "PERIODICITY", - "MAJORSTART", - "MINORSTART", - "TRUELENGTH", // 10 - "UINITS", - "DISPLAYUNITS", - "" // 13 + pKeyLABEL, + pKeyCOMMENT, // 5 + pKeySIZE, + pKeyPERIODICITY, + pKeyMAJORSTART, + pKeyMINORSTART, + pKeyTRUELENGTH, // 10 + pKeyUINITS, + pKeyDISPLAYUNITS, + pKeyUNKNOWN // 13 }; static const TOPIC pTopics[] = @@ -377,7 +370,7 @@ TOPIC DifParser::GetNextTopic( void ) STATE eS = S_START; BOOL bValOverflow = FALSE; - ByteString aLine; + String aLine; nVector = 0; nVal = 0; @@ -385,7 +378,7 @@ TOPIC DifParser::GetNextTopic( void ) while( eS != S_END ) { - if( !rIn.ReadLine( aLine ) ) + if( !rIn.ReadUniOrByteStringLine( aLine ) ) { eS = S_END; eRet = T_END; @@ -395,7 +388,7 @@ TOPIC DifParser::GetNextTopic( void ) { case S_START: { - const sal_Char* pRef; + const sal_Unicode* pRef; UINT16 nCnt = 0; BOOL bSearch = TRUE; @@ -425,7 +418,7 @@ TOPIC DifParser::GetNextTopic( void ) break; case S_VectorVal: { - const sal_Char* pCur = aLine.GetBuffer(); + const sal_Unicode* pCur = aLine.GetBuffer(); pCur = ScanIntVal( pCur, nVector ); @@ -455,10 +448,10 @@ TOPIC DifParser::GetNextTopic( void ) #endif case S_UNKNOWN: // 2 Zeilen ueberlesen - rIn.ReadLine( aLine ); + rIn.ReadUniOrByteStringLine( aLine ); case S_ERROR_L2: // Fehler in Line 2 aufgetreten // eine Zeile ueberlesen - rIn.ReadLine( aLine ); + rIn.ReadUniOrByteStringLine( aLine ); eS = S_END; break; #ifdef DBG_UTIL @@ -472,15 +465,16 @@ TOPIC DifParser::GetNextTopic( void ) } -void lcl_DeEscapeQuotesDif( ByteString& rString ) +void lcl_DeEscapeQuotesDif( String& rString ) { // Special handling for DIF import: Escaped (duplicated) quotes are resolved. // Single quote characters are left in place because older versions didn't // escape quotes in strings (and Excel doesn't when using the clipboard). // The quotes around the string are removed before this function is called. + static const sal_Unicode aDQ[] = { '"', '"', 0 }; xub_StrLen nPos = 0; - while ( (nPos = rString.Search( "\"\"", nPos )) != STRING_NOTFOUND ) + while ( (nPos = rString.Search( aDQ, nPos )) != STRING_NOTFOUND ) { rString.Erase( nPos, 1 ); ++nPos; @@ -491,10 +485,10 @@ void lcl_DeEscapeQuotesDif( ByteString& rString ) DATASET DifParser::GetNextDataset( void ) { DATASET eRet = D_UNKNOWN; - ByteString aLine; - const sal_Char* pAkt; + String aLine; + const sal_Unicode* pAkt; - rIn.ReadLine( aLine ); + rIn.ReadUniOrByteStringLine( aLine ); pAkt = aLine.GetBuffer(); @@ -505,7 +499,7 @@ DATASET DifParser::GetNextDataset( void ) if( Is1_0( pAkt ) ) { - rIn.ReadLine( aLine ); + rIn.ReadUniOrByteStringLine( aLine ); if( IsBOT( aLine.GetBuffer() ) ) eRet = D_BOT; else if( IsEOD( aLine.GetBuffer() ) ) @@ -527,7 +521,7 @@ DATASET DifParser::GetNextDataset( void ) else { // ...und zur Strafe mit'm Numberformatter... DBG_ASSERT( pNumFormatter, "-DifParser::GetNextDataset(): No Formatter, more fun!" ); - String aTestVal( pAkt, eCharSet ); + String aTestVal( pAkt ); ULONG nFormat = 0; double fTmpVal; if( pNumFormatter->IsNumberFormat( aTestVal, nFormat, fTmpVal ) ) @@ -539,14 +533,14 @@ DATASET DifParser::GetNextDataset( void ) else eRet = D_SYNT_ERROR; } - rIn.ReadLine( aData ); + rIn.ReadUniOrByteStringLine( aData ); if ( eRet == D_SYNT_ERROR ) { // for broken records write "#ERR: data" to cell - ByteString aTmp( "#ERR: " ); + String aTmp( RTL_CONSTASCII_USTRINGPARAM( "#ERR: " )); aTmp += pAkt; - aTmp += " ("; + aTmp.AppendAscii( " (" ); aTmp += aData; - aTmp += ')'; + aTmp += sal_Unicode(')'); aData = aTmp; eRet = D_STRING; } @@ -555,7 +549,7 @@ DATASET DifParser::GetNextDataset( void ) case '1': // String Data if( Is1_0( aLine.GetBuffer() ) ) { - rIn.ReadLine( aLine ); + rIn.ReadUniOrByteStringLine( aLine ); DBG_ASSERT( aLine.Len() >= 2, "*DifParser::GetNextTopic(): Text ist zu kurz (mind. \"\")!" ); aData = aLine.Copy( 1, aLine.Len() - 2 ); @@ -566,7 +560,7 @@ DATASET DifParser::GetNextDataset( void ) } if( eRet == D_UNKNOWN ) - rIn.ReadLine( aLine ); + rIn.ReadUniOrByteStringLine( aLine ); if( rIn.IsEof() ) eRet = D_EOD; @@ -575,9 +569,9 @@ DATASET DifParser::GetNextDataset( void ) } -const sal_Char* DifParser::ScanIntVal( const sal_Char* pStart, UINT32& rRet ) +const sal_Unicode* DifParser::ScanIntVal( const sal_Unicode* pStart, UINT32& rRet ) { - sal_Char cAkt = *pStart; + sal_Unicode cAkt = *pStart; if( IsNumber( cAkt ) ) rRet = ( UINT32 ) ( cAkt - '0' ); @@ -600,7 +594,7 @@ const sal_Char* DifParser::ScanIntVal( const sal_Char* pStart, UINT32& rRet ) } -BOOL DifParser::ScanFloatVal( const sal_Char* pStart ) +BOOL DifParser::ScanFloatVal( const sal_Unicode* pStart ) { double fNewVal = 0.0; BOOL bNeg = FALSE; @@ -610,7 +604,7 @@ BOOL DifParser::ScanFloatVal( const sal_Char* pStart ) BOOL bExpOverflow = FALSE; static const UINT16 nExpLimit = 4096; // ACHTUNG: muss genauer ermittelt werden! - sal_Char cAkt; + sal_Unicode cAkt; BOOL bRet = FALSE; enum STATE { S_FIRST, S_PRE, S_POST, S_EXP_FIRST, S_EXP, S_END, S_FINDEND }; diff --git a/sc/source/filter/excel/biffdump.cxx b/sc/source/filter/excel/biffdump.cxx index 9b28ff605d7b..e348e4006eeb 100644 --- a/sc/source/filter/excel/biffdump.cxx +++ b/sc/source/filter/excel/biffdump.cxx @@ -2,9 +2,9 @@ * * $RCSfile: biffdump.cxx,v $ * - * $Revision: 1.53 $ + * $Revision: 1.54 $ * - * last change: $Author: dr $ $Date: 2002-12-09 13:43:55 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:28 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -85,7 +85,7 @@ #include #include -#include +#include #ifndef SC_DOCUMENT_HXX #include "document.hxx" @@ -93,15 +93,17 @@ #ifndef SC_SCGLOB_HXX #include "global.hxx" #endif + +#ifndef SC_FPROGRESSBAR_HXX +#include "fprogressbar.hxx" +#endif #ifndef SC_XLTOOLS_HXX #include "xltools.hxx" #endif + #ifndef _FLTTOOLS_HXX #include "flttools.hxx" #endif -#ifndef _FLTPRGRS_HXX -#include "fltprgrs.hxx" -#endif #ifndef _IMP_OP_HXX #include "imp_op.hxx" #endif @@ -258,8 +260,7 @@ static void __AddPureBin( ByteString& r, UINT32 nVal ) inline static void __AddDec( ByteString& r, UINT32 n ) { sal_Char p[ 32 ]; - sprintf( p, "%u", n ); - + sprintf( p, "%u", n ); // #100211# - checked r += p; } @@ -279,8 +280,7 @@ inline static void __AddDec( ByteString& r, UINT8 n ) inline static void __AddDec( ByteString& r, INT32 n ) { sal_Char p[ 32 ]; - sprintf( p, "%d", n ); - + sprintf( p, "%d", n ); // #100211# - checked r += p; } @@ -290,6 +290,11 @@ inline static void __AddDec( ByteString& r, INT16 n ) __AddDec( r, ( INT32 ) n ); } +inline static void __AddDec( ByteString& r, INT8 n ) +{ + __AddDec( r, ( INT32 ) n ); +} + static void __AddDec( ByteString& r, UINT32 nVal, UINT16 nNumOfDig, sal_Char c = ' ' ) { @@ -313,9 +318,7 @@ inline static void __AddDec1616( ByteString& r, UINT32 n ) static void __AddDouble( ByteString& r, const double f ) { - String aStr; - SolarMath::DoubleToString( aStr, f, 'G', 15, '.', TRUE ); - r += ByteString( aStr, RTL_TEXTENCODING_ASCII_US ); + r += ByteString( ::rtl::math::doubleToString( f, rtl_math_StringFormat_G, 15, '.', TRUE ) ); } @@ -642,8 +645,8 @@ DUMP_ERR::~DUMP_ERR() #define PreDump(LEN) {rIn.PushPosition();ContDump(LEN);rIn.PopPosition();} #define ADDCELLHEAD() {UINT16 nR,nC,nX;rIn>>nR>>nC>>nX;__AddCellHead(t,nC,nR,nX);} #define STARTFLAG() {ADDTEXT( "flags (" ); __AddHex( t, __nFlags ); ADDTEXT( "):" );} -#define ADDFLAG(mask,text) {if( __nFlags & mask ) t += text;} -#define ADDRESERVED(mask) ADDFLAG(mask," !RESERVED!") +#define ADDFLAG(mask,text) {if( __nFlags & mask ) t.Append( ' ' ).Append( text );} +#define ADDRESERVED(mask) ADDFLAG(mask,"!RESERVED!") UINT16 Biff8RecDumper::DumpXF( XclImpStream& rIn, const sal_Char* pPre ) @@ -910,7 +913,7 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) case 0x005D: // OBJ case 0x00EC: // MSODRAWING case 0x01B6: // TXO - pIn->InitializeRecord( FALSE ); + pIn->InitializeRecord( false ); break; default: pIn->InitializeRecord( bReadContRecs ); @@ -1027,9 +1030,9 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) { ADDTEXT( " " ); STARTFLAG(); - ADDFLAG( 0x01, " fAlwaysCalc" ); - ADDFLAG( 0x02, " fCalcOnLoad" ); - ADDFLAG( 0x08, " fShrFmla" ); + ADDFLAG( 0x01, "fAlwaysCalc" ); + ADDFLAG( 0x02, "fCalcOnLoad" ); + ADDFLAG( 0x08, "fShrFmla" ); } PRINT(); LINESTART(); @@ -1085,13 +1088,13 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) rIn >> __nFlags >> n8 >> nNameText >> nNameDef >> n16 >> n16 >> n8 >> n8 >> n8 >> n8; LINESTART(); STARTFLAG(); - ADDFLAG( 0x0001, " fHidden" ); - ADDFLAG( 0x0002, " fFunc" ); - ADDFLAG( 0x0004, " fVBProc" ); - ADDFLAG( 0x0008, " fProc" ); - ADDFLAG( 0x0010, " fCalcExp" ); - ADDFLAG( 0x0020, " fBuiltIn" ); - ADDFLAG( 0x1000, " fBig" ); + ADDFLAG( 0x0001, "fHidden" ); + ADDFLAG( 0x0002, "fFunc" ); + ADDFLAG( 0x0004, "fVBProc" ); + ADDFLAG( 0x0008, "fProc" ); + ADDFLAG( 0x0010, "fCalcExp" ); + ADDFLAG( 0x0020, "fBuiltIn" ); + ADDFLAG( 0x1000, "fBig" ); ADDRESERVED( 0xE000 ); ADDTEXT( " Fn grp index: " ); __AddDec( t, (UINT16)((__nFlags & 0x0FC0) >> 6) ); @@ -1192,10 +1195,10 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) ADDTEXT( "/20pt " ); rIn >> __nFlags; STARTFLAG(); - ADDFLAG( 0x0002, " fItalic" ); - ADDFLAG( 0x0008, " fStrikeout" ); - ADDFLAG( 0x0010, " fOutline" ); - ADDFLAG( 0x0020, " fShadow" ); + ADDFLAG( 0x0002, "fItalic" ); + ADDFLAG( 0x0008, "fStrikeout" ); + ADDFLAG( 0x0010, "fOutline" ); + ADDFLAG( 0x0020, "fShadow" ); ADDRESERVED( 0xFFC5 ); PRINT(); LINESTART(); @@ -1236,7 +1239,7 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) { LINESTART(); STARTFLAG(); - ADDFLAG( 0x0001, " fReadOnlyRec" ); + ADDFLAG( 0x0001, "fReadOnlyRec" ); PRINT(); } DumpValidPassword( rIn, pPre ); @@ -1260,10 +1263,10 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) rIn >> __nFlags; LINESTART(); STARTFLAG(); - ADDFLAG( 0x0001, " fHidden" ); + ADDFLAG( 0x0001, "fHidden" ); ADDTEXT( " outlnlev=" ); __AddDec( t, (UINT16)((__nFlags & 0x0700) >> 8) ); - ADDFLAG( 0x1000, " fCollapsed" ); + ADDFLAG( 0x1000, "fCollapsed" ); ADDRESERVED( 0xE8FE ); PRINT(); LINESTART(); @@ -1304,22 +1307,22 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) STARTFLAG(); if( __nFlags & 0x00F1 ) { - ADDFLAG( 0x0001, " fShowAutoBreaks" ); - ADDFLAG( 0x0010, " fDialog" ); - ADDFLAG( 0x0020, " fApplyStyles" ); - ADDFLAG( 0x0040, " fRowSumsBelow" ); - ADDFLAG( 0x0080, " fColSumsBelow" ); + ADDFLAG( 0x0001, "fShowAutoBreaks" ); + ADDFLAG( 0x0010, "fDialog" ); + ADDFLAG( 0x0020, "fApplyStyles" ); + ADDFLAG( 0x0040, "fRowSumsBelow" ); + ADDFLAG( 0x0080, "fColSumsBelow" ); PRINT(); LINESTART(); } if( __nFlags & (0xCD00 | 0x320E) ) { ADDTEXT( " " ); - ADDFLAG( 0x0100, " fFitToPage" ); - ADDFLAG( 0x0400, " fDispRowGuts" ); - ADDFLAG( 0x0800, " fDispColGuts" ); - ADDFLAG( 0x4000, " fAee" ); - ADDFLAG( 0x8000, " fAfe" ); + ADDFLAG( 0x0100, "fFitToPage" ); + ADDFLAG( 0x0400, "fDispRowGuts" ); + ADDFLAG( 0x0800, "fDispColGuts" ); + ADDFLAG( 0x4000, "fAee" ); + ADDFLAG( 0x8000, "fAfe" ); ADDRESERVED( 0x320E ); PRINT(); } @@ -1370,12 +1373,12 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) ADDDEC( 2 ); rIn >> __nFlags; STARTFLAG(); - ADDFLAG( 0x0003, " fJoin" ); - ADDFLAG( 0x0004, " fSimpleEq1" ); - ADDFLAG( 0x0008, " fSimpleEq2" ); - ADDFLAG( 0x0010, " fTop10" ); - ADDFLAG( 0x0020, " fTop" ); - ADDFLAG( 0x0040, " fPercent" ); + ADDFLAG( 0x0003, "fJoin" ); + ADDFLAG( 0x0004, "fSimpleEq1" ); + ADDFLAG( 0x0008, "fSimpleEq2" ); + ADDFLAG( 0x0010, "fTop10" ); + ADDFLAG( 0x0020, "fTop" ); + ADDFLAG( 0x0040, "fPercent" ); PRINT(); LINESTART(); if( __nFlags & 0x0003 ) @@ -1487,14 +1490,14 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) LINESTART(); rIn >> __nFlags; STARTFLAG(); - ADDFLAG( 0x0001, " fLeftRight" ); - ADDFLAG( 0x0002, " fPortrait" ); - ADDFLAG( 0x0004, " fNoPrintSettings" ); - ADDFLAG( 0x0008, " fMonochrom" ); - ADDFLAG( 0x0010, " fDraft" ); - ADDFLAG( 0x0020, " fNotes" ); - ADDFLAG( 0x0040, " fNoOrientation" ); - ADDFLAG( 0x0080, " fCustomNumber" ); + ADDFLAG( 0x0001, "fLeftRight" ); + ADDFLAG( 0x0002, "fPortrait" ); + ADDFLAG( 0x0004, "fNoPrintSettings" ); + ADDFLAG( 0x0008, "fMonochrom" ); + ADDFLAG( 0x0010, "fDraft" ); + ADDFLAG( 0x0020, "fNotes" ); + ADDFLAG( 0x0040, "fNoOrientation" ); + ADDFLAG( 0x0080, "fCustomNumber" ); PRINT(); LINESTART(); ADDTEXT( "Print res: " ); ADDDEC( 2 ); @@ -1575,15 +1578,15 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) { LINESTART(); STARTFLAG(); - ADDFLAG( 0x0001, " fRowGrand" ); - ADDFLAG( 0x0002, " fColGrand" ); - ADDFLAG( 0x0008, " fAutoFormat" ); - ADDFLAG( 0x0010, " fWidthHeightAuto" ); - ADDFLAG( 0x0020, " fFontAuto" ); - ADDFLAG( 0x0040, " fAlignAuto" ); - ADDFLAG( 0x0080, " fBorderAuto" ); - ADDFLAG( 0x0100, " fPatternAuto" ); - ADDFLAG( 0x0200, " fNumberAuto" ); + ADDFLAG( 0x0001, "fRowGrand" ); + ADDFLAG( 0x0002, "fColGrand" ); + ADDFLAG( 0x0008, "fAutoFormat" ); + ADDFLAG( 0x0010, "fWidthHeightAuto" ); + ADDFLAG( 0x0020, "fFontAuto" ); + ADDFLAG( 0x0040, "fAlignAuto" ); + ADDFLAG( 0x0080, "fBorderAuto" ); + ADDFLAG( 0x0100, "fPatternAuto" ); + ADDFLAG( 0x0200, "fNumberAuto" ); PRINT(); } LINESTART(); @@ -1617,10 +1620,10 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) ADDTEXT( "):" ); if( __nFlags ) { - ADDFLAG( 0x0001, " row" ); - ADDFLAG( 0x0002, " col" ); - ADDFLAG( 0x0004, " page" ); - ADDFLAG( 0x0008, " data" ); + ADDFLAG( 0x0001, "row" ); + ADDFLAG( 0x0002, "col" ); + ADDFLAG( 0x0004, "page" ); + ADDFLAG( 0x0008, "data" ); } else ADDTEXT( " no axis" ); @@ -1634,18 +1637,18 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) ADDTEXT( "):" ); if( __nFlags ) { - ADDFLAG( 0x0001, " Default" ); - ADDFLAG( 0x0002, " Sum" ); - ADDFLAG( 0x0004, " Counta" ); - ADDFLAG( 0x0008, " Average" ); - ADDFLAG( 0x0010, " Max" ); - ADDFLAG( 0x0020, " Min" ); - ADDFLAG( 0x0040, " Product" ); - ADDFLAG( 0x0080, " Count" ); - ADDFLAG( 0x0100, " Stdev" ); - ADDFLAG( 0x0200, " Stddevp" ); - ADDFLAG( 0x0400, " Var" ); - ADDFLAG( 0x0800, " Varp" ); + ADDFLAG( 0x0001, "Default" ); + ADDFLAG( 0x0002, "Sum" ); + ADDFLAG( 0x0004, "Counta" ); + ADDFLAG( 0x0008, "Average" ); + ADDFLAG( 0x0010, "Max" ); + ADDFLAG( 0x0020, "Min" ); + ADDFLAG( 0x0040, "Product" ); + ADDFLAG( 0x0080, "Count" ); + ADDFLAG( 0x0100, "Stdev" ); + ADDFLAG( 0x0200, "Stddevp" ); + ADDFLAG( 0x0400, "Var" ); + ADDFLAG( 0x0800, "Varp" ); } else ADDTEXT( " none" ); @@ -1700,10 +1703,10 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) { LINESTART(); STARTFLAG(); - ADDFLAG( 0x01, " fHidden" ); - ADDFLAG( 0x02, " fHideDetail" ); - ADDFLAG( 0x04, " fFormula" ); - ADDFLAG( 0x08, " fMissing" ); + ADDFLAG( 0x01, "fHidden" ); + ADDFLAG( 0x02, "fHideDetail" ); + ADDFLAG( 0x04, "fFormula" ); + ADDFLAG( 0x08, "fMissing" ); PRINT(); } LINESTART(); @@ -1771,13 +1774,13 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) LINESTART(); ADDTEXT( pInd ); STARTFLAG(); - ADDFLAG( 0x0001, " fMultiDataName" ); - ADDFLAG( 0x0200, " fSub" ); - ADDFLAG( 0x0400, " fBlock" ); - ADDFLAG( 0x0800, " fGrand" ); - ADDFLAG( 0x1000, " fMultiDataOnAxis" ); - ADDFLAG( 0x2000, " fBlankLine" ); // undocumented - ADDFLAG( 0x4000, " fHideDetail" ); // undocumented + ADDFLAG( 0x0001, "fMultiDataName" ); + ADDFLAG( 0x0200, "fSub" ); + ADDFLAG( 0x0400, "fBlock" ); + ADDFLAG( 0x0800, "fGrand" ); + ADDFLAG( 0x1000, "fMultiDataOnAxis" ); + ADDFLAG( 0x2000, "fBlankLine" ); // undocumented + ADDFLAG( 0x4000, "fHideDetail" ); // undocumented ADDRESERVED( 0x8000 ); PRINT(); LINESTART(); @@ -1966,9 +1969,9 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) ADDTEXT( pPre ); rIn >> __nFlags; STARTFLAG(); - ADDFLAG( 0x0001, " fInIndexList" ); - ADDFLAG( 0x0002, " fNotInList" ); - ADDFLAG( 0x0200, " fLongIndex" ); + ADDFLAG( 0x0001, "fInIndexList" ); + ADDFLAG( 0x0002, "fNotInList" ); + ADDFLAG( 0x0200, "fLongIndex" ); ADDTEXT( " data type: " ); __nFlags &= 0x0DFC; switch( __nFlags ) @@ -2189,33 +2192,33 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) STARTFLAG(); if( __nFlags & 0x009F ) { - ADDFLAG( 0x0001, " fShowAllItems" ); - ADDFLAG( 0x0002, " fDragToRow" ); - ADDFLAG( 0x0004, " fDragToColumn" ); - ADDFLAG( 0x0008, " fDragToPage" ); - ADDFLAG( 0x0010, " fDragToHide" ); - ADDFLAG( 0x0080, " fServerBased" ); + ADDFLAG( 0x0001, "fShowAllItems" ); + ADDFLAG( 0x0002, "fDragToRow" ); + ADDFLAG( 0x0004, "fDragToColumn" ); + ADDFLAG( 0x0008, "fDragToPage" ); + ADDFLAG( 0x0010, "fDragToHide" ); + ADDFLAG( 0x0080, "fServerBased" ); PRINT(); LINESTART(); } if( __nFlags & 0xBF00 ) { ADDTEXT( " " ); - ADDFLAG( 0x0200, " fAutoSort" ); - ADDFLAG( 0x0400, " fAscendSort" ); - ADDFLAG( 0x0800, " fAutoShow" ); - ADDFLAG( 0x1000, " fAscendShow" ); - ADDFLAG( 0x2000, " fCalculatedField" ); + ADDFLAG( 0x0200, "fAutoSort" ); + ADDFLAG( 0x0400, "fAscendSort" ); + ADDFLAG( 0x0800, "fAutoShow" ); + ADDFLAG( 0x1000, "fAscendShow" ); + ADDFLAG( 0x2000, "fCalculatedField" ); PRINT(); LINESTART(); } if( __nFlags & 0x00FF4000 ) { ADDTEXT( " " ); // Layout flags: - ADDFLAG( 0x00004000, " fLONewPage" ); // undocumented - ADDFLAG( 0x00200000, " fLOReport" ); // undocumented - ADDFLAG( 0x00400000, " fLOBlankLine" ); // undocumented - ADDFLAG( 0x00800000, " fLOSubTotalTop" ); // undocumented + ADDFLAG( 0x00004000, "fLONewPage" ); // undocumented + ADDFLAG( 0x00200000, "fLOReport" ); // undocumented + ADDFLAG( 0x00400000, "fLOBlankLine" ); // undocumented + ADDFLAG( 0x00800000, "fLOSubTotalTop" ); // undocumented PRINT(); LINESTART(); } @@ -2308,7 +2311,7 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) LINESTART(); UINT16 __nFlags = Read2( rIn ); STARTFLAG(); - ADDFLAG( 0x0001, " fAuto" ); + ADDFLAG( 0x0001, "fAuto" ); ADDRESERVED( 0xFFFE ); UINT16 nCol1, nRow1, nCol2, nRow2; rIn >> nRow1 >> nRow2 >> nCol1 >> nCol2; @@ -2634,15 +2637,15 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) LINESTART(); UINT16 __nFlags = Read2( rIn ); STARTFLAG(); - ADDFLAG( 0x0001, " fDsplFormulaBar" ); - ADDFLAG( 0x0002, " fDsplStatus" ); - ADDFLAG( 0x0004, " fNoteOff" ); - ADDFLAG( 0x0008, " fDsplHScroll" ); - ADDFLAG( 0x0010, " fDsplVScroll" ); - ADDFLAG( 0x0020, " fBotAdornment" ); - ADDFLAG( 0x0040, " fZoom" ); - ADDFLAG( 0x0080, " fShowPlaceHld" ); - ADDFLAG( 0x0100, " fHideAll" ); + ADDFLAG( 0x0001, "fDsplFormulaBar" ); + ADDFLAG( 0x0002, "fDsplStatus" ); + ADDFLAG( 0x0004, "fNoteOff" ); + ADDFLAG( 0x0008, "fDsplHScroll" ); + ADDFLAG( 0x0010, "fDsplVScroll" ); + ADDFLAG( 0x0020, "fBotAdornment" ); + ADDFLAG( 0x0040, "fZoom" ); + ADDFLAG( 0x0080, "fShowPlaceHld" ); + ADDFLAG( 0x0100, "fHideAll" ); if( !(__nFlags && 0x0180) ) ADDTEXT( " fShowAll" ); PRINT(); @@ -2676,40 +2679,40 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) STARTFLAG(); if( __nFlags & 0x000000FF ) { - ADDFLAG( 0x00000001, " fShowPgBrk" ); - ADDFLAG( 0x00000002, " fDsplForml" ); - ADDFLAG( 0x00000004, " fDsplGrid" ); - ADDFLAG( 0x00000008, " fDsplRCHead" ); - ADDFLAG( 0x00000010, " fDsplGuts" ); - ADDFLAG( 0x00000020, " fDsplZeros" ); - ADDFLAG( 0x00000040, " fPrintHorC" ); - ADDFLAG( 0x00000080, " fPrintVerC" ); + ADDFLAG( 0x00000001, "fShowPgBrk" ); + ADDFLAG( 0x00000002, "fDsplForml" ); + ADDFLAG( 0x00000004, "fDsplGrid" ); + ADDFLAG( 0x00000008, "fDsplRCHead" ); + ADDFLAG( 0x00000010, "fDsplGuts" ); + ADDFLAG( 0x00000020, "fDsplZeros" ); + ADDFLAG( 0x00000040, "fPrintHorC" ); + ADDFLAG( 0x00000080, "fPrintVerC" ); PRINT(); LINESTART(); } if( __nFlags & 0x00007F00 ) { ADDTEXT( " " ); - ADDFLAG( 0x00000100, " fPrintRCHead" ); - ADDFLAG( 0x00000200, " fPrintGrid" ); - ADDFLAG( 0x00000400, " fFitToPage" ); - ADDFLAG( 0x00000800, " fPrintArea" ); - ADDFLAG( 0x00001000, " fOnePrintArea" ); - ADDFLAG( 0x00002000, " fFilter" ); - ADDFLAG( 0x00004000, " fAutoFilter" ); + ADDFLAG( 0x00000100, "fPrintRCHead" ); + ADDFLAG( 0x00000200, "fPrintGrid" ); + ADDFLAG( 0x00000400, "fFitToPage" ); + ADDFLAG( 0x00000800, "fPrintArea" ); + ADDFLAG( 0x00001000, "fOnePrintArea" ); + ADDFLAG( 0x00002000, "fFilter" ); + ADDFLAG( 0x00004000, "fAutoFilter" ); PRINT(); LINESTART(); } if( __nFlags & 0xFFF80000 ) { ADDTEXT( " " ); - ADDFLAG( 0x00020000, " fSplitV" ); - ADDFLAG( 0x00040000, " fSplitH" ); - ADDFLAG( 0x00180000, " fHiddenRow" ); - ADDFLAG( 0x00200000, " fHiddenCol" ); - ADDFLAG( 0x01000000, " fChartSize" ); - ADDFLAG( 0x02000000, " fFilterUnique" ); - ADDFLAG( 0x04000000, " fLayoutView" ); + ADDFLAG( 0x00020000, "fSplitV" ); + ADDFLAG( 0x00040000, "fSplitH" ); + ADDFLAG( 0x00180000, "fHiddenRow" ); + ADDFLAG( 0x00200000, "fHiddenCol" ); + ADDFLAG( 0x01000000, "fChartSize" ); + ADDFLAG( 0x02000000, "fFilterUnique" ); + ADDFLAG( 0x04000000, "fLayoutView" ); ADDRESERVED( 0xF8C18000 ); PRINT(); LINESTART(); @@ -2741,12 +2744,12 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) LINESTART(); rIn >> __nFlags; STARTFLAG(); - ADDFLAG( 0x0001, " fTitles" ); - ADDFLAG( 0x0002, " fRowNums" ); - ADDFLAG( 0x0004, " fDisRefr" ); - ADDFLAG( 0x0080, " fFill" ); - ADDFLAG( 0x0100, " fAutoFmt" ); - ADDFLAG( 0x0400, " fDisEdit" ); + ADDFLAG( 0x0001, "fTitles" ); + ADDFLAG( 0x0002, "fRowNums" ); + ADDFLAG( 0x0004, "fDisRefr" ); + ADDFLAG( 0x0080, "fFill" ); + ADDFLAG( 0x0100, "fAutoFmt" ); + ADDFLAG( 0x0400, "fDisEdit" ); ADDRESERVED( 0xFA78 ); PRINT(); LINESTART(); @@ -2809,7 +2812,7 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) rIn >> __nFlags; ADDTEXT( " " ); STARTFLAG(); - ADDFLAG( 0x0001, " fToughRecalc" ); + ADDFLAG( 0x0001, "fToughRecalc" ); ADDRESERVED( 0xFFFE ); PRINT(); LINESTART(); @@ -3017,9 +3020,9 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) __AddPureBin( t, __nFlags ); ADDTEXT( ")" ); ADDTEXT( "):" ); - ADDFLAG( 0x0001, " fWnClosed" ); - ADDFLAG( 0x0002, " fWnPinned" ); - ADDFLAG( 0x0004, " fCached" ); + ADDFLAG( 0x0001, "fWnClosed" ); + ADDFLAG( 0x0002, "fWnPinned" ); + ADDFLAG( 0x0004, "fCached" ); PRINT(); LINESTART(); ADDTEXT( "input window: " ); @@ -3051,11 +3054,11 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) if( __nFlags ) { ADDTEXT( " " ); - ADDFLAG( 0x00000080, " fStrLookup" ); - ADDFLAG( 0x00000100, " fAllowBlank" ); - ADDFLAG( 0x00000200, " fSuppressCombo" ); - ADDFLAG( 0x00040000, " fShowInputMsg" ); - ADDFLAG( 0x00080000, " fShowErrorMsg" ); + ADDFLAG( 0x00000080, "fStrLookup" ); + ADDFLAG( 0x00000100, "fAllowBlank" ); + ADDFLAG( 0x00000200, "fSuppressCombo" ); + ADDFLAG( 0x00040000, "fShowInputMsg" ); + ADDFLAG( 0x00080000, "fShowErrorMsg" ); } PRINT(); LINESTART(); @@ -3170,12 +3173,12 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) UINT32 __nFlags = Read4( rIn ); LINESTART(); STARTFLAG(); - ADDFLAG( 0x00000001, " fBody" ); - ADDFLAG( 0x00000002, " fAbs" ); - ADDFLAG( 0x00000014, " fDescr" ); - ADDFLAG( 0x00000008, " fMark" ); - ADDFLAG( 0x00000080, " fFrame" ); - ADDFLAG( 0x00000100, " fUNC" ); + ADDFLAG( 0x00000001, "fBody" ); + ADDFLAG( 0x00000002, "fAbs" ); + ADDFLAG( 0x00000014, "fDescr" ); + ADDFLAG( 0x00000008, "fMark" ); + ADDFLAG( 0x00000080, "fFrame" ); + ADDFLAG( 0x00000100, "fUNC" ); ADDRESERVED( 0xFFFFFE60 ); PRINT(); @@ -3347,10 +3350,10 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) STARTFLAG(); ADDTEXT( " outlnlev=" ); __AddDec( t, (UINT16)(__nFlags & 0x0007) ); - ADDFLAG( 0x0010, " fCollapsed" ); - ADDFLAG( 0x0020, " fRowHeightZero" ); - ADDFLAG( 0x0040, " fUnsynced" ); - ADDFLAG( 0x0080, " fGhostDirty" ); + ADDFLAG( 0x0010, "fCollapsed" ); + ADDFLAG( 0x0020, "fRowHeightZero" ); + ADDFLAG( 0x0040, "fUnsynced" ); + ADDFLAG( 0x0080, "fGhostDirty" ); ADDRESERVED( 0xFF08 ); PRINT(); UINT16 nXF; @@ -3359,8 +3362,8 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) ADDTEXT( "ix to XF: " ); __AddDec( t, (UINT16)(nXF & 0x0FFF) ); ADDTEXT( " add. flags(" ); __AddHex( t, nXF ); ADDTEXT( "):" ); - ADDFLAG( 0x1000, " fExAsc" ); - ADDFLAG( 0x2000, " fExDsc" ); + ADDFLAG( 0x1000, "fExAsc" ); + ADDFLAG( 0x2000, "fExDsc" ); ADDRESERVED( 0xC000 ); PRINT(); } @@ -3378,8 +3381,8 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) PRINT(); LINESTART(); STARTFLAG(); - ADDFLAG( 0x0001, " fAlwaysCalc" ); - ADDFLAG( 0x0002, " fCalcOnLoad" ); + ADDFLAG( 0x0001, "fAlwaysCalc" ); + ADDFLAG( 0x0002, "fCalcOnLoad" ); ADDRESERVED( 0xFFFC ); PRINT(); LINESTART(); @@ -3399,10 +3402,10 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) LINESTART(); ADDTEXT( "default row " ); STARTFLAG(); - ADDFLAG( 0x0001, " fUnsynced" ); - ADDFLAG( 0x0002, " fRowHtZero" ); - ADDFLAG( 0x0004, " fExAsc" ); - ADDFLAG( 0x0008, " fExDsc" ); + ADDFLAG( 0x0001, "fUnsynced" ); + ADDFLAG( 0x0002, "fRowHtZero" ); + ADDFLAG( 0x0004, "fExAsc" ); + ADDFLAG( 0x0008, "fExDsc" ); ADDRESERVED( 0xFFF0 ); PRINT(); LINESTART(); @@ -3466,17 +3469,17 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) LINESTART(); rIn >> __nFlags; STARTFLAG(); - ADDFLAG( 0x0001, " fImportPRE" ); - ADDFLAG( 0x0002, " fIgnoreSep" ); - ADDFLAG( 0x0004, " fUseSetting" ); - ADDFLAG( 0x0010, " fIgnoreDate" ); - ADDFLAG( 0x0020, " fWhatIsIt?" ); + ADDFLAG( 0x0001, "fImportPRE" ); + ADDFLAG( 0x0002, "fIgnoreSep" ); + ADDFLAG( 0x0004, "fUseSetting" ); + ADDFLAG( 0x0010, "fIgnoreDate" ); + ADDFLAG( 0x0020, "fWhatIsIt?" ); ADDRESERVED( 0xFFC8 ); PRINT(); LINESTART(); rIn >> __nFlags; STARTFLAG(); - ADDFLAG( 0x0002, " fTables" ); + ADDFLAG( 0x0002, "fTables" ); ADDRESERVED( 0xFFFD ); PRINT(); LINESTART(); @@ -3558,14 +3561,14 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) STARTFLAG(); if( __nFlags ) { - ADDFLAG( 0x00000001, " fWin" ); - ADDFLAG( 0x00000002, " fRisc" ); - ADDFLAG( 0x00000004, " fBeta" ); - ADDFLAG( 0x00000008, " fWinAny" ); - ADDFLAG( 0x00000010, " fMacAny" ); - ADDFLAG( 0x00000020, " fBetaAny" ); - ADDFLAG( 0x00000100, " fRiscAny" ); - ADDFLAG( 0xFFFFE0C0, " fXxxxxxx" ); + ADDFLAG( 0x00000001, "fWin" ); + ADDFLAG( 0x00000002, "fRisc" ); + ADDFLAG( 0x00000004, "fBeta" ); + ADDFLAG( 0x00000008, "fWinAny" ); + ADDFLAG( 0x00000010, "fMacAny" ); + ADDFLAG( 0x00000020, "fBetaAny" ); + ADDFLAG( 0x00000100, "fRiscAny" ); + ADDRESERVED( 0xFFFFE0C0 ); } PRINT(); @@ -3659,8 +3662,8 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) { LINESTART(); STARTFLAG(); - ADDFLAG( 0x0001, " fAuto" ); - ADDFLAG( 0x0004, " fDrawTick" ); + ADDFLAG( 0x0001, "fAuto" ); + ADDFLAG( 0x0004, "fDrawTick" ); PRINT(); } LINESTART(); @@ -3700,9 +3703,9 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) { LINESTART(); STARTFLAG(); - ADDFLAG( 0x0001, " fAuto" ); - ADDFLAG( 0x0010, " fNoBackg" ); - ADDFLAG( 0x0020, " fNoFore" ); + ADDFLAG( 0x0001, "fAuto" ); + ADDFLAG( 0x0010, "fNoBackg" ); + ADDFLAG( 0x0020, "fNoFore" ); ADDRESERVED( 0xFFCE ); PRINT(); } @@ -3735,8 +3738,8 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) { LINESTART(); STARTFLAG(); - ADDFLAG( 0x01, " fAuto" ); - ADDFLAG( 0x02, " fInvertNeg" ); + ADDFLAG( 0x01, "fAuto" ); + ADDFLAG( 0x02, "fInvertNeg" ); PRINT(); } } @@ -3768,7 +3771,7 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) { LINESTART(); STARTFLAG(); - ADDFLAG( 0x0001, " fVaried" ); + ADDFLAG( 0x0001, "fVaried" ); PRINT(); } LINESTART(); @@ -3819,12 +3822,12 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) { LINESTART(); STARTFLAG(); - ADDFLAG( 0x01, " fAutoPosition" ); - ADDFLAG( 0x02, " fAutoSeries" ); - ADDFLAG( 0x04, " fAutoPosX" ); - ADDFLAG( 0x08, " fAutoPosY" ); - ADDFLAG( 0x10, " fVert" ); - ADDFLAG( 0x20, " fWasDataTable" ); + ADDFLAG( 0x01, "fAutoPosition" ); + ADDFLAG( 0x02, "fAutoSeries" ); + ADDFLAG( 0x04, "fAutoPosX" ); + ADDFLAG( 0x08, "fAutoPosY" ); + ADDFLAG( 0x10, "fVert" ); + ADDFLAG( 0x20, "fWasDataTable" ); PRINT(); } } @@ -3845,10 +3848,10 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) { LINESTART(); STARTFLAG(); - ADDFLAG( 0x0001, " fTranspose" ); - ADDFLAG( 0x0002, " fStacked" ); - ADDFLAG( 0x0004, " f100" ); - ADDFLAG( 0x0008, " fHasShadow" ); + ADDFLAG( 0x0001, "fTranspose" ); + ADDFLAG( 0x0002, "fStacked" ); + ADDFLAG( 0x0004, "f100" ); + ADDFLAG( 0x0008, "fHasShadow" ); PRINT(); } } @@ -3938,9 +3941,9 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) { LINESTART(); STARTFLAG(); - ADDFLAG( 0x0001, " fAutoCol" ); - ADDFLAG( 0x0002, " fAutoBack" ); - ADDFLAG( 0x0020, " fAutoRot" ); + ADDFLAG( 0x0001, "fAutoCol" ); + ADDFLAG( 0x0002, "fAutoBack" ); + ADDFLAG( 0x0020, "fAutoRot" ); PRINT(); } LINESTART(); @@ -3969,14 +3972,14 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) { LINESTART(); STARTFLAG(); - ADDFLAG( 0x0001, " fAutoMin" ); - ADDFLAG( 0x0002, " fAutoMax" ); - ADDFLAG( 0x0004, " fAutoMajor" ); - ADDFLAG( 0x0008, " fAutoMinor" ); - ADDFLAG( 0x0010, " fAutoCross" ); - ADDFLAG( 0x0020, " fLogScale" ); - ADDFLAG( 0x0040, " fReverse" ); - ADDFLAG( 0x0080, " fMaxCross" ); + ADDFLAG( 0x0001, "fAutoMin" ); + ADDFLAG( 0x0002, "fAutoMax" ); + ADDFLAG( 0x0004, "fAutoMajor" ); + ADDFLAG( 0x0008, "fAutoMinor" ); + ADDFLAG( 0x0010, "fAutoCross" ); + ADDFLAG( 0x0020, "fLogScale" ); + ADDFLAG( 0x0040, "fReverse" ); + ADDFLAG( 0x0080, "fMaxCross" ); PRINT(); } } @@ -3998,9 +4001,9 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) { LINESTART(); STARTFLAG(); - ADDFLAG( 0x0001, " fBetween" ); - ADDFLAG( 0x0002, " fMaxCross" ); - ADDFLAG( 0x0004, " fReverse" ); + ADDFLAG( 0x0001, "fBetween" ); + ADDFLAG( 0x0002, "fMaxCross" ); + ADDFLAG( 0x0004, "fReverse" ); PRINT(); } } @@ -4092,18 +4095,18 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) { LINESTART(); STARTFLAG(); - ADDFLAG( 0x0001, " fAutoColor" ); - ADDFLAG( 0x0002, " fShowKey" ); - ADDFLAG( 0x0004, " fShowValue" ); - ADDFLAG( 0x0008, " fVert" ); - ADDFLAG( 0x0010, " fAutoText" ); - ADDFLAG( 0x0020, " fGenerated" ); - ADDFLAG( 0x0040, " fDeleted" ); - ADDFLAG( 0x0080, " fAutoMode" ); - ADDFLAG( 0x0800, " fShLabPct" ); - ADDFLAG( 0x1000, " fShowPct" ); - ADDFLAG( 0x2000, " fShowBubbleSizes" ); - ADDFLAG( 0x4000, " fShowLabel" ); + ADDFLAG( 0x0001, "fAutoColor" ); + ADDFLAG( 0x0002, "fShowKey" ); + ADDFLAG( 0x0004, "fShowValue" ); + ADDFLAG( 0x0008, "fVert" ); + ADDFLAG( 0x0010, "fAutoText" ); + ADDFLAG( 0x0020, "fGenerated" ); + ADDFLAG( 0x0040, "fDeleted" ); + ADDFLAG( 0x0080, "fAutoMode" ); + ADDFLAG( 0x0800, "fShLabPct" ); + ADDFLAG( 0x1000, "fShowPct" ); + ADDFLAG( 0x2000, "fShowBubbleSizes" ); + ADDFLAG( 0x4000, "fShowLabel" ); PRINT(); } LINESTART(); @@ -4171,8 +4174,8 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) { LINESTART(); STARTFLAG(); - ADDFLAG( 0x01, " fAutoSize" ); - ADDFLAG( 0x02, " fAutoPosition" ); + ADDFLAG( 0x01, "fAutoSize" ); + ADDFLAG( 0x02, "fAutoPosition" ); PRINT(); } } @@ -4310,7 +4313,7 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) { LINESTART(); STARTFLAG(); - ADDFLAG( 0x01, " fCustomIfmt" ); + ADDFLAG( 0x01, "fCustomIfmt" ); PRINT(); } LINESTART(); @@ -4410,14 +4413,14 @@ void Biff8RecDumper::RecDump( BOOL bSubStream ) { LINESTART(); STARTFLAG(); - ADDFLAG( 0x0001, " fAutiMin" ); - ADDFLAG( 0x0002, " fAutoMax" ); - ADDFLAG( 0x0004, " fAutoMajor" ); - ADDFLAG( 0x0008, " fAutoMinor" ); - ADDFLAG( 0x0010, " fDateAxis" ); - ADDFLAG( 0x0020, " fAutoBase" ); - ADDFLAG( 0x0040, " fAutoCross" ); - ADDFLAG( 0x0080, " fAutoDate" ); + ADDFLAG( 0x0001, "fAutoMin" ); + ADDFLAG( 0x0002, "fAutoMax" ); + ADDFLAG( 0x0004, "fAutoMajor" ); + ADDFLAG( 0x0008, "fAutoMinor" ); + ADDFLAG( 0x0010, "fDateAxis" ); + ADDFLAG( 0x0020, "fAutoBase" ); + ADDFLAG( 0x0040, "fAutoCross" ); + ADDFLAG( 0x0080, "fAutoDate" ); PRINT(); } } @@ -4911,9 +4914,9 @@ void Biff8RecDumper::ObjDump( const ULONG nMaxLen ) { ADDTEXT( " " ); STARTFLAG(); - ADDFLAG( 0x0008, " fAsSymbol" ); - ADDFLAG( 0x0002, " fLinked" ); - ADDFLAG( 0x0001, " f1???" ); + ADDFLAG( 0x0008, "fAsSymbol" ); + ADDFLAG( 0x0002, "fLinked" ); + ADDFLAG( 0x0001, "f1???" ); } } break; @@ -4924,12 +4927,12 @@ void Biff8RecDumper::ObjDump( const ULONG nMaxLen ) rIn >> nFmlaLen; if ( sizeof(nFmlaLen) + nFmlaLen == nL ) { - ADDTEXT( "linked\n OLE stream: LNK........ (ID in EXTERNNAME of SUPBOOK)\n XTI: " ); - IGNORE(7); - ADDHEX(2); - ADDTEXT( " Externname: " ); - ADDHEX(2); - IGNORE(3); // MAY be right + ADDTEXT( "linked\n OLE stream: LNK??? (from EXTERNNAME) " ); + rIn >> nFmlaLen; + ADDTEXT( " unknown=" ); ADDHEX( 4 ); + PRINT(); + t.Erase(); + FormulaDump( nFmlaLen, FT_CellFormula ); } else { @@ -4945,22 +4948,20 @@ void Biff8RecDumper::ObjDump( const ULONG nMaxLen ) ADDTEXT( '\n' ); if ( nBytesLeft < 4 ) ADDTEXT( " >> ByteString OVERRUN <<\n" ); - else if ( nBytesLeft == 5 ) + + rIn.Seek( nPos1 + sizeof(nFmlaLen) + nFmlaLen ); + if( rIn.GetRecLeft() == 4 ) { - ADDTEXT( " pad byte " ); - ADDHEX(1); - ADDTEXT( '\n' ); + ADDTEXT( " OLE storage name: MBD" ); + __AddPureHex( t, rIn.ReaduInt32() ); } - else if ( nBytesLeft == 4 ) - ADDTEXT( " no pad byte\n" ); else - ADDTEXT( " oops.. bytes left?!?\n" ); - - ADDTEXT( " OLE stream: MBD" ); - rIn.Seek( nPos1 + sizeof(nFmlaLen) + nFmlaLen ); - UINT32 nOleId; - rIn >> nOleId; - __AddPureHex( t, nOleId ); + { + ADDTEXT( " Ctls stream data: start=" ); + ADDHEX( 4 ); + ADDTEXT( " size=" ); + ADDHEX( 4 ); + } } } break; @@ -5027,12 +5028,10 @@ void Biff8RecDumper::ObjDump( const ULONG nMaxLen ) } -#undef ADDFLAG #undef LINESTART #undef IGNORE #undef ADDHEX #undef ADDDEC -#undef ADDTEXT #undef ADDCOLROW #undef PRINT #undef PreDump @@ -5206,409 +5205,396 @@ void Biff8RecDumper::ContDumpStream( SvStream& rStrm, const ULONG nL ) struct XclDumpFunc { const sal_Char* pName; /// Name of the function. - sal_uInt16 nIndex; /// Excel built-in function index. sal_uInt16 nParam; /// Parameter count for fixed functions. }; const XclDumpFunc pFuncData[] = { - { "COUNT", 0, 0 }, - { "IF", 1, 0 }, - { "ISNA", 2, 1 }, - { "ISERROR", 3, 1 }, - { "SUM", 4, 0 }, - { "AVERAGE", 5, 0 }, - { "MIN", 6, 0 }, - { "MAX", 7, 0 }, - { "ROW", 8, 0 }, - { "COLUMN", 9, 0 }, - { "NA", 10, 0 }, - { "NPV", 11, 0 }, - { "STDEV", 12, 0 }, - { "DOLLAR", 13, 0 }, - { "FIXED", 14, 0 }, - { "SIN", 15, 1 }, - { "COS", 16, 1 }, - { "TAN", 17, 1 }, - { "ATAN", 18, 1 }, - { "PI", 19, 0 }, - { "SQRT", 20, 1 }, - { "EXP", 21, 1 }, - { "LN", 22, 1 }, - { "LOG10", 23, 1 }, - { "ABS", 24, 1 }, - { "INT", 25, 1 }, - { "SIGN", 26, 1 }, - { "ROUND", 27, 2 }, - { "LOOKUP", 28, 0 }, - { "INDEX", 29, 0 }, - { "REPT", 30, 2 }, - { "MID", 31, 3 }, - { "LEN", 32, 1 }, - { "VALUE", 33, 1 }, - { "TRUE", 34, 0 }, - { "FALSE", 35, 0 }, - { "AND", 36, 0 }, - { "OR", 37, 0 }, - { "NOT", 38, 1 }, - { "MOD", 39, 2 }, - { "DCOUNT", 40, 3 }, - { "DSUM", 41, 3 }, - { "DAVERAGE", 42, 3 }, - { "DMIN", 43, 3 }, - { "DMAX", 44, 3 }, - { "DSTDEV", 45, 3 }, - { "VAR", 46, 0 }, - { "DVAR", 47, 3 }, - { "TEXT", 48, 2 }, - { "LINEST", 49, 0 }, - { "TREND", 50, 0 }, - { "LOGEST", 51, 0 }, - { "GROWTH", 52, 0 }, - { "GOTO", 53 }, // macro/internal - { "HALT", 54 }, // macro/internal - { "RETURN", 55 }, // macro/internal - { "PV", 56, 0 }, - { "FV", 57, 0 }, - { "NPER", 58, 0 }, - { "PMT", 59, 0 }, - { "RATE", 60, 0 }, - { "MIRR", 61, 3 }, - { "IRR", 62, 0 }, - { "RAND", 63, 0 }, - { "MATCH", 64, 0 }, - { "DATE", 65, 3 }, - { "TIME", 66, 3 }, - { "DAY", 67, 1 }, - { "MONTH", 68, 1 }, - { "YEAR", 69, 1 }, - { "WEEKDAY", 70, 0 }, - { "HOUR", 71, 1 }, - { "MINUTE", 72, 1 }, - { "SECOND", 73, 1 }, - { "NOW", 74, 0 }, - { "AREAS", 75, 1 }, - { "ROWS", 76, 1 }, - { "COLUMNS", 77, 1 }, - { "OFFSET", 78, 0 }, - { "ABSREF", 79 }, // macro/internal - { "RELREF", 80 }, // macro/internal - { "ARGUMENT", 81 }, // macro/internal - { "SEARCH", 82, 0 }, - { "TRANSPOSE", 83, 1 }, - { "ERROR", 84 }, // macro/internal - { "STEP", 85 }, // macro/internal - { "TYPE", 86, 1 }, - { "ECHO", 87 }, // macro/internal - { "SET.NAME", 88 }, // macro/internal - { "CALLER", 89 }, // macro/internal - { "DEREF", 90 }, // macro/internal - { "WINDOWS", 91 }, // macro/internal - { "SERIES", 92 }, // macro/internal - { "DOCUMENTS", 93 }, // macro/internal - { "ACTIVE.CELL", 94 }, // macro/internal - { "SELECTION", 95 }, // macro/internal - { "RESULT", 96 }, // macro/internal - { "ATAN2", 97, 2 }, - { "ASIN", 98, 1 }, - { "ACOS", 99, 1 }, - { "CHOSE", 100, 0 }, - { "HLOOKUP", 101, 0 }, - { "VLOOKUP", 102, 0 }, - { "LINKS", 103 }, // macro/internal - { "INPUT", 104 }, // macro/internal - { "ISREF", 105, 1 }, - { "GET.FORMULA", 106 }, // macro/internal - { "GET.NAME", 107 }, // macro/internal - { "SET.VALUE", 108, 2 }, // macro/internal - { "LOG", 109, 0 }, - { "EXEC", 110 }, // macro/internal - { "CHAR", 111, 1 }, - { "LOWER", 112, 1 }, - { "UPPER", 113, 1 }, - { "PROPER", 114, 1 }, - { "LEFT", 115, 0 }, - { "RIGHT", 116, 0 }, - { "EXACT", 117, 2 }, - { "TRIM", 118, 1 }, - { "REPLACE", 119, 4 }, - { "SUBSTITUTE", 120, 0 }, - { "CODE", 121, 1 }, - { "NAMES", 122 }, // macro/internal - { "DIRECTORY", 123 }, // macro/internal - { "FIND", 124, 0 }, - { "CELL", 125, 0 }, - { "ISERR", 126, 1 }, - { "ISTEXT", 127, 1 }, - { "ISNUMBER", 128, 1 }, - { "ISBLANK", 129, 1 }, - { "T", 130, 1 }, - { "N", 131, 1 }, - { "FOPEN", 132 }, // macro/internal - { "FCLOSE", 133 }, // macro/internal - { "FSIZE", 134 }, // macro/internal - { "FREADLN", 135 }, // macro/internal - { "FREAD", 136 }, // macro/internal - { "FWRITELN", 137 }, // macro/internal - { "FWRITE", 138 }, // macro/internal - { "FPOS", 139 }, // macro/internal - { "DATEVALUE", 140, 1 }, - { "TIMEVALUE", 141, 1 }, - { "SLN", 142, 3 }, - { "SYD", 143, 4 }, - { "DDB", 144, 0 }, - { "GET.DEF", 145 }, // macro/internal - { "REFTEXT", 146 }, // macro/internal - { "TEXTREF", 147 }, // macro/internal - { "INDIRECT", 148, 0 }, - { "REGISTER", 149 }, // macro/internal - { "CALL", 150 }, // macro/internal - { "ADD.BAR", 151 }, // macro/internal - { "ADD.MENU", 152 }, // macro/internal - { "ADD.COMMAND", 153 }, // macro/internal - { "ENABLE.COMMAND", 154 }, // macro/internal - { "CHECK.COMMAND", 155 }, // macro/internal - { "RENAME.COMMAND", 156 }, // macro/internal - { "SHOW.BAR", 157 }, // macro/internal - { "DELETE.MENU", 158 }, // macro/internal - { "DELETE.COMMAND", 159 }, // macro/internal - { "GET.CHART.ITEM", 160 }, // macro/internal - { "DIALOG.BOX", 161 }, // macro/internal - { "CLEAN", 162, 1 }, - { "MDETERM", 163, 1 }, - { "MINVERSE", 164, 1 }, - { "MMULT", 165, 2 }, - { "FILES", 166 }, // macro/internal - { "IPMT", 167, 0 }, - { "PPMT", 168, 0 }, - { "COUNTA", 169, 0 }, - { "CANCEL.KEY", 170 }, // macro/internal - { "FOR", 171 }, // macro/internal - { "WHILE", 172 }, // macro/internal - { "BREAK", 173 }, // macro/internal - { "NEXT", 174 }, // macro/internal - { "INITIATE", 175 }, // macro/internal - { "REQUEST", 176 }, // macro/internal - { "POKE", 177 }, // macro/internal - { "EXECUTE", 178 }, // macro/internal - { "TERMINATE", 179 }, // macro/internal - { "RESTART", 180 }, // macro/internal - { "HELP", 181 }, // macro/internal - { "GET.BAR", 182 }, // macro/internal - { "PRODUCT", 183, 0 }, - { "FACT", 184, 1 }, - { "GET.CELL", 185 }, // macro/internal - { "GET.WORKSPACE", 186 }, // macro/internal - { "GET.WINDOW", 187 }, // macro/internal - { "GET.DOCUMENT", 188 }, // macro/internal - { "DPRODUCT", 189, 3 }, - { "ISNONTEXT", 190, 1 }, - { "GET.NOTE", 191 }, // macro/internal - { "NOTE", 192 }, // macro/internal - { "STDEVP", 193, 0 }, - { "VARP", 194, 0 }, - { "DSTDDEVP", 195, 3 }, - { "DVARP", 196, 3 }, - { "TRUNC", 197, 0 }, - { "ISLOGICAL", 198, 1 }, - { "DBCOUNTA", 199, 3 }, - { "DELETE.BAR", 200 }, // macro/internal - { "UNREGISTER", 201 }, // macro/internal - { "202", 202 }, // not used - { "203", 203 }, // not used - { "USDOLLAR", 204 }, // macro/internal - { "FINDB", 205 }, // macro/internal - { "SEARCHB", 206 }, // macro/internal - { "REPLACEB", 207 }, // macro/internal - { "LEFTB", 208 }, // macro/internal - { "RIGHTB", 209 }, // macro/internal - { "MIDB", 210 }, // macro/internal - { "LENB", 211 }, // macro/internal - { "ROUNDUP", 212, 2 }, - { "ROUNDDOWN", 213, 2 }, - { "ASC", 214 }, // macro/internal - { "DBSC", 215 }, // macro/internal - { "RANK", 216, 0 }, - { "217", 217 }, // not used - { "218", 218 }, // not used - { "ADDRESS", 219, 0 }, - { "DAYS360", 220, 0 }, - { "TODAY", 221, 0 }, - { "VDB", 222, 0 }, - { "ELSE", 223 }, // macro/internal - { "ELSE.IF", 224 }, // macro/internal - { "END.IF", 225 }, // macro/internal - { "FOR.CELL", 226 }, // macro/internal - { "MEDIAN", 227, 0 }, - { "SUMPRODUCT", 228, 0 }, - { "SINH", 229, 1 }, - { "COSH", 230, 1 }, - { "TANH", 231, 1 }, - { "ASINH", 232, 1 }, - { "ACOSH", 233, 1 }, - { "ATANH", 234, 1 }, - { "DGET", 235, 3 }, - { "CREATE.OBJECT", 236 }, // macro/internal - { "VOLATILE", 237 }, // macro/internal - { "LAST.ERROR", 238 }, // macro/internal - { "CUSTOM.UNDO", 239 }, // macro/internal - { "CUSTOM.REPEAT", 240 }, // macro/internal - { "FORMULA.CONVERT", 241 }, // macro/internal - { "GET.LINK.INFO", 242 }, // macro/internal - { "TEXT.BOX", 243 }, // macro/internal - { "INFO", 244 }, // macro/internal - { "GROUP", 245 }, // macro/internal - { "GET.OBJECT", 246 }, // macro/internal - { "DB", 247, 0 }, - { "PAUSE", 248 }, // macro/internal - { "249", 249 }, // not used - { "250", 250 }, // not used - { "RESUME", 251 }, // macro/internal - { "FREQUENCY", 252, 2 }, - { "ADD.TOOLBAR", 253 }, // macro/internal - { "DELETE.TOOLBAR", 254 }, // macro/internal - { "EXTERNCALL", 255 }, // macro/internal - { "RESET.TOOLBAR", 256 }, // macro/internal - { "EVALUATE", 257 }, // macro/internal - { "GET.TOOLBAR", 258 }, // macro/internal - { "GET.TOOL", 259 }, // macro/internal - { "SPELLING.CHECK", 260 }, // macro/internal - { "ERROR.TYPE", 261, 1 }, - { "APP.TITLE", 262 }, // macro/internal - { "WINDOW.TITLE", 263 }, // macro/internal - { "SAVE.TOOLBAR", 264 }, // macro/internal - { "ENABLE.TOOL", 265 }, // macro/internal - { "PRESS.TOOL", 266 }, // macro/internal - { "REGISTER.ID", 267 }, // macro/internal - { "GET.WORKBOOK", 268 }, // macro/internal - { "AVEDEV", 269, 0 }, - { "BETADIST", 270, 0 }, - { "GAMMALN", 271, 1 }, - { "BETAINV", 272, 0 }, - { "BINOMDIST", 273, 4 }, - { "CHIDIST", 274, 2 }, - { "CHIINV", 275, 2 }, - { "COMBIN", 276, 2 }, - { "CONFIDENCE", 277, 3 }, - { "CRITBINOM", 278, 3 }, - { "EVEN", 279, 1 }, - { "EXPONDIST", 280, 3 }, - { "FDIST", 281, 3 }, - { "FINV", 282, 3 }, - { "FISHER", 283, 1 }, - { "FISHERINV", 284, 1 }, - { "FLOOR", 285, 2 }, - { "GAMMADIST", 286, 4 }, - { "GAMMAINV", 287, 3 }, - { "CEILING", 288, 2 }, - { "HYPGEOMDIST", 289, 4 }, - { "LOGNORMDIST", 290, 3 }, - { "LOGINV", 291, 3 }, - { "NEGBINOMDIST", 292, 3 }, - { "NORMDIST", 293, 4 }, - { "NORMSDIST", 294, 1 }, - { "NORMINV", 295, 3 }, - { "NORMSINV", 296, 1 }, - { "STANDARDIZE", 297, 3 }, - { "ODD", 298, 1 }, - { "PERMUT", 299, 2 }, - { "POISSON", 300, 3 }, - { "TDIST", 301, 3 }, - { "WEIBULL", 302, 4 }, - { "SUMXMY2", 303, 2 }, - { "SUMX2MY2", 304, 2 }, - { "SUMX2PY2", 305, 2 }, - { "CHITEST", 306, 2 }, - { "CORREL", 307, 2 }, - { "COVAR", 308, 2 }, - { "FORECAST", 309, 3 }, - { "FTEST", 310, 2 }, - { "INTERCEPT", 311, 2 }, - { "PEARSON", 312, 2 }, - { "RSQ", 313, 2 }, - { "STEYX", 314, 2 }, - { "SLOPE", 315, 2 }, - { "TTEST", 316, 4 }, - { "PROB", 317, 0 }, - { "DEVSQ", 318, 0 }, - { "GEOMEAN", 319, 0 }, - { "HARMEAN", 320, 0 }, - { "SUMSQ", 321, 0 }, - { "KURT", 322, 0 }, - { "SKEW", 323, 0 }, - { "ZTEST", 324, 0 }, - { "LARGE", 325, 2 }, - { "SMALL", 326, 2 }, - { "QUARTILE", 327, 2 }, - { "PERCENTILE", 328, 2 }, - { "PERCENTRANK", 329, 0 }, - { "MODE", 330, 0 }, - { "TRIMMEAN", 331, 2 }, - { "TINV", 332, 2 }, - { "333", 333 }, // not used - { "MOVIE.COMMAND", 334 }, // macro/internal - { "GET.MOVIE", 335 }, // macro/internal - { "CONCATENATE", 336, 0 }, - { "POWER", 337, 2 }, - { "PIVOT.ADD.DATA", 338 }, // macro/internal - { "GET.PIVOT.TABLE", 339 }, // macro/internal - { "GET.PIVOT.FIELD", 340 }, // macro/internal - { "GET.PIVOT.ITEM", 341 }, // macro/internal - { "RADIANS", 342, 1 }, - { "DEGREES", 343, 1 }, - { "SUBTOTAL", 344, 0 }, - { "SUMIF", 345, 0 }, - { "COUNTIF", 346, 2 }, - { "COUNTBLANK", 347, 1 }, - { "SCENARIO.GET", 348 }, // macro/internal - { "OPTIONS.LISTS.GET",349 }, // macro/internal - { "ISPMT", 350, 4 }, - { "DATEDIF", 351 }, // macro/internal - { "DATESTRING", 352 }, // macro/internal - { "NUMBERSTRING", 353 }, // macro/internal - { "ROMAN", 354, 0 }, - { "OPEN.DIALOG", 355 }, // macro/internal - { "SAVE.DIALOG", 356 }, // macro/internal - { "VIEW.GET", 357 }, // macro/internal - { "GETPIVOTDATA", 358, 0 }, - { "HYPERLINK", 359, 2 }, - { "PHONETIC", 360 }, // macro/internal - { "AVERAGEA", 361, 0 }, - { "MAXA", 362, 0 }, - { "MINA", 363, 0 }, - { "STDEVPA", 364, 0 }, - { "VARPA", 365, 0 }, - { "STDEVA", 366, 0 }, - { "VARA", 367, 0 }, - { "BAHTTEXT", 368, 1 }, - { "THAIDAYOFWEEK", 369 }, // macro/internal - { "THAIDIGIT", 370 }, // macro/internal - { "THAIMONTHOFYEAR", 371 }, // macro/internal - { "THAINUMSOUND", 372 }, // macro/internal - { "THAINUMSTRING", 373 }, // macro/internal - { "THAISTRINGLENGTH", 374 }, // macro/internal - { "ISTHAIDIGIT", 375 }, // macro/internal - { "ROUNDBAHTDOWN", 376 }, // macro/internal - { "ROUNDBAHTUP", 377 }, // macro/internal - { "THAIYEAR", 378 }, // macro/internal - { "RTD", 379 } // macro/internal +/* 0*/ { "COUNT", 0 }, + { "IF", 0 }, + { "ISNA", 1 }, + { "ISERROR", 1 }, + { "SUM", 0 }, +/* 5*/ { "AVERAGE", 0 }, + { "MIN", 0 }, + { "MAX", 0 }, + { "ROW", 0 }, + { "COLUMN", 0 }, +/* 10*/ { "NA", 0 }, + { "NPV", 0 }, + { "STDEV", 0 }, + { "DOLLAR", 0 }, + { "FIXED", 0 }, +/* 15*/ { "SIN", 1 }, + { "COS", 1 }, + { "TAN", 1 }, + { "ATAN", 1 }, + { "PI", 0 }, +/* 20*/ { "SQRT", 1 }, + { "EXP", 1 }, + { "LN", 1 }, + { "LOG10", 1 }, + { "ABS", 1 }, +/* 25*/ { "INT", 1 }, + { "SIGN", 1 }, + { "ROUND", 2 }, + { "LOOKUP", 0 }, + { "INDEX", 0 }, +/* 30*/ { "REPT", 2 }, + { "MID", 3 }, + { "LEN", 1 }, + { "VALUE", 1 }, + { "TRUE", 0 }, +/* 35*/ { "FALSE", 0 }, + { "AND", 0 }, + { "OR", 0 }, + { "NOT", 1 }, + { "MOD", 2 }, +/* 40*/ { "DCOUNT", 3 }, + { "DSUM", 3 }, + { "DAVERAGE", 3 }, + { "DMIN", 3 }, + { "DMAX", 3 }, +/* 45*/ { "DSTDEV", 3 }, + { "VAR", 0 }, + { "DVAR", 3 }, + { "TEXT", 2 }, + { "LINEST", 0 }, +/* 50*/ { "TREND", 0 }, + { "LOGEST", 0 }, + { "GROWTH", 0 }, + { "GOTO" }, // macro/internal + { "HALT" }, // macro/internal +/* 55*/ { "RETURN" }, // macro/internal + { "PV", 0 }, + { "FV", 0 }, + { "NPER", 0 }, + { "PMT", 0 }, +/* 60*/ { "RATE", 0 }, + { "MIRR", 3 }, + { "IRR", 0 }, + { "RAND", 0 }, + { "MATCH", 0 }, +/* 65*/ { "DATE", 3 }, + { "TIME", 3 }, + { "DAY", 1 }, + { "MONTH", 1 }, + { "YEAR", 1 }, +/* 70*/ { "WEEKDAY", 0 }, + { "HOUR", 1 }, + { "MINUTE", 1 }, + { "SECOND", 1 }, + { "NOW", 0 }, +/* 75*/ { "AREAS", 1 }, + { "ROWS", 1 }, + { "COLUMNS", 1 }, + { "OFFSET", 0 }, + { "ABSREF" }, // macro/internal +/* 80*/ { "RELREF" }, // macro/internal + { "ARGUMENT" }, // macro/internal + { "SEARCH", 0 }, + { "TRANSPOSE", 1 }, + { "ERROR" }, // macro/internal +/* 85*/ { "STEP" }, // macro/internal + { "TYPE", 1 }, + { "ECHO" }, // macro/internal + { "SET.NAME" }, // macro/internal + { "CALLER" }, // macro/internal +/* 90*/ { "DEREF" }, // macro/internal + { "WINDOWS" }, // macro/internal + { "SERIES" }, // macro/internal + { "DOCUMENTS" }, // macro/internal + { "ACTIVE.CELL" }, // macro/internal +/* 95*/ { "SELECTION" }, // macro/internal + { "RESULT" }, // macro/internal + { "ATAN2", 2 }, + { "ASIN", 1 }, + { "ACOS", 1 }, +/*100*/ { "CHOSE", 0 }, + { "HLOOKUP", 0 }, + { "VLOOKUP", 0 }, + { "LINKS" }, // macro/internal + { "INPUT" }, // macro/internal +/*105*/ { "ISREF", 1 }, + { "GET.FORMULA" }, // macro/internal + { "GET.NAME" }, // macro/internal + { "SET.VALUE", 2 }, // macro/internal + { "LOG", 0 }, +/*110*/ { "EXEC" }, // macro/internal + { "CHAR", 1 }, + { "LOWER", 1 }, + { "UPPER", 1 }, + { "PROPER", 1 }, +/*115*/ { "LEFT", 0 }, + { "RIGHT", 0 }, + { "EXACT", 2 }, + { "TRIM", 1 }, + { "REPLACE", 4 }, +/*120*/ { "SUBSTITUTE", 0 }, + { "CODE", 1 }, + { "NAMES" }, // macro/internal + { "DIRECTORY" }, // macro/internal + { "FIND", 0 }, +/*125*/ { "CELL", 0 }, + { "ISERR", 1 }, + { "ISTEXT", 1 }, + { "ISNUMBER", 1 }, + { "ISBLANK", 1 }, +/*130*/ { "T", 1 }, + { "N", 1 }, + { "FOPEN" }, // macro/internal + { "FCLOSE" }, // macro/internal + { "FSIZE" }, // macro/internal +/*135*/ { "FREADLN" }, // macro/internal + { "FREAD" }, // macro/internal + { "FWRITELN" }, // macro/internal + { "FWRITE" }, // macro/internal + { "FPOS" }, // macro/internal +/*140*/ { "DATEVALUE", 1 }, + { "TIMEVALUE", 1 }, + { "SLN", 3 }, + { "SYD", 4 }, + { "DDB", 0 }, +/*145*/ { "GET.DEF" }, // macro/internal + { "REFTEXT" }, // macro/internal + { "TEXTREF" }, // macro/internal + { "INDIRECT", 0 }, + { "REGISTER" }, // macro/internal +/*150*/ { "CALL" }, // macro/internal + { "ADD.BAR" }, // macro/internal + { "ADD.MENU" }, // macro/internal + { "ADD.COMMAND" }, // macro/internal + { "ENABLE.COMMAND" }, // macro/internal +/*155*/ { "CHECK.COMMAND" }, // macro/internal + { "RENAME.COMMAND" }, // macro/internal + { "SHOW.BAR" }, // macro/internal + { "DELETE.MENU" }, // macro/internal + { "DELETE.COMMAND" }, // macro/internal +/*160*/ { "GET.CHART.ITEM" }, // macro/internal + { "DIALOG.BOX" }, // macro/internal + { "CLEAN", 1 }, + { "MDETERM", 1 }, + { "MINVERSE", 1 }, +/*165*/ { "MMULT", 2 }, + { "FILES" }, // macro/internal + { "IPMT", 0 }, + { "PPMT", 0 }, + { "COUNTA", 0 }, +/*170*/ { "CANCEL.KEY" }, // macro/internal + { "FOR" }, // macro/internal + { "WHILE" }, // macro/internal + { "BREAK" }, // macro/internal + { "NEXT" }, // macro/internal +/*175*/ { "INITIATE" }, // macro/internal + { "REQUEST" }, // macro/internal + { "POKE" }, // macro/internal + { "EXECUTE" }, // macro/internal + { "TERMINATE" }, // macro/internal +/*180*/ { "RESTART" }, // macro/internal + { "HELP" }, // macro/internal + { "GET.BAR" }, // macro/internal + { "PRODUCT", 0 }, + { "FACT", 1 }, +/*185*/ { "GET.CELL" }, // macro/internal + { "GET.WORKSPACE" }, // macro/internal + { "GET.WINDOW" }, // macro/internal + { "GET.DOCUMENT" }, // macro/internal + { "DPRODUCT", 3 }, +/*190*/ { "ISNONTEXT", 1 }, + { "GET.NOTE" }, // macro/internal + { "NOTE" }, // macro/internal + { "STDEVP", 0 }, + { "VARP", 0 }, +/*195*/ { "DSTDDEVP", 3 }, + { "DVARP", 3 }, + { "TRUNC", 0 }, + { "ISLOGICAL", 1 }, + { "DBCOUNTA", 3 }, +/*200*/ { "DELETE.BAR" }, // macro/internal + { "UNREGISTER" }, // macro/internal + { "202" }, // not used + { "203" }, // not used + { "USDOLLAR" }, // macro/internal +/*205*/ { "FINDB" }, // macro/internal + { "SEARCHB" }, // macro/internal + { "REPLACEB" }, // macro/internal + { "LEFTB" }, // macro/internal + { "RIGHTB" }, // macro/internal +/*210*/ { "MIDB" }, // macro/internal + { "LENB" }, // macro/internal + { "ROUNDUP", 2 }, + { "ROUNDDOWN", 2 }, + { "ASC" }, // macro/internal +/*215*/ { "DBSC" }, // macro/internal + { "RANK", 0 }, + { "217" }, // not used + { "218" }, // not used + { "ADDRESS", 0 }, +/*220*/ { "DAYS360", 0 }, + { "TODAY", 0 }, + { "VDB", 0 }, + { "ELSE" }, // macro/internal + { "ELSE.IF" }, // macro/internal +/*225*/ { "END.IF" }, // macro/internal + { "FOR.CELL" }, // macro/internal + { "MEDIAN", 0 }, + { "SUMPRODUCT", 0 }, + { "SINH", 1 }, +/*230*/ { "COSH", 1 }, + { "TANH", 1 }, + { "ASINH", 1 }, + { "ACOSH", 1 }, + { "ATANH", 1 }, +/*235*/ { "DGET", 3 }, + { "CREATE.OBJECT" }, // macro/internal + { "VOLATILE" }, // macro/internal + { "LAST.ERROR" }, // macro/internal + { "CUSTOM.UNDO" }, // macro/internal +/*240*/ { "CUSTOM.REPEAT" }, // macro/internal + { "FORMULA.CONVERT" }, // macro/internal + { "GET.LINK.INFO" }, // macro/internal + { "TEXT.BOX" }, // macro/internal + { "INFO" }, // macro/internal +/*245*/ { "GROUP" }, // macro/internal + { "GET.OBJECT" }, // macro/internal + { "DB", 0 }, + { "PAUSE" }, // macro/internal + { "249" }, // not used +/*250*/ { "250" }, // not used + { "RESUME" }, // macro/internal + { "FREQUENCY", 2 }, + { "ADD.TOOLBAR" }, // macro/internal + { "DELETE.TOOLBAR" }, // macro/internal +/*255*/ { "EXTERN.CALL" }, // macro/internal + { "RESET.TOOLBAR" }, // macro/internal + { "EVALUATE" }, // macro/internal + { "GET.TOOLBAR" }, // macro/internal + { "GET.TOOL" }, // macro/internal +/*260*/ { "SPELLING.CHECK" }, // macro/internal + { "ERROR.TYPE", 1 }, + { "APP.TITLE" }, // macro/internal + { "WINDOW.TITLE" }, // macro/internal + { "SAVE.TOOLBAR" }, // macro/internal +/*265*/ { "ENABLE.TOOL" }, // macro/internal + { "PRESS.TOOL" }, // macro/internal + { "REGISTER.ID" }, // macro/internal + { "GET.WORKBOOK" }, // macro/internal + { "AVEDEV", 0 }, +/*270*/ { "BETADIST", 0 }, + { "GAMMALN", 1 }, + { "BETAINV", 0 }, + { "BINOMDIST", 4 }, + { "CHIDIST", 2 }, +/*275*/ { "CHIINV", 2 }, + { "COMBIN", 2 }, + { "CONFIDENCE", 3 }, + { "CRITBINOM", 3 }, + { "EVEN", 1 }, +/*280*/ { "EXPONDIST", 3 }, + { "FDIST", 3 }, + { "FINV", 3 }, + { "FISHER", 1 }, + { "FISHERINV", 1 }, +/*285*/ { "FLOOR", 2 }, + { "GAMMADIST", 4 }, + { "GAMMAINV", 3 }, + { "CEILING", 2 }, + { "HYPGEOMDIST", 4 }, +/*290*/ { "LOGNORMDIST", 3 }, + { "LOGINV", 3 }, + { "NEGBINOMDIST", 3 }, + { "NORMDIST", 4 }, + { "NORMSDIST", 1 }, +/*295*/ { "NORMINV", 3 }, + { "NORMSINV", 1 }, + { "STANDARDIZE", 3 }, + { "ODD", 1 }, + { "PERMUT", 2 }, +/*300*/ { "POISSON", 3 }, + { "TDIST", 3 }, + { "WEIBULL", 4 }, + { "SUMXMY2", 2 }, + { "SUMX2MY2", 2 }, +/*305*/ { "SUMX2PY2", 2 }, + { "CHITEST", 2 }, + { "CORREL", 2 }, + { "COVAR", 2 }, + { "FORECAST", 3 }, +/*310*/ { "FTEST", 2 }, + { "INTERCEPT", 2 }, + { "PEARSON", 2 }, + { "RSQ", 2 }, + { "STEYX", 2 }, +/*315*/ { "SLOPE", 2 }, + { "TTEST", 4 }, + { "PROB", 0 }, + { "DEVSQ", 0 }, + { "GEOMEAN", 0 }, +/*320*/ { "HARMEAN", 0 }, + { "SUMSQ", 0 }, + { "KURT", 0 }, + { "SKEW", 0 }, + { "ZTEST", 0 }, +/*325*/ { "LARGE", 2 }, + { "SMALL", 2 }, + { "QUARTILE", 2 }, + { "PERCENTILE", 2 }, + { "PERCENTRANK", 0 }, +/*330*/ { "MODE", 0 }, + { "TRIMMEAN", 2 }, + { "TINV", 2 }, + { "333" }, // not used + { "MOVIE.COMMAND" }, // macro/internal +/*335*/ { "GET.MOVIE" }, // macro/internal + { "CONCATENATE", 0 }, + { "POWER", 2 }, + { "PIVOT.ADD.DATA" }, // macro/internal + { "GET.PIVOT.TABLE" }, // macro/internal +/*340*/ { "GET.PIVOT.FIELD" }, // macro/internal + { "GET.PIVOT.ITEM" }, // macro/internal + { "RADIANS", 1 }, + { "DEGREES", 1 }, + { "SUBTOTAL", 0 }, +/*345*/ { "SUMIF", 0 }, + { "COUNTIF", 2 }, + { "COUNTBLANK", 1 }, + { "SCENARIO.GET" }, // macro/internal + { "OPTIONS.LISTS.GET" }, // macro/internal +/*350*/ { "ISPMT", 4 }, + { "DATEDIF" }, // macro/internal + { "DATESTRING" }, // macro/internal + { "NUMBERSTRING" }, // macro/internal + { "ROMAN", 0 }, +/*355*/ { "OPEN.DIALOG" }, // macro/internal + { "SAVE.DIALOG" }, // macro/internal + { "VIEW.GET" }, // macro/internal + { "GETPIVOTDATA", 0 }, + { "HYPERLINK", 2 }, +/*360*/ { "PHONETIC" }, // macro/internal + { "AVERAGEA", 0 }, + { "MAXA", 0 }, + { "MINA", 0 }, + { "STDEVPA", 0 }, +/*365*/ { "VARPA", 0 }, + { "STDEVA", 0 }, + { "VARA", 0 }, + { "BAHTTEXT", 1 }, + { "THAIDAYOFWEEK" }, // macro/internal +/*370*/ { "THAIDIGIT" }, // macro/internal + { "THAIMONTHOFYEAR" }, // macro/internal + { "THAINUMSOUND" }, // macro/internal + { "THAINUMSTRING" }, // macro/internal + { "THAISTRINGLENGTH" }, // macro/internal +/*375*/ { "ISTHAIDIGIT" }, // macro/internal + { "ROUNDBAHTDOWN" }, // macro/internal + { "ROUNDBAHTUP" }, // macro/internal + { "THAIYEAR" }, // macro/internal + { "RTD" } // macro/internal }; const XclDumpFunc* lcl_GetFuncData( sal_uInt16 nIndex ) { - const XclDumpFunc* pFirst = pFuncData; - const XclDumpFunc* pLast = pFuncData + sizeof( pFuncData ) / sizeof( XclDumpFunc ) - 1; - while( pFirst <= pLast ) - { - const XclDumpFunc* pCurr = pFirst + (pLast - pFirst) / 2; - if( pCurr->nIndex > nIndex ) - pLast = pCurr - 1; - else if( pCurr->nIndex < nIndex ) - pFirst = pCurr + 1; - else - return pCurr; - } - return NULL; + return (nIndex < STATIC_TABLE_SIZE( pFuncData )) ? (pFuncData + nIndex) : NULL; } @@ -5985,7 +5971,7 @@ void Biff8RecDumper::FormulaDump( const UINT16 nL, const FORMULA_TYPE eFT ) break; case 0x1D: // Boolean [315 266] STARTTOKEN( "Bool" ); - aOperand += pIn->ReaduInt8() ? "FALSE" : "TRUE"; + aOperand += pIn->ReaduInt8() ? "TRUE" : "FALSE"; t += aOperand; aStack.PushOperand( aOperand ); break; @@ -6246,26 +6232,438 @@ void Biff8RecDumper::FormulaDump( const UINT16 nL, const FORMULA_TYPE eFT ) } -void Biff8RecDumper::ControlsDump( SvStream& rIn ) + + +/** Import from bytestream. */ +SvStream& operator>>( SvStream& rStrm, XclGuid& rGuid ) { - if( !pDumpStream ) - return; + rStrm.Read( rGuid.mpData, 16 ); + return rStrm; +} - rIn.Seek( STREAM_SEEK_TO_END ); - ULONG nLen = rIn.Tell(); - rIn.Seek( STREAM_SEEK_TO_BEGIN ); +/** Output as text. */ +SvStream& operator<<( SvStream& rStrm, const XclGuid& rGuid ) +{ + ByteString aOut; + __AddPureHex( aOut, SVBT32ToLong( rGuid.mpData ) ); + aOut.Append( '-' ); + __AddPureHex( aOut, SVBT16ToShort( rGuid.mpData + 4 ) ); + aOut.Append( '-' ); + __AddPureHex( aOut, SVBT16ToShort( rGuid.mpData + 6 ) ); + aOut.Append( '-' ); + __AddPureHex( aOut, rGuid.mpData[ 8 ] ); + __AddPureHex( aOut, rGuid.mpData[ 9 ] ); + aOut.Append( '-' ); + __AddPureHex( aOut, rGuid.mpData[ 10 ] ); + __AddPureHex( aOut, rGuid.mpData[ 11 ] ); + __AddPureHex( aOut, rGuid.mpData[ 12 ] ); + __AddPureHex( aOut, rGuid.mpData[ 13 ] ); + __AddPureHex( aOut, rGuid.mpData[ 14 ] ); + __AddPureHex( aOut, rGuid.mpData[ 15 ] ); + return rStrm << aOut.GetBuffer(); +} - if( nLen == ~0UL ) - return; +// *** yet some other ugly macros for the specials of form control dumping *** + +// align the instream +#define EXC_CTRLDUMP_ALIGN_INSTRM( val ) rInStrm.Seek( (rInStrm.Tell()+(val)-1) & ~((val)-1) ) +// push the string to outstream +#define EXC_CTRLDUMP_PRINT() { if( t.Len() ) { rOutStrm << t.GetBuffer() << '\n'; t.Erase(); } } +#define EXC_CTRLDUMP_PRINTC() { if( t.Len() > 60 ) EXC_CTRLDUMP_PRINT(); } + +// implementation, don't use +#define IMPL_EXC_CTRLDUMP_VALUE( type, func, text ) { EXC_CTRLDUMP_ALIGN_INSTRM( sizeof( type ) ); type n; rInStrm >> n; t += " " text "="; func( t, n ); EXC_CTRLDUMP_PRINTC(); } +#define IMPL_EXC_CTRLDUMP_VAR( var, mask, func, text ) { EXC_CTRLDUMP_ALIGN_INSTRM( sizeof( var ) ); rInStrm >> var; var &= (mask); t += " " text "="; func( t, var ); EXC_CTRLDUMP_PRINTC(); } + +// read a value from stream +#define EXC_CTRLDUMP_HEX4( text ) IMPL_EXC_CTRLDUMP_VALUE( sal_uInt32, __AddHex, text ) +#define EXC_CTRLDUMP_DEC4( text ) IMPL_EXC_CTRLDUMP_VALUE( sal_Int32, __AddDec, text ) +#define EXC_CTRLDUMP_HEX2( text ) IMPL_EXC_CTRLDUMP_VALUE( sal_uInt16, __AddHex, text ) +#define EXC_CTRLDUMP_DEC2( text ) IMPL_EXC_CTRLDUMP_VALUE( sal_Int16, __AddDec, text ) +#define EXC_CTRLDUMP_HEX1( text ) IMPL_EXC_CTRLDUMP_VALUE( sal_uInt8, __AddHex, text ) +#define EXC_CTRLDUMP_DEC1( text ) IMPL_EXC_CTRLDUMP_VALUE( sal_Int8, __AddDec, text ) +// read a value from stream into existing variable +#define EXC_CTRLDUMP_HEXVAR( var, text ) IMPL_EXC_CTRLDUMP_VAR( var, ~0, __AddHex, text ) +#define EXC_CTRLDUMP_DECVAR( var, text ) IMPL_EXC_CTRLDUMP_VAR( var, ~0, __AddDec, text ) +#define EXC_CTRLDUMP_HEXVARMASK( var, mask, text ) IMPL_EXC_CTRLDUMP_VAR( var, mask, __AddHex, text ) +#define EXC_CTRLDUMP_DECVARMASK( var, mask, text ) IMPL_EXC_CTRLDUMP_VAR( var, mask, __AddDec, text ) +// read a string +#define EXC_CTRLDUMP_STRING( var, text ) \ +if( var ) \ +{ \ + EXC_CTRLDUMP_ALIGN_INSTRM( 4 ); \ + if( var > 128 ) var = 128; \ + sal_Char* p = new sal_Char[ var + 1 ]; \ + rInStrm.Read( p, var ); p[ var ] = '\0'; \ + t.Append( " " text "='" ).Append( p ).Append( '\'' ); \ + delete [] p; \ + EXC_CTRLDUMP_PRINTC(); \ +} +// read flag fields +#define EXC_CTRLDUMP_STARTFLAG( text ) { EXC_CTRLDUMP_ALIGN_INSTRM( 4 ); rInStrm >> __nFlags; t += " " text "="; __AddHex( t, __nFlags ); } +#define EXC_CTRLDUMP_ADDFLAG( flag, text ) { if( __nFlags & (flag) ) t += " -" text; EXC_CTRLDUMP_PRINTC(); } +#define EXC_CTRLDUMP_ENDFLAG( reserved ) EXC_CTRLDUMP_ADDFLAG( reserved, "!unknown!" ) +// read coordinates +#define EXC_CTRLDUMP_COORD( text ) { EXC_CTRLDUMP_ALIGN_INSTRM( 4 ); EXC_CTRLDUMP_DEC2( text "-x" ); EXC_CTRLDUMP_DEC2( "y" ); } +#define EXC_CTRLDUMP_SIZE() { EXC_CTRLDUMP_DEC4( "width" ); EXC_CTRLDUMP_DEC4( "height" ); } + +// *** macros end *** - *pDumpStream << "### start Ctls stream ###\n"; - while( nLen ) +void Biff8RecDumper::ControlsDump( SvStream& rInStrm ) +{ + static const XclGuid aPushButtonGuid( 0xD7053240, 0xCE69, 0x11CD, 0xA7, 0x77, 0x00, 0xDD, 0x01, 0x14, 0x3C, 0x57 ); + static const XclGuid aToggleButtonGuid( 0x8BD21D60, 0xEC42, 0x11CE, 0x9E, 0x0D, 0x00, 0xAA, 0x00, 0x60, 0x02, 0xF3 ); + static const XclGuid aCheckBoxGuid( 0x8BD21D40, 0xEC42, 0x11CE, 0x9E, 0x0D, 0x00, 0xAA, 0x00, 0x60, 0x02, 0xF3 ); + static const XclGuid aRadioButtonGuid( 0x8BD21D50, 0xEC42, 0x11CE, 0x9E, 0x0D, 0x00, 0xAA, 0x00, 0x60, 0x02, 0xF3 ); + static const XclGuid aLabelGuid( 0x978C9E23, 0xD4B0, 0x11CE, 0xBF, 0x2D, 0x00, 0xAA, 0x00, 0x3F, 0x40, 0xD0 ); + static const XclGuid aEditGuid( 0x8BD21D10, 0xEC42, 0x11CE, 0x9E, 0x0D, 0x00, 0xAA, 0x00, 0x60, 0x02, 0xF3 ); + static const XclGuid aListBoxGuid( 0x8BD21D20, 0xEC42, 0x11CE, 0x9E, 0x0D, 0x00, 0xAA, 0x00, 0x60, 0x02, 0xF3 ); + static const XclGuid aComboBoxGuid( 0x8BD21D30, 0xEC42, 0x11CE, 0x9E, 0x0D, 0x00, 0xAA, 0x00, 0x60, 0x02, 0xF3 ); + static const XclGuid aSpinGuid( 0x79176FB0, 0xB7F2, 0x11CE, 0x97, 0xEF, 0x00, 0xAA, 0x00, 0x6D, 0x27, 0x76 ); + static const XclGuid aScrollBarGuid( 0xDFD181E0, 0x5E2F, 0x11CE, 0xA4, 0x49, 0x00, 0xAA, 0x00, 0x4A, 0x80, 0x3D ); + + if( !pDumpStream ) return; + rInStrm.Seek( STREAM_SEEK_TO_END ); + sal_uInt32 nInSize = rInStrm.Tell(); + rInStrm.Seek( STREAM_SEEK_TO_BEGIN ); + if( nInSize == ~0UL ) return; + + SvStream& rOutStrm = *pDumpStream; + rOutStrm << "\n\n\n-- Ctls stream dump --\n"; + + enum { + xlCtrlPushButton, + xlCtrlToggleButton, + xlCtrlCheckBox, + xlCtrlRadioButton, + xlCtrlLabel, + xlCtrlEdit, + xlCtrlListBox, + xlCtrlComboBox, + xlCtrlSpin, + xlCtrlScrollBar, + xlCtrlUnknown + } eCtrlType = xlCtrlUnknown; + + while( rInStrm.Tell() < nInSize ) { - UINT16 nPart = ( nLen >= 1024 )? 1024 : ( UINT16 ) nLen; - ContDumpStream( rIn, nPart ); - nLen -= nPart; + ByteString t; // "t" needed for macros + sal_uInt32 __nFlags; // "__nFlags" needed for macros + sal_uInt16 nId, nSize; + sal_uInt32 nNextPos; + + // stream position + __AddHex( t, rInStrm.Tell() ); + rOutStrm << '\n' << t.GetBuffer() << ": "; + + // control type + XclGuid aGuid; + rInStrm >> aGuid >> nId >> nSize; + nNextPos = rInStrm.Tell() + nSize; + + if( aGuid == aPushButtonGuid ) eCtrlType = xlCtrlPushButton; + else if( aGuid == aToggleButtonGuid ) eCtrlType = xlCtrlToggleButton; + else if( aGuid == aCheckBoxGuid ) eCtrlType = xlCtrlCheckBox; + else if( aGuid == aRadioButtonGuid ) eCtrlType = xlCtrlRadioButton; + else if( aGuid == aLabelGuid ) eCtrlType = xlCtrlLabel; + else if( aGuid == aEditGuid ) eCtrlType = xlCtrlEdit; + else if( aGuid == aListBoxGuid ) eCtrlType = xlCtrlListBox; + else if( aGuid == aComboBoxGuid ) eCtrlType = xlCtrlComboBox; + else if( aGuid == aSpinGuid ) eCtrlType = xlCtrlSpin; + else if( aGuid == aScrollBarGuid ) eCtrlType = xlCtrlScrollBar; + else eCtrlType = xlCtrlUnknown; + + // write control type + rOutStrm << aGuid << " ("; + switch( eCtrlType ) + { + case xlCtrlPushButton: rOutStrm << "PushButton"; break; + case xlCtrlToggleButton: rOutStrm << "ToggleButton"; break; + case xlCtrlCheckBox: rOutStrm << "CheckBox"; break; + case xlCtrlRadioButton: rOutStrm << "RadioButton"; break; + case xlCtrlLabel: rOutStrm << "Label"; break; + case xlCtrlEdit: rOutStrm << "Edit"; break; + case xlCtrlListBox: rOutStrm << "ListBox"; break; + case xlCtrlComboBox: rOutStrm << "ComboBox"; break; + case xlCtrlSpin: rOutStrm << "Spin"; break; + case xlCtrlScrollBar: rOutStrm << "ScrollBar"; break; + default: rOutStrm << "*UNKNOWN*"; + } + rOutStrm << ")\n"; + + // control data + t = "id="; __AddHex( t, nId ); t += " size="; __AddHex( t, nSize ); + rOutStrm << t.GetBuffer() << " (control data)\n"; + t.Erase(); + + switch( eCtrlType ) + { + case xlCtrlPushButton: + { + sal_uInt32 nCaptionLen = 0; + + EXC_CTRLDUMP_STARTFLAG( "content-flags" ); + EXC_CTRLDUMP_ADDFLAG( 0x0001, "forecolor" ); + EXC_CTRLDUMP_ADDFLAG( 0x0002, "backcolor" ); + EXC_CTRLDUMP_ADDFLAG( 0x0004, "option" ); + EXC_CTRLDUMP_ADDFLAG( 0x0008, "caption" ); + EXC_CTRLDUMP_ADDFLAG( 0x0010, "picpos" ); + EXC_CTRLDUMP_ADDFLAG( 0x0040, "mouseptr" ); + EXC_CTRLDUMP_ADDFLAG( 0x0080, "pic" ); + EXC_CTRLDUMP_ADDFLAG( 0x0100, "accel" ); + EXC_CTRLDUMP_ADDFLAG( 0x0400, "icon" ); + EXC_CTRLDUMP_ENDFLAG( 0xFFFFFA00 ); // 0x20 always(?) + sal_uInt32 nCtrlFlags = __nFlags; + + if( nCtrlFlags & 0x0001 ) EXC_CTRLDUMP_HEX4( "forecolor" ); + if( nCtrlFlags & 0x0002 ) EXC_CTRLDUMP_HEX4( "backcolor" ); + if( nCtrlFlags & 0x0004 ) + { + EXC_CTRLDUMP_STARTFLAG( "option-flags" ); + EXC_CTRLDUMP_ADDFLAG( 0x00000002, "enabled" ); + EXC_CTRLDUMP_ADDFLAG( 0x00000004, "locked" ); + EXC_CTRLDUMP_ADDFLAG( 0x00000008, "backstyle" ); + EXC_CTRLDUMP_ADDFLAG( 0x00800000, "wordwrap" ); + EXC_CTRLDUMP_ADDFLAG( 0x10000000, "autosize" ); + EXC_CTRLDUMP_ENDFLAG( 0xEF7FFFF1 ); + } + if( nCtrlFlags & 0x0008 ) EXC_CTRLDUMP_DECVARMASK( nCaptionLen, 0x7FFFFFFF, "caption-len" ); + if( nCtrlFlags & 0x0010 ) EXC_CTRLDUMP_COORD( "picpos" ); + if( nCtrlFlags & 0x0040 ) EXC_CTRLDUMP_HEX2( "mouseptr" ); + if( nCtrlFlags & 0x0080 ) EXC_CTRLDUMP_HEX2( "pic-len" ); + if( nCtrlFlags & 0x0100 ) EXC_CTRLDUMP_HEX2( "accel" ); + if( nCtrlFlags & 0x0400 ) EXC_CTRLDUMP_HEX2( "icon-len" ); + EXC_CTRLDUMP_STRING( nCaptionLen, "caption" ); + EXC_CTRLDUMP_SIZE(); + } + break; + case xlCtrlToggleButton: + case xlCtrlCheckBox: + case xlCtrlRadioButton: + case xlCtrlEdit: + case xlCtrlListBox: + case xlCtrlComboBox: + { + sal_uInt32 nCaptionLen = 0; + sal_uInt32 nValueLen = 0; + sal_uInt32 nGroupNameLen = 0; + + EXC_CTRLDUMP_STARTFLAG( "content-flags" ); + EXC_CTRLDUMP_ADDFLAG( 0x00000001, "option" ); + EXC_CTRLDUMP_ADDFLAG( 0x00000002, "backcolor" ); + EXC_CTRLDUMP_ADDFLAG( 0x00000004, "forecolor" ); + EXC_CTRLDUMP_ADDFLAG( 0x00000008, "maxlen" ); + EXC_CTRLDUMP_ADDFLAG( 0x00000010, "borderstyle" ); + EXC_CTRLDUMP_ADDFLAG( 0x00000020, "scrollbars" ); + EXC_CTRLDUMP_ADDFLAG( 0x00000040, "style" ); + EXC_CTRLDUMP_ADDFLAG( 0x00000080, "mouseptr" ); + EXC_CTRLDUMP_ADDFLAG( 0x00000200, "password" ); + EXC_CTRLDUMP_ADDFLAG( 0x00000400, "listwidth" ); + EXC_CTRLDUMP_ADDFLAG( 0x00000800, "boundcol" ); + EXC_CTRLDUMP_ADDFLAG( 0x00001000, "textcol" ); + EXC_CTRLDUMP_ADDFLAG( 0x00002000, "colcount" ); + EXC_CTRLDUMP_ADDFLAG( 0x00004000, "listrows" ); + EXC_CTRLDUMP_ADDFLAG( 0x00008000, "colwidth?" ); + EXC_CTRLDUMP_ADDFLAG( 0x00010000, "matchentry" ); + EXC_CTRLDUMP_ADDFLAG( 0x00020000, "liststyle" ); + EXC_CTRLDUMP_ADDFLAG( 0x00040000, "showdropbtn" ); + EXC_CTRLDUMP_ADDFLAG( 0x00100000, "dropbtnstyle" ); + EXC_CTRLDUMP_ADDFLAG( 0x00200000, "multistate" ); + EXC_CTRLDUMP_ADDFLAG( 0x00400000, "value" ); + EXC_CTRLDUMP_ADDFLAG( 0x00800000, "caption" ); + EXC_CTRLDUMP_ADDFLAG( 0x01000000, "pos" ); + EXC_CTRLDUMP_ADDFLAG( 0x02000000, "bordercolor" ); + EXC_CTRLDUMP_ADDFLAG( 0x04000000, "specialeff" ); + EXC_CTRLDUMP_ADDFLAG( 0x08000000, "icon" ); + EXC_CTRLDUMP_ADDFLAG( 0x10000000, "pic" ); + EXC_CTRLDUMP_ADDFLAG( 0x20000000, "accel" ); + EXC_CTRLDUMP_ENDFLAG( 0x40080000 ); // 0x80000100 always set? + sal_uInt32 nCtrlFlags = __nFlags; + + EXC_CTRLDUMP_STARTFLAG( "2nd-content-flags" ); + EXC_CTRLDUMP_ADDFLAG( 0x00000001, "groupname" ); + EXC_CTRLDUMP_ENDFLAG( 0xFFFFFFFE ); + sal_uInt32 nCtrlFlags2 = __nFlags; + + if( nCtrlFlags & 0x00000001 ) + { + EXC_CTRLDUMP_STARTFLAG( "option-flags" ); + EXC_CTRLDUMP_ADDFLAG( 0x00000002, "enabled" ); + EXC_CTRLDUMP_ADDFLAG( 0x00000004, "locked" ); + EXC_CTRLDUMP_ADDFLAG( 0x00000008, "backstyle" ); + EXC_CTRLDUMP_ADDFLAG( 0x00000400, "colheads" ); + EXC_CTRLDUMP_ADDFLAG( 0x00000800, "intheight" ); + EXC_CTRLDUMP_ADDFLAG( 0x00001000, "matchreq" ); + EXC_CTRLDUMP_ADDFLAG( 0x00002000, "align" ); + EXC_CTRLDUMP_ADDFLAG( 0x00080000, "dragbehav" ); + EXC_CTRLDUMP_ADDFLAG( 0x00100000, "enterkeybehav" ); + EXC_CTRLDUMP_ADDFLAG( 0x00200000, "enterfieldbehav" ); + EXC_CTRLDUMP_ADDFLAG( 0x00400000, "tabkeybehav" ); + EXC_CTRLDUMP_ADDFLAG( 0x00800000, "wordwrap" ); + EXC_CTRLDUMP_ADDFLAG( 0x04000000, "selmargin" ); + EXC_CTRLDUMP_ADDFLAG( 0x08000000, "autowordsel" ); + EXC_CTRLDUMP_ADDFLAG( 0x10000000, "autosize" ); + EXC_CTRLDUMP_ADDFLAG( 0x20000000, "hidesel" ); + EXC_CTRLDUMP_ADDFLAG( 0x40000000, "autotab" ); + EXC_CTRLDUMP_ADDFLAG( 0x80000000, "multiline" ); + EXC_CTRLDUMP_ENDFLAG( 0x0307C3F1 ); + } + if( nCtrlFlags & 0x00000002 ) EXC_CTRLDUMP_HEX4( "backcolor" ); + if( nCtrlFlags & 0x00000004 ) EXC_CTRLDUMP_HEX4( "forecolor" ); + if( nCtrlFlags & 0x00000008 ) EXC_CTRLDUMP_DEC4( "maxlen" ); + if( nCtrlFlags & 0x00000010 ) EXC_CTRLDUMP_DEC1( "borderstyle" ); + if( nCtrlFlags & 0x00000020 ) EXC_CTRLDUMP_DEC1( "scrollbars" ); + if( nCtrlFlags & 0x00000040 ) EXC_CTRLDUMP_DEC1( "style" ); + if( nCtrlFlags & 0x00000080 ) EXC_CTRLDUMP_DEC1( "mouseptr" ); + if( nCtrlFlags & 0x00000200 ) EXC_CTRLDUMP_HEX1( "password" ); + if( nCtrlFlags & 0x00000400 ) EXC_CTRLDUMP_DEC4( "listwidth" ); + if( nCtrlFlags & 0x00000800 ) EXC_CTRLDUMP_DEC2( "boundcol" ); + if( nCtrlFlags & 0x00001000 ) EXC_CTRLDUMP_DEC2( "textcol" ); + if( nCtrlFlags & 0x00002000 ) EXC_CTRLDUMP_DEC2( "colcount" ); + if( nCtrlFlags & 0x00004000 ) EXC_CTRLDUMP_DEC2( "listrows" ); + if( nCtrlFlags & 0x00008000 ) EXC_CTRLDUMP_DEC2( "colwidth?" ); + if( nCtrlFlags & 0x00010000 ) EXC_CTRLDUMP_DEC1( "matchentry" ); + if( nCtrlFlags & 0x00020000 ) EXC_CTRLDUMP_DEC1( "liststyle" ); + if( nCtrlFlags & 0x00040000 ) EXC_CTRLDUMP_DEC1( "showdropbtn" ); + if( nCtrlFlags & 0x00100000 ) EXC_CTRLDUMP_DEC1( "dropbtnstyle" ); + if( nCtrlFlags & 0x00200000 ) EXC_CTRLDUMP_DEC1( "multistate" ); + if( nCtrlFlags & 0x00400000 ) EXC_CTRLDUMP_DECVARMASK( nValueLen, 0x7FFFFFFF, "value-len" ); + if( nCtrlFlags & 0x00800000 ) EXC_CTRLDUMP_DECVARMASK( nCaptionLen, 0x7FFFFFFF, "caption-len" ); + if( nCtrlFlags & 0x01000000 ) EXC_CTRLDUMP_COORD( "pos" ); + if( nCtrlFlags & 0x02000000 ) EXC_CTRLDUMP_HEX4( "bordercolor" ); + if( nCtrlFlags & 0x04000000 ) EXC_CTRLDUMP_DEC1( "specialeff" ); + if( nCtrlFlags & 0x08000000 ) EXC_CTRLDUMP_DEC2( "icon-len" ); + if( nCtrlFlags & 0x10000000 ) EXC_CTRLDUMP_DEC2( "pic-len" ); + if( nCtrlFlags & 0x20000000 ) EXC_CTRLDUMP_HEX1( "accel" ); + if( nCtrlFlags2 & 0x00000001 ) EXC_CTRLDUMP_DECVARMASK( nGroupNameLen, 0x7FFFFFFF, "groupname-len" ); + EXC_CTRLDUMP_SIZE(); + EXC_CTRLDUMP_STRING( nValueLen, "value" ); + EXC_CTRLDUMP_STRING( nCaptionLen, "caption" ); + EXC_CTRLDUMP_STRING( nGroupNameLen, "groupname" ); + } + break; + case xlCtrlLabel: + { + sal_uInt32 nCaptionLen = 0; + + EXC_CTRLDUMP_STARTFLAG( "content-flags" ); + EXC_CTRLDUMP_ADDFLAG( 0x0001, "forecolor" ); + EXC_CTRLDUMP_ADDFLAG( 0x0002, "backcolor" ); + EXC_CTRLDUMP_ADDFLAG( 0x0004, "option" ); + EXC_CTRLDUMP_ADDFLAG( 0x0008, "caption" ); + EXC_CTRLDUMP_ADDFLAG( 0x0010, "pos" ); + EXC_CTRLDUMP_ADDFLAG( 0x0040, "mouseptr" ); + EXC_CTRLDUMP_ADDFLAG( 0x0080, "bordercolor" ); + EXC_CTRLDUMP_ADDFLAG( 0x0100, "borderstyle" ); + EXC_CTRLDUMP_ADDFLAG( 0x0200, "specialeff" ); + EXC_CTRLDUMP_ADDFLAG( 0x0400, "pic" ); + EXC_CTRLDUMP_ADDFLAG( 0x0800, "accel" ); + EXC_CTRLDUMP_ADDFLAG( 0x1000, "icon" ); + EXC_CTRLDUMP_ENDFLAG( 0xFFFFE020 ); + sal_uInt32 nCtrlFlags = __nFlags; + + if( nCtrlFlags & 0x0001 ) EXC_CTRLDUMP_HEX4( "forecolor" ); + if( nCtrlFlags & 0x0002 ) EXC_CTRLDUMP_HEX4( "backcolor" ); + if( nCtrlFlags & 0x0004 ) + { + EXC_CTRLDUMP_STARTFLAG( "option-flags" ); + EXC_CTRLDUMP_ADDFLAG( 0x00000002, "enabled" ); + EXC_CTRLDUMP_ADDFLAG( 0x00000004, "locked" ); + EXC_CTRLDUMP_ADDFLAG( 0x00000008, "backstyle" ); + EXC_CTRLDUMP_ADDFLAG( 0x00800000, "wordwrap" ); + EXC_CTRLDUMP_ADDFLAG( 0x10000000, "autosize" ); + EXC_CTRLDUMP_ENDFLAG( 0xEF7FFFF1 ); + } + if( nCtrlFlags & 0x0008 ) EXC_CTRLDUMP_DECVARMASK( nCaptionLen, 0x7FFFFFFF, "caption-len" ); + if( nCtrlFlags & 0x0010 ) EXC_CTRLDUMP_COORD( "pos" ); + if( nCtrlFlags & 0x0040 ) EXC_CTRLDUMP_HEX2( "mouseptr" ); + if( nCtrlFlags & 0x0080 ) EXC_CTRLDUMP_HEX4( "bordercolor" ); + if( nCtrlFlags & 0x0100 ) EXC_CTRLDUMP_HEX2( "borderstyle" ); + if( nCtrlFlags & 0x0200 ) EXC_CTRLDUMP_HEX2( "specialleff" ); + if( nCtrlFlags & 0x0400 ) EXC_CTRLDUMP_HEX2( "pic-len" ); + if( nCtrlFlags & 0x0800 ) EXC_CTRLDUMP_HEX2( "accel" ); + if( nCtrlFlags & 0x1000 ) EXC_CTRLDUMP_HEX2( "icon-len" ); + EXC_CTRLDUMP_STRING( nCaptionLen, "caption" ); + EXC_CTRLDUMP_SIZE(); + } + break; + } + EXC_CTRLDUMP_PRINT(); + + EXC_CTRLDUMP_ALIGN_INSTRM( 4 ); + if( rInStrm.Tell() < nNextPos ) + { + rOutStrm << " unknown data:"; + ContDumpStream( rInStrm, nNextPos - rInStrm.Tell() ); + rOutStrm << '\n'; + } + rInStrm.Seek( nNextPos ); + + // font data + rInStrm >> nId >> nSize; + if( nId == 0x0200 ) + { + nNextPos = rInStrm.Tell() + nSize; + + t = "id="; __AddHex( t, nId ); t += " size="; __AddHex( t, nSize ); + rOutStrm << t.GetBuffer() << " (font data)\n"; + t.Erase(); + + EXC_CTRLDUMP_STARTFLAG( "content-flags" ); + EXC_CTRLDUMP_ADDFLAG( 0x01, "fontname" ); + EXC_CTRLDUMP_ADDFLAG( 0x02, "fontstyle" ); + EXC_CTRLDUMP_ADDFLAG( 0x04, "fontsize" ); + EXC_CTRLDUMP_ADDFLAG( 0x10, "language-id" ); + EXC_CTRLDUMP_ADDFLAG( 0x40, "align" ); + EXC_CTRLDUMP_ADDFLAG( 0x80, "fontweight" ); + EXC_CTRLDUMP_ENDFLAG( 0xFFFFFF08 ); // 0x20 always set? + sal_uInt32 nCtrlFlags = __nFlags; + sal_uInt32 nFontLen = 0; + + if( nCtrlFlags & 0x0001 ) EXC_CTRLDUMP_DECVARMASK( nFontLen, 0x7FFFFFFF, "fontname-len" ); + if( nCtrlFlags & 0x0002 ) + { + EXC_CTRLDUMP_STARTFLAG( "fontstyle-flags" ); + EXC_CTRLDUMP_ADDFLAG( 0x01, "bold" ); + EXC_CTRLDUMP_ADDFLAG( 0x02, "italic" ); + EXC_CTRLDUMP_ADDFLAG( 0x04, "underline" ); + EXC_CTRLDUMP_ADDFLAG( 0x08, "strikeout" ); + EXC_CTRLDUMP_ENDFLAG( 0xBFFFFFF0 ); // 0x40000000 always set? + } + if( nCtrlFlags & 0x0004 ) EXC_CTRLDUMP_DEC4( "fontsize" ); + if( nCtrlFlags & 0x0010 ) EXC_CTRLDUMP_HEX2( "language-id" ); + if( nCtrlFlags & 0x0040 ) + { + EXC_CTRLDUMP_ALIGN_INSTRM( 2 ); + sal_uInt16 nAlign; rInStrm >> nAlign; + t += " align="; __AddDec( t, nAlign ); + switch( nAlign ) + { + case 1: t += "=left"; break; + case 2: t += "=right"; break; + case 3: t += "=center"; break; + default: t += "=!unknown!"; + } + EXC_CTRLDUMP_PRINTC(); + } + if( nCtrlFlags & 0x0080 ) EXC_CTRLDUMP_DEC2( "fontweight" ); + EXC_CTRLDUMP_STRING( nFontLen, "font" ); + EXC_CTRLDUMP_PRINT(); + + EXC_CTRLDUMP_ALIGN_INSTRM( 4 ); + if( rInStrm.Tell() < nNextPos ) + { + rOutStrm << " unknown data:"; + ContDumpStream( rInStrm, nNextPos - rInStrm.Tell() ); + rOutStrm << '\n'; + } + rInStrm.Seek( nNextPos ); + } + else + rInStrm.SeekRel( -4 ); } - *pDumpStream << "\n### end Ctls stream ###\n"; + + rOutStrm << "\n-- end of stream --\n"; } @@ -7582,11 +7980,14 @@ BOOL Biff8RecDumper::Dump( XclImpStream& r ) r.StoreGlobalPosition(); r.SetWarningMode( bWarnings ); - FilterProgressBar* pPrgrsBar = new FilterProgressBar( r ); + ::std::auto_ptr< ScfProgressBar > pProgress( new ScfProgressBar( + pExcRoot->pIR->GetDocShell(), String( RTL_CONSTASCII_USTRINGPARAM( "Dumper" ) ) ) ); + sal_Int32 nStreamSeg = pProgress->AddSegment( r.GetStreamSize() ); + pProgress->ActivateSegment( nStreamSeg ); while( r.StartNextRecord() ) { - pPrgrsBar->Progress(); + pProgress->Progress( r.Tell() ); if( HasModeDump( r.GetRecId() ) ) RecDump(); @@ -7595,7 +7996,7 @@ BOOL Biff8RecDumper::Dump( XclImpStream& r ) *pDumpStream << '\n'; pIn = NULL; - delete pPrgrsBar; + pProgress.reset(); r.SeekGlobalPosition(); r.SetWarningMode( TRUE ); diff --git a/sc/source/filter/excel/biffrecdumper.ini b/sc/source/filter/excel/biffrecdumper.ini index a11b7a5f83da..62629107a08a 100644 --- a/sc/source/filter/excel/biffrecdumper.ini +++ b/sc/source/filter/excel/biffrecdumper.ini @@ -74,6 +74,7 @@ BODY=* // alternativ B 0x0042=CODEPAGE , 0x0043=XF , 0x0044=IXFE , +0x0045=EFONT , 0x004D=PLS , 0x0050=DCON , 0x0051=DCONREF , diff --git a/sc/source/filter/excel/colrowst.cxx b/sc/source/filter/excel/colrowst.cxx index c32eea396f43..b3c95293cb41 100644 --- a/sc/source/filter/excel/colrowst.cxx +++ b/sc/source/filter/excel/colrowst.cxx @@ -2,9 +2,9 @@ * * $RCSfile: colrowst.cxx,v $ * - * $Revision: 1.15 $ + * $Revision: 1.16 $ * - * last change: $Author: jmarmion $ $Date: 2002-12-10 14:07:24 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:29 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -500,7 +500,6 @@ ScExtDocOptions::ScExtDocOptions( void ) pCodenames = NULL; bChanged = TRUE; - fColScale = 0.0; SetWinProtection(false); } @@ -578,8 +577,6 @@ ScExtDocOptions& ScExtDocOptions::operator =( const ScExtDocOptions& rCpy ) bChanged = rCpy.bChanged; - fColScale = rCpy.fColScale; - return *this; } diff --git a/sc/source/filter/excel/excdoc.cxx b/sc/source/filter/excel/excdoc.cxx index b34765178dad..31bc8417150b 100644 --- a/sc/source/filter/excel/excdoc.cxx +++ b/sc/source/filter/excel/excdoc.cxx @@ -2,9 +2,9 @@ * * $RCSfile: excdoc.cxx,v $ * - * $Revision: 1.42 $ + * $Revision: 1.43 $ * - * last change: $Author: dr $ $Date: 2002-12-12 13:13:54 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:29 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -254,8 +254,9 @@ void ExcTable::SetDefRowXF( UINT16 nXF, UINT16 n ) void ExcTable::FillAsHeader( ExcRecordListRefs& rBSRecList ) { RootData& rR = *pExcRoot; + const XclExpRoot& rRoot = *rR.pER; ScDocument& rDoc = *rR.pDoc; - XclExpTabIdBuffer& rTabBuffer = rR.pER->GetTabIdBuffer(); + XclExpTabIdBuffer& rTabBuffer = rRoot.GetTabIdBuffer(); if ( rR.eDateiTyp < Biff8 ) Add( new ExcBofW ); @@ -269,31 +270,15 @@ void ExcTable::FillAsHeader( ExcRecordListRefs& rBSRecList ) UINT16 nCodenames = rTabBuffer.GetCodenameCount(); ExcNameList* pNameList = rR.pNameList = new ExcNameList( rR ); - UsedAttrList* pXFRecs = rR.pXFRecs = new UsedAttrList( &rR ); rR.pObjRecs = NULL; // per sheet - rR.pNoteRecs = NULL; // per sheet - - pXFRecs->SetBaseIndex( 21 ); if( rR.eDateiTyp < Biff8 ) Add( new ExcDummy_00 ); else { // first create style XFs - SfxStyleSheetIterator aStyleIter( rDoc.GetStyleSheetPool(), SFX_STYLE_FAMILY_PARA ); - SfxStyleSheetBase* pStyle = aStyleIter.First(); - ScPatternAttr* pPatt; - - while( pStyle ) - { - if( pStyle->IsUserDefined() ) - { - pPatt = new ScPatternAttr( &pStyle->GetItemSet() ); - pXFRecs->Find( pPatt, TRUE ); - } - pStyle = aStyleIter.Next(); - } + rRoot.GetXFBuffer().InsertUserStyles(); Add( new ExcDummy8_00a ); rR.pTabId = new XclExpChTrTabId( Max( nExcTabCount, nCodenames ) ); @@ -347,17 +332,12 @@ void ExcTable::FillAsHeader( ExcRecordListRefs& rBSRecList ) Add( new ExcDummy_040 ); Add( new Exc1904( rDoc ) ); Add( new ExcDummy_041 ); - // Font - Add( new XclExpRefRecord( rR.pER->GetFontBuffer() ) ); - // Format - Add( new XclExpRefRecord( rR.pER->GetNumFmtBuffer() ) ); - // XF + Style - Add( new ExcDummy_XF ); - Add( pXFRecs ); - // Style - Add( new ExcDummy_Style ); - // Colors - Add( new XclExpRefRecord( rR.pER->GetPalette() ) ); + + // Formatting: FONT, FORMAT, XF, STYLE, PALETTE + Add( new XclExpRefRecord( rRoot.GetFontBuffer() ) ); + Add( new XclExpRefRecord( rRoot.GetNumFmtBuffer() ) ); + Add( new XclExpRefRecord( rRoot.GetXFBuffer() ) ); + Add( new XclExpRefRecord( rRoot.GetPalette() ) ); // Bundlesheet ExcBundlesheetBase* pBS; @@ -380,15 +360,12 @@ void ExcTable::FillAsHeader( ExcRecordListRefs& rBSRecList ) Add( new ExcWindow18( rR ) ); Add( new Exc1904( rDoc ) ); Add( new ExcDummy8_041 ); - // Font - Add( new XclExpRefRecord( rR.pER->GetFontBuffer() ) ); - // Format - Add( new XclExpRefRecord( rR.pER->GetNumFmtBuffer() ) ); - // XF + Style - Add( new ExcDummy8_XF ); - Add( pXFRecs ); - // Style - Add( new ExcDummy8_Style ); + + // Formatting: FONT, FORMAT, XF, STYLE, PALETTE + Add( new XclExpRefRecord( rRoot.GetFontBuffer() ) ); + Add( new XclExpRefRecord( rRoot.GetNumFmtBuffer() ) ); + Add( new XclExpRefRecord( rRoot.GetXFBuffer() ) ); + Add( new XclExpRefRecord( rRoot.GetPalette() ) ); // Pivot Cache ScDPCollection* pDPColl = rDoc.GetDPCollection(); @@ -405,9 +382,6 @@ void ExcTable::FillAsHeader( ExcRecordListRefs& rBSRecList ) } } - // Colors - Add( new XclExpRefRecord( rR.pER->GetPalette() ) ); - // Change tracking if( rDoc.GetChangeTrack() ) { @@ -438,15 +412,15 @@ void ExcTable::FillAsHeader( ExcRecordListRefs& rBSRecList ) // COUNTRY always Germany Add( new ExcDummy8_Country ); - // SUPBOOKs, XCTs, CRNs, EXTERNSHEET - Add( new XclExpRefRecord( rR.pER->GetLinkManager() ) ); - // NAMEs + // SUPBOOK, XCT, CRN, EXTERNNAME, EXTERNSHEET + Add( new XclExpRefRecord( rRoot.GetLinkManager() ) ); + // NAME Add( pNameList ); // MSODRAWINGGROUP per-document data Add( new XclMsodrawinggroup( rR, ESCHER_DggContainer ) ); // SST, EXTSST - Add( new XclExpRefRecord( rR.pER->GetSst() ) ); + Add( new XclExpRefRecord( rRoot.GetSst() ) ); } Add( new ExcEof ); @@ -456,8 +430,10 @@ void ExcTable::FillAsHeader( ExcRecordListRefs& rBSRecList ) void ExcTable::FillAsTable( void ) { RootData& rR = *pExcRoot; - ScDocument& rDoc = *rR.pDoc; - XclExpTabIdBuffer& rTabBuffer = rR.pER->GetTabIdBuffer(); + const XclExpRoot& rRoot = *rR.pER; + ScDocument& rDoc = rRoot.GetDoc(); + XclExpTabIdBuffer& rTabBuffer = rRoot.GetTabIdBuffer(); + XclExpXFBuffer& rXFBuffer = rRoot.GetXFBuffer(); if( nScTab >= rTabBuffer.GetScTabCount() ) { @@ -477,7 +453,6 @@ void ExcTable::FillAsTable( void ) UINT16 nPrevRow = 0; UINT16 nColMin; // fuer aktuelle Zeile // Row-Records - const UINT16 nDefXF = 0x0F; UINT16 nCol = 0; UINT16 nRow = 0; @@ -507,6 +482,10 @@ void ExcTable::FillAsTable( void ) XclExpDval* pRecDval = NULL; // data validation + XclExpNoteList* pNoteList = NULL; // cell notes + + ExcFmlaResultStr* pFormulaResult = NULL; + DBG_ASSERT( (nScTab >= 0L) && (nScTab <= MAXTAB), "-ExcTable::Table(): nScTab - no ordinary table!" ); DBG_ASSERT( (nExcTab >= 0L) && (nExcTab <= MAXTAB), "-ExcTable::Table(): nExcTab - no ordinary table!" ); @@ -642,13 +621,15 @@ void ExcTable::FillAsTable( void ) Add( pExcDefColWidth ); // COLINFO records - ExcColinfo* pLastColInfo = new ExcColinfo( 0, nScTab, nDefXF, rR, aExcOLCol ); + sal_uInt16 nColDefXF = rXFBuffer.Insert( rDoc.GetPattern( 0, MAXROW, nScTab ) ); + ExcColinfo* pLastColInfo = new ExcColinfo( 0, nScTab, nColDefXF, rR, aExcOLCol ); ExcColinfo* pNewColInfo; Add( pLastColInfo ); for( UINT16 iCol = 1; iCol <= MAXCOL; iCol++ ) { - pNewColInfo = new ExcColinfo( iCol, nScTab, nDefXF, rR, aExcOLCol ); + nColDefXF = rXFBuffer.Insert( rDoc.GetPattern( iCol, MAXROW, nScTab ) ); + pNewColInfo = new ExcColinfo( iCol, nScTab, nColDefXF, rR, aExcOLCol ); pLastColInfo->Expand( pNewColInfo ); if( pNewColInfo ) { @@ -670,7 +651,7 @@ void ExcTable::FillAsTable( void ) // AutoFilter Add( new ExcAutoFilterRecs( rR, nScTab ) ); // list of NOTE records - rR.pNoteRecs = new XclNoteList; + pNoteList = new XclExpNoteList; } // NOTE @@ -684,7 +665,7 @@ void ExcTable::FillAsTable( void ) // at least one ROW rec if( !bIter ) - AddRow( new ExcRow( 0, nScTab, 0, 0, nDefXF, rDoc, aExcOLRow, *this ) ); + AddRow( new ExcRow( 0, nScTab, 0, 0, EXC_XF_DEFAULTCELL, rDoc, aExcOLRow, *this ) ); while( bIter ) { @@ -693,12 +674,13 @@ void ExcTable::FillAsTable( void ) pPatt = aIterator.GetPattern(); pAktExcCell = NULL; + pNote = NULL; pTableOpRec = NULL; // add ROW recs from empty rows while( nPrevRow < nRow ) { - ExcRow* pRow = new ExcRow( nPrevRow, nScTab, 0, 0, nDefXF, rDoc, aExcOLRow, *this ); + ExcRow* pRow = new ExcRow( nPrevRow, nScTab, 0, 0, EXC_XF_DEFAULTCELL, rDoc, aExcOLRow, *this ); AddUsedRow( pRow ); nPrevRow++; } @@ -764,47 +746,32 @@ void ExcTable::FillAsTable( void ) case CELLTYPE_FORMULA: { pLastRKMulRK = NULL; - ScFormulaCell* pFormCell = ( ScFormulaCell * ) pAktScCell; - ULONG nCellNumForm = ( pPatt ? - (( const SfxUInt32Item& ) pPatt->GetItem( - ATTR_VALUE_FORMAT )).GetValue() : 0 ); - ULONG nAltNumForm; - BOOL bForceAltNumForm; - if( ( nCellNumForm % SV_COUNTRY_LANGUAGE_OFFSET ) == 0 ) - { - // #73420# Xcl doesn't know boolean number formats, - // we write "TRUE";"TRUE";"FALSE" or "WAHR";"WAHR";"FALSCH" - // or any other language dependent key words instead. - // Don't do it for automatic formula formats, - // because Xcl gets them right. - if( pFormCell->GetFormatType() == NUMBERFORMAT_LOGICAL ) - nAltNumForm = NUMBERFORMAT_ENTRY_NOT_FOUND; - else - nAltNumForm = pFormCell->GetStandardFormat( - rFormatter, nCellNumForm ); - bForceAltNumForm = FALSE; - } - else - { - // #73420# If number format set is boolean and - // automatic format is boolean don't write that ugly - // special format. - if( pFormCell->GetFormatType() == NUMBERFORMAT_LOGICAL - && rFormatter.GetType( nCellNumForm ) == NUMBERFORMAT_LOGICAL ) - { - nAltNumForm = 0; - bForceAltNumForm = TRUE; - } - else - { - nAltNumForm = NUMBERFORMAT_ENTRY_NOT_FOUND; - bForceAltNumForm = FALSE; - } + ScFormulaCell* pFormCell = (ScFormulaCell*) pAktScCell; + + // current cell number format + sal_uInt32 nCellNumFmt = pPatt ? + static_cast< const SfxUInt32Item& >( pPatt->GetItem( ATTR_VALUE_FORMAT ) ).GetValue() : + rR.pER->GetNumFmtBuffer().GetStandardFormat(); + // alternative number format passed to XF buffer + sal_uInt32 nFmlaNumFmt = NUMBERFORMAT_ENTRY_NOT_FOUND; + + /* #73420# Xcl doesn't know boolean number formats, we write + "TRUE";"TRUE";"FALSE" (language dependent). Don't do it for + automatic formula formats, because Xcl gets them right. */ + /* #i8640# Don't set text format, if we have string results */ + if( ((nCellNumFmt % SV_COUNTRY_LANGUAGE_OFFSET) == 0) && + (pFormCell->GetFormatType() != NUMBERFORMAT_LOGICAL) && + (pFormCell->GetFormatType() != NUMBERFORMAT_TEXT) ) + nFmlaNumFmt = pFormCell->GetStandardFormat( rFormatter, nCellNumFmt ); + /* #73420# If cell number format is Boolean and automatic formula + format is Boolean don't write that ugly special format. */ + else if( (pFormCell->GetFormatType() == NUMBERFORMAT_LOGICAL) && + (rFormatter.GetType( nCellNumFmt ) == NUMBERFORMAT_LOGICAL) ) + nFmlaNumFmt = rR.pER->GetNumFmtBuffer().GetStandardFormat(); - } ExcFormula* pFmlaCell = new ExcFormula( - aScPos, pPatt, rR, nAltNumForm, bForceAltNumForm, *pFormCell->GetCode(), - &pLastArray, ( ScMatrixMode ) pFormCell->GetMatrixFlag(), &pShrdFmla, &aShrdFmlaList ); + aScPos, pPatt, rR, nFmlaNumFmt, *pFormCell->GetCode(), + &pLastArray, ( ScMatrixMode ) pFormCell->GetMatrixFlag(), &pShrdFmla, &aShrdFmlaList, pFormCell, &pFormulaResult); pAktExcCell = pFmlaCell; pTableOpRec = aTableOpList.InsertCell( pFormCell->GetCode(), *pFmlaCell ); } @@ -828,6 +795,7 @@ void ExcTable::FillAsTable( void ) break; case CELLTYPE_NOTE: { + pAktScCell = NULL; // #i11733# empty note cell is empty cell pAktExcCell = NULL; pLastRKMulRK = NULL; DBG_ASSERT( pNote, "-ExcTable::Table(): Note-Cell ohne Note!" ); @@ -845,17 +813,16 @@ void ExcTable::FillAsTable( void ) pLastRKMulRK = NULL; } } - else - {// leere Zelle mit Attributierung - pNote = NULL; + // #i11733# not "else" - pAktScCell may be set to NULL above (empty note cell) + if( !pAktScCell ) + {// leere Zelle mit Attributierung UINT16 nColCnt = aIterator.GetEndCol() - aIterator.GetStartCol() + 1; if( pLastBlank && pLastBlank->GetLastCol() + 1 == aIterator.GetStartCol() ) { pLastBlank->Add( aScPos, pPatt, rR, nColCnt, *this ); - - pAktScCell = NULL; // kein NEUER Record! + pAktExcCell = NULL; // kein NEUER Record! } else { @@ -889,26 +856,36 @@ void ExcTable::FillAsTable( void ) if( pTableOpRec ) Add( pTableOpRec ); - // notes - String sNoteText; - String sNoteAuthor; - if( pNote ) + if(pFormulaResult) { - sNoteText = pNote->GetText(); - sNoteAuthor = pNote->GetAuthor(); + Add( pFormulaResult ); + pFormulaResult = NULL; } - if( rR.sAddNoteText.Len() ) + + + // notes + if( rRoot.GetBiff() < xlBiff8 ) { - if( sNoteText.Len() ) - (sNoteText += (sal_Unicode) 0x0A) += (sal_Unicode) 0x0A; - sNoteText += rR.sAddNoteText; + String sNoteText; + String sNoteAuthor; + if( pNote ) + { + sNoteText = pNote->GetText(); + sNoteAuthor = pNote->GetAuthor(); + } + if( rR.sAddNoteText.Len() ) + { + if( sNoteText.Len() ) + (sNoteText += (sal_Unicode) 0x0A) += (sal_Unicode) 0x0A; + sNoteText += rR.sAddNoteText; + } + if( sNoteText.Len() || sNoteAuthor.Len() ) + Add( new ExcNote( aScPos, sNoteText, rR ) ); } - if( sNoteText.Len() || sNoteAuthor.Len() ) + else { - if ( rR.eDateiTyp < Biff8 ) - Add( new ExcNote( aScPos, sNoteText, rR ) ); - else - rR.pNoteRecs->Add( new XclNote( rR, aScPos, sNoteText, sNoteAuthor ) ); + if( pNote || rR.sAddNoteText.Len() ) + pNoteList->Append( new XclExpNote( rRoot, aScPos, pNote, rR.sAddNoteText ) ); } if( pPatt && (rR.eDateiTyp >= Biff8) ) @@ -950,7 +927,7 @@ void ExcTable::FillAsTable( void ) // new row -> add previous ROW rec if( !bIter || (nPrevRow < nRow) ) { - AddRow( new ExcRow( nPrevRow, nScTab, nColMin, nCol, nDefXF, rDoc, aExcOLRow, *this ) ); + AddRow( new ExcRow( nPrevRow, nScTab, nColMin, nCol, EXC_XF_DEFAULTCELL, rDoc, aExcOLRow, *this ) ); nPrevRow++; nColMin = aIterator.GetStartCol(); @@ -964,7 +941,7 @@ void ExcTable::FillAsTable( void ) while( nRow < nMaxFlagRow ) { nRow++; - ExcRow* pRow = new ExcRow( nRow, nScTab, 0, 0, nDefXF, rDoc, aExcOLRow, *this ); + ExcRow* pRow = new ExcRow( nRow, nScTab, 0, 0, EXC_XF_DEFAULTCELL, rDoc, aExcOLRow, *this ); AddUsedRow( pRow ); } @@ -997,7 +974,7 @@ void ExcTable::FillAsTable( void ) // all MSODRAWING and OBJ stuff of this sheet goes here Add( rR.pObjRecs ); // NOTE records - Add( rR.pNoteRecs ); + Add( pNoteList ); // pivot tables ScDPCollection* pDPColl = rDoc.GetDPCollection(); @@ -1156,7 +1133,7 @@ ExcDocument::ExcDocument( const XclExpRoot& rRoot ) : pTabNames = new NameBuffer( 0, 16 ); pPrgrsBar = new ScProgress( - NULL, ScGlobal::GetRscString(STR_SAVE_DOC), + GetDocShell(), ScGlobal::GetRscString(STR_SAVE_DOC), ( UINT32 ) GetDoc().GetCellCount() * 2 ); ExcCell::SetPrgrsBar( *pPrgrsBar ); } diff --git a/sc/source/filter/excel/excel.cxx b/sc/source/filter/excel/excel.cxx index febdc7690b53..a04b41debf8b 100644 --- a/sc/source/filter/excel/excel.cxx +++ b/sc/source/filter/excel/excel.cxx @@ -2,9 +2,9 @@ * * $RCSfile: excel.cxx,v $ * - * $Revision: 1.9 $ + * $Revision: 1.10 $ * - * last change: $Author: dr $ $Date: 2002-11-21 12:15:59 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:30 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses diff --git a/sc/source/filter/excel/excform.cxx b/sc/source/filter/excel/excform.cxx index 970a12a0e81e..6ab7ceb0deae 100644 --- a/sc/source/filter/excel/excform.cxx +++ b/sc/source/filter/excel/excform.cxx @@ -2,9 +2,9 @@ * * $RCSfile: excform.cxx,v $ * - * $Revision: 1.19 $ + * $Revision: 1.20 $ * - * last change: $Author: dr $ $Date: 2002-11-21 12:15:59 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:30 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -1857,7 +1857,7 @@ DefTokenId ExcelToSc::IndexToToken( UINT16 nIndex ) ocNoName, // XlfScenarioGet ocNoName, // XlfOptionsListsGet ocISPMT, // XlfIspmt - ocGetDiffDate, // XlfDatedif + ocNoName, // XlfDatedif ocNoName, // XlfDatestring ocNoName, // XlfNumberstring ocRoman, // XlfRoman @@ -2270,7 +2270,7 @@ BYTE ExcelToSc::IndexToAnzahl( UINT16 nIndex ) 0, // XlfScenarioGet 0, // XlfOptionsListsGet 4, // XlfIspmt - 0, // XlfDatedif + 3, // XlfDatedif 0, // XlfDatestring 0, // XlfNumberstring 1, // XlfRoman @@ -2380,6 +2380,11 @@ void ExcelToSc::ExcRelToScRel( UINT16 nRow, UINT8 nCol, SingleRefData &rSRD, con rSRD.nRelCol = rSRD.nCol - aEingPos.Col(); if ( rSRD.IsRowRel() ) rSRD.nRelRow = rSRD.nRow - aEingPos.Row(); + + // T A B + // #i10184# abs needed if rel in shared formula for ScCompiler UpdateNameReference + if ( rSRD.IsTabRel() && !rSRD.IsFlag3D() ) + rSRD.nTab = pExcRoot->pIR->GetScTab() + rSRD.nRelTab; } } diff --git a/sc/source/filter/excel/excform8.cxx b/sc/source/filter/excel/excform8.cxx index 65a38494fe16..cb67ac7455cc 100644 --- a/sc/source/filter/excel/excform8.cxx +++ b/sc/source/filter/excel/excform8.cxx @@ -2,9 +2,9 @@ * * $RCSfile: excform8.cxx,v $ * - * $Revision: 1.22 $ + * $Revision: 1.23 $ * - * last change: $Author: dr $ $Date: 2002-12-06 15:17:05 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:31 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -671,6 +671,8 @@ ConvErr ExcelToSc8::Convert( const ScTokenArray*& rpTokArray, UINT32 nFormulaLen pExcRoot->pDoc->CreateDdeLink( aAppl, aExtDoc, pExtName->GetName() ); } + else if( (pExtName->GetType() == xlExtName) && pSupbook->IsAddIn() ) + aStack << aPool.Store( ocNoName, pExtName->GetAddInName() ); else aStack << aPool.Store( ocNoName, pExtName->GetName() ); } @@ -1229,6 +1231,11 @@ void ExcelToSc8::ExcRelToScRel( UINT16 nRow, UINT16 nC, SingleRefData &rSRD, con rSRD.nRelRow = (INT16) nRow - aEingPos.Row(); else rSRD.nRow = nRow; + + // T A B + // #i10184# abs needed if rel in shared formula for ScCompiler UpdateNameReference + if ( rSRD.IsTabRel() && !rSRD.IsFlag3D() ) + rSRD.nTab = pExcRoot->pIR->GetScTab() + rSRD.nRelTab; } } diff --git a/sc/source/filter/excel/excimp8.cxx b/sc/source/filter/excel/excimp8.cxx index 9174fcefbc16..5fd21973a8f4 100644 --- a/sc/source/filter/excel/excimp8.cxx +++ b/sc/source/filter/excel/excimp8.cxx @@ -2,9 +2,9 @@ * * $RCSfile: excimp8.cxx,v $ * - * $Revision: 1.79 $ + * $Revision: 1.80 $ * - * last change: $Author: jmarmion $ $Date: 2002-12-10 14:07:24 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:31 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -96,7 +96,6 @@ #include #include #include -#include #include #include @@ -106,7 +105,7 @@ #include #include -#include +#include #ifndef _UNOTOOLS_LOCALEDATAWRAPPER_HXX #include @@ -128,7 +127,13 @@ #include "markdata.hxx" #include "rangenam.hxx" #include "docoptio.hxx" +#ifndef SC_DETFUNC_HXX +#include "detfunc.hxx" +#endif +#ifndef SC_XLOCX_HXX +#include "xlocx.hxx" +#endif #ifndef SC_XILINK_HXX #include "xilink.hxx" #endif @@ -138,11 +143,9 @@ #include "excimp8.hxx" #include "excform.hxx" -#include "fltprgrs.hxx" #include "flttools.hxx" #include "scextopt.hxx" #include "stlpool.hxx" -#include "scmsocximexp.hxx" using namespace com::sun::star; @@ -274,9 +277,10 @@ void ExcCondForm::ReadCf( XclImpStream& rIn, ExcelToSc& rConv ) default: nPosF = 0; nPosL = 0; nPosP = 0; } - SfxItemSet& rStyleItemSet = rDoc.GetStyleSheetPool()->Make( - aStyle, SFX_STYLE_FAMILY_PARA, - SFXSTYLEBIT_USERDEF ).GetItemSet(); + SfxStyleSheetBase* pStyleSheet = rDoc.GetStyleSheetPool()->Find( aStyle, SFX_STYLE_FAMILY_PARA ); + SfxItemSet& rStyleItemSet = pStyleSheet ? pStyleSheet->GetItemSet() : + rDoc.GetStyleSheetPool()->Make( aStyle, SFX_STYLE_FAMILY_PARA, SFXSTYLEBIT_USERDEF ).GetItemSet(); + rStyleItemSet.ClearItem(); const XclImpPalette& rPalette = GetPalette(); @@ -340,42 +344,40 @@ void ExcCondForm::ReadCf( XclImpStream& rIn, ExcelToSc& rConv ) if( nPosL ) // line { - UINT8 nLineH, nLineV; - UINT16 nColH, nColV; + sal_uInt16 nLine, nColor1, nColor2; rIn.Seek( nPosL ); - - rIn >> nLineV >> nLineH >> nColV >> nColH; - - UINT8 nLineL = nLineV & 0x0F; - UINT16 nColL = nColV & 0x007F; - UINT8 nLineR = nLineV >> 4; - UINT16 nColR = ( nColV >> 7 ) & 0x007F; - UINT8 nLineT = nLineH & 0x0F; - UINT16 nColT = nColH & 0x007F; - UINT8 nLineB = nLineH >> 4; - UINT16 nColB = ( nColH >> 7 ) & 0x007F; - - XclImpXF::SetBorder( rStyleItemSet, rPalette, - nLineL, nColL, nLineR, nColR, nLineT, nColT, nLineB, nColB ); + rIn >> nLine >> nColor1 >> nColor2; + + XclImpXFBorder aBorder; + ::extract_value( aBorder.mnLeftLine, nLine, 0, 4 ); + ::extract_value( aBorder.mnRightLine, nLine, 4, 4 ); + ::extract_value( aBorder.mnTopLine, nLine, 8, 4 ); + ::extract_value( aBorder.mnBottomLine, nLine, 12, 4 ); + ::extract_value( aBorder.mnLeftColor, nColor1, 0, 7 ); + ::extract_value( aBorder.mnRightColor, nColor1, 7, 7 ); + ::extract_value( aBorder.mnTopColor, nColor2, 0, 7 ); + ::extract_value( aBorder.mnBottomColor, nColor2, 7, 7 ); + XclImpXF::SetBorder( rStyleItemSet, rPalette, aBorder ); } if( nPosP ) // pattern (fill) { - UINT16 nPatt; - UINT16 nCol; - + sal_uInt16 nPattern, nColor; rIn.Seek( nPosP ); - rIn >> nPatt >> nCol; + rIn >> nPattern >> nColor; - UINT8 nF = nCol & 0x007F; - UINT8 nB = ( nCol >> 7 ) & 0x007F; - UINT8 nP = (UINT8)((nPatt >> 10) & 0x003F); - if( nP <= 1 ) + XclImpXFArea aArea; + ::extract_value( aArea.mnForeColor, nColor, 0, 7 ); + ::extract_value( aArea.mnBackColor, nColor, 7, 7 ); + ::extract_value( aArea.mnPattern, nPattern, 10, 6 ); + if( (aArea.mnPattern == EXC_PATT_NONE) || (aArea.mnPattern == EXC_PATT_SOLID) ) { - nP = nB; nB = nF; nF = nP; nP = 1; + // overwrite a cell style with "no fill" + // EXC_PATT_SOLID forces creation of a brush item in SetArea() + ::std::swap( aArea.mnForeColor, aArea.mnBackColor ); + aArea.mnPattern = EXC_PATT_SOLID; } - - XclImpXF::SetArea( rStyleItemSet, rPalette, nP, nF, nB ); + XclImpXF::SetArea( rStyleItemSet, rPalette, aArea ); } // convert formulas @@ -448,7 +450,7 @@ void ExcCondForm::Apply( void ) if( nR2 > MAXROW ) nR2 = MAXROW; - GetDoc().ApplyPatternAreaTab( nC1, nR1, nC2, nR2, GetScTab(), aPat ); + GetDoc().ApplyPatternAreaTab( nC1, nR1, nC2, nR2, p->aStart.Tab(), aPat ); p = pRangeList->Next(); } @@ -484,8 +486,7 @@ void ExcCondFormList::Apply( void ) ImportExcel8::ImportExcel8( SvStorage* pStorage, SvStream& rStream, ScDocument* pDoc, const String& rBasePath, SvStorage* pPivotCache ) : - ImportExcel( rStream, pDoc, rBasePath ), - aObjManager( *pExcRoot ) + ImportExcel( rStream, pDoc, rBasePath ) { delete pFormConv; @@ -597,20 +598,30 @@ void ImportExcel8::Horizontalpagebreaks( void ) void ImportExcel8::Note( void ) { - UINT16 nCol, nRow, nId; + UINT16 nCol, nRow, nFlags, nId; - aIn >> nRow >> nCol; - aIn.Ignore( 2 ); - aIn >> nId; + aIn >> nRow >> nCol >> nFlags >> nId; if( nRow <= MAXROW && nCol <= MAXCOL ) { if( nId ) { - const XclImpEscherNote* pObj = aObjManager.GetObjNote( nId, GetScTab() ); + const XclImpEscherNote* pObj = GetObjectManager().GetObjNote( nId, GetScTab() ); const String* pText = pObj ? pObj->GetText() : NULL; if( pText ) - pD->SetNote( nCol, nRow, GetScTab(), ScPostIt( *pText ) ); + { + bool bVisible = ::get_flag( nFlags, EXC_NOTE_VISIBLE ); + ScPostIt aNote( *pText ); + aNote.SetShown( bVisible ); + GetDoc().SetNote( nCol, nRow, GetScTab(), aNote ); + if( bVisible ) + { + ScDocument *pDoc = GetDocPtr(); + ScDetectiveFunc( pDoc, GetScTab() ).ShowComment( nCol, nRow, TRUE ); + + // ScDetectiveFunc( GetDocPtr(), GetScTab() ).ShowComment( nCol, nRow, TRUE ); + } + } } } else @@ -623,7 +634,7 @@ void ImportExcel8::Note( void ) void ImportExcel8::Cont( void ) { if( bObjSection ) - aObjManager.ReadMsodrawing( aIn ); + GetObjectManager().ReadMsodrawing( aIn ); } @@ -648,14 +659,14 @@ void ImportExcel8::Dconref( void ) aTabName = aUrl; aUrl.Erase(); } - ScfTools::ConvertName( aTabName ); + ScfTools::ConvertToScSheetName( aTabName ); pCurrPivotCache->SetSource( nC1, nR1, nC2, nR2, aUrl, aTabName, bSelf ); } void ImportExcel8::Obj() { - aObjManager.ReadObj( aIn ); + GetObjectManager().ReadObj( maStrm ); } @@ -669,7 +680,7 @@ void ImportExcel8::Boundsheet( void ) String aName( aIn.ReadUniString( nLen ) ); - ScfTools::ConvertName( aName ); + ScfTools::ConvertToScSheetName( aName ); *pExcRoot->pTabNameBuff << aName; if( nBdshtTab > 0 ) @@ -730,19 +741,19 @@ void ImportExcel8::Cellmerging( void ) void ImportExcel8::Msodrawinggroup( void ) { - aObjManager.ReadMsodrawinggroup( aIn ); + GetObjectManager().ReadMsodrawinggroup( maStrm ); } void ImportExcel8::Msodrawing( void ) { - aObjManager.ReadMsodrawing( aIn ); + GetObjectManager().ReadMsodrawing( maStrm ); } void ImportExcel8::Msodrawingselection( void ) { - aObjManager.ReadMsodrawingselection( aIn ); + GetObjectManager().ReadMsodrawingselection( maStrm ); } void ImportExcel8::Condfmt( void ) @@ -842,7 +853,7 @@ void ImportExcel8::Label( void ) void ImportExcel8::Txo( void ) { - aObjManager.ReadTxo( aIn ); + GetObjectManager().ReadTxo( maStrm ); } @@ -923,11 +934,18 @@ void ImportExcel8::Name( void ) const BOOL bExtract = bBuiltIn && ( cFirstChar == EXC_BUILTIN_EXTRACT ); BOOL bAppendTabNum = FALSE; BOOL bSkip = FALSE; + RangeType eNameType = RT_ABSAREA; if( bBuiltIn ) XclTools::GetBuiltInName( aName, cFirstChar, nSheet ); else - ScfTools::ConvertName( aName ); + ScfTools::ConvertToScDefinedName( aName ); + + if(bPrintArea) + eNameType = RT_PRINTAREA; + if(bCriteria) + eNameType = RT_CRITERIA; + pFormConv->Reset(); if( nOpt & (EXC_NAME_VB | EXC_NAME_PROC | EXC_NAME_BIG) ) @@ -962,7 +980,12 @@ void ImportExcel8::Name( void ) else if( bCriteria ) pAutoFilterBuffer->AddAdvancedRange( aRange ); else if( bExtract ) - pAutoFilterBuffer->AddExtractPos( aRange ); + { + if( pErgebnis->IsValidReference( aRange ) ) + pAutoFilterBuffer->AddExtractPos( aRange ); + else + eNameType = RT_NAME; + } } } } @@ -973,7 +996,7 @@ void ImportExcel8::Name( void ) pExcRoot->pRNameBuff->Store( aName, NULL, nSheet ); else // ohne hidden - pExcRoot->pRNameBuff->Store( aName, pErgebnis, nSheet, bPrintArea ); + pExcRoot->pRNameBuff->Store( aName, pErgebnis, nSheet, eNameType ); } @@ -997,28 +1020,18 @@ void ImportExcel8::PostDocLoad( void ) pCondFormList->Apply(); if( pAutoFilterBuffer ) pAutoFilterBuffer->Apply(); - GetWebQueryBuffer().Apply(); + GetWebQueryBuffer().Apply(); //! test if extant UINT32 nChartCnt = 0; - SfxObjectShell* pShell = pD->GetDocumentShell(); - if( aObjManager.HasEscherStream() ) + SfxObjectShell* pShell = GetDocShell(); + XclImpObjectManager& rObjManager = GetObjectManager(); + + if( pShell && rObjManager.HasEscherStream() ) { - Biff8MSDffManager* pDffMan = new Biff8MSDffManager( *pExcRoot, aObjManager, + Biff8MSDffManager* pDffMan = new Biff8MSDffManager( *pExcRoot, rObjManager, 0, 0, pD->GetDrawLayer(), 1440 ); - const String aStrName( _STRING( "Ctls" ) ); - SvStorage& rStrg = *pExcRoot->pRootStorage; - const BOOL bHasCtrls = rStrg.IsContained( aStrName ) && rStrg.IsStream( aStrName ); - ScMSConvertControls* pCtrlConv; - SvStorageStreamRef xStStream; - - if( bHasCtrls && pShell ) - { - pCtrlConv = new ScMSConvertControls( pShell ); - xStStream = pExcRoot->pRootStorage->OpenStream( aStrName, STREAM_READ | STREAM_SHARE_DENYALL ); - } - const XclImpAnchorData* pAnch; const SvxMSDffShapeInfos* pShpInf = pDffMan->GetShapeInfos(); @@ -1045,6 +1058,8 @@ void ImportExcel8::PostDocLoad( void ) nOLEImpFlags |= OLE_POWERPOINT_2_STARIMPRESS; } + XclImpOcxConverter aOcxConverter( *this ); + for( n = 0 ; n < nMax ; n++ ) { p = pShpInf->GetObject( ( UINT16 ) n ); @@ -1052,7 +1067,7 @@ void ImportExcel8::PostDocLoad( void ) nShapeId = p->nShapeId; - XclImpEscherObj* pObj = aObjManager.GetObjFromStream( p->nFilePos ); + XclImpEscherObj* pObj = rObjManager.GetObjFromStream( p->nFilePos ); if( pObj && !pObj->GetSdrObj() ) { pMSDffImportData = new SvxMSDffImportData; @@ -1060,7 +1075,7 @@ void ImportExcel8::PostDocLoad( void ) if( pObj->GetSdrObj() ) { - pAnch = aObjManager.GetAnchorData( p->nFilePos ); + pAnch = rObjManager.GetAnchorData( p->nFilePos ); // *** find all objects to ignore *** bIgnoreObj = false; @@ -1074,7 +1089,7 @@ void ImportExcel8::PostDocLoad( void ) } // other objects if( !bIgnoreObj ) - bIgnoreObj = IsIgnoreObject( pObj->GetId() ); + bIgnoreObj = rObjManager.IsIgnoreObject( pObj->GetId() ); if( bIgnoreObj ) pObj->SetSdrObj( NULL ); // delete SdrObject @@ -1086,17 +1101,7 @@ void ImportExcel8::PostDocLoad( void ) ((XclImpEscherOle*)pObj)->CreateSdrOle( *pDffMan, nOLEImpFlags ); break; case otCtrl: - if( bHasCtrls ) - { - ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape > - xShapeRef = GetXShapeForSdrObject( ( SdrObject* ) pObj->GetSdrObj() ); - if( pCtrlConv->ReadOCXExcelKludgeStream( xStStream, &xShapeRef, TRUE ) ) - { - SdrObject* pNewObj = GetSdrObjectFromXShape( xShapeRef ); - if( pNewObj ) - pObj->SetSdrObj( pNewObj ); - } - } + aOcxConverter.ReadControl( static_cast< XclImpEscherOle& >( *pObj ) ); break; } } @@ -1106,25 +1111,11 @@ void ImportExcel8::PostDocLoad( void ) } } - if( bHasCtrls ) - delete pCtrlConv; - delete pDffMan; } - aObjManager.Apply(); + rObjManager.Apply(); - // controls -/* - ScMSConvertControls aCtrlConverter( pShell ); - String aStrName( String::CreateFromAscii( "Ctls" ) ); - com::sun::star::uno::Reference< com::sun::star::drawing::XShape >* pShapeRef = NULL; - - SvStorageStreamRef xStStream = pExcRoot->pRootStorage->OpenStream( - aStrName, STREAM_READ | STREAM_SHARE_DENYALL ); - aCtrlConverter.ReadOCXExcelKludgeStream( xStStream, pShapeRef, TRUE ); - // BOOL bFloatingCtrl -*/ ImportExcel::PostDocLoad(); // Scenarien bemachen! ACHTUNG: Hier wird Tabellen-Anzahl im Dokument erhoeht!! @@ -1175,45 +1166,6 @@ void ImportExcel8::PostDocLoad( void ) -void ImportExcel8::CreateTmpCtrlStorage( void ) -{ -// if( pExcRoot->pCtrlStorage ) - if( pExcRoot->xCtrlStorage.Is() ) - return; // already done - - SvStorageStream* pContrIn = pExcRoot->pRootStorage->OpenStream( _STRINGCONST( "Ctls" ), STREAM_STD_READ ); - if( pContrIn ) - { - SvStorageRef xStrg( new SvStorage( new SvMemoryStream(), TRUE ) ); - pExcRoot->xCtrlStorage = SvStorageRef( new SvStorage( new SvMemoryStream(), TRUE ) ); -// SvStorage* pStrg = new SvStorage( new SvMemoryStream(), TRUE ); - -// SvStorageStreamRef xTemp = pStrg->OpenStream( _STRINGCONST( "contents" ) ); - SvStorageStreamRef xTemp = xStrg->OpenStream( _STRINGCONST( "contents" ) ); - if ( xTemp.Is() && ( xTemp->GetError() == SVSTREAM_OK ) ) - { - pContrIn->Seek( 16 ); // no need for class id at this point - *xTemp << *pContrIn; - - SvGlobalName aName( 0xD7053240, 0xCE69, 0x11CD, 0xA7, 0x77, - 0x00, 0xDD, 0x01, 0x14, 0x3C, 0x57 ); - UINT32 nClip = SotExchange::RegisterFormatName( _STRING( "Embedded Object" ) ); -// pStrg->SetClass( aName, nClip, _STRING( "Microsoft Forms 2.0 CommandButton" ) ); - xStrg->SetClass( aName, nClip, _STRING( "Microsoft Forms 2.0 CommandButton" ) ); - - pExcRoot->xCtrlStorage = xStrg; - } -/* else - { - delete pStrg; - pStrg = NULL; - }*/ - -// pExcRoot->pCtrlStorage = pStrg; - } -} - - void ImportExcel8::EndAllChartObjects( void ) { } @@ -1335,6 +1287,17 @@ void ImportExcel8::SXVdex( void ) void ImportExcel8::FilterMode( void ) { + // The FilterMode record exists: if either the AutoFilter + // record exists or an Advanced Filter is saved and stored + // in the sheet. Thus if the FilterMode records only exists + // then the latter is true.. + if( !pAutoFilterBuffer ) return; + + pAutoFilterBuffer->IncrementActiveAF(); + + XclImpAutoFilterData* pData = pAutoFilterBuffer->GetByTab( GetScTab() ); + if( pData ) + pData->SetAutoOrAdvanced(); } void ImportExcel8::AutoFilterInfo( void ) @@ -1362,10 +1325,14 @@ void ImportExcel8::AutoFilter( void ) XclImpAutoFilterData::XclImpAutoFilterData( RootData* pRoot, const ScRange& rRange, const String& rName ) : ExcRoot( pRoot ), + pCurrDBData(NULL), nFirstEmpty( 0 ), bActive( FALSE ), bHasDropDown( FALSE ), - bHasConflict( FALSE ) + bHasConflict( FALSE ), + bCriteria( FALSE ), + bAutoOrAdvanced(FALSE), + aFilterName(rName) { aParam.nCol1 = rRange.aStart.Col(); aParam.nRow1 = rRange.aStart.Row(); @@ -1373,21 +1340,18 @@ XclImpAutoFilterData::XclImpAutoFilterData( RootData* pRoot, const ScRange& rRan aParam.nCol2 = rRange.aEnd.Col(); aParam.nRow2 = rRange.aEnd.Row(); - ScDBCollection& rColl = *pRoot->pDoc->GetDBCollection(); + // Excel defaults to always in place regardless + // of whether an extract record exists. The user + // must choose to explicity set the Copy To in the UI. + aParam.bInplace = TRUE; - pCurrDBData = rColl.GetDBAtArea( Tab(), StartCol(), StartRow(), EndCol(), EndRow() ); - if( !pCurrDBData ) - { - pCurrDBData = new ScDBData( rName, Tab(), StartCol(), StartRow(), EndCol(), EndRow() ); - if( pCurrDBData ) - rColl.Insert( pCurrDBData ); - } } void XclImpAutoFilterData::CreateFromDouble( String& rStr, double fVal ) { - SolarMath::DoubleToString( rStr, fVal, 'A', INT_MAX, - ScGlobal::pLocaleData->getNumDecimalSep().GetChar(0), TRUE ); + rStr += String( ::rtl::math::doubleToUString( fVal, + rtl_math_StringFormat_Automatic, rtl_math_DecimalPlaces_Max, + ScGlobal::pLocaleData->getNumDecimalSep().GetChar(0), TRUE)); } void XclImpAutoFilterData::SetCellAttribs() @@ -1563,8 +1527,13 @@ void XclImpAutoFilterData::ReadAutoFilter( XclImpStream& rStrm ) void XclImpAutoFilterData::SetAdvancedRange( const ScRange* pRange ) { - if( pCurrDBData ) - pCurrDBData->SetAdvancedQuerySource( pRange ); + if (pRange) + { + aCriteriaRange = *pRange; + bCriteria = TRUE; + } + else + bCriteria = FALSE; } void XclImpAutoFilterData::SetExtractPos( const ScAddress& rAddr ) @@ -1572,12 +1541,14 @@ void XclImpAutoFilterData::SetExtractPos( const ScAddress& rAddr ) aParam.nDestCol = rAddr.Col(); aParam.nDestRow = rAddr.Row(); aParam.nDestTab = rAddr.Tab(); - aParam.bInplace = FALSE; aParam.bDestPers = TRUE; + } -void XclImpAutoFilterData::Apply() +void XclImpAutoFilterData::Apply( const BOOL bUseUnNamed ) { + CreateScDBData(bUseUnNamed); + if( bActive ) { InsertQueryParam(); @@ -1593,8 +1564,68 @@ void XclImpAutoFilterData::Apply() } } +void XclImpAutoFilterData::CreateScDBData( const BOOL bUseUnNamed ) +{ + + // Create the ScDBData() object if the AutoFilter is activated + // or if we need to create the Advanced Filter. + if( bActive || bCriteria) + { + ScDBCollection& rColl = *pExcRoot->pDoc->GetDBCollection(); + pCurrDBData = rColl.GetDBAtArea( Tab(), StartCol(), StartRow(), EndCol(), EndRow() ); + if( !pCurrDBData ) + { + AmendAFName(bUseUnNamed); + + pCurrDBData = new ScDBData( aFilterName, Tab(), StartCol(), StartRow(), EndCol(), EndRow() ); + + if( pCurrDBData ) + { + if(bCriteria) + { + EnableRemoveFilter(); + + pCurrDBData->SetQueryParam( aParam ); + pCurrDBData->SetAdvancedQuerySource(&aCriteriaRange); + } + else + pCurrDBData->SetAdvancedQuerySource(NULL); + rColl.Insert( pCurrDBData ); + } + } + } + +} + +void XclImpAutoFilterData::EnableRemoveFilter() +{ + // only if this is a saved Advanced filter + if( !bActive && bAutoOrAdvanced ) + { + ScQueryEntry& aEntry = aParam.GetEntry( nFirstEmpty ); + aEntry.bDoQuery = TRUE; + ++nFirstEmpty; + } + // TBD: force the automatic activation of the + // "Remove Filter" by setting a virtual mouse click + // inside the advanced range +} +void XclImpAutoFilterData::AmendAFName(const BOOL bUseUnNamed) +{ + // If-and-only-if we have one AF filter then + // use the Calc "unnamed" range name. Calc + // only supports one in total while Excel + // supports one per sheet. + if( bUseUnNamed && bAutoOrAdvanced ) + aFilterName = ScGlobal::GetRscString(STR_DB_NONAME); +} + +XclImpAutoFilterBuffer::XclImpAutoFilterBuffer() : + nAFActiveCount( 0 ) +{ +} XclImpAutoFilterBuffer::~XclImpAutoFilterBuffer() { @@ -1626,7 +1657,7 @@ void XclImpAutoFilterBuffer::AddExtractPos( const ScRange& rRange ) void XclImpAutoFilterBuffer::Apply() { for( XclImpAutoFilterData* pData = _First(); pData; pData = _Next() ) - pData->Apply(); + pData->Apply(UseUnNamed()); } XclImpAutoFilterData* XclImpAutoFilterBuffer::GetByTab( UINT16 nTab ) diff --git a/sc/source/filter/excel/excobj.cxx b/sc/source/filter/excel/excobj.cxx index cc81bcf16da2..c74da3ec42d6 100644 --- a/sc/source/filter/excel/excobj.cxx +++ b/sc/source/filter/excel/excobj.cxx @@ -2,9 +2,9 @@ * * $RCSfile: excobj.cxx,v $ * - * $Revision: 1.24 $ + * $Revision: 1.25 $ * - * last change: $Author: dr $ $Date: 2002-11-21 12:16:00 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:31 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -129,8 +129,6 @@ #include "editutil.hxx" #include "imp_op.hxx" -#include "fltprgrs.hxx" -#include "scmsocximexp.hxx" #ifndef SC_XILINK_HXX #include "xilink.hxx" @@ -544,16 +542,3 @@ void ImportExcel::EndAllChartObjects( void ) #ifdef WNT #pragma optimize("",on) #endif - - - - -using namespace ::com::sun::star; - -BOOL ScMSConvertControls::InsertControl( - const uno::Reference< form::XFormComponent >& rFComp, - const awt::Size& rSize, - uno::Reference< drawing::XShape >* pShape,BOOL bFloatingCtrl ) -{ - return FALSE; -} diff --git a/sc/source/filter/excel/excrecds.cxx b/sc/source/filter/excel/excrecds.cxx index 91df7256f829..797f3de0cf8c 100644 --- a/sc/source/filter/excel/excrecds.cxx +++ b/sc/source/filter/excel/excrecds.cxx @@ -2,9 +2,9 @@ * * $RCSfile: excrecds.cxx,v $ * - * $Revision: 1.58 $ + * $Revision: 1.59 $ * - * last change: $Author: dr $ $Date: 2002-12-06 16:39:23 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:32 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -100,6 +100,7 @@ #include #include "global.hxx" +#include "globstr.hrc" #include "docpool.hxx" #include "patattr.hxx" #include "cell.hxx" @@ -176,64 +177,6 @@ const BYTE ExcDummy_041::pMyData[] = { }; const ULONG ExcDummy_041::nMyLen = sizeof( ExcDummy_041::pMyData ); -//--------------------------------------------------------- class ExcDummy_XF - -const BYTE ExcDummy_XF::pMyData[] = { - 0xe0, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf5, 0xff, 0x20, 0x00, - 0xc0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xe0, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf5, 0xff, 0x20, 0xf4, - 0xc0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xe0, 0x00, 0x10, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf5, 0xff, 0x20, 0xf4, - 0xc0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xe0, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0xf5, 0xff, 0x20, 0xf4, - 0xc0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xe0, 0x00, 0x10, 0x00, 0x02, 0x00, 0x00, 0x00, 0xf5, 0xff, 0x20, 0xf4, - 0xc0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xe0, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf5, 0xff, 0x20, 0xf4, - 0xc0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xe0, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf5, 0xff, 0x20, 0xf4, - 0xc0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xe0, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf5, 0xff, 0x20, 0xf4, - 0xc0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xe0, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf5, 0xff, 0x20, 0xf4, - 0xc0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xe0, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf5, 0xff, 0x20, 0xf4, - 0xc0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xe0, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf5, 0xff, 0x20, 0xf4, - 0xc0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xe0, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf5, 0xff, 0x20, 0xf4, - 0xc0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xe0, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf5, 0xff, 0x20, 0xf4, - 0xc0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xe0, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf5, 0xff, 0x20, 0xf4, - 0xc0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xe0, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf5, 0xff, 0x20, 0xf4, - 0xc0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xe0, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x20, 0x00, - 0xc0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xe0, 0x00, 0x10, 0x00, 0x05, 0x00, 0x2b, 0x00, 0xf5, 0xff, 0x20, 0xf8, - 0xc0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xe0, 0x00, 0x10, 0x00, 0x05, 0x00, 0x29, 0x00, 0xf5, 0xff, 0x20, 0xf8, - 0xc0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xe0, 0x00, 0x10, 0x00, 0x05, 0x00, 0x09, 0x00, 0xf5, 0xff, 0x20, 0xf8, - 0xc0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xe0, 0x00, 0x10, 0x00, 0x05, 0x00, 0x2c, 0x00, 0xf5, 0xff, 0x20, 0xf8, - 0xc0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0xe0, 0x00, 0x10, 0x00, 0x05, 0x00, 0x2a, 0x00, 0xf5, 0xff, 0x20, 0xf8, - 0xc0, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 -}; -const ULONG ExcDummy_XF::nMyLen = sizeof( ExcDummy_XF::pMyData ); - -//------------------------------------------------------ class ExcDummy_Style - -const BYTE ExcDummy_Style::pMyData[] = { - 0x93, 0x02, 0x04, 0x00, 0x10, 0x80, 0x03, 0xff, - 0x93, 0x02, 0x04, 0x00, 0x11, 0x80, 0x06, 0xff, - 0x93, 0x02, 0x04, 0x00, 0x12, 0x80, 0x05, 0xff, - 0x93, 0x02, 0x04, 0x00, 0x00, 0x80, 0x00, 0xff, - 0x93, 0x02, 0x04, 0x00, 0x13, 0x80, 0x04, 0xff, - 0x93, 0x02, 0x04, 0x00, 0x14, 0x80, 0x07, 0xff -}; -const ULONG ExcDummy_Style::nMyLen = sizeof( ExcDummy_Style::pMyData ); - //-------------------------------------------------------- class ExcDummy_02a - const BYTE ExcDummy_02a::pMyData[] = { 0x0d, 0x00, 0x02, 0x00, 0x01, 0x00, // CALCMODE @@ -260,14 +203,6 @@ const BYTE ExcDummy_02c::pMyData[] = { const ULONG ExcDummy_02c::nMyLen = sizeof( ExcDummy_02c::pMyData ); -//--------------------------------------------------------- - - -#ifdef DBG_UTIL -UINT16 ExcXf::nObjCnt = 0; -#endif - - //----------------------------------------------------------- class ExcRecord - void ExcRecord::Save( XclExpStream& rStrm ) @@ -525,35 +460,6 @@ UINT16 Exc1904::GetNum( void ) const -//--------------------------------------------------------- class ExcDummy_XF - - -ULONG ExcDummy_XF::GetLen( void ) const -{ - return nMyLen; -} - - -const BYTE* ExcDummy_XF::GetData( void ) const -{ - return pMyData; -} - - - -//------------------------------------------------------ class ExcDummy_Style - - -ULONG ExcDummy_Style::GetLen( void ) const -{ - return nMyLen; -} - - -const BYTE* ExcDummy_Style::GetData( void ) const -{ - return pMyData; -} - - //------------------------------------------------------ class ExcBundlesheet - ExcBundlesheetBase::ExcBundlesheetBase( RootData& rRootData, UINT16 nTab ) : @@ -700,19 +606,17 @@ ExcCell::ExcCell( const ScAddress rPos, const ScPatternAttr* pAttr, RootData& rRootData, - const ULONG nAltNumForm, - BOOL bForceAltNumForm ) : + const ULONG nAltNumForm ) : aPos( rPos ) { if( pPrgrsBar ) pPrgrsBar->SetState( GetCellCount() ); IncCellCount(); - DBG_ASSERT( rRootData.pXFRecs, "ExcCell::ExcCell - missing XF record list" ); DBG_ASSERT( rRootData.pCellMerging, "ExcCell::ExcCell - missing cell merging list" ); if( !rRootData.pCellMerging->FindMergeBaseXF( aPos, nXF ) ) - nXF = rRootData.pXFRecs->Find( pAttr, FALSE, nAltNumForm, bForceAltNumForm ); + nXF = rRootData.pER->GetXFBuffer().Insert( pAttr, nAltNumForm ); #ifdef DBG_UTIL _nRefCount++; @@ -799,7 +703,7 @@ ExcBoolerr::ExcBoolerr( UINT8 nValP, BOOL bIsError ) : // #73420# force to "no number format" if boolean value - ExcCell( rPos, pAttr, rRootData, (bIsError ? NUMBERFORMAT_ENTRY_NOT_FOUND : 0), !bIsError ), + ExcCell( rPos, pAttr, rRootData, bIsError ? NUMBERFORMAT_ENTRY_NOT_FOUND : 0 ), nVal( bIsError ? nValP : (nValP != 0) ), bError( bIsError != 0 ) { @@ -868,7 +772,7 @@ ExcRKMulRK* ExcRKMulRK::Extend( ExcRKMulRKEntry* pNewCont = new ExcRKMulRKEntry; if( !rRootData.pCellMerging->FindMergeBaseXF( rPos, pNewCont->nXF ) ) - pNewCont->nXF = rRootData.pXFRecs->Find( pAttr ); + pNewCont->nXF = rRootData.pER->GetXFBuffer().Insert( pAttr ); pNewCont->nVal = nVal; List::Insert( pNewCont, LIST_APPEND ); return NULL; @@ -1143,7 +1047,7 @@ ExcRichStr::ExcRichStr( ExcCell& rExcCell, String& rText, const ScPatternAttr* p } // XF mit Umbruch auswaehlen? - rExcCell.SetXF( nParCnt <= 1 ? rRoot.pXFRecs->Find( pAttr ) : rRoot.pXFRecs->FindWithLineBreak( pAttr ) ); + rExcCell.SetXF( rRoot.pER->GetXFBuffer().Insert( pAttr, nParCnt > 1 ) ); } else { @@ -1232,13 +1136,16 @@ ExcFormula::ExcFormula( const ScPatternAttr* pAttr, RootData& rRootData, const ULONG nAltNumForm, - BOOL bForceAltNumForm, const ScTokenArray& rTokArray, ExcArray** ppArray, ScMatrixMode eMM, ExcShrdFmla** ppShrdFmla, - ExcArrays* pShrdFmlas ) : - ExcCell( rPos, pAttr, rRootData, nAltNumForm, bForceAltNumForm ) + ExcArrays* pShrdFmlas, + ScFormulaCell* pFormulaCell, + ExcFmlaResultStr** pFormulaResult) : + ExcCell( rPos, pAttr, rRootData, nAltNumForm ) , + pFCell(pFormulaCell) + { bShrdFmla = FALSE; EC_Codetype eCodeType; @@ -1314,6 +1221,30 @@ ExcFormula::ExcFormula( delete pExcUPN; + if(pFCell && (pFCell->GetFormatType() == NUMBERFORMAT_TEXT)) + { + String sText; + pFCell->GetString(sText); + XclExpString aFormulaText; + if ( rRootData.eDateiTyp < Biff8 ) + { + aFormulaText.AssignByte(sText,*rRootData.pCharset); + *pFormulaResult = new ExcFmlaResultStr(aFormulaText); + } + else if(sText.Len()) + { + aFormulaText.Assign(sText); + *pFormulaResult = new ExcFmlaResultStr(aFormulaText); + } + else + *pFormulaResult = NULL; + } + else + { + *pFormulaResult = NULL; + } + + /* if( ppShrdFmla && aExcUPN.GetShrdFmla( pData, nFormLen ) ) { // shared formula ref only if( aExcUPN.IsFirstShrdFmla() ) @@ -1358,12 +1289,68 @@ void ExcFormula::SetTableOp( USHORT nCol, USHORT nRow ) ShortToSVBT16( (UINT16) nCol, (BYTE*) &pData[ 3 ] ); } - void ExcFormula::SaveDiff( XclExpStream& rStrm ) {// grbit chn UINT16 nGrBit = bShrdFmla? 0x000B : 0x0003; - rStrm << ( double ) 0.0 << nGrBit << ( UINT32 ) 0x00000000 - << nFormLen; + double fVal = 0.0; + UINT16 nErrorCode = 0; + String sText; + + + if(pFCell) + { + switch(pFCell->GetFormatType()) + { + case NUMBERFORMAT_NUMBER: + if(!(nErrorCode = pFCell->GetErrCode())) + { + fVal = pFCell->GetValue(); + rStrm << fVal; + } + else + { + BYTE nByte = ScErrorCodeToExc(nErrorCode); + rStrm << (UINT8)0x02 + << (UINT8)0 + << (UINT8)nByte + << (UINT16)0 << (UINT8)0 + << (UINT16)0xFFFF; + } + break; + + case NUMBERFORMAT_TEXT: + pFCell->GetString(sText); + if(sText.Len()) + rStrm << (UINT8)0x00 << (UINT32)0 << (UINT8)0 << (UINT16)0xFFFF; + else + { + if ( rStrm.GetRoot().GetBiff() < xlBiff8 ) + rStrm << (UINT8)0x00 << (UINT32)0 << (UINT8)0 << (UINT16)0xFFFF; + else + { + // empty formula result cells are represented by 0x03 in Biff8 + rStrm << (UINT8)0x03 << (UINT32)0 << (UINT8)0 << (UINT16)0xFFFF; + } + } + break; + + case NUMBERFORMAT_LOGICAL: + fVal = pFCell->GetValue(); + rStrm << (UINT8)0x01 + << (UINT8)0 + << (UINT8)((fVal != 0) ? 0x01 : 0x00) + << (UINT16)0 << (UINT8)0 + << (UINT16)0xFFFF; + break; + + default: + rStrm << fVal; + break; + } + } + + rStrm << nGrBit << (UINT32)0x00000000 << nFormLen; + rStrm.Write( pData, nFormLen ); } @@ -1379,6 +1366,33 @@ ULONG ExcFormula::GetDiffLen( void ) const return 16 + nFormLen; } +BYTE ExcFormula::ScErrorCodeToExc(UINT16 nErrorCode) +{ + BYTE nRetVal; + + switch(nErrorCode) + { + case errIllegalFPOperation: //503 to #DIV/0 + nRetVal = 0x07; + break; + case errNoValue : //519 to #VALUE (wrong argument or operand) + nRetVal = 0x0F; + break; + case errNoCode: //521 to #NULL + nRetVal = 0x00; + break; + case errNoRef: //524 to #REF(cell referral not valid) + nRetVal = 0x17; + break; + case errNoName: //525 to #NAME (does not recognise text) + nRetVal = 0x1D; + break; + default: + nRetVal = 0x0F; // all others to #VALUE + break; + } + return nRetVal; +} //---------------------------------------------------- class ExcBlankMulblank - @@ -1432,7 +1446,7 @@ void ExcBlankMulblank::AddEntries( DBG_ASSERT( rPos.Col() + nCount <= MAXCOL + 1, "ExcBlankMulblank::AddEntries - column overflow" ); ScAddress aCurrPos( rPos ); - UINT16 nCellXF = rRootData.pXFRecs->Find( pAttr ); + UINT16 nCellXF = rRootData.pER->GetXFBuffer().Insert( pAttr ); sal_uInt16 nTmpCount = nCount; while( nTmpCount ) @@ -1577,7 +1591,20 @@ void ExcNameListEntry::SetCode( const ExcUPN& rUPN ) void ExcNameListEntry::SaveCont( XclExpStream& rStrm ) { - rStrm << (UINT16) EXC_NAME_BUILTIN // grbit (built in only) + if(rStrm.GetRoot().GetBiff() < xlBiff8) + { + rStrm << (UINT16) EXC_NAME_BUILTIN // grbit (built in only) + << (UINT8) 0x00 // chKey (keyboard shortcut) + << (UINT8) 0x01 // cch (string len) + << nFormLen // cce (formula len) + << nTabNum // set ixals = itab + << nTabNum // itab (table index, 1-based) + << (UINT32) 0x00000000 // cch + << nBuiltInKey; // string + } + else + { + rStrm << (UINT16) EXC_NAME_BUILTIN // grbit (built in only) << (UINT8) 0x00 // chKey (keyboard shortcut) << (UINT8) 0x01 // cch (string len) << nFormLen // cce (formula len) @@ -1586,6 +1613,7 @@ void ExcNameListEntry::SaveCont( XclExpStream& rStrm ) << (UINT32) 0x00000000 // cch << (UINT8) 0x00 // string grbit << nBuiltInKey; // string + } rStrm.Write( pData, nFormLen ); } @@ -1665,6 +1693,10 @@ ExcName::ExcName( RootData& rRootData, ScDBData* pArea ) : String aRangeName; pArea->GetName( aRangeName ); + + if( IsBuiltInAFName( aRangeName, EXC_BUILTIN_AUTOFILTER )) + return; + SetUniqueName( aRangeName ); ScRange aRange; @@ -1740,6 +1772,16 @@ BOOL ExcName::SetBuiltInName( const String& rName, UINT8 nKey ) return FALSE; } +BOOL ExcName::IsBuiltInAFName( const String& rName, UINT8 nKey ) +{ + if( XclTools::IsBuiltInName( nTabNum, rName, nKey ) || + (rName == ScGlobal::GetRscString( STR_DB_NONAME ))) + { + bDummy = TRUE; + return TRUE; + } + return FALSE; +} void ExcName::SaveCont( XclExpStream& rStrm ) { @@ -1893,8 +1935,15 @@ ExcNameList::ExcNameList( RootData& rRootData ) : DBG_ASSERT( pData, "ExcNameList::ExcNameList - missing db area" ); ExcName* pExcName = new ExcName( rRootData, pData ); - nExpIx = Append( pExcName ); - pData->SetExportIndex( nExpIx ); + if( pExcName->IsDummy() ) + { + delete pExcName; + } + else + { + nExpIx = Append( pExcName ); + pData->SetExportIndex( nExpIx ); + } } maNextInsVec.resize( nScTabCount, Count() ); @@ -2092,7 +2141,7 @@ void ExcEGuts::SaveCont( XclExpStream& rStrm ) rStrm << (UINT16)(nRowLevel ? (12 * nRowLevel + 17) : 0) << (UINT16)(nColLevel ? (12 * nColLevel + 17) : 0) << (UINT16)(nRowLevel + (nRowLevel ? 1 : 0)) - << (UINT16)(nColLevel + (nRowLevel ? 1 : 0)); + << (UINT16)(nColLevel + (nColLevel ? 1 : 0)); } @@ -2279,7 +2328,7 @@ ExcColinfo::ExcColinfo( UINT16 nCol, UINT16 nTab, UINT16 nNewXF, RootData& rRoot nXF = nNewXF; - SetWidth( rDoc.GetColWidth( nCol, nTab ), rRoot.fColScale ); + nColWidth = XclTools::GetXclColumnWidth( rDoc.GetColWidth( nCol, nTab ), rRoot.pER->GetCharWidth() ); BYTE nColFlags = rDoc.GetColFlags( nCol, nTab ); nOptions = 0x0000; @@ -2295,18 +2344,6 @@ ExcColinfo::ExcColinfo( UINT16 nCol, UINT16 nTab, UINT16 nNewXF, RootData& rRoot } -void ExcColinfo::SetWidth( UINT16 nWidth, double fColScale ) -{ - double f = nWidth; - f *= 1328.0 / 25.0; - f += 90.0; - f *= 1.0 / 23.0; - f /= fColScale; - - nColWidth = (UINT16) f; -} - - void ExcColinfo::Expand( ExcColinfo*& rpExp ) { if( !rpExp ) return; @@ -2340,226 +2377,6 @@ ULONG ExcColinfo::GetLen( void ) const -//--------------------------------------------------------------- class ExcXf - - -ExcXf::ExcXf( const XclExpRoot& rRoot, UINT16 nFont, UINT16 nForm, const ScPatternAttr* pPattAttr, BOOL& rbWrap, BOOL bSt ) : - XclExpRoot( rRoot ), - bStyle( bSt ) -{ -#ifdef DBG_UTIL - nObjCnt++; -#endif - - bAtrNum = bAtrFnt = bAtrAlc = bAtrBdr = bAtrPat = bAtrProt = !bSt; // always TRUE for cell xfs - - nIfnt = nFont; - nIfmt = nForm; - - if( pPattAttr ) - { - nOffs8 = 0x0000; - const ScProtectionAttr& rProtAttr = (const ScProtectionAttr&) pPattAttr->GetItem( ATTR_PROTECTION ); - if( rProtAttr.GetProtection() ) - nOffs8 |= EXC_XF_LOCKED; - if( rProtAttr.GetHideFormula() || rProtAttr.GetHideCell() ) - nOffs8 |= EXC_XF_HIDDEN; - - switch( ( SvxCellHorJustify ) - ((const SvxHorJustifyItem&)pPattAttr->GetItem( ATTR_HOR_JUSTIFY )).GetValue() ) - { - case SVX_HOR_JUSTIFY_STANDARD: eAlc = xlHAlignGeneral; break; - case SVX_HOR_JUSTIFY_LEFT: eAlc = xlHAlignLeft; break; - case SVX_HOR_JUSTIFY_CENTER: eAlc = xlHAlignCenter; break; - case SVX_HOR_JUSTIFY_RIGHT: eAlc = xlHAlignRight; break; - case SVX_HOR_JUSTIFY_BLOCK: eAlc = xlHAlignJustify; break; - case SVX_HOR_JUSTIFY_REPEAT: eAlc = xlHAlignFill; break; - default: - DBG_ERROR( "ExcXf::ExcXf(): ATTR_HOR_JUSTIFY unbekannt!" ); - eAlc = xlHAlignGeneral; - } - - switch( ( SvxCellVerJustify ) - ((const SvxVerJustifyItem&)pPattAttr->GetItem( ATTR_VER_JUSTIFY )).GetValue() ) - { - case SVX_VER_JUSTIFY_STANDARD: eAlcV = xlVAlignBottom; break; - case SVX_VER_JUSTIFY_TOP: eAlcV = xlVAlignTop; break; - case SVX_VER_JUSTIFY_CENTER: eAlcV = xlVAlignCenter; break; - case SVX_VER_JUSTIFY_BOTTOM: eAlcV = xlVAlignBottom; break; - default: - DBG_ERROR( "ExcXf::ExcXf(): ATTR_VER_JUSTIFY unbekannt!" ); - eAlcV = xlVAlignBottom; - } - - switch( ( SvxCellOrientation ) - ((const SvxOrientationItem&)pPattAttr->GetItem( ATTR_ORIENTATION )).GetValue() ) - { - case SVX_ORIENTATION_STANDARD: eOri = xlTextOrientNoRot; break; - case SVX_ORIENTATION_TOPBOTTOM: eOri = xlTextOrient90cw; break; - case SVX_ORIENTATION_BOTTOMTOP: eOri = xlTextOrient90ccw; break; - case SVX_ORIENTATION_STACKED: eOri = xlTextOrientTopBottom; break; - default: - DBG_ERROR( "ExcXf::ExcXf(): ATTR_ORIENTATION unbekannt!" ); - eOri = xlTextOrientNoRot; - } - - bFWrap = rbWrap || - ( ( BOOL ) ((const SfxBoolItem&)pPattAttr->GetItem( ATTR_LINEBREAK )).GetValue() ); - - // fore-/background - const SvxBrushItem& rBrushItem = ( const SvxBrushItem& ) pPattAttr->GetItem( ATTR_BACKGROUND ); - Color aCol = rBrushItem.GetColor(); - - nFls = aCol.GetTransparency()? 0x0000 : 0x0001; - - nIcvForeSer = GetPalette().InsertColor( aCol, xlColorCellArea ); - nIcvBackSer = GetPalette().InsertColor( Color( COL_BLACK ), xlColorCellArea ); - - // Umrandung - const SvxBoxItem& rBox = ((const SvxBoxItem&)pPattAttr->GetItem( ATTR_BORDER )); - - ScToExcBorderLine( GetPalette(), rBox.GetTop(), nIcvTopSer, nDgTop ); - ScToExcBorderLine( GetPalette(), rBox.GetLeft(), nIcvLftSer, nDgLeft ); - ScToExcBorderLine( GetPalette(), rBox.GetBottom(), nIcvBotSer, nDgBottom ); - ScToExcBorderLine( GetPalette(), rBox.GetRight(), nIcvRigSer, nDgRight ); - - if( bSt ) - { - static const USHORT pFntChkWichs[] = - { - ATTR_FONT_HEIGHT, - ATTR_FONT_WEIGHT, - ATTR_FONT_POSTURE, - ATTR_FONT_UNDERLINE, - ATTR_FONT_CROSSEDOUT, - ATTR_FONT_CONTOUR, - ATTR_FONT_SHADOWED, - ATTR_FONT_COLOR, - ATTR_FONT_LANGUAGE, - 0 - }; - - const SfxItemSet& rSet = pPattAttr->GetItemSet(); - - bAtrNum = rSet.GetItemState( ATTR_VALUE_FORMAT, FALSE ) == SFX_ITEM_SET; - bAtrFnt = pPattAttr->HasItemsSet( pFntChkWichs ); - bAtrAlc = ( rSet.GetItemState( ATTR_HOR_JUSTIFY, FALSE ) == SFX_ITEM_SET ) || - ( rSet.GetItemState( ATTR_VER_JUSTIFY, FALSE ) == SFX_ITEM_SET ) || - ( rSet.GetItemState( ATTR_LINEBREAK, FALSE ) == SFX_ITEM_SET ); - bAtrBdr = rSet.GetItemState( ATTR_BORDER, FALSE ) == SFX_ITEM_SET; - bAtrPat = rSet.GetItemState( ATTR_BACKGROUND, FALSE ) == SFX_ITEM_SET; - bAtrProt = rSet.GetItemState( ATTR_PROTECTION, FALSE ) == SFX_ITEM_SET; - } - } - else - { - nOffs8 = EXC_XF_LOCKED; - eAlc = xlHAlignGeneral; - eAlcV = xlVAlignBottom; - eOri = xlTextOrientNoRot; - bFWrap = FALSE; - nFls = 0x0000; - nIcvBackSer = GetPalette().InsertIndex( 65 ); - nIcvForeSer = GetPalette().InsertIndex( 64 ); - nIcvTopSer = nIcvBotSer = nIcvLftSer = nIcvRigSer = 0; - nDgTop = nDgLeft = nDgBottom = nDgRight = 0; - } - - rbWrap = bFWrap; - - bFSxButton = FALSE; // XF Record attached PivotTable Button -} - - -#ifdef DBG_UTIL -ExcXf::~ExcXf() -{ - nObjCnt--; -} -#endif - - -void ExcXf::ScToExcBorderLine( XclExpPalette& rPalette, const SvxBorderLine* pLine, UINT32& rIcvSer, UINT16& rDg ) -{ - if( !pLine ) - { - rIcvSer = rPalette.InsertIndex( 0 ); - rDg = 0; - return; - } - - rIcvSer = rPalette.InsertColor( pLine->GetColor(), xlColorCellBorder ); - - if( pLine->GetDistance() ) - // doppelte Linien - rDg = 6; - else - {// einfache Linien - UINT16 nOut = pLine->GetOutWidth(); - - if( nOut <= DEF_LINE_WIDTH_1 ) - rDg = 1; - else if( nOut <= DEF_LINE_WIDTH_2 ) - rDg = 2; - else - rDg = 5; - } -} - - -void ExcXf::SaveCont( XclExpStream& rStrm ) -{ - UINT16 nTmp; - - rStrm << nIfnt << nIfmt // Offs 4 + 6 - << nOffs8; // Offs 8 - - nTmp = ( UINT16 ) eAlc; // Offs 10 - nTmp |= 0x0800; // locked - if( bFWrap ) - nTmp += 0x0008; - nTmp += ( ( UINT16 ) eAlcV ) << 4; - nTmp += ( ( UINT16 ) eOri ) << 8; - rStrm << nTmp; - - UINT16 nForeInd, nBackInd; - GetPalette().GetMixedColors( nForeInd, nBackInd, nFls, nIcvForeSer, nIcvBackSer ); - nTmp = nForeInd; // Offs 12 - nTmp |= nBackInd << 7; - - if ( bFSxButton ) - nTmp |= 0x2000; - rStrm << nTmp; - - nTmp = nFls; // Offs 14 - nTmp += nDgBottom << 6; - nTmp |= GetPalette().GetColorIndex( nIcvBotSer ) << 9; - rStrm << nTmp; - - nTmp = nDgTop; // Offs 16 - nTmp += nDgLeft << 3; - nTmp += nDgRight << 6; - nTmp |= GetPalette().GetColorIndex( nIcvTopSer ) << 9; - rStrm << nTmp; - - nTmp = GetPalette().GetColorIndex( nIcvLftSer ); // Offs 18 - nTmp |= GetPalette().GetColorIndex( nIcvRigSer ) << 7; - rStrm << nTmp; -} - - -UINT16 ExcXf::GetNum( void ) const -{ - return 0x00E0; -} - - -ULONG ExcXf::GetLen( void ) const -{ - return 16; -} - - - //------------------------------------------------------ class ExcExterncount - ExcExterncount::ExcExterncount( RootData* pRD, const BOOL bTableNew ) : @@ -2608,7 +2425,7 @@ ExcExternsheet::ExcExternsheet( RootData* pExcRoot, const UINT16 nNewTabNum ) : void ExcExternsheet::SaveCont( XclExpStream& rStrm ) { - rStrm << ( UINT8 ) Min( (xub_StrLen)(aTabName.Len() + 1), (xub_StrLen) 255 ) << ( UINT8 ) 0x03; + rStrm << ( UINT8 ) Min( (xub_StrLen)(aTabName.Len() ), (xub_StrLen) 255 ) << ( UINT8 ) 0x03; rStrm.WriteByteStringBuffer( ByteString( aTabName, *pExcRoot->pCharset ), 254 ); // max 254 chars (leading 0x03!) } @@ -2721,133 +2538,6 @@ ULONG ExcSelection::GetLen( void ) const } -//------------------------------------------------------------ class UsedList - - -void UsedList::Save( XclExpStream& rStrm ) -{ - for( ExcRecord* pExcRec = (ExcRecord*) First(); pExcRec; pExcRec = (ExcRecord*) Next() ) - pExcRec->Save( rStrm ); -} - - - -//-------------------------------------------------------- class UsedAttrList - - -UsedAttrList::UsedAttrList( RootData* pRD ) : - ExcRoot( pRD ), - rFntLst( pRD->pER->GetFontBuffer() ), - rFrmLst( pRD->pER->GetNumFmtBuffer() ) -{ -} - - -UsedAttrList::~UsedAttrList() -{ - for( ENTRY* pEntry = _First(); pEntry; pEntry = _Next() ) - delete pEntry; -} - - -void UsedAttrList::AddNewXF( const ScPatternAttr* pAttr, const BOOL bStyle, const BOOL bExplLineBreak, - const ULONG nAltNumForm, BOOL bForceAltNumForm ) -{ - // Aufbauen der Excel-Daten - ENTRY* pData = new ENTRY; - pData->pPattAttr = pAttr; - pData->bLineBreak = bExplLineBreak; - pData->nAltNumForm = nAltNumForm; - List::Insert( pData, LIST_APPEND ); - - // Font-Daten - UINT16 nFontIndex; - - // Format-Daten - ULONG nScForm; - - if( pAttr ) - { - nFontIndex = rFntLst.Insert( *pAttr ); - - if ( bForceAltNumForm ) - nScForm = nAltNumForm; - else - { - nScForm = (( SfxUInt32Item& ) pAttr->GetItem( ATTR_VALUE_FORMAT )).GetValue(); - - if( nAltNumForm != NUMBERFORMAT_ENTRY_NOT_FOUND && - ( nScForm % SV_COUNTRY_LANGUAGE_OFFSET ) == 0 ) - nScForm = nAltNumForm; - } - } - else - { - nScForm = nAltNumForm; - nFontIndex = 0; - } - - UINT16 nFormatIndex = rFrmLst.Insert( nScForm ); - - if ( pExcRoot->eDateiTyp < Biff8 ) - pData->pXfRec = new ExcXf( *pExcRoot->pER, nFontIndex, nFormatIndex, pAttr, pData->bLineBreak, bStyle ); - else - pData->pXfRec = new ExcXf8( *pExcRoot->pER, nFontIndex, nFormatIndex, pAttr, pData->bLineBreak, bStyle ); -} - - -UINT16 UsedAttrList::Find( const ScPatternAttr* pAttr, const BOOL bStyle, - const UINT32 nAltNumForm, BOOL bForceAltNumForm ) -{ - if( !pAttr && nAltNumForm == NUMBERFORMAT_ENTRY_NOT_FOUND ) - return 15; // default XF - - DBG_ASSERT( nBaseIndex, "*UsedAttrList::Find(): leer == nichtleer?" ); - - UINT16 nC = nBaseIndex; - for( ENTRY* pCurr = _First(); pCurr; pCurr = _Next() ) - { - if( pCurr->Equal( pAttr, nAltNumForm ) ) - return nC; - nC++; - } - - // neuen ausdenken - - AddNewXF( pAttr, bStyle, FALSE, nAltNumForm, bForceAltNumForm ); - - return nC; -} - - -UINT16 UsedAttrList::FindWithLineBreak( const ScPatternAttr* pAttr ) -{ - DBG_ASSERT( nBaseIndex, - "*UsedAttrList::FindWithLineBreak(): leer == nichtleer?" ); - - UINT16 nC = nBaseIndex; - for( ENTRY* pCurr = _First(); pCurr; pCurr = _Next() ) - { - if( pCurr->pPattAttr == pAttr && pCurr->bLineBreak ) - return nC; - nC++; - } - - // neuen ausdenken - - AddNewXF( pAttr, FALSE, TRUE ); - - return nC; -} - - -void UsedAttrList::Save( XclExpStream& rStrm ) -{ - for( ENTRY* pEntry = _First(); pEntry; pEntry = _Next() ) - if( pEntry->pXfRec ) - pEntry->pXfRec->Save( rStrm ); -} - - - // XclExpWsbool =============================================================== XclExpWsbool::XclExpWsbool( RootData& rRootData ) : @@ -3861,6 +3551,24 @@ ULONG ExcShrdFmla::GetLen() const return 10 + nFormLen; } +//----------------------------------------------------------------- + +void ExcFmlaResultStr::WriteBody( XclExpStream& rStrm ) +{ + rStrm << maResultText; +} + + +ExcFmlaResultStr::ExcFmlaResultStr(const XclExpString& aFmlaText) : + XclExpRecord( EXC_ID_STRING ), + maResultText(aFmlaText) +{ +} + + +ExcFmlaResultStr::~ExcFmlaResultStr() +{ +} //--------------------------- class XclExpTableOp, class XclExpTableOpManager - diff --git a/sc/source/filter/excel/exctools.cxx b/sc/source/filter/excel/exctools.cxx index 7d95fa8f2288..95c4625c73e4 100644 --- a/sc/source/filter/excel/exctools.cxx +++ b/sc/source/filter/excel/exctools.cxx @@ -2,9 +2,9 @@ * * $RCSfile: exctools.cxx,v $ * - * $Revision: 1.39 $ + * $Revision: 1.40 $ * - * last change: $Author: dr $ $Date: 2002-12-06 16:39:23 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:32 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -89,7 +89,6 @@ #include "imp_op.hxx" #include "excimp8.hxx" #include "otlnbuff.hxx" -#include "fltprgrs.hxx" #include "excrecds.hxx" #include "xcl97rec.hxx" @@ -124,7 +123,7 @@ String RootData::GetCondFormStyleName( const UINT16 n ) RootData::RootData( void ) { - fColScale = fRowScale = 1.0; + fRowScale = 1.0; pDoc = NULL; pScRangeName = NULL; @@ -153,12 +152,10 @@ RootData::RootData( void ) pCellMerging = NULL; pNameList = NULL; pScNameList = NULL; - pXFRecs = NULL; pExtSheetCntAndRecs = NULL; nRowMax = 0; pObjRecs = NULL; - pNoteRecs = NULL; pEscher = NULL; pPivotCacheList = NULL; @@ -425,82 +422,6 @@ void OutlineBuffer::Reset( ScOutlineArray *pOArray ) -INT32 FilterProgressBar::nInstances = 0; - - -FilterProgressBar::FilterProgressBar( SvStream& rStream ) : pStr( &rStream ), pXIStr( NULL ) -{ - ULONG nOldPos = rStream.Tell(); - rStream.Seek( STREAM_SEEK_TO_END ); - ULONG nStrmLen = rStream.Tell(); - rStream.Seek( nOldPos ); - Init( nOldPos, nStrmLen, STR_LOAD_DOC ); -} - - -FilterProgressBar::FilterProgressBar( XclImpStream& rStream ) : pStr( NULL ), pXIStr( &rStream ) -{ - Init( rStream.Tell(), rStream.GetStreamSize(), STR_LOAD_DOC ); -} - - -FilterProgressBar::FilterProgressBar( UINT32 nObjCount ) : pStr( NULL ), pXIStr( NULL ) -{ - Init( 0, nObjCount, STR_PROGRESS_CALCULATING ); -} - - -FilterProgressBar::~FilterProgressBar() -{ - nInstances--; - - if( pPrgrs ) - delete pPrgrs; -} - - -void FilterProgressBar::Init( ULONG nStartPos, ULONG nSize, USHORT nResStr ) -{ - nInstances++; - - nCnt = 0; - - if( nInstances == 1 ) - { - nUnitSize = (nSize < 128) ? 1 : (nSize / 128); - nNextUnit = 0; - pPrgrs = new ScProgress( NULL, ScGlobal::GetRscString( nResStr ), nSize ); - pPrgrs->SetState( nStartPos ); - } - else - pPrgrs = NULL; -} - - -void FilterProgressBar::Progress( void ) -{ - if( pPrgrs ) - { - UINT32 nNewState; - if( pStr ) - nNewState = pStr->Tell(); - else if( pXIStr ) - nNewState = pXIStr->Tell(); - else - { - nCnt++; - nNewState = nCnt; - } - - if( nNewState >= nNextUnit ) - { - pPrgrs->SetState( nNewState ); - nNextUnit += nUnitSize; - } - } -} - - //___________________________________________________________________ diff --git a/sc/source/filter/excel/expop2.cxx b/sc/source/filter/excel/expop2.cxx index dad17f1c57f5..4f29f8e3b352 100644 --- a/sc/source/filter/excel/expop2.cxx +++ b/sc/source/filter/excel/expop2.cxx @@ -2,9 +2,9 @@ * * $RCSfile: expop2.cxx,v $ * - * $Revision: 1.13 $ + * $Revision: 1.14 $ * - * last change: $Author: dr $ $Date: 2002-11-21 12:16:01 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:33 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -135,17 +135,6 @@ ExportBiff5::ExportBiff5( SvStorage& rRootStorage, SvStream& aStream, ScDocument if( pExcRoot->fRowScale <= 0.0 ) pExcRoot->fRowScale = 1.0; - double fColScale = pExcRoot->pExtDocOpt->fColScale; - if( fColScale <= 0.0 ) - { - fColScale = aFilterOpt.GetExcelColScale(); - if( fColScale <= 0.0 ) - fColScale = 1.0; - - fColScale *= 1.027027027027; // adjustment for export of calc documents - } - pExcRoot->fColScale = fColScale; - pExcDoc = new ExcDocument( *this ); } diff --git a/sc/source/filter/excel/fontbuff.cxx b/sc/source/filter/excel/fontbuff.cxx index 67e67d97b17f..b6d7906fcddc 100644 --- a/sc/source/filter/excel/fontbuff.cxx +++ b/sc/source/filter/excel/fontbuff.cxx @@ -2,9 +2,9 @@ * * $RCSfile: fontbuff.cxx,v $ * - * $Revision: 1.9 $ + * $Revision: 1.10 $ * - * last change: $Author: dr $ $Date: 2002-11-21 12:16:01 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:33 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses diff --git a/sc/source/filter/excel/impop.cxx b/sc/source/filter/excel/impop.cxx index 83ca0f808803..7b5245468408 100644 --- a/sc/source/filter/excel/impop.cxx +++ b/sc/source/filter/excel/impop.cxx @@ -2,9 +2,9 @@ * * $RCSfile: impop.cxx,v $ * - * $Revision: 1.47 $ + * $Revision: 1.48 $ * - * last change: $Author: dr $ $Date: 2002-12-06 16:39:24 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:33 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -238,10 +238,6 @@ ImportExcel::ImportExcel( SvStream& rSvStrm, ScDocument* pDoc, const String& rBa // options from configuration ScFilterOptions aFilterOpt; - pExcRoot->fColScale = aFilterOpt.GetExcelColScale(); - if( pExcRoot->fColScale <= 0.0 ) - pExcRoot->fColScale = 1.0; - pExcRoot->fRowScale = aFilterOpt.GetExcelRowScale(); if( pExcRoot->fRowScale <= 0.0 ) pExcRoot->fRowScale = 1.0; @@ -497,11 +493,15 @@ void ImportExcel::Row25( void ) void ImportExcel::Bof2( void ) { sal_uInt16 nSubType; +#if SC_XCL_USEDECR maStrm.UseDecryption( false ); +#endif maStrm.Ignore( 2 ); maStrm >> nSubType; SetBiff( xlBiff2 ); +#if SC_XCL_USEDECR maStrm.UseDecryption( true ); +#endif pExcRoot->eHauptDateiTyp = Biff2; if( nSubType == 0x0010 ) // Worksheet? @@ -563,7 +563,7 @@ void ImportExcel::Externsheet( void ) bool bSameWorkBook; aIn.AppendByteString( aEncodedUrl, false ); XclImpUrlHelper::DecodeUrl( aUrl, aTabName, bSameWorkBook, *pExcRoot->pIR, aEncodedUrl ); - ScfTools::ConvertName( aTabName ); + ScfTools::ConvertToScSheetName( aTabName ); pExcRoot->pExtSheetBuff->Add( aUrl, aTabName, bSameWorkBook ); } @@ -584,7 +584,7 @@ void ImportExcel::Name25( void ) // Namen einlesen String aName( aIn.ReadRawByteString( nLenName ) ); - ScfTools::ConvertName( aName ); + ScfTools::ConvertToScDefinedName( aName ); pFormConv->Reset(); if( nAttr0 & 0x02 ) @@ -626,13 +626,18 @@ void ImportExcel::Name25( void ) sal_Char cFirstNameChar = ( sal_Char ) aName.GetChar( 0 ); const BOOL bPrintArea = bBuildIn && ( cFirstNameChar == EXC_BUILTIN_PRINTAREA ); const BOOL bPrintTitles = bBuildIn && ( cFirstNameChar == EXC_BUILTIN_PRINTTITLES ); + RangeType eNameType = RT_ABSAREA; + + if(bPrintArea) + eNameType = RT_PRINTAREA; + if( bBuildIn ) {// Build-in name XclTools::GetBuiltInName( aName, cFirstNameChar, nSheet ); } else - ScfTools::ConvertName( aName ); + ScfTools::ConvertToScDefinedName( aName ); pFormConv->Reset(); if( nOpt & (EXC_NAME_VB | EXC_NAME_BIG) ) @@ -658,7 +663,7 @@ void ImportExcel::Name25( void ) pExcRoot->pRNameBuff->Store( aName, NULL, nSheet ); else // ohne hidden - pExcRoot->pRNameBuff->Store( aName, pErgebnis, nSheet, bPrintArea ); + pExcRoot->pRNameBuff->Store( aName, pErgebnis, nSheet, eNameType); }// ----------------------------------------- Ende fuer Biff5 } @@ -821,7 +826,7 @@ void ImportExcel::Externname25( void ) if( ( nOpt & 0x0001 ) || ( ( nOpt & 0xFFFE ) == 0x0000 ) ) {// external name - ScfTools::ConvertName( aName ); + ScfTools::ConvertToScDefinedName( aName ); pExcRoot->pExtNameBuff->AddName( aName ); } else if( nOpt & 0x0010 ) @@ -845,7 +850,8 @@ void ImportExcel::Colwidth( void ) if( nColLast > MAXCOL ) nColLast = MAXCOL; - pColRowBuff->SetWidthRange( nColFirst, nColLast, CalcColWidth( nColWidth ) ); + sal_uInt16 nScWidth = XclTools::GetScColumnWidth( nColWidth, GetCharWidth() ); + pColRowBuff->SetWidthRange( nColFirst, nColLast, nScWidth ); } @@ -932,6 +938,7 @@ void ImportExcel::DocProtect( void ) BOOL ImportExcel::Filepass( void ) { +#if SC_XCL_USEDECR if( pExcRoot->eHauptDateiTyp <= Biff5 ) { aIn.UseDecryption( false ); @@ -958,6 +965,7 @@ BOOL ImportExcel::Filepass( void ) return !bValid; } else +#endif // POST: return = TRUE, wenn Password <> 0 return aIn.ReaduInt32() != 0; } @@ -1003,10 +1011,16 @@ void ImportExcel::Ixfe( void ) void ImportExcel::DefColWidth( void ) { - UINT16 nWidth; - aIn >> nWidth; + // stored as entire characters -> convert to 1/256 of characters (as in COLINFO) + double fDefWidth = 256.0 * maStrm.ReaduInt16(); + + // #i3006# additional space for default width - Excel adds space depending on font size + long nFontHt = GetFontBuffer().GetAppFontData().mnHeight; + fDefWidth += 40960.0 / ::std::max( nFontHt - 15L, 60L ) + 50.0; + fDefWidth = ::std::min( fDefWidth, 65535.0 ); - pColRowBuff->SetDefWidth( CalcColWidth( (UINT16) ( (double)nWidth * 292.5 ) ) ); + sal_uInt16 nScWidth = XclTools::GetScColumnWidth( static_cast< sal_uInt16 >( fDefWidth ), GetCharWidth() ); + pColRowBuff->SetDefWidth( nScWidth ); } @@ -1034,7 +1048,8 @@ void ImportExcel::Colinfo( void ) if( nOpt & EXC_COL_HIDDEN ) // Cols hidden? pColRowBuff->HideColRange( nColFirst, nColLast ); - pColRowBuff->SetWidthRange( nColFirst, nColLast, CalcColWidth( nColWidth ) ); + sal_uInt16 nScWidth = XclTools::GetScColumnWidth( nColWidth, GetCharWidth() ); + pColRowBuff->SetWidthRange( nColFirst, nColLast, nScWidth ); pColRowBuff->SetDefaultXF( nColFirst, nColLast, nXF ); } @@ -1112,7 +1127,7 @@ void ImportExcel::Boundsheet( void ) nGrbit = 0x0000; String aName( aIn.ReadByteString( FALSE ) ); - ScfTools::ConvertName( aName ); + ScfTools::ConvertToScSheetName( aName ); *pExcRoot->pTabNameBuff << aName; @@ -1199,10 +1214,8 @@ void ImportExcel::Palette( void ) void ImportExcel::Standardwidth( void ) { - UINT16 nWidth; - aIn >> nWidth; - - pColRowBuff->SetDefWidth( CalcColWidth( nWidth ), TRUE ); + sal_uInt16 nScWidth = XclTools::GetScColumnWidth( maStrm.ReaduInt16(), GetCharWidth() ); + pColRowBuff->SetDefWidth( nScWidth, TRUE ); } @@ -1634,11 +1647,15 @@ void ImportExcel::Row34( void ) void ImportExcel::Bof3( void ) { sal_uInt16 nSubType; +#if SC_XCL_USEDECR maStrm.UseDecryption( false ); +#endif maStrm.Ignore( 2 ); maStrm >> nSubType; SetBiff( xlBiff3 ); +#if SC_XCL_USEDECR maStrm.UseDecryption( true ); +#endif DBG_ASSERT( nSubType != 0x0100, "*ImportExcel::Bof3(): Biff3 als Workbook?!" ); pExcRoot->eHauptDateiTyp = Biff3; @@ -1685,7 +1702,7 @@ void ImportExcel::Name34( void ) } else { - ScfTools::ConvertName( aName ); + ScfTools::ConvertToScDefinedName( aName ); bPrintArea = bPrintTitles = bBuildIn = FALSE; } @@ -1725,7 +1742,7 @@ void ImportExcel::Array34( void ) BYTE nFirstCol, nLastCol; aIn >> nFirstRow >> nLastRow >> nFirstCol >> nLastCol; - aIn.Ignore( 6 ); + aIn.Ignore( (pExcRoot->eHauptDateiTyp >= Biff5) ? 6 : 2 ); aIn >> nFormLen; if( nLastRow <= MAXROW && nLastCol <= MAXCOL ) @@ -1864,11 +1881,15 @@ void ImportExcel::Window2_5( void ) void ImportExcel::Bof4( void ) { sal_uInt16 nSubType; +#if SC_XCL_USEDECR maStrm.UseDecryption( false ); +#endif maStrm.Ignore( 2 ); maStrm >> nSubType; SetBiff( xlBiff4 ); +#if SC_XCL_USEDECR maStrm.UseDecryption( true ); +#endif pExcRoot->eHauptDateiTyp = Biff4; if( nSubType == 0x0010 ) // Sheet? @@ -1894,10 +1915,14 @@ void ImportExcel::Bof5( void ) BiffTyp eHaupt = Biff5; BiffTyp eDatei; +#if SC_XCL_USEDECR maStrm.UseDecryption( false ); +#endif maStrm >> nVers >> nSubType; SetBiff( (nVers == 0x0600) ? xlBiff8 : xlBiff5 ); +#if SC_XCL_USEDECR maStrm.UseDecryption( true ); +#endif switch( nSubType ) { @@ -1961,6 +1986,21 @@ void ImportExcel::EndSheet( void ) if( pExcRoot->eHauptDateiTyp < Biff8 ) pExcRoot->pExtNameBuff->Reset(); + + // no or empty HEADER record + if( !bHasHeader ) + { + SvxSetItem aHeaderSetItem( (const SvxSetItem&) pStyleSheetItemSet->Get( ATTR_PAGE_HEADERSET ) ); + aHeaderSetItem.GetItemSet().Put( SfxBoolItem( ATTR_PAGE_ON, sal_False ) ); + pStyleSheetItemSet->Put( aHeaderSetItem ); + } + // no or empty FOOTER record + if( !bHasFooter ) + { + SvxSetItem aFooterSetItem( (const SvxSetItem&) pStyleSheetItemSet->Get( ATTR_PAGE_FOOTERSET ) ); + aFooterSetItem.GetItemSet().Put( SfxBoolItem( ATTR_PAGE_ON, sal_False ) ); + pStyleSheetItemSet->Put( aFooterSetItem ); + } } @@ -1975,7 +2015,7 @@ void ImportExcel::NeueTabelle( void ) ScStyleSheetPool* pStyleShPool = pD->GetStyleSheetPool(); SfxStyleSheetBase* pStyleSh = pStyleShPool->Find( aStyleName, SFX_STYLE_FAMILY_PAGE ); - pStyleSheetItemSet = pStyleSh ? &pStyleSh->GetItemSet() : + pExcRoot->pStyleSheetItemSet = pStyleSheetItemSet = pStyleSh ? &pStyleSh->GetItemSet() : &pStyleShPool->Make( aStyleName, SFX_STYLE_FAMILY_PAGE, SFXSTYLEBIT_USERDEF ).GetItemSet(); pExcRoot->bDefaultPage = TRUE; @@ -2160,7 +2200,6 @@ void ImportExcel::PostDocLoad( void ) } } - pExcRoot->pExtDocOpt->fColScale = pExcRoot->fColScale; pD->SetExtDocOptions( pExcRoot->pExtDocOpt ); pExcRoot->pExtDocOpt = NULL; @@ -2230,21 +2269,6 @@ void ImportExcel::PostDocLoad( void ) } } } - - // no or empty HEADER record - if( !bHasHeader ) - { - SvxSetItem aHeaderSetItem( (const SvxSetItem&) pStyleSheetItemSet->Get( ATTR_PAGE_HEADERSET ) ); - aHeaderSetItem.GetItemSet().Put( SfxBoolItem( ATTR_PAGE_ON, sal_False ) ); - pStyleSheetItemSet->Put( aHeaderSetItem ); - } - // no or empty FOOTER record - if( !bHasFooter ) - { - SvxSetItem aFooterSetItem( (const SvxSetItem&) pStyleSheetItemSet->Get( ATTR_PAGE_FOOTERSET ) ); - aFooterSetItem.GetItemSet().Put( SfxBoolItem( ATTR_PAGE_ON, sal_False ) ); - pStyleSheetItemSet->Put( aFooterSetItem ); - } } @@ -2277,22 +2301,6 @@ void ImportExcel::SetTextCell( const UINT16 nC, const UINT16 nR, String& r, cons } -UINT16 ImportExcel::CalcColWidth( const UINT16 n ) -{ - double f = ( double ) n; - - f *= pExcRoot->fColScale; - f *= 23.0; - f -= 90.0; - f *= 25.0 / 1328.0; - - if( f < 0.0 ) - f = 0.0; - - return ( UINT16 ) f; -} - - void ImportExcel::SetMarginItem( SfxItemSet& rItemSet, double fMarginInch, XclMarginType eType ) { sal_uInt16 nMarginTwips = XclTools::GetTwipsFromInch( fMarginInch ); diff --git a/sc/source/filter/excel/makefile.mk b/sc/source/filter/excel/makefile.mk index 7e591e41d9c8..b02c12c73543 100644 --- a/sc/source/filter/excel/makefile.mk +++ b/sc/source/filter/excel/makefile.mk @@ -2,9 +2,9 @@ # # $RCSfile: makefile.mk,v $ # -# $Revision: 1.16 $ +# $Revision: 1.17 $ # -# last change: $Author: dr $ $Date: 2002-11-21 12:16:01 $ +# last change: $Author: hr $ $Date: 2003-03-26 18:04:33 $ # # The Contents of this file are made available subject to the terms of # either of the following licenses @@ -84,6 +84,7 @@ SLOFILES = \ $(SLO)$/xltools.obj \ $(SLO)$/xlroot.obj \ $(SLO)$/xlstyle.obj \ + $(SLO)$/xlocx.obj \ $(SLO)$/xistream.obj \ $(SLO)$/xiroot.obj \ $(SLO)$/xihelper.obj \ diff --git a/sc/source/filter/excel/namebuff.cxx b/sc/source/filter/excel/namebuff.cxx index d1fc21931936..cef2aa3dbd0e 100644 --- a/sc/source/filter/excel/namebuff.cxx +++ b/sc/source/filter/excel/namebuff.cxx @@ -2,9 +2,9 @@ * * $RCSfile: namebuff.cxx,v $ * - * $Revision: 1.13 $ + * $Revision: 1.14 $ * - * last change: $Author: dr $ $Date: 2002-12-06 16:39:24 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:33 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -169,14 +169,14 @@ BOOL NameBuffer::Find( const sal_Char* pRefName, UINT16& rIndex ) -void RangeNameBuffer::Store( ByteString& r, const ScTokenArray* p, UINT16 n, const BOOL b ) +void RangeNameBuffer::Store( ByteString& r, const ScTokenArray* p, UINT16 n, const RangeType t) { String aTmpStr( r, *pExcRoot->pCharset ); - Store( aTmpStr, p, n, b ); + Store( aTmpStr, p, n, t ); } -void RangeNameBuffer::Store( String& rName, const ScTokenArray* pDef, UINT16 nAltSheet, const BOOL bPrintarea ) +void RangeNameBuffer::Store( String& rName, const ScTokenArray* pDef, UINT16 nAltSheet, const RangeType eNameType) { if( pDef ) { @@ -196,8 +196,12 @@ void RangeNameBuffer::Store( String& rName, const ScTokenArray* pDef, UINT16 nAl pData->GuessPosition(); pData->SetIndex( ( UINT16 ) Count() ); - if( bPrintarea ) - pData->AddType( RT_PRINTAREA ); + if( eNameType == RT_PRINTAREA ) + pData->AddType( eNameType ); + else if( eNameType == RT_CRITERIA ) + pData->SetType( eNameType ); + else if( eNameType == RT_NAME ) + pData->SetType( eNameType ); pExcRoot->pScRangeName->Insert( pData ); diff --git a/sc/source/filter/excel/read.cxx b/sc/source/filter/excel/read.cxx index eba5cc7ddafd..784047423ce5 100644 --- a/sc/source/filter/excel/read.cxx +++ b/sc/source/filter/excel/read.cxx @@ -2,9 +2,9 @@ * * $RCSfile: read.cxx,v $ * - * $Revision: 1.36 $ + * $Revision: 1.37 $ * - * last change: $Author: jmarmion $ $Date: 2002-12-10 14:07:24 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:34 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -148,9 +148,8 @@ FltError ImportExcel::Read( void ) DBG_ASSERT( &aIn != NULL, "-ImportExcel::Read(): Kein Stream - wie dass?!" ); - ::std::auto_ptr< ScfProgressBar > pProgress( new ScfProgressBar( ScGlobal::GetRscString( STR_LOAD_DOC ) ) ); - sal_uInt32 nStreamSeg = pProgress->AddSegment( aIn.GetStreamSize() ); - pProgress->ActivateSegment( nStreamSeg ); + ::std::auto_ptr< ScfSimpleProgressBar > pProgress( new ScfSimpleProgressBar( + aIn.GetStreamSize(), GetDocShell(), STR_LOAD_DOC ) ); while( eAkt != Z_Ende ) { @@ -1015,8 +1014,6 @@ FltError ImportExcel8::Read( void ) } #endif - CreateTmpCtrlStorage(); - UINT16 nOpcode; // aktueller Opcode UINT16 nBofLevel = 0; @@ -1042,9 +1039,8 @@ FltError ImportExcel8::Read( void ) DBG_ASSERT( &aIn != NULL, "-ImportExcel8::Read(): Kein Stream - wie dass?!" ); - ::std::auto_ptr< ScfProgressBar > pProgress( new ScfProgressBar( ScGlobal::GetRscString( STR_LOAD_DOC ) ) ); - sal_uInt32 nStreamSeg = pProgress->AddSegment( aIn.GetStreamSize() ); - pProgress->ActivateSegment( nStreamSeg ); + ::std::auto_ptr< ScfSimpleProgressBar > pProgress( new ScfSimpleProgressBar( + aIn.GetStreamSize(), GetDocShell(), STR_LOAD_DOC ) ); bObjSection = FALSE; @@ -1197,7 +1193,7 @@ FltError ImportExcel8::Read( void ) NeueTabelle(); if( pExcRoot->eDateiTyp == Biff8C ) { - if( bWithDrawLayer && aObjManager.IsCurrObjChart() ) + if( bWithDrawLayer && GetObjectManager().IsCurrObjChart() ) ReadChart8( *pProgress, FALSE ); // zunaechst Return vergessen else {// Stream-Teil mit Chart ueberlesen @@ -1256,7 +1252,7 @@ FltError ImportExcel8::Read( void ) case EXC_ID_HLINK: XclImpHyperlink::ReadHlink( maStrm ); break; case EXC_ID_LABELRANGES: XclImpLabelranges::ReadLabelranges( maStrm ); break; - case EXC_ID_DVAL: XclImpValidation::ReadDval( maStrm, *this ); break; + case EXC_ID_DVAL: XclImpValidation::ReadDval( maStrm ); break; case EXC_ID_DV: XclImpValidation::ReadDv( maStrm, *pFormConv ); break; case EXC_ID_QSI: GetWebQueryBuffer().ReadQsi( maStrm ); break; @@ -1299,7 +1295,7 @@ FltError ImportExcel8::Read( void ) { Bof5(); if( pExcRoot->eDateiTyp == Biff8C && bWithDrawLayer && - aObjManager.IsCurrObjChart() ) + GetObjectManager().IsCurrObjChart() ) ReadChart8( *pProgress, FALSE ); // zunaechst Return vergessen else { @@ -1359,7 +1355,7 @@ FltError ImportExcel8::Read( void ) Bof5(); NeueTabelle(); - aObjManager.InsertDummyObj(); + GetObjectManager().InsertDummyObj(); switch( pExcRoot->eDateiTyp ) { @@ -1372,7 +1368,7 @@ FltError ImportExcel8::Read( void ) aIn.StoreGlobalPosition(); break; case Biff8C: - aObjManager.SetNewCurrObjChart(); + GetObjectManager().SetNewCurrObjChart(); pExcRoot->bChartTab = TRUE; ReadChart8( *pProgress, TRUE ); pExcRoot->bChartTab = FALSE; @@ -1500,7 +1496,7 @@ FltError ImportExcel8::Read( void ) //___________________________________________________________________ -FltError ImportExcel8::ReadChart8( ScfProgressBar& rProgress, const BOOL bOwnTab ) +FltError ImportExcel8::ReadChart8( ScfSimpleProgressBar& rProgress, const BOOL bOwnTab ) { bFirstScl = TRUE; @@ -1508,7 +1504,7 @@ FltError ImportExcel8::ReadChart8( ScfProgressBar& rProgress, const BOOL bOwnTab BOOL bLoop; UINT16 nOpcode; // current opcode - XclImpChart* pChart = aObjManager.GetCurrChartData(); + XclImpChart* pChart = GetObjectManager().GetCurrChartData(); if( !pChart ) { bLoop = TRUE; @@ -1554,11 +1550,11 @@ FltError ImportExcel8::ReadChart8( ScfProgressBar& rProgress, const BOOL bOwnTab case 0x100D: pChart->ReadSeriestext( aIn ); break; // SERIESTEXT case 0x1014: pChart->ReadChartformat(); break; // CHARTFORMAT case 0x1015: pChart->ReadLegend( aIn ); break; // LEGEND - case 0x1017: pChart = aObjManager.ReplaceChartData( aIn, ctBar ); break; // BAR - case 0x1018: pChart = aObjManager.ReplaceChartData( aIn, ctLine ); break; // LINE - case 0x1019: pChart = aObjManager.ReplaceChartData( aIn, ctPie ); break; // PIE - case 0x101A: pChart = aObjManager.ReplaceChartData( aIn, ctArea ); break; // AREA - case 0x101B: pChart = aObjManager.ReplaceChartData( aIn, ctScatter );break; // SCATTER + case 0x1017: pChart = GetObjectManager().ReplaceChartData( aIn, ctBar ); break; // BAR + case 0x1018: pChart = GetObjectManager().ReplaceChartData( aIn, ctLine ); break; // LINE + case 0x1019: pChart = GetObjectManager().ReplaceChartData( aIn, ctPie ); break; // PIE + case 0x101A: pChart = GetObjectManager().ReplaceChartData( aIn, ctArea ); break; // AREA + case 0x101B: pChart = GetObjectManager().ReplaceChartData( aIn, ctScatter );break; // SCATTER case 0x101C: pChart->ReadChartline( aIn ); break; // CHARTLINE case 0x101D: pChart->ReadAxis( aIn ); break; // AXIS case 0x101E: pChart->ReadTick( aIn ); break; // TICK @@ -1576,8 +1572,8 @@ FltError ImportExcel8::ReadChart8( ScfProgressBar& rProgress, const BOOL bOwnTab case 0x103A: pChart->Read3D( aIn ); break; // 3D case 0x103C: pChart->ReadPicf( aIn ); break; // PICF case 0x103D: pChart->ReadDropbar( aIn ); break; // DROPBAR - case 0x103E: pChart = aObjManager.ReplaceChartData( aIn, ctNet ); break; // RADAR - case 0x103F: pChart = aObjManager.ReplaceChartData( aIn, ctSurface );break; // SURFACE + case 0x103E: pChart = GetObjectManager().ReplaceChartData( aIn, ctNet ); break; // RADAR + case 0x103F: pChart = GetObjectManager().ReplaceChartData( aIn, ctSurface );break; // SURFACE case 0x1041: pChart->ReadAxisparent( aIn ); break; // AXISPARENT case 0x1045: pChart->ReadSertocrt( aIn ); break; // SERTOCRT case 0x1046: pChart->ReadAxesused( aIn ); break; // AXESUSED diff --git a/sc/source/filter/excel/xecontent.cxx b/sc/source/filter/excel/xecontent.cxx index bc75b2b5869f..2ffbb9785ebc 100644 --- a/sc/source/filter/excel/xecontent.cxx +++ b/sc/source/filter/excel/xecontent.cxx @@ -2,9 +2,9 @@ * * $RCSfile: xecontent.cxx,v $ * - * $Revision: 1.2 $ + * $Revision: 1.3 $ * - * last change: $Author: dr $ $Date: 2002-12-06 16:39:24 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:34 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses diff --git a/sc/source/filter/excel/xehelper.cxx b/sc/source/filter/excel/xehelper.cxx index 272108bcc002..fb838eca6ba3 100644 --- a/sc/source/filter/excel/xehelper.cxx +++ b/sc/source/filter/excel/xehelper.cxx @@ -2,9 +2,9 @@ * * $RCSfile: xehelper.cxx,v $ * - * $Revision: 1.2 $ + * $Revision: 1.3 $ * - * last change: $Author: dr $ $Date: 2002-12-06 16:39:25 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:34 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -694,10 +694,29 @@ void XclExpHFConverter::AppendPortion( String& rHFString, const EditTextObject* aParaText.AppendAscii( "&D" ); else if( pFieldData->ISA( SvxTimeField ) || pFieldData->ISA( SvxExtTimeField ) ) aParaText.AppendAscii( "&T" ); - else if( pFieldData->ISA( SvxFileField ) || pFieldData->ISA( SvxExtFileField ) ) - aParaText.AppendAscii( "&F" ); else if( pFieldData->ISA( SvxTableField ) ) aParaText.AppendAscii( "&A" ); + else if( pFieldData->ISA( SvxFileField ) ) // title -> file name + aParaText.AppendAscii( "&F" ); + else if( pFieldData->ISA( SvxExtFileField ) ) + { + const SvxExtFileField* pFileField = static_cast< const SvxExtFileField* >( pFieldData ); + switch( pFileField->GetFormat() ) + { + case SVXFILEFORMAT_NAME_EXT: + case SVXFILEFORMAT_NAME: + aParaText.AppendAscii( "&F" ); + break; + case SVXFILEFORMAT_PATH: + aParaText.AppendAscii( "&Z" ); + break; + case SVXFILEFORMAT_FULLPATH: + aParaText.AppendAscii( "&Z&F" ); + break; + default: + DBG_ERRORFILE( "XclExpHFConverter::AppendPortion - unknown file field" ); + } + } } } else diff --git a/sc/source/filter/excel/xelink.cxx b/sc/source/filter/excel/xelink.cxx index 199f3b98da87..8391fb3e7fc5 100644 --- a/sc/source/filter/excel/xelink.cxx +++ b/sc/source/filter/excel/xelink.cxx @@ -2,9 +2,9 @@ * * $RCSfile: xelink.cxx,v $ * - * $Revision: 1.2 $ + * $Revision: 1.3 $ * - * last change: $Author: dr $ $Date: 2002-12-06 16:39:25 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:34 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses diff --git a/sc/source/filter/excel/xerecord.cxx b/sc/source/filter/excel/xerecord.cxx index 1212eda87304..fecc93d55911 100644 --- a/sc/source/filter/excel/xerecord.cxx +++ b/sc/source/filter/excel/xerecord.cxx @@ -2,9 +2,9 @@ * * $RCSfile: xerecord.cxx,v $ * - * $Revision: 1.1 $ + * $Revision: 1.2 $ * - * last change: $Author: dr $ $Date: 2002-11-21 12:12:49 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:35 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -82,6 +82,12 @@ void XclExpRecordBase::Save( XclExpStream& rStrm ) { } +void XclExpRecordBase::SaveRepeated( XclExpStream& rStrm, sal_uInt32 nCount ) +{ + for( sal_uInt32 nIndex = 0; nIndex < nCount; ++nIndex ) + Save( rStrm ); +} + // ---------------------------------------------------------------------------- @@ -95,6 +101,12 @@ XclExpRecord::~XclExpRecord() { } +void XclExpRecord::SetRecHeader( sal_uInt16 nRecId, sal_uInt32 nRecSize ) +{ + SetRecId( nRecId ); + SetRecSize( nRecSize ); +} + void XclExpRecord::WriteBody( XclExpStream& rStrm ) { } @@ -116,6 +128,26 @@ void XclExpBoolRecord::WriteBody( XclExpStream& rStrm ) } +// ---------------------------------------------------------------------------- + +XclExpDummyRecord::XclExpDummyRecord( sal_uInt16 nRecId, const void* pRecData, sal_uInt32 nRecSize ) : + XclExpRecord( nRecId ) +{ + SetData( pRecData, nRecSize ); +} + +void XclExpDummyRecord::SetData( const void* pRecData, sal_uInt32 nRecSize ) +{ + mpData = pRecData; + SetRecSize( pRecData ? nRecSize : 0 ); +} + +void XclExpDummyRecord::WriteBody( XclExpStream& rStrm ) +{ + rStrm.Write( mpData, GetRecSize() ); +} + + // ---------------------------------------------------------------------------- void XclExpRefRecord::Save( XclExpStream& rStrm ) diff --git a/sc/source/filter/excel/xeroot.cxx b/sc/source/filter/excel/xeroot.cxx index 3cf6f73e92fd..347c40884383 100644 --- a/sc/source/filter/excel/xeroot.cxx +++ b/sc/source/filter/excel/xeroot.cxx @@ -2,9 +2,9 @@ * * $RCSfile: xeroot.cxx,v $ * - * $Revision: 1.2 $ + * $Revision: 1.3 $ * - * last change: $Author: dr $ $Date: 2002-12-06 16:39:26 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:35 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -81,6 +81,7 @@ #include "xecontent.hxx" #endif +#include // Global data ================================================================ @@ -101,11 +102,12 @@ XclExpRoot::XclExpRoot( XclExpRootData& rExpRootData ) : XclRoot( rExpRootData ), mrExpData( rExpRootData ) { - mrExpData.mpPalette.reset( new XclExpPalette( *this ) ); - mrExpData.mpFontBuffer.reset( new XclExpFontBuffer( *this ) ); - mrExpData.mpNumFmtBuffer.reset( new XclExpNumFmtBuffer( *this ) ); + mrExpData.mpPalette.reset( new XclExpPalette( GetRoot() ) ); + mrExpData.mpFontBuffer.reset( new XclExpFontBuffer( GetRoot() ) ); + mrExpData.mpNumFmtBuffer.reset( new XclExpNumFmtBuffer( GetRoot() ) ); + mrExpData.mpXFBuffer.reset( new XclExpXFBuffer( GetRoot() ) ); mrExpData.mpTabIdBuffer.reset( new XclExpTabIdBuffer( GetDoc() ) ); - mrExpData.mpLinkManager.reset( new XclExpLinkManager( *this ) ); + mrExpData.mpLinkManager.reset( new XclExpLinkManager( GetRoot() ) ); } XclExpRoot::XclExpRoot( const XclExpRoot& rRoot ) : @@ -123,9 +125,9 @@ XclExpRoot& XclExpRoot::operator=( const XclExpRoot& rRoot ) void XclExpRoot::SetBiff( XclBiff eBiff ) { XclRoot::SetBiff( eBiff ); - GetPalette().SetBiff( eBiff ); - GetFontBuffer().SetBiff( eBiff ); - GetNumFmtBuffer().SetBiff( eBiff ); + GetPalette().OnChangeBiff(); + GetFontBuffer().OnChangeBiff(); + GetNumFmtBuffer().OnChangeBiff(); } XclExpSst& XclExpRoot::GetSst() const @@ -150,6 +152,11 @@ XclExpNumFmtBuffer& XclExpRoot::GetNumFmtBuffer() const return *mrExpData.mpNumFmtBuffer; } +XclExpXFBuffer& XclExpRoot::GetXFBuffer() const +{ + return *mrExpData.mpXFBuffer; +} + XclExpTabIdBuffer& XclExpRoot::GetTabIdBuffer() const { return *mrExpData.mpTabIdBuffer; diff --git a/sc/source/filter/excel/xestream.cxx b/sc/source/filter/excel/xestream.cxx index b7e69696a6d4..2b4e25019429 100644 --- a/sc/source/filter/excel/xestream.cxx +++ b/sc/source/filter/excel/xestream.cxx @@ -2,9 +2,9 @@ * * $RCSfile: xestream.cxx,v $ * - * $Revision: 1.2 $ + * $Revision: 1.3 $ * - * last change: $Author: dr $ $Date: 2002-12-06 16:39:26 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:35 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses diff --git a/sc/source/filter/excel/xestyle.cxx b/sc/source/filter/excel/xestyle.cxx index 57655f89d0c7..ad8104e74db3 100644 --- a/sc/source/filter/excel/xestyle.cxx +++ b/sc/source/filter/excel/xestyle.cxx @@ -2,9 +2,9 @@ * * $RCSfile: xestyle.cxx,v $ * - * $Revision: 1.3 $ + * $Revision: 1.4 $ * - * last change: $Author: dr $ $Date: 2002-12-12 16:42:32 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:35 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -76,24 +76,52 @@ #ifndef _SV_FONTCVT_HXX #include #endif -#ifndef _ZFORLIST_HXX -#include -#endif #ifndef _ZFORMAT_HXX #include #endif +#ifndef SC_ITEMS_HXX +#include "scitems.hxx" +#endif +#ifndef _SVX_ALGITEM_HXX +#include +#endif +#ifndef _SVX_BOXITEM_HXX +#include +#endif +#ifndef _SVX_ROTMODIT_HXX +#include +#endif +#ifndef _SVX_COLRITEM_HXX +#include +#endif +#ifndef _SVX_BRSHITEM_HXX +#include +#endif +#ifndef _SVX_FRMDIRITEM_HXX +#include +#endif + #ifndef SC_DOCUMENT_HXX #include "document.hxx" #endif +#ifndef SC_STLPOOL_HXX +#include "stlpool.hxx" +#endif #ifndef SC_SCPATATR_HXX #include "patattr.hxx" #endif +#ifndef SC_SCATTR_HXX +#include "attrib.hxx" +#endif #ifndef SC_XEHELPER_HXX #include "xehelper.hxx" #endif +#ifndef _RTL_TENCINFO_H +#include +#endif // PALETTE record - color information ========================================= @@ -124,7 +152,7 @@ inline XclExpStream& operator<<( XclExpStream& rStrm, const Color& rColor ) // additional classes for color reduction ------------------------------------- /** Maps a color list index to a palette index. - @descr Used to remap the CID data vector from list indexes to palette indexes. */ + @descr Used to remap the color ID data vector from list indexes to palette indexes. */ struct XclRemap { sal_uInt32 mnPalIndex; /// Index to palette. @@ -152,9 +180,9 @@ typedef ::std::vector< XclNearest > XclNearestVec; IMPL_FIXEDMEMPOOL_NEWDEL( XclExpPalette::XclListColor, 100, 100 ) -XclExpPalette::XclListColor::XclListColor( const Color& rColor, sal_uInt32 nCID ) : +XclExpPalette::XclListColor::XclListColor( const Color& rColor, sal_uInt32 nColorId ) : maColor( rColor ), - mnCID( nCID ), + mnColorId( nColorId ), mnWeight( 0 ) { } @@ -198,16 +226,18 @@ const sal_Int32 EXC_PAL_MAXDIST = 0x7FFFFFFF; XclExpPalette::XclExpPalette( const XclExpRoot& rRoot ) : XclExpRecord( EXC_ID_PALETTE ), + XclDefaultPalette( rRoot.GetBiff() ), + XclExpRoot( rRoot ), mnLastIx( 0 ) { - SetRecSize( GetColorCount() * 4 + 2 ); InsertColor( Color( COL_BLACK ), xlColorCellText ); - SetBiff( rRoot.GetBiff() ); + OnChangeBiff(); } -void XclExpPalette::SetBiff( XclBiff eBiff ) +void XclExpPalette::OnChangeBiff() { - XclDefaultPalette::SetBiff( eBiff ); + SetDefaultColors( GetBiff() ); + SetRecSize( GetColorCount() * 4 + 2 ); // initialize maPalette with default colors sal_uInt32 nCount = GetColorCount(); @@ -232,7 +262,7 @@ sal_uInt32 XclExpPalette::InsertColor( const Color& rColor, XclColorType eType, pEntry->UpdateWeighting( eType ); mnLastIx = nIndex; - return pEntry->GetCID(); + return pEntry->GetColorId(); } sal_uInt32 XclExpPalette::InsertIndex( sal_uInt16 nIndex ) @@ -242,19 +272,19 @@ sal_uInt32 XclExpPalette::InsertIndex( sal_uInt16 nIndex ) void XclExpPalette::ReduceColors() { -// --- build initial CID data vector (maCIDDataVec) --- +// --- build initial color ID data vector (maColorIdDataVec) --- sal_uInt32 nCount = maColorList.Count(); - maCIDDataVec.resize( nCount ); + maColorIdDataVec.resize( nCount ); for( sal_uInt32 nIx = 0; nIx < nCount; ++nIx ) { XclListColor* pListColor = maColorList.GetObject( nIx ); - maCIDDataVec[ pListColor->GetCID() ].Set( pListColor->GetColor(), nIx ); + maColorIdDataVec[ pListColor->GetColorId() ].Set( pListColor->GetColor(), nIx ); } // --- loop as long as current color count does not fit into palette of current BIFF --- - // CID data vector (maCIDDataVec) will map CIDs to color list entries (maColorList) + // Color ID data vector (maColorIdDataVec) will map color IDs to color list entries (maColorList) while( maColorList.Count() > GetColorCount() ) { // find a list color to remove @@ -292,19 +322,19 @@ void XclExpPalette::ReduceColors() aRemapVec[ nFound ].SetIndex( nNearest ); } - // remap CID data map (maCIDDataVec) from list indexes to palette indexes - for( XclCIDDataVec::iterator aIter = maCIDDataVec.begin(), aEnd = maCIDDataVec.end(); + // remap color ID data map (maColorIdDataVec) from list indexes to palette indexes + for( XclColorIdDataVec::iterator aIter = maColorIdDataVec.begin(), aEnd = maColorIdDataVec.end(); aIter != aEnd; ++aIter ) aIter->mnIndex = aRemapVec[ aIter->mnIndex ].mnPalIndex; } -sal_uInt16 XclExpPalette::GetColorIndex( sal_uInt32 nCID ) const +sal_uInt16 XclExpPalette::GetColorIndex( sal_uInt32 nColorId ) const { sal_uInt16 nRet = 0; - if( nCID >= EXC_PAL_INDEXBASE ) - nRet = static_cast< sal_uInt16 >( nCID & ~EXC_PAL_INDEXBASE ); - else if( nCID < maCIDDataVec.size() ) - nRet = GetXclIndex( maCIDDataVec[ nCID ].mnIndex ); + if( nColorId >= EXC_PAL_INDEXBASE ) + nRet = static_cast< sal_uInt16 >( nColorId & ~EXC_PAL_INDEXBASE ); + else if( nColorId < maColorIdDataVec.size() ) + nRet = GetXclIndex( maColorIdDataVec[ nColorId ].mnIndex ); return nRet; } @@ -319,22 +349,22 @@ sal_uInt16 XclExpPalette::GetColorIndex( const Color& rColor, sal_uInt16 nAutoDe } void XclExpPalette::GetMixedColors( - sal_uInt16& rnXclForeIx, sal_uInt16& rnXclBackIx, sal_uInt16& rnXclPattern, - sal_uInt32 nCIDForegr, sal_uInt32 nCIDBackgr ) const + sal_uInt16& rnXclForeIx, sal_uInt16& rnXclBackIx, sal_uInt8& rnXclPattern, + sal_uInt32 nForeColorId, sal_uInt32 nBackColorId ) const { - if( (nCIDForegr >= EXC_PAL_INDEXBASE) || (nCIDBackgr >= EXC_PAL_INDEXBASE) || (rnXclPattern != EXC_PATT_SOLID) ) + if( (nForeColorId >= EXC_PAL_INDEXBASE) || (nBackColorId >= EXC_PAL_INDEXBASE) || (rnXclPattern != EXC_PATT_SOLID) ) { - rnXclForeIx = GetColorIndex( nCIDForegr ); - rnXclBackIx = GetColorIndex( nCIDBackgr ); + rnXclForeIx = GetColorIndex( nForeColorId ); + rnXclBackIx = GetColorIndex( nBackColorId ); return; } rnXclForeIx = rnXclBackIx = 0; - if( nCIDForegr >= maCIDDataVec.size() ) + if( nForeColorId >= maColorIdDataVec.size() ) return; sal_uInt32 nIndex1, nIndex2; - Color aForeColor( GetOriginalColor( nCIDForegr ) ); + Color aForeColor( GetOriginalColor( nForeColorId ) ); sal_Int32 nFirstDist = GetNearPaletteColors( nIndex1, nIndex2, aForeColor ); if( (nIndex1 >= maPalette.size()) || (nIndex2 >= maPalette.size()) ) return; @@ -377,10 +407,10 @@ ColorData XclExpPalette::GetColorData( sal_uInt16 nXclIndex, ColorData nDefault return GetDefColorData( nXclIndex, nDefault ); } -const Color& XclExpPalette::GetOriginalColor( sal_uInt32 nCID ) const +const Color& XclExpPalette::GetOriginalColor( sal_uInt32 nColorId ) const { - if( nCID < maCIDDataVec.size() ) - return maCIDDataVec[ nCID ].maColor; + if( nColorId < maColorIdDataVec.size() ) + return maColorIdDataVec[ nColorId ].maColor; return maPalette[ 0 ].maColor; } @@ -446,9 +476,9 @@ void XclExpPalette::MergeListColors( sal_uInt32 nKeep, sal_uInt32 nRemove ) pKeepEntry->Merge( *pRemoveEntry ); maColorList.Delete( nRemove ); - // recalculate CID data map (maps CIDs to color list indexes) - XclCIDDataVec::iterator aEnd = maCIDDataVec.end(); - for( XclCIDDataVec::iterator aIter = maCIDDataVec.begin(); aIter != aEnd; ++aIter ) + // recalculate color ID data map (maps color IDs to color list indexes) + XclColorIdDataVec::iterator aEnd = maColorIdDataVec.end(); + for( XclColorIdDataVec::iterator aIter = maColorIdDataVec.begin(); aIter != aEnd; ++aIter ) { if( aIter->mnIndex == nRemove ) aIter->mnIndex = nKeep; // not "else if", aIter->mnIndex may become greater than nRemove in previous op. @@ -582,7 +612,7 @@ inline XclExpStream& operator<<( XclExpStream& rStrm, XclEscapement eEscapem ) XclExpFont::XclExpFont( const XclExpRoot& rRoot ) : XclExpRecord( EXC_ID_FONT, 14 ), XclExpRoot( rRoot ), - mnCID( rRoot.GetPalette().InsertIndex( EXC_FONT_AUTOCOLOR ) ), + mnColorId( rRoot.GetPalette().InsertIndex( EXC_FONT_AUTOCOLOR ) ), mnHash( 0 ), mbHasColor( false ) { @@ -602,12 +632,12 @@ void XclExpFont::SetName( const String& rName ) void XclExpFont::SetColor( const Color& rColor ) { - SetCID( GetPalette().InsertColor( rColor, xlColorCellText, EXC_FONT_AUTOCOLOR ) ); + SetColorId( GetPalette().InsertColor( rColor, xlColorCellText, EXC_FONT_AUTOCOLOR ) ); } -void XclExpFont::SetCID( sal_uInt32 nCID ) +void XclExpFont::SetColorId( sal_uInt32 nColorId ) { - mnCID = nCID; + mnColorId = nColorId; mbHasColor = true; } @@ -627,8 +657,8 @@ void XclExpFont::SetFont( const Font& rFont ) SetUnderline( rFont.GetUnderline() ); SetItalic( rFont.GetItalic() != ITALIC_NONE ); SetStrikeout( rFont.GetStrikeout() != STRIKEOUT_NONE ); - SetOutline( rFont.IsOutline() == TRUE ); - SetShadow( rFont.IsShadow() == TRUE ); + SetOutline( !!rFont.IsOutline() ); // BOOL->bool + SetShadow( !!rFont.IsShadow() ); // BOOL->bool CalcHash(); } @@ -651,7 +681,7 @@ bool XclExpFont::operator==( const XclExpFont& rCmp ) const { return (mnHash == rCmp.mnHash) && - (!mbHasColor || !rCmp.mbHasColor || (mnCID == rCmp.mnCID)) && + (!mbHasColor || !rCmp.mbHasColor || (mnColorId == rCmp.mnColorId)) && (maData.mnHeight == rCmp.maData.mnHeight) && (maData.mnWeight == rCmp.maData.mnWeight) && (maData.meUnderline == rCmp.maData.meUnderline) && @@ -683,21 +713,7 @@ sal_uInt8 XclExpFont::GetXclFamily( FontFamily eFamily ) sal_uInt8 XclExpFont::GetXclCharSet( rtl_TextEncoding eCharSet ) { - switch( eCharSet ) - { - case RTL_TEXTENCODING_DONTKNOW: return EXC_FONTCSET_DONTKNOW; - case RTL_TEXTENCODING_MS_1252: return EXC_FONTCSET_MS_1252; - case RTL_TEXTENCODING_APPLE_ROMAN: return EXC_FONTCSET_APPLE_ROMAN; - case RTL_TEXTENCODING_IBM_437: return EXC_FONTCSET_IBM_437; - case RTL_TEXTENCODING_IBM_850: return EXC_FONTCSET_IBM_850; - case RTL_TEXTENCODING_IBM_860: return EXC_FONTCSET_IBM_860; - case RTL_TEXTENCODING_IBM_861: return EXC_FONTCSET_IBM_861; - case RTL_TEXTENCODING_IBM_863: return EXC_FONTCSET_IBM_863; - case RTL_TEXTENCODING_IBM_865: return EXC_FONTCSET_IBM_865; - case (rtl_TextEncoding) 9: return EXC_FONTCSET_SYSTEM; - case RTL_TEXTENCODING_SYMBOL: return EXC_FONTCSET_SYMBOL; - } - return EXC_FONTCSET_DONTKNOW; + return rtl_getBestWindowsCharsetFromTextEncoding(eCharSet); } sal_uInt16 XclExpFont::GetXclWeight( FontWeight eWeight ) @@ -757,7 +773,7 @@ void XclExpFont::WriteBody( XclExpStream& rStrm ) rStrm << maData.mnHeight << nAttr - << GetPalette().GetColorIndex( mnCID ) + << GetPalette().GetColorIndex( mnColorId ) << maData.mnWeight << maData.meEscapem << maData.meUnderline @@ -772,20 +788,23 @@ void XclExpFont::WriteBody( XclExpStream& rStrm ) XclExpFontBuffer::XclExpFontBuffer( const XclExpRoot& rRoot ) : XclExpRoot( rRoot ), - mnMaxCount( 0 ) + mnXclMaxCount( 0 ) { - SetBiff( GetBiff() ); + OnChangeBiff(); + + // currently always using Arial/10 + SetCharWidth( 110 ); } -void XclExpFontBuffer::SetBiff( XclBiff eBiff ) +void XclExpFontBuffer::OnChangeBiff() { - DBG_ASSERT( maFontList.Empty(), "XclExpFontBuffer::SetBiff - call is too late" ); - switch( eBiff ) + DBG_ASSERT( maFontList.Empty(), "XclExpFontBuffer::OnChangeBiff - call is too late" ); + switch( GetBiff() ) { - case xlBiff4: mnMaxCount = EXC_FONT_MAXCOUNT4; break; + case xlBiff4: mnXclMaxCount = EXC_FONT_MAXCOUNT4; break; case xlBiff5: - case xlBiff7: mnMaxCount = EXC_FONT_MAXCOUNT5; break; - case xlBiff8: mnMaxCount = EXC_FONT_MAXCOUNT8; break; + case xlBiff7: mnXclMaxCount = EXC_FONT_MAXCOUNT5; break; + case xlBiff8: mnXclMaxCount = EXC_FONT_MAXCOUNT8; break; default: DBG_ERROR_BIFF(); } } @@ -793,7 +812,7 @@ void XclExpFontBuffer::SetBiff( XclBiff eBiff ) sal_uInt16 XclExpFontBuffer::GetIndex( const XclExpFont& rFont, sal_uInt16 nDefault ) { sal_uInt32 nIndex = Find( rFont ); - return (nIndex < mnMaxCount) ? GetXclIndex( nIndex ) : nDefault; + return (nIndex < mnXclMaxCount) ? GetXclIndex( nIndex ) : nDefault; } sal_uInt16 XclExpFontBuffer::Insert( XclExpFont*& rpFont ) @@ -810,11 +829,11 @@ sal_uInt16 XclExpFontBuffer::Insert( XclExpFont*& rpFont ) XclExpFont* pOldFont = maFontList.GetObject( nIndex ); // old font does not have a color -> take color from new font if( !pOldFont->HasColor() ) - pOldFont->SetCID( rpFont->GetCID() ); + pOldFont->SetColorId( rpFont->GetColorId() ); delete rpFont; rpFont = pOldFont; } - else if( nCount < mnMaxCount ) + else if( nCount < mnXclMaxCount ) { // --- font not found, possible to insert --- maFontList.Append( rpFont ); @@ -833,7 +852,7 @@ sal_uInt16 XclExpFontBuffer::Insert( XclExpFont*& rpFont ) sal_uInt16 XclExpFontBuffer::Insert( const Font& rFont ) { - XclExpFont* pNewFont = new XclExpFont( *this ); + XclExpFont* pNewFont = new XclExpFont( GetRoot() ); pNewFont->SetFont( rFont ); return Insert( pNewFont ); } @@ -854,7 +873,7 @@ void XclExpFontBuffer::Save( XclExpStream& rStrm ) void XclExpFontBuffer::InitDefaultFonts() { - XclExpFont aFont( *this ); + XclExpFont aFont( GetRoot() ); aFont.SetName( String( RTL_CONSTASCII_USTRINGPARAM( "Arial" ) ) ); aFont.SetFamily( FAMILY_DONTKNOW ); aFont.SetCharSet( RTL_TEXTENCODING_DONTKNOW ); @@ -889,7 +908,7 @@ void XclExpFontBuffer::InitDefaultFonts() } } -sal_uInt16 XclExpFontBuffer::GetXclIndex( sal_uInt32 nIndex ) +sal_uInt16 XclExpFontBuffer::GetXclIndex( sal_uInt32 nIndex ) const { if( nIndex > 3 ) ++nIndex; @@ -948,9 +967,10 @@ XclExpNumFmtBuffer::XclExpNumFmtBuffer( const XclExpRoot& rRoot ) : cannot convert from 'class String *' to 'class String (*)[54]' The effective result here is class String (*)[54*1] */ mpKeywordTable( new NfKeywordTable[ 1 ] ), - mpFormatter( new SvNumberFormatter( rRoot.GetDoc().GetServiceManager(), LANGUAGE_ENGLISH_US ) ) + mpFormatter( new SvNumberFormatter( rRoot.GetDoc().GetServiceManager(), LANGUAGE_ENGLISH_US ) ), + mnStdFmt( GetFormatter().GetStandardFormat( GetDefLanguage() ) ) { - SetBiff( GetBiff() ); + OnChangeBiff(); mpFormatter->FillKeywordTable( *mpKeywordTable, LANGUAGE_ENGLISH_US ); // remap codes unknown to Excel @@ -965,10 +985,10 @@ XclExpNumFmtBuffer::~XclExpNumFmtBuffer() delete[] mpKeywordTable; } -void XclExpNumFmtBuffer::SetBiff( XclBiff eBiff ) +void XclExpNumFmtBuffer::OnChangeBiff() { - DBG_ASSERT( maFormatMap.empty(), "XclExpNumFmtBuffer::SetBiff - call is too late" ); - switch( eBiff ) + DBG_ASSERT( maFormatMap.empty(), "XclExpNumFmtBuffer::OnChangeBiff - call is too late" ); + switch( GetBiff() ) { case xlBiff5: case xlBiff7: mnXclOffset = EXC_FORMAT_OFFSET5; break; @@ -977,10 +997,10 @@ void XclExpNumFmtBuffer::SetBiff( XclBiff eBiff ) } } -sal_uInt16 XclExpNumFmtBuffer::Insert( sal_uInt32 nFormatIx ) +sal_uInt16 XclExpNumFmtBuffer::Insert( sal_uInt32 nScFormatIx ) { XclExpNumFmtVec::const_iterator aIter = - ::std::find_if( maFormatMap.begin(), maFormatMap.end(), XclExpNumFmtPred( nFormatIx ) ); + ::std::find_if( maFormatMap.begin(), maFormatMap.end(), XclExpNumFmtPred( nScFormatIx ) ); if( aIter != maFormatMap.end() ) return aIter->mnXclIx; @@ -988,7 +1008,7 @@ sal_uInt16 XclExpNumFmtBuffer::Insert( sal_uInt32 nFormatIx ) if( nSize < 0xFFFFUL - mnXclOffset ) { sal_uInt16 nXclIx = static_cast< sal_uInt16 >( nSize + mnXclOffset ); - maFormatMap.push_back( XclExpNumFmt( nFormatIx, nXclIx ) ); + maFormatMap.push_back( XclExpNumFmt( nScFormatIx, nXclIx ) ); return nXclIx; } @@ -1062,7 +1082,7 @@ void XclExpNumFmtBuffer::WriteFormatRecord( XclExpStream& rStrm, const XclExpNum void XclExpNumFmtBuffer::WriteDefaultFormats( XclExpStream& rStrm ) { - const XclExpDefaultFormat* pEnd = pDefaultFormats + STATIC_TABLE_SIZE( pDefaultFormats ); + const XclExpDefaultFormat* pEnd = STATIC_TABLE_END( pDefaultFormats ); for( const XclExpDefaultFormat* pCurr = pDefaultFormats; pCurr != pEnd; ++pCurr ) WriteFormatRecord( rStrm, pCurr->mnIndex, String( pCurr->mpFormat, RTL_TEXTENCODING_UTF8 ) ); } @@ -1070,5 +1090,630 @@ void XclExpNumFmtBuffer::WriteDefaultFormats( XclExpStream& rStrm ) // XF, STYLE record - Cell formatting ========================================= +XclExpXFBorder::XclExpXFBorder() : + mnLeftColorId( 0 ), + mnRightColorId( 0 ), + mnTopColorId( 0 ), + mnBottomColorId( 0 ), + mnLeftLine( EXC_LINE_NONE ), + mnRightLine( EXC_LINE_NONE ), + mnTopLine( EXC_LINE_NONE ), + mnBottomLine( EXC_LINE_NONE ) +{ +} + +#if 0 +void lcl_GetBorder2( sal_uInt8& rnFlags, const XclExpXFBorder& rBorder ) +{ + ::set_flag( rnFlags, EXC_XF2_LEFTLINE, rBorder.mnLeftLine != EXC_LINE_NONE ); + ::set_flag( rnFlags, EXC_XF2_RIGHTLINE, rBorder.mnRightLine != EXC_LINE_NONE ); + ::set_flag( rnFlags, EXC_XF2_TOPLINE, rBorder.mnTopLine != EXC_LINE_NONE ); + ::set_flag( rnFlags, EXC_XF2_BOTTOMLINE, rBorder.mnBottomLine != EXC_LINE_NONE ); +} + +void lcl_GetBorder3( sal_uInt32& rnFlags, const XclExpXFBorder& rBorder, const XclExpPalette& rPalette ) +{ + ::insert_value( rnFlags, rBorder.mnTopLine, 0, 3 ); + ::insert_value( rnFlags, rBorder.mnLeftLine, 8, 3 ); + ::insert_value( rnFlags, rBorder.mnBottomLine, 16, 3 ); + ::insert_value( rnFlags, rBorder.mnRightLine, 24, 3 ); + ::insert_value( rnFlags, rPalette.GetColorIndex( rBorder.mnTopColorId ), 3, 5 ); + ::insert_value( rnFlags, rPalette.GetColorIndex( rBorder.mnLeftColorId ), 11, 5 ); + ::insert_value( rnFlags, rPalette.GetColorIndex( rBorder.mnBottomColorId ), 19, 5 ); + ::insert_value( rnFlags, rPalette.GetColorIndex( rBorder.mnRightColorId ), 27, 5 ); +} +#endif + +void lcl_GetBorder5( + sal_uInt32& rnBorder, sal_uInt32& rnArea, + const XclExpXFBorder& rBorder, const XclExpPalette& rPalette ) +{ + ::insert_value( rnBorder, rBorder.mnTopLine, 0, 3 ); + ::insert_value( rnBorder, rBorder.mnLeftLine, 3, 3 ); + ::insert_value( rnArea, rBorder.mnBottomLine, 22, 3 ); + ::insert_value( rnBorder, rBorder.mnRightLine, 6, 3 ); + ::insert_value( rnBorder, rPalette.GetColorIndex( rBorder.mnTopColorId ), 9, 7 ); + ::insert_value( rnBorder, rPalette.GetColorIndex( rBorder.mnLeftColorId ), 16, 7 ); + ::insert_value( rnArea, rPalette.GetColorIndex( rBorder.mnBottomColorId ), 25, 7 ); + ::insert_value( rnBorder, rPalette.GetColorIndex( rBorder.mnRightColorId ), 23, 7 ); +} + +void lcl_GetBorder8( + sal_uInt32& rnBorder1, sal_uInt32& rnBorder2, + const XclExpXFBorder& rBorder, const XclExpPalette& rPalette ) +{ + ::insert_value( rnBorder1, rBorder.mnLeftLine, 0, 4 ); + ::insert_value( rnBorder1, rBorder.mnRightLine, 4, 4 ); + ::insert_value( rnBorder1, rBorder.mnTopLine, 8, 4 ); + ::insert_value( rnBorder1, rBorder.mnBottomLine, 12, 4 ); + ::insert_value( rnBorder1, rPalette.GetColorIndex( rBorder.mnLeftColorId ), 16, 7 ); + ::insert_value( rnBorder1, rPalette.GetColorIndex( rBorder.mnRightColorId ), 23, 7 ); + ::insert_value( rnBorder2, rPalette.GetColorIndex( rBorder.mnTopColorId ), 0, 7 ); + ::insert_value( rnBorder2, rPalette.GetColorIndex( rBorder.mnBottomColorId ), 7, 7 ); +} + + +// ---------------------------------------------------------------------------- + +XclExpXFArea::XclExpXFArea() : + mnForeColorId( 0 ), + mnBackColorId( 0 ), + mnPattern( EXC_PATT_NONE ) +{ +} + +#if 0 +void lcl_GetArea2( sal_uInt8& rnFlags, const XclExpXFArea& rArea ) +{ + ::set_flag( rnFlags, EXC_XF2_BACKGROUND, rArea.mnPattern != EXC_PATT_NONE ); +} + +void lcl_GetArea3( sal_uInt16& rnArea, const XclExpXFArea& rArea, const XclExpPalette& rPalette ) +{ + ::insert_value( rnArea, rArea.mnPattern, 0, 6 ); + ::insert_value( rnArea, rPalette.GetColorIndex( rArea.mnForeColorId ), 6, 5 ); + ::insert_value( rnArea, rPalette.GetColorIndex( rArea.mnBackColorId ), 11, 5 ); +} +#endif + +void lcl_GetArea5( sal_uInt32& rnArea, const XclExpXFArea& rArea, const XclExpPalette& rPalette ) +{ + sal_uInt16 nXclForeIx, nXclBackIx; + sal_uInt8 nXclPattern = rArea.mnPattern; + rPalette.GetMixedColors( nXclForeIx, nXclBackIx, nXclPattern, rArea.mnForeColorId, rArea.mnBackColorId ); + ::insert_value( rnArea, nXclPattern, 16, 6 ); + ::insert_value( rnArea, nXclForeIx, 0, 7 ); + ::insert_value( rnArea, nXclBackIx, 7, 7 ); +} + +void lcl_GetArea8( sal_uInt32& rnBorder2, sal_uInt16& rnArea, const XclExpXFArea& rArea, const XclExpPalette& rPalette ) +{ + sal_uInt16 nXclForeIx, nXclBackIx; + sal_uInt8 nXclPattern = rArea.mnPattern; + rPalette.GetMixedColors( nXclForeIx, nXclBackIx, nXclPattern, rArea.mnForeColorId, rArea.mnBackColorId ); + ::insert_value( rnBorder2, nXclPattern, 26, 6 ); + ::insert_value( rnArea, nXclForeIx, 0, 7 ); + ::insert_value( rnArea, nXclBackIx, 7, 7 ); +} + + +// ---------------------------------------------------------------------------- + +XclExpXF::XclExpXF( + const XclExpRoot& rRoot, const ScPatternAttr* pPattern, + sal_uInt32 nForcedNumFmt, bool bForceWrapped ) : + mbCellXF( true ) +{ + Init( rRoot, pPattern, nForcedNumFmt, bForceWrapped ); +} + +XclExpXF::XclExpXF( const XclExpRoot& rRoot, SfxStyleSheetBase& rStyleSheet ) : + mbCellXF( false ) +{ + // create an own ScPatternAttr and let Init() do all the work + mpOwnPattern.reset( new ScPatternAttr( rStyleSheet.GetItemSet().Clone() ) ); + Init( rRoot, mpOwnPattern.get() ); +} + +bool XclExpXF::Equals( const ScPatternAttr* pPattern, sal_uInt32 nForcedNumFmt, bool bForceWrapped ) const +{ + return mbCellXF && (mpPattern == pPattern) && + ((nForcedNumFmt == NUMBERFORMAT_ENTRY_NOT_FOUND) || (mnNumFmt == nForcedNumFmt)) && + (!bForceWrapped || mbWrapped); +} + +void XclExpXF::GetBorderLine( + sal_uInt8& rnXclLine, sal_uInt32& rnColorId, + XclExpPalette& rPalette, const SvxBorderLine* pLine ) +{ + if( pLine ) + { + sal_uInt16 nOuterWidth = pLine->GetOutWidth(); + sal_uInt16 nDistance = pLine->GetDistance(); + if( nDistance > 0 ) + rnXclLine = EXC_LINE_DOUBLE; + else if( nOuterWidth > DEF_LINE_WIDTH_2 ) + rnXclLine = EXC_LINE_THICK; + else if( nOuterWidth > DEF_LINE_WIDTH_1 ) + rnXclLine = EXC_LINE_MEDIUM; + else if( nOuterWidth > DEF_LINE_WIDTH_0 ) + rnXclLine = EXC_LINE_THIN; + else if( nOuterWidth > 0 ) + rnXclLine = EXC_LINE_HAIR; + else + rnXclLine = EXC_LINE_NONE; + rnColorId = rPalette.InsertColor( pLine->GetColor(), xlColorCellBorder ); + } + else + { + rnXclLine = EXC_LINE_NONE; + rnColorId = rPalette.InsertIndex( 0 ); + } +} + +void XclExpXF::GetBorder( XclExpXFBorder& rBorder, XclExpPalette& rPalette, const ScPatternAttr& rPattern ) +{ + const SvxBoxItem& rBoxItem = static_cast< const SvxBoxItem& >( rPattern.GetItem( ATTR_BORDER ) ); + GetBorderLine( rBorder.mnLeftLine, rBorder.mnLeftColorId, rPalette, rBoxItem.GetLeft() ); + GetBorderLine( rBorder.mnRightLine, rBorder.mnRightColorId, rPalette, rBoxItem.GetRight() ); + GetBorderLine( rBorder.mnTopLine, rBorder.mnTopColorId, rPalette, rBoxItem.GetTop() ); + GetBorderLine( rBorder.mnBottomLine, rBorder.mnBottomColorId, rPalette, rBoxItem.GetBottom() ); +} + +void XclExpXF::GetArea( XclExpXFArea& rArea, XclExpPalette& rPalette, const ScPatternAttr& rPattern ) +{ + const SvxBrushItem& rBrushItem = static_cast< const SvxBrushItem& >( rPattern.GetItem( ATTR_BACKGROUND ) ); + rArea.mnPattern = rBrushItem.GetColor().GetTransparency() ? EXC_PATT_NONE : EXC_PATT_SOLID; + rArea.mnForeColorId = rPalette.InsertColor( rBrushItem.GetColor(), xlColorCellArea ); + rArea.mnBackColorId = rPalette.InsertColor( Color( COL_BLACK ), xlColorCellArea ); +} + +void XclExpXF::Init( + const XclExpRoot& rRoot, const ScPatternAttr* pPattern, + sal_uInt32 nForcedNumFmt, bool bForceWrapped ) +{ + XclExpPalette& rPalette = rRoot.GetPalette(); + XclExpNumFmtBuffer& rNumFmtBuffer = rRoot.GetNumFmtBuffer(); + +// *** reset members *** + + // mbCellXF set in constructors + SetRecHeader( EXC_ID_XF, (rRoot.GetBiff() == xlBiff8) ? 20 : 16 ); + mpPattern = pPattern; + meHorAlign = xlHAlignGeneral; + meVerAlign = xlVAlignBottom; + meOrient = xlTextOrientNoRot; + meTextDir = xlTextDirContext; + mnParent = mbCellXF ? EXC_XF_DEFAULTSTYLE : EXC_XF_STYLEPARENT; + mnFont = mnNumFmt = 0; + if( nForcedNumFmt != NUMBERFORMAT_ENTRY_NOT_FOUND ) + mnNumFmt = rNumFmtBuffer.Insert( nForcedNumFmt ); + mnIndent = mnRotation = 0; + mbLocked = true; // default in Calc and Excel + mbHidden = false; + mbWrapped = bForceWrapped; + mbProtUsed = mbFontUsed = mbFmtUsed = mbAlignUsed = mbBorderUsed = mbAreaUsed = false; + +// *** formatting attributes *** + + if( !mpPattern ) + { + maArea.mnForeColorId = rPalette.InsertIndex( 64 ); + maArea.mnBackColorId = rPalette.InsertIndex( 65 ); + if( nForcedNumFmt == NUMBERFORMAT_ENTRY_NOT_FOUND ) + mnNumFmt = rNumFmtBuffer.Insert( rNumFmtBuffer.GetStandardFormat() ); + return; + } + +// Creates a variable 'name' of type "const 'type' &" and assigns item with 'which' ID from mpPattern. +#define GETITEM( type, name, which ) \ + const type & name = static_cast< const type & >( mpPattern->GetItem( which ) ) + + // cell protection + GETITEM( ScProtectionAttr, rProtItem, ATTR_PROTECTION ); + mbLocked = !!rProtItem.GetProtection(); // BOOL->bool + mbHidden = rProtItem.GetHideFormula() || rProtItem.GetHideCell(); + + // font + mnFont = rRoot.GetFontBuffer().Insert( *mpPattern ); + + // number format + if( nForcedNumFmt == NUMBERFORMAT_ENTRY_NOT_FOUND ) // don't overwrite forced format + { + GETITEM( SfxUInt32Item, rNumFmtItem, ATTR_VALUE_FORMAT ); + mnNumFmt = rNumFmtBuffer.Insert( rNumFmtItem.GetValue() ); + } + + // horizontal alignment + GETITEM( SvxHorJustifyItem, rHorJustItem, ATTR_HOR_JUSTIFY ); + switch( static_cast< SvxCellHorJustify >( rHorJustItem.GetValue() ) ) + { + case SVX_HOR_JUSTIFY_STANDARD: meHorAlign = xlHAlignGeneral; break; + case SVX_HOR_JUSTIFY_LEFT: meHorAlign = xlHAlignLeft; break; + case SVX_HOR_JUSTIFY_CENTER: meHorAlign = xlHAlignCenter; break; + case SVX_HOR_JUSTIFY_RIGHT: meHorAlign = xlHAlignRight; break; + case SVX_HOR_JUSTIFY_BLOCK: meHorAlign = xlHAlignJustify; break; + case SVX_HOR_JUSTIFY_REPEAT: meHorAlign = xlHAlignFill; break; + default: DBG_ERROR( "XclExpXF::Init - unknown horizontal adjustment" ); + } + + // text wrap + if( !mbWrapped ) // only, if not yet forced by caller + { + GETITEM( SfxBoolItem, rWrapItem, ATTR_LINEBREAK ); + mbWrapped = !!rWrapItem.GetValue(); // BOOL->bool + } + + // vertical alignment + GETITEM( SvxVerJustifyItem, rVerJustItem, ATTR_VER_JUSTIFY ); + switch( static_cast< SvxCellVerJustify >( rVerJustItem.GetValue() ) ) + { + case SVX_VER_JUSTIFY_STANDARD: meVerAlign = xlVAlignBottom; break; + case SVX_VER_JUSTIFY_TOP: meVerAlign = xlVAlignTop; break; + case SVX_VER_JUSTIFY_CENTER: meVerAlign = xlVAlignCenter; break; + case SVX_VER_JUSTIFY_BOTTOM: meVerAlign = xlVAlignBottom; break; + default: DBG_ERROR( "XclExpXF::Init - unknown vertical adjustment" ); + } + + // text indent + GETITEM( SfxUInt16Item, rIndentItem, ATTR_INDENT ); + sal_Int32 nTmpIndent = rIndentItem.GetValue(); // SfxUInt16Item returns INT16, weird... + (nTmpIndent += 100) /= 200; + mnIndent = static_cast< sal_uInt8 >( ::std::max( ::std::min( nTmpIndent, 0x0FL ), 0L ) ); + + // orientation and rotation + GETITEM( SvxOrientationItem, rOrientItem, ATTR_ORIENTATION ); + switch( static_cast< SvxCellOrientation >( rOrientItem.GetValue() ) ) + { + case SVX_ORIENTATION_STANDARD: meOrient = xlTextOrientNoRot; break; + case SVX_ORIENTATION_TOPBOTTOM: meOrient = xlTextOrient90cw; break; + case SVX_ORIENTATION_BOTTOMTOP: meOrient = xlTextOrient90ccw; break; + case SVX_ORIENTATION_STACKED: meOrient = xlTextOrientTopBottom; break; + default: DBG_ERROR( "XclExpXF::Init - unknown text orientation" ); + } + switch( meOrient ) + { + case xlTextOrientTopBottom: mnRotation = EXC_XF8_STACKED; break; + // #i4378# old calc doc's without real rotation + case xlTextOrient90ccw: mnRotation = 90; break; + case xlTextOrient90cw: mnRotation = 180; break; + default: + { + GETITEM( SfxInt32Item, rRotateItem, ATTR_ROTATE_VALUE ); + mnRotation = XclTools::GetXclRotation( rRotateItem.GetValue() ); + } + } + + // cell border + GetBorder( maBorder, rPalette, *mpPattern ); + + // cell background area + GetArea( maArea, rPalette, *mpPattern ); + + // CTL text direction + GETITEM( SvxFrameDirectionItem, rFrameDirItem, ATTR_WRITINGDIR ); + switch( static_cast< SvxFrameDirection >( rFrameDirItem.GetValue() ) ) + { + case FRMDIR_ENVIRONMENT: meTextDir = xlTextDirContext; break; + case FRMDIR_HORI_LEFT_TOP: meTextDir = xlTextDirLTR; break; + case FRMDIR_HORI_RIGHT_TOP: meTextDir = xlTextDirRTL; break; + default: DBG_ERRORFILE( "XclExpXF::Init - unknown CTL text direction" ); + } + +#undef GETITEM + +// *** used/unused flags *** + + // all font items + static const sal_uInt16 pnFontWhichIds[] = + { + ATTR_FONT_HEIGHT, + ATTR_FONT_WEIGHT, + ATTR_FONT_POSTURE, + ATTR_FONT_UNDERLINE, + ATTR_FONT_CROSSEDOUT, + ATTR_FONT_CONTOUR, + ATTR_FONT_SHADOWED, + ATTR_FONT_COLOR, + ATTR_FONT_LANGUAGE, + 0 + }; + + const SfxItemSet& rItemSet = mpPattern->GetItemSet(); + +// Expands to true if rItemSet really contains the item with 'which' ID. +#define CHECKITEM( which ) (rItemSet.GetItemState( which, FALSE ) == SFX_ITEM_SET) + + switch( rRoot.GetBiff() ) + { + // all 'case's -> run through + case xlBiff8: // new in BIFF8/BIFF8X + mbAlignUsed |= CHECKITEM( ATTR_ROTATE_VALUE ) || + CHECKITEM( ATTR_INDENT ) || CHECKITEM( ATTR_WRITINGDIR ); + + case xlBiff7: // new in BIFF7 - nothing + case xlBiff5: // new in BIFF5 - nothing + case xlBiff4: // new in BIFF4 + mbAlignUsed |= CHECKITEM( ATTR_VER_JUSTIFY ) || CHECKITEM( ATTR_ORIENTATION ); + + case xlBiff3: // attributes in all BIFF versions (BIFF2 does not use the flags at all) + mbProtUsed |= CHECKITEM( ATTR_PROTECTION ); + mbFontUsed |= !!mpPattern->HasItemsSet( pnFontWhichIds ); // BOOL->bool + mbFmtUsed |= CHECKITEM( ATTR_VALUE_FORMAT ); + mbBorderUsed |= CHECKITEM( ATTR_BORDER ); + mbAreaUsed |= CHECKITEM( ATTR_BACKGROUND ); + mbAlignUsed |= CHECKITEM( ATTR_HOR_JUSTIFY ) || CHECKITEM( ATTR_LINEBREAK ); + break; + } + +#undef CHECKITEM +} + +sal_uInt8 XclExpXF::GetUsedAttribMask() const +{ + sal_uInt8 nUsedFlags = 0; + // "mbCellXF == mb***Used" evaluates to correct value in cell and style XFs + ::set_flag( nUsedFlags, EXC_XF_DIFF_PROT, mbCellXF == mbProtUsed ); + ::set_flag( nUsedFlags, EXC_XF_DIFF_FONT, mbCellXF == mbFontUsed ); + ::set_flag( nUsedFlags, EXC_XF_DIFF_VALFMT, mbCellXF == mbFmtUsed ); + ::set_flag( nUsedFlags, EXC_XF_DIFF_ALIGN, mbCellXF == mbAlignUsed ); + ::set_flag( nUsedFlags, EXC_XF_DIFF_BORDER, mbCellXF == mbBorderUsed ); + ::set_flag( nUsedFlags, EXC_XF_DIFF_AREA, mbCellXF == mbAreaUsed ); + return nUsedFlags; +} + +void XclExpXF::WriteBody5( XclExpStream& rStrm ) +{ + sal_uInt16 nTypeProt = 0; + ::set_flag( nTypeProt, EXC_XF_LOCKED, mbLocked ); + ::set_flag( nTypeProt, EXC_XF_HIDDEN, mbHidden ); + ::set_flag( nTypeProt, EXC_XF_STYLE, !mbCellXF ); + ::insert_value( nTypeProt, mnParent, 4, 12 ); + + sal_uInt16 nAlign = 0; + ::insert_value( nAlign, meHorAlign, 0, 3 ); + ::set_flag( nAlign, EXC_XF_WRAPPED, mbWrapped ); + ::insert_value( nAlign, meVerAlign, 4, 3 ); + ::insert_value( nAlign, meOrient, 8, 2 ); + ::insert_value( nAlign, GetUsedAttribMask(), 10, 6 ); + + sal_uInt32 nArea = 0, nBorder = 0; + lcl_GetBorder5( nBorder, nArea, maBorder, rStrm.GetRoot().GetPalette() ); + lcl_GetArea5( nArea, maArea, rStrm.GetRoot().GetPalette() ); + + rStrm << mnFont << mnNumFmt << nTypeProt << nAlign << nArea << nBorder; +} + +void XclExpXF::WriteBody8( XclExpStream& rStrm ) +{ + sal_uInt16 nTypeProt = 0; + ::set_flag( nTypeProt, EXC_XF_LOCKED, mbLocked ); + ::set_flag( nTypeProt, EXC_XF_HIDDEN, mbHidden ); + ::set_flag( nTypeProt, EXC_XF_STYLE, !mbCellXF ); + ::insert_value( nTypeProt, mnParent, 4, 12 ); + + sal_uInt16 nAlign = 0; + ::insert_value( nAlign, meHorAlign, 0, 3 ); + ::set_flag( nAlign, EXC_XF_WRAPPED, mbWrapped ); + ::insert_value( nAlign, meVerAlign, 4, 3 ); + ::insert_value( nAlign, mnRotation, 8, 8 ); + + sal_uInt16 nMiscAttrib = 0; + ::insert_value( nMiscAttrib, mnIndent, 0, 4 ); + ::insert_value( nMiscAttrib, meTextDir, 6, 2 ); + ::insert_value( nMiscAttrib, GetUsedAttribMask(), 10, 6 ); + + sal_uInt32 nBorder1 = 0, nBorder2 = 0; + sal_uInt16 nArea = 0; + lcl_GetBorder8( nBorder1, nBorder2, maBorder, rStrm.GetRoot().GetPalette() ); + lcl_GetArea8( nBorder2, nArea, maArea, rStrm.GetRoot().GetPalette() ); + + rStrm << mnFont << mnNumFmt << nTypeProt << nAlign << nMiscAttrib << nBorder1 << nBorder2 << nArea; +} + +void XclExpXF::WriteBody( XclExpStream& rStrm ) +{ + switch( rStrm.GetRoot().GetBiff() ) + { + case xlBiff5: + case xlBiff7: WriteBody5( rStrm ); break; + case xlBiff8: WriteBody8( rStrm ); break; + default: DBG_ERROR_BIFF(); + } +} + + +// ---------------------------------------------------------------------------- + +XclExpStyle::XclExpStyle( const String& rName, sal_uInt16 nXFIndex ) : + XclExpRecord( EXC_ID_STYLE ), + maName( rName ), + mnXFIndex( nXFIndex ) +{ + DBG_ASSERT( maName.Len(), "XclExpStyle::XclExpStyle - empty style name" ); +} + +void XclExpStyle::WriteBody( XclExpStream& rStrm ) +{ + XclExpString aNameEx; + if( rStrm.GetRoot().GetBiff() >= xlBiff8 ) + aNameEx.Assign( maName ); + else + aNameEx.AssignByte( maName, rStrm.GetRoot().GetCharSet(), EXC_STR_8BITLENGTH ); + rStrm << mnXFIndex << aNameEx; +} + + +// ---------------------------------------------------------------------------- + +XclExpXFBuffer::XclExpXFBuffer( const XclExpRoot& rRoot ) : + XclExpRoot( rRoot ), + mnXclMaxCount( EXC_XF_MAXCOUNT ), + mnXclOffset( EXC_XF_OFFSET ) +{ +} + +void XclExpXFBuffer::InsertUserStyles() +{ + SfxStyleSheetIterator aStyleIter( GetDoc().GetStyleSheetPool(), SFX_STYLE_FAMILY_PARA ); + for( SfxStyleSheetBase* pStyle = aStyleIter.First(); pStyle; pStyle = aStyleIter.Next() ) + if( pStyle->IsUserDefined() ) + InsertStyle( *pStyle ); +} + +sal_uInt16 XclExpXFBuffer::Insert( const ScPatternAttr* pPattern, bool bForceWrapped ) +{ + return InsertCellXF( pPattern, NUMBERFORMAT_ENTRY_NOT_FOUND, bForceWrapped ); +} + +sal_uInt16 XclExpXFBuffer::Insert( const ScPatternAttr* pPattern, sal_uInt32 nForcedNumFmt ) +{ + return InsertCellXF( pPattern, nForcedNumFmt, false ); +} + +sal_uInt16 XclExpXFBuffer::InsertStyle( SfxStyleSheetBase& rStyleSheet ) +{ + // create the XF record + sal_uInt16 nXFIndex = EXC_XF_DEFAULTSTYLE; + if( maXFList.Count() < EXC_XF_MAXCOUNT ) + { + nXFIndex = GetXclIndex( maXFList.Count() ); + maXFList.Append( new XclExpXF( GetRoot(), rStyleSheet ) ); + } + + // create the STYLE record + if( rStyleSheet.GetName().Len() ) + maStyleList.Append( new XclExpStyle( rStyleSheet.GetName(), nXFIndex ) ); + + return nXFIndex; +} + +void XclExpXFBuffer::Save( XclExpStream& rStrm ) +{ + // XF records + switch( GetBiff() ) + { + case xlBiff5: + case xlBiff7: WriteDefaultXFs5( rStrm ); break; + case xlBiff8: WriteDefaultXFs8( rStrm ); break; + default: DBG_ERROR_BIFF(); + } + maXFList.Save( rStrm ); + + // STYLE records + switch( GetBiff() ) + { + case xlBiff5: + case xlBiff7: + case xlBiff8: WriteDefaultStyles5( rStrm ); break; + default: DBG_ERROR_BIFF(); + } + maStyleList.Save( rStrm ); +} + +sal_uInt16 XclExpXFBuffer::GetXclIndex( sal_uInt32 nIndex ) const +{ + DBG_ASSERT( nIndex < mnXclMaxCount, "XclExpXFBuffer::GetXclIndex - invalid index" ); + return static_cast< sal_uInt16 >( nIndex + mnXclOffset ); +} + +sal_uInt16 XclExpXFBuffer::InsertCellXF( + const ScPatternAttr* pPattern, sal_uInt32 nForcedNumFmt, bool bForceWrapped ) +{ + sal_uInt32 nIndex = LIST_ENTRY_NOTFOUND; + + // try to find existing cell XF + for( const XclExpXF* pXF = maXFList.First(); pXF; pXF = maXFList.Next() ) + { + if( pXF->Equals( pPattern, nForcedNumFmt, bForceWrapped ) ) + { + nIndex = maXFList.GetCurPos(); + break; + } + } + + // not found - insert new XF + if( nIndex == LIST_ENTRY_NOTFOUND ) + { + nIndex = maXFList.Count(); + if( nIndex < EXC_XF_MAXCOUNT ) + maXFList.Append( new XclExpXF( GetRoot(), pPattern, nForcedNumFmt, bForceWrapped ) ); + else + // list full - fall back to default cell XF + return EXC_XF_DEFAULTCELL; + } + + return GetXclIndex( nIndex ); +} + +void XclExpXFBuffer::WriteDefaultXFs5( XclExpStream& rStrm ) +{ + static const sal_uInt8 pnDefStyle[] = { 0x00,0x00,0x00,0x00,0xF5,0xFF,0x20,0x00,0xC0,0x20,0x00,0x00,0x00,0x00,0x00,0x00 }; + static const sal_uInt8 pnOutlineStyle1[] = { 0x01,0x00,0x00,0x00,0xF5,0xFF,0x20,0xF4,0xC0,0x20,0x00,0x00,0x00,0x00,0x00,0x00 }; + static const sal_uInt8 pnOutlineStyle2[] = { 0x02,0x00,0x00,0x00,0xF5,0xFF,0x20,0xF4,0xC0,0x20,0x00,0x00,0x00,0x00,0x00,0x00 }; + static const sal_uInt8 pnOutlineStyle3[] = { 0x00,0x00,0x00,0x00,0xF5,0xFF,0x20,0xF4,0xC0,0x20,0x00,0x00,0x00,0x00,0x00,0x00 }; + static const sal_uInt8 pnDefCell[] = { 0x00,0x00,0x00,0x00,0x01,0x00,0x20,0x00,0xC0,0x20,0x00,0x00,0x00,0x00,0x00,0x00 }; + static const sal_uInt8 pnBuiltInStyle1[] = { 0x05,0x00,0x2B,0x00,0xF5,0xFF,0x20,0xF8,0xC0,0x20,0x00,0x00,0x00,0x00,0x00,0x00 }; + static const sal_uInt8 pnBuiltInStyle2[] = { 0x05,0x00,0x29,0x00,0xF5,0xFF,0x20,0xF8,0xC0,0x20,0x00,0x00,0x00,0x00,0x00,0x00 }; + static const sal_uInt8 pnBuiltInStyle3[] = { 0x05,0x00,0x2C,0x00,0xF5,0xFF,0x20,0xF8,0xC0,0x20,0x00,0x00,0x00,0x00,0x00,0x00 }; + static const sal_uInt8 pnBuiltInStyle4[] = { 0x05,0x00,0x2A,0x00,0xF5,0xFF,0x20,0xF8,0xC0,0x20,0x00,0x00,0x00,0x00,0x00,0x00 }; + static const sal_uInt8 pnBuiltInStyle5[] = { 0x05,0x00,0x09,0x00,0xF5,0xFF,0x20,0xF8,0xC0,0x20,0x00,0x00,0x00,0x00,0x00,0x00 }; + + // default style (1) + XclExpDummyRecord aXF( EXC_ID_XF, pnDefStyle, STATIC_TABLE_SIZE( pnDefStyle ) ); aXF.Save( rStrm ); + // outline styles (14) + aXF.SetData( pnOutlineStyle1, STATIC_TABLE_SIZE( pnOutlineStyle1 ) ); aXF.SaveRepeated( rStrm, 2 ); + aXF.SetData( pnOutlineStyle2, STATIC_TABLE_SIZE( pnOutlineStyle2 ) ); aXF.SaveRepeated( rStrm, 2 ); + aXF.SetData( pnOutlineStyle3, STATIC_TABLE_SIZE( pnOutlineStyle3 ) ); aXF.SaveRepeated( rStrm, 10 ); + // default cell XF (1) + aXF.SetData( pnDefCell, STATIC_TABLE_SIZE( pnDefCell ) ); aXF.Save( rStrm ); + // built-in styles (5) + aXF.SetData( pnBuiltInStyle1, STATIC_TABLE_SIZE( pnBuiltInStyle1 ) ); aXF.Save( rStrm ); + aXF.SetData( pnBuiltInStyle2, STATIC_TABLE_SIZE( pnBuiltInStyle2 ) ); aXF.Save( rStrm ); + aXF.SetData( pnBuiltInStyle3, STATIC_TABLE_SIZE( pnBuiltInStyle3 ) ); aXF.Save( rStrm ); + aXF.SetData( pnBuiltInStyle4, STATIC_TABLE_SIZE( pnBuiltInStyle4 ) ); aXF.Save( rStrm ); + aXF.SetData( pnBuiltInStyle5, STATIC_TABLE_SIZE( pnBuiltInStyle5 ) ); aXF.Save( rStrm ); +} + +void XclExpXFBuffer::WriteDefaultXFs8( XclExpStream& rStrm ) +{ + static const sal_uInt8 pnDefStyle[] = { 0x00,0x00,0x00,0x00,0xF5,0xFF,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x20 }; + static const sal_uInt8 pnOutlineStyle1[] = { 0x01,0x00,0x00,0x00,0xF5,0xFF,0x20,0x00,0x00,0xF4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x20 }; + static const sal_uInt8 pnOutlineStyle2[] = { 0x02,0x00,0x00,0x00,0xF5,0xFF,0x20,0x00,0x00,0xF4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x20 }; + static const sal_uInt8 pnOutlineStyle3[] = { 0x00,0x00,0x00,0x00,0xF5,0xFF,0x20,0x00,0x00,0xF4,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x20 }; + static const sal_uInt8 pnDefCell[] = { 0x00,0x00,0x00,0x00,0x01,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x20 }; + static const sal_uInt8 pnBuiltInStyle1[] = { 0x01,0x00,0x2B,0x00,0xF5,0xFF,0x20,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x20 }; + static const sal_uInt8 pnBuiltInStyle2[] = { 0x01,0x00,0x29,0x00,0xF5,0xFF,0x20,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x20 }; + static const sal_uInt8 pnBuiltInStyle3[] = { 0x01,0x00,0x2C,0x00,0xF5,0xFF,0x20,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x20 }; + static const sal_uInt8 pnBuiltInStyle4[] = { 0x01,0x00,0x2A,0x00,0xF5,0xFF,0x20,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x20 }; + static const sal_uInt8 pnBuiltInStyle5[] = { 0x01,0x00,0x09,0x00,0xF5,0xFF,0x20,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xC0,0x20 }; + + // default style (1) + XclExpDummyRecord aXF( EXC_ID_XF, pnDefStyle, STATIC_TABLE_SIZE( pnDefStyle ) ); aXF.Save( rStrm ); + // outline styles (14) + aXF.SetData( pnOutlineStyle1, STATIC_TABLE_SIZE( pnOutlineStyle1 ) ); aXF.SaveRepeated( rStrm, 2 ); + aXF.SetData( pnOutlineStyle2, STATIC_TABLE_SIZE( pnOutlineStyle2 ) ); aXF.SaveRepeated( rStrm, 2 ); + aXF.SetData( pnOutlineStyle3, STATIC_TABLE_SIZE( pnOutlineStyle3 ) ); aXF.SaveRepeated( rStrm, 10 ); + // default cell XF (1) + aXF.SetData( pnDefCell, STATIC_TABLE_SIZE( pnDefCell ) ); aXF.Save( rStrm ); + // built-in styles (5) + aXF.SetData( pnBuiltInStyle1, STATIC_TABLE_SIZE( pnBuiltInStyle1 ) ); aXF.Save( rStrm ); + aXF.SetData( pnBuiltInStyle2, STATIC_TABLE_SIZE( pnBuiltInStyle2 ) ); aXF.Save( rStrm ); + aXF.SetData( pnBuiltInStyle3, STATIC_TABLE_SIZE( pnBuiltInStyle3 ) ); aXF.Save( rStrm ); + aXF.SetData( pnBuiltInStyle4, STATIC_TABLE_SIZE( pnBuiltInStyle4 ) ); aXF.Save( rStrm ); + aXF.SetData( pnBuiltInStyle5, STATIC_TABLE_SIZE( pnBuiltInStyle5 ) ); aXF.Save( rStrm ); +} + +void XclExpXFBuffer::WriteDefaultStyles5( XclExpStream& rStrm ) +{ + XclExpUInt32Record( EXC_ID_STYLE, 0xFF038010 ).Save( rStrm ); + XclExpUInt32Record( EXC_ID_STYLE, 0xFF068011 ).Save( rStrm ); + XclExpUInt32Record( EXC_ID_STYLE, 0xFF048012 ).Save( rStrm ); + XclExpUInt32Record( EXC_ID_STYLE, 0xFF078013 ).Save( rStrm ); + XclExpUInt32Record( EXC_ID_STYLE, 0xFF008000 ).Save( rStrm ); + XclExpUInt32Record( EXC_ID_STYLE, 0xFF058014 ).Save( rStrm ); +} + + // ============================================================================ diff --git a/sc/source/filter/excel/xicontent.cxx b/sc/source/filter/excel/xicontent.cxx index a5f8366356b8..49ee80cfd828 100644 --- a/sc/source/filter/excel/xicontent.cxx +++ b/sc/source/filter/excel/xicontent.cxx @@ -2,9 +2,9 @@ * * $RCSfile: xicontent.cxx,v $ * - * $Revision: 1.2 $ + * $Revision: 1.3 $ * - * last change: $Author: dr $ $Date: 2002-12-04 14:18:17 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:36 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -145,6 +145,7 @@ #endif +#include "XclImpObjects.hxx" #include "excform.hxx" @@ -183,6 +184,7 @@ void XclImpBitmap::ReadBitmap( XclImpStream& rStrm ) { const XclImpRoot& rRoot = rStrm.GetRoot(); DBG_ASSERT( rRoot.mpRD->pStyleSheetItemSet, "XclImpBitmap::ReadBitmap - no itemset" ); + if( !rRoot.mpRD->pStyleSheetItemSet ) return; SfxItemSet& rItemSet = *rRoot.mpRD->pStyleSheetItemSet; sal_uInt32 nID; @@ -475,15 +477,16 @@ void XclImpLabelranges::ReadLabelranges( XclImpStream& rStrm ) // Data Validation ============================================================ -void XclImpValidation::ReadDval( XclImpStream& rStrm, XclImpRoot& rRoot ) +void XclImpValidation::ReadDval( XclImpStream& rStrm ) { + const XclImpRoot& rRoot = rStrm.GetRoot(); DBG_ASSERT_BIFF( rRoot.GetBiff() == xlBiff8 ); sal_uInt32 nObjId; rStrm.Ignore( 10 ); rStrm >> nObjId; if( nObjId != EXC_DVAL_NOOBJ ) - rRoot.SetIgnoreObject( nObjId ); + rRoot.GetObjectManager().SetIgnoreObject( nObjId ); } void XclImpValidation::ReadDv( XclImpStream& rStrm, ExcelToSc& rFmlaConv ) diff --git a/sc/source/filter/excel/xihelper.cxx b/sc/source/filter/excel/xihelper.cxx index a0d68643a523..2c304539777c 100644 --- a/sc/source/filter/excel/xihelper.cxx +++ b/sc/source/filter/excel/xihelper.cxx @@ -2,9 +2,9 @@ * * $RCSfile: xihelper.cxx,v $ * - * $Revision: 1.2 $ + * $Revision: 1.3 $ * - * last change: $Author: dr $ $Date: 2002-12-06 16:39:26 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:36 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -323,6 +323,7 @@ void XclImpHFConverter::ParseString( const String& rHFString ) } eState = xlPSText; const sal_Unicode* pChar = rHFString.GetBuffer(); + const sal_Unicode* pNull = pChar + rHFString.Len(); // pointer to teminating null char while( *pChar ) { switch( eState ) @@ -365,9 +366,20 @@ void XclImpHFConverter::ParseString( const String& rHFString ) case 'N': InsertField( SvxFieldItem( SvxPagesField() ) ); break; // page count case 'D': InsertField( SvxFieldItem( SvxDateField() ) ); break; // date case 'T': InsertField( SvxFieldItem( SvxTimeField() ) ); break; // time - case 'F': InsertField( SvxFieldItem( SvxExtFileField() ) ); break; // file case 'A': InsertField( SvxFieldItem( SvxTableField() ) ); break; // table name + case 'Z': // file path + InsertField( SvxFieldItem( SvxExtFileField() ) ); // convert to full name + if( (pNull - pChar >= 2) && (*(pChar + 1) == '&') && (*(pChar + 2) == 'F') ) + { + // &Z&F found - ignore the &F part + pChar += 2; + } + break; + case 'F': // file name + InsertField( SvxFieldItem( SvxExtFileField( EMPTY_STRING, SVXFILETYPE_VAR, SVXFILEFORMAT_NAME_EXT ) ) ); + break; + case 'U': // underline SetAttribs(); mpFontData->meUnderline = (mpFontData->meUnderline == xlUnderlSingle) ? @@ -616,7 +628,7 @@ void XclImpUrlHelper::DecodeUrl( rUrl.Append( '\\' ); else // control character in raw name -> DDE link { - rUrl.Append( '|' ); + rUrl.Append( EXC_DDE_DELIM ); eState = xlUrlRaw; } break; diff --git a/sc/source/filter/excel/xilink.cxx b/sc/source/filter/excel/xilink.cxx index 7f80582178b5..5ed531463adf 100644 --- a/sc/source/filter/excel/xilink.cxx +++ b/sc/source/filter/excel/xilink.cxx @@ -2,9 +2,9 @@ * * $RCSfile: xilink.cxx,v $ * - * $Revision: 1.1 $ + * $Revision: 1.2 $ * - * last change: $Author: dr $ $Date: 2002-11-21 12:12:51 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:36 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -129,8 +129,8 @@ XclImpExtName::XclImpExtName( XclImpStream& rStrm ) if( ::get_flag( nFlags, EXC_EXTN_BUILTIN ) || !::get_flag( nFlags, EXC_EXTN_OLE_OR_DDE ) ) { meType = xlExtName; - ScfTools::ConvertName( maName, true ); // also a point is a valid char for func names! - maName = rStrm.GetRoot().GetAddInNames().GetScName( maName ); + maAddInName = rStrm.GetRoot().GetAddInNames().GetScName( maName ); + ScfTools::ConvertToScDefinedName( maName ); } else meType = ::get_flagvalue( nFlags, EXC_EXTN_OLE, xlExtOLE, xlExtDDE ); @@ -205,14 +205,17 @@ void XclImpSupbookTab::CreateTable( ScDocument& rDoc, const String& rUrl ) XclImpSupbook::XclImpSupbook( XclImpStream& rStrm ) : mnCurrExcTab( EXC_TAB_INVALID ), - mbSelf( false ) + mbSelf( false ), + mbAddIn( false ) { sal_uInt16 nTabCnt; rStrm >> nTabCnt; if( rStrm.GetRecLeft() == 2 ) { - mbSelf = (rStrm.ReaduInt16() == EXC_SUPB_SELF); + sal_uInt16 nType = rStrm.ReaduInt16(); + mbSelf = (nType == EXC_SUPB_SELF); + mbAddIn = (nType == EXC_SUPB_ADDIN); return; } @@ -242,7 +245,7 @@ void XclImpSupbook::ReadUrl( XclImpStream& rStrm, String& rUrl, bool& rbSelf ) void XclImpSupbook::ReadTabName( XclImpStream& rStrm, String& rTabName ) { rStrm.AppendUniString( rTabName ); - ScfTools::ConvertName( rTabName ); + ScfTools::ConvertToScSheetName( rTabName ); } void XclImpSupbook::ReadXct( XclImpStream& rStrm ) @@ -277,9 +280,7 @@ const XclImpExtName* XclImpSupbook::GetExtName( sal_uInt16 nXclIndex ) const bool XclImpSupbook::GetLink( String& rApplic, String& rDoc ) const { - // first backslash is application name delimiter - // (created by XclImpUrlDecoder::DecodeUrl()) - xub_StrLen nPos = maUrl.Search( '\\' ); + xub_StrLen nPos = maUrl.Search( EXC_DDE_DELIM ); if( mbSelf || !maUrl.Len() || (nPos == STRING_NOTFOUND) ) return false; rApplic = maUrl.Copy( 0, nPos ); diff --git a/sc/source/filter/excel/xiroot.cxx b/sc/source/filter/excel/xiroot.cxx index 88cc80e83959..f24c562fdd95 100644 --- a/sc/source/filter/excel/xiroot.cxx +++ b/sc/source/filter/excel/xiroot.cxx @@ -2,9 +2,9 @@ * * $RCSfile: xiroot.cxx,v $ * - * $Revision: 1.1 $ + * $Revision: 1.2 $ * - * last change: $Author: dr $ $Date: 2002-11-21 12:12:51 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:36 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -62,7 +62,6 @@ #ifdef PCH #include "filt_pch.hxx" #endif - #pragma hdrstop // ============================================================================ @@ -81,12 +80,13 @@ #include "xicontent.hxx" #endif +#include "XclImpObjects.hxx" + // Global data ================================================================ XclImpRootData::XclImpRootData( XclBiff eBiff, ScDocument& rDocument, const String& rBasePath, CharSet eCharSet ) : - XclRootData( eBiff, rDocument, rBasePath, eCharSet ), - mbIgnoreObjSorted( false ) + XclRootData( eBiff, rDocument, rBasePath, eCharSet ) { } @@ -101,13 +101,13 @@ XclImpRoot::XclImpRoot( XclImpRootData& rImpRootData ) : XclRoot( rImpRootData ), mrImpData( rImpRootData ) { - mrImpData.mpPalette.reset( new XclImpPalette( *this ) ); - mrImpData.mpFontBuffer.reset( new XclImpFontBuffer( *this ) ); - mrImpData.mpNumFmtBuffer.reset( new XclImpNumFmtBuffer( *this ) ); - mrImpData.mpXFBuffer.reset( new XclImpXFBuffer( *this ) ); - mrImpData.mpXFIndexBuffer.reset( new XclImpXFIndexBuffer( *this ) ); + mrImpData.mpPalette.reset( new XclImpPalette( GetRoot() ) ); + mrImpData.mpFontBuffer.reset( new XclImpFontBuffer( GetRoot() ) ); + mrImpData.mpNumFmtBuffer.reset( new XclImpNumFmtBuffer( GetRoot() ) ); + mrImpData.mpXFBuffer.reset( new XclImpXFBuffer( GetRoot() ) ); + mrImpData.mpXFIndexBuffer.reset( new XclImpXFIndexBuffer( GetRoot() ) ); mrImpData.mpTabIdBuffer.reset( new XclImpTabIdBuffer ); - mrImpData.mpLinkManager.reset( new XclImpLinkManager( *this ) ); + mrImpData.mpLinkManager.reset( new XclImpLinkManager( GetRoot() ) ); } XclImpRoot::XclImpRoot( const XclImpRoot& rRoot ) : @@ -125,13 +125,13 @@ XclImpRoot& XclImpRoot::operator=( const XclImpRoot& rRoot ) void XclImpRoot::SetBiff( XclBiff eBiff ) { XclRoot::SetBiff( eBiff ); - GetPalette().SetBiff( eBiff ); + GetPalette().OnChangeBiff(); } XclImpSst& XclImpRoot::GetSst() const { if( !mrImpData.mpSst.get() ) - mrImpData.mpSst.reset( new XclImpSst( *this ) ); + mrImpData.mpSst.reset( new XclImpSst( GetRoot() ) ); return *mrImpData.mpSst; } @@ -170,10 +170,17 @@ XclImpLinkManager& XclImpRoot::GetLinkManager() const return *mrImpData.mpLinkManager; } +XclImpObjectManager& XclImpRoot::GetObjectManager() const +{ + if( !mrImpData.mpObjManager.get() ) + mrImpData.mpObjManager.reset( new XclImpObjectManager( GetRoot() ) ); + return *mrImpData.mpObjManager; +} + XclImpWebQueryBuffer& XclImpRoot::GetWebQueryBuffer() const { if( !mrImpData.mpWebQBuffer.get() ) - mrImpData.mpWebQBuffer.reset( new XclImpWebQueryBuffer( *this ) ); + mrImpData.mpWebQBuffer.reset( new XclImpWebQueryBuffer( GetRoot() ) ); return *mrImpData.mpWebQBuffer; } @@ -192,22 +199,6 @@ void XclImpRoot::CheckCellRangeList( ScRangeList& rRanges ) const XclRoot::CheckCellRangeList( rRanges, GetScMaxPos() ); } -void XclImpRoot::SetIgnoreObject( sal_uInt32 nObjId ) -{ - mrImpData.maIgnoreObj.push_back( nObjId ); - mrImpData.mbIgnoreObjSorted = false; -} - -bool XclImpRoot::IsIgnoreObject( sal_uInt32 nObjId ) const -{ - if( !mrImpData.mbIgnoreObjSorted ) - { - ::std::sort( mrImpData.maIgnoreObj.begin(), mrImpData.maIgnoreObj.end() ); - mrImpData.mbIgnoreObjSorted = true; - } - return ::std::binary_search( mrImpData.maIgnoreObj.begin(), mrImpData.maIgnoreObj.end(), nObjId ); -} - // ============================================================================ diff --git a/sc/source/filter/excel/xistream.cxx b/sc/source/filter/excel/xistream.cxx index eb367435abc1..e81d3c1a906b 100644 --- a/sc/source/filter/excel/xistream.cxx +++ b/sc/source/filter/excel/xistream.cxx @@ -2,9 +2,9 @@ * * $RCSfile: xistream.cxx,v $ * - * $Revision: 1.2 $ + * $Revision: 1.3 $ * - * last change: $Author: dr $ $Date: 2002-12-06 16:39:27 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:37 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -83,6 +83,7 @@ // ============================================================================ +#if SC_XCL_USEDECR XclImpDecrypter::~XclImpDecrypter() { } @@ -222,6 +223,7 @@ sal_uInt32 XclImpBiff8Decrypter::ReadDecrypt( SvStream& rStrm, void* pData, sal_ { return rStrm.Read( pData, nBytes ); } +#endif // ============================================================================ @@ -279,7 +281,9 @@ XclImpStream::XclImpStream( SvStream& rInStrm, const XclImpRoot& rRoot, bool bCo mnRecSize( 0 ), mnRecLeft( 0 ), mbCont( bContHandling ), +#if SC_XCL_USEDECR mbUseDecr( false ), +#endif mbValidRec( false ), mbValid( false ), mbWarnings( true ) @@ -300,7 +304,9 @@ bool XclImpStream::GetNextRecord( sal_uInt16& rnRecId, sal_uInt16& rnRecSize ) if( bRet ) { mrStrm >> rnRecId >> rnRecSize; // read direct +#if SC_XCL_USEDECR SetDecrypterOffset( rnRecSize ); +#endif } else rnRecId = rnRecSize = 0; @@ -359,6 +365,7 @@ void XclImpStream::InitializeRecord( bool bContHandling, sal_uInt16 nAltContId ) } } +#if SC_XCL_USEDECR void XclImpStream::EnableDecryption( XclImpDecrypter* pDecrypter ) { mpDecrypter.reset( pDecrypter ); @@ -370,6 +377,7 @@ void XclImpStream::UseDecryption( bool bUse ) { mbUseDecr = (mpDecrypter.get() && mpDecrypter->IsValid()) ? bUse : false; } +#endif bool XclImpStream::GetContinue() { @@ -455,7 +463,9 @@ void XclImpStream::SeekGlobalPosition() mnComplRecSize = mnCurrRecSize; mbHasComplRec = !mbCont; mbValidRec = mbValid = mbGlobValidRec; +#if SC_XCL_USEDECR SetDecrypterOffset( mnRecSize ); +#endif } } @@ -477,24 +487,29 @@ sal_uInt32 XclImpStream::GetRecSize() void XclImpStream::ReadAtom( sal_Int8& rnValue ) { +#if SC_XCL_USEDECR if( mbUseDecr ) mpDecrypter->ReadDecrypt( mrStrm, &rnValue, 1 ); else +#endif mrStrm >> rnValue; --mnRecLeft; } void XclImpStream::ReadAtom( sal_uInt8& rnValue ) { +#if SC_XCL_USEDECR if( mbUseDecr ) mpDecrypter->ReadDecrypt( mrStrm, &rnValue, 1 ); else +#endif mrStrm >> rnValue; --mnRecLeft; } void XclImpStream::ReadAtom( sal_Int16& rnValue ) { +#if SC_XCL_USEDECR if( mbUseDecr ) { SVBT16 pBuffer; @@ -502,12 +517,14 @@ void XclImpStream::ReadAtom( sal_Int16& rnValue ) rnValue = static_cast< sal_Int16 >( SVBT16ToShort( pBuffer ) ); } else +#endif mrStrm >> rnValue; mnRecLeft -= 2; } void XclImpStream::ReadAtom( sal_uInt16& rnValue ) { +#if SC_XCL_USEDECR if( mbUseDecr ) { SVBT16 pBuffer; @@ -515,12 +532,14 @@ void XclImpStream::ReadAtom( sal_uInt16& rnValue ) rnValue = SVBT16ToShort( pBuffer ); } else +#endif mrStrm >> rnValue; mnRecLeft -= 2; } void XclImpStream::ReadAtom( sal_Int32& rnValue ) { +#if SC_XCL_USEDECR if( mbUseDecr ) { SVBT32 pBuffer; @@ -528,12 +547,14 @@ void XclImpStream::ReadAtom( sal_Int32& rnValue ) rnValue = static_cast< sal_Int32 >( SVBT32ToLong( pBuffer ) ); } else +#endif mrStrm >> rnValue; mnRecLeft -= 4; } void XclImpStream::ReadAtom( sal_uInt32& rnValue ) { +#if SC_XCL_USEDECR if( mbUseDecr ) { SVBT32 pBuffer; @@ -541,12 +562,14 @@ void XclImpStream::ReadAtom( sal_uInt32& rnValue ) rnValue = SVBT32ToLong( pBuffer ); } else +#endif mrStrm >> rnValue; mnRecLeft -= 4; } void XclImpStream::ReadAtom( float& rfValue ) { +#if SC_XCL_USEDECR if( mbUseDecr ) { SVBT32 pBuffer; @@ -555,12 +578,14 @@ void XclImpStream::ReadAtom( float& rfValue ) memcpy( &rfValue, &nValue, 4 ); } else +#endif mrStrm >> rfValue; mnRecLeft -= 4; } void XclImpStream::ReadAtom( double& rfValue ) { +#if SC_XCL_USEDECR if( mbUseDecr ) { SVBT64 pBuffer; @@ -568,14 +593,19 @@ void XclImpStream::ReadAtom( double& rfValue ) rfValue = SVBT64ToDouble( pBuffer ); } else +#endif mrStrm >> rfValue; mnRecLeft -= 8; } sal_uInt32 XclImpStream::ReadData( void* pData, sal_uInt32 nBytes ) { +#if SC_XCL_USEDECR sal_uInt32 nRet = mbUseDecr ? mpDecrypter->ReadDecrypt( mrStrm, pData, nBytes ) : mrStrm.Read( pData, nBytes ); +#else + sal_uInt32 nRet = mrStrm.Read( pData, nBytes ); +#endif mnRecLeft -= nRet; return nRet; } diff --git a/sc/source/filter/excel/xistyle.cxx b/sc/source/filter/excel/xistyle.cxx index e0a489fa9e35..f7c5eb32fe3e 100644 --- a/sc/source/filter/excel/xistyle.cxx +++ b/sc/source/filter/excel/xistyle.cxx @@ -2,9 +2,9 @@ * * $RCSfile: xistyle.cxx,v $ * - * $Revision: 1.2 $ + * $Revision: 1.3 $ * - * last change: $Author: dr $ $Date: 2002-12-06 16:39:27 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:37 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -161,10 +161,16 @@ // PALETTE record - color information ========================================= XclImpPalette::XclImpPalette( const XclImpRoot& rRoot ) : - XclDefaultPalette( rRoot.GetBiff() ) + XclDefaultPalette( rRoot.GetBiff() ), + XclImpRoot( rRoot ) { } +void XclImpPalette::OnChangeBiff() +{ + SetDefaultColors( GetBiff() ); +} + ColorData XclImpPalette::GetColorData( sal_uInt16 nXclIndex, ColorData nDefault ) const { if( nXclIndex >= GetIndexOffset() ) @@ -244,6 +250,19 @@ XclImpFont::XclImpFont( const XclImpRoot& rRoot, const XclFontData& rFontData ) Update(); /// sets internal font charset/family and script types } +long XclImpFont::GetCharWidth() const +{ + if( SfxPrinter* pPrinter = GetPrinter() ) + { + Font aFont( maData.maName, Size( 0, maData.mnHeight ) ); + aFont.SetFamily( meFontFamily ); + aFont.SetCharSet( meFontCharSet ); + pPrinter->SetFont( aFont ); + return pPrinter->GetTextWidth( String( '0' ) ); + } + return 11 * maData.mnHeight / 20; +} + void XclImpFont::ReadFont( XclImpStream& rStrm ) { switch( GetBiff() ) @@ -274,35 +293,6 @@ void XclImpFont::ReadFont( XclImpStream& rStrm ) Update(); } -double XclImpFont::CalcColumnScale() const -{ - double fScale; - switch( maData.mnHeight ) - { - case 240: fScale = 1.21860; break; // 12pt - case 320: fScale = 1.61040; break; // 16pt - default: - { - SfxPrinter* pPrinter = GetPrinter(); - if( pPrinter ) - { - Font aFont( maData.maName, Size( 0, maData.mnHeight ) ); - aFont.SetFamily( meFontFamily ); - aFont.SetCharSet( meFontCharSet ); - pPrinter->SetFont( aFont ); - fScale = pPrinter->GetTextWidth( String( '0' ) ); - fScale /= 111.0; - } - else - { - fScale = maData.mnHeight; - fScale /= 200.0; // default height = 10pt = 200twips - } - } - } - return fScale; -} - void XclImpFont::FillToItemSet( SfxItemSet& rItemSet, XclFontWhichIDMode eMode ) const { bool bEE = (eMode == xlFontEEIDs) || (eMode == xlFontHFIDs); @@ -469,15 +459,7 @@ FontFamily XclImpFont::GetScFontFamily( sal_uInt8 nXclFamily, const String& rNam CharSet XclImpFont::GetScFontCharSet( sal_uInt8 nXclCharSet ) { - CharSet eScCharSet; - switch( nXclCharSet ) - { - case EXC_FONTCSET_MS_1252: eScCharSet = RTL_TEXTENCODING_MS_1252; break; - case EXC_FONTCSET_IBM_850: eScCharSet = RTL_TEXTENCODING_IBM_850; break; - case EXC_FONTCSET_SYMBOL: eScCharSet = RTL_TEXTENCODING_SYMBOL; break; - default: eScCharSet = ScfTools::GetSystemCharSet(); - } - return eScCharSet; + return rtl_getTextEncodingFromWindowsCharset(nXclCharSet); } FontItalic XclImpFont::GetScFontPosture( bool bXclItalic ) @@ -531,19 +513,31 @@ SvxEscapement XclImpFont::GetScFontEscapement( XclEscapement eXclEscapem ) // ---------------------------------------------------------------------------- +XclImpFontBuffer::XclImpFontBuffer( const XclImpRoot& rRoot ) : + XclImpRoot( rRoot ) +{ + // application font for column width calculation, filled with first font from font list + maAppFont.maName.AssignAscii( "Arial" ); + maAppFont.mnHeight = 200; + SetCharWidth( 110 ); +} + void XclImpFontBuffer::ReadFont( XclImpStream& rStrm ) { // Font with index 4 is not stored in an Excel file -> create a dummy font. if( maFontList.Count() == 4 ) - maFontList.Append( new XclImpFont( *maFontList.GetObject( 0 ) ) ); + maFontList.Append( new XclImpFont( *GetFont( 0 ) ) ); - XclImpFont* pFont = new XclImpFont( *this ); + XclImpFont* pFont = new XclImpFont( GetRoot() ); pFont->ReadFont( rStrm ); maFontList.Append( pFont ); - // Calculate the column scale from first font and current printer. if( maFontList.Count() == 1 ) - mpRD->fColScale *= pFont->CalcColumnScale(); + { + maAppFont = pFont->GetFontData(); + // #i3006# Calculate the width of '0' from first font and current printer. + SetCharWidth( pFont->GetCharWidth() ); + } } void XclImpFontBuffer::FillToItemSet( sal_uInt16 nFontIndex, SfxItemSet& rItemSet, XclFontWhichIDMode eMode ) const @@ -613,7 +607,7 @@ static const XclImpBuiltInFormat pBuiltInFormats[] = XclImpNumFmtBuffer::XclImpNumFmtBuffer( const XclImpRoot& rRoot ) : XclImpRoot( rRoot ), - mnDefault( GetFormatter().GetStandardFormat( GetDefLanguage() ) ) + mnStdFmt( GetFormatter().GetStandardFormat( GetDefLanguage() ) ) { } @@ -622,7 +616,7 @@ sal_uInt32 XclImpNumFmtBuffer::GetFormat( sal_uInt32 nIndex ) if( maKeyVec.empty() ) InsertBuiltinFormats(); - return (nIndex < maKeyVec.size()) ? maKeyVec[ nIndex ] : mnDefault; + return (nIndex < maKeyVec.size()) ? maKeyVec[ nIndex ] : mnStdFmt; } void XclImpNumFmtBuffer::ReadFormat( XclImpStream& rStrm ) @@ -676,7 +670,7 @@ void XclImpNumFmtBuffer::ReadFormat( XclImpStream& rStrm ) void XclImpNumFmtBuffer::InsertBuiltinFormats() { - const XclImpBuiltInFormat* pEnd = pBuiltInFormats + STATIC_TABLE_SIZE( pBuiltInFormats ); + const XclImpBuiltInFormat* pEnd = STATIC_TABLE_END( pBuiltInFormats ); String aFormat; xub_StrLen nCheckPos; @@ -700,122 +694,87 @@ void XclImpNumFmtBuffer::InsertBuiltinFormats() void XclImpNumFmtBuffer::InsertKey( sal_uInt32 nIndex, sal_uInt32 nFormatKey ) { if( nIndex >= maKeyVec.size() ) - maKeyVec.resize( nIndex + 1, mnDefault ); + maKeyVec.resize( nIndex + 1, mnStdFmt ); maKeyVec[ nIndex ] = nFormatKey; } // XF, STYLE record - Cell formatting ========================================= -/** Contains color and line style for each cell border line. */ -struct XclImpXFBorder -{ - sal_uInt16 mnLeftColor; /// Index to color for left line. - sal_uInt16 mnRightColor; /// Index to color for right line. - sal_uInt16 mnTopColor; /// Index to color for top line. - sal_uInt16 mnBottomColor; /// Index to color for bottom line. - sal_uInt8 mnLeftLine; /// Style of left line. - sal_uInt8 mnRightLine; /// Style of right line. - sal_uInt8 mnTopLine; /// Style of top line. - sal_uInt8 mnBottomLine; /// Style of bottom line. - - void SetBorder2( sal_uInt8 nFlags ); - void SetBorder34( sal_uInt32 nBorder ); - void SetBorder5( sal_uInt32 nBorder, sal_uInt32 nArea ); - void SetBorder8( sal_uInt32 nBorder1, sal_uInt32 nBorder2 ); -}; - -void XclImpXFBorder::SetBorder2( sal_uInt8 nFlags ) +void lcl_SetBorder2( XclImpXFBorder& rBorder, sal_uInt8 nFlags ) { - ::extract_value( mnLeftLine, nFlags, 3, 1 ); - ::extract_value( mnRightLine, nFlags, 4, 1 ); - ::extract_value( mnTopLine, nFlags, 5, 1 ); - ::extract_value( mnBottomLine, nFlags, 6, 1 ); - mnLeftColor = mnRightColor = mnTopColor = mnBottomColor = 0; // black + rBorder.mnLeftLine = ::get_flagvalue( nFlags, EXC_XF2_LEFTLINE, EXC_LINE_THIN, EXC_LINE_NONE ); + rBorder.mnRightLine = ::get_flagvalue( nFlags, EXC_XF2_RIGHTLINE, EXC_LINE_THIN, EXC_LINE_NONE ); + rBorder.mnTopLine = ::get_flagvalue( nFlags, EXC_XF2_TOPLINE, EXC_LINE_THIN, EXC_LINE_NONE ); + rBorder.mnBottomLine = ::get_flagvalue( nFlags, EXC_XF2_BOTTOMLINE, EXC_LINE_THIN, EXC_LINE_NONE ); + rBorder.mnLeftColor = rBorder.mnRightColor = rBorder.mnTopColor = rBorder.mnBottomColor = EXC_COLOR_BIFF2_BLACK; } -void XclImpXFBorder::SetBorder34( sal_uInt32 nBorder ) +void lcl_SetBorder3( XclImpXFBorder& rBorder, sal_uInt32 nBorder ) { - ::extract_value( mnTopLine, nBorder, 0, 3 ); - ::extract_value( mnLeftLine, nBorder, 8, 3 ); - ::extract_value( mnBottomLine, nBorder, 16, 3 ); - ::extract_value( mnRightLine, nBorder, 24, 3 ); - ::extract_value( mnTopColor, nBorder, 3, 5 ); - ::extract_value( mnLeftColor, nBorder, 11, 5 ); - ::extract_value( mnBottomColor, nBorder, 19, 5 ); - ::extract_value( mnRightColor, nBorder, 27, 5 ); + ::extract_value( rBorder.mnTopLine, nBorder, 0, 3 ); + ::extract_value( rBorder.mnLeftLine, nBorder, 8, 3 ); + ::extract_value( rBorder.mnBottomLine, nBorder, 16, 3 ); + ::extract_value( rBorder.mnRightLine, nBorder, 24, 3 ); + ::extract_value( rBorder.mnTopColor, nBorder, 3, 5 ); + ::extract_value( rBorder.mnLeftColor, nBorder, 11, 5 ); + ::extract_value( rBorder.mnBottomColor, nBorder, 19, 5 ); + ::extract_value( rBorder.mnRightColor, nBorder, 27, 5 ); } -void XclImpXFBorder::SetBorder5( sal_uInt32 nBorder, sal_uInt32 nArea ) +void lcl_SetBorder5( XclImpXFBorder& rBorder, sal_uInt32 nBorder, sal_uInt32 nArea ) { - ::extract_value( mnTopLine, nBorder, 0, 3 ); - ::extract_value( mnLeftLine, nBorder, 3, 3 ); - ::extract_value( mnBottomLine, nArea, 22, 3 ); - ::extract_value( mnRightLine, nBorder, 6, 3 ); - ::extract_value( mnTopColor, nBorder, 9, 7 ); - ::extract_value( mnLeftColor, nBorder, 16, 7 ); - ::extract_value( mnBottomColor, nArea, 25, 7 ); - ::extract_value( mnRightColor, nBorder, 23, 7 ); + ::extract_value( rBorder.mnTopLine, nBorder, 0, 3 ); + ::extract_value( rBorder.mnLeftLine, nBorder, 3, 3 ); + ::extract_value( rBorder.mnBottomLine, nArea, 22, 3 ); + ::extract_value( rBorder.mnRightLine, nBorder, 6, 3 ); + ::extract_value( rBorder.mnTopColor, nBorder, 9, 7 ); + ::extract_value( rBorder.mnLeftColor, nBorder, 16, 7 ); + ::extract_value( rBorder.mnBottomColor, nArea, 25, 7 ); + ::extract_value( rBorder.mnRightColor, nBorder, 23, 7 ); } -void XclImpXFBorder::SetBorder8( sal_uInt32 nBorder1, sal_uInt32 nBorder2 ) +void lcl_SetBorder8( XclImpXFBorder& rBorder, sal_uInt32 nBorder1, sal_uInt32 nBorder2 ) { - ::extract_value( mnLeftLine, nBorder1, 0, 4 ); - ::extract_value( mnRightLine, nBorder1, 4, 4 ); - ::extract_value( mnTopLine, nBorder1, 8, 4 ); - ::extract_value( mnBottomLine, nBorder1, 12, 4 ); - ::extract_value( mnLeftColor, nBorder1, 16, 7 ); - ::extract_value( mnRightColor, nBorder1, 23, 7 ); - ::extract_value( mnTopColor, nBorder2, 0, 7 ); - ::extract_value( mnBottomColor, nBorder2, 7, 7 ); + ::extract_value( rBorder.mnLeftLine, nBorder1, 0, 4 ); + ::extract_value( rBorder.mnRightLine, nBorder1, 4, 4 ); + ::extract_value( rBorder.mnTopLine, nBorder1, 8, 4 ); + ::extract_value( rBorder.mnBottomLine, nBorder1, 12, 4 ); + ::extract_value( rBorder.mnLeftColor, nBorder1, 16, 7 ); + ::extract_value( rBorder.mnRightColor, nBorder1, 23, 7 ); + ::extract_value( rBorder.mnTopColor, nBorder2, 0, 7 ); + ::extract_value( rBorder.mnBottomColor, nBorder2, 7, 7 ); } // ---------------------------------------------------------------------------- -/** Contains background colors and pattern. */ -struct XclImpXFArea -{ - sal_uInt16 mnForeColor; /// Index to foreground color. - sal_uInt16 mnBackColor; /// Index to background color. - sal_uInt8 mnPattern; /// Fill pattern. - - void SetArea2( sal_uInt8 nFlags ); - void SetArea34( sal_uInt16 nArea ); - void SetArea5( sal_uInt32 nArea ); - void SetArea8( sal_uInt32 nBorder2, sal_uInt16 nArea ); -}; - -void XclImpXFArea::SetArea2( sal_uInt8 nFlags ) +void lcl_SetArea2( XclImpXFArea& rArea, sal_uInt8 nFlags ) { - mnPattern = EXC_PATT_NONE; - if( nFlags & EXC_XF2_BACKGROUND ) - { - mnPattern = EXC_PATT_12_5_PERC; - mnForeColor = EXC_COLOR_BIFF2_BLACK; - mnBackColor = EXC_COLOR_BIFF2_WHITE; - } + rArea.mnPattern = ::get_flagvalue( nFlags, EXC_XF2_BACKGROUND, EXC_PATT_12_5_PERC, EXC_PATT_NONE ); + rArea.mnForeColor = EXC_COLOR_BIFF2_BLACK; + rArea.mnBackColor = EXC_COLOR_BIFF2_WHITE; } -void XclImpXFArea::SetArea34( sal_uInt16 nArea ) +void lcl_SetArea3( XclImpXFArea& rArea, sal_uInt16 nArea ) { - ::extract_value( mnPattern, nArea, 0, 6 ); - ::extract_value( mnForeColor, nArea, 6, 5 ); - ::extract_value( mnBackColor, nArea, 11, 5 ); + ::extract_value( rArea.mnPattern, nArea, 0, 6 ); + ::extract_value( rArea.mnForeColor, nArea, 6, 5 ); + ::extract_value( rArea.mnBackColor, nArea, 11, 5 ); } -void XclImpXFArea::SetArea5( sal_uInt32 nArea ) +void lcl_SetArea5( XclImpXFArea& rArea, sal_uInt32 nArea ) { - ::extract_value( mnPattern, nArea, 16, 6 ); - ::extract_value( mnForeColor, nArea, 0, 7 ); - ::extract_value( mnBackColor, nArea, 7, 7 ); + ::extract_value( rArea.mnPattern, nArea, 16, 6 ); + ::extract_value( rArea.mnForeColor, nArea, 0, 7 ); + ::extract_value( rArea.mnBackColor, nArea, 7, 7 ); } -void XclImpXFArea::SetArea8( sal_uInt32 nBorder2, sal_uInt16 nArea ) +void lcl_SetArea8( XclImpXFArea& rArea, sal_uInt32 nBorder2, sal_uInt16 nArea ) { - ::extract_value( mnPattern, nBorder2, 26, 6 ); - ::extract_value( mnForeColor, nArea, 0, 7 ); - ::extract_value( mnBackColor, nArea, 7, 7 ); + ::extract_value( rArea.mnPattern, nBorder2, 26, 6 ); + ::extract_value( rArea.mnForeColor, nArea, 0, 7 ); + ::extract_value( rArea.mnBackColor, nArea, 7, 7 ); } @@ -823,22 +782,25 @@ void XclImpXFArea::SetArea8( sal_uInt32 nBorder2, sal_uInt16 nArea ) XclImpXF::XclImpXF( const XclImpRoot& rRoot ) : XclImpRoot( rRoot ), - meHorAlign( xlHAlignParent ), - meVerAlign( xlVAlignParent ), - meWrap( xlTextWrapParent ), - meOrient( xlTextOrientParent ), - meTextDir( xlTextDirParent ), - mnRotation( 0 ), - mnValFormat( 0 ), - mnIndent( 0 ), - mnFont( 0 ), + meHorAlign( xlHAlignGeneral ), + meVerAlign( xlVAlignBottom ), + meOrient( xlTextOrientNoRot ), + meTextDir( xlTextDirContext ), mnParent( 0 ), + mnNumFmt( 0 ), + mnFont( 0 ), + mnIndent( 0 ), + mnRotation( 0 ), mbCellXF( true ), // default is cell XF mbLocked( true ), // default in Excel and Calc mbHidden( false ), - mbFontValid( false ), - mbFmtValid( false ), - mbProtValid( false ) + mbWrapped( false ), + mbProtUsed( false ), + mbFontUsed( false ), + mbFmtUsed( false ), + mbAlignUsed( false ), + mbBorderUsed( false ), + mbAreaUsed( false ) { } @@ -848,136 +810,160 @@ XclImpXF::~XclImpXF() void XclImpXF::ReadXF2( XclImpStream& rStrm ) { - sal_uInt8 nValFmt, nFlags; + sal_uInt8 nNumFmt, nFlags; mnFont = rStrm.ReaduInt8(); rStrm.Ignore( 1 ); - rStrm >> nValFmt >> nFlags; + rStrm >> nNumFmt >> nFlags; - GetBorder().SetBorder2( nFlags ); - GetArea().SetArea2( nFlags ); - mnValFormat = GetNumFmtBuffer().GetFormat( nValFmt & EXC_XF2_VALFMT_MASK ); + lcl_SetBorder2( maBorder, nFlags ); + lcl_SetArea2( maArea, nFlags ); + mnNumFmt = GetNumFmtBuffer().GetFormat( nNumFmt & EXC_XF2_VALFMT_MASK ); ::extract_value( meHorAlign, nFlags, 0, 3 ); - meVerAlign = xlVAlignTop; - meWrap = xlTextWrapNo; - meOrient = xlTextOrientNoRot; - mbLocked = ::get_flag( nValFmt, EXC_XF2_LOCKED ); - mbHidden = ::get_flag( nValFmt, EXC_XF2_HIDDEN ); + mbLocked = ::get_flag( nNumFmt, EXC_XF2_LOCKED ); + mbHidden = ::get_flag( nNumFmt, EXC_XF2_HIDDEN ); - mbFontValid = mbFmtValid = mbProtValid = true; + //! TODO flags + mbProtUsed = mbFontUsed = mbFmtUsed = mbAlignUsed = mbBorderUsed = mbAreaUsed = true; } void XclImpXF::ReadXF3( XclImpStream& rStrm ) { sal_uInt32 nBorder; sal_uInt16 nFlags, nAlign, nArea; - sal_uInt8 nValFmt; + sal_uInt8 nNumFmt; mnFont = rStrm.ReaduInt8(); - rStrm >> nValFmt >> nFlags >> nAlign >> nArea >> nBorder; + rStrm >> nNumFmt >> nFlags >> nAlign >> nArea >> nBorder; mbCellXF = !::get_flag( nFlags, EXC_XF_STYLE ); // new in BIFF3 ::extract_value( mnParent, nAlign, 4, 12 ); // new in BIFF3 - GetBorder().SetBorder34( nBorder ); - GetArea().SetArea34( nArea ); // new in BIFF3 - mnValFormat = GetNumFmtBuffer().GetFormat( nValFmt ); + lcl_SetBorder3( maBorder, nBorder ); + lcl_SetArea3( maArea, nArea ); // new in BIFF3 + mnNumFmt = GetNumFmtBuffer().GetFormat( nNumFmt ); ::extract_value( meHorAlign, nAlign, 0, 3 ); - meVerAlign = xlVAlignTop; - ::extract_value( meWrap, nAlign, 3, 1 ); // new in BIFF3 - meOrient = xlTextOrientNoRot; + mbWrapped = ::get_flag( nAlign, EXC_XF_WRAPPED ); // new in BIFF3 mbLocked = ::get_flag( nFlags, EXC_XF_LOCKED ); mbHidden = ::get_flag( nFlags, EXC_XF_HIDDEN ); - mbFontValid = mbFmtValid = mbProtValid = true; + //! TODO flags + mbProtUsed = mbFontUsed = mbFmtUsed = mbAlignUsed = mbBorderUsed = mbAreaUsed = true; } void XclImpXF::ReadXF4( XclImpStream& rStrm ) { sal_uInt32 nBorder; sal_uInt16 nFlags, nAlign, nArea; - sal_uInt8 nValFmt; + sal_uInt8 nNumFmt; mnFont = rStrm.ReaduInt8(); - rStrm >> nValFmt >> nFlags >> nAlign >> nArea >> nBorder; + rStrm >> nNumFmt >> nFlags >> nAlign >> nArea >> nBorder; mbCellXF = !::get_flag( nFlags, EXC_XF_STYLE ); ::extract_value( mnParent, nFlags, 4, 12 ); - GetBorder().SetBorder34( nBorder ); - GetArea().SetArea34( nArea ); - mnValFormat = GetNumFmtBuffer().GetFormat( nValFmt ); + lcl_SetBorder3( maBorder, nBorder ); + lcl_SetArea3( maArea, nArea ); + mnNumFmt = GetNumFmtBuffer().GetFormat( nNumFmt ); ::extract_value( meHorAlign, nAlign, 0, 3 ); ::extract_value( meVerAlign, nAlign, 4, 2 ); // new in BIFF4 - ::extract_value( meWrap, nAlign, 3, 1 ); + mbWrapped = ::get_flag( nAlign, EXC_XF_WRAPPED ); ::extract_value( meOrient, nAlign, 6, 2 ); // new in BIFF4 mbLocked = ::get_flag( nFlags, EXC_XF_LOCKED ); mbHidden = ::get_flag( nFlags, EXC_XF_HIDDEN ); - mbFontValid = mbFmtValid = mbProtValid = true; + //! TODO flags + mbProtUsed = mbFontUsed = mbFmtUsed = mbAlignUsed = mbBorderUsed = mbAreaUsed = true; } void XclImpXF::ReadXF5( XclImpStream& rStrm ) { sal_uInt32 nArea, nBorder; - sal_uInt16 nValFmt, nFlags, nAlign; - rStrm >> mnFont >> nValFmt >> nFlags >> nAlign >> nArea >> nBorder; + sal_uInt16 nNumFmt, nFlags, nAlign; + rStrm >> mnFont >> nNumFmt >> nFlags >> nAlign >> nArea >> nBorder; mbCellXF = !::get_flag( nFlags, EXC_XF_STYLE ); ::extract_value( mnParent, nFlags, 4, 12 ); - GetBorder().SetBorder5( nBorder, nArea ); - GetArea().SetArea5( nArea ); - mnValFormat = GetNumFmtBuffer().GetFormat( nValFmt ); + lcl_SetBorder5( maBorder, nBorder, nArea ); + lcl_SetArea5( maArea, nArea ); + mnNumFmt = GetNumFmtBuffer().GetFormat( nNumFmt ); ::extract_value( meHorAlign, nAlign, 0, 3 ); ::extract_value( meVerAlign, nAlign, 4, 3 ); - ::extract_value( meWrap, nAlign, 3, 1 ); + mbWrapped = ::get_flag( nAlign, EXC_XF_WRAPPED ); ::extract_value( meOrient, nAlign, 8, 2 ); mbLocked = ::get_flag( nFlags, EXC_XF_LOCKED ); mbHidden = ::get_flag( nFlags, EXC_XF_HIDDEN ); - mbFontValid = mbFmtValid = mbProtValid = true; + //! TODO flags + mbProtUsed = mbFontUsed = mbFmtUsed = mbAlignUsed = mbBorderUsed = mbAreaUsed = true; } void XclImpXF::ReadXF8( XclImpStream& rStrm ) { sal_uInt32 nBorder1, nBorder2; - sal_uInt16 nReadFont, nValFmt, nFlags1, nAlign, nFlags2, nArea; - rStrm >> nReadFont >> nValFmt >> nFlags1 >> nAlign >> nFlags2 >> nBorder1 >> nBorder2 >> nArea; + sal_uInt16 nReadFont, nReadNumFmt, nTypeProt, nAlign, nMiscAttrib, nArea; + rStrm >> nReadFont >> nReadNumFmt >> nTypeProt >> nAlign >> nMiscAttrib >> nBorder1 >> nBorder2 >> nArea; - mbCellXF = !::get_flag( nFlags1, EXC_XF_STYLE ); + mbCellXF = !::get_flag( nTypeProt, EXC_XF_STYLE ); if( mbCellXF ) - ::extract_value( mnParent, nFlags1, 4, 12 ); - // Border - if( mbCellXF || !::get_flag( nFlags2, EXC_XF_DIFF_BORDER ) ) - GetBorder().SetBorder8( nBorder1, nBorder2 ); - // Area - if( mbCellXF || !::get_flag( nFlags2, EXC_XF_DIFF_AREA ) ) - GetArea().SetArea8( nBorder2, nArea ); - // Font - mbFontValid = mbCellXF || !::get_flag( nFlags2, EXC_XF_DIFF_FONT ); - if( mbFontValid ) + ::extract_value( mnParent, nTypeProt, 4, 12 ); + + // Remark about finding the mb***Used flags: + // - In cell XFs a *set* bit means a used attribute. + // - In style XFs a *cleared* bit means a used attribute. + // The mb***Used members always store true, if the attribute is used. + // The "mbCellXF == ::get_flag(...)" construct evaluates to true in + // both mentioned cases: cell XF and set bit; or style XF and cleared bit. + sal_uInt8 nUsedFlags; + ::extract_value( nUsedFlags, nMiscAttrib, 10, 6 ); + + // Remark about using the attributes from the XFs: + // Cell XF flag used (set) -> take from cell XF + // Cell XF flag unused (cleared): + // Parent style XF flag used (cleared) -> take from style XF + // Parent style XF flag unused (set) -> take from cell XF (!) + //! TODO not implemented yet + + // cell border + mbBorderUsed = (mbCellXF == ::get_flag( nUsedFlags, EXC_XF_DIFF_BORDER )); + if( mbCellXF || mbBorderUsed ) //! always in cell XFs until the parent XF is really read + lcl_SetBorder8( maBorder, nBorder1, nBorder2 ); + + // background area + mbAreaUsed = (mbCellXF == ::get_flag( nUsedFlags, EXC_XF_DIFF_AREA )); + if( mbCellXF || mbAreaUsed ) + lcl_SetArea8( maArea, nBorder2, nArea ); + + // font + mbFontUsed = (mbCellXF == ::get_flag( nUsedFlags, EXC_XF_DIFF_FONT )); + if( mbCellXF || mbFontUsed ) mnFont = nReadFont; - // Value format - mbFmtValid = mbCellXF || !::get_flag( nFlags2, EXC_XF_DIFF_VALFMT ); - if( mbFmtValid ) - mnValFormat = GetNumFmtBuffer().GetFormat( nValFmt ); - // Alignment - if( mbCellXF || !::get_flag( nFlags2, EXC_XF_DIFF_ALIGN ) ) + + // number format + mbFmtUsed = (mbCellXF == ::get_flag( nUsedFlags, EXC_XF_DIFF_VALFMT )); + if( mbCellXF || mbFmtUsed ) + mnNumFmt = GetNumFmtBuffer().GetFormat( nReadNumFmt ); + + // alignment + mbAlignUsed = (mbCellXF == ::get_flag( nUsedFlags, EXC_XF_DIFF_ALIGN )); + if( mbCellXF || mbAlignUsed ) { ::extract_value( meHorAlign, nAlign, 0, 3 ); ::extract_value( meVerAlign, nAlign, 4, 3 ); - ::extract_value( meWrap, nAlign, 3, 1 ); - ::extract_value( mnRotation, nAlign, 8, 8 ); // new in BIFF8 - meOrient = (mnRotation == EXC_ROT_STACKED) ? xlTextOrientTopBottom : xlTextOrientRot; - ::extract_value( meTextDir, nFlags2, 6, 2 ); // new in BIFF8X + mbWrapped = ::get_flag( nAlign, EXC_XF_WRAPPED ); + ::extract_value( mnRotation, nAlign, 8, 8 ); // new in BIFF8 + meOrient = (mnRotation == EXC_XF8_STACKED) ? xlTextOrientTopBottom : xlTextOrientRot; + ::extract_value( mnIndent, nMiscAttrib, 0, 4 ); // new in BIFF8 + mnIndent *= 200; + ::extract_value( meTextDir, nMiscAttrib, 6, 2 ); // new in BIFF8X } - // Cell protection - mbProtValid = mbCellXF || !::get_flag( nFlags2, EXC_XF_DIFF_PROT ); - if( mbProtValid ) + + // cell protection + mbProtUsed = (mbCellXF == ::get_flag( nUsedFlags, EXC_XF_DIFF_PROT )); + if( mbCellXF || mbProtUsed ) { - mbLocked = ::get_flag( nFlags1, EXC_XF_LOCKED ); - mbHidden = ::get_flag( nFlags1, EXC_XF_HIDDEN ); + mbLocked = ::get_flag( nTypeProt, EXC_XF_LOCKED ); + mbHidden = ::get_flag( nTypeProt, EXC_XF_HIDDEN ); } - ::extract_value( mnIndent, nFlags2, 0, 4 ); // new in BIFF8 - mnIndent *= 200; } void XclImpXF::ReadXF( XclImpStream& rStrm ) @@ -994,7 +980,7 @@ void XclImpXF::ReadXF( XclImpStream& rStrm ) } } -const ScPatternAttr& XclImpXF::GetPattern() +const ScPatternAttr& XclImpXF::GetPattern() const { if( mpPattern.get() ) return *mpPattern; @@ -1003,87 +989,71 @@ const ScPatternAttr& XclImpXF::GetPattern() mpPattern.reset( new ScPatternAttr( GetDoc().GetPool() ) ); SfxItemSet& rItemSet = mpPattern->GetItemSet(); - // value format - if( mbCellXF || mbFmtValid ) - { - rItemSet.Put( SfxUInt32Item( ATTR_VALUE_FORMAT, static_cast< sal_uInt32 >( mnValFormat ) ) ); - ScGlobal::AddLanguage( rItemSet, GetFormatter() ); - } + // locked/hidden + if( mbCellXF || mbProtUsed ) + rItemSet.Put( ScProtectionAttr( mbLocked, mbHidden ) ); // font - if( mbCellXF || mbFontValid ) + if( mbCellXF || mbFontUsed ) GetFontBuffer().FillToItemSet( mnFont, rItemSet, xlFontScIDs ); - // locked/hidden - if( mbCellXF || mbProtValid ) - rItemSet.Put( ScProtectionAttr( mbLocked, mbHidden ) ); + // value format + if( mbCellXF || mbFmtUsed ) + { + rItemSet.Put( SfxUInt32Item( ATTR_VALUE_FORMAT, static_cast< sal_uInt32 >( mnNumFmt ) ) ); + ScGlobal::AddLanguage( rItemSet, GetFormatter() ); + } // border - if( mpBorder.get() ) - SetBorder( rItemSet, GetPalette(), - mpBorder->mnLeftLine, mpBorder->mnLeftColor, - mpBorder->mnRightLine, mpBorder->mnRightColor, - mpBorder->mnTopLine, mpBorder->mnTopColor, - mpBorder->mnBottomLine, mpBorder->mnBottomColor ); + if( mbCellXF || mbBorderUsed ) + SetBorder( rItemSet, GetPalette(), maBorder ); // area - if( mpArea.get() ) - SetArea( rItemSet, GetPalette(), mpArea->mnPattern, mpArea->mnForeColor, mpArea->mnBackColor ); + if( mbCellXF || mbAreaUsed ) + SetArea( rItemSet, GetPalette(), maArea ); - // horizontal alignment - if( mbCellXF || (meHorAlign != xlHAlignParent) ) + // alignment + if( mbCellXF || mbAlignUsed ) { + // horizontal alignment SvxCellHorJustify eHorJust = SVX_HOR_JUSTIFY_STANDARD; switch( meHorAlign ) { - case xlHAlignParent: case xlHAlignGeneral: eHorJust = SVX_HOR_JUSTIFY_STANDARD; break; case xlHAlignLeft: eHorJust = SVX_HOR_JUSTIFY_LEFT; break; case xlHAlignCenterAcrSel: case xlHAlignCenter: eHorJust = SVX_HOR_JUSTIFY_CENTER; break; case xlHAlignRight: eHorJust = SVX_HOR_JUSTIFY_RIGHT; break; case xlHAlignFill: eHorJust = SVX_HOR_JUSTIFY_REPEAT; break; - case xlHAlignJustify: eHorJust = SVX_HOR_JUSTIFY_BLOCK; break; - default: - DBG_ERRORFILE( "XclImpXF::GetPattern - unknown horizontal adjustment" ); + case xlHAlignJustify: + case xlHAlignDistrib: eHorJust = SVX_HOR_JUSTIFY_BLOCK; break; + default: DBG_ERRORFILE( "XclImpXF::GetPattern - unknown horizontal adjustment" ); } rItemSet.Put( SvxHorJustifyItem( eHorJust ) ); - } - // text wrap - if( mbCellXF || (meWrap != xlTextWrapParent) ) - { + // text wrap SfxBoolItem aWrap( ATTR_LINEBREAK ); - aWrap.SetValue( meWrap == xlTextWrapYes ); + aWrap.SetValue( mbWrapped ); rItemSet.Put( aWrap ); - } - // vertical alignment - if( mbCellXF || (meVerAlign != xlVAlignParent) ) - { + // vertical alignment SvxCellVerJustify eVertJust = SVX_VER_JUSTIFY_STANDARD; switch( meVerAlign ) { - case xlVAlignParent: case xlVAlignTop: eVertJust = SVX_VER_JUSTIFY_TOP; break; case xlVAlignCenter: eVertJust = SVX_VER_JUSTIFY_CENTER; break; case xlVAlignBottom: eVertJust = SVX_VER_JUSTIFY_BOTTOM; break; case xlVAlignJustify: case xlVAlignDistrib: eVertJust = SVX_VER_JUSTIFY_TOP; break; - default: - DBG_ERRORFILE( "XclImpXF::GetPattern - unknown vertical adjustment" ); + default: DBG_ERRORFILE( "XclImpXF::GetPattern - unknown vertical adjustment" ); } rItemSet.Put( SvxVerJustifyItem( eVertJust ) ); - } - // indent - if( mnIndent > 0 ) + // indent rItemSet.Put( SfxUInt16Item( ATTR_INDENT, mnIndent ) ); - // text orientation - if( mbCellXF || (meOrient != xlTextOrientParent) ) - { - if( (meOrient == xlTextOrientRot) && (mnRotation != EXC_ROT_STACKED) ) + // text orientation + if( (meOrient == xlTextOrientRot) && (mnRotation != EXC_XF8_STACKED) ) { // set an angle in the range from -90 to 90 degrees DBG_ASSERT( mnRotation <= 180, "XclImpXF::GetPattern - illegal rotation angle" ); @@ -1101,33 +1071,27 @@ const ScPatternAttr& XclImpXF::GetPattern() SvxCellOrientation eSvxOrient = SVX_ORIENTATION_STANDARD; switch( meOrient ) { - case xlTextOrientParent: case xlTextOrientNoRot: eSvxOrient = SVX_ORIENTATION_STANDARD; break; case xlTextOrientRot: - DBG_ASSERT( mnRotation == EXC_ROT_STACKED, + DBG_ASSERT( mnRotation == EXC_XF8_STACKED, "XclImpXF::GetPattern - stacked expected (0xFF)" ); + // run through case xlTextOrientTopBottom: eSvxOrient = SVX_ORIENTATION_STACKED; break; case xlTextOrient90ccw: eSvxOrient = SVX_ORIENTATION_BOTTOMTOP; break; case xlTextOrient90cw: eSvxOrient = SVX_ORIENTATION_TOPBOTTOM; break; - default: - DBG_ERRORFILE( "XclImpXF::GetPattern - unknown text orientation" ); + default: DBG_ERRORFILE( "XclImpXF::GetPattern - unknown text orientation" ); } rItemSet.Put( SvxOrientationItem( eSvxOrient ) ); } - } - // CTL text direction - if( mbCellXF || (meTextDir != xlTextDirParent) ) - { + // CTL text direction SvxFrameDirection eFrameDir = FRMDIR_ENVIRONMENT; switch( meTextDir ) { - case xlTextDirParent: case xlTextDirContext: eFrameDir = FRMDIR_ENVIRONMENT; break; case xlTextDirLTR: eFrameDir = FRMDIR_HORI_LEFT_TOP; break; case xlTextDirRTL: eFrameDir = FRMDIR_HORI_RIGHT_TOP; break; - default: - DBG_ERRORFILE( "XclImpXF::GetPattern - unknown CTL text direction" ); + default: DBG_ERRORFILE( "XclImpXF::GetPattern - unknown CTL text direction" ); } rItemSet.Put( SvxFrameDirectionItem( eFrameDir, ATTR_WRITINGDIR ) ); } @@ -1135,26 +1099,12 @@ const ScPatternAttr& XclImpXF::GetPattern() return *mpPattern; } -XclImpXFBorder& XclImpXF::GetBorder() +SvxBorderLine* XclImpXF::CreateBorderLine( const XclImpPalette& rPalette, sal_uInt8 nXclLine, sal_uInt16 nXclColor ) { - if( !mpBorder.get() ) - mpBorder.reset( new XclImpXFBorder ); - return *mpBorder; -} - -XclImpXFArea& XclImpXF::GetArea() -{ - if( !mpArea.get() ) - mpArea.reset( new XclImpXFArea ); - return *mpArea; -} - -SvxBorderLine* XclImpXF::CreateBorderItem( const XclImpPalette& rPalette, sal_uInt8 nXclLine, sal_uInt16 nXclColor ) -{ - if( !nXclLine ) + if( nXclLine == EXC_LINE_NONE ) return NULL; - static const sal_uInt16 ppLineParam[][ 3 ] = + static const sal_uInt16 ppnLineParam[][ 3 ] = { // outer width, inner width, distance { 0, 0, 0 }, // 0 = none @@ -1173,44 +1123,37 @@ SvxBorderLine* XclImpXF::CreateBorderItem( const XclImpPalette& rPalette, sal_uI { DEF_LINE_WIDTH_2, 0, 0 } // D = med slant dashdot }; - if( nXclLine >= STATIC_TABLE_SIZE( ppLineParam ) ) - nXclLine = 1; + if( nXclLine >= STATIC_TABLE_SIZE( ppnLineParam ) ) + nXclLine = EXC_LINE_THIN; SvxBorderLine* pItem = new SvxBorderLine; pItem->SetColor( rPalette.GetColor( nXclColor, COL_BLACK ) ); - pItem->SetOutWidth( ppLineParam[ nXclLine ][ 0 ] ); - pItem->SetInWidth( ppLineParam[ nXclLine ][ 1 ] ); - pItem->SetDistance( ppLineParam[ nXclLine ][ 2 ] ); + pItem->SetOutWidth( ppnLineParam[ nXclLine ][ 0 ] ); + pItem->SetInWidth( ppnLineParam[ nXclLine ][ 1 ] ); + pItem->SetDistance( ppnLineParam[ nXclLine ][ 2 ] ); return pItem; } -void XclImpXF::SetBorder( - SfxItemSet& rItemSet, const XclImpPalette& rPalette, - sal_uInt8 nXclLeftLine, sal_uInt16 nXclLeftColor, - sal_uInt8 nXclRightLine, sal_uInt16 nXclRightColor, - sal_uInt8 nXclTopLine, sal_uInt16 nXclTopColor, - sal_uInt8 nXclBottomLine, sal_uInt16 nXclBottomColor ) +void XclImpXF::SetBorder( SfxItemSet& rItemSet, const XclImpPalette& rPalette, const XclImpXFBorder& rBorder ) { SvxBoxItem aBox( ATTR_BORDER ); - ::std::auto_ptr< SvxBorderLine > pLineItem; - pLineItem.reset( CreateBorderItem( rPalette, nXclLeftLine, nXclLeftColor ) ); - aBox.SetLine( pLineItem.get(), BOX_LINE_LEFT ); - pLineItem.reset( CreateBorderItem( rPalette, nXclRightLine, nXclRightColor ) ); - aBox.SetLine( pLineItem.get(), BOX_LINE_RIGHT ); - pLineItem.reset( CreateBorderItem( rPalette, nXclTopLine, nXclTopColor ) ); - aBox.SetLine( pLineItem.get(), BOX_LINE_TOP ); - pLineItem.reset( CreateBorderItem( rPalette, nXclBottomLine, nXclBottomColor ) ); - aBox.SetLine( pLineItem.get(), BOX_LINE_BOTTOM ); + ::std::auto_ptr< SvxBorderLine > pLine; + pLine.reset( CreateBorderLine( rPalette, rBorder.mnLeftLine, rBorder.mnLeftColor ) ); + aBox.SetLine( pLine.get(), BOX_LINE_LEFT ); + pLine.reset( CreateBorderLine( rPalette, rBorder.mnRightLine, rBorder.mnRightColor ) ); + aBox.SetLine( pLine.get(), BOX_LINE_RIGHT ); + pLine.reset( CreateBorderLine( rPalette, rBorder.mnTopLine, rBorder.mnTopColor ) ); + aBox.SetLine( pLine.get(), BOX_LINE_TOP ); + pLine.reset( CreateBorderLine( rPalette, rBorder.mnBottomLine, rBorder.mnBottomColor ) ); + aBox.SetLine( pLine.get(), BOX_LINE_BOTTOM ); rItemSet.Put( aBox ); } -void XclImpXF::SetArea( - SfxItemSet& rItemSet, const XclImpPalette& rPalette, - sal_uInt8 nXclPattern, sal_uInt16 nXclForeColor, sal_uInt16 nXclBackColor ) +void XclImpXF::SetArea( SfxItemSet& rItemSet, const XclImpPalette& rPalette, const XclImpXFArea& rArea ) { - static const sal_uInt16 pRatioTable[] = + static const sal_uInt16 pnRatioTable[] = { // 0x8000 = 100% 0x8000, 0x0000, 0x4000, 0x2000, // 00 - 03 0x6000, 0x4000, 0x4000, 0x4000, // 04 - 07 @@ -1220,23 +1163,20 @@ void XclImpXF::SetArea( }; // no background -> set nothing! - if( nXclPattern != EXC_PATT_NONE ) + if( rArea.mnPattern != EXC_PATT_NONE ) { - Color aFore( rPalette.GetColor( nXclForeColor, COL_WHITE ) ); - if( nXclForeColor == 64 ) + Color aFore( rPalette.GetColor( rArea.mnForeColor, COL_WHITE ) ); + if( rArea.mnForeColor == 64 ) aFore.SetColor( COL_BLACK ); - Color aBack( rPalette.GetColor( nXclBackColor, COL_WHITE ) ); - if( nXclBackColor == 64 ) + Color aBack( rPalette.GetColor( rArea.mnBackColor, COL_WHITE ) ); + if( rArea.mnBackColor == 64 ) aBack.SetColor( COL_BLACK ); - if( nXclPattern < STATIC_TABLE_SIZE( pRatioTable ) ) - { - sal_uInt16 nRatio = pRatioTable[ nXclPattern ]; - rItemSet.Put( SvxBrushItem( ScfTools::GetMixedColor( aFore, aBack, nRatio ) ) ); - } - else - rItemSet.Put( SvxBrushItem( aFore ) ); + if( rArea.mnPattern < STATIC_TABLE_SIZE( pnRatioTable ) ) + aFore = ScfTools::GetMixedColor( aFore, aBack, pnRatioTable[ rArea.mnPattern ] ); + + rItemSet.Put( SvxBrushItem( aFore ) ); } } @@ -1251,7 +1191,7 @@ XclImpXFBuffer::XclImpXFBuffer( const XclImpRoot& rRoot ) : void XclImpXFBuffer::ReadXF( XclImpStream& rStrm ) { - XclImpXF* pXF = new XclImpXF( *this ); + XclImpXF* pXF = new XclImpXF( GetRoot() ); pXF->ReadXF( rStrm ); maXFList.Append( pXF ); } @@ -1285,7 +1225,7 @@ void XclImpXFBuffer::ReadStyle( XclImpStream& rStrm ) } } -const ScPatternAttr& XclImpXFBuffer::GetPattern( sal_uInt32 nXFIndex ) +const ScPatternAttr& XclImpXFBuffer::GetPattern( sal_uInt32 nXFIndex ) const { XclImpXF* pXF = maXFList.GetObject( nXFIndex ); DBG_ASSERT( pXF || (GetBiff() == xlBiff2), "XclImpXFBuffer::GetPattern - XF not found" ); diff --git a/sc/source/filter/excel/xlocx.cxx b/sc/source/filter/excel/xlocx.cxx new file mode 100644 index 000000000000..77155a00028b --- /dev/null +++ b/sc/source/filter/excel/xlocx.cxx @@ -0,0 +1,286 @@ +/************************************************************************* + * + * $RCSfile: xlocx.cxx,v $ + * + * $Revision: 1.2 $ + * + * last change: $Author: hr $ $Date: 2003-03-26 18:04:37 $ + * + * The Contents of this file are made available subject to the terms of + * either of the following licenses + * + * - GNU Lesser General Public License Version 2.1 + * - Sun Industry Standards Source License Version 1.1 + * + * Sun Microsystems Inc., October, 2000 + * + * GNU Lesser General Public License Version 2.1 + * ============================================= + * Copyright 2000 by Sun Microsystems, Inc. + * 901 San Antonio Road, Palo Alto, CA 94303, USA + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License version 2.1, as published by the Free Software Foundation. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place, Suite 330, Boston, + * MA 02111-1307 USA + * + * + * Sun Industry Standards Source License Version 1.1 + * ================================================= + * The contents of this file are subject to the Sun Industry Standards + * Source License Version 1.1 (the "License"); You may not use this file + * except in compliance with the License. You may obtain a copy of the + * License at http://www.openoffice.org/license.html. + * + * Software provided under this License is provided on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, + * WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS, + * MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING. + * See the License for the specific provisions governing your rights and + * obligations concerning the Software. + * + * The Initial Developer of the Original Code is: Sun Microsystems, Inc. + * + * Copyright: 2000 by Sun Microsystems, Inc. + * + * All Rights Reserved. + * + * Contributor(s): _______________________________________ + * + * + ************************************************************************/ + +#ifdef PCH +#include "filt_pch.hxx" +#endif +#pragma hdrstop + +// ============================================================================ + +#ifndef SC_XLOCX_HXX +#include "xlocx.hxx" +#endif + +#ifndef _COM_SUN_STAR_LANG_XCOMPONENT_HPP_ +#include +#endif +#ifndef _COM_SUN_STAR_LANG_XMULTISERVICEFACTORY_HPP_ +#include +#endif +#ifndef _COM_SUN_STAR_CONTAINER_XINDEXCONTAINER_HPP_ +#include +#endif +#ifndef _COM_SUN_STAR_DRAWING_XDRAWPAGE_HPP_ +#include +#endif +#ifndef _COM_SUN_STAR_DRAWING_XCONTROLSHAPE_HPP_ +#include +#endif +#ifndef _COM_SUN_STAR_FORM_XFORMCOMPONENT_HPP_ +#include +#endif + +#ifndef _SVDPAGE_HXX +#include +#endif +#ifndef _SVX_UNOAPI_HXX_ +#include +#endif + +#ifndef SC_DOCUMENT_HXX +#include "document.hxx" +#endif +#ifndef SC_DRWLAYER_HXX +#include "drwlayer.hxx" +#endif + +#include "XclImpObjects.hxx" +#include "xcl97rec.hxx" + + +using ::com::sun::star::uno::Reference; +using ::com::sun::star::uno::Any; +using ::com::sun::star::uno::XInterface; +using ::com::sun::star::uno::UNO_QUERY; +using ::com::sun::star::container::XIndexContainer; +using ::com::sun::star::lang::XMultiServiceFactory; +using ::com::sun::star::awt::XControlModel; +using ::com::sun::star::form::XFormComponent; +using ::com::sun::star::drawing::XDrawPage; +using ::com::sun::star::drawing::XShape; +using ::com::sun::star::drawing::XControlShape; + + +#define EXC_STREAMNAME_CTLS String( RTL_CONSTASCII_USTRINGPARAM( "Ctls" ) ) + + +// OCX controls =============================================================== + +XclOcxConverter::XclOcxConverter( const XclRoot& rRoot ) : + SvxMSConvertOCXControls( rRoot.GetDocShell(), NULL ), + XclRoot( rRoot ), + mnCurrTab( 0 ), + mnCachedTab( 0 ) +{ +} + +XclOcxConverter::~XclOcxConverter() +{ +} + +void XclOcxConverter::SetCurrTab( sal_uInt16 nTab ) +{ + mnCurrTab = nTab; +} + +const Reference< XDrawPage >& XclOcxConverter::GetDrawPage() +{ + // find and cache draw page if uninitialized or sheet index has been changed + if( !xDrawPage.is() || (mnCachedTab != mnCurrTab) ) + { + if( ScDrawLayer* pDrawLayer = GetDoc().GetDrawLayer() ) + { + // mnCurrTab set in ReadControl() contains sheet index of current control + if( SdrPage* pPage = pDrawLayer->GetPage( mnCurrTab ) ) + { + xDrawPage = Reference< XDrawPage >( pPage->getUnoPage(), UNO_QUERY ); + mnCachedTab = mnCurrTab; + } + } + } + + return xDrawPage; +} + + +// ---------------------------------------------------------------------------- + +XclImpOcxConverter::XclImpOcxConverter( const XclRoot& rRoot ) : + XclOcxConverter( rRoot ) +{ + mxStrm = ScfTools::OpenStorageStreamRead( GetRootStorage(), EXC_STREAMNAME_CTLS ); +} + +void XclImpOcxConverter::ReadControl( XclImpEscherOle& rObj ) +{ + DBG_ASSERT( rObj.GetObjType() == otCtrl, "XclOcxConverter::ReadControl - no control object" ); + if( mxStrm.Is() && (rObj.GetObjType() == otCtrl) ) + { + // virtual call of GetDrawPage() needs current sheet index + SetCurrTab( rObj.GetTab() ); + + // stream position of the extra data for this control + sal_uInt32 nStrmPos = rObj.GetCtrlStreamPos(); + mxStrm->Seek( nStrmPos ); + + // the shape to fill + Reference< XShape > xShape = ::GetXShapeForSdrObject( const_cast< SdrObject* >( rObj.GetSdrObj() ) ); + + // reads from mxStrm into xShape, inserts the control into the document + if( ReadOCXExcelKludgeStream( mxStrm, &xShape, TRUE ) ) + { + if( SdrObject* pSdrObj = ::GetSdrObjectFromXShape( xShape ) ) + rObj.SetSdrObj( pSdrObj ); + } + } +} + +sal_Bool XclImpOcxConverter::InsertControl( + const Reference< XFormComponent >& rxFormComp, + const ::com::sun::star::awt::Size& rSize, + Reference< XShape >* pxShape, + BOOL bFloatingCtrl ) +{ + sal_Bool bRet = sal_False; + XShapeRef xShape; + + const Reference< XIndexContainer >& rxFormCompsIC = GetFormComps(); + const Reference< XMultiServiceFactory >& rxServiceFactory = GetServiceFactory(); + if( rxFormCompsIC.is() && rxServiceFactory.is() ) + { + Any aFormCompAny; + aFormCompAny <<= rxFormComp; + rxFormCompsIC->insertByIndex( rxFormCompsIC->getCount(), aFormCompAny ); + + // create the control shape + Reference< XInterface > xCreate = rxServiceFactory->createInstance( + String( RTL_CONSTASCII_STRINGPARAM( "com.sun.star.drawing.ControlShape" ) ) ); + xShape = Reference< XShape >( xCreate, UNO_QUERY ); + if( xShape.is() ) + { + xShape->setSize( rSize ); + // set control model at the shape + Reference< XControlShape > xControlShape( xShape, UNO_QUERY ); + Reference< XControlModel > xControlModel( rxFormComp, UNO_QUERY ); + if( xControlShape.is() && xControlModel.is() ) + { + xControlShape->setControl( xControlModel ); + if( pxShape ) + *pxShape = xShape; + bRet = sal_True; + } + } + } + + return bRet; +} + + +// ---------------------------------------------------------------------------- + +#if EXC_INCL_EXP_OCX + +XclExpOcxConverter::XclExpOcxConverter( const XclRoot& rRoot ) : + XclOcxConverter( rRoot ) +{ +} + +XclExpObjControl* XclExpOcxConverter::CreateObjRec( const Reference< XShape >& rxShape ) +{ + XclExpObjControl* pObjRec = NULL; + + // the shape to export + const SdrObject* pSdrObj = ::GetSdrObjectFromXShape( rxShape ); + Reference< XControlShape > xControlShape( rxShape, UNO_QUERY ); + + if( pSdrObj && xControlShape.is() ) + { + // the control model + Reference< XControlModel > xControlModel = xControlShape->getControl(); + if( xControlModel.is() ) + { + // output stream + if( !mxStrm.Is() ) + mxStrm = ScfTools::OpenStorageStreamWrite( GetRootStorage(), EXC_STREAMNAME_CTLS ); + if( mxStrm.Is() ) + { + String aClassName; + sal_uInt32 nStrmStart = mxStrm->Tell(); + + // writes from xControlModel into mxStrm, raw class name returned in aClassName + if( WriteOCXExcelKludgeStream( mxStrm, xControlModel, rxShape->getSize(), aClassName ) ) + { + sal_uInt32 nStrmSize = mxStrm->Tell() - nStrmStart; + // adjust the class name to "Forms.***.1" + aClassName.InsertAscii( "Forms.", 0 ).AppendAscii( ".1" ); + pObjRec = new XclExpObjControl( *this, rxShape, aClassName, nStrmStart, nStrmSize ); + } + } + } + } + return pObjRec; +} + +#endif + +// ============================================================================ + diff --git a/sc/source/filter/excel/xlroot.cxx b/sc/source/filter/excel/xlroot.cxx index 3a3a998c3bf8..fcf67866f763 100644 --- a/sc/source/filter/excel/xlroot.cxx +++ b/sc/source/filter/excel/xlroot.cxx @@ -2,9 +2,9 @@ * * $RCSfile: xlroot.cxx,v $ * - * $Revision: 1.1 $ + * $Revision: 1.2 $ * - * last change: $Author: dr $ $Date: 2002-11-21 12:12:53 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:38 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -111,14 +111,21 @@ XclRootData::XclRootData( XclBiff eBiff, ScDocument& rDocument, const String& rB meLang( ScGlobal::eLnge ), maScMaxPos( MAXCOL, MAXROW, MAXTAB ), maXclMaxPos( EXC_MAXCOL_BIFF2, EXC_MAXROW_BIFF2, EXC_MAXTAB_BIFF2 ), + mnCharWidth( 110 ), mnScTab( 0 ), mbTruncated( false ), mpRDP( new RootData )//! { +#ifdef DBG_UTIL + mnObjCnt = 0; +#endif } XclRootData::~XclRootData() { +#ifdef DBG_UTIL + DBG_ASSERT( mnObjCnt == 0, "XclRootData::~XclRootData - wrong object count" ); +#endif } @@ -128,20 +135,30 @@ XclRoot::XclRoot( XclRootData& rRootData ) : mrData( rRootData ), mpRD( rRootData.mpRDP.get() )//! { +#ifdef DBG_UTIL + ++mrData.mnObjCnt; +#endif } XclRoot::XclRoot( const XclRoot& rRoot ) : mrData( rRoot.mrData ), mpRD( rRoot.mpRD )//! { +#ifdef DBG_UTIL + ++mrData.mnObjCnt; +#endif } XclRoot::~XclRoot() { +#ifdef DBG_UTIL + --mrData.mnObjCnt; +#endif } XclRoot& XclRoot::operator=( const XclRoot& rRoot ) { + // allowed for assignment in derived classes - but test if the same root data is used DBG_ASSERT( &mrData == &rRoot.mrData, "XclRoot::operator= - incompatible root data" ); return *this; } @@ -187,6 +204,11 @@ ScRangeName& XclRoot::GetNamedRanges() const return *GetDoc().GetRangeName(); } +SvStorage* XclRoot::GetRootStorage() const +{ + return mpRD->pRootStorage; +} + ScEditEngineDefaulter& XclRoot::GetEditEngine() const { if( !mrData.mpEditEngine.get() ) diff --git a/sc/source/filter/excel/xlstyle.cxx b/sc/source/filter/excel/xlstyle.cxx index 150f52a5461d..ab1a70419d0c 100644 --- a/sc/source/filter/excel/xlstyle.cxx +++ b/sc/source/filter/excel/xlstyle.cxx @@ -2,9 +2,9 @@ * * $RCSfile: xlstyle.cxx,v $ * - * $Revision: 1.1 $ + * $Revision: 1.2 $ * - * last change: $Author: dr $ $Date: 2002-11-21 12:12:53 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:38 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -116,10 +116,10 @@ XclDefaultPalette::XclDefaultPalette( XclBiff eBiff ) : mnIndexOffset( 0 ) { if( eBiff != xlBiffUnknown ) - SetBiff( eBiff ); + SetDefaultColors( eBiff ); } -void XclDefaultPalette::SetBiff( XclBiff eBiff ) +void XclDefaultPalette::SetDefaultColors( XclBiff eBiff ) { switch( eBiff ) { diff --git a/sc/source/filter/excel/xltools.cxx b/sc/source/filter/excel/xltools.cxx index 127c56376228..6183b5376e83 100644 --- a/sc/source/filter/excel/xltools.cxx +++ b/sc/source/filter/excel/xltools.cxx @@ -2,9 +2,9 @@ * * $RCSfile: xltools.cxx,v $ * - * $Revision: 1.2 $ + * $Revision: 1.3 $ * - * last change: $Author: dr $ $Date: 2002-12-06 16:39:27 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:38 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -82,10 +82,6 @@ #include #endif -#ifndef _COM_SUN_STAR_UNO_REFERENCE_HXX_ -#include -#endif - #ifndef SC_DOCUMENT_HXX #include "document.hxx" #endif @@ -110,13 +106,6 @@ #endif -namespace com { namespace sun { namespace star { namespace frame { class XModel; } } } } - - -using ::com::sun::star::uno::Reference; -using ::com::sun::star::frame::XModel; - - // GUID import/export ========================================================= XclGuid::XclGuid() @@ -124,16 +113,12 @@ XclGuid::XclGuid() memset( mpData, 0, 16 ); } -XclGuid::XclGuid( const XclGuid& rSrc ) -{ - operator=( rSrc ); -} - XclGuid::XclGuid( sal_uInt32 nData1, sal_uInt16 nData2, sal_uInt16 nData3, sal_uInt8 nData41, sal_uInt8 nData42, sal_uInt8 nData43, sal_uInt8 nData44, sal_uInt8 nData45, sal_uInt8 nData46, sal_uInt8 nData47, sal_uInt8 nData48 ) { + // convert to little endian -> makes streaming easy LongToSVBT32( nData1, mpData ); ShortToSVBT16( nData2, mpData + 4 ); ShortToSVBT16( nData3, mpData + 6 ); @@ -147,12 +132,6 @@ XclGuid::XclGuid( mpData[ 15 ] = nData48; } -XclGuid& XclGuid::operator=( const XclGuid& rSrc ) -{ - memcpy( mpData, rSrc.mpData, 16 ); - return *this; -} - bool operator==( const XclGuid& rCmp1, const XclGuid& rCmp2 ) { return memcmp( rCmp1.mpData, rCmp2.mpData, 16 ) == 0; @@ -160,13 +139,13 @@ bool operator==( const XclGuid& rCmp1, const XclGuid& rCmp2 ) XclImpStream& operator>>( XclImpStream& rStrm, XclGuid& rGuid ) { - rStrm.Read( rGuid.mpData, 16 ); + rStrm.Read( rGuid.mpData, 16 ); // mpData always in little endian return rStrm; } XclExpStream& operator<<( XclExpStream& rStrm, const XclGuid& rGuid ) { - rStrm.Write( rGuid.mpData, 16 ); + rStrm.Write( rGuid.mpData, 16 ); // mpData already in little endian return rStrm; } @@ -238,24 +217,24 @@ bool XclTools::GetRKFromDouble( sal_Int32& rnRKValue, double fValue ) } -sal_Int32 XclTools::GetScRotation( sal_uInt16 nExcRot ) +sal_Int32 XclTools::GetScRotation( sal_uInt16 nXclRot ) { - if( nExcRot > 180 ) + if( nXclRot > 180 ) return 27000; - return static_cast< sal_Int32 >( 100 * ((nExcRot > 90) ? 450 - nExcRot : nExcRot) ); + return static_cast< sal_Int32 >( 100 * ((nXclRot > 90) ? 450 - nXclRot : nXclRot) ); } -sal_uInt16 XclTools::GetExcRotation( sal_Int32 nScRot ) +sal_uInt8 XclTools::GetXclRotation( sal_Int32 nScRot ) { - sal_Int32 nExcRot = nScRot / 100; - if( (0 <= nExcRot) && (nExcRot <= 90) ) - return static_cast< sal_uInt16 >( nExcRot ); - if( nExcRot < 180 ) - return static_cast< sal_uInt16 >( 270 - nExcRot ); - if( nExcRot < 270 ) - return static_cast< sal_uInt16 >( nExcRot - 180 ); - if( nExcRot < 360 ) - return static_cast< sal_uInt16 >( 450 - nExcRot ); + sal_Int32 nXclRot = nScRot / 100; + if( (0 <= nXclRot) && (nXclRot <= 90) ) + return static_cast< sal_uInt8 >( nXclRot ); + if( nXclRot < 180 ) + return static_cast< sal_uInt8 >( 270 - nXclRot ); + if( nXclRot < 270 ) + return static_cast< sal_uInt8 >( nXclRot - 180 ); + if( nXclRot < 360 ) + return static_cast< sal_uInt8 >( 450 - nXclRot ); return 0; } @@ -316,6 +295,19 @@ double XclTools::GetInchFromTwips( sal_uInt16 nTwips ) } +sal_uInt16 XclTools::GetScColumnWidth( sal_uInt16 nXclWidth, long nScCharWidth ) +{ + double fScWidth = static_cast< double >( nXclWidth ) / 256.0 * nScCharWidth + 0.5; + return static_cast< sal_uInt16 >( ::std::min( fScWidth, 65535.0 ) ); +} + +sal_uInt16 XclTools::GetXclColumnWidth( sal_uInt16 nScWidth, long nScCharWidth ) +{ + double fXclWidth = static_cast< double >( nScWidth ) * 256.0 / nScCharWidth + 0.5; + return static_cast< sal_uInt16 >( ::std::min( fXclWidth, 65535.0 ) ); +} + + // built-in names ------------------------------------------------------------- static const sal_Char* ppNames[] = @@ -422,7 +414,7 @@ bool XclTools::GetScLanguage( LanguageType& reScLang, sal_uInt16 nXclCountry ) { const XclLanguageEntry* pLast = pLanguages + STATIC_TABLE_SIZE( pLanguages ); const XclLanguageEntry* pResult = ::std::lower_bound( pLanguages, pLast, nXclCountry, XclLanguageEntrySWO() ); - if( pResult != pLast ) + if( (pResult != pLast) && (pResult->mnXclCountry == nXclCountry) ) { reScLang = pResult->meLanguage; return true; diff --git a/sc/source/filter/ftools/fapihelper.cxx b/sc/source/filter/ftools/fapihelper.cxx index 66f30846266c..560d29d700cd 100644 --- a/sc/source/filter/ftools/fapihelper.cxx +++ b/sc/source/filter/ftools/fapihelper.cxx @@ -2,9 +2,9 @@ * * $RCSfile: fapihelper.cxx,v $ * - * $Revision: 1.1 $ + * $Revision: 1.2 $ * - * last change: $Author: dr $ $Date: 2002-11-21 12:09:09 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:50 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -105,8 +105,10 @@ bool getPropAny( Any& rAny, const Reference< XPropertySet >& rxProp, const OUStr { Reference< XPropertySetInfo > xInfo = rxProp->getPropertySetInfo(); if( xInfo.is() && xInfo->hasPropertyByName( rName ) ) + { rAny = rxProp->getPropertyValue( rName ); - bSuccess = true; + bSuccess = true; + } } catch( Exception& ) { diff --git a/sc/source/filter/ftools/fprogressbar.cxx b/sc/source/filter/ftools/fprogressbar.cxx index 4f9ccda49500..4aea61460bad 100644 --- a/sc/source/filter/ftools/fprogressbar.cxx +++ b/sc/source/filter/ftools/fprogressbar.cxx @@ -2,9 +2,9 @@ * * $RCSfile: fprogressbar.cxx,v $ * - * $Revision: 1.1 $ + * $Revision: 1.2 $ * - * last change: $Author: dr $ $Date: 2002-11-21 12:09:09 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:50 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -79,6 +79,11 @@ #endif +// ============================================================================ + +const sal_Int32 SCF_INVALID_SEG = -1; + + // ============================================================================ ScfProgressBar::ScfProgressSegment::ScfProgressSegment( sal_uInt32 nSize ) : @@ -95,40 +100,41 @@ ScfProgressBar::ScfProgressSegment::~ScfProgressSegment() // ============================================================================ -ScfProgressBar::ScfProgressBar( const String& rText ) : - maText( rText ), - mpSysProgress( NULL ), - mpParentProgress( NULL ), - mpParentSegment( NULL ), - mpCurrSegment( NULL ), - mnTotalSize( 0 ), - mnTotalPos( 0 ), - mnUnitSize( 0 ), - mnNextUnitPos( 0 ), - mbInProgress( false ) +ScfProgressBar::ScfProgressBar( SfxObjectShell* pDocShell, const String& rText ) : + maText( rText ) +{ + Init( pDocShell ); +} + +ScfProgressBar::ScfProgressBar( SfxObjectShell* pDocShell, sal_uInt16 nResId ) : + maText( ScGlobal::GetRscString( nResId ) ) { + Init( pDocShell ); } -ScfProgressBar::ScfProgressBar( ScfProgressBar* pParProgress, ScfProgressSegment* pParSegment ) : - mpSysProgress( NULL ), - mpParentProgress( pParProgress ), - mpParentSegment( pParSegment ), - mpCurrSegment( NULL ), - mnTotalSize( 0 ), - mnTotalPos( 0 ), - mnUnitSize( 0 ), - mnNextUnitPos( 0 ), - mbInProgress( false ) +ScfProgressBar::ScfProgressBar( ScfProgressBar& rParProgress, ScfProgressSegment* pParSegment ) { + Init( rParProgress.mpDocShell ); + mpParentProgress = &rParProgress; + mpParentSegment = pParSegment; } ScfProgressBar::~ScfProgressBar() { } -ScfProgressBar::ScfProgressSegment* ScfProgressBar::GetSegment( sal_uInt32 nSegment ) const +void ScfProgressBar::Init( SfxObjectShell* pDocShell ) +{ + mpDocShell = pDocShell; + mpParentProgress = NULL; + mpParentSegment = mpCurrSegment = NULL; + mnTotalSize = mnTotalPos = mnUnitSize = mnNextUnitPos = 0; + mbInProgress = false; +} + +ScfProgressBar::ScfProgressSegment* ScfProgressBar::GetSegment( sal_Int32 nSegment ) const { - if( nSegment == ~0UL ) + if( nSegment < 0 ) return NULL; DBG_ASSERT( maSegments.GetObject( nSegment ), "ScfProgressBar::GetSegment - invalid segment index" ); return maSegments.GetObject( nSegment ); @@ -143,7 +149,7 @@ void ScfProgressBar::SetCurrSegment( ScfProgressSegment* pSegment ) if( mpParentProgress && mpParentSegment ) mpParentProgress->SetCurrSegment( mpParentSegment ); else if( !mpSysProgress.get() && mnTotalSize ) - mpSysProgress.reset( new ScProgress( NULL, maText, mnTotalSize ) ); + mpSysProgress.reset( new ScProgress( mpDocShell, maText, mnTotalSize ) ); if( !mbInProgress && mpCurrSegment && mnTotalSize ) { @@ -181,26 +187,31 @@ void ScfProgressBar::IncreaseProgressBar( sal_uInt32 nDelta ) mnTotalPos = nNewPos; } -sal_uInt32 ScfProgressBar::AddSegment( sal_uInt32 nSize ) +sal_Int32 ScfProgressBar::AddSegment( sal_uInt32 nSize ) { DBG_ASSERT( !mbInProgress, "ScfProgressBar::AddSegment - already in progress mode" ); if( !nSize ) - return ~0UL; + return SCF_INVALID_SEG; maSegments.Append( new ScfProgressSegment( nSize ) ); mnTotalSize += nSize; return maSegments.Count() - 1; } -ScfProgressBar& ScfProgressBar::GetSegmentProgressBar( sal_uInt32 nSegment ) +ScfProgressBar& ScfProgressBar::GetSegmentProgressBar( sal_Int32 nSegment ) { ScfProgressSegment* pSegment = GetSegment( nSegment ); - if( pSegment && !pSegment->mpProgress.get() ) - pSegment->mpProgress.reset( new ScfProgressBar( this, pSegment ) ); - return pSegment ? *pSegment->mpProgress : *this; + DBG_ASSERT( !pSegment || !pSegment->mnPos, "ScfProgressBar::GetSegmentProgressBar - segment already started" ); + if( pSegment && !pSegment->mnPos ) + { + if( !pSegment->mpProgress.get() ) + pSegment->mpProgress.reset( new ScfProgressBar( *this, pSegment ) ); + return *pSegment->mpProgress; + } + return *this; } -void ScfProgressBar::ActivateSegment( sal_uInt32 nSegment ) +void ScfProgressBar::ActivateSegment( sal_Int32 nSegment ) { DBG_ASSERT( mnTotalSize, "ScfProgressBar::ActivateSegment - progress range is zero" ); if( mnTotalSize ) @@ -212,6 +223,7 @@ void ScfProgressBar::Progress( sal_uInt32 nPos ) DBG_ASSERT( mbInProgress && mpCurrSegment, "ScfProgressBar::Progress - no segment started" ); if( mpCurrSegment ) { + DBG_ASSERT( !mpCurrSegment->mpProgress.get(), "ScfProgressBar::Progress - contains sub progress" ); DBG_ASSERT( mpCurrSegment->mnPos <= nPos, "ScfProgressBar::Progress - delta pos < 0" ); DBG_ASSERT( nPos <= mpCurrSegment->mnSize, "ScfProgressBar::Progress - segment overflow" ); if( (mpCurrSegment->mnPos < nPos) && (nPos <= mpCurrSegment->mnSize) ) @@ -230,3 +242,56 @@ void ScfProgressBar::Progress() // ============================================================================ +ScfSimpleProgressBar::ScfSimpleProgressBar( sal_uInt32 nSize, SfxObjectShell* pDocShell, const String& rText ) : + maProgress( pDocShell, rText ) +{ + Init( nSize ); +} + +ScfSimpleProgressBar::ScfSimpleProgressBar( sal_uInt32 nSize, SfxObjectShell* pDocShell, sal_uInt16 nResId ) : + maProgress( pDocShell, nResId ) +{ + Init( nSize ); +} + +void ScfSimpleProgressBar::Init( sal_uInt32 nSize ) +{ + sal_Int32 nSegment = maProgress.AddSegment( nSize ); + if( nSegment >= 0 ) + maProgress.ActivateSegment( nSegment ); +} + + +// ============================================================================ + +ScfStreamProgressBar::ScfStreamProgressBar( SvStream& rStrm, SfxObjectShell* pDocShell, const String& rText ) : + mrStrm( rStrm ) +{ + Init( pDocShell, rText ); +} + +ScfStreamProgressBar::ScfStreamProgressBar( SvStream& rStrm, SfxObjectShell* pDocShell, sal_uInt16 nResId ) : + mrStrm( rStrm ) +{ + Init( pDocShell, ScGlobal::GetRscString( nResId ) ); +} + +void ScfStreamProgressBar::Progress() +{ + mpProgress->Progress( mrStrm.Tell() ); +} + +void ScfStreamProgressBar::Init( SfxObjectShell* pDocShell, const String& rText ) +{ + sal_uInt32 nPos = mrStrm.Tell(); + mrStrm.Seek( STREAM_SEEK_TO_END ); + sal_uInt32 nSize = mrStrm.Tell(); + mrStrm.Seek( nPos ); + + mpProgress.reset( new ScfSimpleProgressBar( nSize, pDocShell, rText ) ); + Progress(); +} + + +// ============================================================================ + diff --git a/sc/source/filter/ftools/ftools.cxx b/sc/source/filter/ftools/ftools.cxx index aca8c1686fa1..71b65cbfb347 100644 --- a/sc/source/filter/ftools/ftools.cxx +++ b/sc/source/filter/ftools/ftools.cxx @@ -2,9 +2,9 @@ * * $RCSfile: ftools.cxx,v $ * - * $Revision: 1.1 $ + * $Revision: 1.2 $ * - * last change: $Author: dr $ $Date: 2002-11-21 12:09:10 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:51 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -71,6 +71,9 @@ #include "ftools.hxx" #endif +#ifndef _SVSTOR_HXX +#include +#endif #ifndef _UNOTOOLS_CHARCLASS_HXX #include #endif @@ -80,6 +83,9 @@ #ifndef SC_SCGLOB_HXX #include "global.hxx" #endif +#ifndef SC_COMPILER_HXX +#include "compiler.hxx" +#endif #include "excdefs.hxx" @@ -225,39 +231,44 @@ void ScfTools::EraseQuotes( String& rString, sal_Unicode cQuote ) // *** conversion of names *** ------------------------------------------------ -void ScfTools::ConvertName( String& rName, bool bCheckPeriod ) +void ScfTools::ConvertToScSheetName( String& rName ) { - if( !rName.Len() ) return; + for( xub_StrLen nPos = 0, nLen = rName.Len(); nPos < nLen; ++nPos ) + { + sal_Unicode cChar = rName.GetChar( nPos ); + bool bSpace = (cChar == ' '); + if( (!ScGlobal::pCharClass->isLetterNumeric( rName, nPos ) && !bSpace) || (!nPos && bSpace) ) + rName.SetChar( nPos, '_' ); + } +} - const sal_Unicode cUnderSc = '_'; - const sal_Unicode cBlank = ' '; - const sal_Unicode cPoint = '.'; +void ScfTools::ConvertToScDefinedName( String& rName ) +{ + xub_StrLen nLen = rName.Len(); + if( nLen && !ScCompiler::IsCharWordChar( rName.GetChar( 0 ) ) ) + rName.SetChar( 0, '_' ); + for( xub_StrLen nPos = 1; nPos < nLen; ++nPos ) + if( !ScCompiler::IsWordChar( rName.GetChar( nPos ) ) ) + rName.SetChar( nPos, '_' ); +} - String aNewTable; - bool bSpace = false; - for( const sal_Unicode* pChar = rName.GetBuffer(); *pChar; pChar++ ) - { - if( !(ScGlobal::pCharClass->isLetterNumeric( rName, pChar - rName.GetBuffer() ) || - (*pChar == cUnderSc) || (*pChar == cBlank) || (bCheckPeriod && (*pChar == cPoint))) ) - { - aNewTable += cUnderSc; - bSpace = false; - } - else if( *pChar == cBlank ) - { - if( bSpace ) - aNewTable += cUnderSc; - else - bSpace = true; - } - else - { - aNewTable += *pChar; - bSpace = false; - } - } - rName = aNewTable; +// *** streams and storages *** ----------------------------------------------- + +const SvStorageStreamRef ScfTools::OpenStorageStreamRead( SvStorage* pStorage, const String& rStrmName ) +{ + SvStorageStreamRef xStrm; + if( pStorage && pStorage->IsContained( rStrmName ) && pStorage->IsStream( rStrmName ) ) + xStrm = pStorage->OpenStream( rStrmName, STREAM_READ | STREAM_SHARE_DENYALL ); + return xStrm; +} + +const SvStorageStreamRef ScfTools::OpenStorageStreamWrite( SvStorage* pStorage, const String& rStrmName ) +{ + SvStorageStreamRef xStrm; + if( pStorage ) + xStrm = pStorage->OpenStream( rStrmName/*, STREAM_READWRITE | STREAM_TRUNC*/ ); + return xStrm; } @@ -316,36 +327,66 @@ void ScfTools::AppendCString( SvStream& rStrm, String& rString, CharSet eSrc ) // *** HTML table names <-> named range names *** ----------------------------- -const String ScfTools::maHTMLDoc( RTL_CONSTASCII_USTRINGPARAM( "HTML_all" ) ); -const String ScfTools::maHTMLTables( RTL_CONSTASCII_USTRINGPARAM( "HTML_tables" ) ); -const String ScfTools::maHTMLTableIndex( RTL_CONSTASCII_USTRINGPARAM( "HTML_" ) ); -const String ScfTools::maHTMLTableName( RTL_CONSTASCII_USTRINGPARAM( "HTML__" ) ); +const String& ScfTools::GetHTMLDocName() +{ + static const String saHTMLDoc( RTL_CONSTASCII_USTRINGPARAM( "HTML_all" ) ); + return saHTMLDoc; +} + +const String& ScfTools::GetHTMLTablesName() +{ + static const String saHTMLTables( RTL_CONSTASCII_USTRINGPARAM( "HTML_tables" ) ); + return saHTMLTables; +} + +const String& ScfTools::GetHTMLIndexPrefix() +{ + static const String saHTMLIndexPrefix( RTL_CONSTASCII_USTRINGPARAM( "HTML_" ) ); + return saHTMLIndexPrefix; + +} + +const String& ScfTools::GetHTMLNamePrefix() +{ + static const String saHTMLNamePrefix( RTL_CONSTASCII_USTRINGPARAM( "HTML__" ) ); + return saHTMLNamePrefix; +} String ScfTools::GetNameFromHTMLIndex( sal_uInt32 nIndex ) { - String aName( maHTMLTableIndex ); + String aName( GetHTMLIndexPrefix() ); aName += String::CreateFromInt32( static_cast< sal_Int32 >( nIndex ) ); return aName; } String ScfTools::GetNameFromHTMLName( const String& rTabName ) { - String aName( maHTMLTableName ); + String aName( GetHTMLNamePrefix() ); aName += rTabName; return aName; } +bool ScfTools::IsHTMLDocName( const String& rSource ) +{ + return rSource.EqualsIgnoreCaseAscii( GetHTMLDocName() ) == TRUE; +} + +bool ScfTools::IsHTMLTablesName( const String& rSource ) +{ + return rSource.EqualsIgnoreCaseAscii( GetHTMLTablesName() ) == TRUE; +} + bool ScfTools::GetHTMLNameFromName( const String& rSource, String& rName ) { rName.Erase(); - if( rSource.EqualsIgnoreCaseAscii( maHTMLTableName, 0, maHTMLTableName.Len() ) ) + if( rSource.EqualsIgnoreCaseAscii( GetHTMLNamePrefix(), 0, GetHTMLNamePrefix().Len() ) ) { - rName = rSource.Copy( maHTMLTableName.Len() ); + rName = rSource.Copy( GetHTMLNamePrefix().Len() ); AddQuotes( rName ); } - else if( rSource.EqualsIgnoreCaseAscii( maHTMLTableIndex, 0, maHTMLTableIndex.Len() ) ) + else if( rSource.EqualsIgnoreCaseAscii( GetHTMLIndexPrefix(), 0, GetHTMLIndexPrefix().Len() ) ) { - String aIndex( rSource.Copy( maHTMLTableIndex.Len() ) ); + String aIndex( rSource.Copy( GetHTMLIndexPrefix().Len() ) ); if( CharClass::isAsciiNumeric( aIndex ) && (aIndex.ToInt32() > 0) ) rName = aIndex; } diff --git a/sc/source/filter/ftools/makefile.mk b/sc/source/filter/ftools/makefile.mk index f4265fc0558e..0c36c6101a47 100644 --- a/sc/source/filter/ftools/makefile.mk +++ b/sc/source/filter/ftools/makefile.mk @@ -2,9 +2,9 @@ # # $RCSfile: makefile.mk,v $ # -# $Revision: 1.1 $ +# $Revision: 1.2 $ # -# last change: $Author: dr $ $Date: 2002-11-21 12:09:10 $ +# last change: $Author: hr $ $Date: 2003-03-26 18:04:51 $ # # The Contents of this file are made available subject to the terms of # either of the following licenses diff --git a/sc/source/filter/html/htmlimp.cxx b/sc/source/filter/html/htmlimp.cxx index 99f8ad890af2..9e8555e0f7b4 100644 --- a/sc/source/filter/html/htmlimp.cxx +++ b/sc/source/filter/html/htmlimp.cxx @@ -2,9 +2,9 @@ * * $RCSfile: htmlimp.cxx,v $ * - * $Revision: 1.9 $ + * $Revision: 1.10 $ * - * last change: $Author: dr $ $Date: 2002-11-21 12:17:08 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:54 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -139,7 +139,10 @@ ScHTMLImport::ScHTMLImport( ScDocument* pDocP, const ScRange& rRange, BOOL bCalc aPageSize = pDefaultDev->LogicToPixel( SvxPaperInfo::GetPaperSize( SVX_PAPER_A4 ), MapMode( MAP_TWIP ) ); } - pParser = new ScHTMLParser( pEngine, aPageSize, pDocP, bCalcWidthHeight ); + if( bCalcWidthHeight ) + pParser = new ScHTMLLayoutParser( pEngine, aPageSize, pDocP ); + else + pParser = new ScHTMLQueryParser( pEngine, pDocP ); } @@ -167,12 +170,12 @@ void ScHTMLImport::WriteToDocument( BOOL bSizeColsRows, double nOutputFactor ) ScEEImport::WriteToDocument( bSizeColsRows, nOutputFactor ); const ScHTMLParser* pParser = GetParser(); - ScHTMLTableDataTable* pHTMLTables = pParser->GetHTMLTables(); - if( !pHTMLTables ) + const ScHTMLTable* pGlobTable = pParser->GetGlobalTable(); + if( !pGlobTable ) return; // set cell borders for HTML table cells - pHTMLTables->SetCellBorders( pDoc, aRange.aStart ); + pGlobTable->ApplyCellBorders( pDoc, aRange.aStart ); // correct cell borders for merged cells for ( ScEEParseEntry* pEntry = pParser->First(); pEntry; pEntry = pParser->Next() ) @@ -209,10 +212,8 @@ void ScHTMLImport::WriteToDocument( BOOL bSizeColsRows, double nOutputFactor ) // create ranges for HTML tables // 1 - entire document ScRange aNewRange( aRange.aStart ); - USHORT nColDim, nRowDim; - pParser->GetDimensions( nColDim, nRowDim ); - aNewRange.aEnd.IncCol( nColDim - 1 ); - aNewRange.aEnd.IncRow( nRowDim - 1 ); + aNewRange.aEnd.IncCol( pGlobTable->GetDocSize( tdCol ) - 1 ); + aNewRange.aEnd.IncRow( pGlobTable->GetDocSize( tdRow ) - 1 ); InsertRangeName( pDoc, ScfTools::GetHTMLDocName(), aNewRange ); // 2 - all tables @@ -223,14 +224,14 @@ void ScHTMLImport::WriteToDocument( BOOL bSizeColsRows, double nOutputFactor ) short nRowDiff = (short)aRange.aStart.Row(); short nTabDiff = (short)aRange.aStart.Tab(); - ScHTMLTableData* pTable = NULL; - ULONG nTab = 0; - while( pTable = pHTMLTables->GetTable( ++nTab ) ) + ScHTMLTable* pTable = NULL; + ScHTMLTableId nTableId = SC_HTML_GLOBAL_TABLE; + while( pTable = pGlobTable->FindNestedTable( ++nTableId ) ) { - pTable->GetRange( aNewRange ); + pTable->GetDocRange( aNewRange ); aNewRange.Move( nColDiff, nRowDiff, nTabDiff ); // insert table number as name - InsertRangeName( pDoc, ScfTools::GetNameFromHTMLIndex( nTab ), aNewRange ); + InsertRangeName( pDoc, ScfTools::GetNameFromHTMLIndex( nTableId ), aNewRange ); // insert table id as name if( pTable->GetTableName().Len() ) { diff --git a/sc/source/filter/html/htmlpars.cxx b/sc/source/filter/html/htmlpars.cxx index 01405399551f..984b657880b2 100644 --- a/sc/source/filter/html/htmlpars.cxx +++ b/sc/source/filter/html/htmlpars.cxx @@ -2,9 +2,9 @@ * * $RCSfile: htmlpars.cxx,v $ * - * $Revision: 1.12 $ + * $Revision: 1.13 $ * - * last change: $Author: er $ $Date: 2002-10-01 19:10:33 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:54 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -67,6 +67,8 @@ //------------------------------------------------------------------------ +#include + #define SC_HTMLPARS_CXX #include "scitems.hxx" #include @@ -120,344 +122,39 @@ #include "flttools.hxx" #include "document.hxx" #include "rangelst.hxx" +#include "ftools.hxx" SV_IMPL_VARARR_SORT( ScHTMLColOffset, ULONG ); -//------------------------------------------------------------------------ - -ScHTMLTableData::ScHTMLTableData( - const String& rTabName, USHORT _nFirstCol, USHORT _nFirstRow, - USHORT _nColSpan, USHORT _nRowSpan, BOOL bBorder ) : - aTableName( rTabName ), - nFirstCol( _nFirstCol ), - nFirstRow( _nFirstRow ), - nLastCol( _nFirstCol ), - nLastRow( _nFirstRow ), - nColSpan( _nColSpan ), - nRowSpan( _nRowSpan ), - nDocCol( _nFirstCol ), - nDocRow( _nFirstRow ), - bBorderOn( bBorder ), - pNestedTables( NULL ) -{ -} - -ScHTMLTableData::~ScHTMLTableData() -{ - if( pNestedTables ) - delete pNestedTables; -} - -USHORT ScHTMLTableData::GetCount( const Table& rTab, ULONG nIndex ) -{ - USHORT nCount = (USHORT)(ULONG) rTab.Get( nIndex ); - return Max( nCount, (USHORT)1 ); // width/height is at least 1 cell -} - -USHORT ScHTMLTableData::GetSize( const Table& rDataTab, ULONG nStart, ULONG nEnd ) -{ - USHORT nSize = 0; - for( ULONG nIndex = nStart; nIndex <= nEnd; nIndex++ ) - nSize += GetCount( rDataTab, nIndex ); - return nSize; -} - -USHORT ScHTMLTableData::CalcDocPos( ScHTMLTableDataKey eCRKey, ULONG nIndex ) const -{ - USHORT nFirst = GetFirst( eCRKey ); - return GetDocPos( eCRKey ) + ((nFirst < nIndex) ? GetSize( GetDataTable( eCRKey ), nFirst, nIndex - 1 ) : 0); -} - -USHORT ScHTMLTableData::CalcSpan( ScHTMLTableDataKey eCRKey, ULONG nIndex, USHORT nSpan ) const -{ - return GetSize( GetDataTable( eCRKey ), nIndex, nIndex + nSpan - 1 ); -} - -void ScHTMLTableData::GetRange( ScRange& rRange ) const -{ - USHORT nCol = CalcDocCol( nFirstCol ); - USHORT nRow = CalcDocRow( nFirstRow ); - rRange.aStart.Set( nCol, nRow, 0 ); - rRange.aEnd.Set( nCol + GetSize( tdCol ) - 1, nRow + GetSize( tdRow ) - 1, 0 ); -} - -ScHTMLTableData* ScHTMLTableData::GetNestedTable( ULONG nTab ) const -{ - return pNestedTables ? pNestedTables->GetTable( nTab ) : NULL; -} - -void ScHTMLTableData::SetMaxCount( Table& rDataTab, ULONG nIndex, USHORT nCount ) -{ - if( GetCount( rDataTab, nIndex ) < nCount ) - { - if( rDataTab.IsKeyValid( nIndex ) ) - rDataTab.Replace( nIndex, (void*) nCount ); - else - rDataTab.Insert( nIndex, (void*) nCount ); - } -} - -ScHTMLTableData* ScHTMLTableData::InsertNestedTable( - ULONG nTab, const String& rTabName, USHORT _nFirstCol, USHORT _nFirstRow, - USHORT _nColSpan, USHORT _nRowSpan, BOOL bBorder ) -{ - if( !pNestedTables ) - pNestedTables = new ScHTMLTableDataTable; - return pNestedTables->InsertTable( nTab, rTabName, _nFirstCol, _nFirstRow, _nColSpan, _nRowSpan, bBorder ); -} - -void ScHTMLTableData::ChangeDocCoord( short nColDiff, short nRowDiff ) -{ - nDocCol += nColDiff; - nDocRow += nRowDiff; - if( pNestedTables ) - for( ScHTMLTableData* pTable = pNestedTables->GetFirst(); pTable; pTable = pNestedTables->GetNext() ) - pTable->ChangeDocCoord( nColDiff, nRowDiff ); -} - -void ScHTMLTableData::SetDocCoord( USHORT nCol, USHORT nRow ) -{ - short nColDiff = nCol - nFirstCol; - short nRowDiff = nRow - nFirstRow; - ChangeDocCoord( nColDiff, nRowDiff ); -} - -void ScHTMLTableData::RecalcSizeDim( ScHTMLTableDataKey eCRKey ) -{ - if( !pNestedTables ) return; - for( ScHTMLTableData* pTable = pNestedTables->GetFirstInOrder( eCRKey ); - pTable; pTable = pNestedTables->GetNextInOrder() ) - { - USHORT nIndex = pTable->GetFirst( eCRKey ); - USHORT nSpan = pTable->GetSpan( eCRKey ); - USHORT nSize = pTable->GetSize( eCRKey ); - Table& rDataTab = GetDataTable( eCRKey ); - while( nSpan > 1 ) - { - nSize -= Min( nSize, GetCount( rDataTab, nIndex ) ); - nIndex++; - nSpan--; - } - SetMaxCount( rDataTab, nIndex, nSize ); - } -} - -void ScHTMLTableData::RecalcSize() -{ - if( !pNestedTables ) return; - pNestedTables->RecalcSizes(); - // all nested tables have the right size now -> calculate it for this table - RecalcSizeDim( tdCol ); - RecalcSizeDim( tdRow ); - // set correct position of nested tables inside of THIS table - for( ScHTMLTableData* pTable = pNestedTables->GetFirst(); pTable; pTable = pNestedTables->GetNext() ) - pTable->SetDocCoord( CalcDocCol( pTable->GetFirstCol() ), CalcDocRow( pTable->GetFirstRow() ) ); -} - -void ScHTMLTableData::SetCellBorders( ScDocument* pDoc, const ScAddress& rFirstPos ) -{ - if( bBorderOn ) - { - const USHORT nOuterLine = DEF_LINE_WIDTH_2; - const USHORT nInnerLine = DEF_LINE_WIDTH_0; - SvxBorderLine aOuterLine, aInnerLine; - aOuterLine.SetColor( Color( COL_BLACK ) ); - aOuterLine.SetOutWidth( nOuterLine ); - aInnerLine.SetColor( Color( COL_BLACK ) ); - aInnerLine.SetOutWidth( nInnerLine ); - SvxBoxItem aBorderItem; - - for( USHORT nCol = nFirstCol; nCol <= nLastCol; nCol++ ) - { - SvxBorderLine* pLeftLine = (nCol == nFirstCol) ? &aOuterLine : &aInnerLine; - SvxBorderLine* pRightLine = (nCol == nLastCol) ? &aOuterLine : &aInnerLine; - USHORT nCellCol1 = CalcDocCol( nCol ) + rFirstPos.Col(); - USHORT nCellCol2 = nCellCol1 + GetCount( aColCount, nCol ) - 1; - for( USHORT nRow = nFirstRow; nRow <= nLastRow; nRow++ ) - { - SvxBorderLine* pTopLine = (nRow == nFirstRow) ? &aOuterLine : &aInnerLine; - SvxBorderLine* pBottomLine = (nRow == nLastRow) ? &aOuterLine : &aInnerLine; - USHORT nCellRow1 = CalcDocRow( nRow ) + rFirstPos.Row(); - USHORT nCellRow2 = nCellRow1 + GetCount( aRowCount, nRow ) - 1; - for( USHORT nCellCol = nCellCol1; nCellCol <= nCellCol2; nCellCol++ ) - { - aBorderItem.SetLine( (nCellCol == nCellCol1) ? pLeftLine : NULL, BOX_LINE_LEFT ); - aBorderItem.SetLine( (nCellCol == nCellCol2) ? pRightLine : NULL, BOX_LINE_RIGHT ); - for( USHORT nCellRow = nCellRow1; nCellRow <= nCellRow2; nCellRow++ ) - { - aBorderItem.SetLine( (nCellRow == nCellRow1) ? pTopLine : NULL, BOX_LINE_TOP ); - aBorderItem.SetLine( (nCellRow == nCellRow2) ? pBottomLine : NULL, BOX_LINE_BOTTOM ); - pDoc->ApplyAttr( nCellCol, nCellRow, rFirstPos.Tab(), aBorderItem ); - } - } - } - } - } - - if( pNestedTables ) - pNestedTables->SetCellBorders( pDoc, rFirstPos ); -} - - - -ScHTMLTableDataTable::ScHTMLTableDataTable() : - pCurrTab( NULL ), - nCurrTab( 0 ) -{ -} - -ScHTMLTableDataTable::~ScHTMLTableDataTable() -{ - for( ScHTMLTableData* pData = GetFirst(); pData; pData = GetNext() ) - delete pData; -} - -ScHTMLTableData* ScHTMLTableDataTable::GetTable( ULONG nTab ) -{ - if( nTab == nCurrTab ) - return pCurrTab; - if( !nTab ) - return NULL; - - ScHTMLTableData* pTable = _Get( nTab ); - if( pTable ) - { - SetCurrTable( nTab, pTable ); - return pTable; - } - - ScHTMLTableData* pNested = NULL; - for( pTable = GetFirst(); pTable; pTable = GetNext() ) - { - pNested = pTable->GetNestedTable( nTab ); - if( pNested ) - { - SetCurrTable( nTab, pNested ); - return pNested; - } - } - return NULL; -} - -ScHTMLTableData* ScHTMLTableDataTable::GetFirstInOrder( ScHTMLTableDataKey eKey ) -{ - nSearchMin1 = nSearchMin2 = 0; - eSearchKey = eKey; - return GetNextInOrder(); -} - -ScHTMLTableData* ScHTMLTableDataTable::GetNextInOrder() -{ - ScHTMLTableDataKey eOppKey = (eSearchKey == tdCol) ? tdRow : tdCol; - ScHTMLTableData* pTableFound = NULL; - USHORT nFoundPos1 = (USHORT)~0; - USHORT nFoundPos2 = (USHORT)~0; - - for( ScHTMLTableData* pTable = GetFirst(); pTable; pTable = GetNext() ) - { - USHORT nTablePos1 = pTable->GetFirst( eSearchKey ) + pTable->GetSpan( eSearchKey ) - 1; - USHORT nTablePos2 = pTable->GetFirst( eOppKey ); - if( ((nTablePos1 > nSearchMin1) || ((nTablePos1 == nSearchMin1) && (nTablePos2 > nSearchMin2))) && - ((nTablePos1 < nFoundPos1) || ((nTablePos1 == nFoundPos1) && (nTablePos2 < nFoundPos2))) ) - { // position of this table is between min position and last found position - pTableFound = pTable; - nFoundPos1 = nTablePos1; - nFoundPos2 = nTablePos2; - } - } - nSearchMin1 = nFoundPos1; - nSearchMin2 = nFoundPos2; - return pTableFound; -} - -USHORT ScHTMLTableDataTable::GetNextFreeRow( ULONG nTab ) -{ - ScHTMLTableData* pTable = _Get( nTab ); - if( pTable ) - return pTable->GetFirstRow() + pTable->GetSize( tdRow ); - - for( pTable = GetFirst(); pTable; pTable = GetNext() ) - if( pTable->GetNestedTable( nTab ) ) - return pTable->GetFirstRow() + pTable->GetSize( tdRow ); - - return 0; -} - -ScHTMLTableData* ScHTMLTableDataTable::InsertTable( - ULONG nTab, const String& rTabName, USHORT nFirstCol, USHORT nFirstRow, - USHORT nColSpan, USHORT nRowSpan, BOOL bBorder, ULONG nNestedIn ) -{ - ScHTMLTableData* pTable = GetTable( nTab ); - // table already exists - if( pTable ) - return pTable; - // insert in nested table - if( nNestedIn ) - { - pTable = GetTable( nNestedIn ); - if( pTable ) - { - ScHTMLTableData* pNewTab = pTable->InsertNestedTable( - nTab, rTabName, nFirstCol, nFirstRow, nColSpan, nRowSpan, bBorder ); - SetCurrTable( nTab, pNewTab ); - return pNewTab; - } - } - // insert in this table - _Insert( nTab, pTable = new ScHTMLTableData( - rTabName, nFirstCol, nFirstRow, nColSpan, nRowSpan, bBorder ) ); - SetCurrTable( nTab, pTable ); - return pTable; -} -void ScHTMLTableDataTable::SetCellCoord( ULONG nTab, USHORT nCol, USHORT nRow ) -{ - ScHTMLTableData* pTable = GetTable( nTab ); - if( pTable ) - pTable->SetCellCoord( nCol, nRow ); -} +// ============================================================================ +// BASE class for HTML parser classes +// ============================================================================ -void ScHTMLTableDataTable::RecalcSizes() +ScHTMLParser::ScHTMLParser( EditEngine* pEditEngine, ScDocument* pDoc ) : + ScEEParser( pEditEngine ), + mpDoc( pDoc ) { - for( ScHTMLTableData* pTable = GetFirst(); pTable; pTable = GetNext() ) - pTable->RecalcSize(); + OfaHtmlOptions* pHtmlOptions = ((OfficeApplication*)SFX_APP())->GetHtmlOptions(); + for( sal_uInt16 nIndex = 0; nIndex < SC_HTML_FONTSIZES; ++nIndex ) + maFontHeights[ nIndex ] = pHtmlOptions->GetFontSize( nIndex ) * 20; } -void ScHTMLTableDataTable::Recalc() +ScHTMLParser::~ScHTMLParser() { - // table sizes - RecalcSizes(); - // table positions (move tables down) - USHORT nDocRow; - USHORT nRowDiff = 0; - for( ScHTMLTableData* pTable = GetFirst(); pTable; pTable = GetNext() ) - { - nDocRow = pTable->GetFirstRow() + nRowDiff; - pTable->SetDocCoord( pTable->GetFirstCol(), nDocRow ); - nRowDiff += (pTable->GetSize( tdRow ) + pTable->GetFirstRow() - pTable->GetLastRow() - 1); - } } -void ScHTMLTableDataTable::SetCellBorders( ScDocument* pDoc, const ScAddress& rFirstPos ) -{ - DBG_ASSERT( pDoc, "ScHTMLTableDataTable::SetCellBorders - no document" ); - for( ScHTMLTableData* pTable = GetFirst(); pTable; pTable = GetNext() ) - pTable->SetCellBorders( pDoc, rFirstPos ); -} -//------------------------------------------------------------------------ +// ============================================================================ -ScHTMLParser::ScHTMLParser( EditEngine* pEditP, const Size& aPageSizeP, - ScDocument* pDocP, BOOL _bCalcWidthHeight ) : - ScEEParser( pEditP ), +ScHTMLLayoutParser::ScHTMLLayoutParser( EditEngine* pEditP, const Size& aPageSizeP, ScDocument* pDocP ) : + ScHTMLParser( pEditP, pDocP ), aPageSize( aPageSizeP ), xLockedList( new ScRangeList ), - pDoc( pDocP ), pTables( NULL ), - pTableData( _bCalcWidthHeight ? NULL : new ScHTMLTableDataTable ), - pColOffset( _bCalcWidthHeight ? new ScHTMLColOffset : NULL ), - pLocalColOffset( _bCalcWidthHeight ? new ScHTMLColOffset : NULL ), + pColOffset( new ScHTMLColOffset ), + pLocalColOffset( new ScHTMLColOffset ), nFirstTableCell(0), nTableLevel(0), nTable(0), @@ -468,29 +165,17 @@ ScHTMLParser::ScHTMLParser( EditEngine* pEditP, const Size& aPageSizeP, nColOffset(0), nColOffsetStart(0), nMetaCnt(0), - bCalcWidthHeight( _bCalcWidthHeight ), bTabInTabCell( FALSE ), bFirstRow( TRUE ), bInCell( FALSE ), bInTitle( FALSE ) { - // neue Konfiguration setzen - OfaHtmlOptions* pHtmlOptions = ((OfficeApplication*)SFX_APP())->GetHtmlOptions(); - for ( USHORT j=0; j < SC_HTML_FONTSIZES; j++ ) - { - // in Twips merken, wie unser SvxFontHeightItem - aFontHeights[j] = pHtmlOptions->GetFontSize( j ) * 20; - } - - if( bCalcWidthHeight ) - { - MakeColNoRef( pLocalColOffset, 0, 0, 0, 0 ); - MakeColNoRef( pColOffset, 0, 0, 0, 0 ); - } + MakeColNoRef( pLocalColOffset, 0, 0, 0, 0 ); + MakeColNoRef( pColOffset, 0, 0, 0, 0 ); } -ScHTMLParser::~ScHTMLParser() +ScHTMLLayoutParser::~ScHTMLLayoutParser() { ScHTMLTableStackEntry* pS; while ( pS = aTableStack.Pop() ) @@ -511,17 +196,15 @@ ScHTMLParser::~ScHTMLParser() delete pT; delete pTables; } - if ( pTableData ) - delete pTableData; } -ULONG ScHTMLParser::Read( SvStream& rStream ) +ULONG ScHTMLLayoutParser::Read( SvStream& rStream ) { Link aOldLink = pEdit->GetImportHdl(); - pEdit->SetImportHdl( LINK( this, ScHTMLParser, HTMLImportHdl ) ); + pEdit->SetImportHdl( LINK( this, ScHTMLLayoutParser, HTMLImportHdl ) ); - SfxObjectShell* pObjSh = pDoc->GetDocumentShell(); + SfxObjectShell* pObjSh = mpDoc->GetDocumentShell(); BOOL bLoading = pObjSh && pObjSh->IsLoading(); SvKeyValueIteratorRef xValues; @@ -549,29 +232,30 @@ ULONG ScHTMLParser::Read( SvStream& rStream ) pEdit->SetImportHdl( aOldLink ); // Spaltenbreiten erzeugen - if( bCalcWidthHeight ) + Adjust(); + OutputDevice* pDefaultDev = Application::GetDefaultDevice(); + USHORT nCount = pColOffset->Count(); + const ULONG* pOff = (const ULONG*) pColOffset->GetData(); + ULONG nOff = *pOff++; + Size aSize; + for ( USHORT j = 1; j < nCount; j++, pOff++ ) { - Adjust(); - OutputDevice* pDefaultDev = Application::GetDefaultDevice(); - USHORT nCount = pColOffset->Count(); - const ULONG* pOff = (const ULONG*) pColOffset->GetData(); - ULONG nOff = *pOff++; - Size aSize; - for ( USHORT j = 1; j < nCount; j++, pOff++ ) - { - aSize.Width() = *pOff - nOff; - aSize = pDefaultDev->PixelToLogic( aSize, MapMode( MAP_TWIP ) ); - pColWidths->Insert( j-1, (void*)aSize.Width() ); - nOff = *pOff; - } + aSize.Width() = *pOff - nOff; + aSize = pDefaultDev->PixelToLogic( aSize, MapMode( MAP_TWIP ) ); + pColWidths->Insert( j-1, (void*)aSize.Width() ); + nOff = *pOff; } - else - AdjustNoWidthHeight(); return nErr; } -void ScHTMLParser::NewActEntry( ScEEParseEntry* pE ) +const ScHTMLTable* ScHTMLLayoutParser::GetGlobalTable() const +{ + return 0; +} + + +void ScHTMLLayoutParser::NewActEntry( ScEEParseEntry* pE ) { ScEEParser::NewActEntry( pE ); if ( pE ) @@ -587,7 +271,7 @@ void ScHTMLParser::NewActEntry( ScEEParseEntry* pE ) } -void ScHTMLParser::EntryEnd( ScEEParseEntry* pE, const ESelection& rSel ) +void ScHTMLLayoutParser::EntryEnd( ScEEParseEntry* pE, const ESelection& rSel ) { if ( rSel.nEndPara >= pE->aSel.nStartPara ) { @@ -604,7 +288,7 @@ void ScHTMLParser::EntryEnd( ScEEParseEntry* pE, const ESelection& rSel ) } -void ScHTMLParser::NextRow( ImportInfo* pInfo ) +void ScHTMLLayoutParser::NextRow( ImportInfo* pInfo ) { if ( bInCell ) CloseEntry( pInfo ); @@ -616,10 +300,10 @@ void ScHTMLParser::NextRow( ImportInfo* pInfo ) } -BOOL ScHTMLParser::SeekOffset( ScHTMLColOffset* pOffset, USHORT nOffset, +BOOL ScHTMLLayoutParser::SeekOffset( ScHTMLColOffset* pOffset, USHORT nOffset, USHORT* pCol, USHORT nOffsetTol ) { - DBG_ASSERT( pOffset, "ScHTMLParser::SeekOffset - illegal call" ); + DBG_ASSERT( pOffset, "ScHTMLLayoutParser::SeekOffset - illegal call" ); if ( pOffset->Seek_Entry( nOffset, pCol ) ) return TRUE; USHORT nCount = pOffset->Count(); @@ -639,10 +323,10 @@ BOOL ScHTMLParser::SeekOffset( ScHTMLColOffset* pOffset, USHORT nOffset, } -void ScHTMLParser::MakeCol( ScHTMLColOffset* pOffset, USHORT& nOffset, +void ScHTMLLayoutParser::MakeCol( ScHTMLColOffset* pOffset, USHORT& nOffset, USHORT& nWidth, USHORT nOffsetTol, USHORT nWidthTol ) { - DBG_ASSERT( pOffset, "ScHTMLParser::MakeCol - illegal call" ); + DBG_ASSERT( pOffset, "ScHTMLLayoutParser::MakeCol - illegal call" ); USHORT nPos; if ( SeekOffset( pOffset, nOffset, &nPos, nOffsetTol ) ) nOffset = (USHORT)(*pOffset)[nPos]; @@ -658,10 +342,10 @@ void ScHTMLParser::MakeCol( ScHTMLColOffset* pOffset, USHORT& nOffset, } -void ScHTMLParser::MakeColNoRef( ScHTMLColOffset* pOffset, USHORT nOffset, +void ScHTMLLayoutParser::MakeColNoRef( ScHTMLColOffset* pOffset, USHORT nOffset, USHORT nWidth, USHORT nOffsetTol, USHORT nWidthTol ) { - DBG_ASSERT( pOffset, "ScHTMLParser::MakeColNoRef - illegal call" ); + DBG_ASSERT( pOffset, "ScHTMLLayoutParser::MakeColNoRef - illegal call" ); USHORT nPos; if ( SeekOffset( pOffset, nOffset, &nPos, nOffsetTol ) ) nOffset = (USHORT)(*pOffset)[nPos]; @@ -675,10 +359,10 @@ void ScHTMLParser::MakeColNoRef( ScHTMLColOffset* pOffset, USHORT nOffset, } -void ScHTMLParser::ModifyOffset( ScHTMLColOffset* pOffset, USHORT& nOldOffset, +void ScHTMLLayoutParser::ModifyOffset( ScHTMLColOffset* pOffset, USHORT& nOldOffset, USHORT& nNewOffset, USHORT nOffsetTol ) { - DBG_ASSERT( pOffset, "ScHTMLParser::ModifyOffset - illegal call" ); + DBG_ASSERT( pOffset, "ScHTMLLayoutParser::ModifyOffset - illegal call" ); USHORT nPos; if ( !SeekOffset( pOffset, nOldOffset, &nPos, nOffsetTol ) ) { @@ -716,7 +400,7 @@ void ScHTMLParser::ModifyOffset( ScHTMLColOffset* pOffset, USHORT& nOldOffset, } -void ScHTMLParser::SkipLocked( ScEEParseEntry* pE, BOOL bJoin ) +void ScHTMLLayoutParser::SkipLocked( ScEEParseEntry* pE, BOOL bJoin ) { if ( pE->nCol <= MAXCOL ) { // wuerde sonst bei ScAddress falschen Wert erzeugen, evtl. Endlosschleife! @@ -751,7 +435,7 @@ void ScHTMLParser::SkipLocked( ScEEParseEntry* pE, BOOL bJoin ) } -void ScHTMLParser::Adjust() +void ScHTMLLayoutParser::Adjust() { for ( ScRange* pR = xLockedList->First(); pR; pR = xLockedList->Next() ) delete pR; @@ -871,57 +555,8 @@ void ScHTMLParser::Adjust() } -void ScHTMLParser::AdjustNoWidthHeight() -{ - DBG_ASSERT( pTableData, "ScHTMLParser::AdjustNoWidthHeight - no table data" ); - pTableData->Recalc(); - - USHORT nLastCol = 0; - USHORT nLastRow = 0; - USHORT nLastTab = 0; - USHORT nDocCol = 0; - USHORT nDocRow = 0; - - for ( ScEEParseEntry* pEntry = pList->First(); pEntry; pEntry = pList->Next() ) - { - ScHTMLTableData* pTable = pTableData->GetTable( pEntry->nTab ); - - if( pTable ) - { - nDocCol = pTable->CalcDocCol( pEntry->nCol ); - nDocRow = pTable->CalcDocRow( pEntry->nRow ); - pEntry->nColOverlap = pTable->CalcColSpan( pEntry->nCol, pEntry->nColOverlap ); - pEntry->nRowOverlap = pTable->CalcRowSpan( pEntry->nRow, pEntry->nRowOverlap ); - } - else if( nLastTab ) - { - nDocCol = pEntry->nCol; - nDocRow = pTableData->GetNextFreeRow( nLastTab ); - } - else - { - nDocCol += pEntry->nCol - nLastCol; - nDocRow += pEntry->nRow - nLastRow; - } - - nLastCol = pEntry->nCol; - nLastRow = pEntry->nRow; - nLastTab = pEntry->nTab; - - pEntry->nCol = nDocCol; - pEntry->nRow = nDocRow; - - nColMax = Max( nColMax, (USHORT)(pEntry->nCol + pEntry->nColOverlap) ); - nRowMax = Max( nRowMax, (USHORT)(pEntry->nRow + pEntry->nRowOverlap) ); - } -} - - -USHORT ScHTMLParser::GetWidth( ScEEParseEntry* pE ) +USHORT ScHTMLLayoutParser::GetWidth( ScEEParseEntry* pE ) { - if( !bCalcWidthHeight ) - return 0; - if ( pE->nWidth ) return pE->nWidth; USHORT nPos = Min( pE->nCol - nColCntStart + pE->nColOverlap, @@ -933,10 +568,8 @@ USHORT ScHTMLParser::GetWidth( ScEEParseEntry* pE ) } -void ScHTMLParser::SetWidths() +void ScHTMLLayoutParser::SetWidths() { - if( !bCalcWidthHeight ) return; - ScEEParseEntry* pE; USHORT nCol; if ( !nTableWidth ) @@ -1053,7 +686,7 @@ void ScHTMLParser::SetWidths() if ( pE->nTab == nTable ) { nCol = pE->nCol - nColCntStart; - DBG_ASSERT( nCol < nColsPerRow, "ScHTMLParser::SetWidths: column overflow" ); + DBG_ASSERT( nCol < nColsPerRow, "ScHTMLLayoutParser::SetWidths: column overflow" ); if ( nCol < nColsPerRow ) { pE->nOffset = pOffsets[nCol]; @@ -1093,35 +726,32 @@ void ScHTMLParser::SetWidths() } -void ScHTMLParser::Colonize( ScEEParseEntry* pE ) +void ScHTMLLayoutParser::Colonize( ScEEParseEntry* pE ) { USHORT nCol = pE->nCol; SkipLocked( pE ); // Spaltenverdraengung nach rechts - if( bCalcWidthHeight ) - { - if ( nCol < pE->nCol ) - { // verdraengt - nCol = pE->nCol - nColCntStart; - USHORT nCount = pLocalColOffset->Count(); - if ( nCol < nCount ) - nColOffset = (USHORT) (*pLocalColOffset)[nCol]; - else - nColOffset = (USHORT) (*pLocalColOffset)[nCount - 1]; - } - pE->nOffset = nColOffset; - USHORT nWidth = GetWidth( pE ); - MakeCol( pLocalColOffset, pE->nOffset, nWidth ); - if ( pE->nWidth ) - pE->nWidth = nWidth; - nColOffset = pE->nOffset + nWidth; - if ( nTableWidth < nColOffset - nColOffsetStart ) - nTableWidth = nColOffset - nColOffsetStart; + if ( nCol < pE->nCol ) + { // verdraengt + nCol = pE->nCol - nColCntStart; + USHORT nCount = pLocalColOffset->Count(); + if ( nCol < nCount ) + nColOffset = (USHORT) (*pLocalColOffset)[nCol]; + else + nColOffset = (USHORT) (*pLocalColOffset)[nCount - 1]; } + pE->nOffset = nColOffset; + USHORT nWidth = GetWidth( pE ); + MakeCol( pLocalColOffset, pE->nOffset, nWidth ); + if ( pE->nWidth ) + pE->nWidth = nWidth; + nColOffset = pE->nOffset + nWidth; + if ( nTableWidth < nColOffset - nColOffsetStart ) + nTableWidth = nColOffset - nColOffsetStart; } -void ScHTMLParser::CloseEntry( ImportInfo* pInfo ) +void ScHTMLLayoutParser::CloseEntry( ImportInfo* pInfo ) { bInCell = FALSE; if ( bTabInTabCell ) @@ -1161,14 +791,14 @@ void ScHTMLParser::CloseEntry( ImportInfo* pInfo ) DBG_ERRORFILE( "CloseEntry: EditEngine ESelection Start > End" ); rSel.nEndPara = rSel.nStartPara; } - if ( rSel.HasRange() && bCalcWidthHeight ) + if ( rSel.HasRange() ) pActEntry->aItemSet.Put( SfxBoolItem( ATTR_LINEBREAK, TRUE ) ); pList->Insert( pActEntry, LIST_APPEND ); NewActEntry( pActEntry ); // neuer freifliegender pActEntry } -IMPL_LINK( ScHTMLParser, HTMLImportHdl, ImportInfo*, pInfo ) +IMPL_LINK( ScHTMLLayoutParser, HTMLImportHdl, ImportInfo*, pInfo ) { #if defined(erDEBUG) //|| 1 static ESelection aDebugSel; @@ -1338,7 +968,7 @@ USHORT lcl_KGV( USHORT a, USHORT b ) } -void ScHTMLParser::TableDataOn( ImportInfo* pInfo ) +void ScHTMLLayoutParser::TableDataOn( ImportInfo* pInfo ) { if ( bInCell ) CloseEntry( pInfo ); @@ -1427,24 +1057,37 @@ void ScHTMLParser::TableDataOn( ImportInfo* pInfo ) pActEntry->nRow = nRowCnt; pActEntry->nTab = nTable; - if( pTableData ) - { - SkipLocked( pActEntry, FALSE ); - nColCnt = pActEntry->nCol; - nRowCnt = pActEntry->nRow; - pTableData->SetCellCoord( nTable, pActEntry->nCol, pActEntry->nRow ); - } - if ( bHorJustifyCenterTH ) pActEntry->aItemSet.Put( SvxHorJustifyItem( SVX_HOR_JUSTIFY_CENTER, ATTR_HOR_JUSTIFY) ); } -void ScHTMLParser::TableOn( ImportInfo* pInfo ) +void ScHTMLLayoutParser::TableRowOn( ImportInfo* pInfo ) +{ + if ( nColCnt > nColCntStart ) + NextRow( pInfo ); // das optionale TableRowOff war nicht + nColOffset = nColOffsetStart; +} + + +void ScHTMLLayoutParser::TableRowOff( ImportInfo* pInfo ) +{ + NextRow( pInfo ); +} + + +void ScHTMLLayoutParser::TableDataOff( ImportInfo* pInfo ) +{ + if ( bInCell ) + CloseEntry( pInfo ); // aber nur wenn's auch eine war +} + + +void ScHTMLLayoutParser::TableOn( ImportInfo* pInfo ) { String aTabName; - BOOL bBorderOn = FALSE; + bool bBorderOn = false; if ( ++nTableLevel > 1 ) { // Table in Table @@ -1499,10 +1142,6 @@ void ScHTMLParser::TableOn( ImportInfo* pInfo ) nColOffsetStart = nColOffset; } - if( pTableData ) - pTableData->InsertTable( nMaxTable + 1, aTabName, pActEntry->nCol, pActEntry->nRow, - pActEntry->nColOverlap, pActEntry->nRowOverlap, bBorderOn, nTable ); - ScEEParseEntry* pE = pList->Last(); NewActEntry( pE ); // neuer freifliegender pActEntry xLockedList = new ScRangeList; @@ -1544,28 +1183,22 @@ void ScHTMLParser::TableOn( ImportInfo* pInfo ) } } } - - if( pTableData ) - pTableData->InsertTable( nMaxTable + 1, aTabName, nColCnt, nRowCnt, 1, 1, bBorderOn ); } nTable = ++nMaxTable; bFirstRow = TRUE; nFirstTableCell = pList->Count(); - if( bCalcWidthHeight ) - { - pLocalColOffset = new ScHTMLColOffset; - MakeColNoRef( pLocalColOffset, nColOffsetStart, 0, 0, 0 ); - } + pLocalColOffset = new ScHTMLColOffset; + MakeColNoRef( pLocalColOffset, nColOffsetStart, 0, 0, 0 ); } -void ScHTMLParser::TableOff( ImportInfo* pInfo ) +void ScHTMLLayoutParser::TableOff( ImportInfo* pInfo ) { if ( bInCell ) CloseEntry( pInfo ); if ( nColCnt > nColCntStart ) - NextRow( pInfo ); // das optionale TableRowOff war nicht + TableRowOff( pInfo ); // das optionale TableRowOff war nicht if ( !nTableLevel ) { DBG_ERROR( "Dummbatz-Dok! ohne oeffnendes " ); @@ -1578,7 +1211,7 @@ void ScHTMLParser::TableOff( ImportInfo* pInfo ) { ScEEParseEntry* pE = pS->pCellEntry; USHORT nRows = nRowCnt - pS->nRowCnt; - if ( nRows > 1 && bCalcWidthHeight ) + if ( nRows > 1 ) { // Groesse der Tabelle an dieser Position eintragen USHORT j; USHORT nCol = nColCntStart; @@ -1668,23 +1301,20 @@ void ScHTMLParser::TableOff( ImportInfo* pInfo ) } } - if( bCalcWidthHeight ) - { - SetWidths(); + SetWidths(); - if ( !pE->nWidth ) - pE->nWidth = nTableWidth; - else if ( pE->nWidth < nTableWidth ) - { - USHORT nOldOffset = pE->nOffset + pE->nWidth; - USHORT nNewOffset = pE->nOffset + nTableWidth; - ModifyOffset( pS->pLocalColOffset, nOldOffset, nNewOffset ); - USHORT nTmp = nNewOffset - pE->nOffset - pE->nWidth; - pE->nWidth = nNewOffset - pE->nOffset; - pS->nTableWidth += nTmp; - if ( pS->nColOffset >= nOldOffset ) - pS->nColOffset += nTmp; - } + if ( !pE->nWidth ) + pE->nWidth = nTableWidth; + else if ( pE->nWidth < nTableWidth ) + { + USHORT nOldOffset = pE->nOffset + pE->nWidth; + USHORT nNewOffset = pE->nOffset + nTableWidth; + ModifyOffset( pS->pLocalColOffset, nOldOffset, nNewOffset ); + USHORT nTmp = nNewOffset - pE->nOffset - pE->nWidth; + pE->nWidth = nNewOffset - pE->nOffset; + pS->nTableWidth += nTmp; + if ( pS->nColOffset >= nOldOffset ) + pS->nColOffset += nTmp; } nColCnt = pE->nCol + pE->nColOverlap; @@ -1728,10 +1358,8 @@ void ScHTMLParser::TableOff( ImportInfo* pInfo ) } -void ScHTMLParser::Image( ImportInfo* pInfo ) +void ScHTMLLayoutParser::Image( ImportInfo* pInfo ) { - if( !bCalcWidthHeight ) return; - if ( !pActEntry->pImageList ) pActEntry->pImageList = new ScHTMLImageList; ScHTMLImageList* pIL = pActEntry->pImageList; @@ -1827,10 +1455,8 @@ void ScHTMLParser::Image( ImportInfo* pInfo ) } -void ScHTMLParser::ColOn( ImportInfo* pInfo ) +void ScHTMLLayoutParser::ColOn( ImportInfo* pInfo ) { - if( !bCalcWidthHeight ) return; - const HTMLOptions* pOptions = ((HTMLParser*)pInfo->pParser)->GetOptions(); USHORT nArrLen = pOptions->Count(); for ( USHORT i = 0; i < nArrLen; i++ ) @@ -1850,11 +1476,8 @@ void ScHTMLParser::ColOn( ImportInfo* pInfo ) } -USHORT ScHTMLParser::GetWidthPixel( const HTMLOption* pOption ) +USHORT ScHTMLLayoutParser::GetWidthPixel( const HTMLOption* pOption ) { - if( !bCalcWidthHeight ) - return 0; - const String& rOptVal = pOption->GetString(); if ( rOptVal.Search('%') != STRING_NOTFOUND ) { // Prozent @@ -1874,7 +1497,7 @@ USHORT ScHTMLParser::GetWidthPixel( const HTMLOption* pOption ) } -void ScHTMLParser::AnchorOn( ImportInfo* pInfo ) +void ScHTMLLayoutParser::AnchorOn( ImportInfo* pInfo ) { const HTMLOptions* pOptions = ((HTMLParser*)pInfo->pParser)->GetOptions(); USHORT nArrLen = pOptions->Count(); @@ -1893,7 +1516,7 @@ void ScHTMLParser::AnchorOn( ImportInfo* pInfo ) } -BOOL ScHTMLParser::IsAtBeginningOfText( ImportInfo* pInfo ) +BOOL ScHTMLLayoutParser::IsAtBeginningOfText( ImportInfo* pInfo ) { ESelection& rSel = pActEntry->aSel; return rSel.nStartPara == rSel.nEndPara && @@ -1902,7 +1525,7 @@ BOOL ScHTMLParser::IsAtBeginningOfText( ImportInfo* pInfo ) } -void ScHTMLParser::FontOn( ImportInfo* pInfo ) +void ScHTMLLayoutParser::FontOn( ImportInfo* pInfo ) { if ( IsAtBeginningOfText( pInfo ) ) { // nur am Anfang des Textes, gilt dann fuer gesamte Zelle @@ -1940,7 +1563,7 @@ void ScHTMLParser::FontOn( ImportInfo* pInfo ) else if ( nSize > SC_HTML_FONTSIZES ) nSize = SC_HTML_FONTSIZES; pActEntry->aItemSet.Put( SvxFontHeightItem( - aFontHeights[nSize-1], 100, ATTR_FONT_HEIGHT ) ); + maFontHeights[nSize-1], 100, ATTR_FONT_HEIGHT ) ); } break; case HTML_O_COLOR : @@ -1956,7 +1579,7 @@ void ScHTMLParser::FontOn( ImportInfo* pInfo ) } -void ScHTMLParser::ProcToken( ImportInfo* pInfo ) +void ScHTMLLayoutParser::ProcToken( ImportInfo* pInfo ) { #ifdef DEBUG HTML_TOKEN_IDS eTokenId = (HTML_TOKEN_IDS)pInfo->nToken; @@ -1971,8 +1594,8 @@ void ScHTMLParser::ProcToken( ImportInfo* pInfo ) HTMLParser* pParser = (HTMLParser*) pInfo->pParser; const HTMLOptions* pOptions = pParser->GetOptions( &nContentOpt ); SfxFrameHTMLParser::ParseMetaOptions( - &pDoc->GetDocumentShell()->GetDocInfo(), - pDoc->GetDocumentShell()->GetHeaderAttributes(), + &mpDoc->GetDocumentShell()->GetDocInfo(), + mpDoc->GetDocumentShell()->GetHeaderAttributes(), pOptions, nMetaCnt, eEnc ); // If the encoding is set by a META tag, it may only overwrite the // current encoding if both, the current and the new encoding, are 1-BYTE @@ -1998,7 +1621,7 @@ void ScHTMLParser::ProcToken( ImportInfo* pInfo ) // Leerzeichen von Zeilenumbruechen raus aString.EraseLeadingChars(); aString.EraseTrailingChars(); - pDoc->GetDocumentShell()->GetDocInfo().SetTitle( aString ); + mpDoc->GetDocumentShell()->GetDocInfo().SetTitle( aString ); } bInTitle = FALSE; } @@ -2029,20 +1652,17 @@ void ScHTMLParser::ProcToken( ImportInfo* pInfo ) case HTML_TABLEHEADER_OFF: case HTML_TABLEDATA_OFF: // schliesst Zelle { - if ( bInCell ) - CloseEntry( pInfo ); // aber nur wenn's auch eine war + TableDataOff( pInfo ); } break; case HTML_TABLEROW_ON: // vor erster Zelle in Row { - if ( nColCnt > nColCntStart ) - NextRow( pInfo ); // das optionale TableRowOff war nicht - nColOffset = nColOffsetStart; + TableRowOn( pInfo ); } break; case HTML_TABLEROW_OFF: // nach letzter Zelle in Row { - NextRow( pInfo ); + TableRowOff( pInfo ); } break; case HTML_TABLE_OFF: @@ -2076,7 +1696,7 @@ void ScHTMLParser::ProcToken( ImportInfo* pInfo ) //2do: aktuelle Fontgroesse merken und einen groesser if ( IsAtBeginningOfText( pInfo ) ) pActEntry->aItemSet.Put( SvxFontHeightItem( - aFontHeights[3], 100, ATTR_FONT_HEIGHT ) ); + maFontHeights[3], 100, ATTR_FONT_HEIGHT ) ); } break; case HTML_SMALLPRINT_ON : @@ -2084,7 +1704,7 @@ void ScHTMLParser::ProcToken( ImportInfo* pInfo ) //2do: aktuelle Fontgroesse merken und einen kleiner if ( IsAtBeginningOfText( pInfo ) ) pActEntry->aItemSet.Put( SvxFontHeightItem( - aFontHeights[0], 100, ATTR_FONT_HEIGHT ) ); + maFontHeights[0], 100, ATTR_FONT_HEIGHT ) ); } break; case HTML_BOLD_ON : @@ -2143,3 +1763,1313 @@ void ScHTMLParser::ProcToken( ImportInfo* pInfo ) +// ============================================================================ +// HTML DATA QUERY PARSER +// ============================================================================ + +template< typename Type > +inline Type bound( const Type& rValue, const Type& rMin, const Type& rMax ) +{ return ::std::max( ::std::min( rValue, rMax ), rMin ); } + + +// ============================================================================ + +/** Iterates through all HTML tag options of the passed ImportInfo struct. */ +class ScHTMLOptionIterator +{ +private: + const HTMLOptions* mpOptions; /// The options array. + const HTMLOption* mpCurrOption; /// Current option. + sal_uInt16 mnCount; /// Size of the options array. + sal_uInt16 mnIndex; /// Next option to return. + +public: + explicit ScHTMLOptionIterator( const ImportInfo& rInfo ); + + inline bool is() const { return mnIndex < mnCount; } + inline const HTMLOption* operator->() const { return mpCurrOption; } + inline const HTMLOption& operator*() const { return *mpCurrOption; } + ScHTMLOptionIterator& operator++(); +}; + + +// ---------------------------------------------------------------------------- + +ScHTMLOptionIterator::ScHTMLOptionIterator( const ImportInfo& rInfo ) : + mpOptions( 0 ), + mpCurrOption( 0 ), + mnCount( 0 ), + mnIndex( 0 ) +{ + const HTMLParser* pParser = static_cast< const HTMLParser* >( rInfo.pParser ); + if( pParser ) + mpOptions = pParser->GetOptions(); + if( mpOptions ) + mnCount = mpOptions->Count(); + if( mnCount ) + mpCurrOption = mpOptions->GetObject( 0 ); +} + +ScHTMLOptionIterator& ScHTMLOptionIterator::operator++() +{ + if( mnIndex < mnCount ) ++mnIndex; + mpCurrOption = (mnIndex < mnCount) ? mpOptions->GetObject( mnIndex ) : 0; + return *this; +} + + +// ============================================================================ + +ScHTMLEntry::ScHTMLEntry( const SfxItemSet& rItemSet, ScHTMLTableId nTableId ) : + ScEEParseEntry( rItemSet ), + mbImportAlways( false ) +{ + nTab = nTableId; + bEntirePara = false; +} + +bool ScHTMLEntry::HasContents() const +{ + return mbImportAlways || aSel.HasRange() || aAltText.Len() || IsTable(); +} + +void ScHTMLEntry::AdjustStart( const ImportInfo& rInfo ) +{ + // set start position + aSel.nStartPara = rInfo.aSelection.nStartPara; + aSel.nStartPos = rInfo.aSelection.nStartPos; + // adjust end position + if( (aSel.nEndPara < aSel.nStartPara) || ((aSel.nEndPara == aSel.nStartPara) && (aSel.nEndPos < aSel.nStartPos)) ) + { + aSel.nEndPara = aSel.nStartPara; + aSel.nEndPos = aSel.nStartPos; + } +} + +void ScHTMLEntry::AdjustEnd( const ImportInfo& rInfo ) +{ + DBG_ASSERT( (aSel.nEndPara < rInfo.aSelection.nEndPara) || + ((aSel.nEndPara == rInfo.aSelection.nEndPara) && (aSel.nEndPos <= rInfo.aSelection.nEndPos)), + "ScHTMLQueryParser::AdjustEntryEnd - invalid end position" ); + // set end position + aSel.nEndPara = rInfo.aSelection.nEndPara; + aSel.nEndPos = rInfo.aSelection.nEndPos; +} + +void ScHTMLEntry::Strip( const EditEngine& rEditEngine ) +{ + // strip leading empty paragraphs + while( (aSel.nStartPara < aSel.nEndPara) && (rEditEngine.GetTextLen( aSel.nStartPara ) <= aSel.nStartPos) ) + { + ++aSel.nStartPara; + aSel.nStartPos = 0; + } + // strip trailing empty paragraphs + while( (aSel.nStartPara < aSel.nEndPara) && (aSel.nEndPos == 0) ) + { + --aSel.nEndPara; + aSel.nEndPos = rEditEngine.GetTextLen( aSel.nEndPara ); + } +} + + +// ============================================================================ + +/** A map of ScHTMLTable objects. + @descr Organizes the tables with a unique table key. Stores nested tables inside + the parent table and forms in this way a tree structure of tables. + An instance of this class ownes the contained table objects and deletes them + on destruction. */ +class ScHTMLTableMap +{ +private: + typedef ::boost::shared_ptr< ScHTMLTable > ScHTMLTablePtr; + typedef ::std::map< ScHTMLTableId, ScHTMLTablePtr > ScHTMLTableStdMap; + +public: + typedef ScHTMLTableStdMap::iterator iterator; + typedef ScHTMLTableStdMap::const_iterator const_iterator; + +private: + ScHTMLTable& mrParentTable; /// Reference to parent table. + ScHTMLTableStdMap maTables; /// Container for all table objects. + mutable ScHTMLTable* mpCurrTable; /// Current table, used for fast search. + +public: + explicit ScHTMLTableMap( ScHTMLTable& rParentTable ); + virtual ~ScHTMLTableMap(); + + inline iterator begin() { return maTables.begin(); } + inline const_iterator begin() const { return maTables.begin(); } + inline iterator end() { return maTables.end(); } + inline const_iterator end() const { return maTables.end(); } + inline bool empty() const { return maTables.empty(); } + + /** Returns the specified table. + @param nTableId Unique identifier of the table. + @param bDeep true = searches deep in all nested table; false = only in this container. */ + ScHTMLTable* FindTable( ScHTMLTableId nTableId, bool bDeep = true ) const; + + /** Inserts a new table into the container. This container owns the created table. + @param bPreFormText true = New table is based on preformatted text (
 tag). */
+    ScHTMLTable*                CreateTable( const ImportInfo& rInfo, bool bPreFormText );
+
+private:
+    /** Sets a working table with its index for search optimization. */
+    inline void                 SetCurrTable( ScHTMLTable* pTable ) const
+                                    { if( pTable ) mpCurrTable = pTable; }
+};
+
+
+// ----------------------------------------------------------------------------
+
+ScHTMLTableMap::ScHTMLTableMap( ScHTMLTable& rParentTable ) :
+    mrParentTable( rParentTable )
+{
+}
+
+ScHTMLTableMap::~ScHTMLTableMap()
+{
+}
+
+ScHTMLTable* ScHTMLTableMap::FindTable( ScHTMLTableId nTableId, bool bDeep ) const
+{
+    ScHTMLTable* pResult = 0;
+    if( mpCurrTable && (nTableId == mpCurrTable->GetTableId()) )
+        pResult = mpCurrTable;              // cached table
+    else
+    {
+        const_iterator aFind = maTables.find( nTableId );
+        if( aFind != maTables.end() )
+            pResult = aFind->second.get();  // table from this container
+    }
+
+    // not found -> search deep in nested tables
+    if( !pResult && bDeep )
+        for( const_iterator aIter = begin(), aEnd = end(); !pResult && (aIter != aEnd); ++aIter )
+            pResult = aIter->second->FindNestedTable( nTableId );
+
+    SetCurrTable( pResult );
+    return pResult;
+}
+
+ScHTMLTable* ScHTMLTableMap::CreateTable( const ImportInfo& rInfo, bool bPreFormText )
+{
+    ScHTMLTable* pTable = new ScHTMLTable( mrParentTable, rInfo, bPreFormText );
+    maTables[ pTable->GetTableId() ].reset( pTable );
+    SetCurrTable( pTable );
+    return pTable;
+}
+
+
+// ----------------------------------------------------------------------------
+
+/** Simplified forward iterator for convenience.
+    @descr  Before the iterator can be dereferenced, it must be tested with the
+    is() method. The iterator may be invalid directly after construction
+    (i.e. empty container). */
+class ScHTMLTableIterator
+{
+private:
+    ScHTMLTableMap::const_iterator maIter;
+    ScHTMLTableMap::const_iterator maEnd;
+
+public:
+    /** Constructs the iterator for the passed table map.
+        @param pTableMap  Pointer to the table map (is allowed to be NULL). */
+    explicit                    ScHTMLTableIterator( const ScHTMLTableMap* pTableMap );
+
+    inline bool                 is() const { return maIter != maEnd; }
+    inline ScHTMLTable*         operator->() { return maIter->second.get(); }
+    inline ScHTMLTable&         operator*() { return *maIter->second; }
+    inline ScHTMLTableIterator& operator++() { ++maIter; return *this; }
+};
+
+ScHTMLTableIterator::ScHTMLTableIterator( const ScHTMLTableMap* pTableMap )
+{
+    if( pTableMap )
+    {
+        maIter = pTableMap->begin();
+        maEnd = pTableMap->end();
+    }
+}
+
+
+// ============================================================================
+
+ScHTMLTableAutoId::ScHTMLTableAutoId( ScHTMLTableId& rnUnusedId ) :
+    mnTableId( rnUnusedId ),
+    mrnUnusedId( rnUnusedId )
+{
+    ++mrnUnusedId;
+}
+
+
+// ----------------------------------------------------------------------------
+
+ScHTMLTable::ScHTMLTable( ScHTMLTable& rParentTable, const ImportInfo& rInfo, bool bPreFormText ) :
+    mpParentTable( &rParentTable ),
+    maTableId( rParentTable.maTableId.mrnUnusedId ),
+    maTableItemSet( rParentTable.GetCurrItemSet() ),
+    mrEditEngine( rParentTable.mrEditEngine ),
+    mrEEParseList( rParentTable.mrEEParseList ),
+    mpCurrEntryList( 0 ),
+    maSize( 1, 1 ),
+    mbBorderOn( false ),
+    mbPreFormText( bPreFormText ),
+    mbRowOn( false ),
+    mbDataOn( false ),
+    mbPushEmptyLine( false )
+{
+    if( mbPreFormText )
+    {
+        ImplRowOn();
+        ImplDataOn( ScHTMLSize( 1, 1 ) );
+    }
+    else
+    {
+        ProcessFormatOptions( maTableItemSet, rInfo );
+        for( ScHTMLOptionIterator aIter( rInfo ); aIter.is(); ++aIter )
+        {
+            switch( aIter->GetToken() )
+            {
+                case HTML_O_BORDER:
+                    mbBorderOn = ((aIter->GetString().Len() == 0) || (aIter->GetNumber() != 0));
+                break;
+                case HTML_O_ID:
+                    maTableName = aIter->GetString();
+                break;
+            }
+        }
+    }
+
+    CreateNewEntry( rInfo );
+}
+
+ScHTMLTable::ScHTMLTable( SfxItemPool& rPool, EditEngine& rEditEngine, ScEEParseList& rEEParseList, ScHTMLTableId& rnUnusedId ) :
+    mpParentTable( 0 ),
+    maTableId( rnUnusedId ),
+    maTableItemSet( rPool ),
+    mrEditEngine( rEditEngine ),
+    mrEEParseList( rEEParseList ),
+    mpCurrEntryList( 0 ),
+    maSize( 1, 1 ),
+    mbBorderOn( false ),
+    mbPreFormText( false ),
+    mbRowOn( false ),
+    mbDataOn( false ),
+    mbPushEmptyLine( false )
+{
+    // open the first "cell" of the document
+    ImplRowOn();
+    ImplDataOn( ScHTMLSize( 1, 1 ) );
+    mpCurrEntry.reset( CreateEntry() );
+}
+
+ScHTMLTable::~ScHTMLTable()
+{
+}
+
+const SfxItemSet& ScHTMLTable::GetCurrItemSet() const
+{
+    // first try cell item set, then row item set, then table item set
+    return mpDataItemSet.get() ? *mpDataItemSet : (mpRowItemSet.get() ? *mpRowItemSet : maTableItemSet);
+}
+
+ScHTMLSize ScHTMLTable::GetSpan( const ScHTMLPos& rCellPos )
+{
+    ScHTMLSize aSpan( 1, 1 );
+    if( ScRange* pRange = maLockList.Find( rCellPos.MakeAddr() ) )
+        aSpan.Set( pRange->aEnd.Col() - pRange->aStart.Col() + 1, pRange->aEnd.Row() - pRange->aStart.Row() + 1 );
+    return aSpan;
+}
+
+ScHTMLTable* ScHTMLTable::FindNestedTable( ScHTMLTableId nTableId ) const
+{
+    return mpNestedTables.get() ? mpNestedTables->FindTable( nTableId, true ) : 0;
+}
+
+void ScHTMLTable::PutItem( const SfxPoolItem& rItem )
+{
+    DBG_ASSERT( mpCurrEntry.get(), "ScHTMLTable::PutItem - no current entry" );
+    if( mpCurrEntry.get() && mpCurrEntry->IsEmpty() )
+        mpCurrEntry->aItemSet.Put( rItem );
+}
+
+void ScHTMLTable::PutText( const ImportInfo& rInfo )
+{
+    DBG_ASSERT( mpCurrEntry.get(), "ScHTMLTable::PutText - no current entry" );
+    if( mpCurrEntry.get() )
+    {
+        if( !mpCurrEntry->HasContents() && IsSpaceCharInfo( rInfo ) )
+            mpCurrEntry->AdjustStart( rInfo );
+        else
+            mpCurrEntry->AdjustEnd( rInfo );
+    }
+}
+
+void ScHTMLTable::InsertPara( const ImportInfo& rInfo )
+{
+    if( mpCurrEntry.get() && mbDataOn && !IsEmptyCell() )
+        mpCurrEntry->SetImportAlways();
+    PushEntry( rInfo );
+    CreateNewEntry( rInfo );
+    InsertLeadingEmptyLine();
+}
+
+void ScHTMLTable::BreakOn()
+{
+    // empty line, if 
is at start of cell + mbPushEmptyLine = !mbPreFormText && mbDataOn && IsEmptyCell(); +} + +void ScHTMLTable::HeadingOn() +{ + // call directly, InsertPara() has not been called before + InsertLeadingEmptyLine(); +} + +void ScHTMLTable::InsertLeadingEmptyLine() +{ + // empty line, if

,

, , or are not at start of cell + mbPushEmptyLine = !mbPreFormText && mbDataOn && !IsEmptyCell(); +} + +void ScHTMLTable::AnchorOn() +{ + DBG_ASSERT( mpCurrEntry.get(), "ScHTMLTable::AnchorOn - no current entry" ); + // don't skip entries with single hyperlinks + if( mpCurrEntry.get() ) + mpCurrEntry->SetImportAlways(); +} + +ScHTMLTable* ScHTMLTable::TableOn( const ImportInfo& rInfo ) +{ + PushEntry( rInfo ); + return InsertNestedTable( rInfo, false ); +} + +ScHTMLTable* ScHTMLTable::TableOff( const ImportInfo& rInfo ) +{ + return mbPreFormText ? this : CloseTable( rInfo ); +} + +ScHTMLTable* ScHTMLTable::PreOn( const ImportInfo& rInfo ) +{ + PushEntry( rInfo ); + return InsertNestedTable( rInfo, true ); +} + +ScHTMLTable* ScHTMLTable::PreOff( const ImportInfo& rInfo ) +{ + return mbPreFormText ? CloseTable( rInfo ) : this; +} + +void ScHTMLTable::RowOn( const ImportInfo& rInfo ) +{ + PushEntry( rInfo, true ); + if( mpParentTable && !mbPreFormText ) // no rows allowed in global and preformatted tables + { + ImplRowOn(); + ProcessFormatOptions( *mpRowItemSet, rInfo ); + } + CreateNewEntry( rInfo ); +} + +void ScHTMLTable::RowOff( const ImportInfo& rInfo ) +{ + PushEntry( rInfo, true ); + if( mpParentTable && !mbPreFormText ) // no rows allowed in global and preformatted tables + ImplRowOff(); + CreateNewEntry( rInfo ); +} + +void ScHTMLTable::DataOn( const ImportInfo& rInfo ) +{ + PushEntry( rInfo, true ); + if( mpParentTable && !mbPreFormText ) // no cells allowed in global and preformatted tables + { + // read needed options from the
+ case HTML_TABLEROW_OFF: mpCurrTable->RowOff( rInfo ); break; // + case HTML_TABLEHEADER_ON: // + case HTML_PREFORMTXT_ON: PreOn( rInfo ); break; //
+        case HTML_PREFORMTXT_OFF:   PreOff( rInfo );                break;  // 
+ +// --- formatting --- + case HTML_FONT_ON: FontOn( rInfo ); break; // + + case HTML_BIGPRINT_ON: // + //! TODO: store current font size, use following size + mpCurrTable->PutItem( SvxFontHeightItem( maFontHeights[ 3 ], 100, ATTR_FONT_HEIGHT ) ); + break; + case HTML_SMALLPRINT_ON: // + //! TODO: store current font size, use preceding size + mpCurrTable->PutItem( SvxFontHeightItem( maFontHeights[ 0 ], 100, ATTR_FONT_HEIGHT ) ); + break; + + case HTML_BOLD_ON: // + case HTML_STRONG_ON: // + mpCurrTable->PutItem( SvxWeightItem( WEIGHT_BOLD, ATTR_FONT_WEIGHT ) ); + break; + + case HTML_ITALIC_ON: // + case HTML_EMPHASIS_ON: // + case HTML_ADDRESS_ON: //
+ case HTML_BLOCKQUOTE_ON: //
+ case HTML_BLOCKQUOTE30_ON: // + case HTML_CITIATION_ON: // + case HTML_VARIABLE_ON: // + mpCurrTable->PutItem( SvxPostureItem( ITALIC_NORMAL, ATTR_FONT_POSTURE ) ); + break; + + case HTML_DEFINSTANCE_ON: // + mpCurrTable->PutItem( SvxWeightItem( WEIGHT_BOLD, ATTR_FONT_WEIGHT ) ); + mpCurrTable->PutItem( SvxPostureItem( ITALIC_NORMAL, ATTR_FONT_POSTURE ) ); + break; + + case HTML_UNDERLINE_ON: // + mpCurrTable->PutItem( SvxUnderlineItem( UNDERLINE_SINGLE, ATTR_FONT_UNDERLINE ) ); + break; + } +} + +void ScHTMLQueryParser::InsertText( const ImportInfo& rInfo ) +{ + mpCurrTable->PutText( rInfo ); + if( mbTitleOn ) + maTitle.Append( rInfo.aText ); +} + +void ScHTMLQueryParser::FontOn( const ImportInfo& rInfo ) +{ + for( ScHTMLOptionIterator aIter( rInfo ); aIter.is(); ++aIter ) + { + switch( aIter->GetToken() ) + { + case HTML_O_FACE : + { + const String& rFace = aIter->GetString(); + String aFontName; + xub_StrLen nPos = 0; + while( nPos != STRING_NOTFOUND ) + { + // font list separator: VCL = ';' HTML = ',' + String aFName = rFace.GetToken( 0, ',', nPos ); + aFName.EraseLeadingAndTrailingChars(); + ScfTools::AddToken( aFontName, aFName, ';' ); + } + if ( aFontName.Len() ) + mpCurrTable->PutItem( SvxFontItem( FAMILY_DONTKNOW, + aFontName, EMPTY_STRING, PITCH_DONTKNOW, + RTL_TEXTENCODING_DONTKNOW, ATTR_FONT ) ); + } + break; + case HTML_O_SIZE : + { + sal_uInt32 nSize = bound( aIter->GetNumber(), 1UL, SC_HTML_FONTSIZES ); + mpCurrTable->PutItem( SvxFontHeightItem( maFontHeights[ nSize - 1 ], 100, ATTR_FONT_HEIGHT ) ); + } + break; + case HTML_O_COLOR : + { + Color aColor; + aIter->GetColor( aColor ); + mpCurrTable->PutItem( SvxColorItem( aColor, ATTR_FONT_COLOR ) ); + } + break; + } + } +} + +void ScHTMLQueryParser::MetaOn( const ImportInfo& rInfo ) +{ + if( mpDoc->GetDocumentShell() ) + { + sal_uInt16 nContentOpt = HTML_O_CONTENT; + rtl_TextEncoding eEnc = RTL_TEXTENCODING_DONTKNOW; + HTMLParser* pParser = static_cast< HTMLParser* >( rInfo.pParser ); + const HTMLOptions* pOptions = pParser->GetOptions( &nContentOpt ); + sal_uInt16 nMetaCnt = 0; + SfxFrameHTMLParser::ParseMetaOptions( + &mpDoc->GetDocumentShell()->GetDocInfo(), + mpDoc->GetDocumentShell()->GetHeaderAttributes(), + pOptions, nMetaCnt, eEnc ); + // If the encoding is set by a META tag, it may only overwrite the + // current encoding if both, the current and the new encoding, are 1-BYTE + // encodings. Everything else cannot lead to reasonable results. + if( rtl_isOctetTextEncoding( eEnc ) && + rtl_isOctetTextEncoding( pParser->GetSrcEncoding() ) ) + { + eEnc = GetExtendedCompatibilityTextEncoding( eEnc ); + pParser->SetSrcEncoding( eEnc ); + } + } +} + +void ScHTMLQueryParser::TitleOn( const ImportInfo& rInfo ) +{ + mbTitleOn = true; + maTitle.Erase(); +} + +void ScHTMLQueryParser::TitleOff( const ImportInfo& rInfo ) +{ + if( mbTitleOn ) + { + maTitle.EraseLeadingAndTrailingChars(); + if( maTitle.Len() && mpDoc->GetDocumentShell() ) + mpDoc->GetDocumentShell()->GetDocInfo().SetTitle( maTitle ); + InsertText( rInfo ); + mbTitleOn = false; + } +} + +void ScHTMLQueryParser::TableOn( const ImportInfo& rInfo ) +{ + mpCurrTable = mpCurrTable->TableOn( rInfo ); +} + +void ScHTMLQueryParser::TableOff( const ImportInfo& rInfo ) +{ + mpCurrTable = mpCurrTable->TableOff( rInfo ); +} + +void ScHTMLQueryParser::PreOn( const ImportInfo& rInfo ) +{ + mpCurrTable = mpCurrTable->PreOn( rInfo ); +} + +void ScHTMLQueryParser::PreOff( const ImportInfo& rInfo ) +{ + mpCurrTable = mpCurrTable->PreOff( rInfo ); +} + + +// ---------------------------------------------------------------------------- + +IMPL_LINK( ScHTMLQueryParser, HTMLImportHdl, const ImportInfo*, pInfo ) +{ +#ifdef DEBUG + HTML_TOKEN_IDS eTokenId = static_cast< HTML_TOKEN_IDS >( pInfo->nToken ); +#endif + switch( pInfo->eState ) + { + case HTMLIMP_START: + break; + + case HTMLIMP_NEXTTOKEN: + case HTMLIMP_UNKNOWNATTR: + ProcessToken( *pInfo ); + break; + + case HTMLIMP_INSERTPARA: + mpCurrTable->InsertPara( *pInfo ); + break; + + case HTMLIMP_SETATTR: + case HTMLIMP_INSERTTEXT: + case HTMLIMP_INSERTFIELD: + break; + + case HTMLIMP_END: + while( mpCurrTable->GetTableId() != SC_HTML_GLOBAL_TABLE ) + TableOff( *pInfo ); + break; + + default: + DBG_ERRORFILE( "ScHTMLQueryParser::HTMLImportHdl - unknown ImportInfo::eState" ); + } + return 0; +} + + +// ============================================================================ + diff --git a/sc/source/filter/inc/XclExpChangeTrack.hxx b/sc/source/filter/inc/XclExpChangeTrack.hxx index c12705f29523..984e6c001cc8 100644 --- a/sc/source/filter/inc/XclExpChangeTrack.hxx +++ b/sc/source/filter/inc/XclExpChangeTrack.hxx @@ -2,9 +2,9 @@ * * $RCSfile: XclExpChangeTrack.hxx,v $ * - * $Revision: 1.9 $ + * $Revision: 1.10 $ * - * last change: $Author: dr $ $Date: 2002-11-21 12:20:39 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:56 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses diff --git a/sc/source/filter/inc/XclImpChangeTrack.hxx b/sc/source/filter/inc/XclImpChangeTrack.hxx index 2687d934ea83..309f1d532a19 100644 --- a/sc/source/filter/inc/XclImpChangeTrack.hxx +++ b/sc/source/filter/inc/XclImpChangeTrack.hxx @@ -2,9 +2,9 @@ * * $RCSfile: XclImpChangeTrack.hxx,v $ * - * $Revision: 1.12 $ + * $Revision: 1.13 $ * - * last change: $Author: dr $ $Date: 2002-12-06 16:41:07 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:57 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses diff --git a/sc/source/filter/inc/colrowst.hxx b/sc/source/filter/inc/colrowst.hxx index 22054edc126f..313a2eac48a5 100644 --- a/sc/source/filter/inc/colrowst.hxx +++ b/sc/source/filter/inc/colrowst.hxx @@ -2,9 +2,9 @@ * * $RCSfile: colrowst.hxx,v $ * - * $Revision: 1.12 $ + * $Revision: 1.13 $ * - * last change: $Author: dr $ $Date: 2002-11-21 12:20:41 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:58 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses diff --git a/sc/source/filter/inc/dif.hxx b/sc/source/filter/inc/dif.hxx index 3fae570e6e1c..bc71287788ad 100644 --- a/sc/source/filter/inc/dif.hxx +++ b/sc/source/filter/inc/dif.hxx @@ -2,9 +2,9 @@ * * $RCSfile: dif.hxx,v $ * - * $Revision: 1.1.1.1 $ + * $Revision: 1.2 $ * - * last change: $Author: hr $ $Date: 2000-09-18 16:45:12 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:58 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -86,15 +86,17 @@ class SvNumberFormatter; class ScDocument; class ScPatternAttr; -extern const sal_Char* pKeyTABLE; -extern const sal_Char* pKeyVECTORS; -extern const sal_Char* pKeyTUPLES; -extern const sal_Char* pKeyDATA; -extern const sal_Char* pKeyBOT; -extern const sal_Char* pKeyEOD; -extern const sal_Char* pKeyTRUE; -extern const sal_Char* pKeyFALSE; -extern const sal_Char* pKeyNA; +extern const sal_Unicode pKeyTABLE[]; +extern const sal_Unicode pKeyVECTORS[]; +extern const sal_Unicode pKeyTUPLES[]; +extern const sal_Unicode pKeyDATA[]; +extern const sal_Unicode pKeyBOT[]; +extern const sal_Unicode pKeyEOD[]; +extern const sal_Unicode pKeyTRUE[]; +extern const sal_Unicode pKeyFALSE[]; +extern const sal_Unicode pKeyNA[]; +extern const sal_Unicode pKeyV[]; +extern const sal_Unicode pKey1_0[]; enum TOPIC @@ -112,7 +114,7 @@ enum DATASET { D_BOT, D_EOD, D_NUMERIC, D_STRING, D_UNKNOWN, D_SYNT_ERROR }; class DifParser { public: - ByteString aData; + String aData; double fVal; UINT32 nVector; UINT32 nVal; @@ -122,31 +124,10 @@ private: SvNumberFormatter* pNumFormatter; SvStream& rIn; BOOL bPlain; -#if __ALIGNMENT4 == 1 - static UINT32 nBOT; - static UINT32 nEOD; - static UINT32 n1_0; - static UINT16 nV; -#else - static sal_Char cBOT_0; - static sal_Char cEOD_0; - static sal_Char c1_0_0; - static sal_Char cBOT_1; - static sal_Char cEOD_1; - static sal_Char c1_0_1; - static sal_Char cBOT_2; - static sal_Char cEOD_2; - static sal_Char c1_0_2; - static sal_Char cBOT_3; - static sal_Char cEOD_3; - static sal_Char c1_0_3; - static sal_Char cV_0; - static sal_Char cV_1; -#endif - static inline BOOL IsBOT( const sal_Char* pRef ); - static inline BOOL IsEOD( const sal_Char* pRef ); - static inline BOOL Is1_0( const sal_Char* pRef ); + static inline BOOL IsBOT( const sal_Unicode* pRef ); + static inline BOOL IsEOD( const sal_Unicode* pRef ); + static inline BOOL Is1_0( const sal_Unicode* pRef ); public: DifParser( SvStream&, const UINT32 nOption, ScDocument&, CharSet ); @@ -154,75 +135,59 @@ public: DATASET GetNextDataset( void ); - const sal_Char* ScanIntVal( const sal_Char* pStart, UINT32& rRet ); - BOOL ScanFloatVal( const sal_Char* pStart ); + const sal_Unicode* ScanIntVal( const sal_Unicode* pStart, UINT32& rRet ); + BOOL ScanFloatVal( const sal_Unicode* pStart ); - inline BOOL IsNumber( const sal_Char cChar ); - inline BOOL IsNumberEnding( const sal_Char cChar ); + inline BOOL IsNumber( const sal_Unicode cChar ); + inline BOOL IsNumberEnding( const sal_Unicode cChar ); - static inline BOOL IsV( const sal_Char* pRef ); + static inline BOOL IsV( const sal_Unicode* pRef ); inline BOOL IsPlain( void ) const; }; -inline BOOL DifParser::IsBOT( const sal_Char* pRef ) +inline BOOL DifParser::IsBOT( const sal_Unicode* pRef ) { -#if __ALIGNMENT4 == 1 - return ( nBOT == *( ( UINT32* ) pRef ) ); -#else - return ( pRef[ 0 ] == cBOT_0 && - pRef[ 1 ] == cBOT_1 && - pRef[ 2 ] == cBOT_2 && - pRef[ 3 ] == cBOT_3 ); -#endif + return ( pRef[ 0 ] == pKeyBOT[0] && + pRef[ 1 ] == pKeyBOT[1] && + pRef[ 2 ] == pKeyBOT[2] && + pRef[ 3 ] == pKeyBOT[3] ); } -inline BOOL DifParser::IsEOD( const sal_Char* pRef ) +inline BOOL DifParser::IsEOD( const sal_Unicode* pRef ) { -#if __ALIGNMENT4 == 1 - return ( nEOD == *( ( UINT32* ) pRef ) ); -#else - return ( pRef[ 0 ] == cEOD_0 && - pRef[ 1 ] == cEOD_1 && - pRef[ 2 ] == cEOD_2 && - pRef[ 3 ] == cEOD_3 ); -#endif + return ( pRef[ 0 ] == pKeyEOD[0] && + pRef[ 1 ] == pKeyEOD[1] && + pRef[ 2 ] == pKeyEOD[2] && + pRef[ 3 ] == pKeyEOD[3] ); } -inline BOOL DifParser::Is1_0( const sal_Char* pRef ) +inline BOOL DifParser::Is1_0( const sal_Unicode* pRef ) { -#if __ALIGNMENT4 == 1 - return ( n1_0 == *( ( UINT32* ) pRef ) ); -#else - return ( pRef[ 0 ] == c1_0_0 && - pRef[ 1 ] == c1_0_1 && - pRef[ 2 ] == c1_0_2 && - pRef[ 3 ] == c1_0_3 ); -#endif + return ( pRef[ 0 ] == pKey1_0[0] && + pRef[ 1 ] == pKey1_0[1] && + pRef[ 2 ] == pKey1_0[2] && + pRef[ 3 ] == pKey1_0[3] ); } -inline BOOL DifParser::IsV( const sal_Char* pRef ) +inline BOOL DifParser::IsV( const sal_Unicode* pRef ) { -#if __ALIGNMENT4 == 1 - return ( nV == *( ( UINT16 * ) pRef ) ); -#else - return ( pRef[ 0 ] == cV_0 && - pRef[ 1 ] == cV_1 ); -#endif + return ( pRef[ 0 ] == pKeyV[0] && + pRef[ 1 ] == pKeyV[1] ); } -inline BOOL DifParser::IsNumber( const sal_Char cChar ) +inline BOOL DifParser::IsNumber( const sal_Unicode cChar ) { return ( cChar >= '0' && cChar <= '9' ); } -inline BOOL DifParser::IsNumberEnding( const sal_Char cChar ) +inline BOOL DifParser::IsNumberEnding( const sal_Unicode cChar ) { return ( cChar == 0x00 ); } diff --git a/sc/source/filter/inc/eeparser.hxx b/sc/source/filter/inc/eeparser.hxx index 90384518866d..e9b482a65f37 100644 --- a/sc/source/filter/inc/eeparser.hxx +++ b/sc/source/filter/inc/eeparser.hxx @@ -2,9 +2,9 @@ * * $RCSfile: eeparser.hxx,v $ * - * $Revision: 1.1.1.1 $ + * $Revision: 1.2 $ * - * last change: $Author: hr $ $Date: 2000-09-18 16:45:12 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:59 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -120,13 +120,21 @@ struct ScEEParseEntry USHORT nOffset; // HTML PixelOffset USHORT nWidth; // HTML PixelWidth BOOL bHasGraphic; // HTML any image loaded + bool bEntirePara; // TRUE = use entire paragraph, false = use selection ScEEParseEntry( SfxItemPool* pPool ) : aItemSet( *pPool ), pValStr( NULL ), pNumStr( NULL ), pName( NULL ), pImageList( NULL ), nCol((USHORT)~0), nRow((USHORT)~0), nTab(0), nColOverlap(1), nRowOverlap(1), - nOffset(0), nWidth(0), bHasGraphic(FALSE) + nOffset(0), nWidth(0), bHasGraphic(FALSE), bEntirePara(true) + {} + ScEEParseEntry( const SfxItemSet& rItemSet ) : + aItemSet( rItemSet ), pValStr( NULL ), + pNumStr( NULL ), pName( NULL ), pImageList( NULL ), + nCol((USHORT)~0), nRow((USHORT)~0), nTab(0), + nColOverlap(1), nRowOverlap(1), + nOffset(0), nWidth(0), bHasGraphic(FALSE), bEntirePara(true) {} ~ScEEParseEntry() { diff --git a/sc/source/filter/inc/excdefs.hxx b/sc/source/filter/inc/excdefs.hxx index 1aca20f52dcc..58fc05d568e7 100644 --- a/sc/source/filter/inc/excdefs.hxx +++ b/sc/source/filter/inc/excdefs.hxx @@ -2,9 +2,9 @@ * * $RCSfile: excdefs.hxx,v $ * - * $Revision: 1.36 $ + * $Revision: 1.37 $ * - * last change: $Author: dr $ $Date: 2002-11-21 12:20:41 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:59 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -70,11 +70,6 @@ #define EXC_TABBUF_INVALID 0xFFFF -// Style info ================================================================= - -#define EXC_ROT_STACKED 0xFF - - // (0x001C) NOTE ============================================================== #define EXC_NOTE5_MAXTEXT 2048 diff --git a/sc/source/filter/inc/excdoc.hxx b/sc/source/filter/inc/excdoc.hxx index b79baa869e4a..a1be69b8de34 100644 --- a/sc/source/filter/inc/excdoc.hxx +++ b/sc/source/filter/inc/excdoc.hxx @@ -2,9 +2,9 @@ * * $RCSfile: excdoc.hxx,v $ * - * $Revision: 1.9 $ + * $Revision: 1.10 $ * - * last change: $Author: dr $ $Date: 2002-11-21 12:20:41 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:59 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses diff --git a/sc/source/filter/inc/excform.hxx b/sc/source/filter/inc/excform.hxx index d787fd48fca3..f6423f171812 100644 --- a/sc/source/filter/inc/excform.hxx +++ b/sc/source/filter/inc/excform.hxx @@ -2,9 +2,9 @@ * * $RCSfile: excform.hxx,v $ * - * $Revision: 1.8 $ + * $Revision: 1.9 $ * - * last change: $Author: dr $ $Date: 2002-11-21 12:20:42 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:04:59 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -63,7 +63,7 @@ #ifndef _EXCFORM_HXX #define _EXCFORM_HXX -#ifndef _XLTOOLS_HXX +#ifndef SC_XLTOOLS_HXX #include "xltools.hxx" #endif diff --git a/sc/source/filter/inc/excimp8.hxx b/sc/source/filter/inc/excimp8.hxx index 4eee3395e38a..4f2812158d9e 100644 --- a/sc/source/filter/inc/excimp8.hxx +++ b/sc/source/filter/inc/excimp8.hxx @@ -2,9 +2,9 @@ * * $RCSfile: excimp8.hxx,v $ * - * $Revision: 1.45 $ + * $Revision: 1.46 $ * - * last change: $Author: jmarmion $ $Date: 2002-12-10 14:05:37 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:05:00 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -107,8 +107,6 @@ class XclImpAutoFilterBuffer; class XclImpWebQueryBuffer; -class FilterProgressBar; - class ExcCondForm : private ExcRoot, private XclImpRoot @@ -151,9 +149,6 @@ class ExcCondFormList : protected List class ImportExcel8 : public ImportExcel { protected: - XclImpObjectManager aObjManager; - BOOL bObjSection; - ExcScenarioList aScenList; XclImpPivotTableList aPivotTabList; @@ -165,6 +160,8 @@ class ImportExcel8 : public ImportExcel XclImpAutoFilterBuffer* pAutoFilterBuffer; // ranges for autofilter and advanced filter + BOOL bObjSection; + BOOL bHasBasic; BOOL bFirstScl; // only one Scl-Record has to be read per chart! @@ -225,9 +222,7 @@ class ImportExcel8 : public ImportExcel virtual void EndAllChartObjects( void ); // -> excobj.cxx virtual void PostDocLoad( void ); - virtual FltError ReadChart8( ScfProgressBar&, const BOOL bOwnTab ); - void CreateTmpCtrlStorage( void ); - // if possible generate a SvxMSConvertOCXControls compatibel storage + virtual FltError ReadChart8( ScfSimpleProgressBar&, const BOOL bOwnTab ); public: ImportExcel8( @@ -256,10 +251,15 @@ private: BOOL bActive; BOOL bHasDropDown; BOOL bHasConflict; + BOOL bCriteria; + BOOL bAutoOrAdvanced; + ScRange aCriteriaRange; + String aFilterName; void CreateFromDouble( String& rStr, double fVal ); void SetCellAttribs(); void InsertQueryParam(); + void AmendAFName(const BOOL bUseUnNamed); protected: public: @@ -280,13 +280,18 @@ public: inline void Activate() { bActive = TRUE; } void SetAdvancedRange( const ScRange* pRange ); void SetExtractPos( const ScAddress& rAddr ); - void Apply(); + inline void SetAutoOrAdvanced() { bAutoOrAdvanced = TRUE; } + void Apply( const BOOL bUseUnNamed = FALSE ); + void CreateScDBData( const BOOL bUseUnNamed ); + void EnableRemoveFilter(); }; class XclImpAutoFilterBuffer : private List { private: + UINT16 nAFActiveCount; + inline XclImpAutoFilterData* _First() { return (XclImpAutoFilterData*) List::First(); } inline XclImpAutoFilterData* _Next() { return (XclImpAutoFilterData*) List::Next(); } @@ -294,6 +299,7 @@ private: { List::Insert( pData, LIST_APPEND ); } protected: public: + XclImpAutoFilterBuffer(); virtual ~XclImpAutoFilterBuffer(); void Insert( RootData* pRoot, const ScRange& rRange, @@ -304,6 +310,8 @@ public: XclImpAutoFilterData* GetByTab( UINT16 nTab ); BOOL HasDropDown( UINT16 nCol, UINT16 nRow, UINT16 nTab ); + inline void IncrementActiveAF() { nAFActiveCount++; } + inline BOOL UseUnNamed() { return nAFActiveCount == 1; } }; diff --git a/sc/source/filter/inc/excrecds.hxx b/sc/source/filter/inc/excrecds.hxx index 897f8b80d676..d2487e6eaa46 100644 --- a/sc/source/filter/inc/excrecds.hxx +++ b/sc/source/filter/inc/excrecds.hxx @@ -2,9 +2,9 @@ * * $RCSfile: excrecds.hxx,v $ * - * $Revision: 1.30 $ + * $Revision: 1.31 $ * - * last change: $Author: dr $ $Date: 2002-12-06 16:41:07 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:05:00 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -354,34 +354,6 @@ public: }; -//--------------------------------------------------------- class ExcDummy_XF - -// Ersatz fuer Default XF Records - -class ExcDummy_XF : public ExcDummyRec -{ -private: - static const BYTE pMyData[]; - static const ULONG nMyLen; -public: - virtual ULONG GetLen( void ) const; - virtual const BYTE* GetData( void ) const; -}; - - -//------------------------------------------------------ class ExcDummy_Style - -// Ersatz fuer Default Style Records - -class ExcDummy_Style : public ExcDummyRec -{ -private: - static const BYTE pMyData[]; - static const ULONG nMyLen; -public: - virtual ULONG GetLen( void ) const; - virtual const BYTE* GetData( void ) const; -}; - - //------------------------------------------------------ class ExcBundlesheet - class ExcBundlesheetBase : public ExcRecord @@ -493,8 +465,7 @@ protected: const ScAddress rPos, const ScPatternAttr* pAttr, RootData& rRootData, - const ULONG nAltNumForm = NUMBERFORMAT_ENTRY_NOT_FOUND, - BOOL bForceAltNumForm = FALSE ); + const ULONG nAltNumForm = NUMBERFORMAT_ENTRY_NOT_FOUND ); virtual void SaveCont( XclExpStream& rStrm ); virtual void SaveDiff( XclExpStream& rStrm ); @@ -697,6 +668,21 @@ public: virtual UINT16 GetNum( void ) const; }; +/*----------------------------------------------------------------------*/ + +class ExcFmlaResultStr : public XclExpRecord +{ +private: + XclExpString maResultText; + +public: + + ExcFmlaResultStr(const XclExpString &aFmlaText); + virtual ~ExcFmlaResultStr(); + +private: + virtual void WriteBody( XclExpStream& rStrm ); +}; //---------------------------------------------------------- class ExcFormula - @@ -706,6 +692,7 @@ private: sal_Char* pData; UINT16 nFormLen; BOOL bShrdFmla; + ScFormulaCell* pFCell; virtual void SaveDiff( XclExpStream& rStrm ); // instead of SaveCont() virtual ULONG GetDiffLen( void ) const; @@ -716,12 +703,13 @@ public: const ScPatternAttr *pAttr, RootData& rRootData, const ULONG nAltNumForm, - BOOL bForceAltNumForm, const ScTokenArray& rCode, ExcArray** ppArray = NULL, ScMatrixMode eMM = MM_NONE, ExcShrdFmla** ppShrdFmla = NULL, - ExcArrays* pShrdFmlas = NULL ); + ExcArrays* pShrdFmlas = NULL, + ScFormulaCell* pFCell = NULL, + ExcFmlaResultStr **pFormulaResult = NULL); ~ExcFormula(); inline const ScAddress& GetPosition() const { return aPos; } // from ExcCell @@ -729,6 +717,8 @@ public: void SetTableOp( USHORT nCol, USHORT nRow ); // for TableOp export virtual UINT16 GetNum( void ) const; + + static BYTE ScErrorCodeToExc(UINT16 nErrorCode); }; @@ -838,6 +828,7 @@ private: void SetName( const String& rRangeName ); void SetUniqueName( const String& rRangeName ); BOOL SetBuiltInName( const String& rName, UINT8 nKey ); + BOOL IsBuiltInAFName( const String& rName, UINT8 nKey ); virtual void SaveCont( XclExpStream& rStrm ); @@ -1076,7 +1067,6 @@ private: public: ExcColinfo( UINT16 nCol, UINT16 nTab, UINT16 nXF, RootData&, ExcEOutline& rOutline ); - void SetWidth( UINT16 nWidth, double fColScale ); // if expandable, delete rpExp and set to NULL void Expand( ExcColinfo*& rpExp ); @@ -1086,68 +1076,6 @@ public: }; -//--------------------------------------------------------------- class ExcXf - - -class ExcXf : public ExcRecord, protected XclExpRoot -{ -protected: - UINT16 nIfnt; - UINT16 nIfmt; - - UINT16 nOffs8; - - UINT32 nIcvForeSer; - UINT32 nIcvBackSer; - UINT16 nFls; - - UINT32 nIcvTopSer; - UINT32 nIcvBotSer; - UINT32 nIcvLftSer; - UINT32 nIcvRigSer; - - UINT16 nDgTop; - UINT16 nDgBottom; - UINT16 nDgLeft; - UINT16 nDgRight; - - XclHorAlign eAlc; - XclVerAlign eAlcV; - XclTextOrient eOri; - BOOL bFWrap; - BOOL bFSxButton; - - BOOL bStyle; - - BOOL bAtrNum; - BOOL bAtrFnt; - BOOL bAtrAlc; - BOOL bAtrBdr; - BOOL bAtrPat; - BOOL bAtrProt; - -#ifdef DBG_UTIL - static UINT16 nObjCnt; -#endif - - virtual void SaveCont( XclExpStream& rStrm ); - -public: - ExcXf( const XclExpRoot& rRoot, - UINT16 nFont, UINT16 nForm, const ScPatternAttr*, BOOL& rbLineBreak, - BOOL bStyle = FALSE ); - // rbLineBreak = TRUE erzwingt Wrap, - // return von rbLineBreak enthaelt immer tatsaechliches Wrap -#ifdef DBG_UTIL - virtual ~ExcXf(); -#endif - - virtual UINT16 GetNum( void ) const; - virtual ULONG GetLen( void ) const; - - static void ScToExcBorderLine( XclExpPalette& rPalette, const SvxBorderLine*, UINT32& rIcvSer, UINT16& rDg ); -}; - - //------------------------------------------------------ class ExcExterncount - class ExcExterncount : public ExcRecord, ExcRoot @@ -1250,68 +1178,6 @@ public: }; -//------------------------------------------------------------ class UsedList - - -class UsedList : public List, public ExcEmptyRec -{ -private: -protected: - UINT16 nBaseIndex; - -public: - inline UsedList() {} - - inline void SetBaseIndex( UINT16 nNewVal ) { nBaseIndex = nNewVal; } - - virtual void Save( XclExpStream& rStrm ); -}; - - -//-------------------------------------------------------- class UsedAttrList - -// a list of ENTRY structs - -class UsedAttrList : public UsedList, ExcRoot -{ -private: - struct ENTRY - { - const ScPatternAttr* pPattAttr; - ExcXf* pXfRec; - BOOL bLineBreak; - ULONG nAltNumForm; - - inline ENTRY() : nAltNumForm( NUMBERFORMAT_ENTRY_NOT_FOUND ), pXfRec( NULL ) {} - inline ~ENTRY() { if( pXfRec ) delete pXfRec; } - - inline BOOL Equal( const ScPatternAttr* p, const ULONG n ) const - { - return pPattAttr == p && nAltNumForm == n; - } - }; - - inline ENTRY* _First() { return (ENTRY*) List::First(); } - inline ENTRY* _Next() { return (ENTRY*) List::Next(); } - - XclExpFontBuffer& rFntLst; - XclExpNumFmtBuffer& rFrmLst; - - void AddNewXF( const ScPatternAttr* pAttr, - const BOOL bStyle, const BOOL bExplLineBreak, - const ULONG nAltNumForm = NUMBERFORMAT_ENTRY_NOT_FOUND, - BOOL bForceAltNumForm = FALSE ); - -public: - UsedAttrList( RootData* pRD ); - virtual ~UsedAttrList(); - UINT16 Find( const ScPatternAttr* pSearch, const BOOL bStyle = FALSE, - const ULONG nAltNumForm = NUMBERFORMAT_ENTRY_NOT_FOUND, - BOOL bForceAltNumForm = FALSE ); - UINT16 FindWithLineBreak( const ScPatternAttr* pSearch ); - - virtual void Save( XclExpStream& rStrm ); // overloaded to get ExcRecord from ENTRY -}; - - // XclExpWsbool =============================================================== class XclExpWsbool : public XclExpUInt16Record @@ -1685,6 +1551,7 @@ public: }; + //--------------------------- class XclExpTableOp, class XclExpTableOpManager - // multiple operations aka table operations (record TABLE) diff --git a/sc/source/filter/inc/exp_op.hxx b/sc/source/filter/inc/exp_op.hxx index 803bf2a200bc..4232eb93bde2 100644 --- a/sc/source/filter/inc/exp_op.hxx +++ b/sc/source/filter/inc/exp_op.hxx @@ -2,9 +2,9 @@ * * $RCSfile: exp_op.hxx,v $ * - * $Revision: 1.4 $ + * $Revision: 1.5 $ * - * last change: $Author: dr $ $Date: 2002-11-21 12:20:42 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:05:01 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses diff --git a/sc/source/filter/inc/fapihelper.hxx b/sc/source/filter/inc/fapihelper.hxx index 28068cc40556..c2603a89c059 100644 --- a/sc/source/filter/inc/fapihelper.hxx +++ b/sc/source/filter/inc/fapihelper.hxx @@ -2,9 +2,9 @@ * * $RCSfile: fapihelper.hxx,v $ * - * $Revision: 1.1 $ + * $Revision: 1.2 $ * - * last change: $Author: dr $ $Date: 2002-11-21 12:11:08 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:05:01 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses diff --git a/sc/source/filter/inc/filt_pch.hxx b/sc/source/filter/inc/filt_pch.hxx index 9a31b219d7df..cd34460dce80 100644 --- a/sc/source/filter/inc/filt_pch.hxx +++ b/sc/source/filter/inc/filt_pch.hxx @@ -2,9 +2,9 @@ * * $RCSfile: filt_pch.hxx,v $ * - * $Revision: 1.5 $ + * $Revision: 1.6 $ * - * last change: $Author: dr $ $Date: 2001-10-18 14:55:34 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:05:01 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -348,8 +348,6 @@ #include #include #include -#include -#include #include #include #include diff --git a/sc/source/filter/inc/fprogressbar.hxx b/sc/source/filter/inc/fprogressbar.hxx index 8bfe4c50f8fb..a13096323656 100644 --- a/sc/source/filter/inc/fprogressbar.hxx +++ b/sc/source/filter/inc/fprogressbar.hxx @@ -2,9 +2,9 @@ * * $RCSfile: fprogressbar.hxx,v $ * - * $Revision: 1.1 $ + * $Revision: 1.2 $ * - * last change: $Author: dr $ $Date: 2002-11-21 12:11:09 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:05:03 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -64,21 +64,89 @@ #ifndef SC_FPROGRESSBAR_HXX #define SC_FPROGRESSBAR_HXX +#include "globstr.hrc" + #ifndef SC_FTOOLS_HXX #include "ftools.hxx" #endif +class SfxObjectShell; class ScProgress; // ============================================================================ -/** Progress bar for complex progress representation. */ +/** Progress bar for complex progress representation. + @descr The progress bar contains one or more segments, each with customable + size. Each segment is represented by a unique identifier. While showing the + progress bar, several segments can be started simultaneously. The progress + bar displays the sum of all started segments on screen. + + It is possible to create a full featured ScfProgressBar object from + any segment. This sub progress bar works only on that parent segment, with + the effect, that if the sub progress bar reaches 100%, the parent segment is + filled completely. + + After adding segments, the progress bar has to be activated. In this step the + total size of all segments is calculated. Therefore it is not possible to add + more segments from here. + + If a sub progress bar is created from a segment, and the main progress bar + has been started (but not the sub progress bar), it is still possible to add + segments to the sub progress bar. It is not allowed to get the sub progress bar + of a started segment. And it is not allowed to modify the segment containing + a sub progress bar directly. + + Following a few code examples, how to use the progress bar. + + Example 1: Simple progress bar (see also ScfSimpleProgressBar below). + + ScfProgressBar aProgress( ... ); + sal_Int32 nSeg = aProgress.AddSegment( 50 ); // segment with 50 steps (1 step = 2%) + + aProgress.ActivateSegment( nSeg ); // start segment nSeg + aProgress.Progress(); // 0->1; display: 2% + aProgress.Progress( 9 ); // 1->9; display: 18% + + Example 2: Progress bar with 2 segments. + + ScfProgressBar aProgress( ... ); + sal_Int32 nSeg1 = aProgress.AddSegment( 70 ); // segment with 70 steps + sal_Int32 nSeg2 = aProgress.AddSegment( 30 ); // segment with 30 steps + // both segments: 100 steps (1 step = 1%) + + aProgress.ActivateSegment( nSeg1 ); // start first segment + aProgress.Progress(); // 0->1, display: 1% + aProgress.Progress( 3 ); // 1->3, display: 3% + aProgress.ActivateSegment( nSeg2 ); // start second segment + aProgress.Progress( 5 ); // 0->5, display: 8% (5+3 steps) + aProgress.ActivateSegment( nSeg1 ); // continue with first segment + aProgress.Progress(); // 3->4, display: 9% (5+4 steps) + + Example 3: Progress bar with 2 segments, one contains a sub progress bar. + + ScfProgressBar aProgress( ... ); + sal_Int32 nSeg1 = aProgress.AddSegment( 75 ); // segment with 75 steps + sal_Int32 nSeg2 = aProgress.AddSegment( 25 ); // segment with 25 steps + // both segments: 100 steps (1 step = 1%) + + aProgress.ActivateSegment( nSeg1 ); // start first segment + aProgress.Progress(); // 0->1, display: 1% + + ScfProgressBar& rSubProgress = aProgress.GetSegmentProgressBar( nSeg2 ); + // sub progress bar from second segment + sal_Int32 nSubSeg = rSubProgress.AddSegment( 5 ); // 5 steps, mapped to second segment + // => 1 step = 5 steps in parent = 5% + + rSubProgress.ActivateSegment( nSubSeg ); // start the segment (auto activate parent segment) + rSubProgress.Progress(); // 0->1 (0->5 in parent); display: 6% (1+5) + + // not allowed (second segment active): aProgress.Progress(); + // not allowed (first segment not empty): aProgress.GetSegmentProgressBar( nSeg1 ); + */ class ScfProgressBar : ScfNoCopy { private: - typedef ::std::auto_ptr< ScProgress > ScProgressPtr; - /** Contains all data of a segment of the progress bar. */ struct ScfProgressSegment { @@ -92,10 +160,14 @@ private: ~ScfProgressSegment(); }; - ScfDelList< ScfProgressSegment > maSegments; /// List of progress segments. + typedef ::std::auto_ptr< ScProgress > ScProgressPtr; + typedef ScfDelList< ScfProgressSegment > ScfSegmentList; + + ScfSegmentList maSegments; /// List of progress segments. String maText; /// UI string for system progress. ScProgressPtr mpSysProgress; /// System progress bar. + SfxObjectShell* mpDocShell; /// The document shell for the progress bar. ScfProgressBar* mpParentProgress; /// Parent progress bar, if this is a segment progress bar. ScfProgressSegment* mpParentSegment; /// Parent segment, if this is a segment progress bar. ScfProgressSegment* mpCurrSegment; /// Current segment for progress. @@ -107,24 +179,24 @@ private: bool mbInProgress; /// true = progress bar started. public: - /** Creates a system progress bar with a resource string. */ - explicit ScfProgressBar( const String& rText ); - ~ScfProgressBar(); + explicit ScfProgressBar( SfxObjectShell* pDocShell, const String& rText ); + explicit ScfProgressBar( SfxObjectShell* pDocShell, sal_uInt16 nResId ); + virtual ~ScfProgressBar(); /** Adds a new segment to the progress bar. @return the identifier of the segment. */ - sal_uInt32 AddSegment( sal_uInt32 nSize ); + sal_Int32 AddSegment( sal_uInt32 nSize ); /** Returns a complete progress bar for the specified segment. @descr The progress bar can be used to create sub segments inside of the segment. Do not delete it (done by root progress bar)! @return A reference to an ScfProgressBar connected to the segment. */ - ScfProgressBar& GetSegmentProgressBar( sal_uInt32 nSegment ); + ScfProgressBar& GetSegmentProgressBar( sal_Int32 nSegment ); /** Returns true, if any progress segment has been started. */ inline bool IsStarted() const { return mbInProgress; } /** Starts the progress bar or activates another segment. */ - void ActivateSegment( sal_uInt32 nSegment ); + void ActivateSegment( sal_Int32 nSegment ); /** Starts the progress bar (with first segment). */ inline void Activate() { ActivateSegment( 0 ); } /** Set current segment to the specified position. */ @@ -135,20 +207,68 @@ public: private: /** Used to create sub progress bars. */ explicit ScfProgressBar( - ScfProgressBar* pParProgress, + ScfProgressBar& rParProgress, ScfProgressSegment* pParSegment ); - /** Returns the segment specified by list index. */ - ScfProgressSegment* GetSegment( sal_uInt32 nSegment ) const; + /** Initializes all members on construction. */ + void Init( SfxObjectShell* pDocShell ); + /** Returns the segment specified by list index. */ + ScfProgressSegment* GetSegment( sal_Int32 nSegment ) const; /** Activates progress bar and sets current segment. */ void SetCurrSegment( ScfProgressSegment* pSegment ); - /** Increases mnTotalPos and calls the system progress bar. */ void IncreaseProgressBar( sal_uInt32 nDelta ); }; +// ============================================================================ + +/** A simplified progress bar with only one segment. */ +class ScfSimpleProgressBar +{ +private: + ScfProgressBar maProgress; /// The used progress bar. + +public: + explicit ScfSimpleProgressBar( sal_uInt32 nSize, SfxObjectShell* pDocShell, const String& rText ); + explicit ScfSimpleProgressBar( sal_uInt32 nSize, SfxObjectShell* pDocShell, sal_uInt16 nResId ); + + /** Set progress bar to the specified position. */ + inline void Progress( sal_uInt32 nPos ) { maProgress.Progress( nPos ); } + /** Increase progress bar by 1. */ + inline void Progress() { maProgress.Progress(); } + +private: + /** Initializes and starts the progress bar. */ + void Init( sal_uInt32 nSize ); +}; + + +// ============================================================================ + +/** A simplified progress bar based on the stream position of an existing stream. */ +class ScfStreamProgressBar +{ +private: + typedef ::std::auto_ptr< ScfSimpleProgressBar > ScfSimpleProgressBarPtr; + + ScfSimpleProgressBarPtr mpProgress; /// The used progress bar. + SvStream& mrStrm; /// The used stream. + +public: + explicit ScfStreamProgressBar( SvStream& rStrm, SfxObjectShell* pDocShell, const String& rText ); + explicit ScfStreamProgressBar( SvStream& rStrm, SfxObjectShell* pDocShell, sal_uInt16 nResId = STR_LOAD_DOC ); + + /** Sets the progress bar to the current stream position. */ + void Progress(); + +private: + /** Initializes and starts the progress bar. */ + void Init( SfxObjectShell* pDocShell, const String& rText ); +}; + + // ============================================================================ #endif diff --git a/sc/source/filter/inc/ftools.hxx b/sc/source/filter/inc/ftools.hxx index 86c8c4798ec4..31545eebe12e 100644 --- a/sc/source/filter/inc/ftools.hxx +++ b/sc/source/filter/inc/ftools.hxx @@ -2,9 +2,9 @@ * * $RCSfile: ftools.hxx,v $ * - * $Revision: 1.1 $ + * $Revision: 1.2 $ * - * last change: $Author: dr $ $Date: 2002-11-21 12:11:09 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:05:03 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -83,13 +83,12 @@ #include -class SvStream; - - // Global static helpers ====================================================== -/** Returns the size of a STATIC data array. */ +/** Expands to the size of a STATIC data array. */ #define STATIC_TABLE_SIZE( array ) (sizeof(array)/sizeof(*(array))) +/** Expands to a pointer behind the last element of a STATIC data array (like STL end()). */ +#define STATIC_TABLE_END( array ) ((array)+STATIC_TABLE_SIZE(array)) // Read from bitfields -------------------------------------------------------- @@ -130,8 +129,8 @@ inline void set_flag( Type& rnBitField, Type nMask, bool bSet = true ) template< typename Type, typename InsertType > void insert_value( Type& rnBitField, InsertType nValue, sal_uInt8 nStartBit, sal_uInt8 nBitCount ) { - Type nMask = ((1UL << nBitCount) - 1); - Type nNewValue = static_cast< Type >( nValue ) & nMask; + sal_uInt32 nMask = ((1UL << nBitCount) - 1); + Type nNewValue = static_cast< Type >( nValue & nMask ); (rnBitField &= ~(nMask << nStartBit)) |= (nNewValue << nStartBit); } @@ -196,15 +195,13 @@ class ScfNoInstance : private ScfNoCopy {}; // ============================================================================ +class SvStorage; +class SvStorageStreamRef; +class SvStream; + /** Contains static methods used anywhere in the filters. */ class ScfTools : ScfNoInstance { -private: - static const String maHTMLDoc; /// Built-in name for an HTML document. - static const String maHTMLTables; /// Built-in name for all HTML tables. - static const String maHTMLTableIndex; /// Built-in prefix for an HTML table index. - static const String maHTMLTableName; /// Built-in prefix for an HTML table name. - public: // *** common methods *** @@ -232,22 +229,35 @@ public: // *** conversion of names *** - /** Converts an Excel name to a valid Calc name. - @param bKeepPeriod false = '.' will be converted to '_'; true = '.' leaves unmodified. */ - static void ConvertName( String& rName, bool bKeepPeriod = false ); + /** Converts an external name to a valid Calc sheet name. + @descr Sheet names in Calc may contain letters, digits, underscores, and spaces + (space characters are not allowed at first position). */ + static void ConvertToScSheetName( String& rName ); + /** Converts an external name to a valid Calc defined name or database range name. + @descr Defined names in Calc may contain letters, digits (*), underscores, periods (*), + colons (*), question marks, and dollar signs. + (*) = not allowed at first position. */ + static void ConvertToScDefinedName( String& rName ); + +// *** streams and storages *** + + /** Tries to open the stream with the specified name in the passed storage (read-only). */ + static const SvStorageStreamRef OpenStorageStreamRead( SvStorage* pStorage, const String& rStrmName ); + /** Tries to create or open a stream with the specified name in the passed storage (read/write). */ + static const SvStorageStreamRef OpenStorageStreamWrite( SvStorage* pStorage, const String& rStrmName ); // *** byte string import operations *** /** Reads and returns a zero terminted byte string. */ static ByteString ReadCString( SvStream& rStrm ); /** Reads and returns a zero terminted byte string. */ - static inline String ReadCString( SvStream& rStrm, CharSet eSrc ) + inline static String ReadCString( SvStream& rStrm, CharSet eSrc ) { return String( ReadCString( rStrm ), eSrc ); } /** Reads and returns a zero terminted byte string and decreases a stream counter. */ static ByteString ReadCString( SvStream& rStrm, sal_Int32& rnBytesLeft ); /** Reads and returns a zero terminted byte string and decreases a stream counter. */ - static inline String ReadCString( SvStream& rStrm, sal_Int32& rnBytesLeft, CharSet eSrc ) + inline static String ReadCString( SvStream& rStrm, sal_Int32& rnBytesLeft, CharSet eSrc ) { return String( ReadCString( rStrm, rnBytesLeft ), eSrc ); } /** Appends a zero terminted byte string. */ @@ -258,25 +268,29 @@ public: // *** HTML table names <-> named range names *** /** Returns the built-in range name for an HTML document. */ - static inline const String& GetHTMLDocName() { return maHTMLDoc; } + static const String& GetHTMLDocName(); /** Returns the built-in range name for all HTML tables. */ - static inline const String& GetHTMLTablesName() { return maHTMLTables; } + static const String& GetHTMLTablesName(); /** Returns the built-in range name for an HTML table, specified by table index. */ static String GetNameFromHTMLIndex( sal_uInt32 nIndex ); /** Returns the built-in range name for an HTML table, specified by table name. */ static String GetNameFromHTMLName( const String& rTabName ); /** Returns true, if rSource is the built-in range name for an HTML document. */ - static inline bool IsHTMLDocName( const String& rSource ) - { return rSource.EqualsIgnoreCaseAscii( maHTMLDoc ) == TRUE; } + static bool IsHTMLDocName( const String& rSource ); /** Returns true, if rSource is the built-in range name for all HTML tables. */ - static inline bool IsHTMLTablesName( const String& rSource ) - { return rSource.EqualsIgnoreCaseAscii( maHTMLTables ) == TRUE; } + static bool IsHTMLTablesName( const String& rSource ); /** Converts a built-in range name to an HTML table name. @param rSource The string to be determined. @param rName The HTML table name. @return true, if conversion was successful. */ static bool GetHTMLNameFromName( const String& rSource, String& rName ); + +private: + /** Returns the prefix for table index names. */ + static const String& GetHTMLIndexPrefix(); + /** Returns the prefix for table names. */ + static const String& GetHTMLNamePrefix(); }; diff --git a/sc/source/filter/inc/htmlpars.hxx b/sc/source/filter/inc/htmlpars.hxx index 541d158d2939..73563659e433 100644 --- a/sc/source/filter/inc/htmlpars.hxx +++ b/sc/source/filter/inc/htmlpars.hxx @@ -2,9 +2,9 @@ * * $RCSfile: htmlpars.hxx,v $ * - * $Revision: 1.5 $ + * $Revision: 1.6 $ * - * last change: $Author: dr $ $Date: 2001-04-06 12:38:30 $ + * last change: $Author: hr $ $Date: 2003-03-26 18:05:03 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -66,12 +66,43 @@ #include #endif +#include +#include +#include +#include + #include "rangelst.hxx" #include "eeparser.hxx" -#define SC_HTML_FONTSIZES 7 // wie Export, HTML-Options +const sal_uInt32 SC_HTML_FONTSIZES = 7; // wie Export, HTML-Options #define SC_HTML_OFFSET_TOL 10 // Pixeltoleranz fuer SeekOffset +// ============================================================================ +// BASE class for HTML parser classes +// ============================================================================ + +class ScHTMLTable; + +/** Base class for HTML parser classes. */ +class ScHTMLParser : public ScEEParser +{ +protected: + sal_uInt32 maFontHeights[ SC_HTML_FONTSIZES ]; + ScDocument* mpDoc; /// The destination document. + +public: + explicit ScHTMLParser( EditEngine* pEditEngine, ScDocument* pDoc ); + virtual ~ScHTMLParser(); + + virtual sal_uInt32 Read( SvStream& rStrm ) = 0; + + /** Returns the "global table" which contains the entire HTML document. */ + virtual const ScHTMLTable* GetGlobalTable() const = 0; +}; + + +// ============================================================================ + SV_DECL_VARARR_SORT( ScHTMLColOffset, ULONG, 16, 4); struct ScHTMLTableStackEntry @@ -123,161 +154,20 @@ struct ScHTMLAdjustStackEntry DECLARE_STACK( ScHTMLAdjustStack, ScHTMLAdjustStackEntry* ); -//------------------------------------------------------------------------ - -enum ScHTMLTableDataKey { tdCol, tdRow }; - -class ScHTMLTableDataTable; - -class ScHTMLTableData // data for one HTML table -{ -private: - String aTableName; //
tag + ScHTMLSize aSpanSize( 1, 1 ); + ::std::auto_ptr< String > pValStr, pNumStr; + for( ScHTMLOptionIterator aIter( rInfo ); aIter.is(); ++aIter ) + { + switch( aIter->GetToken() ) + { + case HTML_O_COLSPAN: + aSpanSize.mnCols = static_cast< sal_uInt16 >( bound( aIter->GetString().ToInt32(), 1L, 256L ) ); + break; + case HTML_O_ROWSPAN: + aSpanSize.mnRows = static_cast< sal_uInt16 >( bound( aIter->GetString().ToInt32(), 1L, 256L ) ); + break; + case HTML_O_SDVAL: + pValStr.reset( new String( aIter->GetString() ) ); + break; + case HTML_O_SDNUM: + pNumStr.reset( new String( aIter->GetString() ) ); + break; + } + } + + ImplDataOn( aSpanSize ); + ProcessFormatOptions( *mpDataItemSet, rInfo ); + CreateNewEntry( rInfo ); + mpCurrEntry->pValStr = pValStr.release(); + mpCurrEntry->pNumStr = pNumStr.release(); + } + else + CreateNewEntry( rInfo ); +} + +void ScHTMLTable::DataOff( const ImportInfo& rInfo ) +{ + PushEntry( rInfo, true ); + if( mpParentTable && !mbPreFormText ) // no cells allowed in global and preformatted tables + ImplDataOff(); + CreateNewEntry( rInfo ); +} + +void ScHTMLTable::BodyOn( const ImportInfo& rInfo ) +{ + PushEntry( rInfo ); + if( !mpParentTable ) + { + ImplRowOn(); + ProcessFormatOptions( *mpRowItemSet, rInfo ); + ImplDataOn( ScHTMLSize( 1, 1 ) ); + } + CreateNewEntry( rInfo ); +} + +void ScHTMLTable::BodyOff( const ImportInfo& rInfo ) +{ + PushEntry( rInfo ); + if( !mpParentTable ) + { + ImplDataOff(); + ImplRowOff(); + } + CreateNewEntry( rInfo ); +} + +sal_uInt16 ScHTMLTable::GetDocSize( ScHTMLOrient eOrient, sal_uInt16 nCellPos ) const +{ + const ScSizeVec& rSizes = maSizes[ eOrient ]; + return (nCellPos < rSizes.size()) ? rSizes[ nCellPos ] : 0; +} + +sal_uInt16 ScHTMLTable::GetDocSize( ScHTMLOrient eOrient, sal_uInt16 nCellBegin, sal_uInt16 nCellEnd ) const +{ + sal_uInt16 nSize = 0; + for( sal_uInt16 nCellPos = nCellBegin; nCellPos < nCellEnd; ++nCellPos ) + nSize += GetDocSize( eOrient, nCellPos ); + return nSize; +} + +sal_uInt16 ScHTMLTable::GetDocSize( ScHTMLOrient eOrient ) const +{ + return GetDocSize( eOrient, 0, maSize.Get( eOrient ) ); +} + +sal_uInt16 ScHTMLTable::GetDocPos( ScHTMLOrient eOrient, sal_uInt16 nCellPos ) const +{ + return maDocBasePos.Get( eOrient ) + GetDocSize( eOrient, 0, nCellPos ); +} + +ScHTMLPos ScHTMLTable::GetDocPos( const ScHTMLPos& rCellPos ) const +{ + return ScHTMLPos( GetDocPos( tdCol, rCellPos.mnCol ), GetDocPos( tdRow, rCellPos.mnRow ) ); +} + +void ScHTMLTable::GetDocRange( ScRange& rRange ) const +{ + rRange.aStart = rRange.aEnd = maDocBasePos.MakeAddr(); + rRange.aEnd.Move( GetDocSize( tdCol ) - 1, GetDocSize( tdRow ) - 1, 0 ); +} + +void ScHTMLTable::ApplyCellBorders( ScDocument* pDoc, const ScAddress& rFirstPos ) const +{ + DBG_ASSERT( pDoc, "ScHTMLTable::ApplyCellBorders - no document" ); + if( pDoc && mbBorderOn ) + { + const sal_uInt16 nLastCol = maSize.mnCols - 1; + const sal_uInt16 nLastRow = maSize.mnRows - 1; + const sal_uInt16 nOuterLine = DEF_LINE_WIDTH_2; + const sal_uInt16 nInnerLine = DEF_LINE_WIDTH_0; + SvxBorderLine aOuterLine, aInnerLine; + aOuterLine.SetColor( Color( COL_BLACK ) ); + aOuterLine.SetOutWidth( nOuterLine ); + aInnerLine.SetColor( Color( COL_BLACK ) ); + aInnerLine.SetOutWidth( nInnerLine ); + SvxBoxItem aBorderItem; + + for( sal_uInt16 nCol = 0; nCol <= nLastCol; ++nCol ) + { + SvxBorderLine* pLeftLine = (nCol == 0) ? &aOuterLine : &aInnerLine; + SvxBorderLine* pRightLine = (nCol == nLastCol) ? &aOuterLine : &aInnerLine; + sal_uInt16 nCellCol1 = GetDocPos( tdCol, nCol ) + rFirstPos.Col(); + sal_uInt16 nCellCol2 = nCellCol1 + GetDocSize( tdCol, nCol ) - 1; + for( sal_uInt16 nRow = 0; nRow <= nLastRow; ++nRow ) + { + SvxBorderLine* pTopLine = (nRow == 0) ? &aOuterLine : &aInnerLine; + SvxBorderLine* pBottomLine = (nRow == nLastRow) ? &aOuterLine : &aInnerLine; + sal_uInt16 nCellRow1 = GetDocPos( tdRow, nRow ) + rFirstPos.Row(); + sal_uInt16 nCellRow2 = nCellRow1 + GetDocSize( tdRow, nRow ) - 1; + for( sal_uInt16 nCellCol = nCellCol1; nCellCol <= nCellCol2; ++nCellCol ) + { + aBorderItem.SetLine( (nCellCol == nCellCol1) ? pLeftLine : 0, BOX_LINE_LEFT ); + aBorderItem.SetLine( (nCellCol == nCellCol2) ? pRightLine : 0, BOX_LINE_RIGHT ); + for( sal_uInt16 nCellRow = nCellRow1; nCellRow <= nCellRow2; ++nCellRow ) + { + aBorderItem.SetLine( (nCellRow == nCellRow1) ? pTopLine : 0, BOX_LINE_TOP ); + aBorderItem.SetLine( (nCellRow == nCellRow2) ? pBottomLine : 0, BOX_LINE_BOTTOM ); + pDoc->ApplyAttr( nCellCol, nCellRow, rFirstPos.Tab(), aBorderItem ); + } + } + } + } + } + + for( ScHTMLTableIterator aIter( mpNestedTables.get() ); aIter.is(); ++aIter ) + aIter->ApplyCellBorders( pDoc, rFirstPos ); +} + + +// ---------------------------------------------------------------------------- + +bool ScHTMLTable::IsEmptyCell() const +{ + return mpCurrEntryList && mpCurrEntryList->empty(); +} + +bool ScHTMLTable::IsSpaceCharInfo( const ImportInfo& rInfo ) +{ + return (rInfo.nToken == HTML_TEXTTOKEN) && (rInfo.aText.Len() == 1) && (rInfo.aText.GetChar( 0 ) == ' '); +} + +ScHTMLEntry* ScHTMLTable::CreateEntry() const +{ + return new ScHTMLEntry( GetCurrItemSet() ); +} + +void ScHTMLTable::CreateNewEntry( const ImportInfo& rInfo ) +{ + DBG_ASSERT( !mpCurrEntry.get(), "ScHTMLTable::CreateNewEntry - old entry still present" ); + mpCurrEntry.reset( CreateEntry() ); + mpCurrEntry->aSel = rInfo.aSelection; +} + +void ScHTMLTable::ImplPushEntryToList( ScHTMLEntryList& rEntryList, ScHTMLEntryPtr& rpEntry ) +{ + // HTML entry list does not own the entries + rEntryList.push_back( rpEntry.get() ); + // mrEEParseList (reference to member of ScEEParser) owns the entries + mrEEParseList.Insert( rpEntry.release(), LIST_APPEND ); +} + +void ScHTMLTable::PushEntry( ScHTMLEntryPtr& rpEntry ) +{ + if( rpEntry.get() && rpEntry->HasContents() ) + { + if( mpCurrEntryList ) + { + if( mbPushEmptyLine ) + { + ScHTMLEntryPtr pEmptyEntry( CreateEntry() ); + ImplPushEntryToList( *mpCurrEntryList, pEmptyEntry ); + mbPushEmptyLine = false; + } + ImplPushEntryToList( *mpCurrEntryList, rpEntry ); + } + else if( mpParentTable ) + mpParentTable->PushEntry( rpEntry ); + else + DBG_ERRORFILE( "ScHTMLTable::PushEntry - cannot push entry, no parent found" ); + } +} + +void ScHTMLTable::PushEntry( const ImportInfo& rInfo, bool bLastInCell ) +{ + DBG_ASSERT( mpCurrEntry.get(), "ScHTMLTable::PushEntry - no current entry" ); + if( mpCurrEntry.get() ) + { + mpCurrEntry->AdjustEnd( rInfo ); + mpCurrEntry->Strip( mrEditEngine ); + + // import entry always, if it is the last in cell, and cell is still empty + if( bLastInCell && IsEmptyCell() ) + { + mpCurrEntry->SetImportAlways(); + // don't insert empty lines before single empty entries + if( mpCurrEntry->IsEmpty() ) + mbPushEmptyLine = false; + } + + PushEntry( mpCurrEntry ); + mpCurrEntry.reset(); + } +} + +void ScHTMLTable::PushTableEntry( ScHTMLTableId nTableId ) +{ + DBG_ASSERT( nTableId != SC_HTML_GLOBAL_TABLE, "ScHTMLTable::PushTableEntry - cannot push global table" ); + if( nTableId != SC_HTML_GLOBAL_TABLE ) + { + ScHTMLEntryPtr pEntry( new ScHTMLEntry( maTableItemSet, nTableId ) ); + PushEntry( pEntry ); + } +} + +ScHTMLTable* ScHTMLTable::GetExistingTable( ScHTMLTableId nTableId ) const +{ + ScHTMLTable* pTable = ((nTableId != SC_HTML_GLOBAL_TABLE) && mpNestedTables.get()) ? + mpNestedTables->FindTable( nTableId, false ) : 0; + DBG_ASSERT( pTable || (nTableId == SC_HTML_GLOBAL_TABLE), "ScHTMLTable::GetExistingTable - table not found" ); + return pTable; +} + +ScHTMLTable* ScHTMLTable::InsertNestedTable( const ImportInfo& rInfo, bool bPreFormText ) +{ + if( !mpNestedTables.get() ) + mpNestedTables.reset( new ScHTMLTableMap( *this ) ); + if( bPreFormText ) // enclose new preformatted table with empty lines + InsertLeadingEmptyLine(); + return mpNestedTables->CreateTable( rInfo, bPreFormText ); +} + +ScHTMLTable* ScHTMLTable::CloseTable( const ImportInfo& rInfo ) +{ + if( mpParentTable ) // not allowed to close global table + { + PushEntry( rInfo, mbDataOn ); + ImplDataOff(); + ImplRowOff(); + mpParentTable->PushTableEntry( GetTableId() ); + mpParentTable->CreateNewEntry( rInfo ); + if( mbPreFormText ) // enclose preformatted table with empty lines in parent table + mpParentTable->InsertLeadingEmptyLine(); + return mpParentTable; + } + return this; +} + +void ScHTMLTable::InsertNewCell( const ScHTMLSize& rSpanSize ) +{ + ScRange* pRange; + + // find an unused cell + while( (pRange = maLockList.Find( maCurrCell.MakeAddr() )) != 0 ) + maCurrCell.mnCol = pRange->aEnd.Col() + 1; + mpCurrEntryList = &maEntryMap[ maCurrCell ]; + + // try to find collisions, shrink existing ranges + sal_uInt16 nColEnd = maCurrCell.mnCol + rSpanSize.mnCols; + for( ScAddress aAddr( maCurrCell.MakeAddr() ); aAddr.Col() < nColEnd; aAddr.IncCol() ) + if( (pRange = maLockList.Find( aAddr )) != 0 ) + pRange->aEnd.SetRow( maCurrCell.mnRow - 1 ); + + // insert the new range into the lock list + ScRange aNewRange( maCurrCell.MakeAddr() ); + aNewRange.aEnd.Move( rSpanSize.mnCols - 1, rSpanSize.mnRows - 1, 0 ); + maLockList.Append( aNewRange ); + + // adjust table size + maSize.mnCols = ::std::max< sal_uInt16 >( maSize.mnCols, aNewRange.aEnd.Col() + 1 ); + maSize.mnRows = ::std::max< sal_uInt16 >( maSize.mnRows, aNewRange.aEnd.Row() + 1 ); +} + +void ScHTMLTable::ImplRowOn() +{ + if( mbRowOn ) + ImplRowOff(); + mpRowItemSet.reset( new SfxItemSet( maTableItemSet ) ); + maCurrCell.mnCol = 0; + mbRowOn = true; + mbDataOn = false; +} + +void ScHTMLTable::ImplRowOff() +{ + if( mbDataOn ) + ImplDataOff(); + if( mbRowOn ) + { + mpRowItemSet.reset(); + ++maCurrCell.mnRow; + mbRowOn = mbDataOn = false; + } +} + +void ScHTMLTable::ImplDataOn( const ScHTMLSize& rSpanSize ) +{ + if( mbDataOn ) + ImplDataOff(); + if( !mbRowOn ) + ImplRowOn(); + mpDataItemSet.reset( new SfxItemSet( *mpRowItemSet ) ); + InsertNewCell( rSpanSize ); + mbDataOn = true; + mbPushEmptyLine = false; +} + +void ScHTMLTable::ImplDataOff() +{ + if( mbDataOn ) + { + mpDataItemSet.reset(); + ++maCurrCell.mnCol; + mpCurrEntryList = 0; + mbDataOn = false; + } +} + +void ScHTMLTable::ProcessFormatOptions( SfxItemSet& rItemSet, const ImportInfo& rInfo ) +{ + // special handling for table header cells + if( rInfo.nToken == HTML_TABLEHEADER_ON ) + { + rItemSet.Put( SvxWeightItem( WEIGHT_BOLD, ATTR_FONT_WEIGHT ) ); + rItemSet.Put( SvxHorJustifyItem( SVX_HOR_JUSTIFY_CENTER, ATTR_HOR_JUSTIFY ) ); + } + + for( ScHTMLOptionIterator aIter( rInfo ); aIter.is(); ++aIter ) + { + switch( aIter->GetToken() ) + { + case HTML_O_ALIGN: + { + SvxCellHorJustify eVal = SVX_HOR_JUSTIFY_STANDARD; + const String& rOptVal = aIter->GetString(); + if( rOptVal.EqualsIgnoreCaseAscii( sHTML_AL_right ) ) + eVal = SVX_HOR_JUSTIFY_RIGHT; + else if( rOptVal.EqualsIgnoreCaseAscii( sHTML_AL_center ) ) + eVal = SVX_HOR_JUSTIFY_CENTER; + else if( rOptVal.EqualsIgnoreCaseAscii( sHTML_AL_left ) ) + eVal = SVX_HOR_JUSTIFY_LEFT; + if( eVal != SVX_HOR_JUSTIFY_STANDARD ) + rItemSet.Put( SvxHorJustifyItem( eVal, ATTR_HOR_JUSTIFY ) ); + } + break; + + case HTML_O_VALIGN: + { + SvxCellVerJustify eVal = SVX_VER_JUSTIFY_STANDARD; + const String& rOptVal = aIter->GetString(); + if( rOptVal.EqualsIgnoreCaseAscii( sHTML_VA_top ) ) + eVal = SVX_VER_JUSTIFY_TOP; + else if( rOptVal.EqualsIgnoreCaseAscii( sHTML_VA_middle ) ) + eVal = SVX_VER_JUSTIFY_CENTER; + else if( rOptVal.EqualsIgnoreCaseAscii( sHTML_VA_bottom ) ) + eVal = SVX_VER_JUSTIFY_BOTTOM; + if( eVal != SVX_VER_JUSTIFY_STANDARD ) + rItemSet.Put( SvxVerJustifyItem( eVal, ATTR_VER_JUSTIFY ) ); + } + break; + + case HTML_O_BGCOLOR: + { + Color aColor; + aIter->GetColor( aColor ); + rItemSet.Put( SvxBrushItem( aColor, ATTR_BACKGROUND ) ); + } + break; + } + } +} + +void ScHTMLTable::SetDocSize( ScHTMLOrient eOrient, sal_uInt16 nCellPos, sal_uInt16 nSize ) +{ + ScSizeVec& rSizes = maSizes[ eOrient ]; + if( nCellPos >= rSizes.size() ) + rSizes.resize( nCellPos + 1, 1 ); // expand with minimum height/width == 1 + if( rSizes[ nCellPos ] < nSize ) + rSizes[ nCellPos ] = nSize; +} + +void ScHTMLTable::CalcNeededDocSize( + ScHTMLOrient eOrient, sal_uInt16 nCellPos, sal_uInt16 nCellSpan, sal_uInt16 nRealDocSize ) +{ + sal_uInt16 nDiffSize = 0; + // in merged columns/rows: reduce needed size by size of leading columns + while( nCellSpan > 1 ) + { + nDiffSize += GetDocSize( eOrient, nCellPos ); + --nCellSpan; + ++nCellPos; + } + // set remaining needed size to last column/row + nRealDocSize -= ::std::min< sal_uInt16 >( nRealDocSize - 1, nDiffSize ); + SetDocSize( eOrient, nCellPos, nRealDocSize ); +} + + +// ---------------------------------------------------------------------------- + +void ScHTMLTable::FillEmptyCells() +{ + for( ScHTMLTableIterator aIter( mpNestedTables.get() ); aIter.is(); ++aIter ) + aIter->FillEmptyCells(); + + for( ScAddress aAddr; aAddr.Row() < maSize.mnRows; aAddr.IncRow() ) + { + for( aAddr.SetCol( 0 ); aAddr.Col() < maSize.mnCols; aAddr.IncCol() ) + { + if( !maLockList.Find( aAddr ) ) + { + // create a range for the lock list (used to calc. cell span) + ScRange aRange( aAddr ); + do + aRange.aEnd.IncCol(); + while( (aRange.aEnd.Col() < maSize.mnCols) && !maLockList.Find( aRange.aEnd ) ); + aRange.aEnd.IncCol( -1 ); + maLockList.Append( aRange ); + + // insert a dummy entry + ScHTMLEntryPtr pEntry( CreateEntry() ); + ImplPushEntryToList( maEntryMap[ ScHTMLPos( aAddr ) ], pEntry ); + } + } + } +} + +void ScHTMLTable::RecalcDocSize() +{ + // recalc table sizes recursively from inner to outer + for( ScHTMLTableIterator aIter( mpNestedTables.get() ); aIter.is(); ++aIter ) + aIter->RecalcDocSize(); + + /* Two passes: first calculates the sizes of single columns/rows, then + the sizes of spanned columns/rows. This allows to fill nested tables + into merged cells optimally. */ + static const sal_uInt16 PASS_SINGLE = 0; + static const sal_uInt16 PASS_SPANNED = 1; + for( sal_uInt16 nPass = PASS_SINGLE; nPass <= PASS_SPANNED; ++nPass ) + { + // iterate through every table cell + ScHTMLEntryMap::const_iterator aMapIterEnd = maEntryMap.end(); + for( ScHTMLEntryMap::const_iterator aMapIter = maEntryMap.begin(); aMapIter != aMapIterEnd; ++aMapIter ) + { + const ScHTMLPos& rCellPos = aMapIter->first; + ScHTMLSize aCellSpan( GetSpan( rCellPos ) ); + + const ScHTMLEntryList& rEntryList = aMapIter->second; + ScHTMLEntryList::const_iterator aListIter; + ScHTMLEntryList::const_iterator aListIterEnd = rEntryList.end(); + + // process the dimension of the current cell in this pass? + // (pass is single and span is 1) or (pass is not single and span is not 1) + bool bProcessColWidth = ((nPass == PASS_SINGLE) == (aCellSpan.mnCols == 1)); + bool bProcessRowHeight = ((nPass == PASS_SINGLE) == (aCellSpan.mnRows == 1)); + if( bProcessColWidth || bProcessRowHeight ) + { + ScHTMLSize aDocSize( 1, 0 ); // resulting size of the cell in document + + // expand the cell size for each cell parse entry + for( aListIter = rEntryList.begin(); aListIter != aListIterEnd; ++aListIter ) + { + ScHTMLTable* pTable = GetExistingTable( (*aListIter)->GetTableId() ); + // find entry with maximum width + if( bProcessColWidth && pTable ) + aDocSize.mnCols = ::std::max( aDocSize.mnCols, pTable->GetDocSize( tdCol ) ); + // add up height of each entry + if( bProcessRowHeight ) + aDocSize.mnRows += pTable ? pTable->GetDocSize( tdRow ) : 1; + } + if( !aDocSize.mnRows ) + aDocSize.mnRows = 1; + + if( bProcessColWidth ) + CalcNeededDocSize( tdCol, rCellPos.mnCol, aCellSpan.mnCols, aDocSize.mnCols ); + if( bProcessRowHeight ) + CalcNeededDocSize( tdRow, rCellPos.mnRow, aCellSpan.mnRows, aDocSize.mnRows ); + } + } + } +} + +void ScHTMLTable::RecalcDocPos( const ScHTMLPos& rBasePos ) +{ + maDocBasePos = rBasePos; + // after the previous assignment it is allowed to call GetDocPos() methods + + // iterate through every table cell + ScHTMLEntryMap::iterator aMapIterEnd = maEntryMap.end(); + for( ScHTMLEntryMap::iterator aMapIter = maEntryMap.begin(); aMapIter != aMapIterEnd; ++aMapIter ) + { + const ScHTMLPos& rCellPos = aMapIter->first; + ScHTMLSize aCellSpan( GetSpan( rCellPos ) ); + ScHTMLPos aEntryDocPos( GetDocPos( rCellPos ) ); + + ScHTMLEntryList& rEntryList = aMapIter->second; + ScHTMLEntry* pEntry = 0; + ScHTMLEntryList::iterator aListIterEnd = rEntryList.end(); + for( ScHTMLEntryList::iterator aListIter = rEntryList.begin(); aListIter != aListIterEnd; ++aListIter ) + { + pEntry = *aListIter; + if( ScHTMLTable* pTable = GetExistingTable( pEntry->GetTableId() ) ) + { + pTable->RecalcDocPos( aEntryDocPos ); // recalc nested table + pEntry->nCol = pEntry->nRow = 0xFFFF; + sal_uInt16 nRows = pTable->GetDocSize( tdRow ); + + // use this entry to pad empty space right of table + if( mpParentTable ) // ... but not in global table + { + sal_uInt16 nStartCol = GetDocPos( tdCol, rCellPos.mnCol ) + pTable->GetDocSize( tdCol ); + sal_uInt16 nNextCol = GetDocPos( tdCol, rCellPos.mnCol + 1 ); + if( nStartCol < nNextCol ) + { + pEntry->nCol = nStartCol; + pEntry->nRow = aEntryDocPos.mnRow; + pEntry->nColOverlap = nNextCol - nStartCol; + pEntry->nRowOverlap = nRows; + } + } + aEntryDocPos.mnRow += nRows; + } + else + { + pEntry->nCol = aEntryDocPos.mnCol; + pEntry->nRow = aEntryDocPos.mnRow; + if( mpParentTable ) // do not merge in global table + pEntry->nColOverlap = GetDocSize( tdCol, rCellPos.mnCol, rCellPos.mnCol + aCellSpan.mnCols ); + ++aEntryDocPos.mnRow; + } + } + + /* pEntry points now to last entry - test if it is the only entry in this cell. + Merge rows of cell with single non-table entry. */ + if( pEntry && (pEntry == rEntryList.front()) && (pEntry->GetTableId() == SC_HTML_NO_TABLE) ) + pEntry->nRowOverlap = GetDocSize( tdRow, rCellPos.mnRow, rCellPos.mnRow + aCellSpan.mnRows ); + } +} + + +// ============================================================================ + +ScHTMLGlobalTable::ScHTMLGlobalTable( SfxItemPool& rPool, EditEngine& rEditEngine, ScEEParseList& rEEParseList, ScHTMLTableId& rnUnusedId ) : + ScHTMLTable( rPool, rEditEngine, rEEParseList, rnUnusedId ) +{ +} + +ScHTMLGlobalTable::~ScHTMLGlobalTable() +{ +} + +void ScHTMLGlobalTable::Recalc() +{ + // Fills up empty cells with a dummy entry. */ + FillEmptyCells(); + // recalc table sizes of all nested tables and this table + RecalcDocSize(); + // recalc document positions of all entries in this table and in nested tables + RecalcDocPos( GetDocPos() ); +} + + +// ============================================================================ + +ScHTMLQueryParser::ScHTMLQueryParser( EditEngine* pEditEngine, ScDocument* pDoc ) : + ScHTMLParser( pEditEngine, pDoc ), + mnUnusedId( SC_HTML_GLOBAL_TABLE ), + mbTitleOn( false ) +{ + mpGlobTable.reset( new ScHTMLGlobalTable( *pPool, *pEdit, *pList, mnUnusedId ) ); + mpCurrTable = mpGlobTable.get(); +} + +ScHTMLQueryParser::~ScHTMLQueryParser() +{ +} + +sal_uInt32 ScHTMLQueryParser::Read( SvStream& rStrm ) +{ + SvKeyValueIteratorRef xValues; + SvKeyValueIterator* pAttributes = 0; + + SfxObjectShell* pObjSh = mpDoc->GetDocumentShell(); + if( pObjSh && pObjSh->IsLoading() ) + { + pAttributes = pObjSh->GetHeaderAttributes(); + } + else + { + /* When not loading, set up fake HTTP headers to force the SfxHTMLParser + to use UTF8 (used when pasting from clipboard) */ + const sal_Char* pCharSet = rtl_getBestMimeCharsetFromTextEncoding( RTL_TEXTENCODING_UTF8 ); + if( pCharSet ) + { + String aContentType = String::CreateFromAscii( "text/html; charset=" ); + aContentType.AppendAscii( pCharSet ); + + xValues = new SvKeyValueIterator; + xValues->Append( SvKeyValue( String::CreateFromAscii( sHTML_META_content_type ), aContentType ) ); + pAttributes = xValues; + } + } + + Link aOldLink = pEdit->GetImportHdl(); + pEdit->SetImportHdl( LINK( this, ScHTMLQueryParser, HTMLImportHdl ) ); + sal_uInt32 nErr = pEdit->Read( rStrm, EE_FORMAT_HTML, pAttributes ); + pEdit->SetImportHdl( aOldLink ); + + mpGlobTable->Recalc(); + nColMax = mpGlobTable->GetDocSize( tdCol ) - 1; + nRowMax = mpGlobTable->GetDocSize( tdRow ) - 1; + + return nErr; +} + +const ScHTMLTable* ScHTMLQueryParser::GetGlobalTable() const +{ + return mpGlobTable.get(); +} + + +// ---------------------------------------------------------------------------- + +ScHTMLTable* ScHTMLQueryParser::GetTable( ScHTMLTableId nTableId ) const +{ + if( nTableId == SC_HTML_GLOBAL_TABLE ) + return mpGlobTable.get(); + ScHTMLTable* pTable = mpGlobTable->FindNestedTable( nTableId ); + DBG_ASSERT( pTable, "ScHTMLQueryParser::GetTable - table not found" ); + if( !pTable ) + return mpGlobTable.get(); + return pTable; +} + +void ScHTMLQueryParser::ProcessToken( const ImportInfo& rInfo ) +{ +#ifdef DEBUG + HTML_TOKEN_IDS eTokenId = static_cast< HTML_TOKEN_IDS >( rInfo.nToken ); +#endif + switch( rInfo.nToken ) + { +// --- meta data --- + case HTML_META: MetaOn( rInfo ); break; // + +// --- title handling --- + case HTML_TITLE_ON: TitleOn( rInfo ); break; // + case HTML_TITLE_OFF: TitleOff( rInfo ); break; // + +// --- body handling --- + case HTML_BODY_ON: mpCurrTable->BodyOn( rInfo ); break; // + case HTML_BODY_OFF: mpCurrTable->BodyOff( rInfo ); break; // + +// --- insert text --- + case HTML_TEXTTOKEN: InsertText( rInfo ); break; // any text + case HTML_LINEBREAK: mpCurrTable->BreakOn(); break; //
+ case HTML_HEAD1_ON: //

+ case HTML_HEAD2_ON: //

+ case HTML_HEAD3_ON: //

+ case HTML_HEAD4_ON: //

+ case HTML_HEAD5_ON: //

+ case HTML_HEAD6_ON: //
+ case HTML_PARABREAK_ON: mpCurrTable->HeadingOn(); break; //

+ +// --- misc. contents --- + case HTML_ANCHOR_ON: mpCurrTable->AnchorOn(); break; // + +// --- table handling --- + case HTML_TABLE_ON: TableOn( rInfo ); break; // + case HTML_TABLE_OFF: TableOff( rInfo ); break; //
+ case HTML_TABLEROW_ON: mpCurrTable->RowOn( rInfo ); break; //

+ case HTML_TABLEDATA_ON: mpCurrTable->DataOn( rInfo ); break; // + case HTML_TABLEHEADER_OFF: // + case HTML_TABLEDATA_OFF: mpCurrTable->DataOff( rInfo ); break; //
- Table aColCount; // count of cells per HTML column - Table aRowCount; // count of cells per HTML row - USHORT nFirstCol; // first column index - USHORT nFirstRow; // first row index - USHORT nLastCol; // last column index - USHORT nLastRow; // last row index - USHORT nColSpan; // column spanning of the parent cell - USHORT nRowSpan; // row spanning of the parent cell - USHORT nDocCol; // resulting position in ScDoc - USHORT nDocRow; // resulting position in ScDoc - BOOL bBorderOn; // table borders - - ScHTMLTableDataTable* pNestedTables; // table of nested HTML tables - - inline Table& GetDataTable( ScHTMLTableDataKey eCRKey ) - { return (eCRKey == tdCol) ? aColCount : aRowCount; } - inline const Table& GetDataTable( ScHTMLTableDataKey eCRKey ) const - { return (eCRKey == tdCol) ? aColCount : aRowCount; } - - static USHORT GetCount( const Table& rDataTab, ULONG nIndex ); - static USHORT GetSize( const Table& rDataTab, ULONG nStart, ULONG nEnd ); - - USHORT CalcDocPos( ScHTMLTableDataKey eCRKey, ULONG nIndex ) const; - USHORT CalcSpan( ScHTMLTableDataKey eCRKey, ULONG nIndex, USHORT nSpan ) const; - - void SetMaxCount( Table& rDataTab, ULONG nIndex, USHORT nCount ); - void ChangeDocCoord( short nColDiff, short nRowDiff ); - - void RecalcSizeDim( ScHTMLTableDataKey eCRKey ); - -public: - ScHTMLTableData( - const String& rTabName, - USHORT _nFirstCol, USHORT _nFirstRow, - USHORT _nColSpan, USHORT _nRowSpan, - BOOL bBorder ); - ~ScHTMLTableData(); - - inline USHORT GetFirstCol() const { return nFirstCol; } - inline USHORT GetFirstRow() const { return nFirstRow; } - inline USHORT GetLastCol() const { return nLastCol; } - inline USHORT GetLastRow() const { return nLastRow; } - inline const String& GetTableName() const { return aTableName; } - void GetRange( ScRange& rRange ) const; - - inline USHORT GetFirst( ScHTMLTableDataKey eCRKey ) const - { return (eCRKey == tdCol) ? nFirstCol : nFirstRow; } - inline USHORT GetLast( ScHTMLTableDataKey eCRKey ) const - { return (eCRKey == tdCol) ? nLastCol : nLastRow; } - inline USHORT GetDocPos( ScHTMLTableDataKey eCRKey ) const - { return (eCRKey == tdCol) ? nDocCol : nDocRow; } - inline USHORT GetSpan( ScHTMLTableDataKey eCRKey ) const - { return (eCRKey == tdCol) ? nColSpan : nRowSpan; } - inline USHORT GetCount( ScHTMLTableDataKey eCRKey, ULONG nIndex ) const - { return GetCount( GetDataTable( eCRKey ), nIndex ); } - inline USHORT GetSize( ScHTMLTableDataKey eCRKey ) const - { return GetSize( GetDataTable( eCRKey ), GetFirst( eCRKey ), GetLast( eCRKey ) ); } - - inline USHORT CalcDocCol( ULONG nIndex ) const { return CalcDocPos( tdCol, nIndex ); } - inline USHORT CalcDocRow( ULONG nIndex ) const { return CalcDocPos( tdRow, nIndex ); } - inline USHORT CalcColSpan( ULONG nIndex, USHORT nSpan ) const { return CalcSpan( tdCol, nIndex, nSpan ); } - inline USHORT CalcRowSpan( ULONG nIndex, USHORT nSpan ) const { return CalcSpan( tdRow, nIndex, nSpan ); } - - ScHTMLTableData* GetNestedTable( ULONG nTab ) const; - - ScHTMLTableData* InsertNestedTable( - ULONG nTab, const String& rTabName, - USHORT _nFirstCol, USHORT _nFirstRow, - USHORT _nColSpan, USHORT _nRowSpan, - BOOL bBorder ); - inline void SetCellCoord( USHORT nCol, USHORT nRow ); - void SetDocCoord( USHORT nCol, USHORT nRow ); - - void RecalcSize(); - void SetCellBorders( ScDocument* pDoc, const ScAddress& rFirstPos ); -}; - -inline void ScHTMLTableData::SetCellCoord( USHORT nCol, USHORT nRow ) -{ - nLastCol = Max( nLastCol, nCol ); - nLastRow = Max( nLastRow, nRow ); -} - - - -class ScHTMLTableDataTable : private Table -{ -private: - ScHTMLTableData* pCurrTab; - ULONG nCurrTab; - - USHORT nSearchMin1; - USHORT nSearchMin2; - ScHTMLTableDataKey eSearchKey; - - inline void _Insert( ULONG nTab, ScHTMLTableData* pTable ) - { Table::Insert( nTab, pTable ); } - - inline ScHTMLTableData* _Get( ULONG nTab ) const - { return (ScHTMLTableData*) Table::Get( nTab ); } - - inline void SetCurrTable( ULONG nTab, ScHTMLTableData* pTab ) - { nCurrTab = nTab; pCurrTab = pTab; } -public: - ScHTMLTableDataTable(); - virtual ~ScHTMLTableDataTable(); - - ScHTMLTableData* GetTable( ULONG nTab ); - inline ScHTMLTableData* GetFirst() { return (ScHTMLTableData*) Table::First(); } - inline ScHTMLTableData* GetNext() { return (ScHTMLTableData*) Table::Next(); } - ScHTMLTableData* GetFirstInOrder( ScHTMLTableDataKey eKey ); - ScHTMLTableData* GetNextInOrder(); - - USHORT GetNextFreeRow( ULONG nTab ); - - ScHTMLTableData* InsertTable( - ULONG nTab, const String& rTabName, - USHORT nFirstCol, USHORT nFirstRow, - USHORT nColSpan, USHORT nRowSpan, - BOOL bBorder, ULONG nNestedIn = 0 ); - void SetCellCoord( ULONG nTab, USHORT nCol, USHORT nRow ); - void RecalcSizes(); - - void Recalc(); - void SetCellBorders( ScDocument* pDoc, const ScAddress& rFirstPos ); -}; - -//------------------------------------------------------------------------ - +// ============================================================================ class EditEngine; class ScDocument; class HTMLOption; -class ScHTMLParser : public ScEEParser +class ScHTMLLayoutParser : public ScHTMLParser { private: - ULONG aFontHeights[SC_HTML_FONTSIZES]; + Size aPageSize; ScHTMLTableStack aTableStack; - Size aPageSize; // in Pixeln String aString; ScRangeListRef xLockedList; // je Table - ScDocument* pDoc; Table* pTables; - ScHTMLTableDataTable* pTableData; // data for each HTML table ScHTMLColOffset* pColOffset; ScHTMLColOffset* pLocalColOffset; // je Table ULONG nFirstTableCell; // je Table @@ -322,28 +212,450 @@ private: USHORT GetWidth( ScEEParseEntry* ); void SetWidths(); void Adjust(); - void AdjustNoWidthHeight(); USHORT GetWidthPixel( const HTMLOption* ); BOOL IsAtBeginningOfText( ImportInfo* ); void TableOn( ImportInfo* ); void ColOn( ImportInfo* ); + void TableRowOn( ImportInfo* ); + void TableRowOff( ImportInfo* ); void TableDataOn( ImportInfo* ); + void TableDataOff( ImportInfo* ); void TableOff( ImportInfo* ); void Image( ImportInfo* ); void AnchorOn( ImportInfo* ); void FontOn( ImportInfo* ); public: - ScHTMLParser( EditEngine*, const Size& aPageSize, - ScDocument*, BOOL _bCalcWidthHeight ); - virtual ~ScHTMLParser(); + ScHTMLLayoutParser( EditEngine*, const Size& aPageSize, ScDocument* ); + virtual ~ScHTMLLayoutParser(); virtual ULONG Read( SvStream& ); + virtual const ScHTMLTable* GetGlobalTable() const; +}; + + + +// ============================================================================ +// HTML DATA QUERY PARSER +// ============================================================================ + +/** Declares the orientation in or for a table: column or row. */ +enum ScHTMLOrient { tdCol = 0 , tdRow = 1 }; + +/** Type for a unique identifier for each table. */ +typedef sal_uInt16 ScHTMLTableId; +/** Identifier of the "global table" (the entire HTML document). */ +const ScHTMLTableId SC_HTML_GLOBAL_TABLE = 0; +/** Used as table index for normal (non-table) entries in ScHTMLEntry structs. */ +const ScHTMLTableId SC_HTML_NO_TABLE = 0; + + +// ============================================================================ + +/** A 2D cell position in an HTML table. */ +struct ScHTMLPos +{ + sal_uInt16 mnCol; + sal_uInt16 mnRow; + + inline explicit ScHTMLPos() : mnCol( 0 ), mnRow( 0 ) {} + inline explicit ScHTMLPos( sal_uInt16 nCol, sal_uInt16 nRow ) : + mnCol( nCol ), mnRow( nRow ) {} + inline explicit ScHTMLPos( const ScAddress& rAddr ) { Set( rAddr ); } + + inline sal_uInt16 Get( ScHTMLOrient eOrient ) const + { return (eOrient == tdCol) ? mnCol : mnRow; } + inline void Set( sal_uInt16 nCol, sal_uInt16 nRow ) + { mnCol = nCol; mnRow = nRow; } + inline void Set( const ScAddress& rAddr ) + { Set( rAddr.Col(), rAddr.Row() ); } + inline void Move( sal_Int16 nColDiff, sal_Int16 nRowDiff ) + { mnCol += nColDiff; mnRow += nRowDiff; } + inline ScAddress MakeAddr() const + { return ScAddress( mnCol, mnRow, 0 ); } +}; - ScHTMLTableDataTable* GetHTMLTables() const { return pTableData; } +inline bool operator==( const ScHTMLPos& rPos1, const ScHTMLPos& rPos2 ) +{ + return (rPos1.mnRow == rPos2.mnRow) && (rPos1.mnCol == rPos2.mnCol); +} + +inline bool operator<( const ScHTMLPos& rPos1, const ScHTMLPos& rPos2 ) +{ + return (rPos1.mnRow < rPos2.mnRow) || ((rPos1.mnRow == rPos2.mnRow) && (rPos1.mnCol < rPos2.mnCol)); +} + + +// ---------------------------------------------------------------------------- + +/** A 2D cell size in an HTML table. */ +struct ScHTMLSize +{ + sal_uInt16 mnCols; + sal_uInt16 mnRows; + + inline explicit ScHTMLSize() : mnCols( 0 ), mnRows( 0 ) {} + inline explicit ScHTMLSize( sal_uInt16 nCols, sal_uInt16 nRows ) : + mnCols( nCols ), mnRows( nRows ) {} + + inline sal_uInt16 Get( ScHTMLOrient eOrient ) const + { return (eOrient == tdCol) ? mnCols : mnRows; } + inline void Set( sal_uInt16 nCols, sal_uInt16 nRows ) + { mnCols = nCols; mnRows = nRows; } + inline void Expand( sal_Int16 nColDiff, sal_Int16 nRowDiff ) + { mnCols += nColDiff; mnRows += nRowDiff; } +}; + +inline bool operator==( const ScHTMLSize& rSize1, const ScHTMLSize& rSize2 ) +{ + return (rSize1.mnRows == rSize2.mnRows) && (rSize1.mnCols == rSize2.mnCols); +} + + +// ============================================================================ + +/** A single entry containing a line of text or representing a table. */ +struct ScHTMLEntry : public ScEEParseEntry +{ +private: + bool mbImportAlways; /// true = Always import this entry. + +public: + explicit ScHTMLEntry( + const SfxItemSet& rItemSet, + ScHTMLTableId nTableId = SC_HTML_NO_TABLE ); + + /** Returns true, if the selection of the entry is empty. */ + inline bool IsEmpty() const { return !aSel.HasRange(); } + /** Returns true, if the entry has any content to be imported. */ + bool HasContents() const; + /** Returns true, if the entry represents a table. */ + inline bool IsTable() const { return nTab != SC_HTML_NO_TABLE; } + /** Returns true, if the entry represents a table. */ + inline ScHTMLTableId GetTableId() const { return nTab; } + + /** Sets or cleares the import always state. */ + inline void SetImportAlways( bool bSet = true ) { mbImportAlways = bSet; } + /** Sets start point of the entry selection to the start of the import info object. */ + void AdjustStart( const ImportInfo& rInfo ); + /** Sets end point of the entry selection to the end of the import info object. */ + void AdjustEnd( const ImportInfo& rInfo ); + /** Deletes leading and trailing empty paragraphs from the entry. */ + void Strip( const EditEngine& rEditEngine ); +}; + + +// ============================================================================ + +/** This struct handles creation of unique table identifiers. */ +struct ScHTMLTableAutoId +{ + const ScHTMLTableId mnTableId; /// The created unique table identifier. + ScHTMLTableId& mrnUnusedId; /// Reference to global unused identifier variable. + + /** The constructor assigns an unused identifier to member mnTableId. */ + explicit ScHTMLTableAutoId( ScHTMLTableId& rnUnusedId ); +}; + + +// ---------------------------------------------------------------------------- + +class ScHTMLTableMap; + +/** Stores data for one table in an HTML document. + @descr This class does the main work for importing an HTML document. It manages + the correct insertion of parse entries into the correct cells and the creation + of nested tables. Recalculation of resulting document size and position is done + recursively in all nested tables. */ +class ScHTMLTable +{ +private: + typedef ::std::auto_ptr< ScHTMLTableMap > ScHTMLTableMapPtr; + typedef ::std::auto_ptr< SfxItemSet > SfxItemSetPtr; + typedef ::std::vector< sal_uInt16 > ScSizeVec; + typedef ::std::list< ScHTMLEntry* > ScHTMLEntryList; + typedef ::std::map< ScHTMLPos, ScHTMLEntryList > ScHTMLEntryMap; + typedef ::std::auto_ptr< ScHTMLEntry > ScHTMLEntryPtr; + + ScHTMLTable* mpParentTable; /// Pointer to parent table. + ScHTMLTableMapPtr mpNestedTables; /// Table of nested HTML tables. + String maTableName; /// Table name from
option. + ScHTMLTableAutoId maTableId; /// Unique identifier of this table. + SfxItemSet maTableItemSet; /// Items for the entire table. + SfxItemSetPtr mpRowItemSet; /// Items for the current table row. + SfxItemSetPtr mpDataItemSet; /// Items for the current cell. + ScRangeList maLockList; /// Locked cells (needed for merged cells). + EditEngine& mrEditEngine; /// Edit engine (from ScEEParser). + ScEEParseList& mrEEParseList; /// List that owns the parse entries (from ScEEParser). + ScHTMLEntryMap maEntryMap; /// List of entries for each cell. + ScHTMLEntryList* mpCurrEntryList; /// Current entry list from map for faster access. + ScHTMLEntryPtr mpCurrEntry; /// Working entry, not yet inserted in a list. + ScSizeVec maSizes[ 2 ]; /// Calc cell count of each HTML table column/row. + ScHTMLSize maSize; /// Size of the table. + ScHTMLPos maCurrCell; /// Address of current cell to fill. + ScHTMLPos maDocBasePos; /// Resulting base address in a Calc document. + bool mbBorderOn; /// true = Table borders on. + bool mbPreFormText; /// true = Table from preformatted text (
 tag).
+    bool                        mbRowOn;            /// true = Inside of 
. + bool mbDataOn; /// true = Inside of or . + bool mbPushEmptyLine; /// true = Insert empty line before current entry. + +public: + /** Creates a new HTML table without content. + @descr Internally handles a current cell position. This position is invalid + until first calls of RowOn() and DataOn(). + @param rParentTable Reference to the parent table that owns this table. + @param bPreFormText true = Table is based on preformatted text (
 tag). */
+    explicit                    ScHTMLTable(
+                                    ScHTMLTable& rParentTable,
+                                    const ImportInfo& rInfo,
+                                    bool bPreFormText );
+
+    virtual                     ~ScHTMLTable();
+
+    /** Returns the name of the table, specified in the TABLE tag. */
+    inline const String&        GetTableName() const { return maTableName; }
+    /** Returns the unique identifier of the table. */
+    inline ScHTMLTableId        GetTableId() const { return maTableId.mnTableId; }
+    /** Returns the table size. */
+    inline const ScHTMLSize&    GetSize() const { return maSize; }
+    /** Returns the cell spanning of the specified cell. */
+    ScHTMLSize                  GetSpan( const ScHTMLPos& rCellPos );
+
+    /** Searches in all nested tables for the specified table.
+        @param nTableId  Unique identifier of the table. */
+    ScHTMLTable*                FindNestedTable( ScHTMLTableId nTableId ) const;
+
+    /** Puts the item into the item set of the current entry. */
+    void                        PutItem( const SfxPoolItem& rItem );
+    /** Inserts a text portion into current entry. */
+    void                        PutText( const ImportInfo& rInfo );
+    /** Inserts a new line, if in preformatted text, else does nothing. */
+    void                        InsertPara( const ImportInfo& rInfo );
+
+    /** Inserts a line break (
tag). + @descr Inserts the current entry regardless if it is empty. */ + void BreakOn(); + /** Inserts a heading line (

and tags). */ + void HeadingOn(); + /** Processes a hyperlink ( tag). */ + void AnchorOn(); + + /** Starts a *new* table nested in this table (

tag). + @return Pointer to the new table. */ + ScHTMLTable* TableOn( const ImportInfo& rInfo ); + /** Closes *this* table (
tag). + @return Pointer to the parent table. */ + ScHTMLTable* TableOff( const ImportInfo& rInfo ); + /** Starts a *new* table based on preformatted text (
 tag).
+        @return  Pointer to the new table. */
+    ScHTMLTable*                PreOn( const ImportInfo& rInfo );
+    /** Closes *this* table based on preformatted text (
tag). + @return Pointer to the parent table. */ + ScHTMLTable* PreOff( const ImportInfo& rInfo ); + + /** Starts next row ( tag). + @descr Cell address is invalid until first call of DataOn(). */ + void RowOn( const ImportInfo& rInfo ); + /** Closes the current row ( tag). + @descr Cell address is invalid until call of RowOn() and DataOn(). */ + void RowOff( const ImportInfo& rInfo ); + /** Starts the next cell ( or tag). */ + void DataOn( const ImportInfo& rInfo ); + /** Closes the current cell ( or tag). + @descr Cell address is invalid until next call of DataOn(). */ + void DataOff( const ImportInfo& rInfo ); + + /** Starts the body of the HTML document ( tag). */ + void BodyOn( const ImportInfo& rInfo ); + /** Closes the body of the HTML document ( tag). */ + void BodyOff( const ImportInfo& rInfo ); + + /** Returns the resulting document row/column count of the specified HTML row/column. */ + sal_uInt16 GetDocSize( ScHTMLOrient eOrient, sal_uInt16 nCellPos ) const; + /** Returns the resulting document row/column count in the range [nCellBegin, nCellEnd). */ + sal_uInt16 GetDocSize( ScHTMLOrient eOrient, sal_uInt16 nCellBegin, sal_uInt16 nCellEnd ) const; + /** Returns the total document row/column count in the specified direction. */ + sal_uInt16 GetDocSize( ScHTMLOrient eOrient ) const; + + /** Returns the resulting Calc position of the top left edge of the table. */ + inline const ScHTMLPos& GetDocPos() const { return maDocBasePos; } + /** Calculates the resulting Calc position of the specified HTML column/row. */ + sal_uInt16 GetDocPos( ScHTMLOrient eOrient, sal_uInt16 nCellPos = 0 ) const; + /** Calculates the resulting Calc position of the specified HTML cell. */ + ScHTMLPos GetDocPos( const ScHTMLPos& rCellPos ) const; + /** Calculates the current Calc document area of this table. */ + void GetDocRange( ScRange& rRange ) const; + + /** Applies border formatting to the passed document. */ + void ApplyCellBorders( ScDocument* pDoc, const ScAddress& rFirstPos ) const; + +private: + /** Returns true, if the current cell does not contain an entry yet. */ + bool IsEmptyCell() const; + /** Returns the item set from cell, row, or table, depending on current state. */ + const SfxItemSet& GetCurrItemSet() const; + + /** Returns true, if import info represents a space character. */ + static bool IsSpaceCharInfo( const ImportInfo& rInfo ); + + /** Creates and returns a new empty flying entry at position (0,0). */ + ScHTMLEntry* CreateEntry() const; + /** Creates a new flying entry. + @param rInfo Contains the initial edit engine selection for the entry. */ + void CreateNewEntry( const ImportInfo& rInfo ); + + /** Inserts an empty line in front of the next entry. */ + void InsertLeadingEmptyLine(); + + /** Pushes the passed entry into the list of the current cell. */ + void ImplPushEntryToList( ScHTMLEntryList& rEntryList, ScHTMLEntryPtr& rpEntry ); + /** Tries to insert the entry into the current cell. + @descr If insertion is not possible (i.e., currently no cell open), the + entry will be inserted into the parent table. */ + void PushEntry( ScHTMLEntryPtr& rpEntry ); + /** Puts the current entry into the entry list, if it is not empty. + @param rInfo The import info struct containing the end position of the current entry. + @param bLastInCell true = If cell is still empty, put this entry always. */ + void PushEntry( const ImportInfo& rInfo, bool bLastinCell = false ); + /** Pushes a new entry into current cell which references a nested table. */ + void PushTableEntry( ScHTMLTableId nTableId ); + + /** Tries to find a table from the table container. + @descr Assumes that the table is located in the current container or + that the passed table identifier is 0. + @param nTableId Unique identifier of the table or 0. */ + ScHTMLTable* GetExistingTable( ScHTMLTableId nTableId ) const; + /** Inserts a nested table in the current cell at the specified position. + @param bPreFormText true = New table is based on preformatted text (
 tag). */
+    ScHTMLTable*                InsertNestedTable( const ImportInfo& rInfo, bool bPreFormText );
+    /** Closes this table and inserts it into parent table.
+        @return  Pointer to the parent table, or this, if no parent found. */
+    ScHTMLTable*                CloseTable( const ImportInfo& rInfo );
+
+    /** Inserts a new cell in an unused position, starting from current cell position. */
+    void                        InsertNewCell( const ScHTMLSize& rSpanSize );
+
+    /** Set internal states for a new table row. */
+    void                        ImplRowOn();
+    /** Set internal states for leaving a table row. */
+    void                        ImplRowOff();
+    /** Set internal states for entering a new table cell. */
+    void                        ImplDataOn( const ScHTMLSize& rSpanSize );
+    /** Set internal states for leaving a table cell. */
+    void                        ImplDataOff();
+
+    /** Inserts additional formatting options from import info into the item set. */
+    void                        ProcessFormatOptions( SfxItemSet& rItemSet, const ImportInfo& rInfo );
+
+    /** Updates the document column/row size of the specified column or row.
+        @descr  Only increases the present count, never decreases. */
+    void                        SetDocSize( ScHTMLOrient eOrient, sal_uInt16 nCellPos, sal_uInt16 nSize );
+    /** Calculates and sets the resulting size the cell needs in the document.
+        @descr  Reduces the needed size in merged cells.
+        @param nCellPos  The first column/row position of the (merged) cell.
+        @param nCellSpan  The cell spanning in the specified orientation.
+        @param nRealDocSize  The raw document size of all entries of the cell. */
+    void                        CalcNeededDocSize(
+                                    ScHTMLOrient eOrient, sal_uInt16 nCellPos,
+                                    sal_uInt16 nCellSpan, sal_uInt16 nRealDocSize );
+
+protected:
+    /** Creates a new HTML table without parent.
+        @descr  This constructor is used to create the "global table". */
+    explicit                    ScHTMLTable(
+                                    SfxItemPool& rPool,
+                                    EditEngine& rEditEngine,
+                                    ScEEParseList& rEEParseList,
+                                    ScHTMLTableId& rnUnusedId );
+
+    /** Fills all empty cells in this and nested tables with dummy parse entries. */
+    void                        FillEmptyCells();
+    /** Recalculates the size of all columns/rows in the table, regarding nested tables. */
+    void                        RecalcDocSize();
+    /** Recalculates the position of all cell entries and nested tables.
+        @param rBasePos  The origin of the table in the Calc document. */
+    void                        RecalcDocPos( const ScHTMLPos& rBasePos );
+};
+
+
+// ----------------------------------------------------------------------------
+
+/** The "global table" representing the entire HTML document. */
+class ScHTMLGlobalTable : public ScHTMLTable
+{
+public:
+    explicit                    ScHTMLGlobalTable(
+                                    SfxItemPool& rPool,
+                                    EditEngine& rEditEngine,
+                                    ScEEParseList& rEEParseList,
+                                    ScHTMLTableId& rnUnusedId );
+
+    virtual                     ~ScHTMLGlobalTable();
+
+    /** Recalculates sizes and resulting positions of all document entries. */
+    void                        Recalc();
 };
 
 
+// ============================================================================
+
+/** The HTML parser for data queries. Focuses on data import, not on layout.
+    @descr  Builds the table structure correctly, ignores extended formatting
+    like pictures or column widths. */
+class ScHTMLQueryParser : public ScHTMLParser
+{
+private:
+    typedef ::std::auto_ptr< ScHTMLGlobalTable >    ScHTMLGlobalTablePtr;
+
+    String                      maTitle;            /// The title of the document.
+    ScHTMLGlobalTablePtr        mpGlobTable;        /// Contains the entire imported document.
+    ScHTMLTable*                mpCurrTable;        /// Pointer to current table (performance).
+    ScHTMLTableId               mnUnusedId;         /// First unused table identifier.
+    bool                        mbTitleOn;          /// true = Inside of  .
+
+public:
+    explicit                    ScHTMLQueryParser( EditEngine* pEditEngine, ScDocument* pDoc );
+    virtual                     ~ScHTMLQueryParser();
+
+    virtual sal_uInt32          Read( SvStream& rStrm );
+
+    /** Returns the "global table" which contains the entire HTML document. */
+    virtual const ScHTMLTable*  GetGlobalTable() const;
+
+private:
+    /** Returns the specified table (may be maGlobTable, if no real table can be found). */
+    ScHTMLTable*                GetTable( ScHTMLTableId nTableId ) const;
+
+    /** Handles all possible tags in the HTML document. */
+    void                        ProcessToken( const ImportInfo& rInfo );
+    /** Inserts a text portion into current entry. */
+    void                        InsertText( const ImportInfo& rInfo );
+    /** Processes the  tag. */
+    void                        FontOn( const ImportInfo& rInfo );
+
+    /** Processes the  tag. */
+    void                        MetaOn( const ImportInfo& rInfo );
+    /** Opens the title of the HTML document ( tag). */
+    void                        TitleOn( const ImportInfo& rInfo );
+    /** Closes the title of the HTML document ( tag). */
+    void                        TitleOff( const ImportInfo& rInfo );
+
+    /** Opens a new table at the current position. */
+    void                        TableOn( const ImportInfo& rInfo );
+    /** Closes the current table. */
+    void                        TableOff( const ImportInfo& rInfo );
+    /** Opens a new table based on preformatted text. */
+    void                        PreOn( const ImportInfo& rInfo );
+    /** Closes the current preformatted text table. */
+    void                        PreOff( const ImportInfo& rInfo );
+
+    DECL_LINK( HTMLImportHdl, const ImportInfo* );
+};
+
+
+// ============================================================================
+
 #endif
 
diff --git a/sc/source/filter/inc/imp_op.hxx b/sc/source/filter/inc/imp_op.hxx
index e56ef6d36387..fd0d5b94423b 100644
--- a/sc/source/filter/inc/imp_op.hxx
+++ b/sc/source/filter/inc/imp_op.hxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: imp_op.hxx,v $
  *
- *  $Revision: 1.19 $
+ *  $Revision: 1.20 $
  *
- *  last change: $Author: jmarmion $ $Date: 2002-12-06 16:03:48 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:04 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -359,7 +359,6 @@ protected:
     virtual void            SetTextCell( const UINT16 nCol, const UINT16 nRow,
                                         String& rUnconvertedText, const UINT16 nXF );
                                             // Achtung: rUnconvertedText wird moeglicherweise veraendert
-    UINT16                  CalcColWidth( const UINT16 nExcColWidth );
 
     /** Sets a margin item into an item set.
         @param rItemSet  The destination item set.
diff --git a/sc/source/filter/inc/lotimpop.hxx b/sc/source/filter/inc/lotimpop.hxx
index ffe2063e5d89..be02c442d78b 100644
--- a/sc/source/filter/inc/lotimpop.hxx
+++ b/sc/source/filter/inc/lotimpop.hxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: lotimpop.hxx,v $
  *
- *  $Revision: 1.4 $
+ *  $Revision: 1.5 $
  *
- *  last change: $Author: dr $ $Date: 2002-11-21 12:20:43 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:04 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
diff --git a/sc/source/filter/inc/namebuff.hxx b/sc/source/filter/inc/namebuff.hxx
index 2acff65591c2..dfe0b6b27ed6 100644
--- a/sc/source/filter/inc/namebuff.hxx
+++ b/sc/source/filter/inc/namebuff.hxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: namebuff.hxx,v $
  *
- *  $Revision: 1.5 $
+ *  $Revision: 1.6 $
  *
- *  last change: $Author: dr $ $Date: 2001-10-31 10:52:49 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:05 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -77,6 +77,8 @@
 #include "root.hxx"
 #endif
 
+#include "rangenam.hxx"
+
 class ScDocument;
 class ScTokenArray;
 class NameBuffer;
@@ -218,9 +220,9 @@ public:
     inline                  RangeNameBuffer( RootData* p );
                                             // Name, Definition
     void                    Store( ByteString&, const ScTokenArray*,
-                                UINT16 nAltSheet = 0, const BOOL bPrintarea = FALSE );
+                                UINT16 nAltSheet = 0, const RangeType eNameType = RT_ABSAREA );
     void                    Store( String&, const ScTokenArray*,
-                                UINT16 nAltSheet = 0, const BOOL bPrintarea = FALSE );
+                                UINT16 nAltSheet = 0, const RangeType eNameType = RT_ABSAREA );
     inline UINT16           operator[]( UINT16 nExcInd ) const;
     inline UINT16           GetPos( void ) const;
 };
diff --git a/sc/source/filter/inc/root.hxx b/sc/source/filter/inc/root.hxx
index 38b2ecb6a6ef..d0535139d696 100644
--- a/sc/source/filter/inc/root.hxx
+++ b/sc/source/filter/inc/root.hxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: root.hxx,v $
  *
- *  $Revision: 1.26 $
+ *  $Revision: 1.27 $
  *
- *  last change: $Author: dr $ $Date: 2002-12-06 16:41:07 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:05 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -102,9 +102,7 @@ class XclExpUserBViewList;
 class XclExpCellMerging;
 
 class ExcNameList;
-class UsedAttrList;
 class XclObjList;
-class XclNoteList;
 class XclEscher;
 class XclPivotCacheList;
 class SfxStyleSheet;
@@ -119,7 +117,6 @@ class XclExpRoot;
 struct RootData     // -> Inkarnation jeweils im ImportExcel-Objekt!
 {
     SvStorage*          pRootStorage;           // THE storage
-    double              fColScale;              // Skalierungs-Faktoren fuer
     double              fRowScale;              //  Spaltenbreiten / Zeilenhoehen
     ScDocument*         pDoc;
     ScRangeName*        pScRangeName;
@@ -144,9 +141,6 @@ struct RootData     // -> Inkarnation jeweils im ImportExcel-Objekt!
     SvStorage*              pPivotCacheStorage;
     XclImpPivotCacheList*   pImpPivotCacheList;     // pivot caches for import
 
-    SvStorageRef        xCtrlStorage;           // SvxMSConvertOCXControls compatibel storage
-//  SvStorage*          pCtrlStorage;           // SvxMSConvertOCXControls compatibel storage
-
     UINT32              nCondRangeCnt;
     UINT16              nLastCond;
     String              GetCondFormStyleName( const UINT16 nCondCnt );  // -> exctools.cxx
@@ -158,13 +152,11 @@ struct RootData     // -> Inkarnation jeweils im ImportExcel-Objekt!
 
     ExcNameList*        pNameList;
     ScRangeName*        pScNameList;        // stores range names and DB ranges
-    UsedAttrList*       pXFRecs;
     ExcExternDup*       pExtSheetCntAndRecs;
     UINT16              nColMax;
     UINT16              nRowMax;
     // Biff8
     XclObjList*         pObjRecs;
-    XclNoteList*        pNoteRecs;
     String              sAddNoteText;       // text to append at current note (multiple hyperlinks)
     XclEscher*          pEscher;
 
diff --git a/sc/source/filter/inc/scflt.hxx b/sc/source/filter/inc/scflt.hxx
index 74dff29b267d..898653e46795 100644
--- a/sc/source/filter/inc/scflt.hxx
+++ b/sc/source/filter/inc/scflt.hxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: scflt.hxx,v $
  *
- *  $Revision: 1.2 $
+ *  $Revision: 1.3 $
  *
- *  last change: $Author: er $ $Date: 2002-12-06 17:44:47 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:05 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -732,7 +732,7 @@ public:
 };
 
 
-class FilterProgressBar;
+class ScfStreamProgressBar;
 
 // Import-Klasse
 class Sc10Import
@@ -752,7 +752,7 @@ class Sc10Import
     INT16                   TabCount;
     USHORT                  nShowTab;
     ScViewOptions           aSc30ViewOpt;
-    FilterProgressBar*      pPrgrsBar;
+    ScfStreamProgressBar*   pPrgrsBar;
 
 public:
                               Sc10Import( SvStream& rStr, ScDocument* pDocument );
diff --git a/sc/source/filter/inc/xcl97dum.hxx b/sc/source/filter/inc/xcl97dum.hxx
index 308e98d892b5..c1a09297d36d 100644
--- a/sc/source/filter/inc/xcl97dum.hxx
+++ b/sc/source/filter/inc/xcl97dum.hxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: xcl97dum.hxx,v $
  *
- *  $Revision: 1.4 $
+ *  $Revision: 1.5 $
  *
- *  last change: $Author: dr $ $Date: 2002-12-06 16:41:07 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:07 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -112,28 +112,6 @@ public:
 };
 
 
-class ExcDummy8_XF : public ExcDummyRec
-{
-private:
-        static const BYTE   pMyData[];
-        static const ULONG  nMyLen;
-public:
-    virtual ULONG               GetLen() const;
-    virtual const BYTE*         GetData() const;
-};
-
-
-class ExcDummy8_Style : public ExcDummyRec
-{
-private:
-        static const BYTE   pMyData[];
-        static const ULONG  nMyLen;
-public:
-    virtual ULONG               GetLen() const;
-    virtual const BYTE*         GetData() const;
-};
-
-
 class ExcDummy8_UsesElfs : public ExcDummyRec
 {
 private:
diff --git a/sc/source/filter/inc/xcl97esc.hxx b/sc/source/filter/inc/xcl97esc.hxx
index 952e09c6c626..9747016ad277 100644
--- a/sc/source/filter/inc/xcl97esc.hxx
+++ b/sc/source/filter/inc/xcl97esc.hxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: xcl97esc.hxx,v $
  *
- *  $Revision: 1.3 $
+ *  $Revision: 1.4 $
  *
- *  last change: $Author: dr $ $Date: 2002-12-12 11:50:27 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:07 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -73,6 +73,10 @@
 #include 
 #endif
 
+#ifndef SC_XLOCX_HXX
+#include "xlocx.hxx"
+#endif
+
 namespace utl { class TempFile; }
 
 // --- class XclEscherEx ---------------------------------------------
@@ -89,6 +93,9 @@ class XclEscherEx : public EscherEx
 private:
         List                aOffsetMap;
         Stack               aStack;
+#if EXC_INCL_EXP_OCX
+        XclExpOcxConverter  aOcxConverter;      /// Export of form controls.
+#endif
         RootData&           rRootData;
         utl::TempFile*      pPicTempFile;
         SvStream*           pPicStrm;
diff --git a/sc/source/filter/inc/xcl97rec.hxx b/sc/source/filter/inc/xcl97rec.hxx
index 77942f548f63..959900a3854f 100644
--- a/sc/source/filter/inc/xcl97rec.hxx
+++ b/sc/source/filter/inc/xcl97rec.hxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: xcl97rec.hxx,v $
  *
- *  $Revision: 1.25 $
+ *  $Revision: 1.26 $
  *
- *  last change: $Author: dr $ $Date: 2002-12-06 16:41:07 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:08 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -228,7 +228,11 @@ protected:
         UINT16              nGrbit;
         BOOL                bFirstOnSheet;
 
-                                XclObj( ObjType eObjType, RootData& rRoot );
+        bool                    mbOwnEscher;    /// true = Escher part created on the fly.
+
+    /** @param bOwnEscher  If set to true, this object will create its escher data.
+        See SetOwnEscher() for details. */
+    explicit                    XclObj( ObjType eObjType, RootData& rRoot, bool bOwnEscher = false );
 
                                 // overwritten for writing MSODRAWING record
     virtual void                SaveCont( XclExpStream& rStrm );
@@ -252,6 +256,17 @@ public:
             void                SetEscherShapeType( UINT16 nType );
     inline  void                SetEscherShapeTypeGroup() { eObjType = otGroup; }
 
+    /** If set to true, this object has created its own escher data. This causes the
+        function EscherEx::EndShape() to not post process this object. This is used
+        i.e. for form controls. They are not handled in the svx base code, so the
+        XclExpObjControl c'tor creates the escher data itself. The svx base code does
+        not receive the correct shape ID after the EscherEx::StartShape() call, which
+        would result in deleting the object in EscherEx::EndShape(). */
+    inline void                 SetOwnEscher( bool bOwnEscher = true ) { mbOwnEscher = bOwnEscher; }
+    /** Returns true, if the object has created the escher data itself.
+        See SetOwnEscher() for details. */
+    inline bool                 IsOwnEscher() const { return mbOwnEscher; }
+
                                 //! actually writes ESCHER_ClientTextbox
             void                SetText( RootData& rRoot, const SdrTextObj& rObj );
 
@@ -282,7 +297,7 @@ private:
 
 public:
                                 XclObjComment( RootData& rRoot,
-                                    const ScAddress& rPos, const String& rStr );
+                                    const ScAddress& rPos, const String& rStr, bool bVisible );
     virtual                     ~XclObjComment();
 
     virtual void                Save( XclExpStream& rStrm );
@@ -356,6 +371,34 @@ public:
 };
 
 
+// ----------------------------------------------------------------------------
+
+#if EXC_INCL_EXP_OCX
+
+/** Represents an OBJ record for a form control. */
+class XclExpObjControl : public XclObj
+{
+private:
+    String                      maClassName;        /// Class name of the control.
+    sal_uInt32                  mnStrmStart;        /// Start position in 'Ctls' stream.
+    sal_uInt32                  mnStrmSize;         /// Size in 'Ctls' stream.
+
+public:
+                                XclExpObjControl(
+                                    const XclRoot& rRoot,
+                                    const ::com::sun::star::uno::Reference<
+                                        ::com::sun::star::drawing::XShape >& rxShape,
+                                    const String& rClassName,
+                                    sal_uInt32 nStrmStart, sal_uInt32 nStrmSize );
+
+    virtual sal_uInt32          GetLen() const;
+
+private:
+    virtual void                SaveCont( XclExpStream& rStrm );
+};
+
+#endif
+
 // --- class XclObjAny -----------------------------------------------
 
 class XclObjAny : public XclObj
@@ -372,48 +415,45 @@ public:
 };
 
 
-// --- class XclNoteList ---------------------------------------------
+// ============================================================================
 
-class XclNote;
-
-class XclNoteList : public List, public ExcEmptyRec
+/** Represents a NOTE record containing the author and the note object ID.
+    @descr  Creates the note Escher object internally. */
+class XclExpNote : public XclExpRecord
 {
 private:
-public:
-                                XclNoteList();
-    virtual                     ~XclNoteList();
-
-            XclNote*            First() { return (XclNote*) List::First(); }
-            XclNote*            Next()  { return (XclNote*) List::Next(); }
-
-            void                Add( XclNote* );
-
+    XclExpString                maAuthor;       /// Name of the author.
+    ScAddress                   maPos;          /// Cell address of the note.
+    sal_uInt16                  mnObjId;        /// Escher object ID.
+    bool                        mbVisible;      /// true = permanently visible.
+
+public:
+    /** Constructs a NOTE record from the passed note object and/or the text.
+        @descr  The additional text will be separated from the note text with an empty line.
+        Creates the Escher object containing the drawing information and the note text.
+        @param rPos  The Calc cell address of the note.
+        @param pScNote  The Calc note object.
+        @param rAddText  Additional text appended to the note text. */
+    explicit                    XclExpNote(
+                                    const XclExpRoot& rRoot,
+                                    const ScAddress& rPos,
+                                    const ScPostIt* pScNote,
+                                    const String& rAddText );
+
+    /** Writes the NOTE record, if the respective Escher object is present. */
     virtual void                Save( XclExpStream& rStrm );
-};
 
-
-// --- class XclNote -------------------------------------------------
-
-class XclNote : public ExcRecord
-{
 private:
-        XclExpUniString     aAuthor;
-        ScAddress           aPos;
-        UINT16              nGrbit;
-        UINT16              nObjId;
+    /** Writes the body of the NOTE record. */
+    virtual void                WriteBody( XclExpStream& rStrm );
+};
 
-    virtual void            SaveCont( XclExpStream& rStrm );
 
-public:
-                            XclNote( RootData& rD, const ScAddress& rPos,
-                                const String& rNoteText, const String& rNoteAuthor );
-    virtual                 ~XclNote();
+/** A list of NOTE record objects. */
+typedef XclExpRecordList< XclExpNote > XclExpNoteList;
 
-    virtual void            Save( XclExpStream& rStrm );
 
-    virtual UINT16          GetNum() const;
-    virtual ULONG           GetLen() const;
-};
+// ============================================================================
 
 
 // --- class ExcBof8_Base --------------------------------------------
@@ -490,34 +530,6 @@ public:
 };
 
 
-// --- class ExcXf8 --------------------------------------------------
-
-class ExcXf8 : public ExcXf
-{
-private:
-        XclTextDirection    eTextDir;
-        UINT16              nTrot;
-        UINT16              nCIndent;
-
-        UINT16              nGrbitDiag;
-        UINT32              nIcvDiagSer;
-        UINT16              nDgDiag;
-
-        BOOL                bFShrinkToFit;
-        BOOL                bFMergeCell;
-
-    virtual void                SaveCont( XclExpStream& rStrm );
-
-public:
-                                ExcXf8( const XclExpRoot& rRoot, UINT16 nFont, UINT16 nForm,
-                                    const ScPatternAttr* pPattAttr,
-                                    BOOL& rbLineBreak, BOOL bStyle = FALSE );
-
-    virtual UINT16              GetNum() const;
-    virtual ULONG               GetLen() const;
-};
-
-
 // --- class ExcBundlesheet8 -----------------------------------------
 
 class ExcBundlesheet8 : public ExcBundlesheetBase
@@ -609,7 +621,7 @@ class ScRangeList;
 struct RootData;
 class XclCf;
 
-class XclCondFormat : public ExcEmptyRec, protected List
+class XclCondFormat : public ExcEmptyRec, protected ScfDelList< XclCf >
 {
 // writes multiple cf _and_ condfmt records!
 private:
@@ -618,9 +630,6 @@ private:
     UINT16                      nTabNum;
     ULONG                       nComplLen;
 
-    inline XclCf*               _First()    { return (XclCf*) List::First(); }
-    inline XclCf*               _Next()     { return (XclCf*) List::Next(); }
-
     void                        WriteCondfmt( XclExpStream& rStrm );
 
 public:
@@ -661,17 +670,10 @@ private:
     UINT32                      nIcvTextSer;
 
     BOOL                        bHasLine;
-    UINT8                       nLineData1;
-    UINT8                       nLineData2;
-    UINT32                      nIcvTopSer;
-    UINT32                      nIcvBotSer;
-    UINT32                      nIcvLftSer;
-    UINT32                      nIcvRigSer;
+    XclExpXFBorder              maBorder;
 
     BOOL                        bHasPattern;
-    UINT16                      nPatt;
-    UINT32                      nIcvForeSer;
-    UINT32                      nIcvBackSer;
+    XclExpXFArea                maArea;
 
     virtual void                SaveCont( XclExpStream& rStrm );
 
diff --git a/sc/source/filter/inc/xecontent.hxx b/sc/source/filter/inc/xecontent.hxx
index d55b51921696..f2f3f9804407 100644
--- a/sc/source/filter/inc/xecontent.hxx
+++ b/sc/source/filter/inc/xecontent.hxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: xecontent.hxx,v $
  *
- *  $Revision: 1.1 $
+ *  $Revision: 1.2 $
  *
- *  last change: $Author: dr $ $Date: 2002-11-21 12:11:10 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:08 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
diff --git a/sc/source/filter/inc/xehelper.hxx b/sc/source/filter/inc/xehelper.hxx
index 65589f48c50b..1db07acad757 100644
--- a/sc/source/filter/inc/xehelper.hxx
+++ b/sc/source/filter/inc/xehelper.hxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: xehelper.hxx,v $
  *
- *  $Revision: 1.2 $
+ *  $Revision: 1.3 $
  *
- *  last change: $Author: dr $ $Date: 2002-12-06 16:41:08 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:08 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -316,8 +316,10 @@ class EditEngine;
     &N                      page count
     &D                      current date
     &T                      current time
-    &F                      file name without path (converted to full file name)
     &A                      table name
+    &F                      file name without path
+    &Z                      file path without file name
+    &Z&F                    file path and name
     &U                      underlining on/off
     &E                      double underlining on/off
     &S                      strikeout characters on/off
@@ -327,7 +329,6 @@ class EditEngine;
     Known but unsupported control sequences:
     &X                      superscript on/off
     &Y                      subscript on/off
-    &Z                      file path without file name
     &G                      picture
  */
 class XclExpHFConverter : protected XclExpRoot, ScfNoCopy
diff --git a/sc/source/filter/inc/xelink.hxx b/sc/source/filter/inc/xelink.hxx
index c6e2b1936211..f3ef7eddd71d 100644
--- a/sc/source/filter/inc/xelink.hxx
+++ b/sc/source/filter/inc/xelink.hxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: xelink.hxx,v $
  *
- *  $Revision: 1.2 $
+ *  $Revision: 1.3 $
  *
- *  last change: $Author: dr $ $Date: 2002-12-06 16:41:08 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:08 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
diff --git a/sc/source/filter/inc/xerecord.hxx b/sc/source/filter/inc/xerecord.hxx
index f57150df8f8c..55526628b5b9 100644
--- a/sc/source/filter/inc/xerecord.hxx
+++ b/sc/source/filter/inc/xerecord.hxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: xerecord.hxx,v $
  *
- *  $Revision: 1.2 $
+ *  $Revision: 1.3 $
  *
- *  last change: $Author: dr $ $Date: 2002-12-06 16:41:08 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:09 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -86,6 +86,9 @@ public:
 
     /** Overwrite this method to do any operation while saving the record list. */
     virtual void                Save( XclExpStream& rStrm );
+
+    /** Calls Save(XclExpStream&) nCount times. */
+    void                        SaveRepeated( XclExpStream& rStrm, sal_uInt32 nCount );
 };
 
 
@@ -106,7 +109,7 @@ private:
 public:
     /** @param nRecId  The record ID of this record. May be set later with SetRecId().
         @param nRecSize  The predicted record size. May be set later with SetRecSize(). */
-                                XclExpRecord(
+    explicit                    XclExpRecord(
                                     sal_uInt16 nRecId = EXC_ID_UNKNOWN,
                                     sal_uInt32 nRecSize = 0 );
 
@@ -114,13 +117,15 @@ public:
 
     /** Returns the current record ID. */
     inline sal_uInt16           GetRecId() const { return mnRecId; }
-    /** Sets a new record ID. */
-    inline void                 SetRecId( sal_uInt16 nRecId ) { mnRecId = nRecId; }
-
     /** Returns the current record size prediction. */
     inline sal_uInt32           GetRecSize() const { return mnRecSize; }
+
+    /** Sets a new record ID. */
+    inline void                 SetRecId( sal_uInt16 nRecId ) { mnRecId = nRecId; }
     /** Sets a new record size prediction. */
     inline void                 SetRecSize( sal_uInt32 nRecSize ) { mnRecSize = nRecSize; }
+    /** Sets record ID and size with one call. */
+    void                        SetRecHeader( sal_uInt16 nRecId, sal_uInt32 nRecSize );
 
     /** Writes the record header and calls WriteBody(). */
     virtual void                Save( XclExpStream& rStrm );
@@ -139,10 +144,7 @@ class XclExpEmptyRecord : public XclExpRecord
 {
 public:
     /** @param nRecId  The record ID of this record. */
-    inline                      XclExpEmptyRecord( sal_uInt16 nRecId );
-
-private:
-    void                        SetRecSize( sal_uInt32 );
+    inline explicit             XclExpEmptyRecord( sal_uInt16 nRecId );
 };
 
 inline XclExpEmptyRecord::XclExpEmptyRecord( sal_uInt16 nRecId ) :
@@ -165,7 +167,7 @@ public:
     /** @param nRecId  The record ID of this record.
         @param rValue  The value for the record body.
         @param nSize  Record size. Uses sizeof( Type ), if this parameter is omitted. */
-    inline                      XclExpValueRecord(
+    inline explicit             XclExpValueRecord(
                                     sal_uInt16 nRecId,
                                     const Type& rValue,
                                     sal_uInt32 nSize = sizeof( Type ) );
@@ -218,7 +220,7 @@ private:
 public:
     /** @param nRecId  The record ID of this record.
         @param nValue  The value for the record body. */
-    inline                      XclExpBoolRecord( sal_uInt16 nRecId, bool bValue ) :
+    inline explicit             XclExpBoolRecord( sal_uInt16 nRecId, bool bValue ) :
                                     XclExpRecord( nRecId, 2 ), mbValue( bValue ) {}
 
     /** Returns the Boolean value of the record. */
@@ -232,6 +234,30 @@ private:
 };
 
 
+// ----------------------------------------------------------------------------
+
+/** Record which exports a memory data array. */
+class XclExpDummyRecord : public XclExpRecord
+{
+private:
+    const void*                 mpData;         /// The record data.
+
+public:
+    /** @param nRecId  The record ID of this record.
+        @param nRecData  Pointer to the data array representing the record body.
+        @param nRecSize  Size of the data array. */
+    explicit                    XclExpDummyRecord(
+                                    sal_uInt16 nRecId, const void* pRecData, sal_uInt32 nRecSize );
+
+    /** Sets a data array. */
+    void                        SetData( const void* pRecData, sal_uInt32 nRecSize );
+
+private:
+    /** Writes the body of the record. */
+    virtual void                WriteBody( XclExpStream& rStrm );
+};
+
+
 // ----------------------------------------------------------------------------
 
 /** A record that stores a reference to an existing record object.
@@ -244,7 +270,7 @@ protected:
     XclExpRecordBase&           mrRec;          /// Reference to the record.
 
 public:
-    inline                      XclExpRefRecord( XclExpRecordBase& rRec ) : mrRec( rRec ) {}
+    inline explicit             XclExpRefRecord( XclExpRecordBase& rRec ) : mrRec( rRec ) {}
 
     /** Writes the entire record. */
     virtual void                Save( XclExpStream& rStrm );
diff --git a/sc/source/filter/inc/xeroot.hxx b/sc/source/filter/inc/xeroot.hxx
index 30c6940393d8..dbf69624dc1e 100644
--- a/sc/source/filter/inc/xeroot.hxx
+++ b/sc/source/filter/inc/xeroot.hxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: xeroot.hxx,v $
  *
- *  $Revision: 1.2 $
+ *  $Revision: 1.3 $
  *
- *  last change: $Author: dr $ $Date: 2002-12-06 16:41:08 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:09 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -75,6 +75,7 @@ class XclExpSst;
 class XclExpPalette;
 class XclExpFontBuffer;
 class XclExpNumFmtBuffer;
+class XclExpXFBuffer;
 class XclExpTabIdBuffer;
 class XclExpLinkManager;
 
@@ -85,6 +86,7 @@ struct XclExpRootData : public XclRootData
     typedef ::std::auto_ptr< XclExpPalette >        XclExpPalettePtr;
     typedef ::std::auto_ptr< XclExpFontBuffer >     XclExpFontBufferPtr;
     typedef ::std::auto_ptr< XclExpNumFmtBuffer >   XclExpNumFmtBufferPtr;
+    typedef ::std::auto_ptr< XclExpXFBuffer >       XclExpXFBufferPtr;
     typedef ::std::auto_ptr< XclExpTabIdBuffer >    XclExpTabIdBufferPtr;
     typedef ::std::auto_ptr< XclExpLinkManager >    XclExpLinkManagerPtr;
 
@@ -93,6 +95,7 @@ struct XclExpRootData : public XclRootData
     XclExpPalettePtr            mpPalette;          /// The color buffer.
     XclExpFontBufferPtr         mpFontBuffer;       /// All fonts in the file.
     XclExpNumFmtBufferPtr       mpNumFmtBuffer;     /// All number formats in the file.
+    XclExpXFBufferPtr           mpXFBuffer;         /// All XF records in the file.
 
     XclExpTabIdBufferPtr        mpTabIdBuffer;      /// Calc->Excel sheet index conversion.
     XclExpLinkManagerPtr        mpLinkManager;      /// Manager for internal/external links.
@@ -121,6 +124,8 @@ public:
 
     XclExpRoot&                 operator=( const XclExpRoot& rRoot );
 
+    /** Returns this root instance - for code readability in derived classes. */
+    inline const XclExpRoot&    GetRoot() const { return *this; }
     /** Returns true, if URLs should be stored relative to the document location. */
     inline bool                 IsRelUrl() const { return mrExpData.mbRelUrl; }
 
@@ -133,6 +138,8 @@ public:
     XclExpFontBuffer&           GetFontBuffer() const;
     /** Returns the number format buffer. */
     XclExpNumFmtBuffer&         GetNumFmtBuffer() const;
+    /** Returns the cell formatting attributes buffer. */
+    XclExpXFBuffer&             GetXFBuffer() const;
 
     /** Returns the buffer for Calc->Excel sheet index conversion. */
     XclExpTabIdBuffer&          GetTabIdBuffer() const;
diff --git a/sc/source/filter/inc/xestream.hxx b/sc/source/filter/inc/xestream.hxx
index f876dd9e8481..14de4e71e5e8 100644
--- a/sc/source/filter/inc/xestream.hxx
+++ b/sc/source/filter/inc/xestream.hxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: xestream.hxx,v $
  *
- *  $Revision: 1.2 $
+ *  $Revision: 1.3 $
  *
- *  last change: $Author: dr $ $Date: 2002-12-06 16:41:08 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:10 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
diff --git a/sc/source/filter/inc/xestyle.hxx b/sc/source/filter/inc/xestyle.hxx
index e9e56e37e0c5..9eb2f0330549 100644
--- a/sc/source/filter/inc/xestyle.hxx
+++ b/sc/source/filter/inc/xestyle.hxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: xestyle.hxx,v $
  *
- *  $Revision: 1.2 $
+ *  $Revision: 1.3 $
  *
- *  last change: $Author: dr $ $Date: 2002-12-06 16:37:56 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:10 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -74,6 +74,9 @@
 #ifndef _SVX_SVXENUM_HXX
 #include 
 #endif
+#ifndef _ZFORLIST_HXX
+#include 
+#endif
 #ifndef INCLUDED_SVTOOLS_NFKEYTAB_HXX
 #include 
 #endif
@@ -112,8 +115,14 @@ enum XclColorType
 // ----------------------------------------------------------------------------
 
 /** Stores all used colors in the document.
-    @descr  Supports color reduction to the maximum count of the current BIFF version. */
-class XclExpPalette : public XclExpRecord, public XclDefaultPalette
+    @descr  Supports color reduction to the maximum count of the current BIFF version.
+    An instance of this class collects all colors in the conversion phase of the export,
+    using the InsertColor() function. It returns a unique identidier for each passed color.
+    After the entire document is converted, the palette will be reduced to the number of
+    colors supported by the current BIFF version, using the function ReduceColors().
+    Then, in the streaming phase, the functions GetColorIndex() and GetMixedColors()
+    return the real Excel palette index for all color identifiers. */
+class XclExpPalette : public XclExpRecord, public XclDefaultPalette, protected XclExpRoot
 {
 private:
     /** Represents an entry in a color list.
@@ -126,16 +135,16 @@ private:
 
     private:
         Color                   maColor;    /// The color value of this palette entry.
-        sal_uInt32              mnCID;      /// Unique color ID (CID) for color reduction.
+        sal_uInt32              mnColorId;  /// Unique color ID for color reduction.
         sal_uInt32              mnWeight;   /// Weighting for color reduction.
 
     public:
-        explicit                XclListColor( const Color& rColor, sal_uInt32 nCID );
+        explicit                XclListColor( const Color& rColor, sal_uInt32 nColorId );
 
         /** Returns the RGB color value of the color. */
         inline const Color&     GetColor() const { return maColor; }
         /** Returns the unique ID of the color. */
-        inline sal_uInt32       GetCID() const { return mnCID; }
+        inline sal_uInt32       GetColorId() const { return mnColorId; }
         /** Returns the current weighting of the color. */
         inline sal_uInt32       GetWeighting() const { return mnWeight; }
         /** Returns true, if this color value is greater than rColor (simple arithmetic comparison). */
@@ -151,11 +160,11 @@ private:
         void                    Merge( const XclListColor& rColor );
     };
 
-    /** Data for each inserted original color, represented by a CID (color ID). */
-    struct XclCIDData
+    /** Data for each inserted original color, represented by a color ID. */
+    struct XclColorIdData
     {
-        Color                   maColor;        /// The original inserted color.
-        sal_uInt32              mnIndex;        /// Maps current CID to color list or export color vector.
+        Color                   maColor;    /// The original inserted color.
+        sal_uInt32              mnIndex;    /// Maps current color ID to color list or export color vector.
         /** Sets the contents of this struct. */
         inline void             Set( const Color& rColor, sal_uInt32 nIndex ) { maColor = rColor; mnIndex = nIndex; }
     };
@@ -163,27 +172,27 @@ private:
     /** A color that will be written to the Excel file. */
     struct XclPaletteColor
     {
-        Color                   maColor;        /// Resulting color to export.
-        bool                    mbDefault;      /// true = Entry is a default color.
+        Color                   maColor;    /// Resulting color to export.
+        bool                    mbDefault;  /// true = Entry is a default color.
         /** Sets a new color.
             @param bDefault  true = Color is a color from default palette. */
         inline void             SetColor( const Color& rColor, bool bDefault = false ) { maColor = rColor; mbDefault = bDefault; }
     };
 
     typedef ScfDelList< XclListColor >          XclListColorList;
-    typedef ::std::vector< XclCIDData >         XclCIDDataVec;
+    typedef ::std::vector< XclColorIdData >     XclColorIdDataVec;
     typedef ::std::vector< XclPaletteColor >    XclPaletteColorVec;
 
-    XclListColorList            maColorList;    /// Working color list.
-    XclCIDDataVec               maCIDDataVec;   /// Data of all CIDs.
-    XclPaletteColorVec          maPalette;      /// Contains resulting colors to export.
-    sal_uInt32                  mnLastIx;       /// Last insertion index for search opt.
+    XclListColorList            maColorList;        /// Working color list.
+    XclColorIdDataVec           maColorIdDataVec;   /// Data of all CIDs.
+    XclPaletteColorVec          maPalette;          /// Contains resulting colors to export.
+    sal_uInt32                  mnLastIx;           /// Last insertion index for search opt.
 
 public:
     explicit                    XclExpPalette( const XclExpRoot& rRoot );
 
-    /** Activates the default colors for the passed BIFF version. */
-    void                        SetBiff( XclBiff eBiff );
+    /** Activates the default colors for the current BIFF version. */
+    void                        OnChangeBiff();
 
     /** Inserts the color into the list and updates weighting.
         @param nAutoDefault  The Excel palette index for automatic color.
@@ -196,19 +205,19 @@ public:
     /** Reduces the color list to the maximum count of the current BIFF version. */
     void                        ReduceColors();
 
-    /** Returns the Excel palette index of the color with passed color ID (CID). */
-    sal_uInt16                  GetColorIndex( sal_uInt32 nCID ) const;
+    /** Returns the Excel palette index of the color with passed color ID. */
+    sal_uInt16                  GetColorIndex( sal_uInt32 nColorId ) const;
     /** Returns the Excel palette index of the passed color (searches for nearest color).
         @param nAutoDefault  The Excel palette index for automatic color. */
     sal_uInt16                  GetColorIndex( const Color& rColor, sal_uInt16 nAutoDefault = 0 ) const;
 
-    /** Returns a foreground and background color for the two passed CIDs.
+    /** Returns a foreground and background color for the two passed color IDs.
         @descr  If rnXclPattern contains a solid pattern, this function tries to find
-        the two best fitting colors and a mix pattern (25%, 50% or 75%) for nCIDForegr.
+        the two best fitting colors and a mix pattern (25%, 50% or 75%) for nForeColorId.
         This will result in a better approximation to the passed foreground color. */
     void                        GetMixedColors(
-                                    sal_uInt16& rnXclForeIx, sal_uInt16& rnXclBackIx, sal_uInt16& rnXclPattern,
-                                    sal_uInt32 nCIDForegr, sal_uInt32 nCIDBackgr ) const;
+                                    sal_uInt16& rnXclForeIx, sal_uInt16& rnXclBackIx, sal_uInt8& rnXclPattern,
+                                    sal_uInt32 nForeColorId, sal_uInt32 nBackColorId ) const;
 
     /** Returns the RGB color data for a (non-zero-based) Excel palette entry.
         @param nDefault  Is returned, if nothing else could be found. */
@@ -218,8 +227,8 @@ public:
     inline Color                GetColor( sal_uInt16 nXclIndex, ColorData nDefault = COL_AUTO ) const;
 
 private:
-    /** Returns the original inserted color represented by nCID. */
-    const Color&                GetOriginalColor( sal_uInt32 nCID ) const;
+    /** Returns the original inserted color represented by the color ID nColorId. */
+    const Color&                GetOriginalColor( sal_uInt32 nColorId ) const;
 
     /** Returns the ordered insertion index for rColor in rnIndex.
         @param rbIsEqual  Returns true, if the color already exists. */
@@ -271,7 +280,7 @@ class XclExpFont : public XclExpRecord, protected XclExpRoot
 {
 private:
     XclFontData                 maData;         /// All font attributes.
-    sal_uInt32                  mnCID;          /// Unique color ID for text color.
+    sal_uInt32                  mnColorId;      /// Unique color ID for text color.
     sal_uInt32                  mnHash;         /// Hash value for fast comparison.
     bool                        mbHasColor;     /// false = Font does not use a color (i.e. chart).
 
@@ -285,7 +294,7 @@ public:
     inline void                 SetFamily( FontFamily eFamily ) { maData.mnFamily = GetXclFamily( eFamily ); }
     inline void                 SetCharSet( rtl_TextEncoding eCharSet ) { maData.mnCharSet = GetXclCharSet( eCharSet ); }
     void                        SetColor( const Color& rColor );
-    void                        SetCID( sal_uInt32 nCID );
+    void                        SetColorId( sal_uInt32 nColorId );
     void                        SetHeight( sal_Int32 nTwips );
     inline void                 SetWeight( FontWeight eWeight ) { maData.mnWeight = GetXclWeight( eWeight ); }
     inline void                 SetUnderline( FontUnderline eUnderl ) { maData.meUnderline = GetXclUnderline( eUnderl ); }
@@ -308,7 +317,7 @@ public:
     /** Returns true, if this font contains a specific color (if SetColor was called before). */
     inline bool                 HasColor() const { return mbHasColor; }
     /** Returns the unique color ID of the font color from palette. */
-    inline sal_uInt32           GetCID() const { return mnCID; }
+    inline sal_uInt32           GetColorId() const { return mnColorId; }
 
     /** Converts a font family to Excel font family. */
     static sal_uInt8            GetXclFamily( FontFamily eFamily );
@@ -335,14 +344,17 @@ class ScPatternAttr;
 class XclExpFontBuffer : public XclExpRecordBase, protected XclExpRoot
 {
 private:
-    XclExpRecordList< XclExpFont > maFontList;  /// List of all FONT records.
-    sal_uInt32                  mnMaxCount;     /// Maximum possible count of fonts.
+    typedef XclExpRecordList< XclExpFont > XclExpFontList;
+
+    XclExpFontList              maFontList;     /// List of all FONT records.
+    XclFontData                 maAppFont;      /// Application font (for column width).
+    sal_uInt32                  mnXclMaxCount;  /// Maximum number of fonts.
 
 public:
     explicit                    XclExpFontBuffer( const XclExpRoot& rRoot );
 
-    /** Activates the default colors for the passed BIFF version. */
-    void                        SetBiff( XclBiff eBiff );
+    /** Finds the maximum number of fonts for the current BIFF version. */
+    void                        OnChangeBiff();
 
     /** Returns the specified font from font list. */
     inline const XclExpFont*    GetFont( sal_uInt32 nIndex ) const
@@ -368,7 +380,7 @@ private:
     /** Initializes the default fonts for the current BIFF version. */
     void                        InitDefaultFonts();
     /** Converts a list index into Excel font index. */
-    sal_uInt16                  GetXclIndex( sal_uInt32 nIndex );
+    sal_uInt16                  GetXclIndex( sal_uInt32 nIndex ) const;
     /** Tries to find the passed font and returns the current list index. */
     sal_uInt32                  Find( const XclExpFont& rFont );
 };
@@ -402,6 +414,7 @@ private:
     SvNumberFormatterPtr        mpFormatter;    /// Special number formatter for conversion.
     NfKeywordTablePtr           mpKeywordTable; /// Replacement table.
     XclExpNumFmtVec             maFormatMap;    /// Maps core formats to Excel indexes.
+    sal_uInt32                  mnStdFmt;       /// Key for standard number format.
     sal_uInt16                  mnXclOffset;    /// Offset to first user defined format.
 
 public:
@@ -409,13 +422,16 @@ public:
 
     virtual                     ~XclExpNumFmtBuffer();
 
-    /** Sets internal data for the passed BIFF version. */
-    void                        SetBiff( XclBiff eBiff );
+    /** Sets internal data for the current BIFF version. */
+    void                        OnChangeBiff();
+
+    /** Returns the core index of the current standard number format. */
+    inline sal_uInt32           GetStandardFormat() const { return mnStdFmt; }
 
     /** Inserts a number format into the format buffer.
         @param nFormatIx  The core index of the number format.
         @return  The resulting Excel format index. */
-    sal_uInt16                  Insert( sal_uInt32 nFormatIx );
+    sal_uInt16                  Insert( sal_uInt32 nScFormatIx );
 
     /** Writes all FORMAT records contained in this buffer. */
     virtual void                Save( XclExpStream& rStrm );
@@ -432,6 +448,206 @@ private:
 
 // XF, STYLE record - Cell formatting =========================================
 
+/** Contains color and line style for each cell border line. */
+struct XclExpXFBorder
+{
+    sal_uInt32                  mnLeftColorId;      /// Color ID for left line.
+    sal_uInt32                  mnRightColorId;     /// Color ID for right line.
+    sal_uInt32                  mnTopColorId;       /// Color ID for top line.
+    sal_uInt32                  mnBottomColorId;    /// Color ID for bottom line.
+    sal_uInt8                   mnLeftLine;         /// Style of left line.
+    sal_uInt8                   mnRightLine;        /// Style of right line.
+    sal_uInt8                   mnTopLine;          /// Style of top line.
+    sal_uInt8                   mnBottomLine;       /// Style of bottom line.
+
+    explicit                    XclExpXFBorder();
+};
+
+
+// ----------------------------------------------------------------------------
+
+/** Contains background colors and pattern. */
+struct XclExpXFArea
+{
+    sal_uInt32                  mnForeColorId;  /// Foreground color ID.
+    sal_uInt32                  mnBackColorId;  /// Background color ID.
+    sal_uInt8                   mnPattern;      /// Fill pattern.
+
+    explicit                    XclExpXFArea();
+};
+
+
+// ----------------------------------------------------------------------------
+
+class SfxStyleSheetBase;
+class SvxBoxItem;
+class SvxBorderLine;
+
+/** Represents an XF record which contains all formatting data of a cell or cell style. */
+class XclExpXF : public XclExpRecord
+{
+private:
+    typedef ::std::auto_ptr< ScPatternAttr > ScPatternAttrPtr;
+
+    ScPatternAttrPtr            mpOwnPattern;       /// An own item set (used for cell styles).
+    const ScPatternAttr*        mpPattern;          /// Pointer to Calc item set (we do not own it).
+
+    XclExpXFBorder              maBorder;           /// Border line style.
+    XclExpXFArea                maArea;             /// Background area style.
+    XclHorAlign                 meHorAlign;         /// Horizontal alignment.
+    XclVerAlign                 meVerAlign;         /// Vertical alignment.
+    XclTextOrient               meOrient;           /// Text orientation.
+    XclTextDirection            meTextDir;          /// CTL text direction.
+
+    sal_uInt16                  mnParent;           /// Index to parent style XF.
+    sal_uInt16                  mnFont;             /// Excel font index.
+    sal_uInt16                  mnNumFmt;           /// Excel number format index.
+    sal_uInt8                   mnIndent;           /// Text indent.
+    sal_uInt8                   mnRotation;         /// Rotation angle.
+
+    bool                        mbCellXF;           /// true = cell XF, false = style XF.
+    bool                        mbLocked;           /// true = cell is locked.
+    bool                        mbHidden;           /// true = formulas are hidden.
+    bool                        mbWrapped;          /// true = wrap text on cell border.
+    bool                        mbProtUsed;         /// true = locked/hidden flags used.
+    bool                        mbFontUsed;         /// true = font index used.
+    bool                        mbFmtUsed;          /// true = number format used.
+    bool                        mbAlignUsed;        /// true = alignment used.
+    bool                        mbBorderUsed;       /// true = border data used.
+    bool                        mbAreaUsed;         /// true = area data used.
+
+public:
+    /** Constructs a cell XF record from the passed Calc item set.
+        @param nForcedNumFmt  If not set to NUMBERFORMAT_ENTRY_NOT_FOUND, it will overwrite
+        the number format of the passed item set.
+        @param bForcedWrap  true = set text wrap flag unconditionally. */
+    explicit                    XclExpXF(
+                                    const XclExpRoot& rRoot,
+                                    const ScPatternAttr* pPattern,
+                                    sal_uInt32 nForcedNumFmt = NUMBERFORMAT_ENTRY_NOT_FOUND,
+                                    bool bForceWrapped = false );
+    /** Constructs a style XF record from the passed cell style sheet. */
+    explicit                    XclExpXF( const XclExpRoot& rRoot, SfxStyleSheetBase& rStyleSheet );
+
+    /** Returns true, if the passed cell formatting is represented by this XF record.
+        @descr  Searches for cell XFs only. */
+    bool                        Equals(
+                                    const ScPatternAttr* pPattern,
+                                    sal_uInt32 nForcedNumFmt,
+                                    bool bForceWrapped ) const;
+
+    /** Sets the border line styles from the item set into the passed struct. */
+    static void                 GetBorder(
+                                    XclExpXFBorder& rBorder,
+                                    XclExpPalette& rPalette,
+                                    const ScPatternAttr& rPattern );
+
+    /** Sets the area styles from the brush item into the passed struct. */
+    static void                 GetArea(
+                                    XclExpXFArea& rArea,
+                                    XclExpPalette& rPalette,
+                                    const ScPatternAttr& rPattern );
+
+private:
+    /** Fills all members from the passed item set. */
+    void                        Init(
+                                    const XclExpRoot& rRoot,
+                                    const ScPatternAttr* pPattern,
+                                    sal_uInt32 nForcedNumFmt = NUMBERFORMAT_ENTRY_NOT_FOUND,
+                                    bool bForceWrapped = false );
+
+    /** Returns the bits specifying the used attributes.
+        @descr  In cell XFs a set bit means a used attribute, in style XF a cleared
+        bit means a used attribute. This method regards the cell/style state.
+        @return  The mask based on bit 0 (not yet bit-shifted as needed for export). */
+    sal_uInt8                   GetUsedAttribMask() const;
+
+    void                        WriteBody5( XclExpStream& rStrm );
+    void                        WriteBody8( XclExpStream& rStrm );
+
+    /** Writes the contents of the XF record. */
+    virtual void                WriteBody( XclExpStream& rStrm );
+
+    /** Reads the passed border line struct and converts to Excel line style and color. */
+    static void                 GetBorderLine(
+                                    sal_uInt8& rnXclLine, sal_uInt32& rnColorId,
+                                    XclExpPalette& rPalette, const SvxBorderLine* pLine );
+};
+
+
+// ----------------------------------------------------------------------------
+
+/** Represents a STYLE record containing the name of a user-defined cell style. */
+class XclExpStyle : public XclExpRecord
+{
+private:
+    String                      maName;         /// Name of the cell style.
+    sal_uInt16                  mnXFIndex;      /// Index to XF record with style formatting.
+
+public:
+    explicit                    XclExpStyle( const String& rName, sal_uInt16 nXFIndex );
+
+private:
+    /** Writes the contents of the STYLE record. */
+    virtual void                WriteBody( XclExpStream& rStrm );
+};
+
+
+// ----------------------------------------------------------------------------
+
+/** Stores all XF records (cell formats) in the document. */
+class XclExpXFBuffer : public XclExpRecordBase, protected XclExpRoot
+{
+private:
+    typedef XclExpRecordList< XclExpXF >    XclExpXFList;
+    typedef XclExpRecordList< XclExpStyle > XclExpStyleList;
+
+    XclExpXFList                maXFList;       /// List of all XF records.
+    XclExpStyleList             maStyleList;    /// List of all STYLE records.
+    sal_uInt32                  mnXclMaxCount;  /// Maximum number of XF records.
+    sal_uInt16                  mnXclOffset;    /// Offset to first user defined XF.
+
+public:
+    explicit                    XclExpXFBuffer( const XclExpRoot& rRoot );
+
+    /** Inserts all user-defined styles into the XF record list. */
+    void                        InsertUserStyles();
+
+    /** Finds or creates a cell XF record for the passed item set.
+        @param bForceWrapped  true = cell contains hard newlines.
+        In this case the text wrap flag must be set in the XF record.
+        @return  The resulting Excel XF record index. */
+    sal_uInt16                  Insert( const ScPatternAttr* pPattern, bool bForceWrapped = false );
+    /** Finds or creates a cell XF record for the passed item set, with custom number format.
+        @param nForcedNumFmt  The number format to be exported, i.e. formula result type.
+        This format will always overwrite the cell's number format.
+        @return  The resulting Excel XF record index. */
+    sal_uInt16                  Insert( const ScPatternAttr* pPattern, sal_uInt32 nForcedNumFmt );
+    /** Inserts the passed cell style. Creates a style XF record and a STYLE record.
+        @return  The resulting Excel XF record index. */
+    sal_uInt16                  InsertStyle( SfxStyleSheetBase& rStyleSheet );
+
+    /** Writes all XF records contained in this buffer. */
+    virtual void                Save( XclExpStream& rStrm );
+
+private:
+    /** Converts a list index into Excel XF index. */
+    sal_uInt16                  GetXclIndex( sal_uInt32 nIndex ) const;
+
+    /** Tries to find the XF record containing the passed format or inserts a new record.
+        @return  The Excel XF index. */
+    sal_uInt16                  InsertCellXF(
+                                    const ScPatternAttr* pPattern,
+                                    sal_uInt32 nForcedNumFmt = NUMBERFORMAT_ENTRY_NOT_FOUND,
+                                    bool bForceWrapped = false );
+
+    void                        WriteDefaultXFs5( XclExpStream& rStrm );
+    void                        WriteDefaultXFs8( XclExpStream& rStrm );
+
+    void                        WriteDefaultStyles5( XclExpStream& rStrm );
+};
+
+
 // ============================================================================
 
 #endif
diff --git a/sc/source/filter/inc/xicontent.hxx b/sc/source/filter/inc/xicontent.hxx
index 0a0f449d5a37..c8b611391865 100644
--- a/sc/source/filter/inc/xicontent.hxx
+++ b/sc/source/filter/inc/xicontent.hxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: xicontent.hxx,v $
  *
- *  $Revision: 1.1 $
+ *  $Revision: 1.2 $
  *
- *  last change: $Author: dr $ $Date: 2002-11-21 12:11:14 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:10 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -185,7 +185,7 @@ class XclImpValidation : ScfNoInstance
 {
 public:
     /** Reads a DVAL record and sets marks the dropdown arrow control to be ignored. */
-    static void                 ReadDval( XclImpStream& rStrm, XclImpRoot& rRoot );
+    static void                 ReadDval( XclImpStream& rStrm );
     /** Reads a DV record and inserts validation data into the document. */
     static void                 ReadDv( XclImpStream& rStrm, ExcelToSc& rFmlaConv );
 };
diff --git a/sc/source/filter/inc/xihelper.hxx b/sc/source/filter/inc/xihelper.hxx
index 56cb73fc453c..182dfb995f1d 100644
--- a/sc/source/filter/inc/xihelper.hxx
+++ b/sc/source/filter/inc/xihelper.hxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: xihelper.hxx,v $
  *
- *  $Revision: 1.1 $
+ *  $Revision: 1.2 $
  *
- *  last change: $Author: dr $ $Date: 2002-11-21 12:11:14 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:11 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -168,8 +168,10 @@ struct XclFontData;
     &N                      page count
     &D                      current date
     &T                      current time
-    &F                      file name without path (converted to full file name)
     &A                      table name
+    &F                      file name without path (see also &Z&F)
+    &Z                      file path without file name (converted to full file name, see also &Z&F)
+    &Z&F                    file path and name
     &U                      underlining on/off
     &E                      double underlining on/off
     &S                      strikeout characters on/off
@@ -179,7 +181,6 @@ struct XclFontData;
     &fontheight             set font height in points ('fontheight' is a decimal value)
 
     Known but unsupported control sequences:
-    &Z                      file path without file name
     &G                      picture
  */
 class XclImpHFConverter : protected XclImpRoot, ScfNoCopy
diff --git a/sc/source/filter/inc/xilink.hxx b/sc/source/filter/inc/xilink.hxx
index b04a4567f01a..e0561886b91a 100644
--- a/sc/source/filter/inc/xilink.hxx
+++ b/sc/source/filter/inc/xilink.hxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: xilink.hxx,v $
  *
- *  $Revision: 1.1 $
+ *  $Revision: 1.2 $
  *
- *  last change: $Author: dr $ $Date: 2002-11-21 12:11:15 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:12 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -128,6 +128,7 @@ class XclImpExtName
 {
 private:
     String                      maName;             /// The name of the external name.
+    String                      maAddInName;        /// The converted Calc add-in function name.
     sal_uInt32                  mnStorageId;        /// Storage ID for OLE object storages.
     XclImpExtNameType           meType;             /// Type of the external name.
 
@@ -137,6 +138,7 @@ public:
 
     inline XclImpExtNameType    GetType() const         { return meType; }
     inline const String&        GetName() const         { return maName; }
+    inline const String&        GetAddInName() const    { return maAddInName; }
     inline sal_uInt32           GetStorageId() const    { return mnStorageId; }
 };
 
@@ -210,6 +212,7 @@ private:
     String                      maUrl;              /// URL of the external document.
     sal_uInt16                  mnCurrExcTab;       /// Current Excel sheet index of external cells.
     bool                        mbSelf;             /// true = internal 3D references.
+    bool                        mbAddIn;            /// true = Add-in function names.
 
 public:
     /** Reads the SUPBOOK record from stream. */
@@ -229,6 +232,8 @@ public:
 
     /** Returns true, if this SUPBOOK contains internal 3D references. */
     inline bool                 IsSelf() const { return mbSelf; }
+    /** Returns true, if this SUPBOOK contains add-in function names. */
+    inline bool                 IsAddIn() const { return mbAddIn; }
 
     /** Returns the URL of the external document. */
     inline const String&        GetUrl() const { return maUrl; }
diff --git a/sc/source/filter/inc/xiroot.hxx b/sc/source/filter/inc/xiroot.hxx
index a9df4df6d331..223703778a30 100644
--- a/sc/source/filter/inc/xiroot.hxx
+++ b/sc/source/filter/inc/xiroot.hxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: xiroot.hxx,v $
  *
- *  $Revision: 1.1 $
+ *  $Revision: 1.2 $
  *
- *  last change: $Author: dr $ $Date: 2002-11-21 12:11:16 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:12 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -79,6 +79,7 @@ class XclImpXFBuffer;
 class XclImpXFIndexBuffer;
 class XclImpTabIdBuffer;
 class XclImpLinkManager;
+class XclImpObjectManager;
 class XclImpWebQueryBuffer;
 
 /** Stores global buffers and data needed for Excel import filter. */
@@ -92,6 +93,7 @@ struct XclImpRootData : public XclRootData
     typedef ::std::auto_ptr< XclImpXFIndexBuffer >  XclImpXFIndexBufferPtr;
     typedef ::std::auto_ptr< XclImpTabIdBuffer >    XclImpTabIdBufferPtr;
     typedef ::std::auto_ptr< XclImpLinkManager >    XclImpLinkManagerPtr;
+    typedef ::std::auto_ptr< XclImpObjectManager >  XclImpObjectManagerPtr;
     typedef ::std::auto_ptr< XclImpWebQueryBuffer > XclImpWebQueryBufferPtr;
 
     XclImpSstPtr                mpSst;              /// The shared string table.
@@ -105,11 +107,9 @@ struct XclImpRootData : public XclRootData
     XclImpTabIdBufferPtr        mpTabIdBuffer;      /// Sheet creation order list.
     XclImpLinkManagerPtr        mpLinkManager;      /// Manager for internal/external links.
 
+    XclImpObjectManagerPtr      mpObjManager;       /// All drawing objects.
     XclImpWebQueryBufferPtr     mpWebQBuffer;       /// All web queries.
 
-    ScfUInt32Vec                maIgnoreObj;        /// ID's of objects to ignore.
-    bool                        mbIgnoreObjSorted;  /// Vector of ignored objects sorted?
-
     explicit                    XclImpRootData(
                                     XclBiff eBiff,
                                     ScDocument& rDocument,
@@ -132,6 +132,9 @@ public:
 
     XclImpRoot&                 operator=( const XclImpRoot& rRoot );
 
+    /** Returns this root instance - for code readability in derived classes. */
+    inline const XclImpRoot&    GetRoot() const { return *this; }
+
     /** Returns the shared string table. */
     XclImpSst&                  GetSst() const;
 
@@ -151,6 +154,8 @@ public:
     /** Returns the link manager. */
     XclImpLinkManager&          GetLinkManager() const;
 
+    /** Returns the drawing object manager. */
+    XclImpObjectManager&        GetObjectManager() const;
     /** Returns the web query buffer. */
     XclImpWebQueryBuffer&       GetWebQueryBuffer() const;
 
@@ -164,11 +169,6 @@ public:
         @descr  See XclRoot::CheckCellRangeList for details. */
     void                        CheckCellRangeList( ScRangeList& rRanges ) const;
 
-    /** Sets the object with ID nObjId to be ignored on import. */
-    void                        SetIgnoreObject( sal_uInt32 nObjId );
-    /** Returns true, if the object with ID nObjId will be ignored. */
-    bool                        IsIgnoreObject( sal_uInt32 nObjId ) const;
-
 protected:
     explicit                    XclImpRoot( XclImpRootData& rImpRootData );
 
diff --git a/sc/source/filter/inc/xistream.hxx b/sc/source/filter/inc/xistream.hxx
index f969713536f8..aa3396555860 100644
--- a/sc/source/filter/inc/xistream.hxx
+++ b/sc/source/filter/inc/xistream.hxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: xistream.hxx,v $
  *
- *  $Revision: 1.1 $
+ *  $Revision: 1.2 $
  *
- *  last change: $Author: dr $ $Date: 2002-11-21 12:11:16 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:12 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -80,6 +80,9 @@ Input stream class for Excel import
 
 // Decryption =================================================================
 
+#define SC_XCL_USEDECR 0
+
+#if SC_XCL_USEDECR
 /** Base class for BIFF stream decryption. */
 class XclImpDecrypter : ScfNoCopy
 {
@@ -146,6 +149,7 @@ public:
         @return  Count of bytes really read. */
     virtual sal_uInt32          ReadDecrypt( SvStream& rStrm, void* pData, sal_uInt32 nBytes );
 };
+#endif
 
 
 // ============================================================================
@@ -231,14 +235,18 @@ class XclImpRoot;
 class XclImpStream
 {
 private:
+#if SC_XCL_USEDECR
     typedef ::std::auto_ptr< XclImpDecrypter >  XclImpDecrypterPtr;
+#endif
     typedef ScfDelStack< XclImpStreamPos >      XclImpStreamPosStack;
 
 private:
     SvStream&                   mrStrm;         /// Reference to the system input stream.
     const XclImpRoot&           mrRoot;         /// Filter root data.
 
+#if SC_XCL_USEDECR
     XclImpDecrypterPtr          mpDecrypter;    /// Provides methods to decrypt data.
+#endif
 
     XclImpStreamPos             maFirstRec;     /// Start position of current record.
     XclImpStreamPosStack        maPosStack;     /// Stack for record positions.
@@ -260,7 +268,9 @@ private:
     sal_uInt32                  mnRecLeft;      /// Count of bytes left in current record.
 
     bool                        mbCont;         /// Automatic CONTINUE lookup on/off.
+#if SC_XCL_USEDECR
     bool                        mbUseDecr;      /// Usage of decryption.
+#endif
     bool                        mbValidRec;     /// Read state: false = no record available.
     bool                        mbValid;        /// Read state: false = record overread.
     bool                        mbWarnings;     /// Enable/disable assertions.
@@ -296,11 +306,13 @@ public:
         @param bWarnMode  false = no overread assertions. */
     inline void                 SetWarningMode( bool bWarnMode ) { mbWarnings = bWarnMode; }
 
+#if SC_XCL_USEDECR
     /** Enables decryption of record contents for the rest of the stream.
         @descr  Stream takes ownership of the decrypter object. */
     void                        EnableDecryption( XclImpDecrypter* pDecrypter );
     /** Switches usage of current decryption algorithm on/off. */
     void                        UseDecryption( bool bUse );
+#endif
 
     /** Pushes current position on user position stack.
         @descr  This stack is emptied at every start of a new record. */
@@ -452,8 +464,10 @@ public:
     inline sal_uInt32           GetStreamSize() const { return mnStreamSize; }
 
 private:
+#if SC_XCL_USEDECR
     /** Initializes the key/stream offset of the decrypter. */
     inline void                 SetDecrypterOffset( sal_uInt16 nRecSize );
+#endif
 
     /** Reads and decrypts a sal_Int8 value. */
     void                        ReadAtom( sal_Int8& rnValue );
@@ -605,11 +619,13 @@ inline void XclImpStream::IgnoreByteString( bool b16BitLen )
 
 // ----------------------------------------------------------------------------
 
+#if SC_XCL_USEDECR
 inline void XclImpStream::SetDecrypterOffset( sal_uInt16 nRecSize )
 {
     if( mpDecrypter.get() )
         mpDecrypter->SetOffset( nRecSize );
 }
+#endif
 
 
 // ============================================================================
diff --git a/sc/source/filter/inc/xistyle.hxx b/sc/source/filter/inc/xistyle.hxx
index c5a82429e1f5..ad80a1ac0ff1 100644
--- a/sc/source/filter/inc/xistyle.hxx
+++ b/sc/source/filter/inc/xistyle.hxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: xistyle.hxx,v $
  *
- *  $Revision: 1.1 $
+ *  $Revision: 1.2 $
  *
- *  last change: $Author: dr $ $Date: 2002-11-21 12:11:17 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:13 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -99,7 +99,7 @@ and a container for XF indexes for every used cell in a sheet.
 
 /** Stores the default colors for the current BIFF version and the contents of
     a PALETTE record. */
-class XclImpPalette : public XclDefaultPalette
+class XclImpPalette : public XclDefaultPalette, protected XclImpRoot
 {
 private:
     typedef ::std::vector< ColorData > ColorDataVec;
@@ -109,6 +109,9 @@ private:
 public:
     explicit                    XclImpPalette( const XclImpRoot& rRoot );
 
+    /** Activates the default colors for the current BIFF version. */
+    void                        OnChangeBiff();
+
     /** Returns the RGB color data for a (non-zero-based) Excel palette entry.
         @descr  First looks for a color read from file, then looks for a default color.
         @param nDefault  Is returned, if nothing else could be found. */
@@ -164,13 +167,12 @@ public:
     inline const XclFontData&   GetFontData() const { return maData; }
     /** Returns true, if the font contains superscript or subscript. */
     inline bool                 HasEscapement() const { return maData.meEscapem != xlEscNone; }
+    /** Returns the width of the '0' character on current printer (twips). */
+    long                        GetCharWidth() const;
 
     /** Reads a FONT record for all BIFF versions. */
     void                        ReadFont( XclImpStream& rStrm );
 
-    /** Calculates a column scaling factor using the current printer settings. */
-    double                      CalcColumnScale() const;
-
     /** Fills all font properties to the item set.
         @param rItemSet  The destination item set.
         @param eMode  The type of which IDs. */
@@ -217,13 +219,16 @@ class XclImpFontBuffer : protected XclImpRoot, ScfNoCopy
 {
 private:
     ScfDelList< XclImpFont >    maFontList;     /// List of all FONT records in the Excel file.
+    XclFontData                 maAppFont;      /// Application font (for column width).
 
 public:
-    inline explicit             XclImpFontBuffer( const XclImpRoot& rRoot ) : XclImpRoot( rRoot ) {}
+    explicit                    XclImpFontBuffer( const XclImpRoot& rRoot );
 
     /** Returns the object that stores all contents of a FONT record. */
     inline const XclImpFont*    GetFont( sal_uInt16 nFontIndex ) const
                                     { return maFontList.GetObject( nFontIndex ); }
+    /** Returns the application font data of this file, needed i.e. for column width. */
+    inline const XclFontData&   GetAppFontData() const { return maAppFont; }
 
     /** Reads a FONT record. */
     void                        ReadFont( XclImpStream& rStrm );
@@ -246,7 +251,7 @@ class XclImpNumFmtBuffer : protected XclImpRoot, ScfNoCopy
 {
 private:
     ScfUInt32Vec                maKeyVec;       /// Array of SvNumberFomatter format keys.
-    sal_uInt32                  mnDefault;      /// Key for default format.
+    sal_uInt32                  mnStdFmt;       /// Key for standard number format.
 
 public:
     explicit                    XclImpNumFmtBuffer( const XclImpRoot& rRoot );
@@ -269,40 +274,66 @@ private:
 
 // XF, STYLE record - Cell formatting =========================================
 
-struct XclImpXFBorder;
-struct XclImpXFArea;
+/** Contains color and line style for each cell border line. */
+struct XclImpXFBorder
+{
+    sal_uInt16                  mnLeftColor;    /// Index to color for left line.
+    sal_uInt16                  mnRightColor;   /// Index to color for right line.
+    sal_uInt16                  mnTopColor;     /// Index to color for top line.
+    sal_uInt16                  mnBottomColor;  /// Index to color for bottom line.
+    sal_uInt8                   mnLeftLine;     /// Style of left line.
+    sal_uInt8                   mnRightLine;    /// Style of right line.
+    sal_uInt8                   mnTopLine;      /// Style of top line.
+    sal_uInt8                   mnBottomLine;   /// Style of bottom line.
+};
+
+
+// ----------------------------------------------------------------------------
+
+/** Contains background colors and pattern. */
+struct XclImpXFArea
+{
+    sal_uInt16                  mnForeColor;    /// Index to foreground color.
+    sal_uInt16                  mnBackColor;    /// Index to background color.
+    sal_uInt8                   mnPattern;      /// Fill pattern.
+};
+
+
+// ----------------------------------------------------------------------------
+
 class SvxBorderLine;
 
-/** Contains all data of a XF record and an ScPatternAttr (SetItem). */
+/** Contains all data of a XF record and a Calc item set. */
 class XclImpXF : protected XclImpRoot, ScfNoCopy
 {
 private:
     typedef ::std::auto_ptr< ScPatternAttr >    ScPatternAttrPtr;
-    typedef ::std::auto_ptr< XclImpXFBorder >   XclImpXFBorderPtr;
-    typedef ::std::auto_ptr< XclImpXFArea >     XclImpXFAreaPtr;
 
-    ScPatternAttrPtr            mpPattern;          /// Calc SetItem.
-    XclImpXFBorderPtr           mpBorder;           /// Border line style.
-    XclImpXFAreaPtr             mpArea;             /// Background area style.
+    mutable ScPatternAttrPtr    mpPattern;          /// Calc item set.
 
+    XclImpXFBorder              maBorder;           /// Border line style.
+    XclImpXFArea                maArea;             /// Background area style.
     XclHorAlign                 meHorAlign;         /// Horizontal alignment.
     XclVerAlign                 meVerAlign;         /// Vertical alignment.
-    XclTextWrap                 meWrap;             /// Automatic line break.
     XclTextOrient               meOrient;           /// Text orientation.
     XclTextDirection            meTextDir;          /// CTL text direction.
-    sal_uInt8                   mnRotation;         /// Rotation angle.
 
-    sal_uInt32                  mnValFormat;        /// Id for value format.
-    sal_uInt16                  mnIndent;           /// Text indent.
-    sal_uInt16                  mnFont;             /// Index to font record.
     sal_uInt16                  mnParent;           /// Index to parent style XF.
+    sal_uInt32                  mnNumFmt;           /// Id for value format.
+    sal_uInt16                  mnFont;             /// Index to font record.
+    sal_uInt16                  mnIndent;           /// Text indent.
+    sal_uInt8                   mnRotation;         /// Rotation angle.
 
-    bool                        mbCellXF;           /// true = cell XF, sal_False = style XF.
+    bool                        mbCellXF;           /// true = cell XF, false = style XF.
     bool                        mbLocked;           /// true = cell is locked.
     bool                        mbHidden;           /// true = formulas are hidden.
-    bool                        mbFontValid;        /// mnFont != parent->mnFont?
-    bool                        mbFmtValid;         /// mnValFormat != parent->mnValFormat?
-    bool                        mbProtValid;        /// mbLocked != parent->mbLocked or mbHidden != parent->mbHidden?
+    bool                        mbWrapped;          /// true = automatic line break.
+    bool                        mbProtUsed;         /// true = locked/hidden flags used.
+    bool                        mbFontUsed;         /// true = font index used.
+    bool                        mbFmtUsed;          /// true = number format used.
+    bool                        mbAlignUsed;        /// true = alignment used.
+    bool                        mbBorderUsed;       /// true = border data used.
+    bool                        mbAreaUsed;         /// true = area data used.
 
 public:
     explicit                    XclImpXF( const XclImpRoot& rRoot );
@@ -311,9 +342,9 @@ public:
     /** Reads an XF record. */
     void                        ReadXF( XclImpStream& rStrm );
 
-    /** Creates a Calc SetItem containing an item set with all cell properties.
-        @return  A read-only reference to the SetItem stored internally. */
-    const ScPatternAttr&        GetPattern();
+    /** Creates a Calc item set containing an item set with all cell properties.
+        @return  A read-only reference to the item set stored internally. */
+    const ScPatternAttr&        GetPattern() const;
 
     inline bool                 IsCellXF() const    { return mbCellXF; }
     inline bool                 IsStyleXF() const   { return !IsCellXF(); }
@@ -322,34 +353,27 @@ public:
     inline XclVerAlign          GetVerAlign() const { return meVerAlign; }
     inline sal_uInt16           GetFont() const     { return mnFont; }
 
-    /** Inserts Excel border line styles into the item set. */
+    /** Inserts the border line styles into the item set. */
     static void                 SetBorder(
-                                    SfxItemSet& rItemSet, const XclImpPalette& rPalette,
-                                    sal_uInt8 nXclLeftLine,     sal_uInt16 nXclLeftColor,
-                                    sal_uInt8 nXclRightLine,    sal_uInt16 nXclRightColor,
-                                    sal_uInt8 nXclTopLine,      sal_uInt16 nXclTopColor,
-                                    sal_uInt8 nXclBottomLine,   sal_uInt16 nXclBottomColor );
+                                    SfxItemSet& rItemSet,
+                                    const XclImpPalette& rPalette,
+                                    const XclImpXFBorder& rBorder );
 
-    /** Inserts an Excel area style into the item set. */
+    /** Inserts the area style into the item set. */
     static void                 SetArea(
-                                    SfxItemSet& rItemSet, const XclImpPalette& rPalette,
-                                    sal_uInt8 nXclPattern,
-                                    sal_uInt16 nXclForeColor, sal_uInt16 nXclBackColor );
+                                    SfxItemSet& rItemSet,
+                                    const XclImpPalette& rPalette,
+                                    const XclImpXFArea& rArea );
 
 private:
-    /** Creates and returns the border data struct. */
-    XclImpXFBorder&             GetBorder();
-    /** Creates and returns the area data struct. */
-    XclImpXFArea&               GetArea();
-
     void                        ReadXF2( XclImpStream& rStrm );
     void                        ReadXF3( XclImpStream& rStrm );
     void                        ReadXF4( XclImpStream& rStrm );
     void                        ReadXF5( XclImpStream& rStrm );
     void                        ReadXF8( XclImpStream& rStrm );
 
-    /** Creates a new border line item. */
-    static SvxBorderLine*       CreateBorderItem(
+    /** Creates a new border line struct from passed line style. */
+    static SvxBorderLine*       CreateBorderLine(
                                     const XclImpPalette& rPalette,
                                     sal_uInt8 nXclLine, sal_uInt16 nXclColor );
 };
@@ -363,7 +387,7 @@ class XclImpXFBuffer : protected XclImpRoot, ScfNoCopy
 {
 private:
     ScfDelList< XclImpXF >      maXFList;       /// List of contents of all XF record.
-    ScPatternAttr               maDefPattern;   /// This SetItem is used if no other could be found or created.
+    ScPatternAttr               maDefPattern;   /// Used if no styles could be found or created.
 
 public:
     explicit                    XclImpXFBuffer( const XclImpRoot& rRoot );
@@ -373,9 +397,9 @@ public:
     /** Reads a STYLE record. */
     void                        ReadStyle( XclImpStream& rStrm );
 
-    /** Creates a SetItem with all properties stored in the XF record.
-        @return  A read-only reference to the SetItem stored internally. */
-    const ScPatternAttr&        GetPattern( sal_uInt32 nXFIndex );
+    /** Creates a item set with all properties stored in the XF record.
+        @return  A read-only reference to the item set stored internally. */
+    const ScPatternAttr&        GetPattern( sal_uInt32 nXFIndex ) const;
 
     /** Returns the object that stores all contents of an XF record. */
     inline const XclImpXF*      GetXF( sal_uInt32 nXFIndex ) const
diff --git a/sc/source/filter/inc/xlconst.hxx b/sc/source/filter/inc/xlconst.hxx
index 3106b6858bd3..b09227458898 100644
--- a/sc/source/filter/inc/xlconst.hxx
+++ b/sc/source/filter/inc/xlconst.hxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: xlconst.hxx,v $
  *
- *  $Revision: 1.3 $
+ *  $Revision: 1.4 $
  *
- *  last change: $Author: dr $ $Date: 2002-12-06 16:41:08 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:13 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -145,15 +145,25 @@ const sal_Int32 EXC_POINTS_PER_INCH         = 72;
 const sal_Int32 EXC_TWIPS_PER_INCH          = EXC_POINTS_PER_INCH * 20;
 
 
+// Line styles ----------------------------------------------------------------
+
+const sal_uInt8 EXC_LINE_NONE               = 0x00;
+const sal_uInt8 EXC_LINE_THIN               = 0x01;
+const sal_uInt8 EXC_LINE_MEDIUM             = 0x02;
+const sal_uInt8 EXC_LINE_THICK              = 0x05;
+const sal_uInt8 EXC_LINE_DOUBLE             = 0x06;
+const sal_uInt8 EXC_LINE_HAIR               = 0x07;
+
+
 // Background patterns --------------------------------------------------------
 
-const sal_uInt16 EXC_PATT_NONE              = 0x0000;
-const sal_uInt16 EXC_PATT_SOLID             = 0x0001;
-const sal_uInt16 EXC_PATT_50_PERC           = 0x0002;
-const sal_uInt16 EXC_PATT_75_PERC           = 0x0003;
-const sal_uInt16 EXC_PATT_25_PERC           = 0x0004;
-const sal_uInt16 EXC_PATT_12_5_PERC         = 0x0011;
-const sal_uInt16 EXC_PATT_6_25_PERC         = 0x0012;
+const sal_uInt8 EXC_PATT_NONE               = 0x00;
+const sal_uInt8 EXC_PATT_SOLID              = 0x01;
+const sal_uInt8 EXC_PATT_50_PERC            = 0x02;
+const sal_uInt8 EXC_PATT_75_PERC            = 0x03;
+const sal_uInt8 EXC_PATT_25_PERC            = 0x04;
+const sal_uInt8 EXC_PATT_12_5_PERC          = 0x11;
+const sal_uInt8 EXC_PATT_6_25_PERC          = 0x12;
 
 
 // Miscellaneous ---------------------------------------------------------------
@@ -164,6 +174,11 @@ const sal_Unicode   EXC_NEWLINE             = EXC_NEWLINE_CHAR;
 
 // Records (ordered by lowest record ID) ======================================
 
+// (0x0007, 0x0207) STRING ----------------------------------------------------
+
+const sal_uInt16 EXC_ID_STRING              = 0x0207;
+
+
 // (0x0014, 0x0015) HEADER, FOOTER --------------------------------------------
 
 const sal_uInt16 EXC_ID_HEADER              = 0x0014;
@@ -211,6 +226,12 @@ const sal_uInt16 EXC_ID_VERTPAGEBREAKS      = 0x001A;
 const sal_uInt16 EXC_ID_HORPAGEBREAKS       = 0x001B;
 
 
+// (0x001C) NOTE --------------------------------------------------------------
+
+const sal_uInt16 EXC_ID_NOTE                = 0x001C;
+const sal_uInt16 EXC_NOTE_VISIBLE           = 0x0002;
+
+
 // (0x001E, 0x041E) FORMAT ----------------------------------------------------
 
 const sal_uInt16 EXC_ID_FORMAT              = 0x041E;
@@ -300,26 +321,43 @@ const sal_uInt8 EXC_FONTCSET_SYMBOL         = 0x02;
 const sal_uInt16 EXC_FONT_AUTOCOLOR         = 0x7FFF;
 
 
-// (0x0043, 0x00E0) XF --------------------------------------------------------
+// (0x0043, 0x0243, 0x0443, 0x00E0) XF ----------------------------------------
+
+const sal_uInt16 EXC_ID2_XF                 = 0x0043;
+const sal_uInt16 EXC_ID3_XF                 = 0x0243;
+const sal_uInt16 EXC_ID4_XF                 = 0x0443;
+const sal_uInt16 EXC_ID_XF                  = 0x00E0;
+
+const sal_uInt16 EXC_XF_OFFSET              = 21;       /// Index to first user defined record.
+const sal_uInt32 EXC_XF_MAXCOUNT            = 4029;     /// Maximum number of user defined records.
+const sal_uInt16 EXC_XF_DEFAULTSTYLE        = 0;        /// Excel index to cefault style XF.
+const sal_uInt16 EXC_XF_DEFAULTCELL         = 15;       /// Excel index to cefault cell XF.
 
 const sal_uInt16 EXC_XF_LOCKED              = 0x0001;
 const sal_uInt16 EXC_XF_HIDDEN              = 0x0002;
 const sal_uInt16 EXC_XF_STYLE               = 0x0004;
+const sal_uInt16 EXC_XF_STYLEPARENT         = 0x0FFF;   /// Syles don't have a parent.
+const sal_uInt16 EXC_XF_WRAPPED             = 0x0008;   /// Automatic line break.
 
-const sal_uInt16 EXC_XF_DIFF_VALFMT         = 0x0400;
-const sal_uInt16 EXC_XF_DIFF_FONT           = 0x0800;
-const sal_uInt16 EXC_XF_DIFF_ALIGN          = 0x1000;
-const sal_uInt16 EXC_XF_DIFF_BORDER         = 0x2000;
-const sal_uInt16 EXC_XF_DIFF_AREA           = 0x4000;
-const sal_uInt16 EXC_XF_DIFF_PROT           = 0x8000;
+const sal_uInt8 EXC_XF_DIFF_VALFMT          = 0x01;
+const sal_uInt8 EXC_XF_DIFF_FONT            = 0x02;
+const sal_uInt8 EXC_XF_DIFF_ALIGN           = 0x04;
+const sal_uInt8 EXC_XF_DIFF_BORDER          = 0x08;
+const sal_uInt8 EXC_XF_DIFF_AREA            = 0x10;
+const sal_uInt8 EXC_XF_DIFF_PROT            = 0x20;
 
 const sal_uInt8 EXC_XF2_VALFMT_MASK         = 0x3F;
 const sal_uInt8 EXC_XF2_LOCKED              = 0x40;
 const sal_uInt8 EXC_XF2_HIDDEN              = 0x80;
+const sal_uInt8 EXC_XF2_LEFTLINE            = 0x08;
+const sal_uInt8 EXC_XF2_RIGHTLINE           = 0x10;
+const sal_uInt8 EXC_XF2_TOPLINE             = 0x20;
+const sal_uInt8 EXC_XF2_BOTTOMLINE          = 0x40;
 const sal_uInt8 EXC_XF2_BACKGROUND          = 0x80;
 
 const sal_uInt16 EXC_XF8_SHRINKTOFIT        = 0x0010;
 const sal_uInt16 EXC_XF8_MERGE              = 0x0020;
+const sal_uInt8 EXC_XF8_STACKED             = 0xFF;     /// Special rotation angle.
 
 
 // (0x0059, 0x005A) XCT, CRN --------------------------------------------------
@@ -364,12 +402,6 @@ const sal_uInt16 EXC_COLOR_BIFF2_BLACK      = 0;
 const sal_uInt16 EXC_COLOR_BIFF2_WHITE      = 1;
 
 
-// (0x0093) STYLE -------------------------------------------------------------
-
-const sal_uInt16 EXC_STYLE_BUILTIN          = 0x8000;
-const sal_uInt16 EXC_STYLE_MASK             = 0x0FFF;
-
-
 // (0x00E9) BITMAP ------------------------------------------------------------
 
 const sal_uInt16 EXC_ID_BITMAP              = 0x00E9;
@@ -459,6 +491,13 @@ const sal_uInt32 EXC_HLINK_FRAME            = 0x00000080;   /// Target frame.
 const sal_uInt32 EXC_HLINK_UNC              = 0x00000100;   /// UNC path.
 
 
+// (0x0293) STYLE -------------------------------------------------------------
+
+const sal_uInt16 EXC_ID_STYLE               = 0x0293;
+const sal_uInt16 EXC_STYLE_BUILTIN          = 0x8000;
+const sal_uInt16 EXC_STYLE_MASK             = 0x0FFF;
+
+
 // web queries ================================================================
 
 #define EXC_WEBQRY_FILTER                   "calc_HTML_WebQuery"
diff --git a/sc/source/filter/inc/xlocx.hxx b/sc/source/filter/inc/xlocx.hxx
new file mode 100644
index 000000000000..9c26776c03ae
--- /dev/null
+++ b/sc/source/filter/inc/xlocx.hxx
@@ -0,0 +1,158 @@
+/*************************************************************************
+ *
+ *  $RCSfile: xlocx.hxx,v $
+ *
+ *  $Revision: 1.2 $
+ *
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:13 $
+ *
+ *  The Contents of this file are made available subject to the terms of
+ *  either of the following licenses
+ *
+ *         - GNU Lesser General Public License Version 2.1
+ *         - Sun Industry Standards Source License Version 1.1
+ *
+ *  Sun Microsystems Inc., October, 2000
+ *
+ *  GNU Lesser General Public License Version 2.1
+ *  =============================================
+ *  Copyright 2000 by Sun Microsystems, Inc.
+ *  901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ *  This library is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public
+ *  License version 2.1, as published by the Free Software Foundation.
+ *
+ *  This library is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this library; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ *  MA  02111-1307  USA
+ *
+ *
+ *  Sun Industry Standards Source License Version 1.1
+ *  =================================================
+ *  The contents of this file are subject to the Sun Industry Standards
+ *  Source License Version 1.1 (the "License"); You may not use this file
+ *  except in compliance with the License. You may obtain a copy of the
+ *  License at http://www.openoffice.org/license.html.
+ *
+ *  Software provided under this License is provided on an "AS IS" basis,
+ *  WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ *  WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ *  MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ *  See the License for the specific provisions governing your rights and
+ *  obligations concerning the Software.
+ *
+ *  The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ *  Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ *  All Rights Reserved.
+ *
+ *  Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+// ============================================================================
+
+#ifndef SC_XLOCX_HXX
+#define SC_XLOCX_HXX
+
+#ifndef _MSOCXIMEX_HXX
+#include 
+#endif
+
+#ifndef SC_XLROOT_HXX
+#include "xlroot.hxx"
+#endif
+
+const int EXC_INCL_EXP_OCX = 1;     /// 1 = Compile with OCX export.
+
+// OCX controls ===============================================================
+
+/** Converter base class for import and export of OXC controls.
+    @descr  The purpose of this class is to manage all the draw pages occuring in a
+    spreadsheet document. Derived classes implement import or export of the controls. */
+class XclOcxConverter : protected SvxMSConvertOCXControls, public XclRoot
+{
+protected:
+    typedef ::com::sun::star::uno::Reference< ::com::sun::star::form::XFormComponent >  XFormComponentRef;
+    typedef ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XShape >       XShapeRef;
+    typedef ::com::sun::star::uno::Reference< ::com::sun::star::drawing::XDrawPage >    XDrawPageRef;
+
+private:
+    sal_uInt16                  mnCurrTab;      /// Stores sheet index of an object for GetDrawPage().
+    sal_uInt16                  mnCachedTab;    /// Sheet index of cached draw page.
+
+protected:
+    explicit                    XclOcxConverter( const XclRoot& rRoot );
+    virtual                     ~XclOcxConverter();
+
+    /** Sets the sheet index of the currently processed object. GetDrawPage() needs this. */
+    void                        SetCurrTab( sal_uInt16 nTab );
+
+private:
+    /** Returns the current draw page. */
+    virtual const XDrawPageRef& GetDrawPage();
+};
+
+
+// ----------------------------------------------------------------------------
+
+class XclImpEscherOle;
+
+/** Converter for import of OXC controls. */
+class XclImpOcxConverter : public XclOcxConverter
+{
+private:
+    SvStorageStreamRef          mxStrm;         /// The 'Ctls' strem.
+
+public:
+    explicit                    XclImpOcxConverter( const XclRoot& rRoot );
+
+    /** Reads the form control data of the passed control object and creates it in the document. */
+    void                        ReadControl( XclImpEscherOle& rObj );
+
+private:
+    /** Inserts the passed control rxFComp into the document. */
+    virtual sal_Bool            InsertControl(
+                                    const XFormComponentRef& rxFComp,
+                                    const ::com::sun::star::awt::Size& rSize,
+                                    XShapeRef* pxShape,
+                                    BOOL bFloatingCtrl );
+};
+
+
+// ----------------------------------------------------------------------------
+
+#if EXC_INCL_EXP_OCX
+
+class SdrObject;
+class XclExpObjControl;
+
+/** Converter for export of OXC controls. */
+class XclExpOcxConverter : public XclOcxConverter
+{
+private:
+    SvStorageStreamRef          mxStrm;         /// The 'Ctls' stream.
+
+public:
+    explicit                    XclExpOcxConverter( const XclRoot& rRoot );
+
+    /** Creates an OBJ record for the passed form control object.
+        @descr  Writes the form control data to the 'Ctls' stream. */
+    XclExpObjControl*           CreateObjRec( const XShapeRef& rxShape );
+};
+
+#endif
+
+// ============================================================================
+
+#endif
+
diff --git a/sc/source/filter/inc/xlroot.hxx b/sc/source/filter/inc/xlroot.hxx
index c2d067759f03..8133821cee92 100644
--- a/sc/source/filter/inc/xlroot.hxx
+++ b/sc/source/filter/inc/xlroot.hxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: xlroot.hxx,v $
  *
- *  $Revision: 1.1 $
+ *  $Revision: 1.2 $
  *
- *  last change: $Author: dr $ $Date: 2002-11-21 12:11:18 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:14 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -95,6 +95,7 @@ struct XclRootData
     LanguageType                meLang;         /// Document language.
     ScAddress                   maScMaxPos;     /// Highest Calc cell position.
     ScAddress                   maXclMaxPos;    /// Highest Excel cell position.
+    long                        mnCharWidth;    /// Width of '0' in default font (twips).
     sal_uInt16                  mnScTab;        /// Current Calc sheet index.
     bool                        mbTruncated;    /// Flag for the table truncated warning box.
 
@@ -104,6 +105,10 @@ struct XclRootData
 
     ::std::auto_ptr< RootData > mpRDP;//!
 
+#ifdef DBG_UTIL
+    sal_Int32                   mnObjCnt;       /// Object counter for mem leak tests.
+#endif
+
     explicit                    XclRootData(
                                     XclBiff eBiff,
                                     ScDocument& rDocument,
@@ -120,8 +125,10 @@ class ScModelObj;
 class SfxPrinter;
 class SvNumberFormatter;
 class ScRangeName;
+class SvStorage;
 
-/** Access to global data from other classes. */
+/** Access to global data for a filter object (imported or exported document)
+    from other classes. */
 class XclRoot
 {
 private:
@@ -135,6 +142,8 @@ public:
 
     RootData*                   mpRD;//!
 
+    /** Returns this root instance - for code readability in derived classes. */
+    inline const XclRoot&       GetRoot() const { return *this; }
     /** Returns the current BIFF version of the importer/exporter. */
     inline XclBiff              GetBiff() const { return mrData.meBiff; }
     /** Returns the document language. */
@@ -150,9 +159,13 @@ public:
     inline const String&        GetBasePath() const { return mrData.maBasePath; }
     /** Returns the character set to import/export byte strings. */
     inline CharSet              GetCharSet() const { return mrData.meCharSet; }
+    /** Returns the width of the '0' character (default font) for the current printer (twips). */
+    inline long                 GetCharWidth() const { return mrData.mnCharWidth; }
 
     /** Returns the destination document (import) or source document (export). */
     inline ScDocument&          GetDoc() const { return mrData.mrDoc; }
+    /** Returns pointer to the destination document (import) or source document (export). */
+    inline ScDocument*          GetDocPtr() const { return &mrData.mrDoc; }
     /** Returns the object shell of the Calc document. May be NULL (i.e. import from clipboard). */
     SfxObjectShell*             GetDocShell() const;
     /** Returns the object model of the Calc document. */
@@ -164,6 +177,10 @@ public:
     /** Returns the defined names container of the Calc document. */
     ScRangeName&                GetNamedRanges() const;
 
+    /** Returns the OLE2 root storage of the imported/exported file.
+        @return  Pointer to root storage or 0, if the file is a simple stream. */
+    SvStorage*                  GetRootStorage() const;
+
     /** Returns the edit engine for import/export of rich strings etc. */
     ScEditEngineDefaulter&      GetEditEngine() const;
     /** Returns the edit engine for import/export of headers/footers. */
@@ -186,6 +203,8 @@ protected:
     inline void                 SetLanguage( LanguageType eLang ) { mrData.meLang = eLang; }
     /** Sets the character set to import/export byte strings. */
     inline void                 SetCharSet( CharSet eCharSet ) { mrData.meCharSet = eCharSet; }
+    /** Sets the width of the '0' character (default font) for the current printer (twips). */
+    inline void                 SetCharWidth( long nCharWidth ) { mrData.mnCharWidth = nCharWidth; }
     /** Increases the current Calc sheet index by 1. */
     inline void                 IncScTab() { ++mrData.mnScTab; }
 
diff --git a/sc/source/filter/inc/xlstyle.hxx b/sc/source/filter/inc/xlstyle.hxx
index c974559c4cc7..7cfccacfc9e2 100644
--- a/sc/source/filter/inc/xlstyle.hxx
+++ b/sc/source/filter/inc/xlstyle.hxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: xlstyle.hxx,v $
  *
- *  $Revision: 1.1 $
+ *  $Revision: 1.2 $
  *
- *  last change: $Author: dr $ $Date: 2002-11-21 12:11:18 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:14 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -72,7 +72,7 @@
 // Color data =================================================================
 
 /** Stores all default colors for a specific BIFF version. */
-class XclDefaultPalette : ScfNoCopy
+class XclDefaultPalette
 {
 private:
     const ColorData*            mpColorTable;       /// The table with RGB values.
@@ -83,7 +83,7 @@ public:
     explicit                    XclDefaultPalette( XclBiff eBiff = xlBiffUnknown );
 
     /** Activates the default colors for the passed BIFF version. */
-    void                        SetBiff( XclBiff eBiff );
+    void                        SetDefaultColors( XclBiff eBiff );
 
     /** Returns the color count in the current palette. */
     inline sal_uInt32           GetColorCount() const { return mnTableSize; }
@@ -110,7 +110,7 @@ inline Color XclDefaultPalette::GetDefColor( sal_uInt16 nXclIndex, ColorData nDe
 }
 
 
-// Font Data ==================================================================
+// Font data ==================================================================
 
 /** Text underline style. */
 enum XclUnderline
@@ -172,7 +172,7 @@ enum XclHorAlign
     xlHAlignFill                    = 0x04,
     xlHAlignJustify                 = 0x05,
     xlHAlignCenterAcrSel            = 0x06,
-    xlHAlignParent                  = 0xFF
+    xlHAlignDistrib                 = 0x07
 };
 
 /** Vertical alignment of cell contents. */
@@ -182,8 +182,7 @@ enum XclVerAlign
     xlVAlignCenter                  = 0x01,
     xlVAlignBottom                  = 0x02,
     xlVAlignJustify                 = 0x03,
-    xlVAlignDistrib                 = 0x04,
-    xlVAlignParent                  = 0xFF
+    xlVAlignDistrib                 = 0x04
 };
 
 /** Text orientation. */
@@ -193,16 +192,7 @@ enum XclTextOrient
     xlTextOrientTopBottom           = 0x01,
     xlTextOrient90ccw               = 0x02,
     xlTextOrient90cw                = 0x03,
-    xlTextOrientRot                 = 0x04,
-    xlTextOrientParent              = 0xFF
-};
-
-/** Text wrap (automatic line break). */
-enum XclTextWrap
-{
-    xlTextWrapNo                    = 0x00,
-    xlTextWrapYes                   = 0x01,
-    xlTextWrapParent                = 0xFF
+    xlTextOrientRot                 = 0x04
 };
 
 /** CTL text direction. */
@@ -210,8 +200,7 @@ enum XclTextDirection
 {
     xlTextDirContext                = 0x00,
     xlTextDirLTR                    = 0x01,
-    xlTextDirRTL                    = 0x02,
-    xlTextDirParent                 = 0xFF
+    xlTextDirRTL                    = 0x02
 };
 
 
diff --git a/sc/source/filter/inc/xltools.hxx b/sc/source/filter/inc/xltools.hxx
index 195e11382a71..8027132e6fcc 100644
--- a/sc/source/filter/inc/xltools.hxx
+++ b/sc/source/filter/inc/xltools.hxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: xltools.hxx,v $
  *
- *  $Revision: 1.2 $
+ *  $Revision: 1.3 $
  *
- *  last change: $Author: dr $ $Date: 2002-12-06 16:41:09 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:14 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -81,7 +81,7 @@
 /** An enumeration for all Excel file format types (BIFF types). */
 enum XclBiff
 {
-    xlBiff2,                    /// MS Excel 2.1
+    xlBiff2 = 0,                /// MS Excel 2.1
     xlBiff3,                    /// MS Excel 3.x
     xlBiff4,                    /// MS Excel 4.x
     xlBiff5,                    /// MS Excel 5.x
@@ -117,14 +117,12 @@ enum XclBoolError
 class XclImpStream;
 class XclExpStream;
 
-/** This struct stores a GUID (class ID) and supports reading, writing and
-    comparison. */
+/** This struct stores a GUID (class ID) and supports reading, writing and comparison. */
 struct XclGuid
 {
-    sal_uInt8                   mpData[ 16 ];
+    sal_uInt8                   mpData[ 16 ];   /// Stores GUID always in little endian.
 
     explicit                    XclGuid();
-                                XclGuid( const XclGuid& rSrc );
     explicit                    XclGuid(
                                     sal_uInt32 nData1,
                                     sal_uInt16 nData2, sal_uInt16 nData3,
@@ -132,8 +130,6 @@ struct XclGuid
                                     sal_uInt8 nData43, sal_uInt8 nData44,
                                     sal_uInt8 nData45, sal_uInt8 nData46,
                                     sal_uInt8 nData47, sal_uInt8 nData48 );
-
-    XclGuid&                    operator=( const XclGuid& rSrc );
 };
 
 bool operator==( const XclGuid& rCmp1, const XclGuid& rCmp2 );
@@ -172,9 +168,9 @@ public:
     static bool                 GetRKFromDouble( sal_Int32& rnRKValue, double fValue );
 
     /** Calculates an angle (in 1/100 of degrees) from an Excel angle value. */
-    static sal_Int32            GetScRotation( sal_uInt16 nExcRot );
+    static sal_Int32            GetScRotation( sal_uInt16 nXclRot );
     /** Calculates the Excel angle value from an angle in 1/100 of degrees. */
-    static sal_uInt16           GetExcRotation( sal_Int32 nScRot );
+    static sal_uInt8            GetXclRotation( sal_Int32 nScRot );
 
     /** Gets a translated error code or Boolean value from Excel error codes.
         @param rfDblValue  Returns 0.0 for error codes or the value of a Boolean (0.0 or 1.0).
@@ -192,6 +188,13 @@ public:
     /** Returns the length in inches calculated from a length in twips. */
     static double               GetInchFromTwips( sal_uInt16 nTwips );
 
+    /** Returns the Calc column width (twips) for the passed Excel width.
+        @param nScCharWidth  Width of the '0' character in Calc (twips). */
+    static sal_uInt16           GetScColumnWidth( sal_uInt16 nXclWidth, long nScCharWidth );
+    /** Returns the Excel column width for the passed Calc width (twips).
+        @param nScCharWidth  Width of the '0' character in Calc (twips). */
+    static sal_uInt16           GetXclColumnWidth( sal_uInt16 nScWidth, long nScCharWidth );
+
 // built-in names -------------------------------------------------------------
 
     /** Returns an Excel built-in name used in NAME records. */
diff --git a/sc/source/filter/lotus/filter.cxx b/sc/source/filter/lotus/filter.cxx
index 56f8f8c6fea7..9fb48aaf750a 100644
--- a/sc/source/filter/lotus/filter.cxx
+++ b/sc/source/filter/lotus/filter.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: filter.cxx,v $
  *
- *  $Revision: 1.1.1.1 $
+ *  $Revision: 1.2 $
  *
- *  last change: $Author: hr $ $Date: 2000-09-18 16:45:14 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:28 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -78,7 +78,6 @@
 #include "compiler.hxx"
 #include "scerrors.hxx"
 
-#include "fltprgrs.hxx"
 #include "root.hxx"
 #include "lotrange.hxx"
 #include "optab.h"
@@ -86,6 +85,11 @@
 #include "decl.h"
 #include "tool.h"
 
+#ifndef SC_FPROGRESSBAR_HXX
+#include "fprogressbar.hxx"
+#endif
+
+
 // Konstanten ------------------------------------------------------------
 const UINT16        nBOF = 0x0000;
 
@@ -144,7 +148,7 @@ FltError ScImportLotus123old( SvStream& aStream, ScDocument* pDocument, CharSet
     InitPage(); // Seitenformat initialisieren (nur Tab 0!)
 
     // Progressbar starten
-    FilterProgressBar   aPrgrsBar( aStream );
+    ScfStreamProgressBar aPrgrsBar( aStream, pDocument->GetDocumentShell() );
 
     // Datei-Typ ermitteln
     eTyp = ScanVersion( aStream );
diff --git a/sc/source/filter/lotus/lotform.cxx b/sc/source/filter/lotus/lotform.cxx
index 595eb9c213bf..db2a7c0f12f6 100644
--- a/sc/source/filter/lotus/lotform.cxx
+++ b/sc/source/filter/lotus/lotform.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: lotform.cxx,v $
  *
- *  $Revision: 1.6 $
+ *  $Revision: 1.7 $
  *
- *  last change: $Author: dr $ $Date: 2002-11-21 12:21:24 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:29 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
diff --git a/sc/source/filter/lotus/lotimpop.cxx b/sc/source/filter/lotus/lotimpop.cxx
index 9009abc033e8..523a6e95c030 100644
--- a/sc/source/filter/lotus/lotimpop.cxx
+++ b/sc/source/filter/lotus/lotimpop.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: lotimpop.cxx,v $
  *
- *  $Revision: 1.5 $
+ *  $Revision: 1.6 $
  *
- *  last change: $Author: dr $ $Date: 2002-11-21 12:21:24 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:29 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
diff --git a/sc/source/filter/lotus/lotread.cxx b/sc/source/filter/lotus/lotread.cxx
index afcb7bfa51c0..e5c6ade5154e 100644
--- a/sc/source/filter/lotus/lotread.cxx
+++ b/sc/source/filter/lotus/lotread.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: lotread.cxx,v $
  *
- *  $Revision: 1.3 $
+ *  $Revision: 1.4 $
  *
- *  last change: $Author: vg $ $Date: 2001-05-18 12:28:04 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:29 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -72,9 +72,12 @@
 #include "scerrors.hxx"
 #include "root.hxx"
 #include "lotimpop.hxx"
-#include "fltprgrs.hxx"
 #include "lotattr.hxx"
 
+#ifndef SC_FPROGRESSBAR_HXX
+#include "fprogressbar.hxx"
+#endif
+
 
 class ScFormulaCell;
 
@@ -106,7 +109,7 @@ FltError ImportLotus::Read()
     pIn->Seek( nNextRec );
 
     // Progressbar starten
-    FilterProgressBar aPrgrsBar( *pIn );
+    ScfStreamProgressBar aPrgrsBar( *pIn, pD->GetDocumentShell() );
 
     while( eAkt != S_END )
     {
@@ -292,7 +295,7 @@ FltError ImportLotus::Read( SvStream& rIn )
     pIn->Seek( nNextRec );
 
     // Progressbar starten
-    FilterProgressBar aPrgrsBar( *pIn );
+    ScfStreamProgressBar aPrgrsBar( *pIn, pD->GetDocumentShell() );
 
     while( bRead )
     {
diff --git a/sc/source/filter/lotus/op.cxx b/sc/source/filter/lotus/op.cxx
index 81c1069e9498..156a3ec5afa2 100644
--- a/sc/source/filter/lotus/op.cxx
+++ b/sc/source/filter/lotus/op.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: op.cxx,v $
  *
- *  $Revision: 1.6 $
+ *  $Revision: 1.7 $
  *
- *  last change: $Author: er $ $Date: 2002-12-06 17:47:41 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:30 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -68,7 +68,7 @@
 //------------------------------------------------------------------------
 
 #include 
-#include 
+#include 
 #include 
 #include 
 #include 
@@ -150,7 +150,7 @@ void OP_Number( SvStream& r, UINT16 n )
 
     r >> nFormat >> nCol >> nRow >> fValue;
 
-    fValue = SolarMath::Round( fValue, 15 );
+    fValue = ::rtl::math::round( fValue, 15 );
     ScValueCell*    pZelle = new ScValueCell( fValue );
     pDoc->PutCell( nCol, nRow, nTab, pZelle, ( BOOL ) TRUE );
 
@@ -275,7 +275,7 @@ void OP_NamedRange( SvStream& r, UINT16 n )
 
     String              aTmp( pAnsi, pLotusRoot->eCharsetQ );
 
-    ScfTools::ConvertName( aTmp );
+    ScfTools::ConvertToScDefinedName( aTmp );
 
     pLotusRoot->pRangeNames->Append( pRange, aTmp );
 }
@@ -313,7 +313,7 @@ void OP_SymphNamedRange( SvStream& r, UINT16 n )
     DosToSystem( pAnsi );
 
     String      aTmp( pAnsi, pLotusRoot->eCharsetQ );
-    ScfTools::ConvertName( aTmp );
+    ScfTools::ConvertToScDefinedName( aTmp );
 
     pLotusRoot->pRangeNames->Append( pRange, aTmp );
 }
diff --git a/sc/source/filter/lotus/tool.cxx b/sc/source/filter/lotus/tool.cxx
index 3c125df9ee02..ad40e615d7d7 100644
--- a/sc/source/filter/lotus/tool.cxx
+++ b/sc/source/filter/lotus/tool.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: tool.cxx,v $
  *
- *  $Revision: 1.5 $
+ *  $Revision: 1.6 $
  *
- *  last change: $Author: dr $ $Date: 2002-11-21 12:21:25 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:30 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -601,7 +601,7 @@ void RangeNameBufferWK3::Add( const String& rOrgName, const ComplRefData& rCRD )
     static UINT16       nDouble = 0;
 
     String              aScName( rOrgName );
-    ScfTools::ConvertName( aScName );
+    ScfTools::ConvertToScDefinedName( aScName );
 
     register ENTRY*     pInsert = new ENTRY( rOrgName, aScName, rCRD );
 
diff --git a/sc/source/filter/rtf/eeimpars.cxx b/sc/source/filter/rtf/eeimpars.cxx
index c7704308f5d5..84dbf893c766 100644
--- a/sc/source/filter/rtf/eeimpars.cxx
+++ b/sc/source/filter/rtf/eeimpars.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: eeimpars.cxx,v $
  *
- *  $Revision: 1.6 $
+ *  $Revision: 1.7 $
  *
- *  last change: $Author: er $ $Date: 2002-11-12 18:24:26 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:31 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -166,7 +166,7 @@ ULONG ScEEImport::Read( SvStream& rStream )
 
 void ScEEImport::WriteToDocument( BOOL bSizeColsRows, double nOutputFactor )
 {
-    ScProgress* pProgress = new ScProgress( NULL,
+    ScProgress* pProgress = new ScProgress( pDoc->GetDocumentShell(),
         ScGlobal::GetRscString( STR_LOAD_DOC ), pParser->Count() );
     ULONG nProgress = 0;
 
@@ -369,7 +369,16 @@ void ScEEImport::WriteToDocument( BOOL bSizeColsRows, double nOutputFactor )
                 }
                 else
                 {
-                    String aStr( pEngine->GetText( pE->aSel.nStartPara ) );
+                    String aStr;
+                    if( pE->bEntirePara )
+                    {
+                        aStr = pEngine->GetText( pE->aSel.nStartPara );
+                    }
+                    else
+                    {
+                        aStr = pEngine->GetText( pE->aSel );
+                        aStr.EraseLeadingAndTrailingChars();
+                    }
                     const sal_Unicode cDecSepEng = '.';
                     const sal_Unicode cThoSepEng = ',';
                     if ( cDecSep != cDecSepEng
@@ -411,6 +420,12 @@ void ScEEImport::WriteToDocument( BOOL bSizeColsRows, double nOutputFactor )
                             }
                         }
                     }
+
+                    //  #105460#, #i4180# String cells can't contain tabs or linebreaks
+                    //  -> replace with spaces
+                    aStr.SearchAndReplaceAll( (sal_Unicode)'\t', (sal_Unicode)' ' );
+                    aStr.SearchAndReplaceAll( (sal_Unicode)'\n', (sal_Unicode)' ' );
+
                     pDoc->SetString( nCol, nRow, nTab, aStr );
                 }
             }
diff --git a/sc/source/filter/starcalc/scflt.cxx b/sc/source/filter/starcalc/scflt.cxx
index c77fcb23e2c7..f3430c2e0b73 100644
--- a/sc/source/filter/starcalc/scflt.cxx
+++ b/sc/source/filter/starcalc/scflt.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: scflt.cxx,v $
  *
- *  $Revision: 1.8 $
+ *  $Revision: 1.9 $
  *
- *  last change: $Author: er $ $Date: 2002-12-06 17:52:08 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:32 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -113,10 +113,13 @@
 #include "scfobj.hxx"
 #include "docoptio.hxx"
 #include "viewopti.hxx"
-#include "fltprgrs.hxx"
 #include "globstr.hrc"
 #include "ftools.hxx"
 
+#ifndef SC_FPROGRESSBAR_HXX
+#include "fprogressbar.hxx"
+#endif
+
 
 using namespace com::sun::star;
 
@@ -1070,7 +1073,7 @@ Sc10Import::~Sc10Import()
 
 ULONG Sc10Import::Import()
 {
-    pPrgrsBar = new FilterProgressBar( rStream );
+    pPrgrsBar = new ScfStreamProgressBar( rStream, pDoc->GetDocumentShell() );
 
     ScDocOptions aOpt = pDoc->GetDocOptions();
     aOpt.SetDate( 1, 1, 1900 );
@@ -1079,19 +1082,19 @@ ULONG Sc10Import::Import()
     pDoc->GetFormatTable()->ChangeNullDate( 1, 1, 1900 );
 
     LoadFileHeader();                           pPrgrsBar->Progress();
-    if (!nError) { LoadFileInfo();          pPrgrsBar->Progress(); }
-    if (!nError) { LoadEditStateInfo();     pPrgrsBar->Progress(); }
+    if (!nError) { LoadFileInfo();              pPrgrsBar->Progress(); }
+    if (!nError) { LoadEditStateInfo();         pPrgrsBar->Progress(); }
     if (!nError) { LoadProtect();               pPrgrsBar->Progress(); }
-    if (!nError) { LoadViewColRowBar();     pPrgrsBar->Progress(); }
+    if (!nError) { LoadViewColRowBar();         pPrgrsBar->Progress(); }
     if (!nError) { LoadScrZoom();               pPrgrsBar->Progress(); }
     if (!nError) { LoadPalette();               pPrgrsBar->Progress(); }
     if (!nError) { LoadFontCollection();        pPrgrsBar->Progress(); }
     if (!nError) { LoadNameCollection();        pPrgrsBar->Progress(); }
-    if (!nError) { LoadPatternCollection(); pPrgrsBar->Progress(); }
+    if (!nError) { LoadPatternCollection();     pPrgrsBar->Progress(); }
     if (!nError) { LoadDataBaseCollection();    pPrgrsBar->Progress(); }
     if (!nError) { LoadTables();                pPrgrsBar->Progress(); }
     if (!nError) { LoadObjects();               pPrgrsBar->Progress(); }
-    if (!nError) { ImportNameCollection();  pPrgrsBar->Progress(); }
+    if (!nError) { ImportNameCollection();      pPrgrsBar->Progress(); }
     pDoc->SetViewOptions( aSc30ViewOpt );
 
 #ifdef DBG_UTIL
diff --git a/sc/source/filter/xcl97/XclExpChangeTrack.cxx b/sc/source/filter/xcl97/XclExpChangeTrack.cxx
index 0dc9838b6413..4ef8d9af53f6 100644
--- a/sc/source/filter/xcl97/XclExpChangeTrack.cxx
+++ b/sc/source/filter/xcl97/XclExpChangeTrack.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: XclExpChangeTrack.cxx,v $
  *
- *  $Revision: 1.12 $
+ *  $Revision: 1.13 $
  *
- *  last change: $Author: dr $ $Date: 2002-12-06 16:42:28 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:33 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
diff --git a/sc/source/filter/xcl97/XclImpChangeTrack.cxx b/sc/source/filter/xcl97/XclImpChangeTrack.cxx
index 0840b12cd09c..731b60720780 100644
--- a/sc/source/filter/xcl97/XclImpChangeTrack.cxx
+++ b/sc/source/filter/xcl97/XclImpChangeTrack.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: XclImpChangeTrack.cxx,v $
  *
- *  $Revision: 1.15 $
+ *  $Revision: 1.16 $
  *
- *  last change: $Author: dr $ $Date: 2002-11-21 12:22:29 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:33 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
diff --git a/sc/source/filter/xcl97/makefile.mk b/sc/source/filter/xcl97/makefile.mk
index c5296d01b87c..6a2a4b405e06 100644
--- a/sc/source/filter/xcl97/makefile.mk
+++ b/sc/source/filter/xcl97/makefile.mk
@@ -2,9 +2,9 @@
 #
 #   $RCSfile: makefile.mk,v $
 #
-#   $Revision: 1.10 $
+#   $Revision: 1.11 $
 #
-#   last change: $Author: dr $ $Date: 2002-11-21 12:22:29 $
+#   last change: $Author: hr $ $Date: 2003-03-26 18:05:34 $
 #
 #   The Contents of this file are made available subject to the terms of
 #   either of the following licenses
@@ -89,6 +89,7 @@ SLOFILES =	\
         $(SLO)$/XclExpPivotTables.obj		\
         $(SLO)$/XclExpChangeTrack.obj
 
+
 # --- Targets -------------------------------------------------------
 
 .INCLUDE :	target.mk
diff --git a/sc/source/filter/xcl97/xcl97dum.cxx b/sc/source/filter/xcl97/xcl97dum.cxx
index e5ac815de071..4247bfc20e2b 100644
--- a/sc/source/filter/xcl97/xcl97dum.cxx
+++ b/sc/source/filter/xcl97/xcl97dum.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: xcl97dum.cxx,v $
  *
- *  $Revision: 1.9 $
+ *  $Revision: 1.10 $
  *
- *  last change: $Author: dr $ $Date: 2002-12-06 16:42:29 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:34 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -127,107 +127,6 @@ const BYTE ExcDummy8_041::pMyData[] = {
 const ULONG ExcDummy8_041::nMyLen = sizeof(ExcDummy8_041::pMyData);
 
 
-// 21 default XF Records (8*)
-const BYTE ExcDummy8_XF::pMyData[] = {
-    0xe0, 0x00, 0x14, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0x20, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x20,
-
-    0xe0, 0x00, 0x14, 0x00,
-    0x01, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0x20, 0x00,
-    0x00, 0xF4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x20,
-
-    0xe0, 0x00, 0x14, 0x00,
-    0x01, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0x20, 0x00,
-    0x00, 0xF4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x20,
-
-    0xe0, 0x00, 0x14, 0x00,
-    0x02, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0x20, 0x00,
-    0x00, 0xF4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x20,
-
-    0xe0, 0x00, 0x14, 0x00,
-    0x02, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0x20, 0x00,
-    0x00, 0xF4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x20,
-
-    0xe0, 0x00, 0x14, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0x20, 0x00,
-    0x00, 0xF4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x20,
-
-    0xe0, 0x00, 0x14, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0x20, 0x00,
-    0x00, 0xF4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x20,
-
-    0xe0, 0x00, 0x14, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0x20, 0x00,
-    0x00, 0xF4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x20,
-
-    0xe0, 0x00, 0x14, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0x20, 0x00,
-    0x00, 0xF4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x20,
-
-    0xe0, 0x00, 0x14, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0x20, 0x00,
-    0x00, 0xF4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x20,
-
-    0xe0, 0x00, 0x14, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0x20, 0x00,
-    0x00, 0xF4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x20,
-
-    0xe0, 0x00, 0x14, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0x20, 0x00,
-    0x00, 0xF4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x20,
-
-    0xe0, 0x00, 0x14, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0x20, 0x00,
-    0x00, 0xF4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x20,
-
-    0xe0, 0x00, 0x14, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0x20, 0x00,
-    0x00, 0xF4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x20,
-
-    0xe0, 0x00, 0x14, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0xF5, 0xFF, 0x20, 0x00,
-    0x00, 0xF4, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x20,
-
-    0xe0, 0x00, 0x14, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x20, 0x00,
-    0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x20,
-
-    0xe0, 0x00, 0x14, 0x00,
-    0x01, 0x00, 0x2B, 0x00, 0xF5, 0xFF, 0x20, 0x00,
-    0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x20,
-
-    0xe0, 0x00, 0x14, 0x00,
-    0x01, 0x00, 0x29, 0x00, 0xF5, 0xFF, 0x20, 0x00,
-    0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x20,
-
-    0xe0, 0x00, 0x14, 0x00,
-    0x01, 0x00, 0x09, 0x00, 0xF5, 0xFF, 0x20, 0x00,
-    0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x20,
-
-    0xe0, 0x00, 0x14, 0x00,
-    0x01, 0x00, 0x2C, 0x00, 0xF5, 0xFF, 0x20, 0x00,
-    0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x20,
-
-    0xe0, 0x00, 0x14, 0x00,
-    0x01, 0x00, 0x2A, 0x00, 0xF5, 0xFF, 0x20, 0x00,
-    0x00, 0xF8, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC0, 0x20
-
-};
-const ULONG ExcDummy8_XF::nMyLen = sizeof(ExcDummy8_XF::pMyData);
-
-
-// 6 default STYLE Records (8*)
-const BYTE ExcDummy8_Style::pMyData[] = {
-    0x93, 0x02, 0x04, 0x00, 0x10, 0x80, 0x03, 0xFF,
-    0x93, 0x02, 0x04, 0x00, 0x11, 0x80, 0x06, 0xFF,
-    0x93, 0x02, 0x04, 0x00, 0x12, 0x80, 0x05, 0xFF,
-    0x93, 0x02, 0x04, 0x00, 0x00, 0x80, 0x00, 0xFF,
-    0x93, 0x02, 0x04, 0x00, 0x13, 0x80, 0x04, 0xFF,
-    0x93, 0x02, 0x04, 0x00, 0x14, 0x80, 0x07, 0xFF
-};
-const ULONG ExcDummy8_Style::nMyLen = sizeof(ExcDummy8_Style::pMyData);
-
 
 // Natural Language Formulas Flag (8+)  0 := nein, 1:= ja
 const BYTE ExcDummy8_UsesElfs::pMyData[] = {
@@ -309,32 +208,6 @@ const BYTE* ExcDummy8_041::GetData() const
 
 
 
-ULONG ExcDummy8_XF::GetLen() const
-{
-    return nMyLen;
-}
-
-
-const BYTE* ExcDummy8_XF::GetData() const
-{
-    return pMyData;
-}
-
-
-
-ULONG ExcDummy8_Style::GetLen() const
-{
-    return nMyLen;
-}
-
-
-const BYTE* ExcDummy8_Style::GetData() const
-{
-    return pMyData;
-}
-
-
-
 ULONG ExcDummy8_UsesElfs::GetLen() const
 {
     return nMyLen;
diff --git a/sc/source/filter/xcl97/xcl97esc.cxx b/sc/source/filter/xcl97/xcl97esc.cxx
index 3566c0463c23..4cff3d99a5b7 100644
--- a/sc/source/filter/xcl97/xcl97esc.cxx
+++ b/sc/source/filter/xcl97/xcl97esc.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: xcl97esc.cxx,v $
  *
- *  $Revision: 1.6 $
+ *  $Revision: 1.7 $
  *
- *  last change: $Author: dr $ $Date: 2002-12-12 13:14:21 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:34 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -81,6 +81,9 @@
 #ifndef _SVDOOLE2_HXX //autogen wg. SdrOle2Obj
 #include 
 #endif
+#ifndef _SVX_FMGLOB_HXX
+#include 
+#endif
 #ifndef _IPOBJ_HXX //autogen wg. SvInPlaceObject
 #include 
 #endif
@@ -113,6 +116,9 @@
 XclEscherEx::XclEscherEx( SvStream& rStrm, UINT32 nDrawings, RootData& rRoot )
         :
         EscherEx( rStrm, nDrawings ),
+#if EXC_INCL_EXP_OCX
+        aOcxConverter( *rRoot.pER ),
+#endif
         rRootData( rRoot ),
         pPicTempFile( NULL ),
         pPicStrm( NULL ),
@@ -218,30 +224,41 @@ EscherExHostAppData* XclEscherEx::StartShape( const com::sun::star::uno::Referen
         pCurrXclObj = new XclObjAny( rRootData );   // just what is it?!?
     else
     {
-        switch ( pObj->GetObjIdentifier() )
+        pCurrXclObj = NULL;
+        sal_uInt16 nObjType = pObj->GetObjIdentifier();
+
+        if( nObjType == OBJ_OLE2 )
         {
-            case OBJ_OLE2 :
+            //! not-const because GetObjRef may load the OLE object
+            SvInPlaceObjectRef xObj( ((SdrOle2Obj*)pObj)->GetObjRef() );
+            if ( xObj.Is() )
             {
-                //! not-const because GetObjRef may load the OLE object
-                SvInPlaceObjectRef xObj( ((SdrOle2Obj*)pObj)->GetObjRef() );
-                if ( xObj.Is() )
-                {
-                    SvGlobalName aObjClsId( *xObj->GetSvFactory() );
-                    if ( SchModuleDummy::HasID( aObjClsId ) )
-                    {   // yes, it's a chart diagram
-                        rRootData.pObjRecs->Add( new XclObjChart( rRootData, rShape ) );
-                        pCurrXclObj = NULL;     // no metafile or whatsoever
-                    }
-                    else    // metafile and OLE object
-                        pCurrXclObj = new XclObjOle( rRootData, *pObj );
+                SvGlobalName aObjClsId( *xObj->GetSvFactory() );
+                if ( SchModuleDummy::HasID( aObjClsId ) )
+                {   // yes, it's a chart diagram
+                    rRootData.pObjRecs->Add( new XclObjChart( rRootData, rShape ) );
+                    pCurrXclObj = NULL;     // no metafile or whatsoever
                 }
-                else    // just a metafile
-                    pCurrXclObj = new XclObjAny( rRootData );
+                else    // metafile and OLE object
+                    pCurrXclObj = new XclObjOle( rRootData, *pObj );
             }
-            break;
-            default:
+            else    // just a metafile
                 pCurrXclObj = new XclObjAny( rRootData );
         }
+        else if( nObjType == OBJ_CAPTION )  // #107540# ignore permanent note shapes
+        {
+            pCurrXclObj = NULL;
+        }
+#if EXC_INCL_EXP_OCX
+        else if( nObjType >= OBJ_FM_CONTROL )
+        {
+            pCurrXclObj = aOcxConverter.CreateObjRec( rShape );
+            if( !pCurrXclObj )
+                pCurrXclObj = new XclObjAny( rRootData );   // just a metafile
+        }
+#endif
+        else
+            pCurrXclObj = new XclObjAny( rRootData );   // just a metafile
     }
     if ( pCurrXclObj )
     {
@@ -295,31 +312,42 @@ EscherExHostAppData* XclEscherEx::StartShape( const com::sun::star::uno::Referen
 
 void XclEscherEx::EndShape( UINT16 nShapeType, UINT32 nShapeID )
 {
-    if ( !nShapeID && pCurrXclObj )
-    {   // shape not written
-        XclObj* p = (XclObj*) rRootData.pObjRecs->Last();
-        DBG_ASSERT( p == pCurrXclObj, "XclEscherEx::EndShape: what object?" );
-        if ( p == pCurrXclObj )
+    // own escher data created? -> never delete such objects
+    bool bOwnEscher = pCurrXclObj && pCurrXclObj->IsOwnEscher();
+
+    // post process the current object - not for objects with own escher data
+    if( pCurrXclObj && !bOwnEscher )
+    {
+        // escher data of last shape not written? -> delete it from object list
+        if( nShapeID == 0 )
         {
-            rRootData.pObjRecs->Remove();
-            delete pCurrXclObj;
-            pCurrXclObj = NULL;
+            XclObj* pLastObj = static_cast< XclObj* >( rRootData.pObjRecs->Last() );
+            DBG_ASSERT( pLastObj == pCurrXclObj, "XclEscherEx::EndShape - wrong object" );
+            if ( pLastObj == pCurrXclObj )
+            {
+                rRootData.pObjRecs->Remove();
+                DELETEZ( pCurrXclObj );
+            }
         }
-    }
-    if ( pCurrXclObj )
-    {
-        if ( pCurrAppData->IsStackedGroup() )
-            pCurrXclObj->SetEscherShapeTypeGroup();
-        else
+
+        if( pCurrXclObj )
         {
-            pCurrXclObj->SetEscherShapeType( nShapeType );
-            pCurrXclObj->UpdateStopPos();
+            // set shape type
+            if ( pCurrAppData->IsStackedGroup() )
+                pCurrXclObj->SetEscherShapeTypeGroup();
+            else
+            {
+                pCurrXclObj->SetEscherShapeType( nShapeType );
+                pCurrXclObj->UpdateStopPos();
+            }
         }
     }
+
+    // get next object from stack
     DeleteCurrAppData();
-    pCurrAppData = (XclEscherHostAppData*) aStack.Pop();
-    pCurrXclObj = (XclObj*) aStack.Pop();
-    if ( nAdditionalText == 3 )
+    pCurrAppData = static_cast< XclEscherHostAppData* >( aStack.Pop() );
+    pCurrXclObj = static_cast< XclObj* >( aStack.Pop() );
+    if( nAdditionalText == 3 )
         nAdditionalText = 0;
 }
 
diff --git a/sc/source/filter/xcl97/xcl97rec.cxx b/sc/source/filter/xcl97/xcl97rec.cxx
index a96dba9da87f..7360ffa8cafe 100644
--- a/sc/source/filter/xcl97/xcl97rec.cxx
+++ b/sc/source/filter/xcl97/xcl97rec.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: xcl97rec.cxx,v $
  *
- *  $Revision: 1.50 $
+ *  $Revision: 1.51 $
  *
- *  last change: $Author: jmarmion $ $Date: 2002-12-13 12:06:21 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:34 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -93,9 +93,12 @@
 #ifndef _SFXITEMSET_HXX //autogen wg. SfxItemSet
 #include 
 #endif
+#ifndef _SVX_UNOAPI_HXX_
+#include 
+#endif
 
-#ifndef _TOOLS_SOLMATH_HXX      // DoubleToString()
-#include 
+#ifndef INCLUDED_RTL_MATH_HXX
+#include 
 #endif
 #ifndef _ZFORMAT_HXX            // SvNumberformat
 #include 
@@ -108,6 +111,9 @@
 #include "xcl97esc.hxx"
 #include "excupn.hxx"
 
+#ifndef SC_FAPIHELPER_HXX
+#include "fapihelper.hxx"
+#endif
 #ifndef SC_XECONTENT_HXX
 #include "xecontent.hxx"
 #endif
@@ -145,6 +151,12 @@
 #include "docoptio.hxx"
 #include "patattr.hxx"
 
+using ::com::sun::star::uno::UNO_QUERY;
+using ::com::sun::star::uno::Reference;
+using ::com::sun::star::beans::XPropertySet;
+using ::com::sun::star::drawing::XShape;
+
+
 //___________________________________________________________________
 
 // --- class XclMsodrawing_Base --------------------------------------
@@ -377,14 +389,15 @@ void XclObjList::Save( XclExpStream& rStrm )
 
 // --- class XclObj --------------------------------------------------
 
-XclObj::XclObj( ObjType eType, RootData& rRoot )
+XclObj::XclObj( ObjType eType, RootData& rRoot, bool bOwnEscher )
             :
             pClientTextbox( NULL ),
             pTxo( NULL ),
             eObjType( eType ),
             nObjId(0),
             nGrbit( 0x6011 ),   // AutoLine, AutoFill, Printable, Locked
-            bFirstOnSheet( rRoot.pObjRecs->Count() == 0 )
+            bFirstOnSheet( rRoot.pObjRecs->Count() == 0 ),
+            mbOwnEscher( bOwnEscher )
 {
     //! first object continues the first MSODRAWING record
     if ( bFirstOnSheet )
@@ -493,9 +506,9 @@ ULONG XclObj::GetLen() const
 
 // --- class XclObjComment -------------------------------------------
 
-XclObjComment::XclObjComment( RootData& rRoot, const ScAddress& rPos, const String& rStr )
+XclObjComment::XclObjComment( RootData& rRoot, const ScAddress& rPos, const String& rStr, bool bVisible )
             :
-            XclObj( otComment, rRoot )
+            XclObj( otComment, rRoot, true )
 {
     nGrbit = 0;     // all off: AutoLine, AutoFill, Printable, Locked
     XclEscherEx* pEx = pMsodrawing->GetEscherEx();
@@ -510,7 +523,9 @@ XclObjComment::XclObjComment( RootData& rRoot, const ScAddress& rPos, const Stri
     aPropOpt.AddOpt( ESCHER_Prop_fNoFillHitTest, 0x00110010 );      // bool field
     aPropOpt.AddOpt( ESCHER_Prop_shadowColor, 0x00000000 );
     aPropOpt.AddOpt( ESCHER_Prop_fshadowObscured, 0x00030003 );     // bool field
-    aPropOpt.AddOpt( ESCHER_Prop_fPrint, 0x000A0002 );              // bool field
+    sal_uInt32 nFlags = 0x000A0000;
+    ::set_flag( nFlags, 2UL, !bVisible );
+    aPropOpt.AddOpt( ESCHER_Prop_fPrint, nFlags );                  // bool field
     aPropOpt.Commit( pEx->GetStream() );
 
     XclEscherClientAnchor( rRoot.pDoc, rPos ).WriteData( *pEx );
@@ -576,7 +591,7 @@ ULONG XclObjComment::GetLen() const
 // --- class XclObjDropDown ------------------------------------------
 
 XclObjDropDown::XclObjDropDown( RootData& rRoot, const ScAddress& rPos, BOOL bFilt ) :
-        XclObj( otComboBox, rRoot ),
+        XclObj( otComboBox, rRoot, true ),
         bIsFiltered( bFilt )
 {
     SetLocked( TRUE );
@@ -875,6 +890,106 @@ ULONG XclObjOle::GetLen() const
 }
 
 
+// ----------------------------------------------------------------------------
+
+#if EXC_INCL_EXP_OCX
+
+XclExpObjControl::XclExpObjControl(
+        const XclRoot& rRoot,
+        const Reference< XShape >& rxShape,
+        const String& rClassName,
+        sal_uInt32 nStrmStart, sal_uInt32 nStrmSize ) :
+    XclObj( otPicture, *rRoot.mpRD, true ),
+    maClassName( rClassName ),
+    mnStrmStart( nStrmStart ),
+    mnStrmSize( nStrmSize )
+{
+    SetAutoLine( FALSE );
+
+    XclEscherEx& rEscherEx = *pMsodrawing->GetEscherEx();
+    rEscherEx.OpenContainer( ESCHER_SpContainer );
+    rEscherEx.AddShape( ESCHER_ShpInst_HostControl, SHAPEFLAG_HAVESPT | SHAPEFLAG_HAVEANCHOR | SHAPEFLAG_OLESHAPE );
+    Rectangle aDummyRect;
+    EscherPropertyContainer aPropOpt( rEscherEx, rEscherEx.QueryPicStream(), aDummyRect );
+    aPropOpt.AddOpt( ESCHER_Prop_FitTextToShape,    0x00080008 );   // bool field
+    aPropOpt.AddOpt( ESCHER_Prop_lineColor,         0x08000040 );
+    aPropOpt.AddOpt( ESCHER_Prop_fNoLineDrawDash,   0x00080000 );   // bool field
+
+    Reference< XPropertySet > xShapePS( rxShape, UNO_QUERY );
+    if( xShapePS.is() )
+    {
+        // meta file
+        if( aPropOpt.CreateGraphicProperties( xShapePS, String( RTL_CONSTASCII_USTRINGPARAM( "MetaFile" ) ), sal_False ) )
+        {
+            sal_uInt32 nBlipId;
+            if( aPropOpt.GetOpt( ESCHER_Prop_pib, nBlipId ) )
+                aPropOpt.AddOpt( ESCHER_Prop_pictureId, nBlipId );
+        }
+
+        // name of the control
+        ::rtl::OUString aCtrlName;
+        //! TODO - this does not work - property is empty
+        if( ::getPropValue( aCtrlName, xShapePS, PROPNAME( "Name" ) ) && aCtrlName.getLength() )
+        {
+            XclExpString aCtrlNameEx( aCtrlName, EXC_STR_FORCEUNICODE );
+            sal_uInt32 nBufferSize = aCtrlNameEx.GetBufferSize() + 2;   // plus trailing zero
+            sal_uInt8* pBuffer = new sal_uInt8[ nBufferSize ];
+            aCtrlNameEx.WriteBuffer( pBuffer );
+            pBuffer[ nBufferSize - 2 ] = pBuffer[ nBufferSize - 1 ] = 0;
+            // aPropOpt takes ownership of pBuffer
+            aPropOpt.AddOpt( ESCHER_Prop_wzName, TRUE, nBufferSize, pBuffer, nBufferSize );
+        }
+    }
+
+    aPropOpt.Commit( rEscherEx.GetStream() );
+
+    if( SdrObject* pSdrObj = ::GetSdrObjectFromXShape( rxShape ) )
+        XclEscherClientAnchor( *rRoot.mpRD, *pSdrObj ).WriteData( rEscherEx );
+    rEscherEx.AddAtom( 0, ESCHER_ClientData );                       // OBJ record
+    rEscherEx.CloseContainer();  // ESCHER_SpContainer
+
+    pMsodrawing->UpdateStopPos();
+}
+
+void XclExpObjControl::SaveCont( XclExpStream& rStrm )
+{
+    // ftCmo
+    XclObj::SaveCont( rStrm );
+    // ftCf (clipboard format)
+    rStrm << sal_uInt16( ftCf ) << sal_uInt16( 2 ) << sal_uInt16( 2 );
+    // ftPioGrbit
+    rStrm << sal_uInt16( ftPioGrbit ) << sal_uInt16( 2 ) << sal_uInt16( 0x0031 );
+
+    // ftPictFmla
+    XclExpString aClass( maClassName );
+    sal_uInt16 nClassNameSize = static_cast< sal_uInt16 >( aClass.GetSize() );
+    sal_uInt16 nClassNamePad = nClassNameSize & 1;
+    sal_uInt16 nFirstPartSize = 12 + nClassNameSize + nClassNamePad;
+    sal_uInt16 nPictFmlaSize = nFirstPartSize + 18;
+
+    rStrm   << sal_uInt16( ftPictFmla ) << sal_uInt16( nPictFmlaSize )
+            << sal_uInt16( nFirstPartSize )             // size of first part
+            << sal_uInt16( 5 )                          // formula size
+            << sal_uInt32( 0 )                          // unknown ID
+            << sal_uInt8( 0x02 ) << sal_uInt32( 0 )     // tTbl token with unknown ID
+            << sal_uInt8( 3 )                           // pad to word
+            << aClass;                                  // "Forms.***.1"
+    rStrm.WriteZeroBytes( nClassNamePad );              // pad to word
+    rStrm   << mnStrmStart                              // start in 'Ctls' stream
+            << mnStrmSize                               // size in 'Ctls' stream
+            << sal_uInt32( 0 ) << sal_uInt32( 0 );      // unknown
+
+    // ftEnd
+    rStrm << sal_uInt16( ftEnd ) << sal_uInt16( 0 );
+}
+
+sal_uInt32 XclExpObjControl::GetLen() const
+{
+    return 0;       // calculated by XclExpStream
+}
+
+#endif
+
 // --- class XclObjAny -------------------------------------------
 
 XclObjAny::XclObjAny( RootData& rRoot )
@@ -925,81 +1040,50 @@ ULONG XclObjAny::GetLen() const
 
 
 
-// --- class XclNoteList ----------------------------------------------
+// ----------------------------------------------------------------------------
 
-XclNoteList::XclNoteList()
+XclExpNote::XclExpNote(
+        const XclExpRoot& rRoot, const ScAddress& rPos,
+        const ScPostIt* pScNote, const String& rAddText ) :
+    XclExpRecord( EXC_ID_NOTE ),
+    maPos( rPos ),
+    mnObjId( 0 ),
+    mbVisible( pScNote && pScNote->IsShown() )
 {
-}
-
+    String aNoteText;
 
-XclNoteList::~XclNoteList()
-{
-    for ( XclNote* p = First(); p; p = Next() )
+    // read strings from note object, if present
+    if( pScNote )
     {
-        delete p;
+        aNoteText = pScNote->GetText();
+        maAuthor.Assign( pScNote->GetAuthor() );
     }
-}
-
-
-void XclNoteList::Add( XclNote* pNote )
-{
-    // limitation on 64kB is done in XclObjList,
-    // more notes get no ID and will not save themselfs
-    Insert( pNote, LIST_APPEND );
-}
 
-
-void XclNoteList::Save( XclExpStream& rStrm )
-{
-    for ( XclNote* p = First(); p; p = Next() )
+    // append additional text
+    if( rAddText.Len() )
     {
-        p->Save( rStrm );
+        if( aNoteText.Len() )
+            aNoteText.Append( EXC_NEWLINE ).Append( EXC_NEWLINE );
+        aNoteText.Append( rAddText );
     }
-}
 
+    // create the Escher object
+    mnObjId = rRoot.mpRD->pObjRecs->Add( new XclObjComment( *rRoot.mpRD, maPos, aNoteText, mbVisible ) );
 
-
-// --- class XclNote -------------------------------------------------
-
-XclNote::XclNote( RootData& rRoot, const ScAddress& rPos, const String& rNoteText, const String& rNoteAuthor ) :
-    aAuthor( rNoteAuthor ),
-    aPos( rPos ),
-    nGrbit(0)
-{
-    XclObjComment* pObj = new XclObjComment( rRoot, rPos, rNoteText );
-    nObjId = rRoot.pObjRecs->Add( pObj );
+    SetRecSize( 9 + maAuthor.GetSize() );
 }
 
-
-XclNote::~XclNote()
+void XclExpNote::Save( XclExpStream& rStrm )
 {
+    if( mnObjId )
+        XclExpRecord::Save( rStrm );
 }
 
-
-void XclNote::SaveCont( XclExpStream& rStrm )
+void XclExpNote::WriteBody( XclExpStream& rStrm )
 {
-    rStrm   << (UINT16) aPos.Row() << (UINT16) aPos.Col() << nGrbit << nObjId
-            << aAuthor
-            << UINT8(0);      // pad byte goes here (always)
-}
-
-
-void XclNote::Save( XclExpStream& rStrm )
-{
-    if ( nObjId )
-        ExcRecord::Save( rStrm );
-}
-
-
-UINT16 XclNote::GetNum() const
-{
-    return 0x001C;
-}
-
-
-ULONG XclNote::GetLen() const
-{
-    return nObjId ? 9 + aAuthor.GetSize() : 0;
+    sal_uInt16 nFlags = mbVisible ? EXC_NOTE_VISIBLE : 0;
+    rStrm   << (sal_uInt16) maPos.Row() << (sal_uInt16) maPos.Col()
+            << nFlags << mnObjId << maAuthor << sal_uInt8( 0 );
 }
 
 
@@ -1074,15 +1158,14 @@ ExcLabelSst::ExcLabelSst(
 ExcLabelSst::ExcLabelSst(
         const ScAddress& rPos,
         const ScPatternAttr* pAttr,
-        RootData& rRoot,
+        RootData& rRootData,
         const ScEditCell& rEdCell ) :
-    ExcCell( rPos, pAttr, rRoot )
+    ExcCell( rPos, pAttr, rRootData )
 {
-    XclExpString* pStr = XclExpStringHelper::CreateString( *rRoot.pER, rEdCell, pAttr );
-    UsedAttrList& rXFBuffer = *rRoot.pXFRecs;
-    const ScPatternAttr& rAttr = pAttr ? *pAttr : *rRoot.pER->GetDoc().GetDefPattern();
-    SetXF( pStr->IsWrapped() ? rXFBuffer.FindWithLineBreak( &rAttr ) : rXFBuffer.Find( &rAttr ) );
-    nIsst = rRoot.pER->GetSst().Insert( pStr );
+    const XclExpRoot& rRoot = *rRootData.pER;
+    XclExpString* pString = XclExpStringHelper::CreateString( rRoot, rEdCell, pAttr );
+    SetXF( rRoot.GetXFBuffer().Insert( pAttr, pString->IsWrapped() ) );
+    nIsst = rRoot.GetSst().Insert( pString );
 }
 
 
@@ -1110,113 +1193,6 @@ ULONG ExcLabelSst::GetDiffLen() const
 
 
 
-// --- class ExcXf8 --------------------------------------------------
-
-ExcXf8::ExcXf8( const XclExpRoot& rRoot, UINT16 nFont, UINT16 nForm, const ScPatternAttr* pPattAttr,
-                BOOL& rbLineBreak, BOOL bSt ) :
-        ExcXf( rRoot, nFont, nForm, pPattAttr, rbLineBreak, bSt ),
-        eTextDir( xlTextDirContext ),
-        nTrot( 0 ),
-        nCIndent( 0 ),
-        bFShrinkToFit( FALSE ),
-        bFMergeCell( FALSE ),
-        nGrbitDiag( 0 ),
-        nIcvDiagSer( 0 ),
-        nDgDiag( 0 )
-{
-    if( eOri == xlTextOrientTopBottom )
-        nTrot = 0x00FF;
-    else if( eOri != xlTextOrientNoRot )    // see #i4378
-        nTrot = (eOri == xlTextOrient90ccw) ? 90 : 180;
-    else if( pPattAttr )
-        nTrot = XclTools::GetExcRotation( ((const SfxInt32Item&) pPattAttr->GetItem( ATTR_ROTATE_VALUE )).GetValue() );
-
-    if( pPattAttr )
-    {
-        nCIndent = (UINT16)((const SfxUInt16Item&) pPattAttr->GetItem( ATTR_INDENT )).GetValue();
-        nCIndent += 100;
-        nCIndent /= 200;
-        if( nCIndent > 15 )
-            nCIndent = 15;
-
-        switch( (SvxFrameDirection)((const SvxFrameDirectionItem&)pPattAttr->GetItem( ATTR_WRITINGDIR )).GetValue() )
-        {
-            case FRMDIR_ENVIRONMENT:    eTextDir = xlTextDirContext;    break;
-            case FRMDIR_HORI_LEFT_TOP:  eTextDir = xlTextDirLTR;        break;
-            case FRMDIR_HORI_RIGHT_TOP: eTextDir = xlTextDirRTL;        break;
-            default:                    DBG_ERRORFILE( "ExcXf8::ExcXf8 - unknown CTL text direction" );
-        }
-    }
-}
-
-
-void ExcXf8::SaveCont( XclExpStream& rStrm )
-{
-    register UINT16 nTmp;
-    register UINT32 nTmp32;
-
-    rStrm << nIfnt << nIfmt                             // Offs 4 + 6
-        << nOffs8;                                      // Offs 8
-
-    nTmp = ( UINT16 ) eAlc;                             // Offs 10
-    if( bFWrap )
-        nTmp |= 0x0008;
-    nTmp |= ( ( UINT16 ) eAlcV ) << 4;
-    nTmp |= nTrot << 8;
-    rStrm << nTmp;
-
-    nTmp = nCIndent;                                    // Offs 12
-    if( bFShrinkToFit )
-        nTmp |= 0x0010;
-    if( bFMergeCell )
-        nTmp |= 0x0020;
-    nTmp |= ((UINT16)eTextDir) << 6;
-    // Bit 9-8 reserved, Bit 15-10 fAtr... alle 0 (keine Parent Styles)
-    rStrm << nTmp;
-
-    nTmp = nDgLeft;                                     // Offs 14
-    nTmp |= nDgRight << 4;
-    nTmp |= nDgTop << 8;
-    nTmp |= nDgBottom << 12;
-    rStrm << nTmp;
-
-    nTmp = GetPalette().GetColorIndex( nIcvLftSer );       // Offs 16
-    nTmp |= GetPalette().GetColorIndex( nIcvRigSer ) << 7;
-    nTmp |= nGrbitDiag << 14;
-    rStrm << nTmp;
-
-    nTmp32 = GetPalette().GetColorIndex( nIcvTopSer );   // Offs 18
-    nTmp32 |= (UINT32) GetPalette().GetColorIndex( nIcvBotSer ) << 7;
-    nTmp32 |= (UINT32) GetPalette().GetColorIndex( nIcvDiagSer ) << 14;
-    nTmp32 |= (UINT32) nDgDiag << 21;
-
-    UINT16 nForeInd, nBackInd;
-    GetPalette().GetMixedColors( nForeInd, nBackInd, nFls, nIcvForeSer, nIcvBackSer );
-
-    nTmp32 |= (UINT32) nFls << 26;
-    rStrm << nTmp32;
-
-    nTmp = nForeInd | (nBackInd << 7);                  // Offs 22
-
-    if( bFSxButton )
-        nTmp |= 0x4000;
-    rStrm << nTmp;
-}
-
-
-UINT16 ExcXf8::GetNum() const
-{
-    return 0x00E0;
-}
-
-
-ULONG ExcXf8::GetLen() const
-{
-    return 20;
-}
-
-
-
 // --- class ExcBundlesheet8 -----------------------------------------
 
 ExcBundlesheet8::ExcBundlesheet8( RootData& rRootData, UINT16 nTab ) :
@@ -1422,25 +1398,24 @@ XclCondFormat::XclCondFormat( const ScConditionalFormat& _rCF, ScRangeList* _pRL
     {
         pCFE = _rCF.GetEntry( n );
         if( pCFE )
-            List::Insert( new XclCf( *rER.pER, *pCFE ), LIST_APPEND );
+            Append( new XclCf( *rER.pER, *pCFE ) );
     }
 }
 
 
 XclCondFormat::~XclCondFormat()
 {
-    if( pRL )
-        delete pRL;
+    delete pRL;
 }
 
 
 void XclCondFormat::WriteCondfmt( XclExpStream& rStrm )
 {
-    DBG_ASSERT( List::Count() < 65536, "XclCondFormat::SaveCont - to much CFs!" );
+    DBG_ASSERT( Count() < 65536, "XclCondFormat::SaveCont - to much CFs!" );
 
     rStrm.StartRecord( 0x01B0, 0 );     // real size calculated by XclExpStream
 
-    rStrm << (UINT16) List::Count() << (UINT16) 0x0000;
+    rStrm << (UINT16) Count() << (UINT16) 0x0001;
 
     ULONG               nMinMaxPos = rStrm.GetStreamPos();
     UINT16              nRowFirst = 0xFFFF;
@@ -1491,7 +1466,7 @@ void XclCondFormat::Save( XclExpStream& rStrm )
     WriteCondfmt( rStrm );
 
     // write list of CF records
-    for( XclCf* pCf = _First(); pCf; pCf = _Next() )
+    for( XclCf* pCf = First(); pCf; pCf = Next() )
         pCf->Save( rStrm );
 }
 
@@ -1596,28 +1571,11 @@ XclCf::XclCf( const XclExpRoot& rRoot, const ScCondFormatEntry& r ) :
 
         // border data
         if( bHasLine )
-        {
-            const SvxBoxItem&   rBox = ((const SvxBoxItem&)aAttr.GetItem( ATTR_BORDER ));
-            UINT16              nDgTop, nDgBottom, nDgLeft, nDgRight;
-
-            ExcXf::ScToExcBorderLine( rPal, rBox.GetTop(), nIcvTopSer, nDgTop );
-            ExcXf::ScToExcBorderLine( rPal, rBox.GetBottom(), nIcvBotSer, nDgBottom );
-            ExcXf::ScToExcBorderLine( rPal, rBox.GetLeft(), nIcvLftSer, nDgLeft );
-            ExcXf::ScToExcBorderLine( rPal, rBox.GetRight(), nIcvRigSer, nDgRight );
-
-            nLineData1 = (UINT8)((nDgLeft & 0x0F) | (nDgRight << 4));
-            nLineData2 = (UINT8)((nDgTop & 0x0F) | (nDgBottom << 4));
-        }
+            XclExpXF::GetBorder( maBorder, rPal, aAttr );
 
         // background / foreground data
         if( bHasPattern )
-        {
-            const SvxBrushItem& rBrushItem = (const SvxBrushItem&)aAttr.GetItem( ATTR_BACKGROUND );
-            Color aColor( rBrushItem.GetColor() );
-            nPatt = aColor.GetTransparency() ? 0x0000 : 0x0001;
-            nIcvForeSer = rPal.InsertColor( aColor, xlColorCellArea );
-            nIcvBackSer = rPal.InsertColor( Color( COL_BLACK ), xlColorCellArea );
-        }
+            XclExpXF::GetArea( maArea, rPal, aAttr );
     }
 
     ScTokenArray*   pScTokArry1 = r.CreateTokenArry( 0 );
@@ -1699,22 +1657,26 @@ void XclCf::SaveCont( XclExpStream& rStrm )
         }
         if( bHasLine )
         {
-            UINT16 nLineData3, nLineData4;
-            nLineData3 = rPal.GetColorIndex( nIcvLftSer ) & 0x007F;
-            nLineData3 |= (rPal.GetColorIndex( nIcvRigSer ) & 0x007F) << 7;
-            nLineData4 = rPal.GetColorIndex( nIcvTopSer ) & 0x007F;
-            nLineData4 |= (rPal.GetColorIndex( nIcvBotSer ) & 0x007F) << 7;
+            sal_uInt8 nLineData1, nLineData2;
+            sal_uInt16 nLineData3, nLineData4;
+            nLineData1 = (UINT8)((maBorder.mnLeftLine & 0x0F) | (maBorder.mnRightLine << 4));
+            nLineData2 = (UINT8)((maBorder.mnTopLine & 0x0F) | (maBorder.mnBottomLine << 4));
+            nLineData3 = rPal.GetColorIndex( maBorder.mnLeftColorId ) & 0x007F;
+            nLineData3 |= (rPal.GetColorIndex( maBorder.mnRightColorId ) & 0x007F) << 7;
+            nLineData4 = rPal.GetColorIndex( maBorder.mnTopColorId ) & 0x007F;
+            nLineData4 |= (rPal.GetColorIndex( maBorder.mnBottomColorId ) & 0x007F) << 7;
 
             rStrm   << nLineData1 << nLineData2 << nLineData3 << nLineData4
                     << (UINT16)0xBA00;
         }
         if( bHasPattern )
         {
-            UINT16  nForeInd, nBackInd;
-            rPal.GetMixedColors( nForeInd, nBackInd, nPatt, nIcvForeSer, nIcvBackSer );
+            sal_uInt16 nXclForeIx, nXclBackIx;
+            sal_uInt8 nPattern = maArea.mnPattern;
+            rPal.GetMixedColors( nXclForeIx, nXclBackIx, nPattern, maArea.mnForeColorId, maArea.mnBackColorId );
 
-            UINT8   nPattData1 = (nPatt == 1) ? 0 : (UINT8) nPatt;
-            UINT16  nPattData2 = ((nForeInd & 0x007F ) << 7) | (nBackInd & 0x007F);
+            UINT8   nPattData1 = (nPattern == EXC_PATT_SOLID) ? 0 : nPattern;
+            UINT16  nPattData2 = ((nXclForeIx & 0x007F ) << 7) | (nXclBackIx & 0x007F);
 
             rStrm << (UINT8)0 << nPattData1 << nPattData2;
         }
@@ -1939,9 +1901,11 @@ ExcEScenario::ExcEScenario( ScDocument& rDoc, UINT16 nTab )
                 if( rDoc.HasValueData( nCol, nRow, nTab ) )
                 {
                     rDoc.GetValue( nCol, nRow, nTab, fVal );
-                    sText.Erase();
-                    SolarMath::DoubleToString( sText, fVal, 'A', INT_MAX,
-                        ScGlobal::pLocaleData->getNumDecimalSep().GetChar(0), TRUE );
+                    sText = ::rtl::math::doubleToUString( fVal,
+                            rtl_math_StringFormat_Automatic,
+                            rtl_math_DecimalPlaces_Max,
+                            ScGlobal::pLocaleData->getNumDecimalSep().GetChar(0),
+                            TRUE );
                 }
                 else
                     rDoc.GetString( nCol, nRow, nTab, sText );
diff --git a/sc/source/filter/xml/XMLChangeTrackingImportHelper.cxx b/sc/source/filter/xml/XMLChangeTrackingImportHelper.cxx
index fed7ad2e9d8d..bdc878816632 100644
--- a/sc/source/filter/xml/XMLChangeTrackingImportHelper.cxx
+++ b/sc/source/filter/xml/XMLChangeTrackingImportHelper.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: XMLChangeTrackingImportHelper.cxx,v $
  *
- *  $Revision: 1.15 $
+ *  $Revision: 1.16 $
  *
- *  last change: $Author: er $ $Date: 2002-04-15 11:04:14 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:37 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -900,6 +900,9 @@ void ScXMLChangeTrackingImportHelper::CreateChangeTrack(ScDocument* pTempDoc)
         if (aProtect.getLength())
             pTrack->SetProtection(aProtect);
 
+        if ( pTrack->GetLast() )
+            pTrack->SetLastSavedActionNumber(pTrack->GetLast()->GetActionNumber());
+
         pDoc->SetChangeTrack(pTrack);
     }
 }
diff --git a/sc/source/filter/xml/XMLConverter.cxx b/sc/source/filter/xml/XMLConverter.cxx
index 90665dc11f4a..79f4c9f02cf2 100644
--- a/sc/source/filter/xml/XMLConverter.cxx
+++ b/sc/source/filter/xml/XMLConverter.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: XMLConverter.cxx,v $
  *
- *  $Revision: 1.19 $
+ *  $Revision: 1.20 $
  *
- *  last change: $Author: sab $ $Date: 2001-11-15 11:36:12 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:37 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -725,7 +725,8 @@ void ScXMLConverter::ParseFormula(OUString& sFormula, const sal_Bool bIsFormula)
     sal_Unicode chPrevious('=');
     for (sal_Int32 i = 0; i < sFormula.getLength(); i++)
     {
-        if (sFormula[i] == '\'' && !bInDoubleQuotationMarks)
+        if (sFormula[i] == '\'' && !bInDoubleQuotationMarks &&
+            chPrevious != '\\')
             bInQuotationMarks = !bInQuotationMarks;
         else if (sFormula[i] == '"' && !bInQuotationMarks)
             bInDoubleQuotationMarks = !bInDoubleQuotationMarks;
@@ -741,6 +742,8 @@ void ScXMLConverter::ParseFormula(OUString& sFormula, const sal_Bool bIsFormula)
                 sBuffer.append(sFormula[i]);
         chPrevious = sFormula[i];
     }
+
+    DBG_ASSERT(nCountBraces == 0, "there are some braces still open");
     sFormula = sBuffer.makeStringAndClear();
 }
 
diff --git a/sc/source/filter/xml/XMLStylesExportHelper.cxx b/sc/source/filter/xml/XMLStylesExportHelper.cxx
index b58baf734d61..55f669dad3d4 100644
--- a/sc/source/filter/xml/XMLStylesExportHelper.cxx
+++ b/sc/source/filter/xml/XMLStylesExportHelper.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: XMLStylesExportHelper.cxx,v $
  *
- *  $Revision: 1.33 $
+ *  $Revision: 1.34 $
  *
- *  last change: $Author: hr $ $Date: 2002-02-08 18:28:50 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:37 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
diff --git a/sc/source/filter/xml/XMLStylesExportHelper.hxx b/sc/source/filter/xml/XMLStylesExportHelper.hxx
index 263d2570c203..6880b9ecf831 100644
--- a/sc/source/filter/xml/XMLStylesExportHelper.hxx
+++ b/sc/source/filter/xml/XMLStylesExportHelper.hxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: XMLStylesExportHelper.hxx,v $
  *
- *  $Revision: 1.19 $
+ *  $Revision: 1.20 $
  *
- *  last change: $Author: hr $ $Date: 2002-02-08 18:28:50 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:37 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
diff --git a/sc/source/filter/xml/XMLTableMasterPageExport.cxx b/sc/source/filter/xml/XMLTableMasterPageExport.cxx
index e82b0a865193..526e81bad44d 100644
--- a/sc/source/filter/xml/XMLTableMasterPageExport.cxx
+++ b/sc/source/filter/xml/XMLTableMasterPageExport.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: XMLTableMasterPageExport.cxx,v $
  *
- *  $Revision: 1.10 $
+ *  $Revision: 1.11 $
  *
- *  last change: $Author: sab $ $Date: 2003-03-10 11:15:27 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:38 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -136,7 +136,7 @@ void XMLTableMasterPageExport::exportHeaderFooter(const com::sun::star::uno::Ref
                 GetExport().AddAttribute( XML_NAMESPACE_STYLE,
                                                 XML_DISPLAY, XML_FALSE );
             SvXMLElementExport aElem( GetExport(), XML_NAMESPACE_STYLE,
-                                        aName, sal_True, sal_True );
+                                      aName, sal_True, sal_True );
             if (sCenter.getLength() && !sLeft.getLength() && !sRight.getLength())
                 exportHeaderFooterContent( xCenter, sal_False, sal_False );
             else
@@ -145,19 +145,19 @@ void XMLTableMasterPageExport::exportHeaderFooter(const com::sun::star::uno::Ref
                 {
                     SvXMLElementExport aElem( GetExport(), XML_NAMESPACE_STYLE,
                                                 XML_REGION_LEFT, sal_True, sal_True );
-                     exportHeaderFooterContent( xLeft, sal_False, sal_False );
+                    exportHeaderFooterContent( xLeft, sal_False, sal_False );
                 }
                 if (sCenter.getLength())
                 {
                     SvXMLElementExport aElem( GetExport(), XML_NAMESPACE_STYLE,
                                                 XML_REGION_CENTER, sal_True, sal_True );
-                     exportHeaderFooterContent( xCenter, sal_False, sal_False );
+                    exportHeaderFooterContent( xCenter, sal_False, sal_False );
                 }
                 if (sRight.getLength())
                 {
                     SvXMLElementExport aElem( GetExport(), XML_NAMESPACE_STYLE,
                                                 XML_REGION_RIGHT, sal_True, sal_True );
-                     exportHeaderFooterContent( xRight, sal_False, sal_False );
+                    exportHeaderFooterContent( xRight, sal_False, sal_False );
                 }
             }
         }
diff --git a/sc/source/filter/xml/xmlcelli.cxx b/sc/source/filter/xml/xmlcelli.cxx
index b637947495b3..293005ea7a6b 100644
--- a/sc/source/filter/xml/xmlcelli.cxx
+++ b/sc/source/filter/xml/xmlcelli.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: xmlcelli.cxx,v $
  *
- *  $Revision: 1.70 $
+ *  $Revision: 1.71 $
  *
- *  last change: $Author: sab $ $Date: 2002-09-26 12:08:41 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:38 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -164,9 +164,6 @@
 #ifndef _DATE_HXX
 #include 
 #endif
-#ifndef _TOOLS_SOLMATH_HXX
-#include 
-#endif
 #ifndef _ISOLANG_HXX
 #include 
 #endif
diff --git a/sc/source/filter/xml/xmldrani.cxx b/sc/source/filter/xml/xmldrani.cxx
index 51deb74f5775..3464c4a07d6c 100644
--- a/sc/source/filter/xml/xmldrani.cxx
+++ b/sc/source/filter/xml/xmldrani.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: xmldrani.cxx,v $
  *
- *  $Revision: 1.19 $
+ *  $Revision: 1.20 $
  *
- *  last change: $Author: sab $ $Date: 2002-03-22 16:02:47 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:38 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -470,14 +470,14 @@ void ScXMLDatabaseRangeContext::EndElement()
                                     xFilterPropertySet->setPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_UNONAME_USEREGEX)), aTemp);
                                     aTemp <<= aFilterOutputPosition;
                                     xFilterPropertySet->setPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(SC_UNONAME_OUTPOS)), aTemp);
-                                    if (bFilterConditionSourceRange)
-                                    {
-                                        ScRange aAdvSource;
-                                        ScUnoConversion::FillScRange( aAdvSource, aFilterConditionSourceRangeAddress );
-                                        pDBData->SetAdvancedQuerySource(&aAdvSource);
-                                    }
                                 }
                                 xSheetFilterDescriptor->setFilterFields(aFilterFields);
+                                if (bFilterConditionSourceRange)
+                                {
+                                    ScRange aAdvSource;
+                                    ScUnoConversion::FillScRange( aAdvSource, aFilterConditionSourceRangeAddress );
+                                    pDBData->SetAdvancedQuerySource(&aAdvSource);
+                                }
                             }
                             if (bContainsSubTotal)
                             {
diff --git a/sc/source/filter/xml/xmlexprt.cxx b/sc/source/filter/xml/xmlexprt.cxx
index 3dc869871fc1..bea415afc45a 100644
--- a/sc/source/filter/xml/xmlexprt.cxx
+++ b/sc/source/filter/xml/xmlexprt.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: xmlexprt.cxx,v $
  *
- *  $Revision: 1.164 $
+ *  $Revision: 1.165 $
  *
- *  last change: $Author: sab $ $Date: 2002-12-06 05:59:14 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:38 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -185,8 +185,8 @@
 #ifndef _TOOLS_DEBUG_HXX
 #include 
 #endif
-#ifndef _TOOLS_SOLMATH_HXX
-#include 
+#ifndef INCLUDED_RTL_MATH_HXX
+#include 
 #endif
 #ifndef _ZFORLIST_HXX
 #include 
@@ -509,6 +509,21 @@ ScXMLExport::ScXMLExport(const sal_uInt16 nExportFlag) :
         xRowStylesExportPropertySetMapper, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(XML_STYLE_FAMILY_TABLE_ROW_STYLES_PREFIX)));
     GetAutoStylePool()->AddFamily(XML_STYLE_FAMILY_TABLE_TABLE, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(XML_STYLE_FAMILY_TABLE_TABLE_STYLES_NAME)),
         xTableStylesExportPropertySetMapper, rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(XML_STYLE_FAMILY_TABLE_TABLE_STYLES_PREFIX)));
+
+    if( (getExportFlags() & (EXPORT_STYLES|EXPORT_AUTOSTYLES|EXPORT_MASTERSTYLES|EXPORT_CONTENT) ) != 0 )
+    {
+        sAttrName = GetNamespaceMap().GetQNameByKey( XML_NAMESPACE_TABLE, GetXMLToken(XML_NAME));
+        sAttrStyleName = GetNamespaceMap().GetQNameByKey( XML_NAMESPACE_TABLE, GetXMLToken(XML_STYLE_NAME));
+        sAttrColumnsRepeated = GetNamespaceMap().GetQNameByKey( XML_NAMESPACE_TABLE, GetXMLToken(XML_NUMBER_COLUMNS_REPEATED));
+        sAttrFormula = GetNamespaceMap().GetQNameByKey( XML_NAMESPACE_TABLE, GetXMLToken(XML_FORMULA));
+        sAttrStringValue = GetNamespaceMap().GetQNameByKey( XML_NAMESPACE_TABLE, GetXMLToken(XML_STRING_VALUE));
+        sElemCell = GetNamespaceMap().GetQNameByKey( XML_NAMESPACE_TABLE, GetXMLToken(XML_TABLE_CELL));
+        sElemCoveredCell = GetNamespaceMap().GetQNameByKey( XML_NAMESPACE_TABLE, GetXMLToken(XML_COVERED_TABLE_CELL));
+        sElemCol = GetNamespaceMap().GetQNameByKey( XML_NAMESPACE_TABLE, GetXMLToken(XML_TABLE_COLUMN));
+        sElemRow = GetNamespaceMap().GetQNameByKey( XML_NAMESPACE_TABLE, GetXMLToken(XML_TABLE_ROW));
+        sElemTab = GetNamespaceMap().GetQNameByKey( XML_NAMESPACE_TABLE, GetXMLToken(XML_TABLE));
+        sElemP = GetNamespaceMap().GetQNameByKey( XML_NAMESPACE_TEXT, GetXMLToken(XML_P));
+    }
 }
 
 
@@ -840,17 +855,17 @@ void ScXMLExport::WriteSingleColumn(const sal_Int32 nRepeatColumns, const sal_In
     const sal_Int32 nIndex, const sal_Bool bIsAutoStyle, const sal_Bool bIsVisible)
 {
     CheckAttrList();
-    AddAttribute(XML_NAMESPACE_TABLE, XML_STYLE_NAME, *pColumnStyles->GetStyleNameByIndex(nStyleIndex));
+    AddAttribute(sAttrStyleName, *pColumnStyles->GetStyleNameByIndex(nStyleIndex));
     if (!bIsVisible)
         AddAttribute(XML_NAMESPACE_TABLE, XML_VISIBILITY, XML_COLLAPSE);
     if (nRepeatColumns > 1)
     {
         OUString sOUEndCol = OUString::valueOf(static_cast  (nRepeatColumns));
-        AddAttribute(XML_NAMESPACE_TABLE, XML_NUMBER_COLUMNS_REPEATED, sOUEndCol);
+        AddAttribute(sAttrColumnsRepeated, sOUEndCol);
     }
     if (nIndex != -1)
         AddAttribute(XML_NAMESPACE_TABLE, XML_DEFAULT_CELL_STYLE_NAME, *pCellStyles->GetStyleNameByIndex(nIndex, bIsAutoStyle));
-    SvXMLElementExport aElemR(*this, XML_NAMESPACE_TABLE, XML_TABLE_COLUMN, sal_True, sal_True);
+    SvXMLElementExport aElemC(*this, sElemCol, sal_True, sal_True);
 }
 
 void ScXMLExport::WriteColumn(const sal_Int32 nColumn, const sal_Int32 nRepeatColumns,
@@ -1023,16 +1038,16 @@ void ScXMLExport::WriteRowContent()
             else
             {
                 if (nIndex != -1)
-                    AddAttribute(XML_NAMESPACE_TABLE, XML_STYLE_NAME, *pCellStyles->GetStyleNameByIndex(nIndex, bIsAutoStyle));
+                    AddAttribute(sAttrStyleName, *pCellStyles->GetStyleNameByIndex(nIndex, bIsAutoStyle));
                 if (nPrevValidationIndex > -1)
                     AddAttribute(XML_NAMESPACE_TABLE, XML_CONTENT_VALIDATION_NAME, pValidationsContainer->GetValidationName(nPrevValidationIndex));
                 if (nCols > 1)
                 {
                     rtl::OUStringBuffer aBuf;
                     GetMM100UnitConverter().convertNumber(aBuf, nCols);
-                    AddAttribute(XML_NAMESPACE_TABLE, XML_NUMBER_COLUMNS_REPEATED, aBuf.makeStringAndClear());
+                    AddAttribute(sAttrColumnsRepeated, aBuf.makeStringAndClear());
                 }
-                SvXMLElementExport aElemC(*this, XML_NAMESPACE_TABLE, XML_TABLE_CELL, sal_True, sal_True);
+                SvXMLElementExport aElemC(*this, sElemCell, sal_True, sal_True);
                 nIndex = aRange.nIndex;
                 bIsAutoStyle = aRange.bIsAutoStyle;
                 nCols = aRange.nRepeatColumns;
@@ -1047,23 +1062,23 @@ void ScXMLExport::WriteRowContent()
     {
         table::CellAddress aCellAddress;
         if (nIndex != -1)
-            AddAttribute(XML_NAMESPACE_TABLE, XML_STYLE_NAME, *pCellStyles->GetStyleNameByIndex(nIndex, bIsAutoStyle));
+            AddAttribute(sAttrStyleName, *pCellStyles->GetStyleNameByIndex(nIndex, bIsAutoStyle));
         if (nPrevValidationIndex > -1)
             AddAttribute(XML_NAMESPACE_TABLE, XML_CONTENT_VALIDATION_NAME, pValidationsContainer->GetValidationName(nPrevValidationIndex));
         if (nCols > 1)
         {
             rtl::OUStringBuffer aBuf;
             GetMM100UnitConverter().convertNumber(aBuf, nCols);
-            AddAttribute(XML_NAMESPACE_TABLE, XML_NUMBER_COLUMNS_REPEATED, aBuf.makeStringAndClear());
+            AddAttribute(sAttrColumnsRepeated, aBuf.makeStringAndClear());
         }
-        SvXMLElementExport aElemC(*this, XML_NAMESPACE_TABLE, XML_TABLE_CELL, sal_True, sal_True);
+        SvXMLElementExport aElemC(*this, sElemCell, sal_True, sal_True);
     }
 }
 
 void ScXMLExport::WriteRowStartTag(const sal_Int32 nRow, const sal_Int32 nIndex,
     const sal_Int8 nFlag, const sal_Int32 nEqualRows)
 {
-    AddAttribute(XML_NAMESPACE_TABLE, XML_STYLE_NAME, *pRowStyles->GetStyleNameByIndex(nIndex));
+    AddAttribute(sAttrStyleName, *pRowStyles->GetStyleNameByIndex(nIndex));
     if (nFlag)
         if (nFlag & CR_HIDDEN)
         {
@@ -1083,7 +1098,7 @@ void ScXMLExport::WriteRowStartTag(const sal_Int32 nRow, const sal_Int32 nIndex,
         AddAttribute(XML_NAMESPACE_TABLE, XML_DEFAULT_CELL_STYLE_NAME,
             *pCellStyles->GetStyleNameByIndex(nCellStyleIndex,
                 (*pDefaults->GetRowDefaults())[nRow].bIsAutoStyle));
-    StartElement( XML_NAMESPACE_TABLE, XML_TABLE_ROW, sal_True);
+    StartElement( sElemRow, sal_True);
 }
 
 void ScXMLExport::OpenHeaderRows()
@@ -1200,7 +1215,7 @@ void ScXMLExport::CloseRow(const sal_Int32 nRow)
 {
     if (nOpenRow > -1)
     {
-        EndElement(XML_NAMESPACE_TABLE, XML_TABLE_ROW, sal_True);
+        EndElement(sElemRow, sal_True);
         if (bHasRowHeader && nRow == aRowHeaderRange.EndRow)
         {
             CloseHeaderRows();
@@ -1430,8 +1445,8 @@ void ScXMLExport::_ExportContent()
                         {
                             nCurrentTable = nTable;
                             rtl::OUString sOUTableName = xName->getName();
-                            AddAttribute(XML_NAMESPACE_TABLE, XML_NAME, sOUTableName);
-                            AddAttribute(XML_NAMESPACE_TABLE, XML_STYLE_NAME, aTableStyles[nTable]);
+                            AddAttribute(sAttrName, sOUTableName);
+                            AddAttribute(sAttrStyleName, aTableStyles[nTable]);
                             uno::Reference xProtectable (xTable, uno::UNO_QUERY);
                             if (xProtectable.is())
                                 if (xProtectable->isProtected())
@@ -1446,7 +1461,7 @@ void ScXMLExport::_ExportContent()
                             rtl::OUString sPrintRanges( GetPrintRanges() );
                             if( sPrintRanges.getLength() )
                                 AddAttribute( XML_NAMESPACE_TABLE, XML_PRINT_RANGES, sPrintRanges );
-                            SvXMLElementExport aElemT(*this, XML_NAMESPACE_TABLE, XML_TABLE, sal_True, sal_True);
+                            SvXMLElementExport aElemT(*this, sElemTab, sal_True, sal_True);
                             CheckAttrList();
                             WriteTableSource();
                             WriteScenario();
@@ -2242,7 +2257,7 @@ OUString ScXMLExport::GetPrintRanges()
 void ScXMLExport::WriteCell (ScMyCell& aCell)
 {
     if (aCell.nStyleIndex != -1)
-        AddAttribute(XML_NAMESPACE_TABLE, XML_STYLE_NAME, *pCellStyles->GetStyleNameByIndex(aCell.nStyleIndex, aCell.bIsAutoStyle));
+        AddAttribute(sAttrStyleName, *pCellStyles->GetStyleNameByIndex(aCell.nStyleIndex, aCell.bIsAutoStyle));
     if (aCell.nValidationIndex > -1)
         AddAttribute(XML_NAMESPACE_TABLE, XML_CONTENT_VALIDATION_NAME, pValidationsContainer->GetValidationName(aCell.nValidationIndex));
     sal_Bool bIsMatrix(aCell.bIsMatrixBase || aCell.bIsMatrixCovered);
@@ -2274,7 +2289,7 @@ void ScXMLExport::WriteCell (ScMyCell& aCell)
                 aCell.bHasDoubleValue = sal_True;
             }
             GetNumberFormatAttributesExportHelper()->SetNumberFormatAttributes(
-                aCell.nNumberFormat, aCell.fValue, XML_NAMESPACE_TABLE);
+                aCell.nNumberFormat, aCell.fValue);
         }
         break;
     case table::CellContentType_TEXT :
@@ -2285,7 +2300,7 @@ void ScXMLExport::WriteCell (ScMyCell& aCell)
                 if (sFormula[0] == '\'')
                     sFormula = sFormula.copy(1);
                 GetNumberFormatAttributesExportHelper()->SetNumberFormatAttributes(
-                    sFormula, aCell.sStringValue, XML_NAMESPACE_TABLE, sal_True, sal_False);
+                    sFormula, aCell.sStringValue, sal_True, sal_False);
             }
         }
         break;
@@ -2304,11 +2319,11 @@ void ScXMLExport::WriteCell (ScMyCell& aCell)
                     pFormulaCell->GetEnglishFormula(sFormula, sal_True);
                     rtl::OUString sOUFormula(sFormula.makeStringAndClear());
                     if (!bIsMatrix)
-                        AddAttribute(XML_NAMESPACE_TABLE, XML_FORMULA, sOUFormula);
+                        AddAttribute(sAttrFormula, sOUFormula);
                     else
                     {
                         rtl::OUString sMatrixFormula = sOUFormula.copy(1, sOUFormula.getLength() - 2);
-                        AddAttribute(XML_NAMESPACE_TABLE, XML_FORMULA, sMatrixFormula);
+                        AddAttribute(sAttrFormula, sMatrixFormula);
                     }
                 }
                 if (pFormulaCell->IsValue())
@@ -2321,28 +2336,29 @@ void ScXMLExport::WriteCell (ScMyCell& aCell)
                         if (pDoc)
                             GetNumberFormatAttributesExportHelper()->SetNumberFormatAttributes(
                                 pFormulaCell->GetStandardFormat(*pDoc->GetFormatTable(), 0),
-                                aCell.xCell->getValue(), XML_NAMESPACE_TABLE);
+                                aCell.xCell->getValue());
                     }
                     else
                         GetNumberFormatAttributesExportHelper()->SetNumberFormatAttributes(
-                            aCell.nNumberFormat, aCell.xCell->getValue(), XML_NAMESPACE_TABLE);
+                            aCell.nNumberFormat, aCell.xCell->getValue());
                 }
                 else
                 {
                     if (GetCellText(aCell))
                         if (aCell.sStringValue.getLength())
-                            AddAttribute(XML_NAMESPACE_TABLE, XML_STRING_VALUE, aCell.sStringValue);
+                            AddAttribute(sAttrStringValue, aCell.sStringValue);
                 }
             }
         }
         break;
     }
-    XMLTokenEnum nCellType;
+    rtl::OUString* pCellString = &sElemCell;
     if (aCell.bIsCovered)
-        nCellType = XML_COVERED_TABLE_CELL;
+    {
+        pCellString = &sElemCoveredCell;
+    }
     else
     {
-        nCellType = XML_TABLE_CELL;
         if (aCell.bIsMergedBase)
         {
             sal_Int32 nColumns = aCell.aMergeRange.EndColumn - aCell.aMergeRange.StartColumn + 1;
@@ -2355,7 +2371,7 @@ void ScXMLExport::WriteCell (ScMyCell& aCell)
             AddAttribute(XML_NAMESPACE_TABLE, XML_NUMBER_ROWS_SPANNED, sRows.makeStringAndClear());
         }
     }
-    SvXMLElementExport aElemC(*this, XML_NAMESPACE_TABLE, nCellType, sal_True, sal_True);
+    SvXMLElementExport aElemC(*this, *pCellString, sal_True, sal_True);
     CheckAttrList();
     WriteAreaLink(aCell);
     WriteAnnotation(aCell);
@@ -2374,7 +2390,7 @@ void ScXMLExport::WriteCell (ScMyCell& aCell)
         }
         else
         {
-            SvXMLElementExport aElemC(*this, XML_NAMESPACE_TEXT, XML_P, sal_True, sal_False);
+            SvXMLElementExport aElemC(*this, sElemP, sal_True, sal_False);
             sal_Bool bPrevCharWasSpace(sal_True);
               if (GetCellText(aCell))
                 GetTextParagraphExport()->exportText(aCell.sStringValue, bPrevCharWasSpace);
@@ -2585,7 +2601,7 @@ void ScXMLExport::WriteAnnotation(const ScMyCell& rMyCell)
         {
             if (sOUText2[i] == '\n')
             {
-                SvXMLElementExport aElemP(*this, XML_NAMESPACE_TEXT, XML_P, sal_True, sal_False);
+                SvXMLElementExport aElemP(*this, sElemP, sal_True, sal_False);
                 GetTextParagraphExport()->exportText(sTemp.makeStringAndClear(), bPrevCharWasSpace);
             }
             else
@@ -2594,7 +2610,7 @@ void ScXMLExport::WriteAnnotation(const ScMyCell& rMyCell)
         }
         if (sTemp.getLength())
         {
-            SvXMLElementExport aElemP(*this, XML_NAMESPACE_TEXT, XML_P, sal_True, sal_False);
+            SvXMLElementExport aElemP(*this, sElemP, sal_True, sal_False);
             GetTextParagraphExport()->exportText(sTemp.makeStringAndClear(), bPrevCharWasSpace);
         }
         CheckAttrList();
@@ -2651,7 +2667,7 @@ void ScXMLExport::SetRepeatAttribute (const sal_Int32 nEqualCellCount)
     {
         sal_Int32 nTemp = nEqualCellCount + 1;
         OUString sOUEqualCellCount = OUString::valueOf(nTemp);
-        AddAttribute(XML_NAMESPACE_TABLE, XML_NUMBER_COLUMNS_REPEATED, sOUEqualCellCount);
+        AddAttribute(sAttrColumnsRepeated, sOUEqualCellCount);
         GetProgressBarHelper()->Increment(nEqualCellCount);
     }
 }
@@ -2831,7 +2847,7 @@ void ScXMLExport::WriteCalculationSettings(const uno::Reference >= aNullDate;
         if (bCalcAsShown || bIgnoreCase || !bLookUpLabels || !bMatchWholeCell || !bUseRegularExpressions ||
-            bIsIterationEnabled || nIterationCount != 100 || !SolarMath::ApproxEqual(fIterationEpsilon, 0.001) ||
+            bIsIterationEnabled || nIterationCount != 100 || !::rtl::math::approxEqual(fIterationEpsilon, 0.001) ||
             aNullDate.Day != 30 || aNullDate.Month != 12 || aNullDate.Year != 1899 || nYear2000 != 1930)
         {
             if (bIgnoreCase)
@@ -2859,7 +2875,7 @@ void ScXMLExport::WriteCalculationSettings(const uno::Reference getName();
-                                AddAttribute(XML_NAMESPACE_TABLE, XML_NAME, sOUName);
+                                AddAttribute(sAttrName, sOUName);
 
                                 OUString sOUBaseCellAddress;
                                 ScXMLConverter::GetStringFromAddress( sOUBaseCellAddress,
@@ -3286,10 +3302,7 @@ void ScXMLExport::CreateSharedData(const sal_Int32 nTableCount)
 XMLNumberFormatAttributesExportHelper* ScXMLExport::GetNumberFormatAttributesExportHelper()
 {
     if (!pNumberFormatAttributesExportHelper)
-    {
-        pNumberFormatAttributesExportHelper = new XMLNumberFormatAttributesExportHelper(GetNumberFormatsSupplier());
-        pNumberFormatAttributesExportHelper->SetExport(this);
-    }
+        pNumberFormatAttributesExportHelper = new XMLNumberFormatAttributesExportHelper(GetNumberFormatsSupplier(), *this, XML_NAMESPACE_TABLE);
     return pNumberFormatAttributesExportHelper;
 }
 
diff --git a/sc/source/filter/xml/xmlexprt.hxx b/sc/source/filter/xml/xmlexprt.hxx
index 59b0c16378fc..aa3a1ffcbe60 100644
--- a/sc/source/filter/xml/xmlexprt.hxx
+++ b/sc/source/filter/xml/xmlexprt.hxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: xmlexprt.hxx,v $
  *
- *  $Revision: 1.72 $
+ *  $Revision: 1.73 $
  *
- *  last change: $Author: sab $ $Date: 2001-10-19 09:17:59 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:39 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -139,6 +139,17 @@ class ScXMLExport : public SvXMLExport
     ScChangeTrackingExportHelper*   pChangeTrackingExportHelper;
     const rtl::OUString         sLayerID;
     const rtl::OUString         sCaptionShape;
+    rtl::OUString               sAttrName;
+    rtl::OUString               sAttrStyleName;
+    rtl::OUString               sAttrColumnsRepeated;
+    rtl::OUString               sAttrFormula;
+    rtl::OUString               sAttrStringValue;
+    rtl::OUString               sElemCell;
+    rtl::OUString               sElemCoveredCell;
+    rtl::OUString               sElemCol;
+    rtl::OUString               sElemRow;
+    rtl::OUString               sElemTab;
+    rtl::OUString               sElemP;
     sal_Int32                   nOpenRow;
     sal_uInt16                  nCurrentTable;
     sal_Bool                    bHasRowHeader : 1;
diff --git a/sc/source/filter/xml/xmlwrap.cxx b/sc/source/filter/xml/xmlwrap.cxx
index e97b614261b5..077944507e3c 100644
--- a/sc/source/filter/xml/xmlwrap.cxx
+++ b/sc/source/filter/xml/xmlwrap.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: xmlwrap.cxx,v $
  *
- *  $Revision: 1.48 $
+ *  $Revision: 1.49 $
  *
- *  last change: $Author: sab $ $Date: 2002-09-26 12:08:42 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:39 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -118,6 +118,9 @@
 #ifndef _COM_SUN_STAR_LANG_DISPOSEDEXCEPTION_HPP_
 #include 
 #endif
+#ifndef _COM_SUN_STAR_PACKAGES_ZIP_ZIPIOEXCEPTION_HPP_
+#include 
+#endif
 
 #ifndef _XMLEOHLP_HXX
 #include 
@@ -358,6 +361,15 @@ sal_uInt32 ScXMLImportWrapper::ImportFromComponent(uno::ReferenceAddAccessibilityObject(*this);
 }
 
 ScAccessibleCell::~ScAccessibleCell()
@@ -174,6 +176,13 @@ void SAL_CALL ScAccessibleCell::disposing()
     // #100593# dispose in AccessibleStaticTextBase
     Dispose();
 
+    if (mpViewShell)
+    {
+        mpViewShell->RemoveAccessibilityObject(*this);
+        mpViewShell = NULL;
+    }
+    mpAccDoc = NULL;
+
     ScAccessibleCellBase::disposing();
 }
 
diff --git a/sc/source/ui/Accessibility/AccessibleContextBase.cxx b/sc/source/ui/Accessibility/AccessibleContextBase.cxx
index 2ff503aabfa4..510d0b678510 100644
--- a/sc/source/ui/Accessibility/AccessibleContextBase.cxx
+++ b/sc/source/ui/Accessibility/AccessibleContextBase.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: AccessibleContextBase.cxx,v $
  *
- *  $Revision: 1.26 $
+ *  $Revision: 1.27 $
  *
- *  last change: $Author: sab $ $Date: 2002-12-04 15:39:54 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:42 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -111,6 +111,9 @@
 #ifndef _TOOLS_COLOR_HXX
 #include 
 #endif
+#ifndef COMPHELPER_ACCESSIBLE_EVENT_NOTIFIER
+#include 
+#endif
 
 using namespace ::rtl;
 using namespace ::com::sun::star;
@@ -127,7 +130,7 @@ ScAccessibleContextBase::ScAccessibleContextBase(
     ScAccessibleContextBaseWeakImpl(m_aMutex),
     maRole(aRole),
     mxParent(rxParent),
-    mpEventListeners(NULL)
+    mnClientId(0)
 {
     DBG_CTOR(ScAccessibleContextBase, NULL);
 }
@@ -169,15 +172,11 @@ void SAL_CALL ScAccessibleContextBase::disposing()
     // hold reference to make sure that the destructor is not called
     uno::Reference< XAccessibleContext > xOwnContext(this);
 
-    if (mpEventListeners)
+    if ( mnClientId )
     {
-        lang::EventObject aEvent;
-        aEvent.Source = static_cast(this);
-        if (mpEventListeners)
-        {
-            mpEventListeners->disposeAndClear(aEvent);
-            DELETEZ( mpEventListeners );
-        }
+        sal_Int32 nTemClientId(mnClientId);
+        mnClientId =  0;
+        comphelper::AccessibleEventNotifier::revokeClientNotifyDisposing( nTemClientId, *this );
     }
 
     if (mxParent.is())
@@ -496,9 +495,9 @@ void SAL_CALL
         IsObjectValid();
         if (!IsDefunc())
         {
-            if (!mpEventListeners)
-                mpEventListeners = new cppu::OInterfaceContainerHelper(m_aMutex);
-            mpEventListeners->addInterface(xListener);
+            if (!mnClientId)
+                mnClientId = comphelper::AccessibleEventNotifier::registerClient( );
+            comphelper::AccessibleEventNotifier::addEventListener( mnClientId, xListener );
         }
     }
 }
@@ -511,8 +510,19 @@ void SAL_CALL
     if (xListener.is())
     {
         ScUnoGuard aGuard;
-        if (!IsDefunc() && mpEventListeners)
-            mpEventListeners->removeInterface(xListener);
+        if (!IsDefunc() && mnClientId)
+        {
+            sal_Int32 nListenerCount = comphelper::AccessibleEventNotifier::removeEventListener( mnClientId, xListener );
+            if ( !nListenerCount )
+            {
+                // no listeners anymore
+                // -> revoke ourself. This may lead to the notifier thread dying (if we were the last client),
+                // and at least to us not firing any events anymore, in case somebody calls
+                // NotifyAccessibleEvent, again
+                comphelper::AccessibleEventNotifier::revokeClient( mnClientId );
+                mnClientId = 0;
+            }
+        }
     }
 }
 
@@ -616,38 +626,8 @@ uno::Sequence SAL_CALL
 
 void ScAccessibleContextBase::CommitChange(const AccessibleEventObject& rEvent) const
 {
-    if (mpEventListeners)
-    {
-        //  Call all listeners.
-        uno::Sequence< uno::Reference< uno::XInterface > > aListeners = mpEventListeners->getElements();
-        sal_uInt32 nLength(aListeners.getLength());
-        if (nLength)
-        {
-            const uno::Reference< uno::XInterface >* pInterfaces = aListeners.getConstArray();
-            if (pInterfaces)
-            {
-                sal_uInt32 i(0);
-                while (i < nLength)
-                {
-                    try
-                    {
-                        while(i < nLength)
-                        {
-                            static_cast< XAccessibleEventListener* >(pInterfaces->get())->notifyEvent(rEvent);
-                            ++pInterfaces;
-                            ++i;
-                        }
-                    }
-                    catch(uno::RuntimeException&)
-                    {
-//                      DBG_ERROR("a object is gone without to remove from Broadcaster");
-                        ++pInterfaces;
-                        ++i;
-                    }
-                }
-            }
-        }
-    }
+    if (mnClientId)
+        comphelper::AccessibleEventNotifier::addEvent( mnClientId, rEvent );
 }
 
 void ScAccessibleContextBase::ChangeName()
diff --git a/sc/source/ui/Accessibility/AccessibleCsvControl.cxx b/sc/source/ui/Accessibility/AccessibleCsvControl.cxx
index f4b12ebc39e0..f2fdda6775c2 100644
--- a/sc/source/ui/Accessibility/AccessibleCsvControl.cxx
+++ b/sc/source/ui/Accessibility/AccessibleCsvControl.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: AccessibleCsvControl.cxx,v $
  *
- *  $Revision: 1.9 $
+ *  $Revision: 1.10 $
  *
- *  last change: $Author: sab $ $Date: 2002-11-15 09:34:12 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:42 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -146,8 +146,8 @@
 #ifndef SC_SCMOD_HXX
 #include "scmod.hxx"
 #endif
-#ifndef _SVX_COLORCFG_HXX
-#include 
+#ifndef INCLUDED_SVTOOLS_COLORCFG_HXX
+#include 
 #endif
 
 using ::rtl::OUString;
@@ -615,8 +615,8 @@ sal_Int32 SAL_CALL ScAccessibleCsvRuler::getIndexAtPoint( const AwtPoint& rPoint
     ScUnoGuard aGuard;
     ensureAlive();
     ScCsvRuler& rRuler = implGetRuler();
-    Point aPos( implGetRelPos( VCLPoint( rPoint ) ) );
-    return ::std::min( ::std::max( rRuler.GetPosFromX( aPos.X() ), 0L ), rRuler.GetPosCount() );
+    // #107054# use object's coordinate system
+    return ::std::min( ::std::max( rRuler.GetPosFromX( rPoint.X ), 0L ), rRuler.GetPosCount() );
 }
 
 OUString SAL_CALL ScAccessibleCsvRuler::getSelectedText() throw( RuntimeException )
@@ -1002,9 +1002,11 @@ Reference< XAccessible > SAL_CALL ScAccessibleCsvGrid::getAccessibleAt( const Aw
         ensureAlive();
 
         const ScCsvGrid& rGrid = implGetGrid();
-        // #102679#; use >= instead of >, because the offset is the size and not the point
-        sal_Int32 nColumn = (rPoint.X >= rGrid.GetOffsetX()) ? lcl_GetApiColumn( rGrid.GetColumnFromX( rPoint.X ) ) : 0;
-        sal_Int32 nRow = (rPoint.Y >= rGrid.GetOffsetY()) ? (rGrid.GetLineFromY( rPoint.Y ) - rGrid.GetFirstVisLine() + 1) : 0;
+        // #102679#; use <= instead of <, because the offset is the size and not the point
+        sal_Int32 nColumn = ((rGrid.GetFirstX() <= rPoint.X) && (rPoint.X <= rGrid.GetLastX())) ?
+            lcl_GetApiColumn( rGrid.GetColumnFromX( rPoint.X ) ) : 0;
+        sal_Int32 nRow = (rPoint.Y >= rGrid.GetHdrHeight()) ?
+            (rGrid.GetLineFromY( rPoint.Y ) - rGrid.GetFirstVisLine() + 1) : 0;
         xRet = implCreateCellObj( nRow, nColumn );
     }
     return xRet;
@@ -1023,7 +1025,7 @@ throw (RuntimeException)
 {
     ScUnoGuard aGuard;
     ensureAlive();
-    return SC_MOD()->GetColorConfig().GetColorValue( ::svx::DOCCOLOR ).nColor;
+    return SC_MOD()->GetColorConfig().GetColorValue( ::svtools::DOCCOLOR ).nColor;
 }
 
 // XAccessibleContext ---------------------------------------------------------
@@ -1571,7 +1573,7 @@ throw (RuntimeException)
 {
     ScUnoGuard aGuard;
     ensureAlive();
-    return SC_MOD()->GetColorConfig().GetColorValue( ::svx::DOCCOLOR ).nColor;
+    return SC_MOD()->GetColorConfig().GetColorValue( ::svtools::DOCCOLOR ).nColor;
 }
 
 // XAccessibleContext -----------------------------------------------------
@@ -1707,7 +1709,7 @@ Point ScAccessibleCsvCell::implGetRealPos() const
 {
     ScCsvGrid& rGrid = implGetGrid();
     return Point(
-        (mnColumn == CSV_COLUMN_HEADER) ? 0 : rGrid.GetColumnX( mnColumn ),
+        (mnColumn == CSV_COLUMN_HEADER) ? rGrid.GetHdrX() : rGrid.GetColumnX( mnColumn ),
         (mnLine == CSV_LINE_HEADER) ? 0 : rGrid.GetY( mnLine ) );
 }
 
@@ -1721,8 +1723,8 @@ Size ScAccessibleCsvCell::implGetRealSize() const
 {
     ScCsvGrid& rGrid = implGetGrid();
     return Size(
-        (mnColumn == CSV_COLUMN_HEADER) ? rGrid.GetOffsetX() : implCalcPixelWidth(rGrid.GetColumnWidth( mnColumn )),
-        (mnLine == CSV_LINE_HEADER) ? rGrid.GetOffsetY() : rGrid.GetLineHeight() );
+        (mnColumn == CSV_COLUMN_HEADER) ? rGrid.GetHdrWidth() : implCalcPixelWidth( rGrid.GetColumnWidth( mnColumn ) ),
+        (mnLine == CSV_LINE_HEADER) ? rGrid.GetHdrHeight() : rGrid.GetLineHeight() );
 }
 
 Rectangle ScAccessibleCsvCell::implGetBoundingBox() const
@@ -1730,9 +1732,12 @@ Rectangle ScAccessibleCsvCell::implGetBoundingBox() const
     ScCsvGrid& rGrid = implGetGrid();
     Rectangle aClipRect( Point( 0, 0 ), rGrid.GetSizePixel() );
     if( mnColumn != CSV_COLUMN_HEADER )
-        aClipRect.Left() = rGrid.GetOffsetX();
+    {
+        aClipRect.Left() = rGrid.GetFirstX();
+        aClipRect.Right() = rGrid.GetLastX();
+    }
     if( mnLine != CSV_LINE_HEADER )
-         aClipRect.Top() = rGrid.GetOffsetY();
+         aClipRect.Top() = rGrid.GetHdrHeight();
 
     Rectangle aRect( implGetRealPos(), implGetRealSize() );
     aRect.Intersection( aClipRect );
diff --git a/sc/source/ui/Accessibility/AccessibleDocument.cxx b/sc/source/ui/Accessibility/AccessibleDocument.cxx
index f3f2f21d8dcb..1c5ca2093d5a 100644
--- a/sc/source/ui/Accessibility/AccessibleDocument.cxx
+++ b/sc/source/ui/Accessibility/AccessibleDocument.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: AccessibleDocument.cxx,v $
  *
- *  $Revision: 1.56 $
+ *  $Revision: 1.57 $
  *
- *  last change: $Author: sab $ $Date: 2002-10-01 15:18:06 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:42 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -178,13 +178,14 @@ using namespace ::drafts::com::sun::star::accessibility;
 
 struct ScAccessibleShapeData
 {
-    ScAccessibleShapeData() : pAccShape(NULL), pRelationCell(NULL), bSelected(sal_False) {}
+    ScAccessibleShapeData() : pAccShape(NULL), pRelationCell(NULL), bSelected(sal_False), bSelectable(sal_True) {}
     ~ScAccessibleShapeData();
     mutable accessibility::AccessibleShape* pAccShape;
     mutable ScAddress*          pRelationCell; // if it is NULL this shape is anchored on the table
 //    SdrObject*                  pShape;
     com::sun::star::uno::Reference< com::sun::star::drawing::XShape > xShape;
     mutable sal_Bool            bSelected;
+    sal_Bool                    bSelectable;
 };
 
 ScAccessibleShapeData::~ScAccessibleShapeData()
@@ -298,7 +299,7 @@ struct SelectShape
     SelectShape(uno::Reference& xTemp) : xShapes(xTemp) {}
     void operator() (const ScAccessibleShapeData* pAccShapeData) const
     {
-        if (pAccShapeData)
+        if (pAccShapeData && pAccShapeData->bSelectable)
         {
             pAccShapeData->bSelected = sal_True;
             if (pAccShapeData->pAccShape)
@@ -591,10 +592,10 @@ uno::Reference< XAccessible > ScChildrenShapes::Get(const ScAccessibleShapeData*
             pData->pAccShape->acquire();
             pData->pAccShape->Init();
             if (pData->bSelected)
-            {
                 pData->pAccShape->SetState(AccessibleStateType::SELECTED);
-                pData->pAccShape->SetRelationSet(GetRelationSet(pData));
-            }
+            if (!pData->bSelectable)
+                pData->pAccShape->ResetState(AccessibleStateType::SELECTABLE);
+            pData->pAccShape->SetRelationSet(GetRelationSet(pData));
         }
     }
     return pData->pAccShape;
@@ -747,7 +748,7 @@ void ScChildrenShapes::Select(sal_Int32 nIndex)
         return;
 
     uno::Reference xShape;
-    if (!IsSelected(nIndex, xShape))
+    if (!IsSelected(nIndex, xShape) && maZOrderedShapes[nIndex]->bSelectable)
     {
         uno::Reference xShapes;
         xSelectionSupplier->getSelection() >>= xShapes;
@@ -1192,6 +1193,21 @@ void ScChildrenShapes::AddShape(const uno::Reference& xShape, s
         SortedShapes::iterator aNewItr = maZOrderedShapes.insert(aFindItr, pShape);
         SetAnchor(xShape, pShape);
 
+        uno::Reference< beans::XPropertySet > xShapeProp(xShape, uno::UNO_QUERY);
+        if (xShapeProp.is())
+        {
+            uno::Any aPropAny = xShapeProp->getPropertyValue(rtl::OUString(RTL_CONSTASCII_USTRINGPARAM(  "LayerID" )));
+            sal_Int16 nLayerID;
+            if( aPropAny >>= nLayerID )
+            {
+                if( nLayerID == SC_LAYER_INTERN )
+                    pShape->bSelectable = sal_False;
+                else
+                    pShape->bSelectable = sal_True;
+            }
+        }
+
+
         if (!xSelectionSupplier.is())
             throw uno::RuntimeException();
 
diff --git a/sc/source/ui/Accessibility/AccessibleDocumentPagePreview.cxx b/sc/source/ui/Accessibility/AccessibleDocumentPagePreview.cxx
index 1b2853daec04..4ea2c1fbf3ef 100644
--- a/sc/source/ui/Accessibility/AccessibleDocumentPagePreview.cxx
+++ b/sc/source/ui/Accessibility/AccessibleDocumentPagePreview.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: AccessibleDocumentPagePreview.cxx,v $
  *
- *  $Revision: 1.25 $
+ *  $Revision: 1.26 $
  *
- *  last change: $Author: sab $ $Date: 2002-11-21 16:54:21 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:42 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -99,6 +99,18 @@
 #ifndef SC_SC_HRC
 #include "sc.hrc"
 #endif
+#ifndef _SC_DRAWMODELBROADCASTER_HXX
+#include "DrawModelBroadcaster.hxx"
+#endif
+#ifndef SC_DOCSHELL_HXX
+#include "docsh.hxx"
+#endif
+#ifndef SC_DRAWVIEW_HXX
+#include "drawview.hxx"
+#endif
+#ifndef SC_PREVIEW_HXX
+#include "preview.hxx"
+#endif
 
 #ifndef _DRAFTS_COM_SUN_STAR_ACCESSIBILITY_ACCESSIBLEEVENTID_HPP_
 #include 
@@ -600,6 +612,121 @@ inline ScDocument* ScNotesChilds::GetDocument() const
     return pDoc;
 }
 
+class ScIAccessibleViewForwarder : public accessibility::IAccessibleViewForwarder
+{
+public:
+    ScIAccessibleViewForwarder();
+    ScIAccessibleViewForwarder(ScPreviewShell* pViewShell,
+                                ScAccessibleDocumentPagePreview* pAccDoc,
+                                const MapMode& aMapMode);
+    ~ScIAccessibleViewForwarder();
+
+    ///=====  IAccessibleViewForwarder  ========================================
+
+    virtual sal_Bool IsValid (void) const;
+    virtual Rectangle GetVisibleArea() const;
+    virtual Point LogicToPixel (const Point& rPoint) const;
+    virtual Size LogicToPixel (const Size& rSize) const;
+    virtual Point PixelToLogic (const Point& rPoint) const;
+    virtual Size PixelToLogic (const Size& rSize) const;
+
+private:
+    ScPreviewShell*                     mpViewShell;
+    ScAccessibleDocumentPagePreview*    mpAccDoc;
+    MapMode                             maMapMode;
+    sal_Bool                            mbValid;
+};
+
+ScIAccessibleViewForwarder::ScIAccessibleViewForwarder()
+    : mbValid(sal_False)
+{
+}
+
+ScIAccessibleViewForwarder::ScIAccessibleViewForwarder(ScPreviewShell* pViewShell,
+                                ScAccessibleDocumentPagePreview* pAccDoc,
+                                const MapMode& aMapMode)
+    : mpViewShell(pViewShell),
+    mpAccDoc(pAccDoc),
+    maMapMode(aMapMode),
+    mbValid(sal_True)
+{
+}
+
+ScIAccessibleViewForwarder::~ScIAccessibleViewForwarder()
+{
+}
+
+///=====  IAccessibleViewForwarder  ========================================
+
+sal_Bool ScIAccessibleViewForwarder::IsValid (void) const
+{
+    ScUnoGuard aGuard;
+    return mbValid;
+}
+
+Rectangle ScIAccessibleViewForwarder::GetVisibleArea() const
+{
+    ScUnoGuard aGuard;
+    Rectangle aVisRect;
+    Window* pWin = mpViewShell->GetWindow();
+    if (pWin)
+    {
+        aVisRect.SetSize(pWin->GetOutputSizePixel());
+        aVisRect.SetPos(Point(0, 0));
+
+        aVisRect = pWin->PixelToLogic(aVisRect, maMapMode);
+    }
+
+    return aVisRect;
+}
+
+Point ScIAccessibleViewForwarder::LogicToPixel (const Point& rPoint) const
+{
+    ScUnoGuard aGuard;
+    Point aPoint;
+    Window* pWin = mpViewShell->GetWindow();
+    if (pWin && mpAccDoc)
+    {
+        Rectangle aRect(mpAccDoc->GetBoundingBoxOnScreen());
+        aPoint = pWin->LogicToPixel(rPoint, maMapMode) + aRect.TopLeft();
+    }
+
+    return aPoint;
+}
+
+Size ScIAccessibleViewForwarder::LogicToPixel (const Size& rSize) const
+{
+    ScUnoGuard aGuard;
+    Size aSize;
+    Window* pWin = mpViewShell->GetWindow();
+    if (pWin)
+        aSize = pWin->LogicToPixel(rSize, maMapMode);
+    return aSize;
+}
+
+Point ScIAccessibleViewForwarder::PixelToLogic (const Point& rPoint) const
+{
+    ScUnoGuard aGuard;
+    Point aPoint;
+    Window* pWin = mpViewShell->GetWindow();
+    if (pWin && mpAccDoc)
+    {
+        Rectangle aRect(mpAccDoc->GetBoundingBoxOnScreen());
+        aPoint = pWin->PixelToLogic(rPoint - aRect.TopLeft(), maMapMode);
+    }
+    return aPoint;
+}
+
+Size ScIAccessibleViewForwarder::PixelToLogic (const Size& rSize) const
+{
+    ScUnoGuard aGuard;
+    Size aSize;
+    Window* pWin = mpViewShell->GetWindow();
+    if (pWin)
+        aSize = pWin->PixelToLogic(rSize, maMapMode);
+    return aSize;
+}
+
 struct ScShapeChild
 {
     ScShapeChild() : mpAccShape(NULL) {}
@@ -607,12 +734,14 @@ struct ScShapeChild
     ~ScShapeChild();
     mutable accessibility::AccessibleShape* mpAccShape;
     com::sun::star::uno::Reference< com::sun::star::drawing::XShape > mxShape;
+    sal_Int32 mnRangeId;
 };
 
 ScShapeChild::ScShapeChild(const ScShapeChild& rOld)
 :
 mpAccShape(rOld.mpAccShape),
-mxShape(rOld.mxShape)
+mxShape(rOld.mxShape),
+mnRangeId(rOld.mnRangeId)
 {
     if (mpAccShape)
         mpAccShape->acquire();
@@ -644,12 +773,12 @@ struct ScShapeRange
     ScShapeChildVec maControls;
     Rectangle       maPixelRect;
     MapMode         maMapMode;
+    ScIAccessibleViewForwarder maViewForwarder;
 };
 
 typedef std::vector ScShapeRangeVec;
 
 class ScShapeChilds : public SfxListener,
-        public accessibility::IAccessibleViewForwarder,
         public accessibility::IAccessibleParent
 {
 public:
@@ -660,15 +789,6 @@ public:
 
     virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint );
 
-    ///=====  IAccessibleViewForwarder  ========================================
-
-    virtual sal_Bool IsValid (void) const;
-    virtual Rectangle GetVisibleArea() const;
-    virtual Point LogicToPixel (const Point& rPoint) const;
-    virtual Size LogicToPixel (const Size& rSize) const;
-    virtual Point PixelToLogic (const Point& rPoint) const;
-    virtual Size PixelToLogic (const Size& rSize) const;
-
     ///=====  IAccessibleParent  ==============================================
 
     virtual sal_Bool ReplaceChild (
@@ -688,7 +808,8 @@ public:
     uno::Reference GetForeShape(sal_Int32 nIndex) const;
     sal_Int32 GetControlCount() const;
     uno::Reference GetControl(sal_Int32 nIndex) const;
-    uno::Reference GetAt(const awt::Point& rPoint) const;
+    uno::Reference GetForegroundShapeAt(const awt::Point& rPoint) const; // inclusive controls
+    uno::Reference GetBackgroundShapeAt(const awt::Point& rPoint) const;
 
     void DataChanged();
     void VisAreaChanged() const;
@@ -698,7 +819,6 @@ private:
     ScAccessibleDocumentPagePreview* mpAccDoc;
     ScPreviewShell* mpViewShell;
     ScShapeRangeVec maShapeRanges;
-    mutable accessibility::AccessibleShapeTreeInfo maShapeTreeInfo;
 
     void FindChanged(ScShapeChildVec& aOld, ScShapeChildVec& aNew) const;
     void FindChanged(ScShapeRange& aOld, ScShapeRange& aNew) const;
@@ -861,13 +981,13 @@ void ScShapeChilds::DataChanged()
 
 struct ScVisAreaChanged
 {
-    const ScShapeChilds* mpAccDoc;
-    ScVisAreaChanged(const ScShapeChilds* pAccDoc) : mpAccDoc(pAccDoc) {}
+    const ScIAccessibleViewForwarder* mpViewForwarder;
+    ScVisAreaChanged(const ScIAccessibleViewForwarder* pViewForwarder) : mpViewForwarder(pViewForwarder) {}
     void operator() (const ScShapeChild& rAccShapeData) const
     {
         if (rAccShapeData.mpAccShape)
         {
-            rAccShapeData.mpAccShape->ViewForwarderChanged(accessibility::IAccessibleViewForwarderListener::VISIBLE_AREA, mpAccDoc);
+            rAccShapeData.mpAccShape->ViewForwarderChanged(accessibility::IAccessibleViewForwarderListener::VISIBLE_AREA, mpViewForwarder);
         }
     }
 };
@@ -876,9 +996,9 @@ void ScShapeChilds::VisAreaChanged() const
 {
     ScShapeRangeVec::const_iterator aEndItr = maShapeRanges.end();
     ScShapeRangeVec::const_iterator aItr = maShapeRanges.begin();
-    ScVisAreaChanged aVisAreaChanged(this);
     while (aItr != aEndItr)
     {
+        ScVisAreaChanged aVisAreaChanged(&(aItr->maViewForwarder));
         std::for_each(aItr->maBackShapes.begin(), aItr->maBackShapes.end(), aVisAreaChanged);
         std::for_each(aItr->maControls.begin(), aItr->maControls.end(), aVisAreaChanged);
         std::for_each(aItr->maForeShapes.begin(), aItr->maForeShapes.end(), aVisAreaChanged);
@@ -886,71 +1006,6 @@ void ScShapeChilds::VisAreaChanged() const
     }
 }
 
-///=====  IAccessibleViewForwarder  ========================================
-
-sal_Bool ScShapeChilds::IsValid (void) const
-{
-    ScUnoGuard aGuard;
-    return (mpViewShell != NULL);
-}
-
-Rectangle ScShapeChilds::GetVisibleArea() const
-{
-    ScUnoGuard aGuard;
-    Rectangle aVisRect;
-
-    Window* pWin = mpViewShell->GetWindow();
-    if (pWin)
-    {
-        aVisRect.SetSize(pWin->GetOutputSizePixel());
-        aVisRect.SetPos(Point(0, 0));
-
-        aVisRect = pWin->PixelToLogic(aVisRect, maShapeRanges[0].maMapMode);
-    }
-
-    return aVisRect;
-}
-
-Point ScShapeChilds::LogicToPixel (const Point& rPoint) const
-{
-    ScUnoGuard aGuard;
-    Point aPoint;
-    Window* pWin = mpViewShell->GetWindow();
-    if (pWin)
-        aPoint = pWin->LogicToPixel(rPoint, maShapeRanges[0].maMapMode);
-    return aPoint;
-}
-
-Size ScShapeChilds::LogicToPixel (const Size& rSize) const
-{
-    ScUnoGuard aGuard;
-    Size aSize;
-    Window* pWin = mpViewShell->GetWindow();
-    if (pWin)
-        aSize = pWin->LogicToPixel(rSize, maShapeRanges[0].maMapMode);
-    return aSize;
-}
-
-Point ScShapeChilds::PixelToLogic (const Point& rPoint) const
-{
-    ScUnoGuard aGuard;
-    Point aPoint;
-    Window* pWin = mpViewShell->GetWindow();
-    if (pWin)
-        aPoint = pWin->PixelToLogic(rPoint, maShapeRanges[0].maMapMode);
-    return aPoint;
-}
-
-Size ScShapeChilds::PixelToLogic (const Size& rSize) const
-{
-    ScUnoGuard aGuard;
-    Size aSize;
-    Window* pWin = mpViewShell->GetWindow();
-    if (pWin)
-        aSize = pWin->PixelToLogic(rSize, maShapeRanges[0].maMapMode);
-    return aSize;
-}
-
     ///=====  IAccessibleParent  ==============================================
 
 sal_Bool ScShapeChilds::ReplaceChild (accessibility::AccessibleShape* pCurrentChild,
@@ -1001,10 +1056,8 @@ uno::Reference ScShapeChilds::GetBackShape(sal_Int32 nIndex) const
         if(nIndex < nCount)
             xAccessible = GetAccShape(aItr->maBackShapes, nIndex);
         else
-        {
-            nIndex -= nCount;
             ++aItr;
-        }
+        nIndex -= nCount;
     }
 
     if (nIndex >= 0)
@@ -1033,10 +1086,8 @@ uno::Reference ScShapeChilds::GetForeShape(sal_Int32 nIndex) const
         if(nIndex < nCount)
             xAccessible = GetAccShape(aItr->maForeShapes, nIndex);
         else
-        {
-            nIndex -= nCount;
             ++aItr;
-        }
+        nIndex -= nCount;
     }
 
     if (nIndex >= 0)
@@ -1065,10 +1116,8 @@ uno::Reference ScShapeChilds::GetControl(sal_Int32 nIndex) const
         if(nIndex < nCount)
             xAccessible = GetAccShape(aItr->maControls, nIndex);
         else
-        {
-            nIndex -= nCount;
             ++aItr;
-        }
+        nIndex -= nCount;
     }
 
     if (nIndex >= 0)
@@ -1079,18 +1128,18 @@ uno::Reference ScShapeChilds::GetControl(sal_Int32 nIndex) const
 
 struct ScShapePointFound
 {
-    Rectangle maPoint;
-    ScShapePointFound(const awt::Point& rPoint) : maPoint(VCLPoint(rPoint), Size(0, 0)) {}
+    Point maPoint;
+    ScShapePointFound(const awt::Point& rPoint) : maPoint(VCLPoint(rPoint)) {}
     sal_Bool operator() (const ScShapeChild& rShape)
     {
         sal_Bool bResult(sal_False);
-        if (maPoint.IsInside(VCLRectangle(rShape.mpAccShape->getBounds())))
+        if ((VCLRectangle(rShape.mpAccShape->getBounds())).IsInside(maPoint))
             bResult = sal_True;
         return bResult;
     }
 };
 
-uno::Reference ScShapeChilds::GetAt(const awt::Point& rPoint) const
+uno::Reference ScShapeChilds::GetForegroundShapeAt(const awt::Point& rPoint) const //inclusive Controls
 {
     uno::Reference xAcc;
 
@@ -1107,15 +1156,25 @@ uno::Reference ScShapeChilds::GetAt(const awt::Point& rPoint) const
             if (aFindItr != aItr->maControls.end())
                 xAcc = GetAccShape(*aFindItr);
             else
-            {
-                ScShapeChildVec::const_iterator aFindItr = std::find_if(aItr->maBackShapes.begin(), aItr->maBackShapes.end(), ScShapePointFound(rPoint));
-                if (aFindItr != aItr->maBackShapes.end())
-                    xAcc = GetAccShape(*aFindItr);
-                else
-                    ++aItr;
-            }
+                ++aItr;
         }
-        if (!xAcc.is())
+    }
+
+    return xAcc;
+}
+
+uno::Reference ScShapeChilds::GetBackgroundShapeAt(const awt::Point& rPoint) const
+{
+    uno::Reference xAcc;
+
+    ScShapeRangeVec::const_iterator aItr = maShapeRanges.begin();
+    ScShapeRangeVec::const_iterator aEndItr = maShapeRanges.end();
+    while((aItr != aEndItr) && !xAcc.is())
+    {
+        ScShapeChildVec::const_iterator aFindItr = std::find_if(aItr->maBackShapes.begin(), aItr->maBackShapes.end(), ScShapePointFound(rPoint));
+        if (aFindItr != aItr->maBackShapes.end())
+            xAcc = GetAccShape(*aFindItr);
+        else
             ++aItr;
     }
 
@@ -1128,11 +1187,20 @@ accessibility::AccessibleShape* ScShapeChilds::GetAccShape(const ScShapeChild& r
     {
         accessibility::ShapeTypeHandler& rShapeHandler = accessibility::ShapeTypeHandler::Instance();
         accessibility::AccessibleShapeInfo aShapeInfo(rShape.mxShape, mpAccDoc, const_cast(this));
-        rShape.mpAccShape = rShapeHandler.CreateAccessibleObject(aShapeInfo, maShapeTreeInfo);
-        if (rShape.mpAccShape)
+
+        if (mpViewShell)
         {
-            rShape.mpAccShape->acquire();
-            rShape.mpAccShape->Init();
+            accessibility::AccessibleShapeTreeInfo aShapeTreeInfo;
+            aShapeTreeInfo.SetSdrView(mpViewShell->GetPreview()->GetDrawView());
+            aShapeTreeInfo.SetController(NULL);
+            aShapeTreeInfo.SetWindow(mpViewShell->GetWindow());
+            aShapeTreeInfo.SetViewForwarder(&(maShapeRanges[rShape.mnRangeId].maViewForwarder));
+            rShape.mpAccShape = rShapeHandler.CreateAccessibleObject(aShapeInfo, aShapeTreeInfo);
+            if (rShape.mpAccShape)
+            {
+                rShape.mpAccShape->acquire();
+                rShape.mpAccShape->Init();
+            }
         }
     }
     return rShape.mpAccShape;
@@ -1153,9 +1221,16 @@ void ScShapeChilds::FillShapes(const Rectangle& aPixelPaintRect, const MapMode&
         sal_Bool bForeAdded(sal_False);
         sal_Bool bBackAdded(sal_False);
         sal_Bool bControlAdded(sal_False);
-        Rectangle aLogicPaintRect(pWin->PixelToLogic(aPixelPaintRect, aMapMode));
-        maShapeRanges[nRangeId].maPixelRect = aPixelPaintRect;
+        Rectangle aClippedPixelPaintRect(aPixelPaintRect);
+        if (mpAccDoc)
+        {
+            Rectangle aRect2(Point(0,0), mpAccDoc->GetBoundingBoxOnScreen().GetSize());
+            aClippedPixelPaintRect = aPixelPaintRect.GetIntersection(aRect2);
+        }
+        maShapeRanges[nRangeId].maPixelRect = aClippedPixelPaintRect;
         maShapeRanges[nRangeId].maMapMode = aMapMode;
+        ScIAccessibleViewForwarder aViewForwarder(mpViewShell, mpAccDoc, aMapMode);
+        maShapeRanges[nRangeId].maViewForwarder = aViewForwarder;
         sal_uInt32 nCount(pPage->GetObjCount());
         for (sal_uInt32 i = 0; i < nCount; ++i)
         {
@@ -1165,11 +1240,12 @@ void ScShapeChilds::FillShapes(const Rectangle& aPixelPaintRect, const MapMode&
                 uno::Reference< drawing::XShape > xShape(pObj->getUnoShape(), uno::UNO_QUERY);
                 if (xShape.is())
                 {
-                    Rectangle aRect(VCLPoint(xShape->getPosition()), VCLSize(xShape->getSize()));
-                    if(!aRect.GetIntersection(aLogicPaintRect).IsEmpty())
+                    Rectangle aRect(pWin->LogicToPixel(VCLPoint(xShape->getPosition()), aMapMode), pWin->LogicToPixel(VCLSize(xShape->getSize()), aMapMode));
+                    if(!aClippedPixelPaintRect.GetIntersection(aRect).IsEmpty())
                     {
                         ScShapeChild aShape;
                         aShape.mxShape = xShape;
+                        aShape.mnRangeId = nRangeId;
                         switch (pObj->GetLayer())
                         {
                             case SC_LAYER_INTERN:
@@ -1608,11 +1684,25 @@ uno::Reference< XAccessible > SAL_CALL ScAccessibleDocumentPagePreview::getAcces
 
         if ( mpViewShell )
         {
-            const ScPreviewLocationData& rData = mpViewShell->GetLocationData();
-            ScPagePreviewCountData aCount( rData, mpViewShell->GetWindow(), GetNotesChilds(), GetShapeChilds() );
-
-            if ( rData.HasCellsInRange( Rectangle( rPoint.X, rPoint.Y, rPoint.X, rPoint.Y ) ) )
+            xAccessible = GetShapeChilds()->GetForegroundShapeAt(rPoint);
+            if (!xAccessible.is())
             {
+                const ScPreviewLocationData& rData = mpViewShell->GetLocationData();
+                ScPagePreviewCountData aCount( rData, mpViewShell->GetWindow(), GetNotesChilds(), GetShapeChilds() );
+
+/*              if ( rData.HasCellsInRange( Rectangle( rPoint, rPoint ) ) )
+                {
+                    if ( !mpTable && (aCount.nTables > 0) )
+                    {
+                        //! order is background shapes, header, table or notes, footer, foreground shapes, controls
+                        sal_Int32 nIndex (aCount.nBackShapes + aCount.nHeaders);
+
+                        mpTable = new ScAccessiblePreviewTable( this, mpViewShell, nIndex );
+                        mpTable->acquire();
+                        mpTable->Init();
+                    }
+                    xAccessible = mpTable;
+                }*/
                 if ( !mpTable && (aCount.nTables > 0) )
                 {
                     //! order is background shapes, header, table or notes, footer, foreground shapes, controls
@@ -1622,40 +1712,39 @@ uno::Reference< XAccessible > SAL_CALL ScAccessibleDocumentPagePreview::getAcces
                     mpTable->acquire();
                     mpTable->Init();
                 }
-                xAccessible = mpTable;
+                if (mpTable && VCLRectangle(mpTable->getBounds()).IsInside(VCLPoint(rPoint)))
+                    xAccessible = mpTable;
             }
-            else
-            {
+            if (!xAccessible.is())
                 xAccessible = GetNotesChilds()->GetAt(rPoint);
-                if (!xAccessible.is())
-                    xAccessible = GetShapeChilds()->GetAt(rPoint);
-                if (!xAccessible.is())
+            if (!xAccessible.is())
+            {
+                if (!mpHeader || !mpFooter)
                 {
-                    if (!mpHeader || !mpFooter)
-                    {
-                        const ScPreviewLocationData& rData = mpViewShell->GetLocationData();
-                        ScPagePreviewCountData aCount( rData, mpViewShell->GetWindow(), GetNotesChilds(), GetShapeChilds() );
+                    const ScPreviewLocationData& rData = mpViewShell->GetLocationData();
+                    ScPagePreviewCountData aCount( rData, mpViewShell->GetWindow(), GetNotesChilds(), GetShapeChilds() );
 
-                        if (!mpHeader)
-                        {
-                            mpHeader = new ScAccessiblePageHeader( this, mpViewShell, sal_True, aCount.nBackShapes + aCount.nHeaders - 1);
-                            mpHeader->acquire();
-                        }
-                        if (!mpFooter)
-                        {
-                            mpFooter = new ScAccessiblePageHeader( this, mpViewShell, sal_False, aCount.nBackShapes + aCount.nHeaders + aCount.nTables + aCount.nNoteParagraphs + aCount.nFooters - 1 );
-                            mpFooter->acquire();
-                        }
+                    if (!mpHeader)
+                    {
+                        mpHeader = new ScAccessiblePageHeader( this, mpViewShell, sal_True, aCount.nBackShapes + aCount.nHeaders - 1);
+                        mpHeader->acquire();
+                    }
+                    if (!mpFooter)
+                    {
+                        mpFooter = new ScAccessiblePageHeader( this, mpViewShell, sal_False, aCount.nBackShapes + aCount.nHeaders + aCount.nTables + aCount.nNoteParagraphs + aCount.nFooters - 1 );
+                        mpFooter->acquire();
                     }
+                }
 
-                    Point aPoint(VCLPoint(rPoint));
+                Point aPoint(VCLPoint(rPoint));
 
-                    if (VCLRectangle(mpHeader->getBounds()).IsInside(aPoint))
-                        xAccessible = mpHeader;
-                    else if (VCLRectangle(mpFooter->getBounds()).IsInside(aPoint))
-                        xAccessible = mpFooter;
-                }
+                if (VCLRectangle(mpHeader->getBounds()).IsInside(aPoint))
+                    xAccessible = mpHeader;
+                else if (VCLRectangle(mpFooter->getBounds()).IsInside(aPoint))
+                    xAccessible = mpFooter;
             }
+            if (!xAccessible.is())
+                xAccessible = GetShapeChilds()->GetBackgroundShapeAt(rPoint);
         }
     }
 
diff --git a/sc/source/ui/Accessibility/AccessiblePreviewHeaderCell.cxx b/sc/source/ui/Accessibility/AccessiblePreviewHeaderCell.cxx
index cea2d295f128..5e7ed22a5504 100644
--- a/sc/source/ui/Accessibility/AccessiblePreviewHeaderCell.cxx
+++ b/sc/source/ui/Accessibility/AccessiblePreviewHeaderCell.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: AccessiblePreviewHeaderCell.cxx,v $
  *
- *  $Revision: 1.19 $
+ *  $Revision: 1.20 $
  *
- *  last change: $Author: sab $ $Date: 2002-11-27 14:21:16 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:43 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -101,6 +101,9 @@
 #ifndef _COMPHELPER_SEQUENCE_HXX_
 #include 
 #endif
+#ifndef _TOOLKIT_HELPER_CONVERT_HXX_
+#include 
+#endif
 
 using namespace ::com::sun::star;
 using namespace ::drafts::com::sun::star::accessibility;
@@ -111,15 +114,15 @@ ScAccessiblePreviewHeaderCell::ScAccessiblePreviewHeaderCell( const ::com::sun::
                                 ::drafts::com::sun::star::accessibility::XAccessible>& rxParent,
                             ScPreviewShell* pViewShell,
                             const ScAddress& rCellPos, sal_Bool bIsColHdr, sal_Bool bIsRowHdr,
-                            sal_Int32 nIndex, const Rectangle& rPosition ) :
+                            sal_Int32 nIndex ) :
     ScAccessibleContextBase( rxParent, AccessibleRole::TABLE_CELL ),
     mpViewShell( pViewShell ),
     maCellPos( rCellPos ),
     mbColumnHeader( bIsColHdr ),
     mbRowHeader( bIsRowHdr ),
     mnIndex( nIndex ),
-    maPosition( rPosition ),
-    mpTextHelper( NULL )
+    mpTextHelper( NULL ),
+    mpTableInfo( NULL )
 {
     if (mpViewShell)
         mpViewShell->AddAccessibilityObject(*this);
@@ -140,6 +143,9 @@ void SAL_CALL ScAccessiblePreviewHeaderCell::disposing()
         mpViewShell = NULL;
     }
 
+       if (mpTableInfo)
+        DELETEZ (mpTableInfo);
+
     ScAccessibleContextBase::disposing();
 }
 
@@ -151,11 +157,17 @@ void ScAccessiblePreviewHeaderCell::Notify( SfxBroadcaster& rBC, const SfxHint&
     {
         const SfxSimpleHint& rRef = (const SfxSimpleHint&)rHint;
         ULONG nId = rRef.GetId();
-        if (rRef.GetId() == SC_HINT_ACC_VISAREACHANGED)
+        if (nId == SC_HINT_ACC_VISAREACHANGED)
         {
             if (mpTextHelper)
                 mpTextHelper->UpdateChildren();
         }
+        else if ( nId == SFX_HINT_DATACHANGED )
+        {
+            //  column / row layout may change with any document change,
+            //  so it must be invalidated
+            DELETEZ( mpTableInfo );
+        }
     }
 
     ScAccessibleContextBase::Notify(rBC, rHint);
@@ -186,27 +198,48 @@ void SAL_CALL ScAccessiblePreviewHeaderCell::release()
 
 uno::Any SAL_CALL ScAccessiblePreviewHeaderCell::getCurrentValue() throw (uno::RuntimeException)
 {
-    //  column or row headers don't have a value
-    return uno::Any();
+     ScUnoGuard aGuard;
+    IsObjectValid();
+
+    double fValue(0.0);
+    if (mbColumnHeader)
+        fValue = maCellPos.Col();
+    else
+        fValue = maCellPos.Row();
+
+    uno::Any aAny;
+    aAny <<= fValue;
+    return aAny;
 }
 
 sal_Bool SAL_CALL ScAccessiblePreviewHeaderCell::setCurrentValue( const uno::Any& aNumber )
                                                                 throw (uno::RuntimeException)
 {
-    //  column or row headers don't have a value
+    //  it is not possible to set a value
     return sal_False;
 }
 
 uno::Any SAL_CALL ScAccessiblePreviewHeaderCell::getMaximumValue() throw (uno::RuntimeException)
 {
-    //  column or row headers don't have a value
-    return uno::Any();
+     ScUnoGuard aGuard;
+    IsObjectValid();
+
+    double fValue(0.0);
+    if (mbColumnHeader)
+        fValue = MAXCOL;
+    else
+        fValue = MAXROW;
+    uno::Any aAny;
+    aAny <<= fValue;
+    return aAny;
 }
 
 uno::Any SAL_CALL ScAccessiblePreviewHeaderCell::getMinimumValue() throw (uno::RuntimeException)
 {
-    //  column or row headers don't have a value
-    return uno::Any();
+    double fValue(0.0);
+    uno::Any aAny;
+    aAny <<= fValue;
+    return aAny;
 }
 
 //=====  XAccessibleComponent  ============================================
@@ -341,7 +374,18 @@ uno::Sequence SAL_CALL
 
 Rectangle ScAccessiblePreviewHeaderCell::GetBoundingBoxOnScreen() const throw (uno::RuntimeException)
 {
-    Rectangle aCellRect(GetBoundingBox());
+    Rectangle aCellRect;
+
+    FillTableInfo();
+
+    if (mpTableInfo)
+    {
+        const ScPreviewColRowInfo& rColInfo = mpTableInfo->GetColInfo()[maCellPos.Col()];
+        const ScPreviewColRowInfo& rRowInfo = mpTableInfo->GetRowInfo()[maCellPos.Row()];
+
+        aCellRect = Rectangle( rColInfo.nPixelStart, rRowInfo.nPixelStart, rColInfo.nPixelEnd, rRowInfo.nPixelEnd );
+    }
+
     if (mpViewShell)
     {
         Window* pWindow = mpViewShell->GetWindow();
@@ -357,7 +401,29 @@ Rectangle ScAccessiblePreviewHeaderCell::GetBoundingBoxOnScreen() const throw (u
 
 Rectangle ScAccessiblePreviewHeaderCell::GetBoundingBox() const throw (uno::RuntimeException)
 {
-    return maPosition;
+    FillTableInfo();
+
+    if (mpTableInfo)
+    {
+        const ScPreviewColRowInfo& rColInfo = mpTableInfo->GetColInfo()[maCellPos.Col()];
+        const ScPreviewColRowInfo& rRowInfo = mpTableInfo->GetRowInfo()[maCellPos.Row()];
+
+        Rectangle aCellRect( rColInfo.nPixelStart, rRowInfo.nPixelStart, rColInfo.nPixelEnd, rRowInfo.nPixelEnd );
+        uno::Reference xAccParent = const_cast(this)->getAccessibleParent();
+        if (xAccParent.is())
+        {
+            uno::Reference xAccParentContext = xAccParent->getAccessibleContext();
+            uno::Reference xAccParentComp (xAccParentContext, uno::UNO_QUERY);
+            if (xAccParentComp.is())
+            {
+                Rectangle aParentRect (VCLRectangle(xAccParentComp->getBounds()));
+                aCellRect.setX(aCellRect.getX() - aParentRect.getX());
+                aCellRect.setY(aCellRect.getY() - aParentRect.getY());
+            }
+        }
+        return aCellRect;
+    }
+    return Rectangle();
 }
 
 rtl::OUString SAL_CALL ScAccessiblePreviewHeaderCell::createAccessibleDescription() throw(uno::RuntimeException)
@@ -411,3 +477,19 @@ void ScAccessiblePreviewHeaderCell::CreateTextHelper()
         mpTextHelper->SetEventSource(this);
     }
 }
+
+void ScAccessiblePreviewHeaderCell::FillTableInfo() const
+{
+    if ( mpViewShell && !mpTableInfo )
+    {
+        Size aOutputSize;
+        Window* pWindow = mpViewShell->GetWindow();
+        if ( pWindow )
+            aOutputSize = pWindow->GetOutputSizePixel();
+        Point aPoint;
+        Rectangle aVisRect( aPoint, aOutputSize );
+
+        mpTableInfo = new ScPreviewTableInfo;
+        mpViewShell->GetLocationData().GetTableInfo( aVisRect, *mpTableInfo );
+    }
+}
diff --git a/sc/source/ui/Accessibility/AccessiblePreviewTable.cxx b/sc/source/ui/Accessibility/AccessiblePreviewTable.cxx
index 338d679e864e..5705aec0818d 100644
--- a/sc/source/ui/Accessibility/AccessiblePreviewTable.cxx
+++ b/sc/source/ui/Accessibility/AccessiblePreviewTable.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: AccessiblePreviewTable.cxx,v $
  *
- *  $Revision: 1.18 $
+ *  $Revision: 1.19 $
  *
- *  last change: $Author: sab $ $Date: 2002-11-15 09:34:12 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:43 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -237,6 +237,11 @@ rtl::OUString SAL_CALL ScAccessiblePreviewTable::getAccessibleRowDescription( sa
     else
         throw lang::IndexOutOfBoundsException();*/
 
+    ScUnoGuard aGuard;
+    FillTableInfo();
+    if ( nRow < 0 || (mpTableInfo && nRow >= mpTableInfo->GetRows()) )
+        throw lang::IndexOutOfBoundsException();
+
     return rtl::OUString();
 }
 
@@ -268,6 +273,11 @@ rtl::OUString SAL_CALL ScAccessiblePreviewTable::getAccessibleColumnDescription(
     else
         throw lang::IndexOutOfBoundsException();*/
 
+    ScUnoGuard aGuard;
+    FillTableInfo();
+    if ( nColumn < 0 || (mpTableInfo && nColumn >= mpTableInfo->GetCols()) )
+        throw lang::IndexOutOfBoundsException();
+
     return rtl::OUString();
 }
 
@@ -367,6 +377,12 @@ sal_Bool SAL_CALL ScAccessiblePreviewTable::isAccessibleRowSelected( sal_Int32 n
                                 throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
 {
     //  in the page preview, there is no selection
+
+    ScUnoGuard aGuard;
+    FillTableInfo();
+    if ( nRow < 0 || (mpTableInfo && nRow >= mpTableInfo->GetRows()) )
+        throw lang::IndexOutOfBoundsException();
+
     return sal_False;
 }
 
@@ -374,6 +390,12 @@ sal_Bool SAL_CALL ScAccessiblePreviewTable::isAccessibleColumnSelected( sal_Int3
                                 throw (lang::IndexOutOfBoundsException, uno::RuntimeException)
 {
     //  in the page preview, there is no selection
+
+    ScUnoGuard aGuard;
+    FillTableInfo();
+    if ( nColumn < 0 || (mpTableInfo && nColumn >= mpTableInfo->GetCols()) )
+        throw lang::IndexOutOfBoundsException();
+
     return sal_False;
 }
 
@@ -397,9 +419,8 @@ uno::Reference< XAccessible > SAL_CALL ScAccessiblePreviewTable::getAccessibleCe
         ScAddress aCellPos( rColInfo.nDocIndex, rRowInfo.nDocIndex, mpTableInfo->GetTab() );
         if ( rColInfo.bIsHeader || rRowInfo.bIsHeader )
         {
-            Rectangle aPosition( rColInfo.nPixelStart, rRowInfo.nPixelStart, rColInfo.nPixelEnd, rRowInfo.nPixelEnd );
             ScAccessiblePreviewHeaderCell* pHeaderCell = new ScAccessiblePreviewHeaderCell( this, mpViewShell, aCellPos,
-                                        rRowInfo.bIsHeader, rColInfo.bIsHeader, nNewIndex, aPosition );
+                                        rRowInfo.bIsHeader, rColInfo.bIsHeader, nNewIndex );
             xRet = pHeaderCell;
             pHeaderCell->Init();
         }
diff --git a/sc/source/ui/Accessibility/AccessibleSpreadsheet.cxx b/sc/source/ui/Accessibility/AccessibleSpreadsheet.cxx
index c520adfc3e3f..8ae9b0f26d2c 100644
--- a/sc/source/ui/Accessibility/AccessibleSpreadsheet.cxx
+++ b/sc/source/ui/Accessibility/AccessibleSpreadsheet.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: AccessibleSpreadsheet.cxx,v $
  *
- *  $Revision: 1.38 $
+ *  $Revision: 1.39 $
  *
- *  last change: $Author: sab $ $Date: 2002-11-15 09:34:12 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:43 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -111,8 +111,8 @@
 #ifndef _SV_GEN_HXX
 #include 
 #endif
-#ifndef _SVX_COLORCFG_HXX
-#include 
+#ifndef INCLUDED_SVTOOLS_COLORCFG_HXX
+#include 
 #endif
 
 #include 
@@ -345,7 +345,7 @@ void ScAccessibleSpreadsheet::Notify( SfxBroadcaster& rBC, const SfxHint& rHint
     else if (rHint.ISA( ScUpdateRefHint ))
     {
         const ScUpdateRefHint& rRef = (const ScUpdateRefHint&)rHint;
-        if (rRef.GetMode() == URM_INSDEL)
+        if (rRef.GetMode() == URM_INSDEL && rRef.GetDz() == 0) //#107250# test whether table is inserted or deleted
         {
             if (((rRef.GetRange().aStart.Col() == maRange.aStart.Col()) &&
                 (rRef.GetRange().aEnd.Col() == maRange.aEnd.Col())) ||
@@ -592,7 +592,7 @@ sal_Int32 SAL_CALL ScAccessibleSpreadsheet::getBackground(  )
 {
     ScUnoGuard aGuard;
     IsObjectValid();
-    return SC_MOD()->GetColorConfig().GetColorValue( ::svx::DOCCOLOR ).nColor;
+    return SC_MOD()->GetColorConfig().GetColorValue( ::svtools::DOCCOLOR ).nColor;
 }
 
     //=====  XAccessibleContext  ==============================================
@@ -700,7 +700,9 @@ sal_Int32 SAL_CALL
         if (!mpMarkedRanges)
         {
             mpMarkedRanges = new ScRangeList();
-            mpViewShell->GetViewData()->GetMarkData().FillRangeListWithMarks(mpMarkedRanges, sal_False);
+            ScMarkData aMarkData(mpViewShell->GetViewData()->GetMarkData());
+            aMarkData.MarkToMulti();
+            aMarkData.FillRangeListWithMarks(mpMarkedRanges, sal_False);
         }
         // is possible, because there shouldn't be overlapped ranges in it
         if (mpMarkedRanges)
@@ -983,4 +985,4 @@ Rectangle ScAccessibleSpreadsheet::GetVisCells(const Rectangle& rVisArea)
     }
     else
         return Rectangle();
-}
\ No newline at end of file
+}
diff --git a/sc/source/ui/Accessibility/AccessibleTableBase.cxx b/sc/source/ui/Accessibility/AccessibleTableBase.cxx
index 0b89e60e45e6..e9cfc788aeaa 100644
--- a/sc/source/ui/Accessibility/AccessibleTableBase.cxx
+++ b/sc/source/ui/Accessibility/AccessibleTableBase.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: AccessibleTableBase.cxx,v $
  *
- *  $Revision: 1.24 $
+ *  $Revision: 1.25 $
  *
- *  last change: $Author: sab $ $Date: 2002-09-24 13:01:59 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:43 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -169,6 +169,10 @@ sal_Int32 SAL_CALL ScAccessibleTableBase::getAccessibleColumnCount(  )
     throw (uno::RuntimeException, lang::IndexOutOfBoundsException)
 {
     DBG_ERROR("Here should be a implementation to fill the description");
+
+    if ((nRow > (maRange.aEnd.Row() - maRange.aStart.Row())) || (nRow < 0))
+        throw lang::IndexOutOfBoundsException();
+
     //setAccessibleRowDescription(nRow, xAccessible); // to remember the created Description
     return rtl::OUString();
 }
@@ -177,6 +181,10 @@ sal_Int32 SAL_CALL ScAccessibleTableBase::getAccessibleColumnCount(  )
     throw (uno::RuntimeException, lang::IndexOutOfBoundsException)
 {
     DBG_ERROR("Here should be a implementation to fill the description");
+
+    if ((nColumn > (maRange.aEnd.Col() - maRange.aStart.Col())) || (nColumn < 0))
+        throw lang::IndexOutOfBoundsException();
+
     //setAccessibleColumnDescription(nColumn, xAccessible); // to remember the created Description
     return rtl::OUString();
 }
@@ -244,6 +252,7 @@ uno::Reference< XAccessibleTable > SAL_CALL ScAccessibleTableBase::getAccessible
 {
     uno::Reference< XAccessibleTable > xAccessibleTable;
     DBG_ERROR("Here should be a implementation to fill the row headers");
+
     //CommitChange
     return xAccessibleTable;
 }
@@ -253,6 +262,7 @@ uno::Reference< XAccessibleTable > SAL_CALL ScAccessibleTableBase::getAccessible
 {
     uno::Reference< XAccessibleTable > xAccessibleTable;
     DBG_ERROR("Here should be a implementation to fill the column headers");
+
     //CommitChange
     return xAccessibleTable;
 }
diff --git a/sc/source/ui/Accessibility/AccessibleText.cxx b/sc/source/ui/Accessibility/AccessibleText.cxx
index 6cb16424e79c..153aff8908bb 100644
--- a/sc/source/ui/Accessibility/AccessibleText.cxx
+++ b/sc/source/ui/Accessibility/AccessibleText.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: AccessibleText.cxx,v $
  *
- *  $Revision: 1.27 $
+ *  $Revision: 1.28 $
  *
- *  last change: $Author: sab $ $Date: 2002-11-11 09:56:25 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:43 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -136,6 +136,8 @@ public:
     virtual Rectangle   GetVisArea() const;
     virtual Point       LogicToPixel( const Point& rPoint, const MapMode& rMapMode ) const;
     virtual Point       PixelToLogic( const Point& rPoint, const MapMode& rMapMode ) const;
+
+    void                SetInvalid();
 };
 
 ScViewForwarder::ScViewForwarder(ScTabViewShell* pViewShell, ScSplitPos eSplitPos, const ScAddress& rCell)
@@ -207,6 +209,10 @@ Point ScViewForwarder::PixelToLogic( const Point& rPoint, const MapMode& rMapMod
     return Point();
 }
 
+void ScViewForwarder::SetInvalid()
+{
+    mpViewShell = NULL;
+}
 
 // ============================================================================
 
@@ -221,6 +227,8 @@ public:
     virtual Rectangle   GetVisArea() const;
     virtual Point       LogicToPixel( const Point& rPoint, const MapMode& rMapMode ) const;
     virtual Point       PixelToLogic( const Point& rPoint, const MapMode& rMapMode ) const;
+
+    void                SetInvalid();
 };
 
 ScEditObjectViewForwarder::ScEditObjectViewForwarder(Window* pWindow)
@@ -272,6 +280,10 @@ Point ScEditObjectViewForwarder::PixelToLogic( const Point& rPoint, const MapMod
     return Point();
 }
 
+void ScEditObjectViewForwarder::SetInvalid()
+{
+    mpWindow = NULL;
+}
 
 // ============================================================================
 
@@ -289,6 +301,8 @@ public:
     virtual Point       LogicToPixel( const Point& rPoint, const MapMode& rMapMode ) const;
     virtual Point       PixelToLogic( const Point& rPoint, const MapMode& rMapMode ) const;
 
+    void                SetInvalid();
+
     Rectangle GetVisRect() const;
     void FillTableInfo() const;
 
@@ -358,6 +372,11 @@ Point ScPreviewViewForwarder::PixelToLogic( const Point& rPoint, const MapMode&
     return Point();
 }
 
+void ScPreviewViewForwarder::SetInvalid()
+{
+    mpViewShell = NULL;
+}
+
 Rectangle ScPreviewViewForwarder::GetVisRect() const
 {
     if ( mpViewShell )
@@ -600,6 +619,8 @@ public:
     virtual sal_Bool    Paste();
 
     void                GrabFocus();
+
+    void                SetInvalid();
 };
 
 ScEditViewForwarder::ScEditViewForwarder(EditView* pEditView, Window* pWin)
@@ -724,6 +745,11 @@ void ScEditViewForwarder::GrabFocus()
 {
 }
 
+void ScEditViewForwarder::SetInvalid()
+{
+    mpWindow = NULL;
+    mpEditView = NULL;
+}
 
 // ============================================================================
 
@@ -758,6 +784,10 @@ void ScAccessibleCellTextData::Notify( SfxBroadcaster& rBC, const SfxHint& rHint
         if ( nId == SFX_HINT_DYING )
         {
             mpViewShell = NULL;                     // invalid now
+            if (mpViewForwarder)
+                mpViewForwarder->SetInvalid();
+            if (mpEditViewForwarder)
+                mpEditViewForwarder->SetInvalid();
         }
     }
     ScAccessibleCellBaseTextData::Notify(rBC, rHint);
@@ -942,6 +972,10 @@ void ScAccessibleEditObjectTextData::Notify( SfxBroadcaster& rBC, const SfxHint&
             mpEditView = NULL;
             mpEditEngine = NULL;
             DELETEZ(mpForwarder);
+            if (mpViewForwarder)
+                mpViewForwarder->SetInvalid();
+            if (mpEditViewForwarder)
+                mpEditViewForwarder->SetInvalid();
         }
     }
     ScAccessibleTextData::Notify(rBC, rHint);
@@ -1204,6 +1238,8 @@ void ScAccessiblePreviewCellTextData::Notify( SfxBroadcaster& rBC, const SfxHint
         if ( nId == SFX_HINT_DYING )
         {
             mpViewShell = NULL;                     // invalid now
+            if (mpViewForwarder)
+                mpViewForwarder->SetInvalid();
         }
     }
     ScAccessibleCellBaseTextData::Notify(rBC, rHint);
@@ -1295,6 +1331,8 @@ void ScAccessiblePreviewHeaderCellTextData::Notify( SfxBroadcaster& rBC, const S
         if ( nId == SFX_HINT_DYING )
         {
             mpViewShell = NULL;                     // invalid now
+            if (mpViewForwarder)
+                mpViewForwarder->SetInvalid();
         }
     }
     ScAccessibleCellBaseTextData::Notify(rBC, rHint);
@@ -1439,6 +1477,8 @@ void ScAccessibleHeaderTextData::Notify( SfxBroadcaster& rBC, const SfxHint& rHi
         {
             mpViewShell = NULL;// invalid now
             mpDocSh = NULL;
+            if (mpViewForwarder)
+                mpViewForwarder->SetInvalid();
         }
     }
 }
@@ -1554,6 +1594,8 @@ void ScAccessibleNoteTextData::Notify( SfxBroadcaster& rBC, const SfxHint& rHint
         {
             mpViewShell = NULL;// invalid now
             mpDocSh = NULL;
+            if (mpViewForwarder)
+                mpViewForwarder->SetInvalid();
         }
     }
 }
@@ -1638,6 +1680,8 @@ public:
     virtual Rectangle           GetVisArea() const;
     virtual Point               LogicToPixel( const Point& rPoint, const MapMode& rMapMode ) const;
     virtual Point               PixelToLogic( const Point& rPoint, const MapMode& rMapMode ) const;
+
+    void                        SetInvalid();
 };
 
 ScCsvViewForwarder::ScCsvViewForwarder( Window* pWindow, const Rectangle& rBoundBox ) :
@@ -1668,6 +1712,10 @@ Point ScCsvViewForwarder::PixelToLogic( const Point& rPoint, const MapMode& rMap
     return mpWindow->PixelToLogic( rPoint, rMapMode );
 }
 
+void ScCsvViewForwarder::SetInvalid()
+{
+    mpWindow = NULL;
+}
 
 // ----------------------------------------------------------------------------
 
@@ -1695,8 +1743,8 @@ void ScAccessibleCsvTextData::Notify( SfxBroadcaster& rBC, const SfxHint& rHint
         {
             mpWindow = NULL;
             mpEditEngine = NULL;
-            mpTextForwarder.reset( NULL );
-            mpViewForwarder.reset( NULL );
+            if (mpViewForwarder.get())
+                mpViewForwarder->SetInvalid();
         }
     }
     ScAccessibleTextData::Notify( rBC, rHint );
diff --git a/sc/source/ui/app/inputhdl.cxx b/sc/source/ui/app/inputhdl.cxx
index c959523afbb0..e0e029941d80 100644
--- a/sc/source/ui/app/inputhdl.cxx
+++ b/sc/source/ui/app/inputhdl.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: inputhdl.cxx,v $
  *
- *  $Revision: 1.44 $
+ *  $Revision: 1.45 $
  *
- *  last change: $Author: nn $ $Date: 2002-12-04 18:53:48 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:46 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -74,7 +74,7 @@
 #include 
 #include 
 #include 
-#include 
+#include 
 #include 
 #include 
 #include 
@@ -1549,7 +1549,7 @@ BOOL ScInputHandler::StartTable( sal_Unicode cTyped, BOOL bFromCommand )
                     //  #105733# SvtAccessibilityOptions::GetIsForBorders is no longer used (always assumed TRUE)
                     if ( aBackCol.GetTransparency() > 0 ||
                             Application::GetSettings().GetStyleSettings().GetHighContrastMode() )
-                        aBackCol.SetColor( pScMod->GetColorConfig().GetColorValue(svx::DOCCOLOR).nColor );
+                        aBackCol.SetColor( pScMod->GetColorConfig().GetColorValue(svtools::DOCCOLOR).nColor );
                     pEngine->SetBackgroundColor( aBackCol );
 
                     //  Ausrichtung
@@ -2030,7 +2030,21 @@ void ScInputHandler::EnterHandler( BYTE nBlockMode )
     BOOL bSpellErrors = !bFormulaMode && pEngine->HasOnlineSpellErrors();
     if ( bSpellErrors )
     {
-        //  Test, ob Zahl, dann Fehler ignorieren
+        //  #i3820# If the spell checker flags numerical input as error,
+        //  it still has to be treated as number, not EditEngine object.
+
+        if ( pLastPattern && pActiveViewSh )
+        {
+            ScDocument* pDoc = pActiveViewSh->GetViewData()->GetDocument();
+            SvNumberFormatter* pFormatter = pDoc->GetFormatTable();
+            // without conditional format, as in ScColumn::SetString
+            ULONG nFormat = pLastPattern->GetNumberFormat( pFormatter );
+            double nVal;
+            if ( pFormatter->IsNumberFormat( aString, nFormat, nVal ) )
+            {
+                bSpellErrors = FALSE;       // ignore the spelling errors
+            }
+        }
     }
 
     //  After RemoveAdjust, the EditView must not be repainted (has wrong font size etc).
@@ -2647,12 +2661,17 @@ BOOL ScInputHandler::KeyInput( const KeyEvent& rKEvt, BOOL bStartEdit /* = FALSE
                         if (pTableView)
                         {
                             pTableView->GetEditEngine()->SetText( aStrLoP );
-                            pTableView->SetSelection( ESelection(0,0, 0,0) );
+                            if ( aStrLoP.Len() )
+                                pTableView->SetSelection( ESelection(0,0, 0,0) );   // before the '%'
+
+                            // don't call SetSelection if the string is empty anyway,
+                            // to avoid breaking the bInitial handling in ScViewData::EditGrowY
                         }
                         if (pTopView)
                         {
                             pTopView->GetEditEngine()->SetText( aStrLoP );
-                            pTopView->SetSelection( ESelection(0,0, 0,0) );
+                            if ( aStrLoP.Len() )
+                                pTopView->SetSelection( ESelection(0,0, 0,0) );     // before the '%'
                         }
                     }
                 SyncViews();
diff --git a/sc/source/ui/app/inputwin.cxx b/sc/source/ui/app/inputwin.cxx
index a86ccca2237b..9e26da8243e4 100644
--- a/sc/source/ui/app/inputwin.cxx
+++ b/sc/source/ui/app/inputwin.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: inputwin.cxx,v $
  *
- *  $Revision: 1.29 $
+ *  $Revision: 1.30 $
  *
- *  last change: $Author: sab $ $Date: 2002-11-29 13:46:47 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:47 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -68,11 +68,15 @@
 //------------------------------------------------------------------
 
 #include "scitems.hxx"
+#include "eetext.hxx"
 #include 
 #define ITEMID_FIELD EE_FEATURE_FIELD
 
+#include 
 #include 
 #include 
+#include 
+#include 
 #include 
 #include 
 #include 
@@ -738,6 +742,10 @@ ScTextWnd::ScTextWnd( Window* pParent )
         bFormulaMode ( FALSE ),
         bInputMode   ( FALSE )
 {
+    EnableRTL( FALSE );     // #106269# EditEngine can't be used with VCL EnableRTL
+
+    bIsRTL = GetSettings().GetLayoutRTL();
+
     //  #79096# always use application font, so a font with cjk chars can be installed
     Font aAppFont = GetFont();
     aTextFont = aAppFont;
@@ -781,8 +789,17 @@ void __EXPORT ScTextWnd::Paint( const Rectangle& rRec )
                     - LogicToPixel( Size( 0, GetTextHeight() ) ).Height();
 //      if (nDiff<2) nDiff=2;       // mind. 1 Pixel
 
-        //! Clipping am rechten Rand?
-        DrawText( PixelToLogic( Point( TEXT_STARTPOS, nDiff/2 ) ), aString );
+        long nStartPos = TEXT_STARTPOS;
+        if ( bIsRTL )
+        {
+            //  right-align
+            nStartPos += GetOutputSizePixel().Width() - 2*TEXT_STARTPOS -
+                        LogicToPixel( Size( GetTextWidth( aString ), 0 ) ).Width();
+
+            //  LayoutMode isn't changed as long as ModifyRTLDefaults doesn't include SvxFrameDirectionItem
+        }
+
+        DrawText( PixelToLogic( Point( nStartPos, nDiff/2 ) ), aString );
     }
 }
 
@@ -799,7 +816,7 @@ void __EXPORT ScTextWnd::Resize()
                         // passt sonst nicht zur normalen Textausgabe
 #endif
 
-        aSize.Width() -= 4;
+        aSize.Width() -= 2 * TEXT_STARTPOS - 1;
 
         pEditView->SetOutputArea(
             PixelToLogic( Rectangle( Point( TEXT_STARTPOS, (nDiff > 0) ? nDiff/2 : 1 ),
@@ -988,6 +1005,31 @@ void lcl_ExtendEditFontAttribs( SfxItemSet& rSet )
     rSet.Put( rLangItem, EE_CHAR_LANGUAGE_CTL );
 }
 
+void lcl_ModifyRTLDefaults( SfxItemSet& rSet )
+{
+    rSet.Put( SvxAdjustItem( SVX_ADJUST_RIGHT, EE_PARA_JUST ) );
+
+    //  always using rtl writing direction would break formulas
+    //rSet.Put( SvxFrameDirectionItem( FRMDIR_HORI_RIGHT_TOP, EE_PARA_WRITINGDIR ) );
+
+    //  PaperSize width is limited to USHRT_MAX in RTL mode (because of EditEngine's
+    //  USHORT values in EditLine), so the text may be wrapped and line spacing must be
+    //  increased to not see the beginning of the next line.
+    SvxLineSpacingItem aItem( SVX_LINESPACE_TWO_LINES, EE_PARA_SBL );
+    aItem.SetPropLineSpace( 200 );
+    rSet.Put( aItem );
+}
+
+void lcl_ModifyRTLVisArea( EditView* pEditView )
+{
+    Rectangle aVisArea = pEditView->GetVisArea();
+    Size aPaper = pEditView->GetEditEngine()->GetPaperSize();
+    long nDiff = aPaper.Width() - aVisArea.Right();
+    aVisArea.Left()  += nDiff;
+    aVisArea.Right() += nDiff;
+    pEditView->SetVisArea(aVisArea);
+}
+
 void ScTextWnd::StartEditEngine()
 {
     //  #31147# Bei "eigener Modalitaet" (Doc-modale Dialoge) nicht aktivieren
@@ -1010,7 +1052,7 @@ void ScTextWnd::StartEditEngine()
         pEditEngine = pNew;
 
         pEditEngine->SetUpdateMode( FALSE );
-        pEditEngine->SetPaperSize( Size( THESIZE, 300 ) );          //!!! size
+        pEditEngine->SetPaperSize( Size( bIsRTL ? USHRT_MAX : THESIZE, 300 ) );
         pEditEngine->SetWordDelimiters(
                         ScEditUtil::ModifyDelimiters( pEditEngine->GetWordDelimiters() ) );
 
@@ -1022,6 +1064,8 @@ void ScTextWnd::StartEditEngine()
             lcl_ExtendEditFontAttribs( *pSet );
             // turn off script spacing to match DrawText output
             pSet->Put( SvxScriptSpaceItem( FALSE, EE_PARA_ASIANCJKSPACING ) );
+            if ( bIsRTL )
+                lcl_ModifyRTLDefaults( *pSet );
             pEditEngine->SetDefaults( pSet );
         }
 
@@ -1052,10 +1096,24 @@ void ScTextWnd::StartEditEngine()
 
         Resize();
 
+        if ( bIsRTL )
+            lcl_ModifyRTLVisArea( pEditView );
+
         pEditEngine->SetModifyHdl(LINK(this, ScTextWnd, NotifyHdl));
 
         if (pAccTextData)
             pAccTextData->StartEdit();
+
+        //  as long as EditEngine and DrawText sometimes differ for CTL text,
+        //  repaint now to have the EditEngine's version visible
+        SfxObjectShell* pObjSh = SfxObjectShell::Current();
+        if ( pObjSh && pObjSh->ISA(ScDocShell) )
+        {
+            ScDocument* pDoc = ((ScDocShell*)pObjSh)->GetDocument();    // any document
+            BYTE nScript = pDoc->GetStringScriptType( aString );
+            if ( nScript & SCRIPTTYPE_COMPLEX )
+                Invalidate();
+        }
     }
 
     SC_MOD()->SetInputMode( SC_INPUT_TOP );
@@ -1126,19 +1184,26 @@ void ScTextWnd::SetTextString( const String& rNewString )
 
         if (!pEditEngine)
         {
-            //  test if CTL script type is involved
-            BYTE nOldScript = 0;
-            BYTE nNewScript = 0;
-            SfxObjectShell* pObjSh = SfxObjectShell::Current();
-            if ( pObjSh && pObjSh->ISA(ScDocShell) )
+            BOOL bPaintAll;
+            if ( bIsRTL )
+                bPaintAll = TRUE;
+            else
             {
-                //  any document can be used (used only for its break iterator)
-                ScDocument* pDoc = ((ScDocShell*)pObjSh)->GetDocument();
-                nOldScript = pDoc->GetStringScriptType( aString );
-                nNewScript = pDoc->GetStringScriptType( rNewString );
+                //  test if CTL script type is involved
+                BYTE nOldScript = 0;
+                BYTE nNewScript = 0;
+                SfxObjectShell* pObjSh = SfxObjectShell::Current();
+                if ( pObjSh && pObjSh->ISA(ScDocShell) )
+                {
+                    //  any document can be used (used only for its break iterator)
+                    ScDocument* pDoc = ((ScDocShell*)pObjSh)->GetDocument();
+                    nOldScript = pDoc->GetStringScriptType( aString );
+                    nNewScript = pDoc->GetStringScriptType( rNewString );
+                }
+                bPaintAll = ( nOldScript & SCRIPTTYPE_COMPLEX ) || ( nNewScript & SCRIPTTYPE_COMPLEX );
             }
 
-            if ( ( nOldScript & SCRIPTTYPE_COMPLEX ) || ( nNewScript & SCRIPTTYPE_COMPLEX ) )
+            if ( bPaintAll )
             {
                 // if CTL is involved, the whole text has to be redrawn
                 Invalidate();
@@ -1224,11 +1289,13 @@ void ScTextWnd::MakeDialogEditView()
 
     pEditEngine->SetUpdateMode( FALSE );
     pEditEngine->SetWordDelimiters( pEditEngine->GetWordDelimiters() += '=' );
-    pEditEngine->SetPaperSize( Size( THESIZE, 300 ) );
+    pEditEngine->SetPaperSize( Size( bIsRTL ? USHRT_MAX : THESIZE, 300 ) );
 
     SfxItemSet* pSet = new SfxItemSet( pEditEngine->GetEmptyItemSet() );
     pEditEngine->SetFontInfoInItemSet( *pSet, aTextFont );
     lcl_ExtendEditFontAttribs( *pSet );
+    if ( bIsRTL )
+        lcl_ModifyRTLDefaults( *pSet );
     pEditEngine->SetDefaults( pSet );
     pEditEngine->SetUpdateMode( TRUE );
 
@@ -1237,12 +1304,17 @@ void ScTextWnd::MakeDialogEditView()
 
     Resize();
 
+    if ( bIsRTL )
+        lcl_ModifyRTLVisArea( pEditView );
+
     if (pAccTextData)
         pAccTextData->StartEdit();
 }
 
 void ScTextWnd::ImplInitSettings()
 {
+    bIsRTL = GetSettings().GetLayoutRTL();
+
     const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings();
 
     Color aBgColor= rStyleSettings.GetWindowColor();
diff --git a/sc/source/ui/app/msgpool.cxx b/sc/source/ui/app/msgpool.cxx
index d00face575be..e59520a2f302 100644
--- a/sc/source/ui/app/msgpool.cxx
+++ b/sc/source/ui/app/msgpool.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: msgpool.cxx,v $
  *
- *  $Revision: 1.1.1.1 $
+ *  $Revision: 1.2 $
  *
- *  last change: $Author: hr $ $Date: 2000-09-18 16:44:53 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:47 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -134,7 +134,7 @@ __EXPORT ScMessagePool::~ScMessagePool()
     SetSecondaryPool( NULL );       // before deleting defaults (accesses defaults)
 
     for ( USHORT i=0; i <= MSGPOOL_END-MSGPOOL_START; i++ )
-        SetRef( *ppPoolDefaults[i], 0 );
+        SetRefCount( *ppPoolDefaults[i], 0 );
 
     delete[] ppPoolDefaults;
 
diff --git a/sc/source/ui/app/scdll.cxx b/sc/source/ui/app/scdll.cxx
index 18b5c40923c1..99195f086b3c 100644
--- a/sc/source/ui/app/scdll.cxx
+++ b/sc/source/ui/app/scdll.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: scdll.cxx,v $
  *
- *  $Revision: 1.13 $
+ *  $Revision: 1.14 $
  *
- *  last change: $Author: os $ $Date: 2002-09-13 13:47:00 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:47 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -156,12 +156,10 @@ void ScDLL::Init()
     // the ScModule must be created
     ScModuleDummy **ppShlPtr = (ScModuleDummy**) GetAppData(SHL_CALC);
     SvFactory *pFact = (SvFactory*)(*ppShlPtr)->pScDocShellFactory;
-    ScLibSignalFunc pFunc = (*ppShlPtr)->pSignalFunc;
     delete (*ppShlPtr);
     ScModule* pMod = new ScModule((SfxObjectFactory*)pFact);
     (*ppShlPtr) = pMod;
     (*ppShlPtr)->pScDocShellFactory = pFact;
-    (*ppShlPtr)->pSignalFunc = pFunc;
 
     ScGlobal::Init();       // erst wenn der ResManager initialisiert ist
                             //  erst nach ScGlobal::Init duerfen die App-Optionen
diff --git a/sc/source/ui/app/scmod.cxx b/sc/source/ui/app/scmod.cxx
index 24768f998a41..81fb98d4ce0c 100644
--- a/sc/source/ui/app/scmod.cxx
+++ b/sc/source/ui/app/scmod.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: scmod.cxx,v $
  *
- *  $Revision: 1.32 $
+ *  $Revision: 1.33 $
  *
- *  last change: $Author: nn $ $Date: 2002-10-24 17:17:41 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:48 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -87,7 +87,7 @@
 #include 
 #include 
 #include 
-#include 
+#include 
 
 #include 
 #include 
@@ -148,7 +148,7 @@ static USHORT nIdleCount = 0;
 
 SFX_IMPL_INTERFACE( ScModule, SfxShell, ScResId(RID_APPTITLE) )
 {
-    SFX_OBJECTBAR_REGISTRATION( SFX_OBJECTBAR_APPLICATION|SFX_VISIBILITY_STANDARD|SFX_VISIBILITY_CLIENT,
+    SFX_OBJECTBAR_REGISTRATION( SFX_OBJECTBAR_APPLICATION | SFX_VISIBILITY_DESKTOP | SFX_VISIBILITY_STANDARD | SFX_VISIBILITY_CLIENT | SFX_VISIBILITY_VIEWER,
                                 ScResId(RID_OBJECTBAR_APP) );
     SFX_STATUSBAR_REGISTRATION( ScResId(SCCFG_STATUSBAR) );     // nur ID wichtig
     SFX_CHILDWINDOW_REGISTRATION( SvxHyperlinkDlgWrapper::GetChildWindowId() );
@@ -244,12 +244,12 @@ void ScModule::Notify( SfxBroadcaster& rBC, const SfxHint& rHint )
             //  (if the detective colors haven't been used yet, there's nothing to update)
             if ( ScDetectiveFunc::IsColorsInitialized() )
             {
-                const svx::ColorConfig& rColors = GetColorConfig();
+                const svtools::ColorConfig& rColors = GetColorConfig();
                 BOOL bArrows =
-                    ( ScDetectiveFunc::GetArrowColor() != (ColorData)rColors.GetColorValue(svx::CALCDETECTIVE).nColor ||
-                      ScDetectiveFunc::GetErrorColor() != (ColorData)rColors.GetColorValue(svx::CALCDETECTIVEERROR).nColor );
+                    ( ScDetectiveFunc::GetArrowColor() != (ColorData)rColors.GetColorValue(svtools::CALCDETECTIVE).nColor ||
+                      ScDetectiveFunc::GetErrorColor() != (ColorData)rColors.GetColorValue(svtools::CALCDETECTIVEERROR).nColor );
                 BOOL bComments =
-                    ( ScDetectiveFunc::GetCommentColor() != (ColorData)rColors.GetColorValue(svx::CALCNOTESBACKGROUND).nColor );
+                    ( ScDetectiveFunc::GetCommentColor() != (ColorData)rColors.GetColorValue(svtools::CALCNOTESBACKGROUND).nColor );
                 if ( bArrows || bComments )
                 {
                     ScDetectiveFunc::InitializeColors();        // get the new colors
@@ -914,11 +914,11 @@ ScNavipiCfg& ScModule::GetNavipiCfg()
     return *pNavipiCfg;
 }
 
-svx::ColorConfig& ScModule::GetColorConfig()
+svtools::ColorConfig& ScModule::GetColorConfig()
 {
     if ( !pColorConfig )
     {
-        pColorConfig = new svx::ColorConfig;
+        pColorConfig = new svtools::ColorConfig;
         StartListening(*pColorConfig);
     }
 
@@ -2097,8 +2097,8 @@ IMPL_LINK( ScModule, CalcFieldValueHdl, EditFieldInfo*, pInfo )
                 break;
             }
 
-            svx::ColorConfigEntry eEntry =
-                INetURLHistory::GetOrCreate()->QueryUrl( aURL ) ? svx::LINKSVISITED : svx::LINKS;
+            svtools::ColorConfigEntry eEntry =
+                INetURLHistory::GetOrCreate()->QueryUrl( aURL ) ? svtools::LINKSVISITED : svtools::LINKS;
             pInfo->SetTxtColor( GetColorConfig().GetColorValue(eEntry).nColor );
         }
         else
diff --git a/sc/source/ui/app/template.cxx b/sc/source/ui/app/template.cxx
index 58a3a6ca9539..539bbbd9a526 100644
--- a/sc/source/ui/app/template.cxx
+++ b/sc/source/ui/app/template.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: template.cxx,v $
  *
- *  $Revision: 1.1.1.1 $
+ *  $Revision: 1.2 $
  *
- *  last change: $Author: hr $ $Date: 2000-09-18 16:44:53 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:48 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -125,36 +125,6 @@ void ScTemplateDlg::ToggleApplyTemplate()
 
 // STATIC DATA -----------------------------------------------------------
 
-/*------------------------------------------------------------------------
-
-    $Log: not supported by cvs2svn $
-    Revision 1.7  2000/09/17 14:08:54  willem.vandorp
-    OpenOffice header added.
-
-    Revision 1.6  2000/08/31 16:38:18  willem.vandorp
-    Header and footer replaced
-
-    Revision 1.5  1995/01/30 21:25:46  MO
-    + Dtor implementiert
-
-
-      Rev 1.4   30 Jan 1995 22:25:46   MO
-   + Dtor implementiert
-
-      Rev 1.3   17 Jan 1995 17:02:22   TRI
-   Pragmas zur Segmentierung eingebaut
-
-      Rev 1.2   06 Dec 1994 11:26:22   MO
-   SfxTemplateDlg -> SfxTemplateDialog
-
-      Rev 1.1   09 Nov 1994 19:54:18   NN
-   SfxTemplateDlg Konstruktor angepasst
-
-      Rev 1.0   08 Nov 1994 16:42:30   NN
-   Initial revision.
-
-------------------------------------------------------------------------*/
-
 #pragma SEG_EOFMODULE
 
 
diff --git a/sc/source/ui/app/typemap.cxx b/sc/source/ui/app/typemap.cxx
index fbe23312faea..b223cbae82d9 100644
--- a/sc/source/ui/app/typemap.cxx
+++ b/sc/source/ui/app/typemap.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: typemap.cxx,v $
  *
- *  $Revision: 1.8 $
+ *  $Revision: 1.9 $
  *
- *  last change: $Author: mba $ $Date: 2002-07-12 13:51:48 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:48 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -146,6 +146,7 @@
 #include 
 #include 
 #include 
+#include 
 
 #include "attrib.hxx"
 
diff --git a/sc/source/ui/app/uiitems.cxx b/sc/source/ui/app/uiitems.cxx
index b2f345a1f4fe..b42b5e5efadd 100644
--- a/sc/source/ui/app/uiitems.cxx
+++ b/sc/source/ui/app/uiitems.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: uiitems.cxx,v $
  *
- *  $Revision: 1.1.1.1 $
+ *  $Revision: 1.2 $
  *
- *  last change: $Author: hr $ $Date: 2000-09-18 16:44:53 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:48 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -760,168 +760,6 @@ SfxPoolItem* __EXPORT ScCondFrmtItem::Clone( SfxItemPool * ) const
 }
 
 
-/*------------------------------------------------------------------------
-
-    $Log: not supported by cvs2svn $
-    Revision 1.50  2000/09/17 14:08:54  willem.vandorp
-    OpenOffice header added.
-
-    Revision 1.49  2000/08/31 16:38:18  willem.vandorp
-    Header and footer replaced
-
-    Revision 1.48  2000/08/27 18:18:18  er
-    MUST/602: EditEngine
-
-    Revision 1.47  2000/06/06 17:35:07  nn
-    ScQueryItem: advanced filter source range
-
-    Revision 1.46  2000/04/17 13:26:28  nn
-    unicode changes
-
-    Revision 1.45  2000/03/03 20:14:06  nn
-    PivotItem: SaveData as pointer
-
-    Revision 1.44  1999/10/25 17:19:33  nn
-    ScPivotItem changed
-
-    Revision 1.43  1997/12/05 19:07:44  ANK
-    Includes geaendert
-
-
-      Rev 1.42   05 Dec 1997 20:07:44   ANK
-   Includes geaendert
-
-      Rev 1.41   09 Jun 1997 12:00:26   NN
-   ScIndexHint
-
-      Rev 1.40   16 Oct 1996 16:15:32   RJ
-   Item fuer bedingte Fomatierung
-
-      Rev 1.39   25 Sep 1996 12:50:40   NN
-   ScPaintHint nach hints verschoben
-
-      Rev 1.38   15 Aug 1996 15:28:24   NN
-   tabvwsh.hxx raus
-
-      Rev 1.37   04 Jul 1996 16:51:52   NN
-   ScTablesHint mit 2.Tabelle fuer Copy/Move
-
-      Rev 1.36   15 Mar 1996 14:29:08   NN
-   ScTablesHint
-
-      Rev 1.35   27 Nov 1995 09:27:12   MO
-   Pos-Item entfernt
-
-      Rev 1.34   24 Nov 1995 17:08:32   MO
-   ScTripel durch ScAddress ersetzt
-
-      Rev 1.33   30 Jun 1995 10:57:58   STE
-   Typeinit fuer ScTabOpItem dazu
-
-      Rev 1.32   29 Jun 1995 12:35:16   STE
-   tabop dazu
-
-      Rev 1.31   23 Jun 1995 14:50:40   MO
-   ViewOptionsItem entfernt
-
-      Rev 1.30   02 Jun 1995 16:32:48   MO
-   ScViewOptionsItem
-
-      Rev 1.29   21 May 1995 18:06:32   MO
-   Zusaetzlich CursorPos
-
-      Rev 1.28   21 May 1995 13:55:34   MO
-   aus aPos wird aEndPos, zusaetzlich aStartPos
-
-      Rev 1.27   20 May 1995 16:04:38   MO
-   ScUserListItem: Listen kopieren
-
-      Rev 1.26   12 May 1995 10:58:44   MO
-   Items fuer Seitenformat nach attrib
-
-      Rev 1.25   10 May 1995 20:13:04   MO
-   Bugfix: ==-Operatoren, Ctor von UserListItem
-
-      Rev 1.24   08 May 1995 20:49:48   MO
-   Seitendialog
-
-      Rev 1.23   19 Apr 1995 16:30:56   MO
-   ScSolveItem
-
-      Rev 1.22   24 Mar 1995 13:06:36   TRI
-   Segmentierung
-
-      Rev 1.21   24 Mar 1995 13:05:26   TRI
-   Segmentierung
-
-      Rev 1.20   22 Mar 1995 19:31:14   NN
-   EditData am InputStatusIten
-
-      Rev 1.19   20 Mar 1995 16:38:04   MO
-   + Pivot-Item
-
-      Rev 1.18   01 Mar 1995 19:00:52   MO
-   + ScConsolidateItem
-
-      Rev 1.17   01 Feb 1995 11:20:30   MO
-   * __EXORT -> __EXPORT
-
-
-      Rev 1.16   31 Jan 1995 14:44:26   TRI
-   __EXPORT vor virtuelle Funktion eingebaut
-
-      Rev 1.15   29 Jan 1995 20:20:08   MO
-   UserListItem
-
-      Rev 1.14   24 Jan 1995 14:57:14   MO
-   ScSortItem an ScSortParam angepasst
-
-      Rev 1.13   19 Jan 1995 11:26:50   MO
-   ScSubTotalItem
-
-      Rev 1.12   17 Jan 1995 17:02:14   TRI
-   Pragmas zur Segmentierung eingebaut
-
-      Rev 1.11   12 Jan 1995 14:34:04   MO
-   Zusaetzliche Konstruktoren fuer Query/Sort-Item fuer Rueckgabe aus
-   dem Dialog.
-
-      Rev 1.10   10 Jan 1995 16:14:36   MO
-   ScSortItem um Kopier-Position und Header-Flag erweitert
-
-      Rev 1.9   09 Jan 1995 11:13:44   MO
-   ScSortItem: ScSortParam als Member
-   ScQueryItem: wie ScSortItem
-
-      Rev 1.8   21 Dec 1994 12:15:02   MO
-   SortItem
-
-      Rev 1.7   19 Dec 1994 16:23:36   MO
-   ScSortItem mit FeldNamensliste
-
-      Rev 1.6   07 Nov 1994 14:39:32   MM
-   Clone() angepasst
-
-      Rev 1.5   26 Oct 1994 12:30:56   NN
-   neue Precompiled Header-Methode
-
-      Rev 1.4   17 Oct 1994 18:34:12   NN
-   Edit-Engine
-
-      Rev 1.3   06 Oct 1994 13:58:16   NN
-   Eingabezeile / Referenzeingabe
-
-      Rev 1.2   04 Oct 1994 16:07:04   NN
-   Hints statt Requests
-
-      Rev 1.1   22 Sep 1994 17:37:48   NN
-   Bildschirm-Update
-
-      Rev 1.0   14 Sep 1994 12:26:44   NN
-   Bloecke markieren und attributieren
-
-------------------------------------------------------------------------*/
-
 #pragma SEG_EOFMODULE
 
 
diff --git a/sc/source/ui/cctrl/popmenu.cxx b/sc/source/ui/cctrl/popmenu.cxx
index 974511b2b95c..19d5985fc8c5 100644
--- a/sc/source/ui/cctrl/popmenu.cxx
+++ b/sc/source/ui/cctrl/popmenu.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: popmenu.cxx,v $
  *
- *  $Revision: 1.2 $
+ *  $Revision: 1.3 $
  *
- *  last change: $Author: mh $ $Date: 2001-10-23 10:42:31 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:50 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -67,14 +67,28 @@
 
 #pragma hdrstop
 
+#ifndef PCH
+#include 
+#endif
+
 // INCLUDE ---------------------------------------------------------------
 
 #include "popmenu.hxx"
 
+// STATIC DATA -----------------------------------------------------------
+
+SEG_EOFGLOBALS()
+
 //------------------------------------------------------------------
 
+#pragma SEG_FUNCDEF(popmenu_01)
+
 void __EXPORT ScPopupMenu::Select()
 {
     nSel = GetCurItemId();
     bHit = TRUE;
 }
+
+#pragma SEG_EOFMODULE
+
+
diff --git a/sc/source/ui/dbgui/asciiopt.cxx b/sc/source/ui/dbgui/asciiopt.cxx
index 1a096a72ac8e..399ea05e6191 100644
--- a/sc/source/ui/dbgui/asciiopt.cxx
+++ b/sc/source/ui/dbgui/asciiopt.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: asciiopt.cxx,v $
  *
- *  $Revision: 1.16 $
+ *  $Revision: 1.17 $
  *
- *  last change: $Author: dr $ $Date: 2002-08-15 09:28:07 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:51 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -651,6 +651,13 @@ ScImportAsciiDlg::ScImportAsciiDlg( Window* pParent,String aDatName,
                 break;
         }
         nStreamPosUnicode = pDatStream->Tell();
+
+        //  #107455# If the file content isn't unicode, ReadUniStringLine
+        //  may try to seek beyond the file's end and cause a CANTSEEK error
+        //  (depending on the stream type). The error code has to be cleared,
+        //  or further read operations (including non-unicode) will fail.
+        if ( pDatStream->GetError() == ERRCODE_IO_CANTSEEK )
+            pDatStream->ResetError();
     }
 
     aNfRow.SetModifyHdl( LINK( this, ScImportAsciiDlg, FirstRowHdl ) );
@@ -796,6 +803,9 @@ void ScImportAsciiDlg::UpdateVertical( bool bSwitchToFromUnicode )
                 *pPtrRowPos++ = pDatStream->Tell();
             }
             nStreamPosUnicode = pDatStream->Tell();
+
+            if ( pDatStream->GetError() == ERRCODE_IO_CANTSEEK )    // #107455# reset seek error
+                pDatStream->ResetError();
         }
         else
         {
@@ -842,6 +852,9 @@ void ScImportAsciiDlg::UpdateVertical( bool bSwitchToFromUnicode )
             }
         }
         nStreamPosUnicode = pDatStream->Tell();
+
+        if ( pDatStream->GetError() == ERRCODE_IO_CANTSEEK )    // #107455# reset seek error
+            pDatStream->ResetError();
     }
     else
     {
diff --git a/sc/source/ui/dbgui/asciiopt.src b/sc/source/ui/dbgui/asciiopt.src
index 2723a1a07d07..0a1407c7ec38 100644
--- a/sc/source/ui/dbgui/asciiopt.src
+++ b/sc/source/ui/dbgui/asciiopt.src
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: asciiopt.src,v $
  *
- *  $Revision: 1.24 $
+ *  $Revision: 1.25 $
  *
- *  last change: $Author: kz $ $Date: 2002-11-27 16:32:41 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:51 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -488,7 +488,7 @@ ModalDialog RID_SCDLG_ASCII
         Text[ dutch ] = "~Spatie";
         Text[ chinese_simplified ] = "空格(~P)";
         Text[ greek ] = "";
-        Text[ korean ] = "간격(~P)";
+        Text[ korean ] = "공백(~P)";
         Text[ turkish ] = "B~oluk";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Es~pai";
@@ -611,7 +611,7 @@ ModalDialog RID_SCDLG_ASCII
         Text[ dutch ] = "Vel~dscheidingstekens samenvatten";
         Text[ chinese_simplified ] = "压缩显示(~D)";
         Text[ greek ] = "  ";
-        Text[ korean ] = "필드 구분 기호 요약(~D)";
+        Text[ korean ] = "필드 구분 기호 병합(~D)";
         Text[ turkish ] = "Ay~rma iaretlerini zetle";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Fusiona els ~delimitadors";
@@ -648,3 +648,8 @@ ModalDialog RID_SCDLG_ASCII
 
 
 
+
+
+
+
+
diff --git a/sc/source/ui/dbgui/consdlg.src b/sc/source/ui/dbgui/consdlg.src
index 5db90163f35f..2a5fb75f1c0d 100644
--- a/sc/source/ui/dbgui/consdlg.src
+++ b/sc/source/ui/dbgui/consdlg.src
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: consdlg.src,v $
  *
- *  $Revision: 1.26 $
+ *  $Revision: 1.27 $
  *
- *  last change: $Author: kz $ $Date: 2002-11-27 16:37:42 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:51 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -254,8 +254,8 @@ ModelessDialog RID_SCDLG_CONSOLIDATE
             < "Cantidad (slo nmeros)" ; Default ; > ;
             < "DesvEst (Muestra)" ; Default ; > ;
             < "DesvEstP (Poblacin)" ; Default ; > ;
-            < "Varianza (Muestra)" ; Default ; > ;
-            < "VarP (Poblacin)" ; Default ; > ;
+            < "Variancia (muestra)" ; Default ; > ;
+            < "VarP (poblacin)" ; Default ; > ;
         };
         StringList [ english_us ] =
         {
@@ -373,7 +373,7 @@ ModelessDialog RID_SCDLG_CONSOLIDATE
     {
             < "합계" ; Default ; > ;
         < "값" ; Default ; > ;
-        < "평균" ; Default ; > ;
+        < "평균값" ; Default ; > ;
         < "최대" ; Default ; > ;
         < "최소" ; Default ; > ;
         < "곱" ; Default ; > ;
@@ -564,7 +564,7 @@ ModelessDialog RID_SCDLG_CONSOLIDATE
         Text[ chinese_traditional ] = "計算規則(~F)";
         Text[ arabic ] = "";
         Text[ greek ] = " ";
-        Text[ korean ] = "기능(~F)";
+        Text[ korean ] = "함수(~F)";
         Text[ turkish ] = "Fonksi~yon";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "~Funci";
@@ -594,7 +594,7 @@ ModelessDialog RID_SCDLG_CONSOLIDATE
         Text[ chinese_traditional ] = "合併計算區域(~C)";
         Text[ arabic ] = " ";
         Text[ greek ] = "~ ";
-        Text[ korean ] = "통합 영역(~C)";
+        Text[ korean ] = "통합 범위(~C)";
         Text[ turkish ] = "Bir~letirme aralklar";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "rees de ~consolidaci";
@@ -624,7 +624,7 @@ ModelessDialog RID_SCDLG_CONSOLIDATE
         Text[ chinese_traditional ] = "源資料區域(~S)";
         Text[ arabic ] = "  ";
         Text[ greek ] = "  ";
-        Text[ korean ] = "소스 데이터 영역(~S)";
+        Text[ korean ] = "원본 데이터 범위(~S)";
         Text[ turkish ] = "Kaynak veri a~ralklar";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "F~ont de l'rea de dades";
@@ -654,7 +654,7 @@ ModelessDialog RID_SCDLG_CONSOLIDATE
         Text[ chinese_traditional ] = "複製結果到(~T)";
         Text[ arabic ] = "  ";
         Text[ greek ] = "  ";
-        Text[ korean ] = "결과를 복사하는 위치(~T)";
+        Text[ korean ] = "결과 복사 위치(~T)";
         Text[ turkish ] = "Sonuc~un gsterilecei yer";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Co~pia els resultats a";
@@ -672,20 +672,20 @@ ModelessDialog RID_SCDLG_CONSOLIDATE
         Text [ portuguese ] = "Legenda para ~linhas" ;
         Text [ finnish ] = "~Riviselitteet" ;
         Text [ danish ] = "Rkkeetiketter" ;
-        Text [ french ] = "~tiquette de ligne" ;
-        Text [ swedish ] = "Ra~detikett" ;
+        Text [ french ] = "tiquettes de ligne" ;
+        Text [ swedish ] = "Ra~detiketter" ;
         Text [ dutch ] = "~Rijkoppen" ;
         Text [ spanish ] = "Ttulos ~de fila" ;
         Text [ english_us ] = "~Row labels" ;
         TabStop = TRUE ;
-        Text[ chinese_simplified ] = "行数据标志(~R)";
+        Text[ chinese_simplified ] = "行标题(~R)";
         Text[ russian ] = " ";
         Text[ polish ] = "Etykiety wierszy";
-        Text[ japanese ] = "左端列(~R)";
-        Text[ chinese_traditional ] = "列標題(~R)";
+        Text[ japanese ] = "行の項目欄(~R)";
+        Text[ chinese_traditional ] = "列標籤(~R)";
         Text[ arabic ] = " ";
         Text[ greek ] = " ";
-        Text[ korean ] = "첫 행(~R)";
+        Text[ korean ] = "행 레이블(~R)";
         Text[ turkish ] = "Sa~tr etiketleri";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Eti~quetes de fila";
@@ -703,20 +703,20 @@ ModelessDialog RID_SCDLG_CONSOLIDATE
         Text [ portuguese ] = "~Cabealhos de colunas" ;
         Text [ finnish ] = "~Sarakeotsikot" ;
         Text [ danish ] = "Kolonneoverskrifter" ;
-        Text [ french ] = "En-ttes de colonne" ;
-        Text [ swedish ] = "Kolum~nhuvuden" ;
+        Text [ french ] = "tiquettes de colonne" ;
+        Text [ swedish ] = "Kolum~netiketter" ;
         Text [ dutch ] = "~Kolomkoppen" ;
-        Text [ spanish ] = "Ttulos de ~columna" ;
+        Text [ spanish ] = "~Ttulos de columna" ;
         Text [ english_us ] = "C~olumn labels" ;
         TabStop = TRUE ;
         Text[ chinese_simplified ] = "列标题(~O)";
         Text[ russian ] = " ";
         Text[ polish ] = "Nagwki kolumn";
-        Text[ japanese ] = "上端行(~O)";
-        Text[ chinese_traditional ] = "欄標題(~O)";
+        Text[ japanese ] = "列の項目欄(~O)";
+        Text[ chinese_traditional ] = "欄標籤(~O)";
         Text[ arabic ] = " ";
         Text[ greek ] = " ";
-        Text[ korean ] = "왼쪽 첫 열(~O)";
+        Text[ korean ] = "열 레이블(~O)";
         Text[ turkish ] = "S~tun balklar";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Capaleres de c~olumna";
@@ -812,7 +812,7 @@ ModelessDialog RID_SCDLG_CONSOLIDATE
         Text[ chinese_traditional ] = "和源資料連結(~L)";
         Text[ arabic ] = "  ";
         Text[ greek ] = "   ";
-        Text[ korean ] = "소스 데이터에 연결(~L)";
+        Text[ korean ] = "원본 데이터에 연결(~L)";
         Text[ turkish ] = "Kaynak verilerine ~bala";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "En~lla a la font de dades";
@@ -860,7 +860,7 @@ ModelessDialog RID_SCDLG_CONSOLIDATE
         Text [ french ] = "Supprimer" ;
         Text [ swedish ] = "R~adera" ;
         Text [ dutch ] = "~Wissen" ;
-        Text [ spanish ] = "~Eliminar" ;
+        Text [ spanish ] = "~Borrar" ;
         Text [ english_us ] = "~Delete" ;
         TabStop = TRUE ;
         Text[ chinese_simplified ] = "删除(~D)";
@@ -921,3 +921,8 @@ ModelessDialog RID_SCDLG_CONSOLIDATE
     Text[ thai ] = "รวบรวม";
 };
 
+
+
+
+
+
diff --git a/sc/source/ui/dbgui/csvcontrol.cxx b/sc/source/ui/dbgui/csvcontrol.cxx
index 1492fa88858b..b295ba5fe476 100644
--- a/sc/source/ui/dbgui/csvcontrol.cxx
+++ b/sc/source/ui/dbgui/csvcontrol.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: csvcontrol.cxx,v $
  *
- *  $Revision: 1.5 $
+ *  $Revision: 1.6 $
  *
- *  last change: $Author: dr $ $Date: 2002-08-16 12:59:08 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:51 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -73,6 +73,9 @@
 #ifndef _TOOLS_DEBUG_HXX
 #include 
 #endif
+#ifndef _SV_SVAPP_HXX
+#include 
+#endif
 
 #ifndef _SC_ACCESSIBLECSVCONTROL_HXX
 #include "AccessibleCsvControl.hxx"
@@ -85,16 +88,17 @@ ScCsvLayoutData::ScCsvLayoutData() :
     mnPosCount( 1 ),
     mnPosOffset( 0 ),
     mnWinWidth( 1 ),
-    mnOffsetX( 0 ),
+    mnHdrWidth( 0 ),
     mnCharWidth( 1 ),
     mnLineCount( 1 ),
     mnLineOffset( 0 ),
     mnWinHeight( 1 ),
-    mnOffsetY( 0 ),
+    mnHdrHeight( 0 ),
     mnLineHeight( 1 ),
     mnPosCursor( CSV_POS_INVALID ),
     mnColCursor( 0 ),
-    mnNoRepaint( 0 )
+    mnNoRepaint( 0 ),
+    mbAppRTL( !!Application::GetSettings().GetLayoutRTL() )
 {
 }
 
@@ -103,11 +107,11 @@ ScCsvDiff ScCsvLayoutData::GetDiff( const ScCsvLayoutData& rData ) const
     ScCsvDiff nRet = CSV_DIFF_EQUAL;
     if( mnPosCount != rData.mnPosCount )        nRet |= CSV_DIFF_POSCOUNT;
     if( mnPosOffset != rData.mnPosOffset )      nRet |= CSV_DIFF_POSOFFSET;
-    if( mnOffsetX != rData.mnOffsetX )          nRet |= CSV_DIFF_OFFSETX;
+    if( mnHdrWidth != rData.mnHdrWidth )        nRet |= CSV_DIFF_HDRWIDTH;
     if( mnCharWidth != rData.mnCharWidth )      nRet |= CSV_DIFF_CHARWIDTH;
     if( mnLineCount != rData.mnLineCount )      nRet |= CSV_DIFF_LINECOUNT;
     if( mnLineOffset != rData.mnLineOffset )    nRet |= CSV_DIFF_LINEOFFSET;
-    if( mnOffsetY != rData.mnOffsetY )          nRet |= CSV_DIFF_OFFSETY;
+    if( mnHdrHeight != rData.mnHdrHeight )      nRet |= CSV_DIFF_HDRHEIGHT;
     if( mnLineHeight != rData.mnLineHeight )    nRet |= CSV_DIFF_LINEHEIGHT;
     if( mnPosCursor != rData.mnPosCursor )      nRet |= CSV_DIFF_RULERCURSOR;
     if( mnColCursor != rData.mnColCursor )      nRet |= CSV_DIFF_GRIDCURSOR;
@@ -241,7 +245,7 @@ void ScCsvControl::Execute( ScCsvCmdType eType, sal_Int32 nParam1, sal_Int32 nPa
 
 sal_Int32 ScCsvControl::GetVisPosCount() const
 {
-    return (mrData.mnWinWidth - GetOffsetX()) / GetCharWidth() + 1;
+    return (mrData.mnWinWidth - GetHdrWidth()) / GetCharWidth();
 }
 
 sal_Int32 ScCsvControl::GetMaxPosOffset() const
@@ -259,19 +263,34 @@ bool ScCsvControl::IsVisibleSplitPos( sal_Int32 nPos ) const
     return IsValidSplitPos( nPos ) && (GetFirstVisPos() <= nPos) && (nPos <= GetLastVisPos());
 }
 
+sal_Int32 ScCsvControl::GetHdrX() const
+{
+    return IsRTL() ? (mrData.mnWinWidth - GetHdrWidth()) : 0;
+}
+
+sal_Int32 ScCsvControl::GetFirstX() const
+{
+    return IsRTL() ? 0 : GetHdrWidth();
+}
+
+sal_Int32 ScCsvControl::GetLastX() const
+{
+    return mrData.mnWinWidth - (IsRTL() ? GetHdrWidth() : 0) - 1;
+}
+
 sal_Int32 ScCsvControl::GetX( sal_Int32 nPos ) const
 {
-    return GetOffsetX() + (nPos - GetFirstVisPos()) * GetCharWidth();
+    return GetFirstX() + (nPos - GetFirstVisPos()) * GetCharWidth();
 }
 
 sal_Int32 ScCsvControl::GetPosFromX( sal_Int32 nX ) const
 {
-    return (nX - GetOffsetX() + GetCharWidth() / 2) / GetCharWidth() + GetFirstVisPos();
+    return (nX - GetFirstX() + GetCharWidth() / 2) / GetCharWidth() + GetFirstVisPos();
 }
 
 sal_Int32 ScCsvControl::GetVisLineCount() const
 {
-    return (mrData.mnWinHeight - GetOffsetY() - 2) / GetLineHeight() + 1;
+    return (mrData.mnWinHeight - GetHdrHeight() - 2) / GetLineHeight() + 1;
 }
 
 sal_Int32 ScCsvControl::GetLastVisLine() const
@@ -296,12 +315,12 @@ bool ScCsvControl::IsVisibleLine( sal_Int32 nLine ) const
 
 sal_Int32 ScCsvControl::GetY( sal_Int32 nLine ) const
 {
-    return GetOffsetY() + (nLine - GetFirstVisLine()) * GetLineHeight();
+    return GetHdrHeight() + (nLine - GetFirstVisLine()) * GetLineHeight();
 }
 
 sal_Int32 ScCsvControl::GetLineFromY( sal_Int32 nY ) const
 {
-    return (nY - GetOffsetY()) / GetLineHeight() + GetFirstVisLine();
+    return (nY - GetHdrHeight()) / GetLineHeight() + GetFirstVisLine();
 }
 
 
diff --git a/sc/source/ui/dbgui/csvgrid.cxx b/sc/source/ui/dbgui/csvgrid.cxx
index 6ad3b35578c1..4bb3d521ff38 100644
--- a/sc/source/ui/dbgui/csvgrid.cxx
+++ b/sc/source/ui/dbgui/csvgrid.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: csvgrid.cxx,v $
  *
- *  $Revision: 1.15 $
+ *  $Revision: 1.16 $
  *
- *  last change: $Author: dr $ $Date: 2002-10-22 10:35:08 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:52 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -72,8 +72,8 @@
 
 #include 
 
-#ifndef _SVX_COLORCFG_HXX
-#include 
+#ifndef INCLUDED_SVTOOLS_COLORCFG_HXX
+#include 
 #endif
 #ifndef _SFXSMPLHINT_HXX
 #include 
@@ -147,6 +147,7 @@ ScCsvGrid::ScCsvGrid( ScCsvControl& rParent ) :
 
     maPopup.SetMenuFlags( maPopup.GetMenuFlags() | MENU_FLAG_NOAUTOMNEMONICS );
 
+    EnableRTL( false ); // #107812# RTL
     InitColors();
     InitFonts();
     ImplClearSplits();
@@ -168,7 +169,7 @@ void ScCsvGrid::UpdateLayoutData()
     Execute( CSVCMD_SETCHARWIDTH, GetTextWidth( String( 'X' ) ) );
     Execute( CSVCMD_SETLINEHEIGHT, GetTextHeight() + 1 );
     SetFont( maHeaderFont );
-    Execute( CSVCMD_SETOFFSETY, GetTextHeight() + 1 );
+    Execute( CSVCMD_SETHDRHEIGHT, GetTextHeight() + 1 );
     UpdateOffsetX();
     EnableRepaint();
 }
@@ -179,7 +180,7 @@ void ScCsvGrid::UpdateOffsetX()
     sal_Int32 nDigits = 2;
     while( nLastLine /= 10 ) ++nDigits;
     nDigits = Max( nDigits, 3L );
-    Execute( CSVCMD_SETOFFSETX, GetTextWidth( String( '0' ) ) * nDigits );
+    Execute( CSVCMD_SETHDRWIDTH, GetTextWidth( String( '0' ) ) * nDigits );
 }
 
 void ScCsvGrid::ApplyLayout( const ScCsvLayoutData& rOldData )
@@ -256,10 +257,10 @@ sal_Int32 ScCsvGrid::GetNoScrollCol( sal_Int32 nPos ) const
 
 void ScCsvGrid::InitColors()
 {
-    maBackColor = Color( mrColorConfig.GetColorValue( ::svx::DOCCOLOR ).nColor );
-    maGridColor = Color( mrColorConfig.GetColorValue( ::svx::CALCGRID ).nColor );
-    maGridPBColor = Color( mrColorConfig.GetColorValue( ::svx::CALCPAGEBREAK ).nColor );
-    maAppBackColor = Color( mrColorConfig.GetColorValue( ::svx::APPBACKGROUND ).nColor );
+    maBackColor = Color( mrColorConfig.GetColorValue( ::svtools::DOCCOLOR ).nColor );
+    maGridColor = Color( mrColorConfig.GetColorValue( ::svtools::CALCGRID ).nColor );
+    maGridPBColor = Color( mrColorConfig.GetColorValue( ::svtools::CALCPAGEBREAK ).nColor );
+    maAppBackColor = Color( mrColorConfig.GetColorValue( ::svtools::APPBACKGROUND ).nColor );
 
     const StyleSettings& rSett = GetSettings().GetStyleSettings();
     maTextColor = rSett.GetButtonTextColor();
@@ -471,8 +472,9 @@ sal_Int32 ScCsvGrid::GetColumnX( sal_uInt32 nColIndex ) const
 
 sal_uInt32 ScCsvGrid::GetColumnFromX( sal_Int32 nX ) const
 {
-    sal_Int32 nPos = (nX - GetOffsetX()) / GetCharWidth() + GetFirstVisPos();
-    return (nPos >= GetFirstVisPos()) ? GetColumnFromPos( nPos ) : CSV_COLUMN_INVALID;
+    sal_Int32 nPos = (nX - GetFirstX()) / GetCharWidth() + GetFirstVisPos();
+    return ((GetFirstVisPos() <= nPos) && (nPos <= GetLastVisPos())) ?
+        GetColumnFromPos( nPos ) : CSV_COLUMN_INVALID;
 }
 
 sal_uInt32 ScCsvGrid::GetColumnFromPos( sal_Int32 nPos ) const
@@ -889,9 +891,9 @@ void ScCsvGrid::MouseButtonDown( const MouseEvent& rMEvt )
 
     if( rMEvt.IsLeft() )
     {
-        if( aPos.X() < GetOffsetX() )
+        if( (GetFirstX() > aPos.X()) || (aPos.X() > GetLastX()) )   // in header column
         {
-            if( aPos.Y() <= GetOffsetY() )
+            if( aPos.Y() <= GetHdrHeight() )
                 SelectAll();
         }
         else if( IsValidColumn( nColIx ) )
@@ -912,7 +914,7 @@ void ScCsvGrid::Tracking( const TrackingEvent& rTEvt )
         DisableRepaint();
         const MouseEvent& rMEvt = rTEvt.GetMouseEvent();
 
-        sal_Int32 nPos = (rMEvt.GetPosPixel().X() - GetOffsetX()) / GetCharWidth() + GetFirstVisPos();
+        sal_Int32 nPos = (rMEvt.GetPosPixel().X() - GetFirstX()) / GetCharWidth() + GetFirstVisPos();
         // on mouse tracking: keep position valid
         nPos = Max( Min( nPos, GetPosCount() - 1L ), 0L );
         Execute( CSVCMD_MAKEPOSVISIBLE, nPos );
@@ -991,7 +993,7 @@ void ScCsvGrid::Command( const CommandEvent& rCEvt )
             {
                 Point aPos( rCEvt.GetMousePosPixel() );
                 sal_uInt32 nColIx = GetColumnFromX( aPos.X() );
-                if( IsValidColumn( nColIx ) && (aPos.X() >= GetOffsetX()) )
+                if( IsValidColumn( nColIx ) && (GetFirstX() <= aPos.X()) && (aPos.X() <= GetLastX()) )
                 {
                     if( !IsSelected( nColIx ) )
                         DoSelectAction( nColIx, 0 );    // focus & select
@@ -1003,7 +1005,7 @@ void ScCsvGrid::Command( const CommandEvent& rCEvt )
                 sal_uInt32 nColIx = GetFocusColumn();
                 if( !IsSelected( nColIx ) )
                     Select( nColIx );
-                sal_Int32 nX1 = Max( GetColumnX( nColIx ), GetOffsetX() );
+                sal_Int32 nX1 = Max( GetColumnX( nColIx ), GetFirstX() );
                 sal_Int32 nX2 = Min( GetColumnX( nColIx + 1 ), GetWidth() );
                 ExecutePopup( Point( (nX1 + nX2) / 2, GetHeight() / 2 ) );
             }
@@ -1079,18 +1081,19 @@ EditEngine* ScCsvGrid::GetEditEngine()
 void ScCsvGrid::ImplSetColumnClipRegion( OutputDevice& rOutDev, sal_uInt32 nColIndex )
 {
     rOutDev.SetClipRegion( Region( Rectangle(
-        Max( GetColumnX( nColIndex ), GetOffsetX() ) + 1, 0,
-        GetColumnX( nColIndex + 1 ), GetHeight() - 1 ) ) );
+        Max( GetColumnX( nColIndex ), GetFirstX() ) + 1, 0,
+        Min( GetColumnX( nColIndex + 1 ), GetLastX() ), GetHeight() - 1 ) ) );
 }
 
 void ScCsvGrid::ImplDrawColumnHeader( OutputDevice& rOutDev, sal_uInt32 nColIndex, Color aFillColor )
 {
     sal_Int32 nX1 = GetColumnX( nColIndex ) + 1;
     sal_Int32 nX2 = GetColumnX( nColIndex + 1 );
+    sal_Int32 nHdrHt = GetHdrHeight();
 
     rOutDev.SetLineColor();
     rOutDev.SetFillColor( aFillColor );
-    rOutDev.DrawRect( Rectangle( nX1, 0, nX2, GetOffsetY() ) );
+    rOutDev.DrawRect( Rectangle( nX1, 0, nX2, nHdrHt ) );
 
     rOutDev.SetFont( maHeaderFont );
     rOutDev.SetTextColor( maTextColor );
@@ -1098,8 +1101,8 @@ void ScCsvGrid::ImplDrawColumnHeader( OutputDevice& rOutDev, sal_uInt32 nColInde
     rOutDev.DrawText( Point( nX1 + 1, 0 ), GetColumnTypeName( nColIndex ) );
 
     rOutDev.SetLineColor( maHeaderGridColor );
-    rOutDev.DrawLine( Point( nX1, GetOffsetY() ), Point( nX2, GetOffsetY() ) );
-    rOutDev.DrawLine( Point( nX2, 0 ), Point( nX2, GetOffsetY() ) );
+    rOutDev.DrawLine( Point( nX1, nHdrHt ), Point( nX2, nHdrHt ) );
+    rOutDev.DrawLine( Point( nX2, 0 ), Point( nX2, nHdrHt ) );
 }
 
 void ScCsvGrid::ImplDrawCellText( const Point& rPos, const String& rText )
@@ -1133,9 +1136,9 @@ void ScCsvGrid::ImplDrawFirstLineSep( bool bSet )
     if( IsVisibleLine( mnFirstImpLine ) && (mnFirstImpLine != GetFirstVisLine() ) )
     {
         sal_Int32 nY = GetY( mnFirstImpLine );
-        sal_Int32 nX = GetColumnX( GetLastVisColumn() + 1 );
+        sal_Int32 nX = Min( GetColumnX( GetLastVisColumn() + 1 ), GetLastX() );
         maBackgrDev.SetLineColor( bSet ? maGridPBColor : maGridColor );
-        maBackgrDev.DrawLine( Point( GetOffsetX() + 1, nY ), Point( nX, nY ) );
+        maBackgrDev.DrawLine( Point( GetFirstX() + 1, nY ), Point( nX, nY ) );
     }
 }
 
@@ -1149,15 +1152,16 @@ void ScCsvGrid::ImplDrawColumnBackgr( sal_uInt32 nColIndex )
     sal_Int32 nX1 = GetColumnX( nColIndex ) + 1;
     sal_Int32 nX2 = GetColumnX( nColIndex + 1 );
     sal_Int32 nY2 = GetY( GetLastVisLine() + 1 );
+    sal_Int32 nHdrHt = GetHdrHeight();
 
     // grid
     maBackgrDev.SetLineColor();
     maBackgrDev.SetFillColor( maBackColor );
-    Rectangle aRect( nX1, GetOffsetY(), nX2, nY2 );
+    Rectangle aRect( nX1, nHdrHt, nX2, nY2 );
     maBackgrDev.DrawRect( aRect );
     maBackgrDev.SetLineColor( maGridColor );
     maBackgrDev.DrawGrid( aRect, Size( 1, GetLineHeight() ), GRID_HORZLINES );
-    maBackgrDev.DrawLine( Point( nX2, GetOffsetY() ), Point( nX2, nY2 ) );
+    maBackgrDev.DrawLine( Point( nX2, nHdrHt ), Point( nX2, nY2 ) );
     ImplDrawFirstLineSep( true );
 
     // cell texts
@@ -1180,7 +1184,8 @@ void ScCsvGrid::ImplDrawRowHeaders()
 {
     maBackgrDev.SetLineColor();
     maBackgrDev.SetFillColor( maAppBackColor );
-    Rectangle aRect( 0, 0, GetOffsetX(), GetHeight() - 1 );
+    Point aPoint( GetHdrX(), 0 );
+    Rectangle aRect( aPoint, Size( GetHdrWidth() + 1, GetHeight() ) );
     maBackgrDev.DrawRect( aRect );
 
     maBackgrDev.SetFillColor( maHeaderBackColor );
@@ -1195,14 +1200,20 @@ void ScCsvGrid::ImplDrawRowHeaders()
     for( sal_Int32 nLine = GetFirstVisLine(); nLine <= nLastLine; ++nLine )
     {
         String aText( String::CreateFromInt32( nLine + 1 ) );
-        sal_Int32 nX = (GetOffsetX() - maBackgrDev.GetTextWidth( aText )) / 2;
+        sal_Int32 nX = GetHdrX() + (GetHdrWidth() - maBackgrDev.GetTextWidth( aText )) / 2;
         maBackgrDev.DrawText( Point( nX, GetY( nLine ) ), aText );
     }
 
     // grid
     maBackgrDev.SetLineColor( maHeaderGridColor );
-    maBackgrDev.DrawLine( aRect.TopRight(), aRect.BottomRight() );
-    aRect.Top() = GetOffsetY();
+    if( IsRTL() )
+    {
+        maBackgrDev.DrawLine( Point( 0, 0 ), Point( 0, GetHeight() - 1 ) );
+        maBackgrDev.DrawLine( aRect.TopLeft(), aRect.BottomLeft() );
+    }
+    else
+        maBackgrDev.DrawLine( aRect.TopRight(), aRect.BottomRight() );
+    aRect.Top() = GetHdrHeight();
     maBackgrDev.DrawGrid( aRect, Size( 1, GetLineHeight() ), GRID_HORZLINES );
 }
 
@@ -1210,7 +1221,8 @@ void ScCsvGrid::ImplDrawBackgrDev()
 {
     maBackgrDev.SetLineColor();
     maBackgrDev.SetFillColor( maAppBackColor );
-    maBackgrDev.DrawRect( Rectangle( Point( GetOffsetX() + 1, 0 ), maWinSize ) );
+    maBackgrDev.DrawRect( Rectangle(
+        Point( GetFirstX() + 1, 0 ), Size( GetWidth() - GetHdrWidth(), GetHeight() ) ) );
 
     sal_uInt32 nLastCol = GetLastVisColumn();
     for( sal_uInt32 nColIx = GetFirstVisColumn(); nColIx <= nLastCol; ++nColIx )
@@ -1231,7 +1243,7 @@ void ScCsvGrid::ImplDrawColumnSelection( sal_uInt32 nColIndex )
         sal_Int32 nX2 = GetColumnX( nColIndex + 1 );
 
         // header
-        Rectangle aRect( nX1, 0, nX2, GetOffsetY() );
+        Rectangle aRect( nX1, 0, nX2, GetHdrHeight() );
         maGridDev.SetLineColor();
         if( maHeaderBackColor.IsDark() )
             // redraw with light gray background in dark mode
@@ -1244,7 +1256,7 @@ void ScCsvGrid::ImplDrawColumnSelection( sal_uInt32 nColIndex )
         }
 
         // column selection
-        aRect = Rectangle( nX1, GetOffsetY() + 1, nX2, GetY( GetLastVisLine() + 1 ) - 1 );
+        aRect = Rectangle( nX1, GetHdrHeight() + 1, nX2, GetY( GetLastVisLine() + 1 ) - 1 );
         ImplInvertRect( maGridDev, aRect );
     }
 
@@ -1282,30 +1294,37 @@ void ScCsvGrid::ImplDrawHorzScrolled( sal_Int32 nOldPos )
     sal_uInt32 nFirstColIx, nLastColIx;
     if( nPos < nOldPos )
     {
-        aSrc = Point( GetOffsetX() + 1, 0 );
-        aDest = Point( GetOffsetX() + GetCharWidth() * (nOldPos - nPos) + 1, 0 );
+        aSrc = Point( GetFirstX() + 1, 0 );
+        aDest = Point( GetFirstX() + GetCharWidth() * (nOldPos - nPos) + 1, 0 );
         nFirstColIx = GetColumnFromPos( nPos );
         nLastColIx = GetColumnFromPos( nOldPos );
     }
     else
     {
-        aSrc = Point( GetOffsetX() + GetCharWidth() * (nPos - nOldPos) + 1, 0 );
-        aDest = Point( GetOffsetX() + 1, 0 );
+        aSrc = Point( GetFirstX() + GetCharWidth() * (nPos - nOldPos) + 1, 0 );
+        aDest = Point( GetFirstX() + 1, 0 );
         nFirstColIx = GetColumnFromPos( Min( nOldPos + GetVisPosCount(), GetPosCount() ) - 1 );
         nLastColIx = GetColumnFromPos( Min( nPos + GetVisPosCount(), GetPosCount() ) - 1 );
     }
 
     ImplInvertCursor( GetRulerCursorPos() + (nPos - nOldPos) );
+    Rectangle aRectangle( GetFirstX(), 0, GetLastX(), GetHeight() - 1 );
+    Region aClipReg( aRectangle );
+    maBackgrDev.SetClipRegion( aClipReg );
     maBackgrDev.CopyArea( aDest, aSrc, maWinSize );
+    maBackgrDev.SetClipRegion();
+    maGridDev.SetClipRegion( aClipReg );
     maGridDev.CopyArea( aDest, aSrc, maWinSize );
+    maGridDev.SetClipRegion();
     ImplInvertCursor( GetRulerCursorPos() );
+
     for( sal_uInt32 nColIx = nFirstColIx; nColIx <= nLastColIx; ++nColIx )
         ImplDrawColumn( nColIx );
 
     sal_Int32 nLastX = GetX( GetPosCount() ) + 1;
-    if( nLastX < GetWidth() )
+    if( nLastX <= GetLastX() )
     {
-        Rectangle aRect( nLastX, 0, GetWidth() - 1, GetHeight() - 1 );
+        Rectangle aRect( nLastX, 0, GetLastX(), GetHeight() - 1 );
         maBackgrDev.SetLineColor();
         maBackgrDev.SetFillColor( maAppBackColor );
         maBackgrDev.DrawRect( aRect );
@@ -1320,9 +1339,9 @@ void ScCsvGrid::ImplInvertCursor( sal_Int32 nPos )
     if( IsVisibleSplitPos( nPos ) )
     {
         sal_Int32 nX = GetX( nPos ) - 1;
-        Rectangle aRect( Point( nX, 0 ), Size( 3, GetOffsetY() ) );
+        Rectangle aRect( Point( nX, 0 ), Size( 3, GetHdrHeight() ) );
         ImplInvertRect( maGridDev, aRect );
-        aRect.Top() = GetOffsetY() + 1;
+        aRect.Top() = GetHdrHeight() + 1;
         aRect.Bottom() = GetY( GetLastVisLine() + 1 );
         ImplInvertRect( maGridDev, aRect );
     }
@@ -1332,8 +1351,8 @@ void ScCsvGrid::ImplDrawTrackingRect( sal_uInt32 nColIndex )
 {
     if( HasFocus() && IsVisibleColumn( nColIndex ) )
     {
-        sal_Int32 nX1 = Max( GetColumnX( nColIndex ), GetOffsetX() ) + 1;
-        sal_Int32 nX2 = Min( GetColumnX( nColIndex + 1 ), GetWidth() ) - 1;
+        sal_Int32 nX1 = Max( GetColumnX( nColIndex ), GetFirstX() ) + 1;
+        sal_Int32 nX2 = Min( GetColumnX( nColIndex + 1 ) - 1L, GetLastX() );
         sal_Int32 nY2 = Min( GetY( GetLastVisLine() + 1 ), GetHeight() ) - 1;
         InvertTracking( Rectangle( nX1, 0, nX2, nY2 ), SHOWTRACK_SMALL | SHOWTRACK_WINDOW );
     }
diff --git a/sc/source/ui/dbgui/csvruler.cxx b/sc/source/ui/dbgui/csvruler.cxx
index 1012da5f0ba4..18ab6b4048c0 100644
--- a/sc/source/ui/dbgui/csvruler.cxx
+++ b/sc/source/ui/dbgui/csvruler.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: csvruler.cxx,v $
  *
- *  $Revision: 1.8 $
+ *  $Revision: 1.9 $
  *
- *  last change: $Author: dr $ $Date: 2002-10-22 10:35:31 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:52 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -81,6 +81,7 @@ ScCsvRuler::ScCsvRuler( ScCsvControl& rParent ) :
     ScCsvControl( rParent ),
     mnPosCursorLast( 1 )
 {
+    EnableRTL( false ); // #107812# RTL
     InitColors();
     InitSizeData();
     maBackgrDev.SetFont( GetFont() );
@@ -137,10 +138,10 @@ void ScCsvRuler::InitSizeData()
 
     mnSplitSize = (GetCharWidth() * 3 / 5) | 1; // make an odd number
 
-    sal_Int32 nActiveWidth = Min( GetWidth() - GetOffsetX(), GetPosCount() * GetCharWidth() );
+    sal_Int32 nActiveWidth = Min( GetWidth() - GetHdrWidth(), GetPosCount() * GetCharWidth() );
     sal_Int32 nActiveHeight = GetTextHeight();
 
-    maActiveRect.SetPos( Point( GetOffsetX(), (GetHeight() - nActiveHeight - 1) / 2 ) );
+    maActiveRect.SetPos( Point( GetFirstX(), (GetHeight() - nActiveHeight - 1) / 2 ) );
     maActiveRect.SetSize( Size( nActiveWidth, nActiveHeight ) );
 
     maBackgrDev.SetOutputSizePixel( maWinSize );
@@ -511,8 +512,8 @@ void ScCsvRuler::ImplDrawArea( sal_Int32 nPosX, sal_Int32 nWidth )
     maBackgrDev.DrawRect( aRect );
 
     aRect = maActiveRect;
-    aRect.Left() = Max( GetOffsetX(), nPosX );
-    aRect.Right() = Min( GetX( GetPosCount() ), nPosX + nWidth - 1L );
+    aRect.Left() = Max( GetFirstX(), nPosX );
+    aRect.Right() = Min( Min( GetX( GetPosCount() ), GetLastX() ), nPosX + nWidth - 1L );
     if( aRect.Left() <= aRect.Right() )
     {
         maBackgrDev.SetFillColor( maActiveColor );
@@ -534,7 +535,7 @@ void ScCsvRuler::ImplDrawBackgrDev()
     sal_Int32 nPos;
 
     sal_Int32 nFirstPos = Max( GetPosFromX( 0 ) - 1L, 0L );
-    sal_Int32 nLastPos = GetLastVisPos();
+    sal_Int32 nLastPos = GetPosFromX( GetWidth() );
     sal_Int32 nY = (maActiveRect.Top() + maActiveRect.Bottom()) / 2;
     for( nPos = nFirstPos; nPos <= nLastPos; ++nPos )
     {
diff --git a/sc/source/ui/dbgui/csvtablebox.cxx b/sc/source/ui/dbgui/csvtablebox.cxx
index c0f03d5b7f5a..aa2e0b4c270e 100644
--- a/sc/source/ui/dbgui/csvtablebox.cxx
+++ b/sc/source/ui/dbgui/csvtablebox.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: csvtablebox.cxx,v $
  *
- *  $Revision: 1.6 $
+ *  $Revision: 1.7 $
  *
- *  last change: $Author: dr $ $Date: 2002-08-16 12:59:09 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:52 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -149,6 +149,7 @@ void ScCsvTableBox::Init()
     mbFixedMode = false;
     mnFixedWidth = 1;
 
+    maHScroll.EnableRTL( false ); // #107812# RTL
     maHScroll.SetLineSize( 1 );
     maVScroll.SetLineSize( 1 );
 
@@ -236,7 +237,7 @@ void ScCsvTableBox::MakePosVisible( sal_Int32 nPos )
         if( nPos - CSV_SCROLL_DIST + 1 <= GetFirstVisPos() )
             Execute( CSVCMD_SETPOSOFFSET, nPos - CSV_SCROLL_DIST );
         else if( nPos + CSV_SCROLL_DIST >= GetLastVisPos() )
-            Execute( CSVCMD_SETPOSOFFSET, nPos - GetVisPosCount() + CSV_SCROLL_DIST + 1 );
+            Execute( CSVCMD_SETPOSOFFSET, nPos - GetVisPosCount() + CSV_SCROLL_DIST );
     }
 }
 
@@ -412,8 +413,8 @@ IMPL_LINK( ScCsvTableBox, CsvCmdHdl, ScCsvControl*, pCtrl )
         case CSVCMD_SETPOSOFFSET:
             ImplSetPosOffset( nParam1 );
         break;
-        case CSVCMD_SETOFFSETX:
-            maData.mnOffsetX = Max( nParam1, 0L );
+        case CSVCMD_SETHDRWIDTH:
+            maData.mnHdrWidth = Max( nParam1, 0L );
             ImplSetPosOffset( GetFirstVisPos() );
         break;
         case CSVCMD_SETCHARWIDTH:
@@ -427,8 +428,8 @@ IMPL_LINK( ScCsvTableBox, CsvCmdHdl, ScCsvControl*, pCtrl )
         case CSVCMD_SETLINEOFFSET:
             ImplSetLineOffset( nParam1 );
         break;
-        case CSVCMD_SETOFFSETY:
-            maData.mnOffsetY = Max( nParam1, 0L );
+        case CSVCMD_SETHDRHEIGHT:
+            maData.mnHdrHeight = Max( nParam1, 0L );
             ImplSetLineOffset( GetFirstVisLine() );
         break;
         case CSVCMD_SETLINEHEIGHT:
diff --git a/sc/source/ui/dbgui/dapitype.src b/sc/source/ui/dbgui/dapitype.src
index 0a0e27d06125..275f0153ca9b 100644
--- a/sc/source/ui/dbgui/dapitype.src
+++ b/sc/source/ui/dbgui/dapitype.src
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: dapitype.src,v $
  *
- *  $Revision: 1.27 $
+ *  $Revision: 1.28 $
  *
- *  last change: $Author: kz $ $Date: 2002-09-05 18:48:56 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:53 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -103,7 +103,7 @@ ModalDialog RID_SCDLG_DAPITYPE
         Text[ portuguese ] = "Seleco ~activa";
         Text[ russian ] = "~ ";
         Text[ greek ] = " ";
-        Text[ dutch ] = "~Actuele selectie";
+        Text[ dutch ] = "~Huidige selectie";
         Text[ french ] = "Slection ~active";
         Text[ spanish ] = "Seleccin a~ctual";
         Text[ italian ] = "Selezione ~attuale";
@@ -120,6 +120,7 @@ ModalDialog RID_SCDLG_DAPITYPE
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Sele~cci actual";
         Text[ finnish ] = "~Nykyinen valinta";
+        Text[ thai ] = "การเลือก~ปัจจุบัน";
     };
     RadioButton BTN_DATABASE
     {
@@ -130,7 +131,7 @@ ModalDialog RID_SCDLG_DAPITYPE
         TabStop = TRUE ;
         Text[ english_us ] = "~Data source registered in %PRODUCTNAME";
         Text[ portuguese ] = "~Fonte de dados ligada ao %PRODUCTNAME";
-        Text[ russian ] = "~ , .  %PRODUCTNAME";
+        Text[ russian ] = "~ ,   %PRODUCTNAME";
         Text[ greek ] = " %PRODUCTNAME    ";
         Text[ dutch ] = "~In %PRODUCTNAME aangemelde gegevensbron";
         Text[ french ] = "Source de donnes sous %PRODUCTNAME";
@@ -141,14 +142,15 @@ ModalDialog RID_SCDLG_DAPITYPE
         Text[ polish ] = "Zarejestr. ~w %PRODUCTNAME rdo danych";
         Text[ portuguese_brazilian ] = "Database source";
         Text[ japanese ] = "%PRODUCTNAME に登録したデータソース(~D)";
-        Text[ korean ] = "데이터베이스 소스(~D)";
+        Text[ korean ] = "%PRODUCTNAME에 등록된 데이터 원본(~D)";
         Text[ chinese_simplified ] = "在 %PRODUCTNAME 中登记的数据源(~D)";
         Text[ chinese_traditional ] = "%PRODUCTNAME 已經登記的資料源(~D)";
         Text[ arabic ] = "    %PRODUCTNAME";
         Text[ turkish ] = "%PRODUCTNAME'de kaytl veri kayna";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "F~ont de dades registrada a %PRODUCTNAME";
-        Text[ finnish ] = "~Tietolhde rekisterity ohjelmaan %PRODUCTNAME";
+        Text[ finnish ] = "~Tietolhde rekisterity %PRODUCTNAMEeen";
+        Text[ thai ] = "แหล่ง~ข้อมูลลงทะเบียนใน %PRODUCTNAME";
     };
     RadioButton BTN_EXTERNAL
     {
@@ -163,21 +165,22 @@ ModalDialog RID_SCDLG_DAPITYPE
         Text[ greek ] = "  /";
         Text[ dutch ] = "~Externe bron/interface";
         Text[ french ] = "Source/interface ~externe";
-        Text[ spanish ] = "~Fuente externa/Interfaz";
+        Text[ spanish ] = "~Fuente externa/interfaz";
         Text[ italian ] = "Sorgente ~esterna/interfaccia";
         Text[ danish ] = "Ekstern kilde/grnseflade";
         Text[ swedish ] = "Extern klla/grnssnitt";
         Text[ polish ] = "~Zewntrzne(y) rdo/interfejs";
         Text[ portuguese_brazilian ] = "External source/interface";
         Text[ japanese ] = "外部ソース/インターフェイス(~E)";
-        Text[ korean ] = "외부 소스/인터 페이스(~E)";
+        Text[ korean ] = "외부 원본/인터페이스(~E)";
         Text[ chinese_simplified ] = "外部源/界面(~E)";
         Text[ chinese_traditional ] = "外部資料源/界面(~E)";
         Text[ arabic ] = " / ";
         Text[ turkish ] = "~D kaynak/arabirim";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Font/interfcie ~externa";
-        Text[ finnish ] = "~Ulkoinen lhde/liittym";
+        Text[ finnish ] = "~Ulkoinen lhde tai liittym";
+        Text[ thai ] = "ที่มา~ภายนอก/ส่วนต่อประสาน";
     };
     FixedLine FL_FRAME
     {
@@ -206,6 +209,7 @@ ModalDialog RID_SCDLG_DAPITYPE
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Selecci";
         Text[ finnish ] = "Valinta";
+        Text[ thai ] = "เลือก";
     };
     Text[ english_us ] = "Select Source";
     Text[ portuguese ] = "Seleccionar fonte";
@@ -220,7 +224,7 @@ ModalDialog RID_SCDLG_DAPITYPE
     Text[ polish ] = "Wybierz rdo";
     Text[ portuguese_brazilian ] = "Select source";
     Text[ japanese ] = "ソースの選択";
-    Text[ korean ] = "소스 선택";
+    Text[ korean ] = "원본 선택";
     Text[ chinese_simplified ] = "选择源";
     Text[ chinese_traditional ] = "選擇資料源";
     Text[ arabic ] = " ";
@@ -228,6 +232,7 @@ ModalDialog RID_SCDLG_DAPITYPE
     Text[ language_user1 ] = " ";
     Text[ catalan ] = "Seleccioneu la font";
     Text[ finnish ] = "Valitse lhde";
+    Text[ thai ] = "เลือกที่มา";
 };
 
 
@@ -290,6 +295,7 @@ ModalDialog RID_SCDLG_DAPISERVICE
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "~Servei";
         Text[ finnish ] = "~Palvelu";
+        Text[ thai ] = "~บริการ";
     };
     ListBox LB_SERVICE
     {
@@ -318,7 +324,7 @@ ModalDialog RID_SCDLG_DAPISERVICE
         Text[ polish ] = "rdo";
         Text[ portuguese_brazilian ] = "Source";
         Text[ japanese ] = "ソース(~U)";
-        Text[ korean ] = "소스(~U)";
+        Text[ korean ] = "원본(~U)";
         Text[ chinese_simplified ] = "源(~U)";
         Text[ chinese_traditional ] = "資料源(~U)";
         Text[ arabic ] = "";
@@ -326,6 +332,7 @@ ModalDialog RID_SCDLG_DAPISERVICE
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "F~ont";
         Text[ finnish ] = "Lh~de";
+        Text[ thai ] = "ที่~มา";
     };
     Edit ED_SOURCE
     {
@@ -361,6 +368,7 @@ ModalDialog RID_SCDLG_DAPISERVICE
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "~Nom";
         Text[ finnish ] = "~Nimi";
+        Text[ thai ] = "~ชื่อ";
     };
     Edit ED_NAME
     {
@@ -396,6 +404,7 @@ ModalDialog RID_SCDLG_DAPISERVICE
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "U~suari";
         Text[ finnish ] = "Kyt~tj";
+        Text[ thai ] = "ผู้ใ~ช้";
     };
     Edit ED_USER
     {
@@ -423,7 +432,7 @@ ModalDialog RID_SCDLG_DAPISERVICE
         Text[ polish ] = "Haso";
         Text[ portuguese_brazilian ] = "Password";
         Text[ japanese ] = "パスワード(~P)";
-        Text[ korean ] = "패스워드(~P)";
+        Text[ korean ] = "암호(~P)";
         Text[ chinese_simplified ] = "密码(~P)";
         Text[ chinese_traditional ] = "密碼(~P)";
         Text[ arabic ] = " ";
@@ -431,6 +440,7 @@ ModalDialog RID_SCDLG_DAPISERVICE
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Con~trasenya";
         Text[ finnish ] = "~Salasana";
+        Text[ thai ] = "~รหัสผ่าน";
     };
     Edit ED_PASSWD
     {
@@ -467,10 +477,11 @@ ModalDialog RID_SCDLG_DAPISERVICE
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Selecci";
         Text[ finnish ] = "Valinta";
+        Text[ thai ] = "เลือก";
     };
     Text[ english_us ] = "External Source";
     Text[ portuguese ] = "Fonte de dados externa";
-    Text[ russian ] = "  ";
+    Text[ russian ] = "  ";
     Text[ greek ] = "   ";
     Text[ dutch ] = "Externe bron";
     Text[ french ] = "Source de donnes externe";
@@ -481,7 +492,7 @@ ModalDialog RID_SCDLG_DAPISERVICE
     Text[ polish ] = "Zewntrzne rdo danych";
     Text[ portuguese_brazilian ] = "External source";
     Text[ japanese ] = "外部データソース";
-    Text[ korean ] = "외부 데이터소스";
+    Text[ korean ] = "외부 데이터 원본";
     Text[ chinese_simplified ] = "外部数据源";
     Text[ chinese_traditional ] = "外部資料源";
     Text[ arabic ] = "  ";
@@ -489,6 +500,7 @@ ModalDialog RID_SCDLG_DAPISERVICE
     Text[ language_user1 ] = " ";
     Text[ catalan ] = "Font externa";
     Text[ finnish ] = "Ulkoinen lhde";
+    Text[ thai ] = "ที่มาภายนอก";
 };
 
 
@@ -552,6 +564,7 @@ ModalDialog RID_SCDLG_DAPIDATA
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "~Base de dades";
         Text[ finnish ] = "~Tietokanta";
+        Text[ thai ] = "~ฐานข้อมูล";
     };
     ListBox LB_DATABASE
     {
@@ -570,7 +583,7 @@ ModalDialog RID_SCDLG_DAPIDATA
         Text [ ENGLISH ] = "Data source" ;
         Text[ english_us ] = "Data so~urce";
         Text[ portuguese ] = "Fonte de ~dados";
-        Text[ russian ] = " ";
+        Text[ russian ] = " ";
         Text[ greek ] = " ";
         Text[ dutch ] = "~Gegevensbron";
         Text[ french ] = "~Source de donnes";
@@ -581,7 +594,7 @@ ModalDialog RID_SCDLG_DAPIDATA
         Text[ polish ] = "rdo danych";
         Text[ portuguese_brazilian ] = "Data source";
         Text[ japanese ] = "データソース(~U)";
-        Text[ korean ] = "데이터 관리(~U)";
+        Text[ korean ] = "데이터 원본(~U)";
         Text[ chinese_simplified ] = "数据源(~U)";
         Text[ chinese_traditional ] = "資料源(~U)";
         Text[ arabic ] = " ";
@@ -589,6 +602,7 @@ ModalDialog RID_SCDLG_DAPIDATA
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "~Font de dades";
         Text[ finnish ] = "Tieto~lhde";
+        Text[ thai ] = "แห~ล่งข้อมูล";
     };
     ComboBox CB_OBJECT
     {
@@ -626,6 +640,7 @@ ModalDialog RID_SCDLG_DAPIDATA
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "~Tipus";
         Text[ finnish ] = "~Tyyppi";
+        Text[ thai ] = "~ชนิด";
     };
     ListBox LB_OBJTYPE
     {
@@ -671,7 +686,7 @@ ModalDialog RID_SCDLG_DAPIDATA
     };
     StringList [ russian ] =
     {
-            < "" ; Default ; > ;
+            < "" ; Default ; > ;
         < "" ; Default ; > ;
         < "Sql" ; Default ; > ;
         < "Sql [Native]" ; Default ; > ;
@@ -749,7 +764,7 @@ ModalDialog RID_SCDLG_DAPIDATA
     StringList [ korean ] =
     {
             < "시트" ; Default ; > ;
-        < "질의" ; Default ; > ;
+        < "쿼리" ; Default ; > ;
         < "Sql" ; Default ; > ;
         < "Sql [Native]" ; Default ; > ;
     };
@@ -785,15 +800,22 @@ ModalDialog RID_SCDLG_DAPIDATA
     {
             < "Full" ; Default ; > ;
         < "Consulta" ; Default ; > ;
-        < "Sql" ; Default ; > ;
+        < "SQL" ; Default ; > ;
         < "SQL [natiu]" ; Default ; > ;
     };
     StringList [ finnish ] =
     {
-            < "Lomake" ; Default ; > ;
+            < "Taulukko" ; Default ; > ;
         < "Kysely" ; Default ; > ;
         < "Sql" ; Default ; > ;
-        < "Sql [alkuperinen]" ; Default ; > ;
+        < "Sql [suora]" ; Default ; > ;
+    };
+    StringList [ thai ] =
+    {
+         < "แผ่นงาน" ; Default ; > ;
+        < "แบบสอบถาม" ; Default ; > ;
+        < "Sql" ; Default ; > ;
+        < "Sql [โดยกำเนิด]" ; Default ; > ;
     };
     };
 
@@ -824,6 +846,7 @@ ModalDialog RID_SCDLG_DAPIDATA
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Selecci";
         Text[ finnish ] = "Valinta";
+        Text[ thai ] = "เลือก";
     };
     Text[ english_us ] = "Select Data Source";
     Text[ portuguese ] = "Seleccionar fonte de dados";
@@ -838,7 +861,7 @@ ModalDialog RID_SCDLG_DAPIDATA
     Text[ polish ] = "Wybierz rdo danych";
     Text[ portuguese_brazilian ] = "Select data source";
     Text[ japanese ] = "データソースの選択";
-    Text[ korean ] = "데이터 소스 선택";
+    Text[ korean ] = "데이터 원본 선택";
     Text[ chinese_simplified ] = "选择数据源";
     Text[ chinese_traditional ] = "選擇資料源";
     Text[ arabic ] = "  ";
@@ -846,5 +869,11 @@ ModalDialog RID_SCDLG_DAPIDATA
     Text[ language_user1 ] = " ";
     Text[ catalan ] = "Seleccioneu la font de dades";
     Text[ finnish ] = "Valitse tietolhde";
+    Text[ thai ] = "เลือกแหล่งข้อมูล";
 };
 
+
+
+
+
+
diff --git a/sc/source/ui/dbgui/fieldwnd.cxx b/sc/source/ui/dbgui/fieldwnd.cxx
index 21559517027d..891bcbd8191f 100644
--- a/sc/source/ui/dbgui/fieldwnd.cxx
+++ b/sc/source/ui/dbgui/fieldwnd.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: fieldwnd.cxx,v $
  *
- *  $Revision: 1.8 $
+ *  $Revision: 1.9 $
  *
- *  last change: $Author: dr $ $Date: 2002-10-21 17:48:54 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:53 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -98,6 +98,7 @@ ScDPFieldWindow::ScDPFieldWindow(
     eType( eFieldType ),
     nFieldCount( 0 ),
     nFieldSelected( 0 ),
+    mbAppRTL( !!Application::GetSettings().GetLayoutRTL() ),
     pAccessible( NULL )
 {
     Init();
@@ -167,6 +168,7 @@ void ScDPFieldWindow::GetStyleSettings()
     aFaceColor = rStyleSet.GetFaceColor();
     aWinColor = rStyleSet.GetWindowColor();
     aTextColor = rStyleSet.GetButtonTextColor();
+    aWinTextColor = rStyleSet.GetWindowTextColor();
 }
 
 //-------------------------------------------------------------------
@@ -247,11 +249,14 @@ void ScDPFieldWindow::DrawBackground( OutputDevice& rDev )
     }
     else
     {
-        rDev.SetLineColor( aTextColor );
+        rDev.SetLineColor( aWinTextColor );
         rDev.SetFillColor( aWinColor );
         rDev.DrawRect( Rectangle( aPos0, aSize ) );
-        rDev.SetTextColor( aTextColor );
+        rDev.SetTextColor( aWinTextColor );
+        BOOL bOldRTL = rDev.IsRTLEnabled();
+        rDev.EnableRTL( false );
         rDev.DrawCtrlText( aTextPos, GetText() );
+        rDev.EnableRTL( bOldRTL );
     }
 }
 
@@ -262,6 +267,8 @@ void ScDPFieldWindow::DrawField(
         BOOL bSelected )
 {
     VirtualDevice aVirDev( rDev );
+    aVirDev.EnableRTL( true );
+
     Size aDevSize( rRect.GetSize() );
     long    nWidth       = aDevSize.Width();
     long    nHeight      = aDevSize.Height();
@@ -274,19 +281,21 @@ void ScDPFieldWindow::DrawField(
     aVirDev.SetOutputSizePixel( aDevSize );
     aVirDev.SetFont( rDev.GetFont() );
     DecorationView aDecoView( &aVirDev );
-    aDecoView.DrawButton( Rectangle( Point(), aDevSize ), bSelected ? BUTTON_DRAW_DEFAULT : 0 );
+    aDecoView.DrawButton( Rectangle( Point( 0, 0 ), aDevSize ), bSelected ? BUTTON_DRAW_DEFAULT : 0 );
     aVirDev.SetTextColor( aTextColor );
-    aVirDev.DrawText( aLabelPos, rText );                   // text
-    rDev.DrawBitmap( rRect.TopLeft(), aVirDev.GetBitmap( Point(), aDevSize ) );
+    aVirDev.EnableRTL( false );
+    aVirDev.DrawText( aLabelPos, rText );
+    rDev.DrawBitmap( rRect.TopLeft(), aVirDev.GetBitmap( Point( 0, 0 ), aDevSize ) );
 }
 
 void ScDPFieldWindow::Redraw()
 {
     VirtualDevice   aVirDev;
+    aVirDev.EnableRTL( true );
+
     Point           aPos0;
     Size            aSize( GetSizePixel() );
     Font            aFont( GetFont() );         // Font vom Window
-
     aFont.SetTransparent( TRUE );
     aVirDev.SetFont( aFont );
     aVirDev.SetOutputSizePixel( aSize );
@@ -513,6 +522,10 @@ void __EXPORT ScDPFieldWindow::KeyInput( const KeyEvent& rKEvt )
     USHORT nCode = rKeyCode.GetCode();
     BOOL bKeyEvaluated = FALSE;
 
+    // revert wrong cursor direction (left/right) in RTL windows
+    if( ((nCode == KEY_LEFT) || (nCode == KEY_RIGHT)) && mbAppRTL && IsRTLEnabled() )
+        nCode = (nCode == KEY_LEFT) ? KEY_RIGHT : KEY_LEFT;
+
     if( rKeyCode.IsMod1() && (eType != TYPE_SELECT) )
     {
         bKeyEvaluated = TRUE;
diff --git a/sc/source/ui/dbgui/imoptdlg.src b/sc/source/ui/dbgui/imoptdlg.src
index f7c8ca906c3c..deb1829b1471 100644
--- a/sc/source/ui/dbgui/imoptdlg.src
+++ b/sc/source/ui/dbgui/imoptdlg.src
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: imoptdlg.src,v $
  *
- *  $Revision: 1.24 $
+ *  $Revision: 1.25 $
  *
- *  last change: $Author: kz $ $Date: 2002-11-27 16:40:34 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:53 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -287,3 +287,5 @@ ModalDialog RID_SCDLG_IMPORTOPT
     Text[ thai ] = "นำเข้าแฟ้ม";
 };
 
+
+
diff --git a/sc/source/ui/dbgui/pivot.src b/sc/source/ui/dbgui/pivot.src
index 4669d7e3391b..9ebe83d30a35 100644
--- a/sc/source/ui/dbgui/pivot.src
+++ b/sc/source/ui/dbgui/pivot.src
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: pivot.src,v $
  *
- *  $Revision: 1.45 $
+ *  $Revision: 1.46 $
  *
- *  last change: $Author: kz $ $Date: 2002-11-27 16:41:39 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:53 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -219,18 +219,18 @@ ModelessDialog RID_SCDLG_PIVOT_LAYOUT
         Text[ russian ] = "Selection area";
         Text[ greek ] = "Selection area";
         Text[ dutch ] = "Selection area";
-        Text[ french ] = "Selection area";
-        Text[ spanish ] = "Selection area";
+        Text[ french ] = "Zone de slection";
+        Text[ spanish ] = "rea de seleccin";
         Text[ finnish ] = "Selection area";
-        Text[ italian ] = "Selection area";
+        Text[ italian ] = "Area di selezione";
         Text[ danish ] = "Selection area";
-        Text[ swedish ] = "Selection area";
+        Text[ swedish ] = "Markeringsomrde";
         Text[ polish ] = "Selection area";
         Text[ portuguese_brazilian ] = "Selection area";
-        Text[ japanese ] = "Selection area";
-        Text[ korean ] = "Selection area";
-        Text[ chinese_simplified ] = "Selection area";
-        Text[ chinese_traditional ] = "Selection area";
+        Text[ japanese ] = "選択範囲";
+        Text[ korean ] = "영역 선택";
+        Text[ chinese_simplified ] = "选择区域";
+        Text[ chinese_traditional ] = "選取區域";
         Text[ turkish ] = "Selection area";
         Text[ arabic ] = "Selection area";
         Text[ catalan ] = "Selection area";
@@ -334,7 +334,7 @@ ModelessDialog RID_SCDLG_PIVOT_LAYOUT
         Text[ greek ] = "Remove";
         Text[ dutch ] = "Remove";
         Text[ french ] = "Supprimer";
-        Text[ spanish ] = "Eliminar";
+        Text[ spanish ] = "Borrar";
         Text[ finnish ] = "Remove";
         Text[ italian ] = "Deinstallazione";
         Text[ danish ] = "Remove";
@@ -342,7 +342,7 @@ ModelessDialog RID_SCDLG_PIVOT_LAYOUT
         Text[ polish ] = "Remove";
         Text[ portuguese_brazilian ] = "Remove";
         Text[ japanese ] = "削除";
-        Text[ korean ] = "삭제";
+        Text[ korean ] = "제거";
         Text[ chinese_simplified ] = "移除";
         Text[ chinese_traditional ] = "移除";
         Text[ turkish ] = "Remove";
@@ -517,7 +517,7 @@ ModelessDialog RID_SCDLG_PIVOT_LAYOUT
         Text = "Leerzeilen ~ignorieren" ;
         Text [ ENGLISH ] = "~Ignore empty rows" ;
         Text [ norwegian ] = "~Ignorer tomme rader " ;
-        Text [ italian ] = "~Ignorare le righe vuote" ;
+        Text [ italian ] = "~Ignora le righe vuote" ;
         Text [ portuguese_brazilian ] = "~Ignorar fileiras vazias" ;
         Text [ portuguese ] = "~Ignorar linhas vazias" ;
         Text [ finnish ] = "~Ohita tyhjt rivit" ;
@@ -549,7 +549,7 @@ ModelessDialog RID_SCDLG_PIVOT_LAYOUT
         Text = "~Kategorieerkennung" ;
         Text [ ENGLISH ] = "~Detect Categories" ;
         Text [ norwegian ] = "~Finn Kategorier " ;
-        Text [ italian ] = "~Individuare categorie" ;
+        Text [ italian ] = "~Individua categorie" ;
         Text [ portuguese_brazilian ] = "~Detectar Categorias" ;
         Text [ portuguese ] = "~Indicar categorias" ;
         Text [ finnish ] = "~Tunnista luokat" ;
@@ -627,7 +627,7 @@ ModelessDialog RID_SCDLG_PIVOT_LAYOUT
         Text[ chinese_traditional ] = "總計的列(~T)";
         Text[ arabic ] = " ";
         Text[ greek ] = "  ";
-        Text[ korean ] = "모든 행(~T)";
+        Text[ korean ] = "행 합계(~T)";
         Text[ turkish ] = "Satr t~oplam";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "~Total de files";
@@ -712,7 +712,7 @@ ModelessDialog RID_SCDLG_PIVOT_LAYOUT
         Text[ chinese_traditional ] = "平均值 - ";
         Text[ arabic ] = " Average";
         Text[ greek ] = "  - ";
-        Text[ korean ] = "의미- ";
+        Text[ korean ] = "평균값 -  ";
         Text[ turkish ] = "Ortalama - ";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Mitjana - ";
@@ -927,7 +927,7 @@ ModelessDialog RID_SCDLG_PIVOT_LAYOUT
         Text [ french ] = "VarP - " ;
         Text [ swedish ] = "VariansP - " ;
         Text [ dutch ] = "Varianties -" ;
-        Text [ spanish ] = "Var2 -  " ;
+        Text [ spanish ] = "VarP - " ;
         Text [ english_us ] = "VarP - " ;
         Text[ chinese_simplified ] = "方差 - ";
         Text[ russian ] = "  -  ";
@@ -945,3 +945,8 @@ ModelessDialog RID_SCDLG_PIVOT_LAYOUT
     Text[ thai ] = "ข้อมูลนำร่อง";
 };
 
+
+
+
+
+
diff --git a/sc/source/ui/dbgui/pvfundlg.src b/sc/source/ui/dbgui/pvfundlg.src
index a350104e5748..0033ab1b9189 100644
--- a/sc/source/ui/dbgui/pvfundlg.src
+++ b/sc/source/ui/dbgui/pvfundlg.src
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: pvfundlg.src,v $
  *
- *  $Revision: 1.25 $
+ *  $Revision: 1.26 $
  *
- *  last change: $Author: kz $ $Date: 2001-11-16 23:01:19 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:53 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -86,16 +86,16 @@ ModalDialog RID_SCDLG_PIVOTSUBT
         Text [ italian ] = "~Nessuna" ;
         Text [ portuguese_brazilian ] = "~Nenhum" ;
         Text [ portuguese ] = "~Nenhum" ;
-        Text [ finnish ] = "~Ei mit??n" ;
+        Text [ finnish ] = "~Ei mitn" ;
         Text [ danish ] = "Ingen" ;
-        Text [ french ] = "~Aucun(e)" ;
+        Text [ french ] = "Aucun(e)" ;
         Text [ swedish ] = "~Inga" ;
         Text [ dutch ] = "~Geen" ;
         Text [ spanish ] = "~Ningn" ;
         Text [ english_us ] = "~None" ;
         TabStop = TRUE ;
         Text[ chinese_simplified ] = "无(~N)";
-        Text[ russian ] = "";
+        Text[ russian ] = "";
         Text[ polish ] = "Brak";
         Text[ japanese ] = "なし(~N)";
         Text[ chinese_traditional ] = "無(~N)";
@@ -104,7 +104,8 @@ ModalDialog RID_SCDLG_PIVOTSUBT
         Text[ korean ] = "없음(~N)";
         Text[ turkish ] = "~Yok";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "~Ningn";
+        Text[ catalan ] = "~Cap";
+        Text[ thai ] = "ไ~ม่มี";
     };
     RadioButton BTN_AUTO
     {
@@ -113,13 +114,13 @@ ModalDialog RID_SCDLG_PIVOTSUBT
         Text = "~Automatisch" ;
         Text [ ENGLISH ] = "~Auto" ;
         Text [ norwegian ] = "~Auto" ;
-        Text [ italian ] = "~Automatico" ;
+        Text [ italian ] = "Automatico" ;
         Text [ portuguese_brazilian ] = "~Auto" ;
         Text [ portuguese ] = "~Automaticamente" ;
         Text [ finnish ] = "~Automaattinen" ;
         Text [ danish ] = "Automatisk" ;
-        Text [ french ] = "~Automatique" ;
-        Text [ swedish ] = "~Automatisk" ;
+        Text [ french ] = "Automatique" ;
+        Text [ swedish ] = "~Automatiskt" ;
         Text [ dutch ] = "~Automatisch" ;
         Text [ spanish ] = "~Automtico" ;
         Text [ english_us ] = "~Automatic" ;
@@ -134,7 +135,8 @@ ModalDialog RID_SCDLG_PIVOTSUBT
         Text[ korean ] = "자동(~A)";
         Text[ turkish ] = "~Otomatik";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "~Automtico";
+        Text[ catalan ] = "~Automtic";
+        Text[ thai ] = "~อัตโนมัติ";
     };
     RadioButton BTN_USER
     {
@@ -146,9 +148,9 @@ ModalDialog RID_SCDLG_PIVOTSUBT
         Text [ italian ] = "Definito dall'utente" ;
         Text [ portuguese_brazilian ] = "~Definido pelo usu?rio" ;
         Text [ portuguese ] = "Definido pelo ~utilizador" ;
-        Text [ finnish ] = "~K?ytt?j?n m??ritt?m?t" ;
+        Text [ finnish ] = "~Kyttjn mrittmt" ;
         Text [ danish ] = "Brugerdefineret" ;
-        Text [ french ] = "Dfini par l'~utilisateur" ;
+        Text [ french ] = "Dfini par l'utilisateur" ;
         Text [ swedish ] = "~Anvndardefinierade" ;
         Text [ dutch ] = "Ge~bruikergedefinieerd" ;
         Text [ spanish ] = "Definido por el ~usuario" ;
@@ -157,14 +159,15 @@ ModalDialog RID_SCDLG_PIVOTSUBT
         Text[ chinese_simplified ] = "使用者自设(~U)";
         Text[ russian ] = " ";
         Text[ polish ] = "Ustawienia indywidualne";
-        Text[ japanese ] = "ユーザー定義(~U)";
+        Text[ japanese ] = "ユーザー定義(~U)";
         Text[ chinese_traditional ] = "使用者自訂(~U)";
         Text[ arabic ] = "   ";
         Text[ greek ] = "   ";
         Text[ korean ] = "사용자 정의(~U)";
         Text[ turkish ] = "~Kullanc tanml";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Definido por el ~usuario";
+        Text[ catalan ] = "Definit per l'~usuari";
+        Text[ thai ] = "ระบุ~ผู้ใช้";
     };
     MultiListBox LB_FUNC
     {
@@ -262,15 +265,15 @@ ModalDialog RID_SCDLG_PIVOTSUBT
         };
         StringList [ finnish ] =
         {
-            < "Sum" ; Default ; > ;
-            < "Lukum??r?" ; Default ; > ;
+            < "Summa" ; Default ; > ;
+            < "LASKE" ; Default ; > ;
             < "Keskiarvo" ; Default ; > ;
-            < "Enint" ; Default ; > ;
-            < "V?h" ; Default ; > ;
-            < "Tuote" ; Default ; > ;
-            < "M??r? (vain numerot)" ; Default ; > ;
-            < "StDev (vakiopoikkeama, Otos)" ; Default ; > ;
-            < "StDevP (vakiopoikkeama, populaatio)" ; Default ; > ;
+            < "MAKS" ; Default ; > ;
+            < "MIN" ; Default ; > ;
+            < "Tulo" ; Default ; > ;
+            < "LASKE (vain luvut)" ; Default ; > ;
+            < "KESKIHAJONTA (otos)" ; Default ; > ;
+            < "KESKIHAJONTA (populaatio)" ; Default ; > ;
             < "Var (Otos)" ; Default ; > ;
             < "VarP (populaatio)" ; Default ; > ;
         };
@@ -341,8 +344,8 @@ ModalDialog RID_SCDLG_PIVOTSUBT
             < "Cantidad2 (solo nmeros)" ; Default ; > ;
             < "DesvEst (Muestra)" ; Default ; > ;
             < "DesvEstP (Poblacin)" ; Default ; > ;
-            < "Varianza (Muestra)" ; Default ; > ;
-            < "Varianzas (Poblacin)" ; Default ; > ;
+            < "Variancia (muestra)" ; Default ; > ;
+            < "VarP (poblacin)" ; Default ; > ;
         };
         StringList [ english_us ] =
         {
@@ -381,7 +384,7 @@ ModalDialog RID_SCDLG_PIVOTSUBT
         < "" ; Default ; > ;
         < "" ; Default ; > ;
         < "" ; Default ; > ;
-        < " ( )" ; Default ; > ;
+        < " ( )" ; Default ; > ;
         < "  ()" ; Default ; > ;
         < "  ()" ; Default ; > ;
         < "  ()" ; Default ; > ;
@@ -460,16 +463,16 @@ ModalDialog RID_SCDLG_PIVOTSUBT
     StringList [ korean ] =
     {
             < "합계" ; Default ; > ;
-        < "수" ; Default ; > ;
-        < "평균" ; Default ; > ;
+        < "값" ; Default ; > ;
+        < "평균값" ; Default ; > ;
         < "최대" ; Default ; > ;
         < "최소" ; Default ; > ;
         < "곱" ; Default ; > ;
-        < "수 (숫자만)" ; Default ; > ;
-        < "StDev (샘플)" ; Default ; > ;
-        < "StDevP (모집단)" ; Default ; > ;
-        < "분산 (샘플)" ; Default ; > ;
-        < "분산 (모집단)" ; Default ; > ;
+        < "값(숫자만)" ; Default ; > ;
+        < "StDev(샘플)" ; Default ; > ;
+        < "StDevP(모집단)" ; Default ; > ;
+        < "분산(샘플)" ; Default ; > ;
+        < "분산(모집단)" ; Default ; > ;
     };
     StringList [ turkish ] =
     {
@@ -502,16 +505,30 @@ ModalDialog RID_SCDLG_PIVOTSUBT
     StringList [ catalan ] =
     {
             < "Suma" ; Default ; > ;
-        < "Cantidad" ; Default ; > ;
-        < "Promedio" ; Default ; > ;
-        < "Mx" ; Default ; > ;
-        < "Mn" ; Default ; > ;
-        < "Producto" ; Default ; > ;
-        < "Cantidad2 (solo nmeros)" ; Default ; > ;
-        < "DesvEst (Muestra)" ; Default ; > ;
-        < "DesvEstP (Poblacin)" ; Default ; > ;
-        < "Varianza (Muestra)" ; Default ; > ;
-        < "Varianzas (Poblacin)" ; Default ; > ;
+        < "Compta" ; Default ; > ;
+        < "Mitjana" ; Default ; > ;
+        < "Mx." ; Default ; > ;
+        < "Mn." ; Default ; > ;
+        < "Producte" ; Default ; > ;
+        < "Compta (noms els nmeros)" ; Default ; > ;
+        < "StDev (mostra)" ; Default ; > ;
+        < "StDevP (poblaci)" ; Default ; > ;
+        < "Var (mostra)" ; Default ; > ;
+        < "VarP (poblaci)" ; Default ; > ;
+    };
+    StringList [ thai ] =
+    {
+         < "ผลรวม" ; Default ; > ;
+        < "นับ" ; Default ; > ;
+        < "เฉลี่ย" ; Default ; > ;
+        < "มากที่สุด" ; Default ; > ;
+        < "น้อยที่สุด" ; Default ; > ;
+        < "ผลิตภัณฑ์" ; Default ; > ;
+        < "นับ (ตัวเลขเท่านั้น)" ; Default ; > ;
+        < "StDev (ตัวอย่าง)" ; Default ; > ;
+        < "StDevP (ประชากร)" ; Default ; > ;
+        < "Var (ตัวอย่าง)" ; Default ; > ;
+        < "VarP (ประชากร)" ; Default ; > ;
     };
     };
     FixedLine FL_FUNC
@@ -538,15 +555,16 @@ ModalDialog RID_SCDLG_PIVOTSUBT
         Text[ swedish ] = "Visa objekt utan data";
         Text[ polish ] = "Poka elementy bez danych";
         Text[ portuguese_brazilian ] = "Show elements without data";
-        Text[ japanese ] = "データのない要素を表示する(~E)";
+        Text[ japanese ] = "データのない要素を表示する(~E)";
         Text[ korean ] = "데이터 없이 요소 보기(~E)";
         Text[ chinese_simplified ] = "显示不含数据的条目(~E)";
         Text[ chinese_traditional ] = "顯示無數據的單元(~E)";
         Text[ arabic ] = "   ";
         Text[ turkish ] = "~geleri veriler olmadan grntle";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "~Mostrar elementos sin datos";
-        Text[ finnish ] = "N?yt? ~elementit ilman tietoja";
+        Text[ catalan ] = "Mostra els ~elements sense dades";
+        Text[ finnish ] = "Nyt ~elementit ilman tietoja";
+        Text[ thai ] = "แสดง~องค์ประกอบที่ไม่มีข้อมูล";
     };
     FixedText FT_NAMELABEL
     {
@@ -575,7 +593,8 @@ ModalDialog RID_SCDLG_PIVOTSUBT
         Text[ korean ] = "이름:";
         Text[ turkish ] = "Ad:";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Nombre:";
+        Text[ catalan ] = "Nom:";
+        Text[ thai ] = "ชื่อ:";
     };
     FixedText FT_NAME
     {
@@ -609,7 +628,7 @@ ModalDialog RID_SCDLG_PIVOTSUBT
         Text [ italian ] = "Subtotali" ;
         Text [ portuguese_brazilian ] = "Sub Totais" ;
         Text [ portuguese ] = "Subtotais" ;
-        Text [ finnish ] = "V?lisummat" ;
+        Text [ finnish ] = "Vlisummat" ;
         Text [ danish ] = "Subtotaler" ;
         Text [ french ] = "Sous-totaux" ;
         Text [ swedish ] = "Delresultat" ;
@@ -623,10 +642,11 @@ ModalDialog RID_SCDLG_PIVOTSUBT
         Text[ chinese_traditional ] = "小計";
         Text[ arabic ] = "Subtotals";
         Text[ greek ] = " ";
-        Text[ korean ] = "소계";
+        Text[ korean ] = "부분합";
         Text[ turkish ] = "Ara toplam";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Subtotales";
+        Text[ catalan ] = "Subtotals";
+        Text[ thai ] = "ผลรวมย่อย";
     };
     String STR_DATAFUNC
     {
@@ -650,10 +670,11 @@ ModalDialog RID_SCDLG_PIVOTSUBT
         Text[ chinese_traditional ] = "函數";
         Text[ arabic ] = "Function";
         Text[ greek ] = "";
-        Text[ korean ] = "함수";
+        Text[ korean ] = "계산 방법";
         Text[ turkish ] = "Fonksiyon";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Funcin";
+        Text[ catalan ] = "Funci";
+        Text[ thai ] = "ฟังก์ชั่น";
     };
     Text [ spanish ] = "Campo de datos" ;
     Text [ french ] = "Champ de donnes" ;
@@ -663,15 +684,16 @@ ModalDialog RID_SCDLG_PIVOTSUBT
     Text[ chinese_simplified ] = "数据字段";
     Text[ russian ] = " ";
     Text[ polish ] = "Pole danych";
-    Text[ japanese ] = "データフィールド";
+    Text[ japanese ] = "データフィールド";
     Text[ chinese_traditional ] = "資料欄位";
     Text[ arabic ] = " ";
     Text[ greek ] = " ";
     Text[ korean ] = "데이터 필드";
     Text[ turkish ] = "Veri alan";
     Text[ language_user1 ] = " ";
-    Text[ catalan ] = "Campo de datos";
-    Text[ finnish ] = "Tietokentt?";
+    Text[ catalan ] = "Camp de dades";
+    Text[ finnish ] = "Tietokentt";
+    Text[ thai ] = "เขตข้อมูลของข้อมูล";
 };
 
 
@@ -685,3 +707,10 @@ ModalDialog RID_SCDLG_PIVOTSUBT
 
 
 
+
+
+
+
+
+
+
diff --git a/sc/source/ui/dbgui/pvlaydlg.cxx b/sc/source/ui/dbgui/pvlaydlg.cxx
index 6cd48bbc629e..ac1d361c3905 100644
--- a/sc/source/ui/dbgui/pvlaydlg.cxx
+++ b/sc/source/ui/dbgui/pvlaydlg.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: pvlaydlg.cxx,v $
  *
- *  $Revision: 1.12 $
+ *  $Revision: 1.13 $
  *
- *  last change: $Author: dr $ $Date: 2002-11-20 08:56:45 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:54 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -917,12 +917,16 @@ void ScDPLayoutDlg::NotifyDoubleClick( ScDPFieldType eType, long nFieldIndex )
 
 //----------------------------------------------------------------------------
 
-void ScDPLayoutDlg::NotifyFieldFocus( ScDPFieldType eType, BOOL bActive )
+void ScDPLayoutDlg::NotifyFieldFocus( ScDPFieldType eType, BOOL bGotFocus )
 {
-    BOOL bEnable = bActive && (eType != TYPE_SELECT);
+    /*  Enable Remove/Options buttons on GetFocus in field window.
+        #107616# Enable them also, if dialog is deactivated (click into document).
+        The !IsActive() condition handles the case that a LoseFocus event of a
+        field window would follow the Deactivate event of this dialog. */
+    BOOL bEnable = (bGotFocus || !IsActive()) && (eType != TYPE_SELECT);
     aBtnRemove.Enable( bEnable );
     aBtnOptions.Enable( bEnable );
-    if( bActive )
+    if( bGotFocus )
         eLastActiveType = eType;
 }
 
@@ -972,6 +976,17 @@ BOOL ScDPLayoutDlg::NotifyMoveSlider( USHORT nKeyCode )
 
 //----------------------------------------------------------------------------
 
+void ScDPLayoutDlg::Deactivate()
+{
+    /*  #107616# If the dialog has been deactivated (click into document), the LoseFocus
+        event from field window disables Remove/Options buttons. Re-enable them here by
+        simulating a GetFocus event. Event order of LoseFocus and Deactivate is not important.
+        The last event will enable the buttons in both cases (see NotifyFieldFocus). */
+    NotifyFieldFocus( eLastActiveType, TRUE );
+}
+
+//----------------------------------------------------------------------------
+
 BOOL ScDPLayoutDlg::Contains( FuncData** pArr, short nCol, long& nAt )
 {
     if ( !pArr )
diff --git a/sc/source/ui/dbgui/scendlg.src b/sc/source/ui/dbgui/scendlg.src
index 4f53bdba585c..76d37e1c60ac 100644
--- a/sc/source/ui/dbgui/scendlg.src
+++ b/sc/source/ui/dbgui/scendlg.src
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: scendlg.src,v $
  *
- *  $Revision: 1.31 $
+ *  $Revision: 1.32 $
  *
- *  last change: $Author: kz $ $Date: 2001-11-16 23:03:48 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:54 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -129,9 +129,9 @@ ModalDialog RID_SCDLG_NEWSCENARIO
         Text[ dutch ] = "~Kader weergeven";
         Text[ french ] = "Afficher le cadre";
         Text[ spanish ] = "Mostrar borde";
-        Text[ finnish ] = "Nyt reunus";
+        Text[ finnish ] = "Nyt reuna";
         Text[ italian ] = "Mostra cornice in";
-        Text[ danish ] = "Vis ramme i";
+        Text[ danish ] = "Vis ~ramme";
         Text[ swedish ] = "Visa ~ram";
         Text[ polish ] = "Poka ramk";
         Text[ portuguese_brazilian ] = "Rahmen anzeigen in";
@@ -141,8 +141,9 @@ ModalDialog RID_SCDLG_NEWSCENARIO
         Text[ chinese_traditional ] = "顯示邊框";
         Text[ turkish ] = "ereve rengi";
         Text[ arabic ] = "  ";
-        Text[ catalan ] = "Mostrar borde en";
+        Text[ catalan ] = "Visualitza la vora en";
         Text[ language_user1 ] = " ";
+        Text[ thai ] = "แสดงผลเส้นขอบใน";
     };
     ListBox LB_COLOR
     {
@@ -178,8 +179,9 @@ ModalDialog RID_SCDLG_NEWSCENARIO
         Text[ greek ] = " ";
         Text[ korean ] = "테두리 인쇄";
         Text[ turkish ] = "ereveyi yazdr";
-        Text[ catalan ] = "Imprimir borde";
+        Text[ catalan ] = "Imprimeix la vora";
         Text[ finnish ] = "Tulosta reunus";
+        Text[ thai ] = "พิมพ์เส้นขอบ";
     };
     CheckBox CB_TWOWAY
     {
@@ -191,7 +193,7 @@ ModalDialog RID_SCDLG_NEWSCENARIO
         Text [ english_us ] = "Copy back" ;
         Text [ portuguese_brazilian ] = "Zur?ckkopieren" ;
         Text [ swedish ] = "Kopiera t~illbaka" ;
-        Text [ danish ] = "Kopier tilbage" ;
+        Text [ danish ] = "Kopier til~bage" ;
         Text [ italian ] = "Ricopia all'indietro" ;
         Text [ spanish ] = "Volver a copiar" ;
         Text [ french ] = "~Recopier" ;
@@ -204,11 +206,12 @@ ModalDialog RID_SCDLG_NEWSCENARIO
         Text[ chinese_traditional ] = "複製回來";
         Text[ arabic ] = " ";
         Text[ greek ] = " ~";
-        Text[ korean ] = "역으로 복사";
+        Text[ korean ] = "역순으로 복사";
         Text[ turkish ] = "Geri kopyala";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Actualizar escenario con valores modificados";
-        Text[ finnish ] = "Kopioi takaisin";
+        Text[ catalan ] = "Copia enrere";
+        Text[ finnish ] = "Kopioi tausta";
+        Text[ thai ] = "คัดลอกกลับ";
     };
     CheckBox CB_ATTRIB
     {
@@ -236,8 +239,9 @@ ModalDialog RID_SCDLG_NEWSCENARIO
         Text[ korean ] = "속성";
         Text[ turkish ] = "znitelik";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Atributos";
-        Text[ finnish ] = "M??ritteet";
+        Text[ catalan ] = "Atributs";
+        Text[ finnish ] = "Mritteet";
+        Text[ thai ] = "คุณลักษณะ";
     };
     CheckBox CB_VALUE
     {
@@ -258,15 +262,16 @@ ModalDialog RID_SCDLG_NEWSCENARIO
         Text[ chinese_simplified ] = "只复制数值";
         Text[ russian ] = "  ";
         Text[ polish ] = "Kopiuj tylko wartoci";
-        Text[ japanese ] = "数値のみコピー";
+        Text[ japanese ] = "数値のみコピー";
         Text[ chinese_traditional ] = "只複製數值";
         Text[ arabic ] = "  ";
         Text[ greek ] = "   ";
         Text[ korean ] = "값만 복사";
         Text[ turkish ] = "Yalnzca deerleri kopyala";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Copiar solo valores";
+        Text[ catalan ] = "Copia noms els valors";
         Text[ finnish ] = "Kopioi vain arvot";
+        Text[ thai ] = "คัดลอกค่าอย่างเดียว";
     };
     CheckBox CB_COPYALL
     {
@@ -277,24 +282,25 @@ ModalDialog RID_SCDLG_NEWSCENARIO
         Text [ english_us ] = "Copy entire sheet" ;
         Text [ portuguese_brazilian ] = "Ganze Tabelle kopieren" ;
         Text [ swedish ] = "Kopiera hel ~tabell" ;
-        Text [ danish ] = "Kopier hele arket" ;
+        Text [ danish ] = "Kopier hele ~tabellen" ;
         Text [ italian ] = "Copia intera tabella" ;
         Text [ spanish ] = "Copiar toda la hoja" ;
-        Text [ french ] = "~Copier la feuille entire" ;
+        Text [ french ] = "Copier la feuille entire" ;
         Text [ dutch ] = "Hele ~tabel kopiren" ;
         Text [ portuguese ] = "Copiar ~tabela inteira" ;
         Text[ chinese_simplified ] = "复制整个工作表";
         Text[ russian ] = "  ";
         Text[ polish ] = "Kopiuj cay arkusz";
-        Text[ japanese ] = "表全体をコピー";
+        Text[ japanese ] = "表全体をコピー";
         Text[ chinese_traditional ] = "複製整個工作表";
         Text[ arabic ] = "  ";
         Text[ greek ] = "~  ";
-        Text[ korean ] = "모든 테이블 복사";
+        Text[ korean ] = "모든 표 복사";
         Text[ turkish ] = "Tablonun tmn kopyala";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Copiar toda la hoja";
-        Text[ finnish ] = "Kopioi koko lomake";
+        Text[ catalan ] = "Copia tot el full";
+        Text[ finnish ] = "Kopioi koko taulukko";
+        Text[ thai ] = "คัดลอกทั้งแผ่นงาน";
     };
     String STR_EDIT
     {
@@ -312,15 +318,16 @@ ModalDialog RID_SCDLG_NEWSCENARIO
         Text[ chinese_simplified ] = "编辑方案";
         Text[ russian ] = " ";
         Text[ polish ] = "Edytuj scenariusz";
-        Text[ japanese ] = "シナリオの編集";
+        Text[ japanese ] = "シナリオの編集";
         Text[ chinese_traditional ] = "編輯分析藍本";
         Text[ arabic ] = " ";
         Text[ greek ] = " ";
         Text[ korean ] = "시나리오 편집";
         Text[ turkish ] = "Senaryoyu dzenle";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Editar escenario";
-        Text[ finnish ] = "Muokkaa skenaariota";
+        Text[ catalan ] = "Edita l'escenari";
+        Text[ finnish ] = "Muuta skenaariota";
+        Text[ thai ] = "แก้ไขสถานการณ์สมมติ";
     };
     String STR_CREATEDBY
     {
@@ -330,7 +337,7 @@ ModalDialog RID_SCDLG_NEWSCENARIO
         Text [ DANISH ] = "Oprettet af" ;
         Text [ ENGLISH_US ] = "Created by" ;
         Text [ SPANISH ] = "Creado por" ;
-        Text [ FINNISH ] = "Laatija" ;
+        Text [ FINNISH ] = "Tekij" ;
         Text [ FRENCH ] = "Cr par" ;
         Text [ ITALIAN ] = "Creato da" ;
         Text [ DUTCH ] = "Gemaakt door" ;
@@ -344,10 +351,11 @@ ModalDialog RID_SCDLG_NEWSCENARIO
         Text[ chinese_traditional ] = "作者";
         Text[ arabic ] = " ";
         Text[ greek ] = " ";
-        Text[ korean ] = "로 만들기";
+        Text[ korean ] = "작성자";
         Text[ turkish ] = "Yazan";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Creado por";
+        Text[ catalan ] = "Creat per";
+        Text[ thai ] = "สร้างโดย";
     };
     String STR_ON
     {
@@ -357,7 +365,7 @@ ModalDialog RID_SCDLG_NEWSCENARIO
         Text [ DANISH ] = "den" ;
         Text [ ENGLISH_US ] = "on" ;
         Text [ SPANISH ] = "en" ;
-        Text [ FINNISH ] = "on" ;
+        Text [ FINNISH ] = "kytss" ;
         Text [ FRENCH ] = "le" ;
         Text [ ITALIAN ] = "il" ;
         Text [ DUTCH ] = "op" ;
@@ -371,10 +379,11 @@ ModalDialog RID_SCDLG_NEWSCENARIO
         Text[ chinese_traditional ] = "日期:";
         Text[ arabic ] = "";
         Text[ greek ] = "";
-        Text[ korean ] = "위치";
+        Text[ korean ] = "날짜";
         Text[ turkish ] = "tarih:";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "en";
+        Text[ catalan ] = "el";
+        Text[ thai ] = "บน";
     };
     FixedLine FL_NAME
     {
@@ -386,7 +395,7 @@ ModalDialog RID_SCDLG_NEWSCENARIO
         Text[ italian ] = "Nome dello scenario";
         Text[ portuguese_brazilian ] = "Name des Szenarios";
         Text[ portuguese ] = "~Nome do cenrio";
-        Text[ danish ] = "Scenariets navn";
+        Text[ danish ] = "~Navn p scenario";
         Text[ french ] = "~Nom du scnario";
         Text[ swedish ] = "~Namn p scenariot";
         Text[ dutch ] = "~Naam van het scenario";
@@ -394,15 +403,16 @@ ModalDialog RID_SCDLG_NEWSCENARIO
         Text[ chinese_simplified ] = "方案名称";
         Text[ russian ] = " ";
         Text[ polish ] = "Nazwa scenariusza";
-        Text[ japanese ] = "シナリオ名";
+        Text[ japanese ] = "シナリオ名";
         Text[ chinese_traditional ] = "分析藍本的名稱";
         Text[ arabic ] = " ";
         Text[ greek ] = "~ ";
         Text[ korean ] = "시나리오 이름";
         Text[ turkish ] = "Senaryonun ad";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Nombre del escenario";
+        Text[ catalan ] = "Nom de l'escenari";
         Text[ finnish ] = "Skenaarion nimi";
+        Text[ thai ] = "ชื่อสถานการณ์สมมติ";
     };
     FixedLine FL_COMMENT
     {
@@ -414,23 +424,24 @@ ModalDialog RID_SCDLG_NEWSCENARIO
         Text[ italian ] = "~Commento";
         Text[ portuguese_brazilian ] = "Kommentar";
         Text[ portuguese ] = "~Comentrio";
-        Text[ danish ] = "Kommentar";
-        Text[ french ] = "~Commentaire";
+        Text[ danish ] = "~Kommentar";
+        Text[ french ] = "Commentaire";
         Text[ swedish ] = "~Kommentar";
-        Text[ dutch ] = "~Commentaar";
+        Text[ dutch ] = "~Opmerkingen";
         Text[ spanish ] = "Comentario";
         Text[ chinese_simplified ] = "注解";
         Text[ russian ] = "";
         Text[ polish ] = "Komentarz";
-        Text[ japanese ] = "コメント";
+        Text[ japanese ] = "コメント";
         Text[ chinese_traditional ] = "註解";
         Text[ arabic ] = "";
         Text[ greek ] = "";
-        Text[ korean ] = "주석";
+        Text[ korean ] = "설명";
         Text[ turkish ] = "Aklama";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Comentario";
-        Text[ finnish ] = "Kommentti";
+        Text[ catalan ] = "Comentari";
+        Text[ finnish ] = "Huomautus";
+        Text[ thai ] = "ข้อคิดเห็น";
     };
     FixedLine FL_OPTIONS
     {
@@ -457,20 +468,22 @@ ModalDialog RID_SCDLG_NEWSCENARIO
         Text[ korean ] = "설정";
         Text[ turkish ] = "Ayarlar";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Configuracin";
+        Text[ catalan ] = "Configuraci";
         Text[ finnish ] = "Asetukset";
+        Text[ thai ] = "กำหนดค่า";
     };
     Text[ chinese_simplified ] = "建立方案";
     Text[ russian ] = " ";
     Text[ polish ] = "Utwrz scenariusz";
-    Text[ japanese ] = "シナリオの作成";
+    Text[ japanese ] = "シナリオの作成";
     Text[ chinese_traditional ] = "建立分析藍本";
     Text[ arabic ] = " ";
     Text[ greek ] = " ";
     Text[ korean ] = "시나리오 만들기";
     Text[ turkish ] = "Senaryo olutur";
     Text[ language_user1 ] = " ";
-    Text[ catalan ] = "Crear escenario";
+    Text[ catalan ] = "Crea un escenari";
+    Text[ thai ] = "สร้างสถานการณ์สมมติ";
 };
 
 
@@ -485,3 +498,9 @@ ModalDialog RID_SCDLG_NEWSCENARIO
 
 
 
+
+
+
+
+
+
diff --git a/sc/source/ui/dbgui/tpsort.cxx b/sc/source/ui/dbgui/tpsort.cxx
index 52fe17a56d6c..7bf91633223b 100644
--- a/sc/source/ui/dbgui/tpsort.cxx
+++ b/sc/source/ui/dbgui/tpsort.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: tpsort.cxx,v $
  *
- *  $Revision: 1.5 $
+ *  $Revision: 1.6 $
  *
- *  last change: $Author: nn $ $Date: 2001-08-03 16:43:02 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:54 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -712,15 +712,8 @@ void ScTabPageSortOptions::Init()
 
     //  get available languages
 
+    aLbLanguage.SetLanguageList( LANG_LIST_ALL | LANG_LIST_ONLY_KNOWN, FALSE );
     aLbLanguage.InsertLanguage( LANGUAGE_SYSTEM );
-    uno::Sequence xLoc = LocaleDataWrapper::getInstalledLocaleNames();
-    sal_Int32 nCount = xLoc.getLength();
-    for ( sal_Int32 i=0; i ;
+            < "Todos los valores" ; Default ; > ;
             < "Entero" ; Default ; > ;
             < "Decimal" ; Default ; > ;
             < "Fecha" ; Default ; > ;
@@ -318,7 +323,7 @@ TabPage TP_VALIDATION_VALUES
         };
         stringlist [ dutch ] =
         {
-            < "Iedere waarde" ; Default ; > ;
+            < "Elke waarde" ; Default ; > ;
             < "Geheel getal" ; Default ; > ;
             < "Decimaal" ; Default ; > ;
             < "Datum" ; Default ; > ;
@@ -338,7 +343,7 @@ TabPage TP_VALIDATION_VALUES
     {
             < " " ; Default ; > ;
         < " " ; Default ; > ;
-        < "" ; Default ; > ;
+        < "" ; Default ; > ;
         < "" ; Default ; > ;
         < "" ; Default ; > ;
         < " " ; Default ; > ;
@@ -359,7 +364,7 @@ TabPage TP_VALIDATION_VALUES
         < "小数" ; Default ; > ;
         < "日付" ; Default ; > ;
         < "時刻" ; Default ; > ;
-        < "テキストの長さ" ; Default ; > ;
+        < "テキストの長さ" ; Default ; > ;
     };
     StringList [ chinese_traditional ] =
     {
@@ -391,11 +396,11 @@ TabPage TP_VALIDATION_VALUES
     StringList [ korean ] =
     {
             < "모든 값" ; Default ; > ;
-        < "전체 수" ; Default ; > ;
+        < "전체 값" ; Default ; > ;
         < "소수" ; Default ; > ;
         < "날짜" ; Default ; > ;
         < "시간" ; Default ; > ;
-        < "텍스트 크기" ; Default ; > ;
+        < "텍스트 길이" ; Default ; > ;
     };
     StringList [ language_user1 ] =
     {
@@ -417,22 +422,31 @@ TabPage TP_VALIDATION_VALUES
     };
     StringList [ catalan ] =
     {
-            < "Cada valor" ; Default ; > ;
-        < "Entero" ; Default ; > ;
+            < "Tots els valors" ; Default ; > ;
+        < "Nmeros complets" ; Default ; > ;
         < "Decimal" ; Default ; > ;
-        < "Fecha" ; Default ; > ;
+        < "Data" ; Default ; > ;
         < "Hora" ; Default ; > ;
-        < "Longitud del texto" ; Default ; > ;
+        < "Longitud del text" ; Default ; > ;
     };
     StringList [ finnish ] =
     {
             < "Kaikki arvot" ; Default ; > ;
         < "Kokonaiset luvut" ; Default ; > ;
         < "Desimaali" ; Default ; > ;
-        < "P?iv?m??r?" ; Default ; > ;
+        < "PIVYS" ; Default ; > ;
         < "Aika" ; Default ; > ;
         < "Tekstin pituus" ; Default ; > ;
     };
+    StringList [ thai ] =
+    {
+         < "ค่าทั้งหมด" ; Default ; > ;
+        < "ตัวเลขทั้งหมด" ; Default ; > ;
+        < "ทศนิยม" ; Default ; > ;
+        < "วันที่" ; Default ; > ;
+        < "เวลา" ; Default ; > ;
+        < "ความยาวข้อความ" ; Default ; > ;
+    };
     };
     FixedText FT_VALUE
     {
@@ -445,21 +459,22 @@ TabPage TP_VALIDATION_VALUES
         Text [ danish ] = "Data" ;
         Text [ italian ] = "~Dati" ;
         Text [ spanish ] = "~Datos" ;
-        Text [ french ] = "~Donnes" ;
+        Text [ french ] = "Donnes" ;
         Text [ dutch ] = "~Gegevens" ;
         Text [ portuguese ] = "~Dados" ;
         Text [ portuguese_brazilian ] = "~Daten" ;
         Text[ chinese_simplified ] = "数据(~D)";
-        Text[ russian ] = "";
+        Text[ russian ] = "";
         Text[ polish ] = "Dane";
-        Text[ japanese ] = "データ(~D)";
+        Text[ japanese ] = "データ(~D)";
         Text[ chinese_traditional ] = "資料(~D)";
         Text[ arabic ] = "";
         Text[ greek ] = "";
         Text[ korean ] = "데이터(~D)";
         Text[ turkish ] = "~Veriler";
-        Text[ catalan ] = "~Datos";
-        Text[ finnish ] = "~Tiedot";
+        Text[ catalan ] = "~Dades";
+        Text[ finnish ] = "Tie~dot";
+        Text[ thai ] = "~ข้อมูล";
     };
     ListBox LB_VALUE
     {
@@ -610,7 +625,7 @@ TabPage TP_VALIDATION_VALUES
         < " " ; Default ; > ;
         < "  " ; Default ; > ;
         < "  " ; Default ; > ;
-        < "" ; Default ; > ;
+        < " " ; Default ; > ;
         < "" ; Default ; > ;
         < "" ; Default ; > ;
     };
@@ -671,14 +686,14 @@ TabPage TP_VALIDATION_VALUES
     };
     StringList [ korean ] =
     {
-            < "다음과 같음" ; Default ; > ;
-        < "..보다 작다" ; Default ; > ;
-        < "..보다 크다" ; Default ; > ;
-        < "작거나 같다" ; Default ; > ;
-        < "크거나 동일" ; Default ; > ;
-        < "같지 않음" ; Default ; > ;
-        < "다음의 사이임" ; Default ; > ;
-        < "다음의 사이가 아님" ; Default ; > ;
+            < "지정한 값과 같음" ; Default ; > ;
+        < "미만" ; Default ; > ;
+        < "초과" ; Default ; > ;
+        < "이하" ; Default ; > ;
+        < "다음 값 이상" ; Default ; > ;
+        < "지정한 조건과 다름" ; Default ; > ;
+        < "다음 날짜 사이" ; Default ; > ;
+        < "다음 값 사이에 없음" ; Default ; > ;
     };
     StringList [ language_user1 ] =
     {
@@ -705,24 +720,35 @@ TabPage TP_VALIDATION_VALUES
     StringList [ catalan ] =
     {
             < "igual" ; Default ; > ;
-        < "menor que" ; Default ; > ;
-        < "mayor que" ; Default ; > ;
-        < "menor o igual que" ; Default ; > ;
-        < "mayor o igual que" ; Default ; > ;
-        < "distinto de" ; Default ; > ;
+        < "ms petit que" ; Default ; > ;
+        < "ms gran que" ; Default ; > ;
+        < "ms petit o igual" ; Default ; > ;
+        < "ms gran o igual" ; Default ; > ;
+        < "diferent" ; Default ; > ;
         < "entre" ; Default ; > ;
         < "no entre" ; Default ; > ;
     };
     StringList [ finnish ] =
     {
-            < "yht?suuri" ; Default ; > ;
-        < "v?hemm?n kuin" ; Default ; > ;
+            < "yht suuri" ; Default ; > ;
+        < "pienempi kuin" ; Default ; > ;
         < "suurempi kuin" ; Default ; > ;
-        < "pienempi tai yht?suuri" ; Default ; > ;
-        < "suurempi tai yhtsuuri" ; Default ; > ;
-        < "ei yht?suuri" ; Default ; > ;
-        < "V?liss?" ; Default ; > ;
-        < "ei v?liss?" ; Default ; > ;
+        < "pienempi tai yht suuri kuin" ; Default ; > ;
+        < "suurempi tai yht suuri kuin" ; Default ; > ;
+        < "eri suuri" ; Default ; > ;
+        < "vlill" ; Default ; > ;
+        < "ei vlilt" ; Default ; > ;
+    };
+    StringList [ thai ] =
+    {
+         < "เท่ากับ" ; Default ; > ;
+        < "น้อยกว่า" ; Default ; > ;
+        < "มากกว่า" ; Default ; > ;
+        < "น้อยกว่าหรือเท่ากับ" ; Default ; > ;
+        < "มากกว่าหรือเท่ากับ" ; Default ; > ;
+        < "ไม่เท่ากับ" ; Default ; > ;
+        < "ระหว่าง" ; Default ; > ;
+        < "ไม่อยู่ระหว่าง" ; Default ; > ;
     };
     };
     FixedText FT_MIN
@@ -749,8 +775,9 @@ TabPage TP_VALIDATION_VALUES
         Text[ greek ] = "";
         Text[ korean ] = "최소(~M)";
         Text[ turkish ] = "A~sgari";
-        Text[ catalan ] = "~Mnimo";
-        Text[ finnish ] = "~V?hint??n";
+        Text[ catalan ] = "~Mnim";
+        Text[ finnish ] = "~Vhintn";
+        Text[ thai ] = "~น้อยที่สุด";
     };
     Edit EDT_MIN
     {
@@ -783,8 +810,9 @@ TabPage TP_VALIDATION_VALUES
         Text[ greek ] = "";
         Text[ korean ] = "최대(~X)";
         Text[ turkish ] = "A~zami";
-        Text[ catalan ] = "M~ximo";
-        Text[ finnish ] = "~Enint??n";
+        Text[ catalan ] = "M~xim";
+        Text[ finnish ] = "~Enintn";
+        Text[ thai ] = "มา~กที่สุด";
     };
     Edit EDT_MAX
     {
@@ -810,16 +838,17 @@ TabPage TP_VALIDATION_VALUES
         Text [ portuguese_brazilian ] = "~Leerzellen zulassen" ;
         Text [ portuguese ] = "~Permitir clulas vazias" ;
         Text[ chinese_simplified ] = "允许空单元格(~B)";
-        Text[ russian ] = "  ";
+        Text[ russian ] = " ";
         Text[ polish ] = "Dopu puste komrki";
-        Text[ japanese ] = "空白セルを許可する(~B)";
+        Text[ japanese ] = "空白セルを許可する(~B)";
         Text[ chinese_traditional ] = "允許空格(~B)";
         Text[ arabic ] = "  ";
         Text[ greek ] = "   ";
-        Text[ korean ] = "블랭크 허용(~B)";
+        Text[ korean ] = "공백 허용(~B)";
         Text[ turkish ] = "~Bo hcre geerli";
-        Text[ catalan ] = "~Permitir celdas vacas";
-        Text[ finnish ] = "~Salli tyhj?t merkit";
+        Text[ catalan ] = "Permet espais en ~blanc";
+        Text[ finnish ] = "Sa~lli tyhjt merkit";
+        Text[ thai ] = "ให้มี~ช่องว่าง";
     };
     Text [ dutch ] = "Waarden" ;
     Text [ english_us ] = "Values" ;
@@ -839,8 +868,9 @@ TabPage TP_VALIDATION_VALUES
     Text[ greek ] = "";
     Text[ korean ] = "값";
     Text[ turkish ] = "Deerler";
-    Text[ catalan ] = "Valores";
+    Text[ catalan ] = "Valors";
     Text[ finnish ] = "Arvot";
+    Text[ thai ] = "ค่า";
 };
 
 TabPage TP_VALIDATION_INPUTHELP
@@ -859,23 +889,24 @@ TabPage TP_VALIDATION_INPUTHELP
         Text [ dutch ] = "I~nvoerhulp bij selectie van een cel aanbieden" ;
         Text [ english_us ] = "~Show input help when cell is selected" ;
         Text [ swedish ] = "Erbjud ~inmatningshjlp vid markering av en cell" ;
-        Text [ danish ] = "Tilbyd inputhjlp ved markering af en celle" ;
+        Text [ danish ] = "T~ilbyd inputhjlp ved markering af en celle" ;
         Text [ italian ] = "Offri aiuti per la digitazione nella cella" ;
         Text [ spanish ] = "~Mostrar Ayuda de entrada al seleccionar una celda" ;
-        Text [ french ] = "~Aide  la saisie lors de la slection de cellules" ;
+        Text [ french ] = "Aide  la saisie si slection d'une cellule" ;
         Text [ portuguese_brazilian ] = "E~ingabehilfen bei Selektion einer Zelle anbieten" ;
         Text [ portuguese ] = "~Mostrar ajuda de entrada quando seleccionar clula" ;
         Text[ chinese_simplified ] = "在选中单元格时显示输入帮助(~S)";
-        Text[ russian ] = "     ";
+        Text[ russian ] = "      ";
         Text[ polish ] = "Z~aproponuj pomoc przy wprowadzaniu w przypadku zaznaczonej komrki";
-        Text[ japanese ] = "セルの選択時にメッセージを表示する(~S)";
+        Text[ japanese ] = "セルの選択時にメッセージを表示する(~S)";
         Text[ chinese_traditional ] = "在選取儲存格時顯示輸入說明(~S)";
         Text[ arabic ] = "     ";
         Text[ greek ] = "~       ";
         Text[ korean ] = "셀 선택시 도움말 입력 제공(~S)";
         Text[ turkish ] = "Hcre se~ildiinde giri yardm ner";
-        Text[ catalan ] = "~Mostrar Ayuda de entrada al seleccionar una celda";
-        Text[ finnish ] = "~N?yt? sy?t?hje, kun solu on valittuna";
+        Text[ catalan ] = "Mo~stra l'ajuda d'entrada quan se seleccioni la cel.la";
+        Text[ finnish ] = "~Nyt syttohje, kun solu on valittuna";
+        Text[ thai ] = "แ~สดงการป้อนตัวช่วยเมื่อเลือกเซลล์";
     };
     FixedLine FL_CONTENT
     {
@@ -901,8 +932,9 @@ TabPage TP_VALIDATION_INPUTHELP
         Text[ greek ] = "";
         Text[ korean ] = "내용";
         Text[ turkish ] = "erik";
-        Text[ catalan ] = "Contenido";
+        Text[ catalan ] = "Contingut";
         Text[ finnish ] = "Sislt";
+        Text[ thai ] = "เนื้อหา";
     };
     FixedText FT_TITLE
     {
@@ -915,21 +947,22 @@ TabPage TP_VALIDATION_INPUTHELP
         Text [ danish ] = "Titel" ;
         Text [ italian ] = "~Titolo" ;
         Text [ spanish ] = "~Ttulo" ;
-        Text [ french ] = "~Titre" ;
+        Text [ french ] = "Titre" ;
         Text [ dutch ] = "~Titel" ;
         Text [ portuguese ] = "~Ttulo" ;
         Text [ portuguese_brazilian ] = "~Titel" ;
         Text[ chinese_simplified ] = "标题(~T)";
         Text[ russian ] = "";
         Text[ polish ] = "Tytu";
-        Text[ japanese ] = "タイトル(~T)";
+        Text[ japanese ] = "タイトル(~T)";
         Text[ chinese_traditional ] = "標題(~T)";
         Text[ arabic ] = "";
         Text[ greek ] = "~";
         Text[ korean ] = "제목(~T)";
         Text[ turkish ] = "~Balk";
-        Text[ catalan ] = "~Ttulo";
+        Text[ catalan ] = "~Ttol";
         Text[ finnish ] = "~Otsikko";
+        Text[ thai ] = "~ชื่อเรื่อง";
     };
     FixedText FT_INPUTHELP
     {
@@ -943,20 +976,21 @@ TabPage TP_VALIDATION_INPUTHELP
         Text [ danish ] = "Inputhjlp" ;
         Text [ italian ] = "Aiuto per la digitazione" ;
         Text [ spanish ] = "Ayuda de ~entrada" ;
-        Text [ french ] = "~Aide  la saisie" ;
+        Text [ french ] = "Aide  la saisie" ;
         Text [ portuguese_brazilian ] = "~Eingabehilfe" ;
         Text [ portuguese ] = "~Ajuda de entradas" ;
         Text[ chinese_simplified ] = "输入帮助(~I)";
-        Text[ russian ] = " ";
+        Text[ russian ] = "~  ";
         Text[ polish ] = "Pomoc przy wprow.";
-        Text[ japanese ] = "入力時メッセージ(~I)";
+        Text[ japanese ] = "入力時メッセージ(~I)";
         Text[ chinese_traditional ] = "輸入說明(~I)";
         Text[ arabic ] = " ";
         Text[ greek ] = " ~";
         Text[ korean ] = "도움말 삽입(~I)";
         Text[ turkish ] = "~Giri yardm";
-        Text[ catalan ] = "Ayuda de ~entrada";
-        Text[ finnish ] = "~Sy?t?hje";
+        Text[ catalan ] = "~Ajuda de l'entrada";
+        Text[ finnish ] = "~Syttohje";
+        Text[ thai ] = "~ป้อนตัวช่วยเหลือ";
     };
     Edit EDT_TITLE
     {
@@ -1007,8 +1041,9 @@ TabPage TP_VALIDATION_ERROR
         Text[ greek ] = "";
         Text[ korean ] = "내용";
         Text[ turkish ] = "erik";
-        Text[ catalan ] = "Contenido";
+        Text[ catalan ] = "Contingut";
         Text[ finnish ] = "Sislt";
+        Text[ thai ] = "เนื้อหา";
     };
     TriStateBox TSB_SHOW
     {
@@ -1021,23 +1056,24 @@ TabPage TP_VALIDATION_ERROR
         Text [ dutch ] = "Fout~melding bij invoer van ongeldige gegevens weergeven" ;
         Text [ english_us ] = "Show error ~message when invalid values are entered" ;
         Text [ swedish ] = "Visa fel~meddelande nr ogiltiga vrden matas in" ;
-        Text [ danish ] = "Vis fejlmelding ved input af ugyldige vrdier" ;
+        Text [ danish ] = "Vis fejl~meddelelse ved indtastning af ugyldige vrdier" ;
         Text [ italian ] = "~Mostra messaggio di errore se si digitano dei valori non validi" ;
         Text [ spanish ] = "Mostrar mensaje de ~error al introducir valores incorrectos" ;
-        Text [ french ] = "~Message d'erreur en cas de saisie de valeurs incorrectes" ;
+        Text [ french ] = "Message d'erreur en cas de saisie de valeurs incorrectes" ;
         Text [ portuguese_brazilian ] = "~Fehlermeldung bei Eingabe ung?tiger Werte anzeigen" ;
         Text [ portuguese ] = "~Mostrar mensagem de erro ao introduzir valores incorrectos" ;
         Text[ chinese_simplified ] = "输入无效数值时显示错误报告(~M)";
-        Text[ russian ] = "       ";
+        Text[ russian ] = "       ";
         Text[ polish ] = "Poka ko~munikat o bdzie po wpisaniu nieprawidowych wartoci";
-        Text[ japanese ] = "無効な値の入力時にエラーメッセージを表示する(~M)";
+        Text[ japanese ] = "無効な値の入力時にエラーメッセージを表示する(~M)";
         Text[ chinese_traditional ] = "在輸入無效數值時顯示錯誤報告(~M)";
         Text[ arabic ] = "       ";
         Text[ greek ] = "~        ";
-        Text[ korean ] = "유효하지 않은 값 입력시 오류 메시지 표시(~M)";
+        Text[ korean ] = "잘못된 값 입력시 오류 메시지 표시(~M)";
         Text[ turkish ] = "~Geersiz deer girildiinde hata iletisi grntle";
-        Text[ catalan ] = "Mostrar mensaje de ~error al entrar valores incorrectos";
-        Text[ finnish ] = "~Nyt virhesanoma, kun virheellisi arvoja sytetn";
+        Text[ catalan ] = "Mostra un ~missatge d'error quan s'introdueixen valors no vlids";
+        Text[ finnish ] = "Nyt virhe~sanoma virheellisten arvojen syttmisest";
+        Text[ thai ] = "แสดง~ข้อความที่ผิดพลาดเมื่อใส่ค่าที่ไม่ถูกต้อง";
     };
     MultiLineEdit EDT_ERROR
     {
@@ -1066,21 +1102,22 @@ TabPage TP_VALIDATION_ERROR
         Text [ danish ] = "Fejlmelding" ;
         Text [ italian ] = "Messaggio di errore" ;
         Text [ spanish ] = "~Mensaje de error" ;
-        Text [ french ] = "~Message d'erreur" ;
+        Text [ french ] = "Message d'erreur" ;
         Text [ dutch ] = "~Foutmelding" ;
         Text [ portuguese ] = "~Mensagem de erro" ;
         Text [ portuguese_brazilian ] = "~Fehlermeldung" ;
         Text[ chinese_simplified ] = "错误报告(~E)";
         Text[ russian ] = "  ";
         Text[ polish ] = "Komunikat o bdzie";
-        Text[ japanese ] = "エラーメッセージ(~E)";
+        Text[ japanese ] = "エラーメッセージ(~E)";
         Text[ chinese_traditional ] = "錯誤報告(~E)";
         Text[ arabic ] = " ";
         Text[ greek ] = " ";
         Text[ korean ] = "오류 메시지(~E)";
         Text[ turkish ] = "~Hata iletisi";
-        Text[ catalan ] = "~Mensaje de error";
+        Text[ catalan ] = "~Missatge d'error";
         Text[ finnish ] = "~Virhesanoma";
+        Text[ thai ] = "ข้อความ~ผิดพลาด";
     };
     FixedText FT_TITLE
     {
@@ -1090,24 +1127,25 @@ TabPage TP_VALIDATION_ERROR
         Text [ ENGLISH ] = "~Title" ;
         Text [ english_us ] = "~Title" ;
         Text [ swedish ] = "~Rubrik" ;
-        Text [ danish ] = "Titel" ;
+        Text [ danish ] = "T~itel" ;
         Text [ italian ] = "~Titolo" ;
         Text [ spanish ] = "~Ttulo" ;
-        Text [ french ] = "~Titre" ;
+        Text [ french ] = "Titre" ;
         Text [ dutch ] = "~Titel" ;
         Text [ portuguese ] = "~Ttulo" ;
         Text [ portuguese_brazilian ] = "~Titel" ;
         Text[ chinese_simplified ] = "标题(~T)";
         Text[ russian ] = "";
         Text[ polish ] = "Tytu";
-        Text[ japanese ] = "タイトル(~T)";
+        Text[ japanese ] = "タイトル(~T)";
         Text[ chinese_traditional ] = "標題(~T)";
         Text[ arabic ] = "";
         Text[ greek ] = "~";
         Text[ korean ] = "제목(~T)";
         Text[ turkish ] = "~Balk";
-        Text[ catalan ] = "~Ttulo";
+        Text[ catalan ] = "~Ttol";
         Text[ finnish ] = "~Otsikko";
+        Text[ thai ] = "~ชื่อเรื่อง";
     };
     FixedText FT_ACTION
     {
@@ -1117,7 +1155,7 @@ TabPage TP_VALIDATION_ERROR
         Text [ ENGLISH ] = "~Action" ;
         Text [ english_us ] = "~Action" ;
         Text [ swedish ] = "~tgrd" ;
-        Text [ danish ] = "Handling" ;
+        Text [ danish ] = "H~andling" ;
         Text [ italian ] = "Oper~azione" ;
         Text [ spanish ] = "~Accin" ;
         Text [ french ] = "~Action" ;
@@ -1127,14 +1165,15 @@ TabPage TP_VALIDATION_ERROR
         Text[ chinese_simplified ] = "操作(~A)";
         Text[ russian ] = "";
         Text[ polish ] = "Akcja";
-        Text[ japanese ] = "アクション(~A)";
+        Text[ japanese ] = "アクション(~A)";
         Text[ chinese_traditional ] = "動作(~A)";
         Text[ arabic ] = "";
         Text[ greek ] = "~";
-        Text[ korean ] = "실행(~A)";
+        Text[ korean ] = "작동(~A)";
         Text[ turkish ] = "~lem";
-        Text[ catalan ] = "~Accin";
+        Text[ catalan ] = "~Acci";
         Text[ finnish ] = "~Toiminto";
+        Text[ thai ] = "~การกระทำ";
     };
     ListBox LB_ACTION
     {
@@ -1247,7 +1286,7 @@ TabPage TP_VALIDATION_ERROR
             < "中止" ; Default ; > ;
         < "警告" ; Default ; > ;
         < "情報" ; Default ; > ;
-        < "マクロ" ; Default ; > ;
+        < "マクロ" ; Default ; > ;
     };
     StringList [ chinese_traditional ] =
     {
@@ -1293,9 +1332,9 @@ TabPage TP_VALIDATION_ERROR
     };
     StringList [ catalan ] =
     {
-            < "Stop" ; Default ; > ;
-        < "Advertencia" ; Default ; > ;
-        < "Informacin" ; Default ; > ;
+            < "Atura" ; Default ; > ;
+        < "Advertiment" ; Default ; > ;
+        < "Informaci" ; Default ; > ;
         < "Macro" ; Default ; > ;
     };
     StringList [ finnish ] =
@@ -1305,6 +1344,13 @@ TabPage TP_VALIDATION_ERROR
         < "Tiedot" ; Default ; > ;
         < "Makro" ; Default ; > ;
     };
+    StringList [ thai ] =
+    {
+         < "หยุด" ; Default ; > ;
+        < "คำเตือน" ; Default ; > ;
+        < "ข้อมูล" ; Default ; > ;
+        < "มาโคร" ; Default ; > ;
+    };
     };
     PushButton BTN_SEARCH
     {
@@ -1318,7 +1364,7 @@ TabPage TP_VALIDATION_ERROR
         Text [ swedish ] = "~Genomsk..." ;
         Text [ danish ] = "Gennemse..." ;
         Text [ italian ] = "~Sfoglia..." ;
-        Text [ spanish ] = "E~xaminar..." ;
+        Text [ spanish ] = "~Buscar..." ;
         Text [ french ] = "~Parcourir..." ;
         Text [ portuguese_brazilian ] = "~Durchsuchen..." ;
         Text [ portuguese ] = "~Pesquisar..." ;
@@ -1329,10 +1375,11 @@ TabPage TP_VALIDATION_ERROR
         Text[ chinese_traditional ] = "瀏覽(~B)...";
         Text[ arabic ] = "...";
         Text[ greek ] = "...";
-        Text[ korean ] = "검색(~B)...";
+        Text[ korean ] = "찾아보기(~B)...";
         Text[ turkish ] = "~Tara...";
-        Text[ catalan ] = "E~xaminar...";
-        Text[ finnish ] = "~Selaa";
+        Text[ catalan ] = "~Navega...";
+        Text[ finnish ] = "~Selaa...";
+        Text[ thai ] = "เ~รียกดู...";
     };
     Text [ dutch ] = "Foutmelding" ;
     Text [ english_us ] = "Error Alert" ;
@@ -1344,16 +1391,17 @@ TabPage TP_VALIDATION_ERROR
     Text [ portuguese_brazilian ] = "Fehlermeldung" ;
     Text [ portuguese ] = "Mensagem de erro" ;
     Text[ chinese_simplified ] = "错误报告";
-    Text[ russian ] = "  ";
+    Text[ russian ] = "  ";
     Text[ polish ] = "Komunikat o bdzie";
-    Text[ japanese ] = "エラーメッセージ";
+    Text[ japanese ] = "エラーメッセージ";
     Text[ chinese_traditional ] = "錯誤報告";
     Text[ arabic ] = " ";
     Text[ greek ] = " ";
     Text[ korean ] = "오류 메시지";
     Text[ turkish ] = "Hata iletisi";
-    Text[ catalan ] = "Mensaje de error";
-    Text[ finnish ] = "Virheh?lytys";
+    Text[ catalan ] = "Avs d'error";
+    Text[ finnish ] = "Virhehlytys";
+    Text[ thai ] = "เตือนข้อผิดพลาด";
 };
 
 
@@ -1368,5 +1416,12 @@ TabPage TP_VALIDATION_ERROR
 
 
 
+
+
+
+
+
+
+
 
 
diff --git a/sc/source/ui/docshell/dbdocimp.cxx b/sc/source/ui/docshell/dbdocimp.cxx
index ac947ca2796c..f175f7b17e05 100644
--- a/sc/source/ui/docshell/dbdocimp.cxx
+++ b/sc/source/ui/docshell/dbdocimp.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: dbdocimp.cxx,v $
  *
- *  $Revision: 1.12 $
+ *  $Revision: 1.13 $
  *
- *  last change: $Author: nn $ $Date: 2002-11-20 14:33:09 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:58 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
diff --git a/sc/source/ui/docshell/docfunc.cxx b/sc/source/ui/docshell/docfunc.cxx
index fb775b206b0f..0fd344b1bc21 100644
--- a/sc/source/ui/docshell/docfunc.cxx
+++ b/sc/source/ui/docshell/docfunc.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: docfunc.cxx,v $
  *
- *  $Revision: 1.41 $
+ *  $Revision: 1.42 $
  *
- *  last change: $Author: nn $ $Date: 2002-11-20 14:33:08 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:59 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -789,6 +789,10 @@ BOOL ScDocFunc::SetNormalString( const ScAddress& rPos, const String& rText, BOO
     rDocShell.PostPaintCell( rPos.Col(), rPos.Row(), rPos.Tab() );
     aModificator.SetDocumentModified();
 
+    // #107160# notify input handler here the same way as in PutCell
+    if (bApi)
+        NotifyInputHandler( rPos );
+
     return TRUE;
 }
 
@@ -839,21 +843,28 @@ BOOL ScDocFunc::PutCell( const ScAddress& rPos, ScBaseCell* pNewCell, BOOL bApi
 
     // #103934#; notify editline and cell in edit mode
     if (bApi)
+        NotifyInputHandler( rPos );
+
+    return TRUE;
+}
+
+void ScDocFunc::NotifyInputHandler( const ScAddress& rPos )
+{
+    ScTabViewShell* pViewSh = ScTabViewShell::GetActiveViewShell();
+    if ( pViewSh && pViewSh->GetViewData()->GetDocShell() == &rDocShell )
     {
-        ScViewData* pViewData = rDocShell.GetViewData();
-        if (pViewData && pViewData->GetCurPos() == rPos && SC_MOD()->GetInputHdl())
+        ScInputHandler* pInputHdl = SC_MOD()->GetInputHdl();
+        if ( pInputHdl )
         {
-            sal_Bool bIsEditMode(SC_MOD()->GetInputHdl()->IsEditMode());
+            sal_Bool bIsEditMode(pInputHdl->IsEditMode());
 
             // set modified if in editmode, because so the string is not set in the InputWindow like in the cell
             // (the cell shows the same like the InputWindow)
             if (bIsEditMode)
-                SC_MOD()->GetInputHdl()->SetModified();
-            pViewData->UpdateInputHandler(FALSE, !bIsEditMode);
+                pInputHdl->SetModified();
+            pViewSh->UpdateInputHandler(FALSE, !bIsEditMode);
         }
     }
-
-    return TRUE;
 }
 
         struct ScMyRememberItem
diff --git a/sc/source/ui/docshell/docsh.cxx b/sc/source/ui/docshell/docsh.cxx
index acd9afba956f..59c0553c2014 100644
--- a/sc/source/ui/docshell/docsh.cxx
+++ b/sc/source/ui/docshell/docsh.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: docsh.cxx,v $
  *
- *  $Revision: 1.59 $
+ *  $Revision: 1.60 $
  *
- *  last change: $Author: er $ $Date: 2002-12-05 15:45:58 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:59 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -465,6 +465,8 @@ BOOL ScDocShell::SaveCalc( SvStorage* pStor )           // Calc 3, 4 or 5 file
         aPoolStm->SetVersion(pStor->GetVersion());
         aPoolStm->SetSize(0);
         bRet = aDocument.SavePool( *aPoolStm );
+        if ( aPoolStm->GetErrorCode() && !pStor->GetErrorCode() )
+            pStor->SetError(aPoolStm->GetErrorCode());
     }
     else
     {
@@ -1428,11 +1430,11 @@ void ScDocShell::AsciiSave( SvStream& rStream, const ScImportOptions& rAsciiOpt
     USHORT nOldNumberFormatInt = rStream.GetNumberFormatInt();
     ByteString aStrDelimEncoded;    // only used if not Unicode
     UniString aStrDelimDecoded;     // only used if context encoding
-    BOOL bContextEncoding;
+    BOOL bContextOrNotAsciiEncoding;
     if ( eCharSet == RTL_TEXTENCODING_UNICODE )
     {
         rStream.StartWritingUnicodeText();
-        bContextEncoding = FALSE;
+        bContextOrNotAsciiEncoding = FALSE;
     }
     else
     {
@@ -1441,12 +1443,14 @@ void ScDocShell::AsciiSave( SvStream& rStream, const ScImportOptions& rAsciiOpt
         aInfo.StructSize = sizeof(aInfo);
         if ( rtl_getTextEncodingInfo( eCharSet, &aInfo ) )
         {
-            bContextEncoding = ((aInfo.Flags & RTL_TEXTENCODING_INFO_CONTEXT) != 0);
-            if ( bContextEncoding )
+            bContextOrNotAsciiEncoding =
+                (((aInfo.Flags & RTL_TEXTENCODING_INFO_CONTEXT) != 0) ||
+                 ((aInfo.Flags & RTL_TEXTENCODING_INFO_ASCII) == 0));
+            if ( bContextOrNotAsciiEncoding )
                 aStrDelimDecoded = String( aStrDelimEncoded, eCharSet );
         }
         else
-            bContextEncoding = FALSE;
+            bContextOrNotAsciiEncoding = FALSE;
     }
 
     USHORT nStartCol = 0;
@@ -1655,7 +1659,7 @@ void ScDocShell::AsciiSave( SvStream& rStream, const ScImportOptions& rAsciiOpt
                     // have to convert forth and back and forth again. Same for
                     // UTF-7 since it is a context sensitive encoding too.
 
-                    if ( bContextEncoding )
+                    if ( bContextOrNotAsciiEncoding )
                     {
                         // to byte encoding
                         ByteString aStrEnc( aString, eCharSet );
@@ -1750,7 +1754,9 @@ BOOL __EXPORT ScDocShell::ConvertTo( SfxMedium &rMed )
 
     ScRefreshTimerProtector( aDocument.GetRefreshTimerControlAddress() );
 
-    DoEnterHandler();                                   // nicht abgeschlossene Zelle beenden
+    //  #i6500# don't call DoEnterHandler here (doesn't work with AutoSave),
+    //  it's already in ExecuteSave (as for Save and SaveAs)
+
     if (pAutoStyleList)
         pAutoStyleList->ExecuteAllNow();                // Vorlagen-Timeouts jetzt ausfuehren
     if (eShellMode == SFX_CREATE_MODE_STANDARD)
@@ -2276,6 +2282,7 @@ void ScDocShell::SetDocumentModified( BOOL bIsModified /* = TRUE */ )
             SetDocumentModifiedPending( FALSE );
             aDocument.InvalidateStyleSheetUsage();
             aDocument.InvalidateTableArea();
+            aDocument.InvalidateLastTableOpParams();
             aDocument.Broadcast( SC_HINT_DATACHANGED, BCA_BRDCST_ALWAYS, NULL );
             if ( aDocument.IsForcedFormulaPending() && aDocument.GetAutoCalc() )
                 aDocument.CalcFormulaTree( TRUE );
diff --git a/sc/source/ui/docshell/docsh3.cxx b/sc/source/ui/docshell/docsh3.cxx
index e2225b42164a..e43ff6f5a364 100644
--- a/sc/source/ui/docshell/docsh3.cxx
+++ b/sc/source/ui/docshell/docsh3.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: docsh3.cxx,v $
  *
- *  $Revision: 1.15 $
+ *  $Revision: 1.16 $
  *
- *  last change: $Author: sab $ $Date: 2002-10-21 11:28:44 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:05:59 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -174,10 +174,13 @@ void ScDocShell::PostPaint( USHORT nStartCol, USHORT nStartRow, USHORT nStartTab
     if (nExtFlags & SC_PF_TESTMERGE)
         aDocument.ExtendMerge( nStartCol, nStartRow, nEndCol, nEndRow, nStartTab );
 
-    if ( nStartCol != 0 || nEndCol != MAXCOL )      // gedreht -> ganze Zeilen
+    if ( nStartCol != 0 || nEndCol != MAXCOL )
     {
+        //  If rotated text is involved, repaint the entire rows.
+        //  #i9731# If there's right-to-left text to the left of the area,
+        //  the displacement for clipping of that text may change.
         if ( aDocument.HasAttrib( 0,nStartRow,nStartTab,
-                                    MAXCOL,nEndRow,nEndTab, HASATTR_ROTATE ) )
+                                    MAXCOL,nEndRow,nEndTab, HASATTR_ROTATE | HASATTR_RTL ) )
         {
             nStartCol = 0;
             nEndCol = MAXCOL;
@@ -489,7 +492,15 @@ USHORT ScDocShell::SetPrinter( SfxPrinter* pNewPrinter, USHORT nDiffFlags )
     {
         SfxPrinter* pOldPrinter = aDocument.GetPrinter();
         if (pOldPrinter)
+        {
             pOldPrinter->SetJobSetup( pNewPrinter->GetJobSetup() );
+
+            //  #i6706# Call SetPrinter with the old printer again, so the drawing layer
+            //  RefDevice is set (calling ReformatAllTextObjects and rebuilding charts),
+            //  because the JobSetup (printer device settings) may affect text layout.
+            aDocument.SetPrinter( pOldPrinter );
+            CalcOutputFactor();                         // also with the new settings
+        }
     }
 
     if (nDiffFlags & SFX_PRINTER_OPTIONS)
diff --git a/sc/source/ui/docshell/impex.cxx b/sc/source/ui/docshell/impex.cxx
index 9ca0dc474605..a7b8846b359c 100644
--- a/sc/source/ui/docshell/impex.cxx
+++ b/sc/source/ui/docshell/impex.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: impex.cxx,v $
  *
- *  $Revision: 1.22 $
+ *  $Revision: 1.23 $
  *
- *  last change: $Author: er $ $Date: 2002-12-06 17:57:18 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:00 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -82,7 +82,7 @@ class StarBASIC;
 
 #include 
 #include 
-#include 
+#include 
 #include 
 #include 
 #define _SVSTDARR_ULONGS
@@ -507,7 +507,9 @@ BOOL ScImportExport::ImportStream( SvStream& rStrm, ULONG nFmt )
     }
     if ( nFmt == SOT_FORMATSTR_ID_HTML_SIMPLE )
     {
-        if( HTML2Doc( rStrm ) )
+        MSE40HTMLClipFormatObj aMSE40ClpObj;                // needed to skip the header data
+        SvStream* pHTML = aMSE40ClpObj.IsValid( rStrm );
+        if ( pHTML && HTML2Doc( *pHTML ) )
             return TRUE;
     }
 
@@ -1351,8 +1353,9 @@ BOOL ScImportExport::Sylk2Doc( SvStream& rStrm )
                                     pDoc->SetString( nCol, nRow, aRange.aStart.Tab(), aText );
                                 else
                                 {
-                                    int nErr;
-                                    double fVal = SolarMath::StringToDouble( p, cGrpSep, cDecSep, nErr );
+                                    double fVal = rtl_math_uStringToDouble( p,
+                                            aLine.GetBuffer() + aLine.Len(),
+                                            cDecSep, cGrpSep, NULL, NULL );
                                     pDoc->SetValue( nCol, nRow, aRange.aStart.Tab(), fVal );
                                 }
                             }
@@ -1499,8 +1502,9 @@ BOOL ScImportExport::Doc2Sylk( SvStream& rStrm )
                 hasvalue:
                     pDoc->GetValue( nCol, nRow, aRange.aStart.Tab(), nVal );
 
-                    aValStr.Erase();
-                    SolarMath::DoubleToString( aValStr, nVal, 'A', INT_MAX, '.', TRUE );
+                    aValStr = ::rtl::math::doubleToUString( nVal,
+                            rtl_math_StringFormat_Automatic,
+                            rtl_math_DecimalPlaces_Max, '.', TRUE );
 
                     aBufStr.AssignAscii(RTL_CONSTASCII_STRINGPARAM( "C;X" ));
                     aBufStr += String::CreateFromInt32( c );
diff --git a/sc/source/ui/docshell/pagedata.cxx b/sc/source/ui/docshell/pagedata.cxx
index 72789f9cd3d2..d5dea0410b8c 100644
--- a/sc/source/ui/docshell/pagedata.cxx
+++ b/sc/source/ui/docshell/pagedata.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: pagedata.cxx,v $
  *
- *  $Revision: 1.2 $
+ *  $Revision: 1.3 $
  *
- *  last change: $Author: mh $ $Date: 2001-10-23 08:42:02 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:00 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -71,6 +71,10 @@
 
 #pragma hdrstop
 
+#ifndef PCH
+#include "segmentc.hxx"
+#endif
+
 #include "pagedata.hxx"
 
 //============================================================================
diff --git a/sc/source/ui/docshell/tpstat.src b/sc/source/ui/docshell/tpstat.src
index b059baad4e61..6e7ab05c801d 100644
--- a/sc/source/ui/docshell/tpstat.src
+++ b/sc/source/ui/docshell/tpstat.src
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: tpstat.src,v $
  *
- *  $Revision: 1.19 $
+ *  $Revision: 1.20 $
  *
- *  last change: $Author: obo $ $Date: 2001-11-16 22:48:20 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:00 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -75,7 +75,7 @@ TabPage RID_SCPAGE_STAT
         Text [ italian ] = "Numero di tabelle:" ;
         Text [ portuguese_brazilian ] = "N?ero de tabelas:" ;
         Text [ portuguese ] = "Nmero de tabelas:" ;
-        Text [ finnish ] = "Lomakkeiden m??r?:" ;
+        Text [ finnish ] = "Taulukoiden mr:" ;
         Text [ danish ] = "Antal tabeller:" ;
         Text [ french ] = "Nombre de feuilles :" ;
         Text [ swedish ] = "Antal tabeller:" ;
@@ -84,7 +84,7 @@ TabPage RID_SCPAGE_STAT
         Text [ english_us ] = "Number of sheets:" ;
         Left = TRUE ;
         Text[ chinese_simplified ] = "工作表数目:";
-        Text[ russian ] = " :";
+        Text[ russian ] = " :";
         Text[ polish ] = "Liczba tabel:";
         Text[ japanese ] = "表の数:";
         Text[ chinese_traditional ] = "工作表數目:";
@@ -95,7 +95,8 @@ TabPage RID_SCPAGE_STAT
         Text[ korean ] = "시트 수:";
         Text[ turkish ] = "Tablo says:";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Nm. de hojas:";
+        Text[ catalan ] = "Nombre de fulls:";
+        Text[ thai ] = "จำนวนแผ่นงาน:";
     };
     FixedText FT_TABLES
     {
@@ -112,7 +113,7 @@ TabPage RID_SCPAGE_STAT
         Text [ english_us ] = "Number of cells:" ;
         Left = TRUE ;
         Text [ italian ] = "Numero di celle:" ;
-        Text [ spanish ] = "Cantidad de celdas:" ;
+        Text [ spanish ] = "Nmero de celdas:" ;
         Text [ french ] = "Nombre de cellules :" ;
         Text [ dutch ] = "Aantal cellen:" ;
         Text [ swedish ] = "Antal celler:" ;
@@ -122,7 +123,7 @@ TabPage RID_SCPAGE_STAT
         Text[ chinese_simplified ] = "单元格的数目:";
         Text[ russian ] = " :";
         Text[ polish ] = "Liczba komrek:";
-        Text[ japanese ] = "セルの数:";
+        Text[ japanese ] = "セルの数:";
         Text[ chinese_traditional ] = "儲存格的數目:";
         Text[ arabic ] = " :";
         Text[ dutch ] = "Aantal cellen:";
@@ -131,8 +132,9 @@ TabPage RID_SCPAGE_STAT
         Text[ korean ] = "셀 개수:";
         Text[ turkish ] = "Hcre says:";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Cantidad de celdas:";
-        Text[ finnish ] = "Solujen m??r?:";
+        Text[ catalan ] = "Nombre de cel.les:";
+        Text[ finnish ] = "Solujen mr:";
+        Text[ thai ] = "จำนวนเซลล์:";
     };
     FixedText FT_CELLS
     {
@@ -149,9 +151,9 @@ TabPage RID_SCPAGE_STAT
         Text [ english_us ] = "Number of pages:" ;
         Left = TRUE ;
         Text [ italian ] = "Numero di pagine:" ;
-        Text [ spanish ] = "Cantidad de pginas:" ;
+        Text [ spanish ] = "Nmero de pginas:" ;
         Text [ french ] = "Nombre de pages :" ;
-        Text [ dutch ] = "Aantal paginas:" ;
+        Text [ dutch ] = "Aantal pagina's:" ;
         Text [ swedish ] = "Antal sidor:" ;
         Text [ danish ] = "Antal sider:" ;
         Text [ portuguese_brazilian ] = "Anzahl Seiten:" ;
@@ -159,17 +161,18 @@ TabPage RID_SCPAGE_STAT
         Text[ chinese_simplified ] = "页数:";
         Text[ russian ] = " :";
         Text[ polish ] = "Liczba stron:";
-        Text[ japanese ] = "ページ総数:";
+        Text[ japanese ] = "ページ総数:";
         Text[ chinese_traditional ] = "頁數:";
         Text[ arabic ] = " :";
-        Text[ dutch ] = "Aantal paginas:";
+        Text[ dutch ] = "Aantal pagina's:";
         Text[ chinese_simplified ] = "页数:";
         Text[ greek ] = " :";
         Text[ korean ] = "페이지 수:";
         Text[ turkish ] = "Sayfa says:";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Cantidad de pginas:";
-        Text[ finnish ] = "Sivujen m??r?:";
+        Text[ catalan ] = "Nombre de pgines:";
+        Text[ finnish ] = "Sivujen mr:";
+        Text[ thai ] = "จำนวนหน้า:";
     };
     FixedText FT_PAGES
     {
@@ -184,7 +187,7 @@ TabPage RID_SCPAGE_STAT
         Text = "Dokument: " ;
         Text [ ENGLISH ] = "Document: " ;
         Text [ english_us ] = "Document: " ;
-        Text [ dutch ] = "Document:  " ;
+        Text [ dutch ] = "Document:" ;
         Text [ italian ] = "Documento: " ;
         Text [ spanish ] = "Documento: " ;
         Text [ french ] = "Document : " ;
@@ -195,17 +198,18 @@ TabPage RID_SCPAGE_STAT
         Text[ chinese_simplified ] = "文档: ";
         Text[ russian ] = ":  ";
         Text[ polish ] = "Dokument:";
-        Text[ japanese ] = "ドキュメント: ";
+        Text[ japanese ] = "ドキュメント: ";
         Text[ chinese_traditional ] = "文件: ";
         Text[ arabic ] = ": ";
-        Text[ dutch ] = "Document:  ";
+        Text[ dutch ] = "Document:";
         Text[ chinese_simplified ] = "文档: ";
         Text[ greek ] = ":";
         Text[ korean ] = "문서: ";
         Text[ turkish ] = "Belge: ";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Documento:  ";
+        Text[ catalan ] = "Document:  ";
         Text[ finnish ] = "Asiakirja: ";
+        Text[ thai ] = "เอกสาร: ";
     };
 };
 
@@ -219,3 +223,10 @@ TabPage RID_SCPAGE_STAT
 
 
 
+
+
+
+
+
+
+
diff --git a/sc/source/ui/drawfunc/drformsh.src b/sc/source/ui/drawfunc/drformsh.src
index 1480d725a7f9..d7f2d68a5c57 100644
--- a/sc/source/ui/drawfunc/drformsh.src
+++ b/sc/source/ui/drawfunc/drformsh.src
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: drformsh.src,v $
  *
- *  $Revision: 1.14 $
+ *  $Revision: 1.15 $
  *
- *  last change: $Author: kz $ $Date: 2001-07-13 21:08:23 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:02 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -93,7 +93,7 @@
         Text [ french ] = "~Disposition" ; \
         Text [ swedish ] = "~Placering" ; \
         Text [ dutch ] = "~Positie" ; \
-        Text [ spanish ] = "~Posicin" ; \
+        Text [ spanish ] = "~Disposicin" ; \
         Text [ english_us ] = "~Arrange" ; \
         SubMenu = Menu\
         {\
@@ -119,18 +119,19 @@
                     Text [ french ] = "V~ers l'avant" ; \
                     Text [ swedish ] = "Flytta l~ngre fram" ; \
                     Text [ dutch ] = "Naar ~voren" ; \
-                    Text [ spanish ] = "Traer ms a~delante" ; \
+                    Text [ spanish ] = "Traer a~delante" ; \
                     Text [ english_us ] = "Bring ~Forward" ; \
-                    Text[ chinese_simplified ] = "һ(~F)";\
+                    Text[ chinese_simplified ] = "上移一层(~F)";\
                     Text[ russian ] = " ~";\
                     Text[ polish ] = "~Wysu do przodu";\
-                    Text[ japanese ] = "Oʂֈړ(~F)";\
+                    Text[ japanese ] = "前面へ移動(~F)";\
                     Text[ greek ] = "~   ";\
-                    Text[ korean ] = " (~F)";\
-                    Text[ chinese_traditional ] = "W@h(~F)";\
+                    Text[ korean ] = "앞으로 이동(~F)";\
+                    Text[ chinese_traditional ] = "上移一層(~F)";\
                     Text[ arabic ] = " ";\
                     Text[ turkish ] = "~Bir ne getir";\
-                    Text[ catalan ] = "Traer ms a~delante";\
+                    Text[ catalan ] = "Porta al ~davant";\
+                    Text[ thai ] = "นำ~ส่งต่อ";\
                 };\
                 MenuItem\
                 {\
@@ -148,18 +149,19 @@
                     Text [ french ] = "~Vers l'arrire" ; \
                     Text [ swedish ] = "Flytta l~ngre bak" ; \
                     Text [ dutch ] = "Naar ~achteren" ; \
-                    Text [ spanish ] = "Enviar hacia a~trs" ; \
+                    Text [ spanish ] = "Enviar a~trs" ; \
                     Text [ english_us ] = "Send Back~ward" ; \
-                    Text[ chinese_simplified ] = "һ(~W)";\
+                    Text[ chinese_simplified ] = "下移一层(~W)";\
                     Text[ russian ] = " ~";\
                     Text[ polish ] = "Przesu do tyu";\
-                    Text[ japanese ] = "wʂɈړ(~W)";\
+                    Text[ japanese ] = "背面に移動(~W)";\
                     Text[ greek ] = "~ ";\
-                    Text[ korean ] = "ڷ (~W)";\
-                    Text[ chinese_traditional ] = "U@h(~W)";\
+                    Text[ korean ] = "뒤로 이동(~W)";\
+                    Text[ chinese_traditional ] = "下移一層(~W)";\
                     Text[ arabic ] = " ";\
                     Text[ turkish ] = "Bir alta gnder";\
-                    Text[ catalan ] = "Enviar hacia a~trs";\
+                    Text[ catalan ] = "Envia cap ~enrere";\
+                    Text[ thai ] = "ส่ง~กลับ";\
                 };\
                 MenuItem\
                 {\
@@ -176,16 +178,17 @@
                 };\
             };\
         };\
-        Text[ chinese_simplified ] = "(~A)";\
-        Text[ russian ] = "~";\
+        Text[ chinese_simplified ] = "排序(~A)";\
+        Text[ russian ] = "~";\
         Text[ polish ] = "~Rozmieszczenie";\
-        Text[ japanese ] = "(~A)";\
+        Text[ japanese ] = "整列(~A)";\
         Text[ greek ] = "~";\
-        Text[ korean ] = "(~A)";\
-        Text[ chinese_traditional ] = "Ƨ(~A)";\
+        Text[ korean ] = "배치(~A)";\
+        Text[ chinese_traditional ] = "排序(~A)";\
         Text[ arabic ] = "~";\
         Text[ turkish ] = "Dzen";\
-        Text[ catalan ] = "~Posicin";\
+        Text[ catalan ] = "~Organitza";\
+        Text[ thai ] = "~จัดเรียง";\
     };
 
 #define MN_ANCHORSUB \
@@ -197,7 +200,7 @@
         Text [ ENGLISH ] = "Anchor" ; \
         Text [ english_us ] = "An~chor" ; \
         Text [ italian ] = "Anco~raggio" ; \
-        Text [ spanish ] = "~Anclaje" ; \
+        Text [ spanish ] = "~Ancla" ; \
         Text [ french ] = "~Ancrage" ; \
         Text [ dutch ] = "~Verankering" ; \
         SubMenu = Menu\
@@ -219,17 +222,18 @@
                     Text [ danish ] = "Til ~siden" ; \
                     Text [ portuguese_brazilian ] = "An der ~Seite" ; \
                     Text [ portuguese ] = "~Na pgina" ; \
-                    Text[ chinese_simplified ] = "ҳ(~A)";\
+                    Text[ chinese_simplified ] = "在页面上(~A)";\
                     Text[ russian ] = "~ ";\
                     Text[ polish ] = "~Na stronie";\
-                    Text[ japanese ] = "߰ނ(~A)";\
+                    Text[ japanese ] = "ページに(~A)";\
                     Text[ greek ] = "~ ";\
-                    Text[ korean ] = "(~A)";\
-                    Text[ chinese_traditional ] = "bW(~A)";\
+                    Text[ korean ] = "페이지에(~A)";\
+                    Text[ chinese_traditional ] = "在頁面上(~A)";\
                     Text[ arabic ] = " ";\
                     Text[ turkish ] = "Sayfa";\
-                    Text[ catalan ] = "A la ~pgina";\
+                    Text[ catalan ] = "A la ~pgina";\
                     Text[ finnish ] = "Sivul~le";\
+                    Text[ thai ] = "ไปยังห~น้า";\
                 };\
                 MenuItem\
                 {\
@@ -246,17 +250,18 @@
                     Text [ danish ] = "Til cellen" ; \
                     Text [ portuguese ] = "~Na clula" ; \
                     Text [ portuguese_brazilian ] = "An der ~Zelle" ; \
-                    Text[ chinese_simplified ] = "ڵԪ(~C)";\
+                    Text[ chinese_simplified ] = "在单元格上(~C)";\
                     Text[ russian ] = " ";\
                     Text[ polish ] = "Przy komrce";\
-                    Text[ japanese ] = "ق(~C)";\
+                    Text[ japanese ] = "セルに(~C)";\
                     Text[ greek ] = " ~";\
-                    Text[ korean ] = " (~C)";\
-                    Text[ chinese_traditional ] = "bxsW(~C)";\
+                    Text[ korean ] = "셀에서(~C)";\
+                    Text[ chinese_traditional ] = "在儲存格上(~C)";\
                     Text[ arabic ] = " ";\
                     Text[ turkish ] = "Hcre";\
-                    Text[ catalan ] = "A la ~celda";\
+                    Text[ catalan ] = "A la ~cel.la";\
                     Text[ finnish ] = "So~luun";\
+                    Text[ thai ] = "ไปยังเ~ซลล์";\
                 };\
             };\
         };\
@@ -264,17 +269,18 @@
         Text [ danish ] = "~Forankring" ; \
         Text [ portuguese ] = "~ncora" ; \
         Text [ portuguese_brazilian ] = "~Verankerung" ; \
-        Text[ chinese_simplified ] = "(~C)";\
-        Text[ russian ] = "~";\
+        Text[ chinese_simplified ] = "锁定(~C)";\
+        Text[ russian ] = "~";\
         Text[ polish ] = "~Zakotwiczenie";\
-        Text[ japanese ] = "ݶ(~C)";\
+        Text[ japanese ] = "アンカー(~C)";\
         Text[ greek ] = "~";\
-        Text[ korean ] = "(~C)";\
-        Text[ chinese_traditional ] = "w(~C)";\
+        Text[ korean ] = "기준 위치(~C)";\
+        Text[ chinese_traditional ] = "鎖定(~C)";\
         Text[ arabic ] = "~";\
         Text[ turkish ] = "~Sabitleyici";\
-        Text[ catalan ] = "~Anclaje";\
+        Text[ catalan ] = "An~cora";\
         Text[ finnish ] = "Ank~kuri";\
+        Text[ thai ] = "ส~มอ";\
     };
 
 #define MN_ALIGNSUB \
@@ -288,7 +294,7 @@
         Text [ italian ] = "~Allineamento" ; \
         Text [ portuguese_brazilian ] = "Ali~nhamento" ; \
         Text [ portuguese ] = "Ali~nhamento" ; \
-        Text [ finnish ] = "~Tasaus" ; \
+        Text [ finnish ] = "T~asaus" ; \
         Text [ danish ] = "~Justering" ; \
         Text [ french ] = "~Alignement" ; \
         Text [ swedish ] = "Juste~ring" ; \
@@ -329,16 +335,17 @@
                 };\
             };\
         };\
-        Text[ chinese_simplified ] = "(~L)";\
+        Text[ chinese_simplified ] = "对齐(~L)";\
         Text[ russian ] = "~";\
         Text[ polish ] = "~Wyrwnanie";\
-        Text[ japanese ] = "zu(~L)";\
+        Text[ japanese ] = "配置(~L)";\
         Text[ greek ] = "~";\
-        Text[ korean ] = "(~L)";\
-        Text[ chinese_traditional ] = "(~L)";\
+        Text[ korean ] = "맞춤(~L)";\
+        Text[ chinese_traditional ] = "對齊(~L)";\
         Text[ arabic ] = "~";\
         Text[ turkish ] = "Hi~zalama";\
-        Text[ catalan ] = "Ali~neacin";\
+        Text[ catalan ] = "A~lineaci";\
+        Text[ thai ] = "จั~ดตำแหน่ง";\
     };
 
 
@@ -360,20 +367,21 @@ String RID_OBJECTBAR_DRAWFORM
     Text [ italian ] = "Barra dei campi di controllo" ;
     Text [ spanish ] = "Barra de campos de control" ;
     Text [ french ] = "Barre de contrles" ;
-    Text [ dutch ] = "Controlebalk" ;
-    Text[ chinese_simplified ] = "";
+    Text [ dutch ] = "Controleveldbalk" ;
+    Text[ chinese_simplified ] = "控制栏";
     Text[ russian ] = "  ";
     Text[ polish ] = "Pasek formantw";
-    Text[ japanese ] = "۰°ް";
-    Text[ chinese_traditional ] = "C";
+    Text[ japanese ] = "コントロールツールバー";
+    Text[ chinese_traditional ] = "控制項列";
     Text[ arabic ] = "  ";
-    Text[ dutch ] = "Controlebalk";
-    Text[ chinese_simplified ] = "";
+    Text[ dutch ] = "Controleveldbalk";
+    Text[ chinese_simplified ] = "控制栏";
     Text[ greek ] = "  ";
-    Text[ korean ] = "Ʈ ";
+    Text[ korean ] = "컨트롤 도구 모음";
     Text[ turkish ] = "Komut alan ubuu";
-    Text[ catalan ] = "Barra de campos de control";
-    Text[ finnish ] = "Ohjaintykalurivi";
+    Text[ catalan ] = "Barra d'eines Controls";
+    Text[ finnish ] = "Ohjausobjektitykalurivi";
+    Text[ thai ] = "ตัวควบคุมแถบเครื่องมือ";
 };
 
 ToolBox RID_OBJECTBAR_DRAWFORM
@@ -531,7 +539,7 @@ String RID_POPUP_DRAWFORM
     Text [ ENGLISH ] = "Toolbar for form objects" ;
     Text[ english_us ] = "Popup menu for form objects";
                 Text[ portuguese ] = "Menu instantneo para objectos de formulrio";
-                Text[ russian ] = "    ";
+                Text[ russian ] = "    ";
                 Text[ dutch ] = "Popup-menu voor formulierobjecten";
                 Text[ french ] = "Menu Pop-up pour les objets de formulaire";
                 Text[ spanish ] = "Men emergente para objetos de formulario";
@@ -540,17 +548,18 @@ String RID_POPUP_DRAWFORM
                 Text[ swedish ] = "Popup-meny fr formulrobjekt";
                 Text[ polish ] = "Menu podrczne dla obiektw formularzy";
                 Text[ portuguese_brazilian ] = "Toolbar for form objects";
-                Text[ japanese ] = "̫ѵ޼ުĂ߯߱ƭ";
-                Text[ chinese_simplified ] = "ĵʽ˵";
-                Text[ chinese_traditional ] = "檫󪺧\\";
+                Text[ japanese ] = "フォームオブジェクトのポップアップメニュー";
+                Text[ chinese_simplified ] = "表单对象的弹出式菜单";
+                Text[ chinese_traditional ] = "表格物件的快顯功能表";
                 Text[ arabic ] = "   ";
                 Text[ dutch ] = "Popup-menu voor formulierobjecten";
-    Text[ chinese_simplified ] = "ĵʽ˵";
+    Text[ chinese_simplified ] = "表单对象的弹出式菜单";
     Text[ greek ] = "    ";
-    Text[ korean ] = "İü ˾ ޴";
+    Text[ korean ] = "양식 개체의 팝업 메뉴";
     Text[ turkish ] = "Form nesneleri iin popup mn";
-    Text[ catalan ] = "Men emergente para objetos de formulario";
+    Text[ catalan ] = "Men emergent per a objectes de formulari";
     Text[ finnish ] = "Lomakeobjektien ponnahdusvalikko";
+    Text[ thai ] = "เมนูแบบผุดขึ้นสำหรับวัตถุฟอร์ม";
 };
  //
  //     Popup-Menue fuer (Uno-) Controls
@@ -579,3 +588,16 @@ Menu RID_POPUP_DRAWFORM
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sc/source/ui/drawfunc/drtxtob.cxx b/sc/source/ui/drawfunc/drtxtob.cxx
index ad72d2a78d20..7ceaa703802a 100644
--- a/sc/source/ui/drawfunc/drtxtob.cxx
+++ b/sc/source/ui/drawfunc/drtxtob.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: drtxtob.cxx,v $
  *
- *  $Revision: 1.17 $
+ *  $Revision: 1.18 $
  *
- *  last change: $Author: dr $ $Date: 2002-11-26 08:44:40 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:02 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -104,6 +104,9 @@
 #include 
 #include 
 #include 
+#ifndef _SVTOOLS_LANGUAGEOPTIONS_HXX
+#include 
+#endif
 #include 
 
 #include "sc.hrc"
@@ -856,6 +859,9 @@ void __EXPORT ScDrawTextObjectBar::GetAttrState( SfxItemSet& rDestSet )
         return;
     }
 
+    SvtLanguageOptions  aLangOpt;
+    BOOL bDisableCTLFont = !aLangOpt.IsCTLFontEnabled();
+    BOOL bDisableVerticalText = !aLangOpt.IsVerticalTextEnabled();
 
     SdrView* pView = pViewData->GetScDrawView();
     SfxItemSet aAttrSet(pView->GetModel()->GetItemPool());
@@ -963,12 +969,20 @@ void __EXPORT ScDrawTextObjectBar::GetAttrState( SfxItemSet& rDestSet )
     else
         bLeftToRight = ( (const SvxWritingModeItem&) aAttrSet.Get( SDRATTR_TEXTDIRECTION ) ).GetValue() == com::sun::star::text::WritingMode_LR_TB;
 
-    rDestSet.Put( SfxBoolItem( SID_TEXTDIRECTION_LEFT_TO_RIGHT, bLeftToRight ) );
-    rDestSet.Put( SfxBoolItem( SID_TEXTDIRECTION_TOP_TO_BOTTOM, !bLeftToRight ) );
+    if ( bDisableVerticalText )
+    {
+        rDestSet.DisableItem( SID_TEXTDIRECTION_LEFT_TO_RIGHT );
+        rDestSet.DisableItem( SID_TEXTDIRECTION_TOP_TO_BOTTOM );
+    }
+    else
+    {
+        rDestSet.Put( SfxBoolItem( SID_TEXTDIRECTION_LEFT_TO_RIGHT, bLeftToRight ) );
+        rDestSet.Put( SfxBoolItem( SID_TEXTDIRECTION_TOP_TO_BOTTOM, !bLeftToRight ) );
+    }
 
     //  left-to-right or right-to-left
 
-    if ( !bLeftToRight )
+    if ( !bLeftToRight || bDisableCTLFont )
     {
         //  disabled if vertical
         rDestSet.DisableItem( SID_ATTR_PARA_LEFT_TO_RIGHT );
diff --git a/sc/source/ui/drawfunc/fudraw.cxx b/sc/source/ui/drawfunc/fudraw.cxx
index 243affe8f782..601e625dd1d0 100644
--- a/sc/source/ui/drawfunc/fudraw.cxx
+++ b/sc/source/ui/drawfunc/fudraw.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: fudraw.cxx,v $
  *
- *  $Revision: 1.8 $
+ *  $Revision: 1.9 $
  *
- *  last change: $Author: aw $ $Date: 2002-07-18 09:54:43 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:02 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -202,7 +202,11 @@ BOOL __EXPORT FuDraw::MouseButtonDown(const MouseEvent& rMEvt)
 
 BOOL __EXPORT FuDraw::MouseMove(const MouseEvent& rMEvt)
 {
-    DoModifiers( rMEvt );
+    //  #106438# evaluate modifiers only if in a drawing layer action
+    //  (don't interfere with keyboard shortcut handling)
+    if (pView->IsAction())
+        DoModifiers( rMEvt );
+
     return FALSE;
 }
 
@@ -544,45 +548,49 @@ BOOL __EXPORT FuDraw::KeyInput(const KeyEvent& rKEvt)
 
                         if(0L == pHdl)
                         {
-                            // #90129# restrict movement to WorkArea
-                            const Rectangle& rWorkArea = pView->GetWorkArea();
-
-                            if(!rWorkArea.IsEmpty())
+                            // #107086# only take action when move is allowed
+                            if(pView->IsMoveAllowed())
                             {
-                                Rectangle aMarkRect(pView->GetMarkedObjRect());
-                                aMarkRect.Move(nX, nY);
+                                // #90129# restrict movement to WorkArea
+                                const Rectangle& rWorkArea = pView->GetWorkArea();
 
-                                if(!aMarkRect.IsInside(rWorkArea))
+                                if(!rWorkArea.IsEmpty())
                                 {
-                                    if(aMarkRect.Left() < rWorkArea.Left())
-                                    {
-                                        nX += rWorkArea.Left() - aMarkRect.Left();
-                                    }
-
-                                    if(aMarkRect.Right() > rWorkArea.Right())
-                                    {
-                                        nX -= aMarkRect.Right() - rWorkArea.Right();
-                                    }
-
-                                    if(aMarkRect.Top() < rWorkArea.Top())
-                                    {
-                                        nY += rWorkArea.Top() - aMarkRect.Top();
-                                    }
+                                    Rectangle aMarkRect(pView->GetMarkedObjRect());
+                                    aMarkRect.Move(nX, nY);
 
-                                    if(aMarkRect.Bottom() > rWorkArea.Bottom())
+                                    if(!aMarkRect.IsInside(rWorkArea))
                                     {
-                                        nY -= aMarkRect.Bottom() - rWorkArea.Bottom();
+                                        if(aMarkRect.Left() < rWorkArea.Left())
+                                        {
+                                            nX += rWorkArea.Left() - aMarkRect.Left();
+                                        }
+
+                                        if(aMarkRect.Right() > rWorkArea.Right())
+                                        {
+                                            nX -= aMarkRect.Right() - rWorkArea.Right();
+                                        }
+
+                                        if(aMarkRect.Top() < rWorkArea.Top())
+                                        {
+                                            nY += rWorkArea.Top() - aMarkRect.Top();
+                                        }
+
+                                        if(aMarkRect.Bottom() > rWorkArea.Bottom())
+                                        {
+                                            nY -= aMarkRect.Bottom() - rWorkArea.Bottom();
+                                        }
                                     }
                                 }
-                            }
 
-                            // now move the selected draw objects
-                            pView->MoveAllMarked(Size(nX, nY));
+                                // now move the selected draw objects
+                                pView->MoveAllMarked(Size(nX, nY));
 
-                            // #97016# II
-                            pView->MakeVisible(pView->GetAllMarkedRect(), *pWindow);
+                                // #97016# II
+                                pView->MakeVisible(pView->GetAllMarkedRect(), *pWindow);
 
-                            bReturn = TRUE;
+                                bReturn = TRUE;
+                            }
                         }
                         else
                         {
diff --git a/sc/source/ui/drawfunc/fuins2.cxx b/sc/source/ui/drawfunc/fuins2.cxx
index 8c36428f41d9..3d2c17d74598 100644
--- a/sc/source/ui/drawfunc/fuins2.cxx
+++ b/sc/source/ui/drawfunc/fuins2.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: fuins2.cxx,v $
  *
- *  $Revision: 1.7 $
+ *  $Revision: 1.8 $
  *
- *  last change: $Author: ka $ $Date: 2001-10-25 15:20:10 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:03 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -67,6 +67,8 @@
 
 //------------------------------------------------------------------------
 
+#include 
+#include 
 #include 
 #include 
 #include 
@@ -308,13 +310,34 @@ FuInsertOLE::FuInsertOLE(ScTabViewShell* pViewSh, Window* pWin, SdrView* pView,
     }
     else    // SID_INSERT_OBJECT
     {
-        SvInsertOleObjectDialog aDlg;
-        aDlg.SetHelpId(nSlot);
-        SvObjectServerList aServerLst;
-        aDlg.FillObjectServerList(&aServerLst);
-        aServerLst.Remove( *ScDocShell::ClassFactory() );   // Starcalc nicht anzeigen
-        aIPObj = aDlg.Execute(pWin, aStor, &aServerLst );
-        bIsFromFile = !aDlg.IsCreateNew();
+        SFX_REQUEST_ARG( rReq, pNameItem, SfxGlobalNameItem, SID_INSERT_OBJECT, sal_False );
+        if ( pNameItem )
+        {
+            SvGlobalName aName = pNameItem->GetValue();
+            const SotFactory* pFact = SvFactory::Find( aName );
+            if ( pFact )
+            {
+                SvStorageRef aStor = new SvStorage( String() );
+                aIPObj = &((SvFactory*)SvInPlaceObject::ClassFactory())->CreateAndInit( aName,aStor );
+            }
+            else
+            {
+                SvStorageRef aStor = new SvStorage( FALSE, String() );
+                String aFileName;
+                BOOL bOk;
+                aIPObj = SvOutPlaceObject::InsertObject( NULL, &aStor, bOk, aName, aFileName );
+            }
+        }
+        else
+        {
+            SvInsertOleObjectDialog aDlg;
+            aDlg.SetHelpId(nSlot);
+            SvObjectServerList aServerLst;
+            aDlg.FillObjectServerList(&aServerLst);
+            aServerLst.Remove( *ScDocShell::ClassFactory() );   // Starcalc nicht anzeigen
+            aIPObj = aDlg.Execute(pWin, aStor, &aServerLst );
+            bIsFromFile = !aDlg.IsCreateNew();
+        }
     }
 
     //  SvInsertObjectDialog (alles in einem Dialog) wird nicht mehr benutzt
@@ -326,7 +349,10 @@ FuInsertOLE::FuInsertOLE(ScTabViewShell* pViewSh, Window* pWin, SdrView* pView,
         SvEmbeddedInfoObject* pInfoObj = pViewSh->GetViewFrame()->GetObjectShell()->
                                             InsertObject(aIPObj, String());
         if ( !pInfoObj )
+        {
             pViewSh->ErrorMessage( STR_ERR_INSERTOBJ );
+            rReq.Ignore();
+        }
         else
         {
             String aName = pInfoObj->GetObjName();
@@ -394,8 +420,12 @@ FuInsertOLE::FuInsertOLE(ScTabViewShell* pViewSh, Window* pWin, SdrView* pView,
                     pSkipPaintObj = NULL;
                 }
             }
+
+            rReq.Done();
         }
     }
+    else
+        rReq.Ignore();
 }
 
 /*************************************************************************
diff --git a/sc/source/ui/drawfunc/futext2.cxx b/sc/source/ui/drawfunc/futext2.cxx
index fe33f35a2736..69d06c728233 100644
--- a/sc/source/ui/drawfunc/futext2.cxx
+++ b/sc/source/ui/drawfunc/futext2.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: futext2.cxx,v $
  *
- *  $Revision: 1.2 $
+ *  $Revision: 1.3 $
  *
- *  last change: $Author: nn $ $Date: 2000-09-22 18:49:37 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:03 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -310,6 +310,7 @@
 
 //------------------------------------------------------------------------
 
+#include 
 #include 
 #include 
 
@@ -328,7 +329,9 @@ SdrOutliner* FuText::MakeOutliner()
     //  Die EditEngine benutzt beim RTF Export (Clipboard / Drag&Drop)
     //  den MapMode des RefDevices, um die Fontgroesse zu setzen
 
-    OutputDevice* pRef = pOutl->GetRefDevice();         // das sollte der Drucker sein
+    //  #i10426# The ref device isn't set to the EditEngine before BegTextEdit now,
+    //  so the device must be taken from the model here.
+    OutputDevice* pRef = pDrDoc->GetRefDevice();
     if (pRef && pRef != pWindow)
         pRef->SetMapMode( MapMode(MAP_100TH_MM) );
 
diff --git a/sc/source/ui/drawfunc/objdraw.src b/sc/source/ui/drawfunc/objdraw.src
index 74d9bccf3021..8d0531c1fa76 100644
--- a/sc/source/ui/drawfunc/objdraw.src
+++ b/sc/source/ui/drawfunc/objdraw.src
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: objdraw.src,v $
  *
- *  $Revision: 1.53 $
+ *  $Revision: 1.54 $
  *
- *  last change: $Author: kz $ $Date: 2002-12-05 10:25:01 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:03 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -88,7 +88,7 @@
         Text[ chinese_traditional ] = "標準(~D)";\
         Text[ arabic ] = "~";\
         Text[ greek ] = "~";\
-        Text[ korean ] = "표준(~D)";\
+        Text[ korean ] = "기본값(~D)";\
         Text[ turkish ] = "Standar~t";\
         Text[ language_user1 ] = " ";\
         Text[ catalan ] = "Per ~defecte";\
@@ -217,7 +217,7 @@
         Text[ chinese_traditional ] = "樣式(~S)";\
         Text[ arabic ] = "";\
         Text[ greek ] = "~";\
-        Text[ korean ] = "유형(~S)";\
+        Text[ korean ] = "스타일(~S)";\
         Text[ turkish ] = "Bi~im";\
         Text[ language_user1 ] = " ";\
         Text[ catalan ] = "E~stil";\
@@ -434,7 +434,7 @@
         Text[ chinese_traditional ] = "列間隔(~L)";\
         Text[ arabic ] = " ";\
         Text[ greek ] = "~";\
-        Text[ korean ] = "행 간격(~L)";\
+        Text[ korean ] = "줄 간격(~L)";\
         Text[ turkish ] = "~Satr aral";\
         Text[ language_user1 ] = " ";\
         Text[ catalan ] = "Inter~lineat";\
@@ -509,7 +509,7 @@
         Text[ chinese_traditional ] = "原件大小(~O)";\
         Text[ arabic ] = " ";\
         Text[ greek ] = " ~";\
-        Text[ korean ] = "기본 크기(~O)";\
+        Text[ korean ] = "원래 크기(~O)";\
         Text[ turkish ] = "Gerek ~boyut";\
         Text[ language_user1 ] = " ";\
         Text[ catalan ] = "Mida ~original";\
@@ -525,7 +525,7 @@
         Text [ ENGLISH ] = "~Name Object..." ; \
         Text[ english_us ] = "~Name Object...";\
         Text[ portuguese ] = "~Name Object...";\
-        Text[ russian ] = "~ ...";\
+        Text[ russian ] = "~ ...";\
         Text[ greek ] = "~Name Object...";\
         Text[ dutch ] = "Na~am geven aan object...";\
         Text[ french ] = "~Nommer l'objet...";\
@@ -537,7 +537,7 @@
         Text[ polish ] = "~Name Object...";\
         Text[ portuguese_brazilian ] = "~Name Object...";\
         Text[ japanese ] = "オブジェクトに名前を付ける...";\
-        Text[ korean ] = "개체 명칭(N)...";\
+        Text[ korean ] = "개체 이름 지정(~N)...";\
         Text[ chinese_simplified ] = "命名对象...";\
         Text[ chinese_traditional ] = "命名物件...";\
         Text[ turkish ] = "~Name Object...";\
@@ -583,7 +583,7 @@
                     Text [ french ] = " la ~verticale" ; \
                     Text [ swedish ] = "~Vertikalt" ; \
                     Text [ dutch ] = "~Verticaal" ; \
-                    Text [ spanish ] = "~Vertical" ; \
+                    Text [ spanish ] = "~Verticalmente" ; \
                     Text [ english_us ] = "~Vertically" ; \
                     Text[ chinese_simplified ] = "垂直方向(~V)";\
                     Text[ russian ] = "~ ";\
@@ -660,7 +660,7 @@
         Text [ french ] = "~Disposition" ; \
         Text [ swedish ] = "Pl~acering" ; \
         Text [ dutch ] = "~Positie" ; \
-        Text [ spanish ] = "Posicin" ; \
+        Text [ spanish ] = "~Disposicin" ; \
         Text [ english_us ] = "~Arrange" ; \
         SubMenu = Menu\
         {\
@@ -695,7 +695,7 @@
                     Text[ chinese_traditional ] = "上移一層(~F)";\
                     Text[ arabic ] = " ";\
                     Text[ greek ] = "~   ";\
-                    Text[ korean ] = "앞으로 가져오기(~F)";\
+                    Text[ korean ] = "앞으로 이동(~F)";\
                     Text[ turkish ] = "B~ir ne getir";\
                     Text[ language_user1 ] = " ";\
                     Text[ catalan ] = "Porta al ~davant";\
@@ -726,7 +726,7 @@
                     Text[ chinese_traditional ] = "下移一層(~W)";\
                     Text[ arabic ] = " ";\
                     Text[ greek ] = "~ ";\
-                    Text[ korean ] = "뒤로 보내기(~W)";\
+                    Text[ korean ] = "뒤로 이동(~W)";\
                     Text[ turkish ] = "Bir  ~geri gnder";\
                     Text[ language_user1 ] = " ";\
                     Text[ catalan ] = "En~via cap enrere";\
@@ -754,7 +754,7 @@
         Text[ chinese_traditional ] = "排序(~A)";\
         Text[ arabic ] = "~";\
         Text[ greek ] = "~";\
-        Text[ korean ] = "배열(~A)";\
+        Text[ korean ] = "배치(~A)";\
         Text[ turkish ] = "~Sralama";\
         Text[ language_user1 ] = " ";\
         Text[ catalan ] = "~Organitza";\
@@ -770,7 +770,7 @@
         Text [ ENGLISH ] = "Anchor" ; \
         Text [ english_us ] = "An~chor" ; \
         Text [ italian ] = "Anco~raggio" ; \
-        Text [ spanish ] = "~Anclaje" ; \
+        Text [ spanish ] = "~Ancla" ; \
         Text [ french ] = "~Ancrage" ; \
         Text [ dutch ] = "~Verankering" ; \
         SubMenu = Menu\
@@ -799,7 +799,7 @@
                     Text[ chinese_traditional ] = "在頁面上(~A)";\
                     Text[ arabic ] = " ~";\
                     Text[ greek ] = "~ ";\
-                    Text[ korean ] = "페이지에서(~A)";\
+                    Text[ korean ] = "페이지에(~A)";\
                     Text[ turkish ] = "Sayfa~da";\
                     Text[ language_user1 ] = " ";\
                     Text[ catalan ] = "A la p~gina";\
@@ -848,7 +848,7 @@
         Text[ chinese_traditional ] = "鎖定(~C)";\
         Text[ arabic ] = "~";\
         Text[ greek ] = "~";\
-        Text[ korean ] = "위치 고정(~C)";\
+        Text[ korean ] = "기준 위치(~C)";\
         Text[ turkish ] = "Sa~bitleyici";\
         Text[ language_user1 ] = " ";\
         Text[ catalan ] = "An~cora";\
@@ -1308,6 +1308,326 @@ ToolBox RID_TEXT_TOOLBOX
             HelpID = SID_PARA_DLG ;
         };
     };
+    ItemList[arabic] =
+    {
+        ToolBoxItem
+        {
+            Identifier = SID_ATTR_CHAR_FONT ;
+            HelpId = SID_ATTR_CHAR_FONT ;
+        };
+         //---------------------------------------------
+        ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+         //---------------------------------------------
+        ToolBoxItem
+        {
+            Identifier = SID_ATTR_CHAR_FONTHEIGHT ;
+            HelpId = SID_ATTR_CHAR_FONTHEIGHT ;
+        };
+         //---------------------------------------------
+        ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+         //---------------------------------------------
+        ToolBoxItem
+        {
+            Identifier = SID_ATTR_CHAR_WEIGHT ;
+            HelpId = SID_ATTR_CHAR_WEIGHT ;
+            AutoCheck = TRUE ;
+        };
+        ToolBoxItem
+        {
+            Identifier = SID_ATTR_CHAR_POSTURE ;
+            HelpId = SID_ATTR_CHAR_POSTURE ;
+            AutoCheck = TRUE ;
+        };
+        ToolBoxItem
+        {
+            Identifier = SID_ATTR_CHAR_UNDERLINE ;
+            HelpId = SID_ATTR_CHAR_UNDERLINE ;
+            AutoCheck = TRUE ;
+        };
+        ToolBoxItem
+        {
+            Identifier = SID_ULINE_VAL_DOUBLE;
+            HelpId = SID_ULINE_VAL_DOUBLE;
+            AutoCheck = TRUE ;
+            Hide=TRUE;
+        };
+        ToolBoxItem
+        {
+            Identifier = SID_ATTR_CHAR_COLOR ;
+            HelpId = SID_ATTR_CHAR_COLOR ;
+        };
+         //---------------------------------------------
+        ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+         //---------------------------------------------
+        ToolBoxItem
+        {
+            Identifier = SID_ATTR_PARA_LINESPACE_10 ;
+            HelpId = SID_ATTR_PARA_LINESPACE_10 ;
+            RadioCheck = TRUE ;
+            AutoCheck = TRUE ;
+        };
+        ToolBoxItem
+        {
+            Identifier = SID_ATTR_PARA_LINESPACE_15 ;
+            HelpId = SID_ATTR_PARA_LINESPACE_15 ;
+            RadioCheck = TRUE ;
+            AutoCheck = TRUE ;
+        };
+        ToolBoxItem
+        {
+            Identifier = SID_ATTR_PARA_LINESPACE_20 ;
+            HelpId = SID_ATTR_PARA_LINESPACE_20 ;
+            RadioCheck = TRUE ;
+            AutoCheck = TRUE ;
+        };
+         //---------------------------------------------
+        ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+         //---------------------------------------------
+        ToolBoxItem
+        {
+            Identifier = SID_ALIGNRIGHT ;
+            HelpId = SID_ATTR_PARA_ADJUST_RIGHT ;
+            RadioCheck = TRUE ;
+            AutoCheck = TRUE ;
+        };
+        ToolBoxItem
+        {
+            Identifier = SID_ALIGNCENTERHOR ;
+            HelpId = SID_ATTR_PARA_ADJUST_CENTER ;
+            RadioCheck = TRUE ;
+            AutoCheck = TRUE ;
+        };
+        ToolBoxItem
+        {
+            Identifier = SID_ALIGNLEFT ;
+            HelpId = SID_ATTR_PARA_ADJUST_LEFT ;
+            RadioCheck = TRUE ;
+            AutoCheck = TRUE ;
+        };
+        ToolBoxItem
+        {
+            Identifier = SID_ALIGNBLOCK ;
+            HelpId = SID_ATTR_PARA_ADJUST_BLOCK ;
+            RadioCheck = TRUE ;
+            AutoCheck = TRUE ;
+        };
+         //---------------------------------------------
+        ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+         //---------------------------------------------
+        ToolBoxItem
+        {
+            Identifier = SID_ATTR_PARA_RIGHT_TO_LEFT;
+            HelpID = SID_ATTR_PARA_RIGHT_TO_LEFT;
+            RadioCheck = TRUE;
+            Hide = TRUE;
+        };
+        ToolBoxItem
+        {
+            Identifier = SID_ATTR_PARA_LEFT_TO_RIGHT;
+            HelpID = SID_ATTR_PARA_LEFT_TO_RIGHT;
+            RadioCheck = TRUE;
+            Hide = TRUE;
+        };
+         //---------------------------------------------
+        ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+         //---------------------------------------------
+        ToolBoxItem
+        {
+            Identifier = SID_SET_SUPER_SCRIPT ;
+            HelpID = SID_SET_SUPER_SCRIPT ;
+        };
+        ToolBoxItem
+        {
+            Identifier = SID_SET_SUB_SCRIPT ;
+            HelpID = SID_SET_SUB_SCRIPT ;
+        };
+         //---------------------------------------------
+        ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+         //---------------------------------------------
+        ToolBoxItem
+        {
+            Identifier = SID_TEXTDIRECTION_LEFT_TO_RIGHT ;
+            HelpID = SID_TEXTDIRECTION_LEFT_TO_RIGHT ;
+        };
+        ToolBoxItem
+        {
+            Identifier = SID_TEXTDIRECTION_TOP_TO_BOTTOM ;
+            HelpID = SID_TEXTDIRECTION_TOP_TO_BOTTOM ;
+        };
+         //---------------------------------------------
+        ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+         //---------------------------------------------
+        ToolBoxItem
+        {
+            Identifier = SID_CHAR_DLG ;
+            HelpID = SID_CHAR_DLG ;
+        };
+        ToolBoxItem
+        {
+            Identifier = SID_PARA_DLG ;
+            HelpID = SID_PARA_DLG ;
+        };
+    };
+    ItemList[hebrew] =
+    {
+        ToolBoxItem
+        {
+            Identifier = SID_ATTR_CHAR_FONT ;
+            HelpId = SID_ATTR_CHAR_FONT ;
+        };
+         //---------------------------------------------
+        ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+         //---------------------------------------------
+        ToolBoxItem
+        {
+            Identifier = SID_ATTR_CHAR_FONTHEIGHT ;
+            HelpId = SID_ATTR_CHAR_FONTHEIGHT ;
+        };
+         //---------------------------------------------
+        ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+         //---------------------------------------------
+        ToolBoxItem
+        {
+            Identifier = SID_ATTR_CHAR_WEIGHT ;
+            HelpId = SID_ATTR_CHAR_WEIGHT ;
+            AutoCheck = TRUE ;
+        };
+        ToolBoxItem
+        {
+            Identifier = SID_ATTR_CHAR_POSTURE ;
+            HelpId = SID_ATTR_CHAR_POSTURE ;
+            AutoCheck = TRUE ;
+        };
+        ToolBoxItem
+        {
+            Identifier = SID_ATTR_CHAR_UNDERLINE ;
+            HelpId = SID_ATTR_CHAR_UNDERLINE ;
+            AutoCheck = TRUE ;
+        };
+        ToolBoxItem
+        {
+            Identifier = SID_ULINE_VAL_DOUBLE;
+            HelpId = SID_ULINE_VAL_DOUBLE;
+            AutoCheck = TRUE ;
+            Hide=TRUE;
+        };
+        ToolBoxItem
+        {
+            Identifier = SID_ATTR_CHAR_COLOR ;
+            HelpId = SID_ATTR_CHAR_COLOR ;
+        };
+         //---------------------------------------------
+        ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+         //---------------------------------------------
+        ToolBoxItem
+        {
+            Identifier = SID_ATTR_PARA_LINESPACE_10 ;
+            HelpId = SID_ATTR_PARA_LINESPACE_10 ;
+            RadioCheck = TRUE ;
+            AutoCheck = TRUE ;
+        };
+        ToolBoxItem
+        {
+            Identifier = SID_ATTR_PARA_LINESPACE_15 ;
+            HelpId = SID_ATTR_PARA_LINESPACE_15 ;
+            RadioCheck = TRUE ;
+            AutoCheck = TRUE ;
+        };
+        ToolBoxItem
+        {
+            Identifier = SID_ATTR_PARA_LINESPACE_20 ;
+            HelpId = SID_ATTR_PARA_LINESPACE_20 ;
+            RadioCheck = TRUE ;
+            AutoCheck = TRUE ;
+        };
+         //---------------------------------------------
+        ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+         //---------------------------------------------
+        ToolBoxItem
+        {
+            Identifier = SID_ALIGNRIGHT ;
+            HelpId = SID_ATTR_PARA_ADJUST_RIGHT ;
+            RadioCheck = TRUE ;
+            AutoCheck = TRUE ;
+        };
+        ToolBoxItem
+        {
+            Identifier = SID_ALIGNCENTERHOR ;
+            HelpId = SID_ATTR_PARA_ADJUST_CENTER ;
+            RadioCheck = TRUE ;
+            AutoCheck = TRUE ;
+        };
+        ToolBoxItem
+        {
+            Identifier = SID_ALIGNLEFT ;
+            HelpId = SID_ATTR_PARA_ADJUST_LEFT ;
+            RadioCheck = TRUE ;
+            AutoCheck = TRUE ;
+        };
+        ToolBoxItem
+        {
+            Identifier = SID_ALIGNBLOCK ;
+            HelpId = SID_ATTR_PARA_ADJUST_BLOCK ;
+            RadioCheck = TRUE ;
+            AutoCheck = TRUE ;
+        };
+         //---------------------------------------------
+        ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+         //---------------------------------------------
+        ToolBoxItem
+        {
+            Identifier = SID_ATTR_PARA_RIGHT_TO_LEFT;
+            HelpID = SID_ATTR_PARA_RIGHT_TO_LEFT;
+            RadioCheck = TRUE;
+            Hide = TRUE;
+        };
+        ToolBoxItem
+        {
+            Identifier = SID_ATTR_PARA_LEFT_TO_RIGHT;
+            HelpID = SID_ATTR_PARA_LEFT_TO_RIGHT;
+            RadioCheck = TRUE;
+            Hide = TRUE;
+        };
+         //---------------------------------------------
+        ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+         //---------------------------------------------
+        ToolBoxItem
+        {
+            Identifier = SID_SET_SUPER_SCRIPT ;
+            HelpID = SID_SET_SUPER_SCRIPT ;
+        };
+        ToolBoxItem
+        {
+            Identifier = SID_SET_SUB_SCRIPT ;
+            HelpID = SID_SET_SUB_SCRIPT ;
+        };
+         //---------------------------------------------
+        ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+         //---------------------------------------------
+        ToolBoxItem
+        {
+            Identifier = SID_TEXTDIRECTION_LEFT_TO_RIGHT ;
+            HelpID = SID_TEXTDIRECTION_LEFT_TO_RIGHT ;
+        };
+        ToolBoxItem
+        {
+            Identifier = SID_TEXTDIRECTION_TOP_TO_BOTTOM ;
+            HelpID = SID_TEXTDIRECTION_TOP_TO_BOTTOM ;
+        };
+         //---------------------------------------------
+        ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+         //---------------------------------------------
+        ToolBoxItem
+        {
+            Identifier = SID_CHAR_DLG ;
+            HelpID = SID_CHAR_DLG ;
+        };
+        ToolBoxItem
+        {
+            Identifier = SID_PARA_DLG ;
+            HelpID = SID_PARA_DLG ;
+        };
+    };
 };
  //
  // Graphics toolbox
@@ -1329,7 +1649,7 @@ String RID_GRAPHIC_OBJECTBAR
     Text[ polish ] = "Pasek obiektw graficznych";
     Text[ portuguese_brazilian ] = "Toolbar for graphic objects";
     Text[ japanese ] = "図オブジェクトバー";
-    Text[ korean ] = "그래픽 개체 모음";
+    Text[ korean ] = "그림 개체 모음";
     Text[ chinese_simplified ] = "图形对象栏";
     Text[ chinese_traditional ] = "圖形物件列";
     Text[ turkish ] = "Toolbar for graphic objects";
@@ -1753,7 +2073,7 @@ Menu RID_POPUP_CHART
                                                 Text[ chinese_traditional ] = "修改資料區域(~M)...";
                                                 Text[ arabic ] = "...  ";
                                                 Text[ greek ] = "  ~...";
-            Text[ korean ] = "데이터 영역 수정(~M)...";
+            Text[ korean ] = "데이터 범위 수정(~M)...";
             Text[ turkish ] = "~Veri alann deitir...";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "~Modifica l'rea de dades...";
@@ -1829,3 +2149,8 @@ Menu RID_POPUP_DRAWTEXT
     };
 };
 
+
+
+
+
+
diff --git a/sc/source/ui/formdlg/dwfunctr.src b/sc/source/ui/formdlg/dwfunctr.src
index 5650acc425ca..80ee4f53e578 100644
--- a/sc/source/ui/formdlg/dwfunctr.src
+++ b/sc/source/ui/formdlg/dwfunctr.src
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: dwfunctr.src,v $
  *
- *  $Revision: 1.23 $
+ *  $Revision: 1.24 $
  *
- *  last change: $Author: os $ $Date: 2002-08-29 07:27:13 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:05 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -210,13 +210,13 @@ DockingWindow FID_FUNCTION_BOX
             < "Viimeksi kytetty" ; Default ; > ;
             < "Kaikki" ; Default ; > ;
             < "Tietokanta" ; Default ; > ;
-            < "Pivmr&Aika" ; Default ; > ;
+            < "Pivmr ja aika" ; Default ; > ;
             < "Rahoitus" ; Default ; > ;
             < "Tiedot" ; Default ; > ;
             < "Looginen" ; Default ; > ;
             < "Matemaattinen" ; Default ; > ;
-            < "Matriisi" ; Default ; > ;
-            < "Tilastolliset" ; Default ; > ;
+            < "Taulukko" ; Default ; > ;
+            < "Tilastollinen" ; Default ; > ;
             < "Laskentataulukko" ; Default ; > ;
             < "Teksti" ; Default ; > ;
             < "Lisosa" ; Default ; > ;
@@ -250,8 +250,8 @@ DockingWindow FID_FUNCTION_BOX
             < "Logique" ; Default ; > ;
             < "Mathmatique" ; Default ; > ;
             < "Matrice" ; Default ; > ;
-            < "Statistique" ; Default ; > ;
-            < "Classeur" ; Default ; > ;
+            < "Statistiques" ; Default ; > ;
+            < "Feuille de calcul" ; Default ; > ;
             < "Texte" ; Default ; > ;
             < "Add-in" ; Default ; > ;
              //         < "Dfini par l'utilisateur"; Default; >;
@@ -278,11 +278,11 @@ DockingWindow FID_FUNCTION_BOX
             < "Als laatste gebruikt" ; Default ; > ;
             < "Alle" ; Default ; > ;
             < "Database" ; Default ; > ;
-            < "Datum&Tijd" ; Default ; > ;
+            < "Datum & tijd" ; Default ; > ;
             < "Financieel" ; Default ; > ;
             < "Informatie" ; Default ; > ;
             < "Logisch" ; Default ; > ;
-            < "Wiskundig" ; Default ; > ;
+            < "Wiskunde" ; Default ; > ;
             < "Matrix" ; Default ; > ;
             < "Statistiek" ; Default ; > ;
             < "Werkblad" ; Default ; > ;
@@ -295,11 +295,11 @@ DockingWindow FID_FUNCTION_BOX
             < "ltima utilizacin" ; Default ; > ;
             < "Todas" ; Default ; > ;
             < "Base de datos" ; Default ; > ;
-            < "Fecha&Hora" ; Default ; > ;
+            < "Fecha y hora" ; Default ; > ;
             < "Finanzas" ; Default ; > ;
             < "Informacin" ; Default ; > ;
             < "Lgico" ; Default ; > ;
-            < "Matemticas" ; Default ; > ;
+            < "Matemtico" ; Default ; > ;
             < "Matriz" ; Default ; > ;
             < "Estadstica" ; Default ; > ;
             < "Hoja de clculo" ; Default ; > ;
@@ -325,7 +325,7 @@ DockingWindow FID_FUNCTION_BOX
     };
     StringList [ russian ] =
     {
-            < " " ; Default ; > ;
+            < " " ; Default ; > ;
         < "" ; Default ; > ;
         < " " ; Default ; > ;
         < "  " ; Default ; > ;
@@ -333,11 +333,11 @@ DockingWindow FID_FUNCTION_BOX
         < "" ; Default ; > ;
         < "" ; Default ; > ;
         < "" ; Default ; > ;
-        < "" ; Default ; > ;
+        < "" ; Default ; > ;
         < "" ; Default ; > ;
-        < "" ; Default ; > ;
-        < "" ; Default ; > ;
-        < " (Add-in)" ; Default ; > ;
+        < " " ; Default ; > ;
+        < "" ; Default ; > ;
+        < " " ; Default ; > ;
     };
     StringList [ polish ] =
     {
@@ -408,11 +408,11 @@ DockingWindow FID_FUNCTION_BOX
             < "Als laatste gebruikt" ; Default ; > ;
         < "Alle" ; Default ; > ;
         < "Database" ; Default ; > ;
-        < "Datum&Tijd" ; Default ; > ;
+        < "Datum & tijd" ; Default ; > ;
         < "Financieel" ; Default ; > ;
         < "Informatie" ; Default ; > ;
         < "Logisch" ; Default ; > ;
-        < "Wiskundig" ; Default ; > ;
+        < "Wiskunde" ; Default ; > ;
         < "Matrix" ; Default ; > ;
         < "Statistiek" ; Default ; > ;
         < "Werkblad" ; Default ; > ;
@@ -453,10 +453,10 @@ DockingWindow FID_FUNCTION_BOX
     };
     StringList [ korean ] =
     {
-            < "마지막으로 사용된" ; Default ; > ;
-        < "전체" ; Default ; > ;
+            < "가장 최근에 사용된 서식" ; Default ; > ;
+        < "모두" ; Default ; > ;
         < "데이터베이스" ; Default ; > ;
-        < "날짜&시간" ; Default ; > ;
+        < "날짜 및 시간" ; Default ; > ;
         < "회계" ; Default ; > ;
         < "정보" ; Default ; > ;
         < "논리적" ; Default ; > ;
@@ -465,7 +465,7 @@ DockingWindow FID_FUNCTION_BOX
         < "통계" ; Default ; > ;
         < "스프레드시트" ; Default ; > ;
         < "텍스트" ; Default ; > ;
-        < "추가" ; Default ; > ;
+        < "Add-in" ; Default ; > ;
     };
     StringList [ turkish ] =
     {
@@ -626,10 +626,25 @@ DockingWindow FID_FUNCTION_BOX
     Text[ turkish ] = "Fonksiyon";
     Text[ language_user1 ] = " ";
     Text[ catalan ] = "Funcions";
-    Text[ finnish ] = "Toiminnot";
+    Text[ finnish ] = "Funktiot";
     Text[ thai ] = "ฟังก์ชั่น";
 };
  // ********************************************************************** EOF
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sc/source/ui/formdlg/formdata.cxx b/sc/source/ui/formdlg/formdata.cxx
index b473988e1c89..dd24259a1883 100644
--- a/sc/source/ui/formdlg/formdata.cxx
+++ b/sc/source/ui/formdlg/formdata.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: formdata.cxx,v $
  *
- *  $Revision: 1.1.1.1 $
+ *  $Revision: 1.2 $
  *
- *  last change: $Author: hr $ $Date: 2000-09-18 16:44:57 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:05 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
diff --git a/sc/source/ui/formdlg/formdlgs.src b/sc/source/ui/formdlg/formdlgs.src
index 4842440ab24d..2fcdf94bdd37 100644
--- a/sc/source/ui/formdlg/formdlgs.src
+++ b/sc/source/ui/formdlg/formdlgs.src
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: formdlgs.src,v $
  *
- *  $Revision: 1.36 $
+ *  $Revision: 1.37 $
  *
- *  last change: $Author: rt $ $Date: 2002-11-27 16:34:54 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:06 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -272,8 +272,8 @@ TabPage RID_SCTAB_FUNCTION
             < "Logique" ; Default ; > ;
             < "Mathmatique" ; Default ; > ;
             < "Matrice" ; Default ; > ;
-            < "Statistique" ; Default ; > ;
-            < "Classeur" ; Default ; > ;
+            < "Statistiques" ; Default ; > ;
+            < "Feuille de calcul" ; Default ; > ;
             < "Texte" ; Default ; > ;
             < "Add-in" ; Default ; > ;
              //         < "Dfini par l'utilisateur"; Default; >;
@@ -317,11 +317,11 @@ TabPage RID_SCTAB_FUNCTION
             < "ltima utilizacin" ; Default ; > ;
             < "Todas" ; Default ; > ;
             < "Base de datos" ; Default ; > ;
-            < "Fecha&Hora" ; Default ; > ;
+            < "Fecha y hora" ; Default ; > ;
             < "Finanzas" ; Default ; > ;
             < "Informacin" ; Default ; > ;
             < "Lgico" ; Default ; > ;
-            < "Matemtica" ; Default ; > ;
+            < "Matemtico" ; Default ; > ;
             < "Matriz" ; Default ; > ;
             < "Estadstica" ; Default ; > ;
             < "Hoja de clculo" ; Default ; > ;
@@ -443,10 +443,10 @@ TabPage RID_SCTAB_FUNCTION
     };
     StringList [ korean ] =
     {
-            < "마지막으로 사용된" ; Default ; > ;
+            < "가장 최근에 사용된 서식" ; Default ; > ;
         < "모두" ; Default ; > ;
         < "데이터베이스" ; Default ; > ;
-        < "날짜&시간" ; Default ; > ;
+        < "날짜 및 시간" ; Default ; > ;
         < "회계" ; Default ; > ;
         < "정보" ; Default ; > ;
         < "논리적" ; Default ; > ;
@@ -455,7 +455,7 @@ TabPage RID_SCTAB_FUNCTION
         < "통계" ; Default ; > ;
         < "스프레드시트" ; Default ; > ;
         < "텍스트" ; Default ; > ;
-        < "추가" ; Default ; > ;
+        < "Add-in" ; Default ; > ;
     };
     StringList [ turkish ] =
     {
@@ -872,7 +872,7 @@ ModelessDialog RID_SCDLG_FORMULA
         Text [ swedish ] = "Delresultat" ;
         Text [ danish ] = "Delresultat" ;
         Text [ italian ] = "Subtotale" ;
-        Text [ spanish ] = "Subtotal" ;
+        Text [ spanish ] = "Resultado parcial" ;
         Text [ french ] = "Rsultat partiel" ;
         Text [ dutch ] = "Tussenresultaat" ;
         Text [ portuguese ] = "Resultado de funo" ;
@@ -1092,16 +1092,16 @@ ModelessDialog RID_SCDLG_FORMULA
         Text [ french ] = "AutoPilote de fonctions" ;
         Text [ swedish ] = "Funktionsautopilot" ;
         Text [ dutch ] = "Functie-AutoPiloot" ;
-        Text [ spanish ] = "AutoPiloto de funciones" ;
+        Text [ spanish ] = "Piloto automtico de funciones" ;
         Text [ english_us ] = "AutoPilot: Functions" ;
-        Text[ chinese_simplified ] = "函数自动助理";
+        Text[ chinese_simplified ] = "自动文件助理:函数";
         Text[ russian ] = ": ";
         Text[ polish ] = "AutoPilot funkcji";
         Text[ japanese ] = "関数オートパイロット";
         Text[ chinese_traditional ] = "函數自動助理";
         Text[ arabic ] = "  ";
         Text[ greek ] = "AutoPilot ";
-        Text[ korean ] = "자동 파일럿 기능";
+        Text[ korean ] = "자동 파일럿: 기능";
         Text[ turkish ] = "Fonksiyon oto pilotu";
         Text[ catalan ] = "AutoPilot: Funcions";
         Text[ thai ] = "ฟังก์ชั่นนำร่องอัตโนมัติ";
@@ -1119,9 +1119,9 @@ ModelessDialog RID_SCDLG_FORMULA
         Text [ french ] = "AutoPilote de fonctions -" ;
         Text [ swedish ] = "Funktionsautopilot  -  " ;
         Text [ dutch ] = "Functie-AutoPiloot -" ;
-        Text [ spanish ] = "AutoPiloto de funciones  - " ;
+        Text [ spanish ] = "Piloto automtico: Funciones  - " ;
         Text [ english_us ] = "AutoPilot: Functions  -" ;
-        Text[ chinese_simplified ] = "函数自动助理  -";
+        Text[ chinese_simplified ] = "自动文件助理:函数 -";
         Text[ russian ] = ":   -";
         Text[ polish ] = "AutoPilot funkcji  -";
         Text[ japanese ] = "関数オートパイロット-";
@@ -1135,3 +1135,8 @@ ModelessDialog RID_SCDLG_FORMULA
     };
 };
 
+
+
+
+
+
diff --git a/sc/source/ui/formdlg/parawin.src b/sc/source/ui/formdlg/parawin.src
index 517c4ddc00ae..3c77ee28607f 100644
--- a/sc/source/ui/formdlg/parawin.src
+++ b/sc/source/ui/formdlg/parawin.src
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: parawin.src,v $
  *
- *  $Revision: 1.18 $
+ *  $Revision: 1.19 $
  *
- *  last change: $Author: rt $ $Date: 2002-11-27 16:36:31 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:06 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -236,3 +236,5 @@ TabPage RID_SCTAB_PARAMETER
     };
 };
 
+
+
diff --git a/sc/source/ui/inc/AccessibleContextBase.hxx b/sc/source/ui/inc/AccessibleContextBase.hxx
index 4f162cb22036..054ccdbf2791 100644
--- a/sc/source/ui/inc/AccessibleContextBase.hxx
+++ b/sc/source/ui/inc/AccessibleContextBase.hxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: AccessibleContextBase.hxx,v $
  *
- *  $Revision: 1.18 $
+ *  $Revision: 1.19 $
  *
- *  last change: $Author: sab $ $Date: 2002-12-04 15:39:33 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:08 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -397,8 +397,8 @@ private:
     */
     ::rtl::OUString msName;
 
-    /// List of property change listeners.
-    cppu::OInterfaceContainerHelper* mpEventListeners;
+    /// client id in the AccessibleEventNotifier queue
+    sal_uInt32 mnClientId;
 
     /** This is the role of this object.
     */
diff --git a/sc/source/ui/inc/AccessibleCsvControl.hxx b/sc/source/ui/inc/AccessibleCsvControl.hxx
index e92214255b86..0e6082a513e5 100644
--- a/sc/source/ui/inc/AccessibleCsvControl.hxx
+++ b/sc/source/ui/inc/AccessibleCsvControl.hxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: AccessibleCsvControl.hxx,v $
  *
- *  $Revision: 1.5 $
+ *  $Revision: 1.6 $
  *
- *  last change: $Author: sab $ $Date: 2002-11-05 07:56:44 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:08 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -265,7 +265,7 @@ public:
     /** Returns the count of characters. */
     virtual sal_Int32 SAL_CALL getCharacterCount() throw( ::com::sun::star::uno::RuntimeException );
 
-    /** Returns the character index at the specified screen coordinate. */
+    /** Returns the character index at the specified coordinate (object's coordinate system). */
     virtual sal_Int32 SAL_CALL getIndexAtPoint( const AwtPoint& rPoint )
         throw( ::com::sun::star::uno::RuntimeException );
 
diff --git a/sc/source/ui/inc/AccessibleDocumentPagePreview.hxx b/sc/source/ui/inc/AccessibleDocumentPagePreview.hxx
index 1faa0472e54f..03042792bde2 100644
--- a/sc/source/ui/inc/AccessibleDocumentPagePreview.hxx
+++ b/sc/source/ui/inc/AccessibleDocumentPagePreview.hxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: AccessibleDocumentPagePreview.hxx,v $
  *
- *  $Revision: 1.7 $
+ *  $Revision: 1.8 $
  *
- *  last change: $Author: sab $ $Date: 2002-05-24 15:22:33 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:08 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -161,10 +161,12 @@ protected:
         createAccessibleName(void)
         throw (::com::sun::star::uno::RuntimeException);
 
+public: // needed in ScShapeChilds
     /// Return the object's current bounding box relative to the desktop.
     virtual Rectangle GetBoundingBoxOnScreen(void) const
         throw (::com::sun::star::uno::RuntimeException);
 
+protected:
     /// Return the object's current bounding box relative to the parent object.
     virtual Rectangle GetBoundingBox(void) const
         throw (::com::sun::star::uno::RuntimeException);
diff --git a/sc/source/ui/inc/AccessiblePreviewHeaderCell.hxx b/sc/source/ui/inc/AccessiblePreviewHeaderCell.hxx
index 1d4454fff5a8..68ed80616543 100644
--- a/sc/source/ui/inc/AccessiblePreviewHeaderCell.hxx
+++ b/sc/source/ui/inc/AccessiblePreviewHeaderCell.hxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: AccessiblePreviewHeaderCell.hxx,v $
  *
- *  $Revision: 1.7 $
+ *  $Revision: 1.8 $
  *
- *  last change: $Author: sab $ $Date: 2002-08-01 12:45:28 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:09 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -84,6 +84,7 @@
 #endif
 
 class ScPreviewShell;
+class ScPreviewTableInfo;
 class accessibility::AccessibleTextHelper;
 
 typedef cppu::ImplHelper1< ::drafts::com::sun::star::accessibility::XAccessibleValue>
@@ -98,7 +99,7 @@ public:
                                 ::drafts::com::sun::star::accessibility::XAccessible>& rxParent,
                             ScPreviewShell* pViewShell,
                             const ScAddress& rCellPos, sal_Bool bIsColHdr, sal_Bool bIsRowHdr,
-                            sal_Int32 nIndex, const Rectangle& rPosition );
+                            sal_Int32 nIndex );
 
 protected:
     virtual ~ScAccessiblePreviewHeaderCell();
@@ -179,13 +180,14 @@ private:
     ScAddress           maCellPos;
     sal_Bool            mbColumnHeader;
     sal_Bool            mbRowHeader;
-    Rectangle           maPosition;
+    mutable ScPreviewTableInfo* mpTableInfo;
 
     sal_Bool IsDefunc(
         const com::sun::star::uno::Reference<
         ::drafts::com::sun::star::accessibility::XAccessibleStateSet>& rxParentStates);
 
     void CreateTextHelper();
+    void    FillTableInfo() const;
 };
 
 
diff --git a/sc/source/ui/inc/AccessibleText.hxx b/sc/source/ui/inc/AccessibleText.hxx
index 58bf0f9c98ad..853d5c55e2bd 100644
--- a/sc/source/ui/inc/AccessibleText.hxx
+++ b/sc/source/ui/inc/AccessibleText.hxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: AccessibleText.hxx,v $
  *
- *  $Revision: 1.13 $
+ *  $Revision: 1.14 $
  *
- *  last change: $Author: sab $ $Date: 2002-10-01 16:47:28 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:09 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -86,6 +86,7 @@ class ScPreviewViewForwarder;
 class ScEditViewForwarder;
 class ScPreviewShell;
 class EditTextObject;
+class ScCsvViewForwarder;
 
 
 // ============================================================================
@@ -359,7 +360,7 @@ class ScAccessibleCsvTextData : public ScAccessibleTextData
 {
 private:
     typedef ::std::auto_ptr< SvxTextForwarder > TextForwarderPtr;
-    typedef ::std::auto_ptr< SvxViewForwarder > ViewForwarderPtr;
+    typedef ::std::auto_ptr< ScCsvViewForwarder > ViewForwarderPtr;
 
     Window*                     mpWindow;
     EditEngine*                 mpEditEngine;
diff --git a/sc/source/ui/inc/csvcontrol.hxx b/sc/source/ui/inc/csvcontrol.hxx
index 67e997657a99..35947de23a96 100644
--- a/sc/source/ui/inc/csvcontrol.hxx
+++ b/sc/source/ui/inc/csvcontrol.hxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: csvcontrol.hxx,v $
  *
- *  $Revision: 1.8 $
+ *  $Revision: 1.9 $
  *
- *  last change: $Author: dr $ $Date: 2002-08-16 13:00:59 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:10 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -155,21 +155,21 @@ enum ScMoveMode
 /** Flags for comparison of old and new control layout data. */
 typedef sal_uInt32 ScCsvDiff;
 
-const ScCsvDiff CSV_DIFF_EQUAL         = 0x00000000;
-const ScCsvDiff CSV_DIFF_POSCOUNT      = 0x00000001;
-const ScCsvDiff CSV_DIFF_POSOFFSET     = 0x00000002;
-const ScCsvDiff CSV_DIFF_OFFSETX       = 0x00000004;
-const ScCsvDiff CSV_DIFF_CHARWIDTH     = 0x00000008;
-const ScCsvDiff CSV_DIFF_LINECOUNT     = 0x00000010;
-const ScCsvDiff CSV_DIFF_LINEOFFSET    = 0x00000020;
-const ScCsvDiff CSV_DIFF_OFFSETY       = 0x00000040;
-const ScCsvDiff CSV_DIFF_LINEHEIGHT    = 0x00000080;
-const ScCsvDiff CSV_DIFF_RULERCURSOR   = 0x00000100;
-const ScCsvDiff CSV_DIFF_GRIDCURSOR    = 0x00000200;
+const ScCsvDiff CSV_DIFF_EQUAL          = 0x00000000;
+const ScCsvDiff CSV_DIFF_POSCOUNT       = 0x00000001;
+const ScCsvDiff CSV_DIFF_POSOFFSET      = 0x00000002;
+const ScCsvDiff CSV_DIFF_HDRWIDTH       = 0x00000004;
+const ScCsvDiff CSV_DIFF_CHARWIDTH      = 0x00000008;
+const ScCsvDiff CSV_DIFF_LINECOUNT      = 0x00000010;
+const ScCsvDiff CSV_DIFF_LINEOFFSET     = 0x00000020;
+const ScCsvDiff CSV_DIFF_HDRHEIGHT      = 0x00000040;
+const ScCsvDiff CSV_DIFF_LINEHEIGHT     = 0x00000080;
+const ScCsvDiff CSV_DIFF_RULERCURSOR    = 0x00000100;
+const ScCsvDiff CSV_DIFF_GRIDCURSOR     = 0x00000200;
 
-const ScCsvDiff CSV_DIFF_HORIZONTAL    = CSV_DIFF_POSCOUNT | CSV_DIFF_POSOFFSET | CSV_DIFF_OFFSETX | CSV_DIFF_CHARWIDTH;
-const ScCsvDiff CSV_DIFF_VERTICAL      = CSV_DIFF_LINECOUNT | CSV_DIFF_LINEOFFSET | CSV_DIFF_OFFSETY | CSV_DIFF_LINEHEIGHT;
-const ScCsvDiff CSV_DIFF_CURSOR        = CSV_DIFF_RULERCURSOR | CSV_DIFF_GRIDCURSOR;
+const ScCsvDiff CSV_DIFF_HORIZONTAL     = CSV_DIFF_POSCOUNT | CSV_DIFF_POSOFFSET | CSV_DIFF_HDRWIDTH | CSV_DIFF_CHARWIDTH;
+const ScCsvDiff CSV_DIFF_VERTICAL       = CSV_DIFF_LINECOUNT | CSV_DIFF_LINEOFFSET | CSV_DIFF_HDRHEIGHT | CSV_DIFF_LINEHEIGHT;
+const ScCsvDiff CSV_DIFF_CURSOR         = CSV_DIFF_RULERCURSOR | CSV_DIFF_GRIDCURSOR;
 
 
 // ----------------------------------------------------------------------------
@@ -183,7 +183,7 @@ struct ScCsvLayoutData
     sal_Int32                   mnPosOffset;        /// Horizontal scroll offset.
 
     sal_Int32                   mnWinWidth;         /// Width of ruler and data grid.
-    sal_Int32                   mnOffsetX;          /// X coordinate of first visible position.
+    sal_Int32                   mnHdrWidth;         /// Width of the header column.
     sal_Int32                   mnCharWidth;        /// Pixel width of one character.
 
     // vertical settings
@@ -191,14 +191,15 @@ struct ScCsvLayoutData
     sal_Int32                   mnLineOffset;       /// Index of first visible line (0-based).
 
     sal_Int32                   mnWinHeight;        /// Height of entire data grid (incl. header).
-    sal_Int32                   mnOffsetY;          /// Y coordinate of first visible line.
-    sal_Int32                   mnLineHeight;       /// Height of one line.
+    sal_Int32                   mnHdrHeight;        /// Height of the header line.
+    sal_Int32                   mnLineHeight;       /// Height of a data line.
 
     // cursor settings
     sal_Int32                   mnPosCursor;        /// Position of ruler cursor.
     sal_Int32                   mnColCursor;        /// Position of grid column cursor.
 
     mutable sal_Int32           mnNoRepaint;        /// >0 = no repaint.
+    bool                        mbAppRTL;           /// true = application in RTL mode.
 
     explicit                    ScCsvLayoutData();
 
@@ -234,13 +235,13 @@ enum ScCsvCmdType
     // modify horizontal dimensions
     CSVCMD_SETPOSCOUNT,         /// Change position/column count. [character count]
     CSVCMD_SETPOSOFFSET,        /// Change position offset (scroll pos). [position]
-    CSVCMD_SETOFFSETX,          /// Change X coordinate of first visible position. [X in pixel]
+    CSVCMD_SETHDRWIDTH,         /// Change width of the header column. [width in pixel]
     CSVCMD_SETCHARWIDTH,        /// Change character pixel width. [width in pixel]
 
     // modify vertical dimensions
     CSVCMD_SETLINECOUNT,        /// Change number of data lines. [line count]
     CSVCMD_SETLINEOFFSET,       /// Change first visible line. [line index]
-    CSVCMD_SETOFFSETY,          /// Change Y coordinate of first visible line. [Y in pixel]
+    CSVCMD_SETHDRHEIGHT,        /// Change height of top header line. [height in pixel]
     CSVCMD_SETLINEHEIGHT,       /// Change data line pixel height. [height in pixel}
 
     // cursors/positions
@@ -379,6 +380,8 @@ public:
 
     /** Returns a reference to the current layout data. */
     inline const ScCsvLayoutData& GetLayoutData() const { return mrData; }
+    /** Returns true, if the Right-to-Left layout mode is active. */
+    inline bool                 IsRTL() const { return mrData.mbAppRTL; }
 
     /** Returns the number of available positions. */
     inline sal_Int32            GetPosCount() const { return mrData.mnPosCount; }
@@ -396,10 +399,16 @@ public:
     /** Returns true, if nPos is an allowed AND visible split position. */
     bool                        IsVisibleSplitPos( sal_Int32 nPos ) const;
 
-    /** Returns X coordinate of first visible position. */
-    inline sal_Int32            GetOffsetX() const { return mrData.mnOffsetX; }
+    /** Returns the width of the header column. */
+    inline sal_Int32            GetHdrWidth() const { return mrData.mnHdrWidth; }
     /** Returns the width of one character column. */
     inline sal_Int32            GetCharWidth() const { return mrData.mnCharWidth; }
+    /** Returns the start position of the header column. */
+    sal_Int32                   GetHdrX() const;
+    /** Returns the X position of the first pixel of the data area. */
+    sal_Int32                   GetFirstX() const;
+    /** Returns the X position of the last pixel of the data area. */
+    sal_Int32                   GetLastX() const;
     /** Returns output X coordinate of the specified position. */
     sal_Int32                   GetX( sal_Int32 nPos ) const;
     /** Returns position from output coordinate. */
@@ -421,8 +430,8 @@ public:
     /** Returns true, if nLine is a valid and visible line index. */
     bool                        IsVisibleLine( sal_Int32 nLine ) const;
 
-    /** Returns Y coordinate of first visible line. */
-    inline sal_Int32            GetOffsetY() const { return mrData.mnOffsetY; }
+    /** Returns the height of the header line. */
+    inline sal_Int32            GetHdrHeight() const { return mrData.mnHdrHeight; }
     /** Returns the height of one line. */
     inline sal_Int32            GetLineHeight() const { return mrData.mnLineHeight; }
     /** Returns output Y coordinate of the specified line. */
diff --git a/sc/source/ui/inc/csvgrid.hxx b/sc/source/ui/inc/csvgrid.hxx
index 4871a3c069ba..b5d05c245f77 100644
--- a/sc/source/ui/inc/csvgrid.hxx
+++ b/sc/source/ui/inc/csvgrid.hxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: csvgrid.hxx,v $
  *
- *  $Revision: 1.7 $
+ *  $Revision: 1.8 $
  *
- *  last change: $Author: dr $ $Date: 2002-08-16 15:36:44 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:10 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -87,7 +87,7 @@
 
 // ----------------------------------------------------------------------------
 
-namespace svx { class ColorConfig; }
+namespace svtools { class ColorConfig; }
 class EditEngine;
 class ScEditEngineDefaulter;
 class ScAsciiOptions;
@@ -148,7 +148,7 @@ private:
     VirtualDevice               maGridDev;          /// Data grid with selection and cursor.
     PopupMenu                   maPopup;            /// Popup menu for column types.
 
-    ::svx::ColorConfig&         mrColorConfig;      /// Application color configuration.
+    ::svtools::ColorConfig&         mrColorConfig;      /// Application color configuration.
     Color                       maBackColor;        /// Cell background color.
     Color                       maGridColor;        /// Table grid color.
     Color                       maGridPBColor;      /// Grid color for "first imported line" delimiter.
diff --git a/sc/source/ui/inc/docfunc.hxx b/sc/source/ui/inc/docfunc.hxx
index 0e6f9eadf929..430c14e4b400 100644
--- a/sc/source/ui/inc/docfunc.hxx
+++ b/sc/source/ui/inc/docfunc.hxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: docfunc.hxx,v $
  *
- *  $Revision: 1.6 $
+ *  $Revision: 1.7 $
  *
- *  last change: $Author: nn $ $Date: 2002-10-22 13:29:36 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:10 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -94,6 +94,7 @@ private:
                                     USHORT nPosX, USHORT nPosY, USHORT nTab,
                                     USHORT nX1, USHORT nY1, USHORT nX2, USHORT nY2,
                                     BOOL& rCancel, BOOL bApi );
+    void            NotifyInputHandler( const ScAddress& rPos );
 
 public:
                     ScDocFunc( ScDocShell& rDocSh ): rDocShell(rDocSh) {}
diff --git a/sc/source/ui/inc/fieldwnd.hxx b/sc/source/ui/inc/fieldwnd.hxx
index 48dc45c76f3d..8e540dde1402 100644
--- a/sc/source/ui/inc/fieldwnd.hxx
+++ b/sc/source/ui/inc/fieldwnd.hxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: fieldwnd.hxx,v $
  *
- *  $Revision: 1.6 $
+ *  $Revision: 1.7 $
  *
- *  last change: $Author: sab $ $Date: 2002-11-05 07:55:48 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:10 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -112,10 +112,12 @@ private:
     ScDPFieldType           eType;          /// Type of this area.
     Color                   aFaceColor;     /// Color for dialog background.
     Color                   aWinColor;      /// Color for window background.
-    Color                   aTextColor;     /// Color for text output.
+    Color                   aTextColor;     /// Color for text in buttons.
+    Color                   aWinTextColor;  /// Color for text in field windows.
     long                    nFieldSize;     /// Maximum count of fields.
     long                    nFieldCount;    /// Count of existing fields.
     long                    nFieldSelected; /// Currently selected field.
+    bool                    mbAppRTL;       /// true = Application in RTL display mode.
 
     com::sun::star::uno::WeakReference< ::drafts::com::sun::star::accessibility::XAccessible > xAccessible;
     ScAccessibleDataPilotControl* pAccessible;
diff --git a/sc/source/ui/inc/inputwin.hxx b/sc/source/ui/inc/inputwin.hxx
index ee667fcaf3f0..905178b9c0ee 100644
--- a/sc/source/ui/inc/inputwin.hxx
+++ b/sc/source/ui/inc/inputwin.hxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: inputwin.hxx,v $
  *
- *  $Revision: 1.11 $
+ *  $Revision: 1.12 $
  *
- *  last change: $Author: sab $ $Date: 2002-11-19 15:05:53 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:11 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -146,6 +146,7 @@ private:
     ScEditEngineDefaulter*  pEditEngine;            // erst bei Bedarf angelegt
     EditView*   pEditView;
     ScAccessibleEditLineTextData* pAccTextData;
+    BOOL        bIsRTL;
     BOOL        bIsInsertMode;
     BOOL        bFormulaMode;
 
diff --git a/sc/source/ui/inc/olinewin.hxx b/sc/source/ui/inc/olinewin.hxx
index b0eeecba6258..1c19586812fa 100644
--- a/sc/source/ui/inc/olinewin.hxx
+++ b/sc/source/ui/inc/olinewin.hxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: olinewin.hxx,v $
  *
- *  $Revision: 1.3 $
+ *  $Revision: 1.4 $
  *
- *  last change: $Author: dr $ $Date: 2002-09-18 13:59:56 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:11 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -86,10 +86,15 @@ private:
     ScViewData&                 mrViewData;         /// View data containing the document.
     ScSplitPos                  meWhich;            /// Which area in split window.
     bool                        mbHoriz;            /// true = Horizontal orientation.
+    bool                        mbAppRTL;           /// true = Application in RTL display mode.
+    bool                        mbMirrorHdr;        /// true = Header at end of the window (bottom or right).
 
     ImageList*                  mpSymbols;          /// Symbols for buttons.
     Color                       maLineColor;        /// Line color for expanded groups.
-    sal_Int32                   mnHeaderSize;       /// Width or height of header area.
+    sal_Int32                   mnHeaderSize;       /// Size of the header area in entry direction.
+    sal_Int32                   mnHeaderPos;        /// Position of the header area in entry direction.
+    sal_Int32                   mnMainFirstPos;     /// First position of main area in entry direction.
+    sal_Int32                   mnMainLastPos;      /// Last position of main area in entry direction.
 
     sal_uInt16                  mnMTLevel;          /// Mouse tracking: Level of active button.
     sal_uInt16                  mnMTEntry;          /// Mouse tracking: Entry index of active button.
@@ -194,12 +199,23 @@ private:
     /** Collapses the specified entry (does nothing with header entries). */
     void                        DoCollapse( sal_uInt16 nLevel, sal_uInt16 nEntry ) const;
 
+    /** Returns true, if the focused button is visible in the window. */
+    bool                        IsFocusButtonVisible() const;
+
     /** Calculates index of next/previous focus button in the current level (no paint).
+        @param bFindVisible  true = repeats until a visible button has been found.
         @return  true = focus wrapped from end to start or vice versa. */
-    bool                        ImplMoveFocusByEntry( bool bForward );
+    bool                        ImplMoveFocusByEntry( bool bForward, bool bFindVisible );
     /** Calculates position of focus button in next/previous level (no paint).
         @return  true = focus wrapped from end to start or vice versa. */
     bool                        ImplMoveFocusByLevel( bool bForward );
+    /** Calculates position of focus button in tab order.
+        @param bFindVisible  true = repeats until a visible button has been found.
+        @return  true = focus wrapped from end to start or vice versa. */
+    bool                        ImplMoveFocusByTabOrder( bool bForward, bool bFindVisible );
+
+    /** If the focused entry is invisible, tries to move to visible position. */
+    void                        ImplMoveFocusToVisible( bool bForward );
 
     /** Focuses next/previous button in the current level. */
     void                        MoveFocusByEntry( bool bForward );
diff --git a/sc/source/ui/inc/output.hxx b/sc/source/ui/inc/output.hxx
index 1d1b8835a719..d1c79f382263 100644
--- a/sc/source/ui/inc/output.hxx
+++ b/sc/source/ui/inc/output.hxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: output.hxx,v $
  *
- *  $Revision: 1.6 $
+ *  $Revision: 1.7 $
  *
- *  last change: $Author: nn $ $Date: 2002-11-12 09:21:27 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:12 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -170,6 +170,7 @@ private:
     BOOL    bAnyRotated;        // intern
     BOOL    bAnyClipped;        // intern
     BOOL    bTabProtected;
+    BYTE    nTabTextDirection;  // EEHorizontalTextDirection values
 
                             // private Methoden
 
@@ -180,6 +181,9 @@ private:
     BOOL            IsEmptyCellText( RowInfo* pThisRowInfo, USHORT nX, USHORT nY );
     void            GetVisibleCell( USHORT nCol, USHORT nRow, USHORT nTab, ScBaseCell*& rpCell );
 
+    BOOL            IsAvailable( USHORT nX, USHORT nY );
+    long            GetAvailableWidth( USHORT nX, USHORT nY, long nNeeded );
+
     void            SetSyntaxColor( Font* pFont, ScBaseCell* pCell );
     void            SetEditSyntaxColor( EditEngine& rEngine, ScBaseCell* pCell );
 
@@ -187,6 +191,8 @@ private:
 
     double          GetStretch();
 
+    void            DrawRotatedFrame( const Color* pForceColor );       // pixel
+
 public:
                     ScOutputData( OutputDevice* pNewDev, ScOutputType eNewType,
                                     RowInfo* pNewRowInfo, USHORT nNewCount,
@@ -232,7 +238,6 @@ public:
     void    DrawEdit(BOOL bPixelToLogic);
 
     void    FindRotated();
-    void    DrawRotatedFrame();                     // Pixel
     void    DrawRotated(BOOL bPixelToLogic);        // logisch
 
     void    DrawClear();
diff --git a/sc/source/ui/inc/preview.hxx b/sc/source/ui/inc/preview.hxx
index b32e940803e1..53dba57e003c 100644
--- a/sc/source/ui/inc/preview.hxx
+++ b/sc/source/ui/inc/preview.hxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: preview.hxx,v $
  *
- *  $Revision: 1.4 $
+ *  $Revision: 1.5 $
  *
- *  last change: $Author: sab $ $Date: 2002-09-02 14:34:56 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:12 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -160,6 +160,8 @@ public:
 
     DECL_STATIC_LINK( ScPreview, InvalidateHdl, void* );
     static void StaticInvalidate();
+
+    FmFormView* GetDrawView() { return pDrawView; }
 };
 
 
diff --git a/sc/source/ui/inc/prevwsh.hxx b/sc/source/ui/inc/prevwsh.hxx
index a139d641f15b..c1840ca13591 100644
--- a/sc/source/ui/inc/prevwsh.hxx
+++ b/sc/source/ui/inc/prevwsh.hxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: prevwsh.hxx,v $
  *
- *  $Revision: 1.4 $
+ *  $Revision: 1.5 $
  *
- *  last change: $Author: nn $ $Date: 2002-02-27 19:34:18 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:12 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -96,6 +96,7 @@ class ScPreviewShell: public SfxViewShell
     Window*         pCorner;
 
     String          aSourceData;            // ViewData
+    BYTE            nSourceDesignMode;      // form design mode from TabView
     SvxZoomType     eZoom;
 
     SfxBroadcaster* pAccessibilityBroadcaster;
@@ -150,6 +151,7 @@ public:
     void            FillFieldData( ScHeaderFieldData& rData );
 
     const String&   GetSourceData() const   { return aSourceData; }
+    BYTE            GetSourceDesignMode() const { return nSourceDesignMode; }
 
     virtual void SFX_NOTIFY( SfxBroadcaster& rBC, const TypeId& rBCType,
                          const SfxHint& rHint, const TypeId& rHintType );
@@ -168,6 +170,7 @@ public:
 
     const ScPreviewLocationData& GetLocationData();
     ScDocument*     GetDocument();
+    ScPreview*      GetPreview() { return pPreview; }
 };
 
 
diff --git a/sc/source/ui/inc/pvlaydlg.hxx b/sc/source/ui/inc/pvlaydlg.hxx
index bbf64819b7da..1c4a92d683ea 100644
--- a/sc/source/ui/inc/pvlaydlg.hxx
+++ b/sc/source/ui/inc/pvlaydlg.hxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: pvlaydlg.hxx,v $
  *
- *  $Revision: 1.4 $
+ *  $Revision: 1.5 $
  *
- *  last change: $Author: dr $ $Date: 2002-10-21 17:48:23 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:13 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -140,11 +140,14 @@ public:
     PointerStyle            NotifyMouseButtonDown( ScDPFieldType eType, long nFieldIndex );
     void                    NotifyMouseButtonUp  ( const Point& rAt );
     PointerStyle            NotifyMouseMove      ( const Point& rAt );
-    void                    NotifyFieldFocus     ( ScDPFieldType eType, BOOL bActive );
+    void                    NotifyFieldFocus     ( ScDPFieldType eType, BOOL bGotFocus );
     void                    NotifyMoveField      ( ScDPFieldType eToType );
     void                    NotifyRemoveField    ( ScDPFieldType eType, long nFieldIndex );
     BOOL                    NotifyMoveSlider     ( USHORT nKeyCode );   // return TRUE, if position changed
 
+protected:
+    virtual void            Deactivate();
+
 private:
     FixedLine               aFlLayout;
     FixedText               aFtCol;
diff --git a/sc/source/ui/inc/tabview.hxx b/sc/source/ui/inc/tabview.hxx
index a824b1ca987d..a6b80d410ded 100644
--- a/sc/source/ui/inc/tabview.hxx
+++ b/sc/source/ui/inc/tabview.hxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: tabview.hxx,v $
  *
- *  $Revision: 1.8 $
+ *  $Revision: 1.9 $
  *
- *  last change: $Author: nn $ $Date: 2002-11-28 14:58:45 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:13 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -105,6 +105,7 @@ struct ChartSelectionInfo;
 class SdrHdlList;
 
 #define SPLIT_HANDLE_SIZE   3
+#define SC_FORCEMODE_NONE   0xff
 
 // ---------------------------------------------------------------------------
 //      Hilfs - Fenster
@@ -235,7 +236,7 @@ protected:
     void            DrawEnableAnim(BOOL bSet);
     void            DrawShowMarkHdl(BOOL bShow);
 
-    void            MakeDrawView();
+    void            MakeDrawView( BYTE nForceDesignMode = SC_FORCEMODE_NONE );
 
     void            HideNoteMarker();
 
diff --git a/sc/source/ui/inc/tabvwsh.hxx b/sc/source/ui/inc/tabvwsh.hxx
index 8a581cf73bdc..6c35a90b8dd9 100644
--- a/sc/source/ui/inc/tabvwsh.hxx
+++ b/sc/source/ui/inc/tabvwsh.hxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: tabvwsh.hxx,v $
  *
- *  $Revision: 1.12 $
+ *  $Revision: 1.13 $
  *
- *  last change: $Author: sab $ $Date: 2002-10-18 12:29:38 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:13 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -213,7 +213,7 @@ private:
 
 
 private:
-    void    Construct();
+    void    Construct( BYTE nForceDesignMode = SC_FORCEMODE_NONE );
 
     void            SetMySubShell( SfxShell* pShell );
     SfxShell*       GetMySubShell() const;
diff --git a/sc/source/ui/inc/tphf.hxx b/sc/source/ui/inc/tphf.hxx
index 120427a83a21..cfb6d97528c8 100644
--- a/sc/source/ui/inc/tphf.hxx
+++ b/sc/source/ui/inc/tphf.hxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: tphf.hxx,v $
  *
- *  $Revision: 1.1.1.1 $
+ *  $Revision: 1.2 $
  *
- *  last change: $Author: hr $ $Date: 2000-09-18 16:45:01 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:14 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
diff --git a/sc/source/ui/inc/viewdata.hxx b/sc/source/ui/inc/viewdata.hxx
index 6843d2438a8a..e8eb14c46c52 100644
--- a/sc/source/ui/inc/viewdata.hxx
+++ b/sc/source/ui/inc/viewdata.hxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: viewdata.hxx,v $
  *
- *  $Revision: 1.10 $
+ *  $Revision: 1.11 $
  *
- *  last change: $Author: sab $ $Date: 2002-10-18 12:29:36 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:14 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -405,7 +405,7 @@ public:
                                         { return pEditView[eWhich]; }
 
     void            EditGrowX();
-    void            EditGrowY();
+    void            EditGrowY( BOOL bInitial = FALSE );
 
     USHORT          GetEditViewCol() const          { return nEditCol; }
     USHORT          GetEditViewRow() const          { return nEditRow; }
diff --git a/sc/source/ui/miscdlgs/acredlin.cxx b/sc/source/ui/miscdlgs/acredlin.cxx
index fffe5e91e296..2dc0df215926 100644
--- a/sc/source/ui/miscdlgs/acredlin.cxx
+++ b/sc/source/ui/miscdlgs/acredlin.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: acredlin.cxx,v $
  *
- *  $Revision: 1.12 $
+ *  $Revision: 1.13 $
  *
- *  last change: $Author: nn $ $Date: 2002-10-28 15:31:02 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:17 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -304,6 +304,8 @@ void __EXPORT ScAcceptChgDlg::Init()
     ScChangeViewSettings* pViewSettings=pDoc->GetChangeViewSettings();
     if ( pViewSettings!=NULL )
         aChangeViewSet = *pViewSettings;
+    // adjust TimeField for filter tabpage
+    aChangeViewSet.AdjustDateMode( *pDoc );
 
     pTPFilter->CheckDate(aChangeViewSet.HasDate());
     pTPFilter->SetFirstDate(aChangeViewSet.GetTheFirstDateTime());
@@ -1192,7 +1194,7 @@ void ScAcceptChgDlg::RejectFiltered()
         {
             if(IsValidAction(pScChangeAction))
             {
-                pChanges->Accept((ScChangeAction*)pScChangeAction);
+                pChanges->Reject((ScChangeAction*)pScChangeAction);
             }
         }
         pScChangeAction=pScChangeAction->GetPrev();
diff --git a/sc/source/ui/miscdlgs/acredlin.src b/sc/source/ui/miscdlgs/acredlin.src
index b9f9fad67cfc..41d0ab4ce010 100644
--- a/sc/source/ui/miscdlgs/acredlin.src
+++ b/sc/source/ui/miscdlgs/acredlin.src
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: acredlin.src,v $
  *
- *  $Revision: 1.23 $
+ *  $Revision: 1.24 $
  *
- *  last change: $Author: kz $ $Date: 2001-07-26 22:30:13 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:18 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -103,20 +103,21 @@ ModelessDialog RID_SCDLG_CHANGES
         Text [ french ] = "Plage" ;
         Text [ dutch ] = "Bereik" ;
         Text [ portuguese ] = "Intervalo" ;
-        Text[ chinese_simplified ] = "";
+        Text[ chinese_simplified ] = "区域";
         Text[ russian ] = "";
         Text[ polish ] = "Zakres";
-        Text[ japanese ] = "͈";
-        Text[ chinese_traditional ] = "ϰ";
+        Text[ japanese ] = "範囲";
+        Text[ chinese_traditional ] = "區域";
         Text[ arabic ] = "";
         Text[ dutch ] = "Bereik";
-        Text[ chinese_simplified ] = "";
+        Text[ chinese_simplified ] = "区域";
         Text[ greek ] = "";
-        Text[ korean ] = "";
+        Text[ korean ] = "범위";
         Text[ turkish ] = "Aralk";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "rea";
+        Text[ catalan ] = "rea";
         Text[ finnish ] = "Alue";
+        Text[ thai ] = "ช่วง";
     };
     Edit ED_ASSIGN
     {
@@ -145,20 +146,21 @@ ModelessDialog RID_SCDLG_CHANGES
         QuickHelpText [ portuguese ] = "Afastar/Aproximar" ;
     QuickHelpText[ russian ] = "/";
         QuickHelpText[ polish ] = "Pomniejsz/Powiksz";
-        QuickHelpText[ japanese ] = "k/g";
-        QuickHelpText[ chinese_simplified ] = "С/Ŵ";
-        QuickHelpText[ chinese_traditional ] = "Yp/j";
+        QuickHelpText[ japanese ] = "縮小/拡大";
+        QuickHelpText[ chinese_simplified ] = "缩小/放大";
+        QuickHelpText[ chinese_traditional ] = "縮小/放大";
         QuickHelpText[ arabic ] = "/";
         QuickHelpText[ dutch ] = "Verkleinen/vergroten";
-        QuickHelpText[ chinese_simplified ] = "С/Ŵ";
+        QuickHelpText[ chinese_simplified ] = "缩小/放大";
         QuickHelpText[ greek ] = "/";
-        QuickHelpText[ korean ] = "ңȮ";
+        QuickHelpText[ korean ] = "축소/확대";
         QuickHelpText[ language_user1 ] = " ";
         QuickHelpText[ language_user1 ] = " ";
         QuickHelpText[ language_user1 ] = " ";
         QuickHelpText[ turkish ] = "Verkleinern/Vergrern";
-        QuickHelpText[ catalan ] = "Reducir/Aumentar";
-        QuickHelpText[ finnish ] = "Pienenn/Suurenna";
+        QuickHelpText[ catalan ] = "Redueix/Augmenta";
+        QuickHelpText[ finnish ] = "Pienenn/suurenna";
+        QuickHelpText[ thai ] = "Minimize/Maximize";
     };
     String STR_INSERT_COLS
     {
@@ -173,10 +175,10 @@ ModelessDialog RID_SCDLG_CHANGES
         Text [ spanish ] = "Columna insertada" ;
         Text [ french ] = "Colonne insre" ;
         Text [ dutch ] = "Kolom ingevoegd" ;
-        Text[ chinese_simplified ] = "";
+        Text[ chinese_simplified ] = "加入的列";
         Text[ russian ] = " ";
         Text[ polish ] = "Wstawiona kolumna";
-        Text[ japanese ] = "񂪑}܂";
+        Text[ japanese ] = "列が挿入されました";
         Text[ english_us ] = "Column inserted";
     Text[ portuguese ] = "Coluna inserida";
     Text[ russian ] = " ";
@@ -188,18 +190,19 @@ ModelessDialog RID_SCDLG_CHANGES
     Text[ swedish ] = "Kolumn infogad";
     Text[ polish ] = "Wstawiona kolumna";
     Text[ portuguese_brazilian ] = "Spalte eingef?t";
-    Text[ japanese ] = "񂪑}܂";
-    Text[ chinese_simplified ] = "";
-    Text[ chinese_traditional ] = "wgJ";
+    Text[ japanese ] = "列が挿入されました";
+    Text[ chinese_simplified ] = "加入的列";
+    Text[ chinese_traditional ] = "欄已經插入";
         Text[ arabic ] = " ";
         Text[ dutch ] = "Kolom ingevoegd";
-        Text[ chinese_simplified ] = "";
+        Text[ chinese_simplified ] = "加入的列";
         Text[ greek ] = "    ";
-        Text[ korean ] = " ԵǾϴ.";
+        Text[ korean ] = "열이 삽입되었습니다.";
         Text[ turkish ] = "Stun eklendi";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Columna insertada";
+        Text[ catalan ] = "S'ha inserit una columna";
         Text[ finnish ] = "Sarake listty";
+        Text[ thai ] = "แทรกคอลัมน์";
     };
     String STR_INSERT_ROWS
     {
@@ -214,20 +217,21 @@ ModelessDialog RID_SCDLG_CHANGES
         Text [ spanish ] = "Fila insertada" ;
         Text [ french ] = "Ligne insre" ;
         Text [ dutch ] = "Rij ingevoegd" ;
-        Text[ chinese_simplified ] = "б";
+        Text[ chinese_simplified ] = "行被插入";
         Text[ russian ] = " ";
         Text[ polish ] = "Usunity wiersz";
-        Text[ japanese ] = "s}܂";
-        Text[ chinese_traditional ] = "CQJ";
+        Text[ japanese ] = "行が挿入されました";
+        Text[ chinese_traditional ] = "列被插入";
         Text[ arabic ] = " ";
         Text[ dutch ] = "Rij ingevoegd";
-        Text[ chinese_simplified ] = "б";
+        Text[ chinese_simplified ] = "行被插入";
         Text[ greek ] = "  ";
-        Text[ korean ] = " ԵǾϴ.";
+        Text[ korean ] = "행이 삽입되었습니다.";
         Text[ turkish ] = "Satr eklendi";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Fila insertada";
-        Text[ finnish ] = "Rivi listty";
+        Text[ catalan ] = "S'ha inserit una fila ";
+        Text[ finnish ] = "Rivi listty ";
+        Text[ thai ] = "แทรกแถว ";
     };
     String STR_INSERT_TABS
     {
@@ -241,21 +245,22 @@ ModelessDialog RID_SCDLG_CHANGES
         Text [ italian ] = "Tabella inserita" ;
         Text [ spanish ] = "Hoja insertada" ;
         Text [ french ] = "Feuille insre" ;
-        Text [ dutch ] = "Tabelle ingevoegd" ;
-        Text[ chinese_simplified ] = "빤";
-        Text[ russian ] = " ";
+        Text [ dutch ] = "Tabel ingevoegd" ;
+        Text[ chinese_simplified ] = "加入工作表";
+        Text[ russian ] = " ";
         Text[ polish ] = "Wstawiona tabela";
-        Text[ japanese ] = "\\}܂";
-        Text[ chinese_traditional ] = "[Ju@";
+        Text[ japanese ] = "表が挿入されました";
+        Text[ chinese_traditional ] = "加入工作表";
         Text[ arabic ] = " ";
-        Text[ dutch ] = "Tabelle ingevoegd";
-        Text[ chinese_simplified ] = "빤";
+        Text[ dutch ] = "Tabel ingevoegd";
+        Text[ chinese_simplified ] = "加入工作表";
         Text[ greek ] = "  ";
-        Text[ korean ] = "Ʈ ԵǾϴ.";
+        Text[ korean ] = "시트가 삽입되었습니다.";
         Text[ turkish ] = "Tablo eklendi";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Hoja insertada";
-        Text[ finnish ] = "Lomake listty ";
+        Text[ catalan ] = "S'ha inserit un full ";
+        Text[ finnish ] = "Taulukko listty ";
+        Text[ thai ] = "แทรกแผ่นงาน ";
     };
     String STR_DELETE_COLS
     {
@@ -267,23 +272,24 @@ ModelessDialog RID_SCDLG_CHANGES
         Text [ swedish ] = "Kolumn raderad" ;
         Text [ danish ] = "Kolonne slettet" ;
         Text [ italian ] = "Colonna cancellata" ;
-        Text [ spanish ] = "Columna eliminada" ;
+        Text [ spanish ] = "Columna borrada" ;
         Text [ french ] = "Colonne supprime" ;
         Text [ dutch ] = "Kolom verwijderd" ;
-        Text[ chinese_simplified ] = "ɾ";
+        Text[ chinese_simplified ] = "删除的列";
         Text[ russian ] = " ";
         Text[ polish ] = "Usunita kolumna";
-        Text[ japanese ] = "񂪍폜܂";
-        Text[ chinese_traditional ] = "wgR";
+        Text[ japanese ] = "列が削除されました";
+        Text[ chinese_traditional ] = "欄已經刪除";
         Text[ arabic ] = " ";
         Text[ dutch ] = "Kolom verwijderd";
-        Text[ chinese_simplified ] = "ɾ";
+        Text[ chinese_simplified ] = "删除的列";
         Text[ greek ] = "   ";
-        Text[ korean ] = " Ǿϴ.";
+        Text[ korean ] = "열이 삭제되었습니다.";
         Text[ turkish ] = "Stun silindi";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Columna eliminada";
+        Text[ catalan ] = "S'ha suprimit la columna";
         Text[ finnish ] = "Sarake poistettu";
+        Text[ thai ] = "ลบคอลัมน์";
     };
     String STR_DELETE_ROWS
     {
@@ -295,23 +301,24 @@ ModelessDialog RID_SCDLG_CHANGES
         Text [ swedish ] = "Rad raderad" ;
         Text [ danish ] = "Rkke slettet" ;
         Text [ italian ] = "Riga cancellata" ;
-        Text [ spanish ] = "Fila eliminada" ;
+        Text [ spanish ] = "Fila borrada" ;
         Text [ french ] = "Ligne supprime" ;
         Text [ dutch ] = "Rij verwijderd" ;
-        Text[ chinese_simplified ] = "бɾ";
+        Text[ chinese_simplified ] = "行被删除";
         Text[ russian ] = " ";
         Text[ polish ] = "Usunity wiersz";
-        Text[ japanese ] = "s폜܂";
-        Text[ chinese_traditional ] = "CQR";
+        Text[ japanese ] = "行が削除されました";
+        Text[ chinese_traditional ] = "列被刪除";
         Text[ arabic ] = " ";
         Text[ dutch ] = "Rij verwijderd";
-        Text[ chinese_simplified ] = "бɾ";
+        Text[ chinese_simplified ] = "行被删除";
         Text[ greek ] = "   ";
-        Text[ korean ] = " Ǿϴ.";
+        Text[ korean ] = "행이 삭제되었습니다.";
         Text[ turkish ] = "Satr silindi";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Fila eliminada";
+        Text[ catalan ] = "S'ha suprimit la fila";
         Text[ finnish ] = "Rivi poistettu";
+        Text[ thai ] = "ลบแถว";
     };
     String STR_DELETE_TABS
     {
@@ -323,23 +330,24 @@ ModelessDialog RID_SCDLG_CHANGES
         Text [ swedish ] = "Tabell raderad" ;
         Text [ danish ] = "Ark slettet" ;
         Text [ italian ] = "Tabella cancellata" ;
-        Text [ spanish ] = "Hoja eliminada" ;
+        Text [ spanish ] = "Hoja borrada" ;
         Text [ french ] = "Feuille supprime" ;
         Text [ dutch ] = "Tabel gewist" ;
-        Text[ chinese_simplified ] = "ɾĹ";
-        Text[ russian ] = " ";
+        Text[ chinese_simplified ] = "删除的工作表";
+        Text[ russian ] = " ";
         Text[ polish ] = "Usunita tabela";
-        Text[ japanese ] = "\\폜܂";
-        Text[ chinese_traditional ] = "Ru@";
+        Text[ japanese ] = "表が削除されました";
+        Text[ chinese_traditional ] = "刪除的工作表";
         Text[ arabic ] = " ";
         Text[ dutch ] = "Tabel gewist";
-        Text[ chinese_simplified ] = "ɾĹ";
+        Text[ chinese_simplified ] = "删除的工作表";
         Text[ greek ] = " ";
-        Text[ korean ] = "Ʈ Ǿϴ.";
+        Text[ korean ] = "시트가 삭제되었습니다.";
         Text[ turkish ] = "Tablo silindi";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Hoja eliminada";
-        Text[ finnish ] = "Lomake poistettu";
+        Text[ catalan ] = "S'ha suprimit el full";
+        Text[ finnish ] = "Taulukko poistettu";
+        Text[ thai ] = "ลบแผ่นงาน";
     };
     String STR_MOVE
     {
@@ -354,20 +362,21 @@ ModelessDialog RID_SCDLG_CHANGES
         Text [ spanish ] = "rea desplazada" ;
         Text [ french ] = "Plage dplace" ;
         Text [ dutch ] = "Bereik verplaatst" ;
-        Text[ chinese_simplified ] = "ƶ";
-        Text[ russian ] = " ";
+        Text[ chinese_simplified ] = "移动区域";
+        Text[ russian ] = " ";
         Text[ polish ] = "Przesunity obszar";
-        Text[ japanese ] = "͈͂̈ړ";
-        Text[ chinese_traditional ] = "ʰϰ";
+        Text[ japanese ] = "範囲の移動";
+        Text[ chinese_traditional ] = "移動區域";
         Text[ arabic ] = " ";
         Text[ dutch ] = "Bereik verplaatst";
-        Text[ chinese_simplified ] = "ƶ";
+        Text[ chinese_simplified ] = "移动区域";
         Text[ greek ] = "   ";
-        Text[ korean ] = " ̵Ǿϴ.";
+        Text[ korean ] = "범위가 이동되었습니다.";
         Text[ turkish ] = "Aralk kaydrld";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "rea desplazada";
+        Text[ catalan ] = "S'ha mogut l'rea";
         Text[ finnish ] = "Aluetta siirretty";
+        Text[ thai ] = "ย้ายช่วง";
     };
     String STR_CONTENT
     {
@@ -381,21 +390,22 @@ ModelessDialog RID_SCDLG_CHANGES
         Text [ italian ] = "Modifica contenuto" ;
         Text [ spanish ] = "Modificacin de contenido" ;
         Text [ french ] = "Modification de contenu" ;
-        Text [ dutch ] = "Inhoudsverandering" ;
-        Text[ chinese_simplified ] = "ݸ";
+        Text [ dutch ] = "Inhoudswijziging" ;
+        Text[ chinese_simplified ] = "内容更改";
         Text[ russian ] = " ";
         Text[ polish ] = "Zmiana zawartoci";
-        Text[ japanese ] = "e̕ύX";
-        Text[ chinese_traditional ] = "eܧ";
+        Text[ japanese ] = "内容の変更";
+        Text[ chinese_traditional ] = "內容變更";
         Text[ arabic ] = " ";
-        Text[ dutch ] = "Inhoudsverandering";
-        Text[ chinese_simplified ] = "ݸ";
+        Text[ dutch ] = "Inhoudswijziging";
+        Text[ chinese_simplified ] = "内容更改";
         Text[ greek ] = " ";
-        Text[ korean ] = " ";
+        Text[ korean ] = "내용 변경";
         Text[ turkish ] = "erik deiiklii";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Modificacin de contenido";
+        Text[ catalan ] = "El contingut ha canviat";
         Text[ finnish ] = "Muutettu sislt";
+        Text[ thai ] = "เปลี่ยนเนื้อหา";
     };
     String STR_CONTENT_WITH_CHILD
     {
@@ -409,21 +419,22 @@ ModelessDialog RID_SCDLG_CHANGES
         Text [ italian ] = "Modifica contenuto" ;
         Text [ spanish ] = "Modificacin de contenido" ;
         Text [ french ] = "Modification de contenu" ;
-        Text [ dutch ] = "Inhoudsverandering" ;
-        Text[ chinese_simplified ] = "ݸ";
+        Text [ dutch ] = "Inhoudswijziging" ;
+        Text[ chinese_simplified ] = "内容更改";
         Text[ russian ] = " ";
         Text[ polish ] = "Zmiana zawartoci";
-        Text[ japanese ] = "e̕ύX";
-        Text[ chinese_traditional ] = "eܧ";
+        Text[ japanese ] = "内容の変更";
+        Text[ chinese_traditional ] = "內容變更";
         Text[ arabic ] = " ";
-        Text[ dutch ] = "Inhoudsverandering";
-        Text[ chinese_simplified ] = "ݸ";
+        Text[ dutch ] = "Inhoudswijziging";
+        Text[ chinese_simplified ] = "内容更改";
         Text[ greek ] = " ";
-        Text[ korean ] = " ";
+        Text[ korean ] = "내용 변경";
         Text[ turkish ] = "erik deiiklii";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Modificacin de contenido";
+        Text[ catalan ] = "El contingut ha canviat";
         Text[ finnish ] = "Muutettu sislt";
+        Text[ thai ] = "เปลี่ยนเนื้อหา";
     };
     String STR_CHILD_CONTENT
     {
@@ -435,23 +446,24 @@ ModelessDialog RID_SCDLG_CHANGES
         Text [ swedish ] = "ndring till  " ;
         Text [ danish ] = "ndring til " ;
         Text [ italian ] = "Modificato in " ;
-        Text [ spanish ] = "Cambiada a  " ;
+        Text [ spanish ] = "Modificacin en" ;
         Text [ french ] = "Modification dans " ;
-        Text [ dutch ] = "Wijziging in  " ;
-        Text[ chinese_simplified ] = "ij ";
+        Text [ dutch ] = "Wijziging bij" ;
+        Text[ chinese_simplified ] = "更改成 ";
         Text[ russian ] = "  ";
         Text[ polish ] = "Zmieniony na  ";
-        Text[ japanese ] = "ύX ";
-        Text[ chinese_traditional ] = "ܧ ";
+        Text[ japanese ] = "変更 ";
+        Text[ chinese_traditional ] = "變更至 ";
         Text[ arabic ] = "  ";
-        Text[ dutch ] = "Wijziging in  ";
-        Text[ chinese_simplified ] = "ij ";
+        Text[ dutch ] = "Wijziging bij";
+        Text[ chinese_simplified ] = "更改成 ";
         Text[ greek ] = "  ";
-        Text[ korean ] = "  ";
+        Text[ korean ] = "변경 ";
         Text[ turkish ] = "Deiiklikler: ";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Cambiada a  ";
+        Text[ catalan ] = "S'ha canviat a ";
         Text[ finnish ] = "Muutos ";
+        Text[ thai ] = "เปลี่ยนไปที่ ";
     };
     String STR_CHILD_ORGCONTENT
     {
@@ -466,20 +478,21 @@ ModelessDialog RID_SCDLG_CHANGES
         Text [ spanish ] = "Original" ;
         Text [ french ] = "Original" ;
         Text [ dutch ] = "Origineel" ;
-        Text[ chinese_simplified ] = "ԭ";
+        Text[ chinese_simplified ] = "原件";
         Text[ russian ] = "";
         Text[ polish ] = "Orygina";
-        Text[ japanese ] = "ؼ";
-        Text[ chinese_traditional ] = "";
+        Text[ japanese ] = "オリジナル";
+        Text[ chinese_traditional ] = "原件";
         Text[ arabic ] = "";
         Text[ dutch ] = "Origineel";
-        Text[ chinese_simplified ] = "ԭ";
+        Text[ chinese_simplified ] = "原件";
         Text[ greek ] = "";
-        Text[ korean ] = "";
+        Text[ korean ] = "원본";
         Text[ turkish ] = "zgn hali";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Original";
         Text[ finnish ] = "Alkuperinen";
+        Text[ thai ] = "ต้นฉบับ";
     };
     String STR_REJECT
     {
@@ -494,20 +507,21 @@ ModelessDialog RID_SCDLG_CHANGES
         Text [ spanish ] = "Modificacin rechazada" ;
         Text [ french ] = "Modification refuse" ;
         Text [ dutch ] = "Wijziging verworpen" ;
-        Text[ chinese_simplified ] = "ȡ";
+        Text[ chinese_simplified ] = "取消更改";
         Text[ russian ] = " ";
         Text[ polish ] = "Zmiany odrzucono";
-        Text[ japanese ] = "ύXȂ";
-        Text[ chinese_traditional ] = "ܧ";
+        Text[ japanese ] = "変更しない";
+        Text[ chinese_traditional ] = "取消變更";
         Text[ arabic ] = " ";
         Text[ dutch ] = "Wijziging verworpen";
-        Text[ chinese_simplified ] = "ȡ";
+        Text[ chinese_simplified ] = "取消更改";
         Text[ greek ] = " ";
-        Text[ korean ] = " ҵǾϴ.";
+        Text[ korean ] = "변경이 취소되었습니다.";
         Text[ turkish ] = "Deiiklikler reddedildi";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Modificacin rechazada";
+        Text[ catalan ] = "Els canvis s'han rebutjat";
         Text[ finnish ] = "Muutokset hyltty";
+        Text[ thai ] = "ปฏิเสธการเปลี่ยนแปลง";
     };
     String STR_ACCEPTED
     {
@@ -522,20 +536,21 @@ ModelessDialog RID_SCDLG_CHANGES
         Text [ spanish ] = "Aceptadas" ;
         Text [ french ] = "Acceptes" ;
         Text [ dutch ] = "Geaccepteerde" ;
-        Text[ chinese_simplified ] = "ܵ";
+        Text[ chinese_simplified ] = "接受的";
         Text[ russian ] = "";
         Text[ polish ] = "Zaakceptowane";
-        Text[ japanese ] = "F";
-        Text[ chinese_traditional ] = "";
+        Text[ japanese ] = "承認";
+        Text[ chinese_traditional ] = "接受的";
         Text[ arabic ] = "";
         Text[ dutch ] = "Geaccepteerde";
-        Text[ chinese_simplified ] = "ܵ";
+        Text[ chinese_simplified ] = "接受的";
         Text[ greek ] = "";
-        Text[ korean ] = "";
+        Text[ korean ] = "적용됨";
         Text[ turkish ] = "Kabul edilenler";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Aceptadas";
+        Text[ catalan ] = "Acceptat";
         Text[ finnish ] = "Hyvksytty";
+        Text[ thai ] = "ยอมรับได้";
     };
     String STR_REJECTED
     {
@@ -550,20 +565,21 @@ ModelessDialog RID_SCDLG_CHANGES
         Text [ spanish ] = "Rechazadas" ;
         Text [ french ] = "Refuses" ;
         Text [ dutch ] = "Geweigerde" ;
-        Text[ chinese_simplified ] = "ܾ";
+        Text[ chinese_simplified ] = "被拒绝的";
         Text[ russian ] = "";
         Text[ polish ] = "Odrzucone";
-        Text[ japanese ] = "j";
-        Text[ chinese_traditional ] = "Qڵ";
+        Text[ japanese ] = "破棄";
+        Text[ chinese_traditional ] = "被拒絕的";
         Text[ arabic ] = "";
         Text[ dutch ] = "Geweigerde";
-        Text[ chinese_simplified ] = "ܾ";
+        Text[ chinese_simplified ] = "被拒绝的";
         Text[ greek ] = "";
-        Text[ korean ] = "źε";
+        Text[ korean ] = "거부";
         Text[ turkish ] = "Reddedilenler";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Rechazadas";
+        Text[ catalan ] = "Rebutjat";
         Text[ finnish ] = "Hyltty";
+        Text[ thai ] = "ปฏิเสธ";
     };
     String STR_NO_ENTRY
     {
@@ -578,20 +594,21 @@ ModelessDialog RID_SCDLG_CHANGES
         Text [ spanish ] = "Ninguna entrada" ;
         Text [ french ] = "Pas d'entre" ;
         Text [ dutch ] = "Geen item" ;
-        Text[ chinese_simplified ] = "Ŀ";
-        Text[ russian ] = " ";
+        Text[ chinese_simplified ] = "无条目";
+        Text[ russian ] = "";
         Text[ polish ] = "Nie ma wpisu";
-        Text[ japanese ] = "͂Ȃ";
-        Text[ chinese_traditional ] = "L";
+        Text[ japanese ] = "入力なし";
+        Text[ chinese_traditional ] = "無條目";
         Text[ arabic ] = "  ";
         Text[ dutch ] = "Geen item";
-        Text[ chinese_simplified ] = "Ŀ";
+        Text[ chinese_simplified ] = "无条目";
         Text[ greek ] = " ";
-        Text[ korean ] = " ȵǾϴ";
+        Text[ korean ] = "항목 없음";
         Text[ turkish ] = "Giri yok";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Ninguna entrada";
+        Text[ catalan ] = "Cap entrada";
         Text[ finnish ] = "Ei merkint";
+        Text[ thai ] = "ไม่มีรายการ";
     };
     String STR_EMPTY
     {
@@ -606,20 +623,21 @@ ModelessDialog RID_SCDLG_CHANGES
         Text [ spanish ] = "" ;
         Text [ french ] = "" ;
         Text [ dutch ] = "" ;
-        Text[ chinese_simplified ] = "<ȱ>";
+        Text[ chinese_simplified ] = "<空缺>";
         Text[ russian ] = "<>";
         Text[ polish ] = "";
-        Text[ japanese ] = "<>";
-        Text[ chinese_traditional ] = "<ů>";
+        Text[ japanese ] = "<空白>";
+        Text[ chinese_traditional ] = "<空缺>";
         Text[ arabic ] = "<>";
         Text[ dutch ] = "";
-        Text[ chinese_simplified ] = "<ȱ>";
+        Text[ chinese_simplified ] = "<空缺>";
         Text[ greek ] = "<>";
-        Text[ korean ] = "<>";
+        Text[ korean ] = "<빈>";
         Text[ turkish ] = "";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "";
+        Text[ catalan ] = "";
         Text[ finnish ] = "";
+        Text[ thai ] = "<ว่าง>";
     };
     Bitmap BMP_STR_CLOSE
     {
@@ -639,27 +657,28 @@ ModelessDialog RID_SCDLG_CHANGES
     };
     Text [ english_us ] = "Accept or Reject Changes" ;
     Text [ portuguese_brazilian ] = "?nderungen akzeptieren" ;
-    Text [ swedish ] = "Acceptera eller avsl ndringar" ;
+    Text [ swedish ] = "Acceptera eller ignorera ndringar" ;
     Text [ danish ] = "Accepter eller forkast ndringerne" ;
     Text [ italian ] = "Accetta o annulla modifiche" ;
     Text [ spanish ] = "Aceptar o rechazar modificaciones" ;
     Text [ french ] = "Accepter ou rejeter les modifications" ;
     Text [ dutch ] = "Wijzigingen accepteren of verwerpen" ;
     Text [ portuguese ] = "Aceitar ou rejeitar modificaes" ;
-    Text[ chinese_simplified ] = "ܻ";
+    Text[ chinese_simplified ] = "接受或舍弃更改内容";
     Text[ russian ] = "   ";
     Text[ polish ] = "Zaakceptuj albo odrzu zmiany";
-    Text[ japanese ] = "ύXӏ̊mF";
-    Text[ chinese_traditional ] = "α˱ܧ?e";
+    Text[ japanese ] = "変更箇所の確認";
+    Text[ chinese_traditional ] = "接受或捨棄變更內容";
     Text[ arabic ] = "   ";
     Text[ dutch ] = "Wijzigingen accepteren of verwerpen";
-    Text[ chinese_simplified ] = "ܻ";
+    Text[ chinese_simplified ] = "接受或舍弃更改内容";
     Text[ greek ] = "   ";
-    Text[ korean ] = "   Ǵ ";
+    Text[ korean ] = "변경 사항  적용 또는 취소";
     Text[ turkish ] = "Deiiklikleri kabul/redd et";
     Text[ language_user1 ] = " ";
-    Text[ catalan ] = "Aceptar o rechazar modificaciones";
+    Text[ catalan ] = "Accepta o rebutja els canvis";
     Text[ finnish ] = "Hyvksy tai hylk muutokset";
+    Text[ thai ] = "ยอมรับหรือปฏิเสธการเปลี่ยนแปลง";
 };
 Menu RID_POPUP_CHANGES
 {
@@ -676,25 +695,26 @@ Menu RID_POPUP_CHANGES
             Text [ swedish ] = "Redigera kommentar..." ;
             Text [ danish ] = "Rediger kommentar..." ;
             Text [ italian ] = "Modifica commento..." ;
-            Text [ spanish ] = "Modificar comentario..." ;
+            Text [ spanish ] = "Editar comentario..." ;
             Text [ french ] = "diter le commentaire..." ;
-            Text [ dutch ] = "Commentaar bewerken..." ;
+            Text [ dutch ] = "Opmerkingen bewerken..." ;
             Text [ portuguese ] = "Editar comentrio..." ;
 
-            Text[ chinese_simplified ] = "༭ע...";
-            Text[ russian ] = " ...";
+            Text[ chinese_simplified ] = "编辑注解...";
+            Text[ russian ] = " ...";
             Text[ polish ] = "Edytuj komentarz...";
-            Text[ japanese ] = "Ă̕ҏW...";
-            Text[ chinese_traditional ] = "s...";
+            Text[ japanese ] = "コメントの編集...";
+            Text[ chinese_traditional ] = "編輯註解...";
             Text[ arabic ] = " ...";
-            Text[ dutch ] = "Commentaar bewerken...";
-            Text[ chinese_simplified ] = "༭ע...";
+            Text[ dutch ] = "Opmerkingen bewerken...";
+            Text[ chinese_simplified ] = "编辑注解...";
             Text[ greek ] = " ...";
-            Text[ korean ] = "ּ ...";
+            Text[ korean ] = "설명 편집...";
             Text[ turkish ] = "Aklamay dzenle...";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Modificar comentario...";
-            Text[ finnish ] = "Muokkaa huomautusta";
+            Text[ catalan ] = "Edita el comentari...";
+            Text[ finnish ] = "Muuta huomautusta...";
+            Text[ thai ] = "แก้ไขข้อคิดเห็น...";
         };
         MenuItem
         {
@@ -722,20 +742,21 @@ Menu RID_POPUP_CHANGES
                         Text [ french ] = "Action" ;
                         Text [ dutch ] = "Activiteit" ;
                         Text [ portuguese ] = "Aco" ;
-                        Text[ chinese_simplified ] = "";
+                        Text[ chinese_simplified ] = "操作";
                         Text[ russian ] = "";
                         Text[ polish ] = "Akcja";
-                        Text[ japanese ] = "";
-                        Text[ chinese_traditional ] = "ʧ@";
+                        Text[ japanese ] = "アクション";
+                        Text[ chinese_traditional ] = "動作";
                         Text[ arabic ] = "";
                         Text[ dutch ] = "Activiteit";
-                        Text[ chinese_simplified ] = "";
+                        Text[ chinese_simplified ] = "操作";
                         Text[ greek ] = "";
-                        Text[ korean ] = "۵";
+                        Text[ korean ] = "작동";
                         Text[ turkish ] = "lem";
                         Text[ language_user1 ] = " ";
-                        Text[ catalan ] = "Accin";
+                        Text[ catalan ] = "Acci";
                         Text[ finnish ] = "Toiminto";
+                        Text[ thai ] = "การกระทำ";
                     };
                     MenuItem
                     {
@@ -753,20 +774,21 @@ Menu RID_POPUP_CHANGES
                         Text [ french ] = "Position" ;
                         Text [ dutch ] = "Positie" ;
                         Text [ portuguese ] = "Posio" ;
-                        Text[ chinese_simplified ] = "λ";
+                        Text[ chinese_simplified ] = "位置";
                         Text[ russian ] = "";
                         Text[ polish ] = "Pozycja";
-                        Text[ japanese ] = "ʒu";
-                        Text[ chinese_traditional ] = "m";
+                        Text[ japanese ] = "位置";
+                        Text[ chinese_traditional ] = "位置";
                         Text[ arabic ] = "";
                         Text[ dutch ] = "Positie";
-                        Text[ chinese_simplified ] = "λ";
+                        Text[ chinese_simplified ] = "位置";
                         Text[ greek ] = "";
-                        Text[ korean ] = "ġ";
+                        Text[ korean ] = "위치";
                         Text[ turkish ] = "Konum";
                         Text[ language_user1 ] = " ";
-                        Text[ catalan ] = "Posicin";
+                        Text[ catalan ] = "Posici";
                         Text[ finnish ] = "Sijainti";
+                        Text[ thai ] = "ตำแหน่ง";
                     };
                     MenuItem
                     {
@@ -784,20 +806,21 @@ Menu RID_POPUP_CHANGES
                         Text [ french ] = "Auteur" ;
                         Text [ dutch ] = "Auteur" ;
                         Text [ portuguese ] = "Autor" ;
-                        Text[ chinese_simplified ] = "";
+                        Text[ chinese_simplified ] = "作者";
                         Text[ russian ] = "";
                         Text[ polish ] = "Autor";
-                        Text[ japanese ] = "쐬";
-                        Text[ chinese_traditional ] = "@";
+                        Text[ japanese ] = "作成者";
+                        Text[ chinese_traditional ] = "作者";
                         Text[ arabic ] = "";
                         Text[ dutch ] = "Auteur";
-                        Text[ chinese_simplified ] = "";
+                        Text[ chinese_simplified ] = "作者";
                         Text[ greek ] = "";
-                        Text[ korean ] = "ۼ";
+                        Text[ korean ] = "작성자";
                         Text[ turkish ] = "Yazan";
                         Text[ language_user1 ] = " ";
                         Text[ catalan ] = "Autor";
-                        Text[ finnish ] = "Laatija";
+                        Text[ finnish ] = "Tekij";
+                        Text[ thai ] = "ผู้เขียน";
                     };
                     MenuItem
                     {
@@ -815,20 +838,21 @@ Menu RID_POPUP_CHANGES
                         Text [ french ] = "Date" ;
                         Text [ dutch ] = "Datum" ;
                         Text [ portuguese ] = "Data" ;
-                        Text[ chinese_simplified ] = "";
+                        Text[ chinese_simplified ] = "日期";
                         Text[ russian ] = "";
                         Text[ polish ] = "Data";
-                        Text[ japanese ] = "t";
-                        Text[ chinese_traditional ] = "";
+                        Text[ japanese ] = "日付";
+                        Text[ chinese_traditional ] = "日期";
                         Text[ arabic ] = "";
                         Text[ dutch ] = "Datum";
-                        Text[ chinese_simplified ] = "";
+                        Text[ chinese_simplified ] = "日期";
                         Text[ greek ] = "";
-                        Text[ korean ] = "¥";
+                        Text[ korean ] = "날짜";
                         Text[ turkish ] = "Tarih";
                         Text[ language_user1 ] = " ";
-                        Text[ catalan ] = "Fecha";
+                        Text[ catalan ] = "Data";
                         Text[ finnish ] = "Pivmr";
+                        Text[ thai ] = "วันที่";
                     };
                     MenuItem
                     {
@@ -846,46 +870,48 @@ Menu RID_POPUP_CHANGES
                         Text [ french ] = "Description" ;
                         Text [ dutch ] = "Beschrijving" ;
                         Text [ portuguese ] = "Descrio" ;
-                        Text[ chinese_simplified ] = "˵";
-                        Text[ russian ] = "";
+                        Text[ chinese_simplified ] = "说明";
+                        Text[ russian ] = "";
                         Text[ polish ] = "Opis";
-                        Text[ japanese ] = "";
-                        Text[ chinese_traditional ] = "yz";
+                        Text[ japanese ] = "説明";
+                        Text[ chinese_traditional ] = "描述";
                         Text[ arabic ] = "";
                         Text[ dutch ] = "Beschrijving";
-                        Text[ chinese_simplified ] = "˵";
+                        Text[ chinese_simplified ] = "说明";
                         Text[ greek ] = "";
-                        Text[ korean ] = "";
+                        Text[ korean ] = "설명";
                         Text[ turkish ] = "Aklama";
                         Text[ language_user1 ] = " ";
-                        Text[ catalan ] = "Descripcin";
+                        Text[ catalan ] = "Descripci";
                         Text[ finnish ] = "Kuvaus";
+                        Text[ thai ] = "คำอธิบาย";
                     };
                 };
             };
             Text [ english_us ] = "Sorting" ;
             Text [ portuguese_brazilian ] = "Sortiere" ;
-            Text [ swedish ] = "Sorterar" ;
+            Text [ swedish ] = "Sortera efter" ;
             Text [ danish ] = "Sorter" ;
             Text [ italian ] = "Ordina" ;
             Text [ spanish ] = "Ordenar" ;
             Text [ french ] = "Trier" ;
             Text [ dutch ] = "Sorteer" ;
             Text [ portuguese ] = "Ordenar" ;
-            Text[ chinese_simplified ] = "";
+            Text[ chinese_simplified ] = "排序";
             Text[ russian ] = "";
             Text[ polish ] = "Sortowanie";
-            Text[ japanese ] = "בւ";
-            Text[ chinese_traditional ] = "Ƨ";
+            Text[ japanese ] = "並べ替え";
+            Text[ chinese_traditional ] = "排序";
             Text[ arabic ] = "";
             Text[ dutch ] = "Sorteer";
-            Text[ chinese_simplified ] = "";
+            Text[ chinese_simplified ] = "排序";
             Text[ greek ] = "";
-            Text[ korean ] = "";
+            Text[ korean ] = "정렬";
             Text[ turkish ] = "Srala";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Ordenar";
+            Text[ catalan ] = "S'est ordenant";
             Text[ finnish ] = "Lajitellaan";
+            Text[ thai ] = "เรียง";
         };
     };
 };
@@ -895,3 +921,16 @@ Menu RID_POPUP_CHANGES
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sc/source/ui/miscdlgs/highred.cxx b/sc/source/ui/miscdlgs/highred.cxx
index 51b2da5d02f5..2303b9f2e3a8 100644
--- a/sc/source/ui/miscdlgs/highred.cxx
+++ b/sc/source/ui/miscdlgs/highred.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: highred.cxx,v $
  *
- *  $Revision: 1.7 $
+ *  $Revision: 1.8 $
  *
- *  last change: $Author: mh $ $Date: 2001-10-22 17:13:20 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:19 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -316,15 +316,6 @@ IMPL_LINK( ScHighlightChgDlg, OKBtnHdl, PushButton*, pOKBtn )
         Time aFirstTime( aFilterCtr.GetFirstTime() );
         Date aLastDate( aFilterCtr.GetLastDate() );
         Time aLastTime( aFilterCtr.GetLastTime() );
-        switch ( eMode )
-        {   // korrespondiert mit ScViewUtil::IsActionShown
-            case SCDM_DATE_EQUAL :
-            case SCDM_DATE_NOTEQUAL :
-                aFirstTime.SetTime( 0 );
-                aLastDate = aFirstDate;
-                aLastTime.SetTime( 23595999 );
-            break;
-        }
         aChangeViewSet.SetTheFirstDateTime( DateTime( aFirstDate, aFirstTime ) );
         aChangeViewSet.SetTheLastDateTime( DateTime( aLastDate, aLastTime ) );
         aChangeViewSet.SetHasAuthor(aFilterCtr.IsAuthor());
@@ -337,6 +328,7 @@ IMPL_LINK( ScHighlightChgDlg, OKBtnHdl, PushButton*, pOKBtn )
         ScRangeList aRangeList;
         aRangeList.Parse(aFilterCtr.GetRange(), pDoc);
         aChangeViewSet.SetTheRangeList(aRangeList);
+        aChangeViewSet.AdjustDateMode( *pDoc );
         pDoc->SetChangeViewSettings(aChangeViewSet);
         pViewData->GetDocShell()->PostPaintGridAll();
         Close();
diff --git a/sc/source/ui/miscdlgs/highred.src b/sc/source/ui/miscdlgs/highred.src
index 06f0ce391d1b..5718eb4408ff 100644
--- a/sc/source/ui/miscdlgs/highred.src
+++ b/sc/source/ui/miscdlgs/highred.src
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: highred.src,v $
  *
- *  $Revision: 1.21 $
+ *  $Revision: 1.22 $
  *
- *  last change: $Author: obo $ $Date: 2001-11-16 22:50:26 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:19 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -85,21 +85,22 @@ ModelessDialog RID_SCDLG_HIGHLIGHT_CHANGES
         Text [ danish ] = "Vis ndringerne i regnearket" ;
         Text [ italian ] = "Mostra modifiche nella tabella" ;
         Text [ spanish ] = "~Mostrar las modificaciones en la hoja" ;
-        Text [ french ] = "~Afficher les modifications dans la feuille de calcul" ;
+        Text [ french ] = "Afficher les modifications dans la feuille de calcul" ;
         Text [ dutch ] = "W~ijzigingen op het werkblad weergeven." ;
         Text [ portuguese ] = "Mostrar modificaes na folha de clculo" ;
         Text[ chinese_simplified ] = "显示工作表内的更改内容(~S)";
-        Text[ russian ] = "   ";
+        Text[ russian ] = "    ";
         Text[ polish ] = "Poka zmiany w tabeli";
         Text[ japanese ] = "表内の変更箇所を表示(~S)";
         Text[ chinese_traditional ] = "顯示工作表內的變更(~S)";
         Text[ arabic ] = "   ";
         Text[ greek ] = "  ";
-        Text[ korean ] = "스프레드시트에 변경사항 보이기(~S)";
+        Text[ korean ] = "스프레드시트에 변경 사항 표시(~S)";
         Text[ turkish ] = "~Tablodaki deiiklikleri grntle";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "~Mostrar las modificaciones en la hoja";
-        Text[ finnish ] = "~N?yt? muutokset laskentataulukossa";
+        Text[ catalan ] = "~Mostra els canvis al full de clcul";
+        Text[ finnish ] = "~Nyt muutokset laskentataulukossa";
+        Text[ thai ] = "แ~สดงการเปลี่ยนแปลงในกระดาษคำนวณ";
     };
     FixedLine FL_FILTER
     {
@@ -114,19 +115,20 @@ ModelessDialog RID_SCDLG_HIGHLIGHT_CHANGES
         Text[ dutch ] = "Filterinstellingen";
         Text[ french ] = "Paramtres de filtre";
         Text[ spanish ] = "Configuracin de filtros";
-        Text[ finnish ] = "Filter options";
+        Text[ finnish ] = "Suodatusasetukset";
         Text[ italian ] = "Impostazioni filtro";
-        Text[ danish ] = "Filter options";
+        Text[ danish ] = "Filterindstillinger";
         Text[ swedish ] = "Filterinstllningar";
         Text[ polish ] = "Ustawienia filtra";
         Text[ portuguese_brazilian ] = "Filter options";
-        Text[ japanese ] = "フィルタの設定";
+        Text[ japanese ] = "フィルタの設定";
         Text[ korean ] = "필터 옵션";
         Text[ chinese_simplified ] = "选项设定";
         Text[ chinese_traditional ] = "設定篩選";
         Text[ turkish ] = "Filter options";
         Text[ arabic ] = "Filter options";
-        Text[ catalan ] = "Filter options";
+        Text[ catalan ] = "Opcions del filtre";
+        Text[ thai ] = "กำหนดค่าตัวกรอง";
     };
     CheckBox CB_HIGHLIGHT_ACCEPT
     {
@@ -137,10 +139,10 @@ ModelessDialog RID_SCDLG_HIGHLIGHT_CHANGES
         TabStop = TRUE ;
         Text [ english_us ] = "Show ~accepted changes" ;
         Text [ portuguese_brazilian ] = "A~kzeptierte ?nderungen anzeigen" ;
-        Text [ swedish ] = "Visa a~ccepterade ndringar" ;
+        Text [ swedish ] = "Visa acc~epterade ndringar" ;
         Text [ danish ] = "Vis accepterede ndringer" ;
-        Text [ italian ] = "Mostra i cambiamenti a~ccettati" ;
-        Text [ spanish ] = "~Mostrar las modificaciones aceptadas" ;
+        Text [ italian ] = "Mostra le modifiche a~ccettate" ;
+        Text [ spanish ] = "Mostrar las modificaciones aceptadas" ;
         Text [ french ] = "Afficher les modifications acceptes" ;
         Text [ dutch ] = "Geac~cepteerde wijzigingen weergeven" ;
         Text [ portuguese ] = "Mostrar mo~dificaes aceites" ;
@@ -151,11 +153,12 @@ ModelessDialog RID_SCDLG_HIGHLIGHT_CHANGES
         Text[ chinese_traditional ] = "顯示接受的變更(~A)";
         Text[ arabic ] = "  ";
         Text[ greek ] = "  ";
-        Text[ korean ] = "적용된 변경 보이기(~A)";
+        Text[ korean ] = "적용된 변경 표시(~A)";
         Text[ turkish ] = "~Kabul edilen deiiklikleri grntle";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "~Mostrar las modificaciones aceptadas";
-        Text[ finnish ] = "~N?yt? hyv?ksytyt muutokset";
+        Text[ catalan ] = "Mostra els canvis ~acceptats";
+        Text[ finnish ] = "Nyt hyvksytyt muutokset";
+        Text[ thai ] = "แสดงการเปลี่ยนแปลงที่~ยอมรับได้";
     };
     CheckBox CB_HIGHLIGHT_REJECT
     {
@@ -166,25 +169,26 @@ ModelessDialog RID_SCDLG_HIGHLIGHT_CHANGES
         TabStop = TRUE ;
         Text [ english_us ] = "Show ~rejected changes" ;
         Text [ portuguese_brazilian ] = "A~bgelehnte ?nderungen anzeigen" ;
-        Text [ swedish ] = "Visa ~ej accepterade ndringar" ;
-        Text [ danish ] = "Vis forkastede ndringer" ;
-        Text [ italian ] = "Mostra i cambiamenti accettati" ;
-        Text [ spanish ] = "~Mostrar las modificaciones rechazadas" ;
-        Text [ french ] = "Afficher les modifications ~refuses" ;
+        Text [ swedish ] = "Visa i~gnorerade ndringar" ;
+        Text [ danish ] = "Vis for~kastede ndringer" ;
+        Text [ italian ] = "Mostra le modifiche ri~fiutate" ;
+        Text [ spanish ] = "Mostrar las modificaciones rechazadas" ;
+        Text [ french ] = "Afficher les modifications refuses" ;
         Text [ dutch ] = "Niet-ge~accepteerde wijzigingen weergeven" ;
         Text [ portuguese ] = "Mostrar modificaes ~rejeitadas" ;
         Text[ chinese_simplified ] = "显示拒绝的更改内容(~R)";
         Text[ russian ] = "  ";
         Text[ polish ] = "Poka odrzucone zmiany";
         Text[ japanese ] = "破棄した変更箇所を表示(~R)";
-        Text[ chinese_traditional ] = "顯示已拒絕的變更内容(~R)";
+        Text[ chinese_traditional ] = "顯示已拒絕的變更內容(~R)";
         Text[ arabic ] = "  ";
         Text[ greek ] = "  ";
-        Text[ korean ] = "거부된 변경사항 표시(~R)";
+        Text[ korean ] = "거부된 변경 표시(~R)";
         Text[ turkish ] = "~Reddedilen deiiklikleri grntle";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "~Mostrar las modificaciones rechazadas";
-        Text[ finnish ] = "~Nyt hyltyt muutokset";
+        Text[ catalan ] = "Mostra els canvis ~rebutjats";
+        Text[ finnish ] = "Nyt hyltyt muutokset";
+        Text[ thai ] = "แสดงการเปลี่ยนแปลงที่~ปฏิเสธ";
     };
     OKButton BTN_OK
     {
@@ -241,8 +245,9 @@ ModelessDialog RID_SCDLG_HIGHLIGHT_CHANGES
         QuickHelpText[ language_user1 ] = " ";
         QuickHelpText[ language_user1 ] = " ";
         QuickHelpText[ turkish ] = "Verkleinern/Vergrern";
-        QuickHelpText[ catalan ] = "Reducir/Aumentar";
-        QuickHelpText[ finnish ] = "Pienenn?/suurenna!";
+        QuickHelpText[ catalan ] = "Redueix/Augmenta";
+        QuickHelpText[ finnish ] = "Pienenn/suurenna";
+        QuickHelpText[ thai ] = "Minimize/Maximize";
     };
     Text [ english_us ] = "Show Changes" ;
     Text [ portuguese_brazilian ] = "?nderungen anzeigen" ;
@@ -260,11 +265,12 @@ ModelessDialog RID_SCDLG_HIGHLIGHT_CHANGES
     Text[ chinese_traditional ] = "顯示變更";
     Text[ arabic ] = " ";
     Text[ greek ] = " ";
-    Text[ korean ] = "변경 보이기";
+    Text[ korean ] = "변경 표시";
     Text[ turkish ] = "Deiiklikleri grntle";
     Text[ language_user1 ] = " ";
-    Text[ catalan ] = "Mostrar modificaciones";
-    Text[ finnish ] = "N?yt? muutokset";
+    Text[ catalan ] = "Mostra els canvis";
+    Text[ finnish ] = "Nyt muutokset";
+    Text[ thai ] = "แสดงการเปลี่ยนแปลง";
 };
 
 
@@ -276,3 +282,9 @@ ModelessDialog RID_SCDLG_HIGHLIGHT_CHANGES
 
 
 
+
+
+
+
+
+
diff --git a/sc/source/ui/miscdlgs/instbdlg.src b/sc/source/ui/miscdlgs/instbdlg.src
index 1717652663c8..f42396fee0af 100644
--- a/sc/source/ui/miscdlgs/instbdlg.src
+++ b/sc/source/ui/miscdlgs/instbdlg.src
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: instbdlg.src,v $
  *
- *  $Revision: 1.24 $
+ *  $Revision: 1.25 $
  *
- *  last change: $Author: rt $ $Date: 2001-08-24 13:40:33 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:19 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -87,8 +87,8 @@ ModalDialog RID_SCDLG_INSERT_TABLE
     Text[ korean ] = "시트 삽입";
     Text[ turkish ] = "Tablo ekle";
     Text[ language_user1 ] = " ";
-    Text[ catalan ] = "Insertar hoja";
-    Text[ finnish ] = "Lis lomake";
+    Text[ catalan ] = "Insereix un full";
+    Text[ finnish ] = "Lis taulukko";
     Moveable = TRUE ;
     Closeable = TRUE ;
     OKButton BTN_OK
@@ -132,8 +132,9 @@ ModalDialog RID_SCDLG_INSERT_TABLE
         Text[ korean ] = "위치";
         Text[ turkish ] = "Konum";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Posicin";
+        Text[ catalan ] = "Posici";
         Text[ finnish ] = "Sijainti";
+        Text[ thai ] = "ตำแหน่ง";
     };
     RadioButton RB_BEFORE
     {
@@ -150,19 +151,20 @@ ModalDialog RID_SCDLG_INSERT_TABLE
         Text [ italian ] = "~Prima della tabella corrente" ;
         Text [ spanish ] = "~Delante de la hoja actual" ;
         Text [ french ] = "A~vant la feuille courante" ;
-        Text [ dutch ] = "~Voor actuele tabel" ;
+        Text [ dutch ] = "~Voor huidige tabel" ;
         Text[ chinese_simplified ] = "在当前的工作表之前(~E)";
         Text[ russian ] = "  ";
         Text[ polish ] = "Przed zaz~naczonym arkuszem";
         Text[ japanese ] = "表示中の表の前に(~E)";
-        Text[ chinese_traditional ] = "在當前的工作表之前(~E)";
+        Text[ chinese_traditional ] = "在目前的工作表之前(~E)";
         Text[ arabic ] = "  ";
         Text[ greek ] = "    ";
-        Text[ korean ] = "현재 표 앞에(~E)";
+        Text[ korean ] = "현재 시트 앞에(~E)";
         Text[ turkish ] = "Ak tablonun ~nne";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "~Delante de la hoja actual";
-        Text[ finnish ] = "~Ennen nykyist lomaketta";
+        Text[ catalan ] = "A~bans del full actual";
+        Text[ finnish ] = "~Ennen nykyist taulukkoa";
+        Text[ thai ] = "ก่~อนแผ่นงานปัจจุบัน";
     };
     RadioButton RB_BEHIND
     {
@@ -179,19 +181,20 @@ ModalDialog RID_SCDLG_INSERT_TABLE
         Text [ italian ] = "~Dopo la tabella corrente" ;
         Text [ spanish ] = "Detrs de la ~hoja actual" ;
         Text [ french ] = "~Aprs la feuille courante" ;
-        Text [ dutch ] = "~Na actuele tabel" ;
+        Text [ dutch ] = "~Na huidige tabel" ;
         Text[ chinese_simplified ] = "在当前的工作表之后(~A)";
         Text[ russian ] = "  ";
         Text[ polish ] = "Za ~zaznaczonym arkuszem";
         Text[ japanese ] = "表示中の表の後に(~A)";
-        Text[ chinese_traditional ] = "在當前的工作表之後(~A)";
+        Text[ chinese_traditional ] = "在目前的工作表之後(~A)";
         Text[ arabic ] = "  ";
         Text[ greek ] = "    ";
-        Text[ korean ] = "현재 표 뒤에(~A)";
+        Text[ korean ] = "현재 시트 뒤에(~A)";
         Text[ turkish ] = "Ak tablonun ~arkasna";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Detrs de la ~hoja actual";
-        Text[ finnish ] = "~Nykyisen lomakkeen pern";
+        Text[ catalan ] = "~Desprs del full actual";
+        Text[ finnish ] = "Nykyisen taulukon ~pern";
+        Text[ thai ] = "~หลังแผ่นงานปัจจุบัน";
     };
     FixedLine FL_TABLE
     {
@@ -199,10 +202,10 @@ ModalDialog RID_SCDLG_INSERT_TABLE
         Size = MAP_APPFONT ( 206 , 8 ) ;
         Text = "Tabelle" ;
         Text [ ENGLISH ] = "Table" ;
-        Text [ english_us ] = "Table" ;
+        Text [ english_us ] = "Sheet" ;
         Text [ portuguese_brazilian ] = "Tabelle" ;
         Text [ swedish ] = "Tabell" ;
-        Text [ danish ] = "Ark" ;
+        Text [ danish ] = "Tabel" ;
         Text [ italian ] = "Tabella" ;
         Text [ spanish ] = "Hoja" ;
         Text [ french ] = "Feuille" ;
@@ -218,8 +221,9 @@ ModalDialog RID_SCDLG_INSERT_TABLE
         Text[ korean ] = "시트";
         Text[ turkish ] = "Tablo";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Hoja";
-        Text[ finnish ] = "Luo";
+        Text[ catalan ] = "Crea";
+        Text[ finnish ] = "Taulukko";
+        Text[ thai ] = "สร้าง";
     };
     RadioButton RB_NEW
     {
@@ -227,10 +231,10 @@ ModalDialog RID_SCDLG_INSERT_TABLE
         Size = MAP_APPFONT ( 197 , 10 ) ;
         Text = "Neu ~erstellen" ;
         Text [ ENGLISH ] = "~Create new" ;
-        Text [ DANISH ] = "Opret nyt" ;
+        Text [ DANISH ] = "~Opret ny" ;
         Text [ ENGLISH_US ] = "~New sheet" ;
-        Text [ SPANISH ] = "~Crear nueva" ;
-        Text [ FRENCH ] = "C~rer" ;
+        Text [ SPANISH ] = "~Hoja nueva" ;
+        Text [ FRENCH ] = "Crer" ;
         Text [ ITALIAN ] = "Crea nuovo" ;
         Text [ DUTCH ] = "~Nieuw" ;
         Text [ PORTUGUESE_BRAZILIAN ] = "~Neu erstellen" ;
@@ -246,8 +250,9 @@ ModalDialog RID_SCDLG_INSERT_TABLE
         Text[ korean ] = "새로 만들기(~N)";
         Text[ turkish ] = "~Yeni tablo";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "~Crear una nueva";
-        Text[ finnish ] = "~Uusi lomake";
+        Text[ catalan ] = "~Full nou";
+        Text[ finnish ] = "~Uusi taulukko";
+        Text[ thai ] = "แผ่นงานใ~หม่";
     };
     FixedText FT_COUNT
     {
@@ -265,7 +270,7 @@ ModalDialog RID_SCDLG_INSERT_TABLE
         Text [ french ] = "N~ombre" ;
         Text [ dutch ] = "Aan~tal" ;
         Text[ chinese_simplified ] = "数目(~O)";
-        Text[ russian ] = " ";
+        Text[ russian ] = "";
         Text[ polish ] = "Ilo";
         Text[ japanese ] = "表の数(~O)";
         Text[ chinese_traditional ] = "數目(~O)";
@@ -274,8 +279,9 @@ ModalDialog RID_SCDLG_INSERT_TABLE
         Text[ korean ] = "개수(~O)";
         Text[ turkish ] = "A~det";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "~Nm. de hojas";
-        Text[ finnish ] = "~Lomakkeiden mr";
+        Text[ catalan ] = "N~m. de fulls";
+        Text[ finnish ] = "~Taulukoiden mr";
+        Text[ thai ] = "ห~มายเลขแผ่นงาน";
     };
     NumericField NF_COUNT
     {
@@ -300,7 +306,7 @@ ModalDialog RID_SCDLG_INSERT_TABLE
         Text[ russian ] = "";
         Text[ greek ] = "~";
         Text[ dutch ] = "~Naam";
-        Text[ french ] = "No~m";
+        Text[ french ] = "Nom";
         Text[ spanish ] = "No~mbre";
         Text[ italian ] = "No~me";
         Text[ danish ] = "Navn";
@@ -313,8 +319,9 @@ ModalDialog RID_SCDLG_INSERT_TABLE
         Text[ chinese_traditional ] = "名稱(~M)";
         Text[ turkish ] = "~Ad";
         Text[ arabic ] = "";
-        Text[ catalan ] = "No~mbre";
-        Text[ finnish ] = "Ni~mi";
+        Text[ catalan ] = "N~om";
+        Text[ finnish ] = "~Nimi";
+        Text[ thai ] = "ชื่~อ";
     };
     Edit ED_TABNAME
     {
@@ -328,7 +335,7 @@ ModalDialog RID_SCDLG_INSERT_TABLE
         Size = MAP_APPFONT ( 197 , 10 ) ;
         Text = "~Aus Datei erstellen" ;
         Text [ ENGLISH ] = "F~rom file" ;
-        Text [ DANISH ] = "Opret fra fil" ;
+        Text [ DANISH ] = "Opret fr~a fil" ;
         Text [ ENGLISH_US ] = "~From file" ;
         Text [ SPANISH ] = "~A partir de archivo" ;
         Text [ FRENCH ] = "~Cration  partir d'un fichier" ;
@@ -338,17 +345,18 @@ ModalDialog RID_SCDLG_INSERT_TABLE
         Text [ SWEDISH ] = "Sk~apa frn fil" ;
         Text [ PORTUGUESE ] = "~Criar a partir do ficheiro" ;
         Text[ chinese_simplified ] = "从文件创建(~F)";
-        Text[ russian ] = "  ";
+        Text[ russian ] = " ";
         Text[ polish ] = "Utwrz z pliku";
-        Text[ japanese ] = "ファイルから作成(~F)";
+        Text[ japanese ] = "ファイルから作成(~F)";
         Text[ chinese_traditional ] = "從檔案新增(~F)";
         Text[ arabic ] = "  ";
         Text[ greek ] = "~  ";
-        Text[ korean ] = "..파일로부터 만들기(~F)";
+        Text[ korean ] = "파일로부터(~F)";
         Text[ turkish ] = "~Dosyadan olutur";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "~A partir de archivo";
+        Text[ catalan ] = "~Des d'un fitxer";
         Text[ finnish ] = "~Tiedostosta";
+        Text[ thai ] = "~จากแฟ้ม";
     };
     MultiListBox LB_TABLES
     {
@@ -366,7 +374,7 @@ ModalDialog RID_SCDLG_INSERT_TABLE
         Text [ ENGLISH ] = "~Browse..." ;
         Text [ DANISH ] = "Gennemse..." ;
         Text [ ENGLISH_US ] = "~Browse..." ;
-        Text [ SPANISH ] = "E~xaminar..." ;
+        Text [ SPANISH ] = "~Buscar..." ;
         Text [ FRENCH ] = "~Parcourir..." ;
         Text [ ITALIAN ] = "~Sfoglia..." ;
         Text [ DUTCH ] = "~Bladeren..." ;
@@ -380,11 +388,12 @@ ModalDialog RID_SCDLG_INSERT_TABLE
         Text[ chinese_traditional ] = "瀏覽(~B)...";
         Text[ arabic ] = "...";
         Text[ greek ] = "...";
-        Text[ korean ] = "검색(~B)...";
+        Text[ korean ] = "찾아보기(~B)...";
         Text[ turkish ] = "~Tara...";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "E~xaminar...";
-        Text[ finnish ] = "~Selaa";
+        Text[ catalan ] = "~Navega...";
+        Text[ finnish ] = "~Selaa...";
+        Text[ thai ] = "เ~รียกดู...";
     };
     CheckBox CB_LINK
     {
@@ -393,7 +402,7 @@ ModalDialog RID_SCDLG_INSERT_TABLE
         /* ### ACHTUNG: Neuer Text in Resource? Ver~knpfen : Ver~knpfen */
         Text = "Ver~knpfen" ;
         Text [ ENGLISH ] = "Lin~k" ;
-        Text [ DANISH ] = "Kd" ;
+        Text [ DANISH ] = "~Kd" ;
         Text [ ENGLISH_US ] = "Lin~k" ;
         Text [ SPANISH ] = "~Vincular" ;
         Text [ FRENCH ] = "~Lier" ;
@@ -403,23 +412,25 @@ ModalDialog RID_SCDLG_INSERT_TABLE
         Text [ SWEDISH ] = "Ln~ka" ;
         Text [ PORTUGUESE ] = "~Ligar" ;
         Text[ chinese_simplified ] = "链接(~K)";
-        Text[ russian ] = "";
+        Text[ russian ] = "  ";
         Text[ polish ] = "Pocz";
-        Text[ japanese ] = "リンク(~K)";
+        Text[ japanese ] = "リンク(~K)";
         Text[ chinese_traditional ] = "捷徑(~K)";
         Text[ arabic ] = "";
         Text[ greek ] = "";
-        Text[ korean ] = "링크(~K)";
+        Text[ korean ] = "연결(~K)";
         Text[ turkish ] = "Ba~la";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "~Vincular";
-        Text[ finnish ] = "~Linkki ";
+        Text[ catalan ] = "Enlla~";
+        Text[ finnish ] = "Lin~kki";
+        Text[ thai ] = "เชื่อมโ~ยง ";
     };
     FixedText FT_PATH
     {
         Pos = MAP_APPFONT ( 20 , 176 ) ;
         Size = MAP_APPFONT ( 192 , 8 ) ;
     };
+    Text[ thai ] = "แทรกแผ่นงาน";
 };
 
 
@@ -428,3 +439,13 @@ ModalDialog RID_SCDLG_INSERT_TABLE
 
 
 
+
+
+
+
+
+
+
+
+
+
diff --git a/sc/source/ui/miscdlgs/linkarea.src b/sc/source/ui/miscdlgs/linkarea.src
index 8aefa43fe6c9..cb49a30dbc57 100644
--- a/sc/source/ui/miscdlgs/linkarea.src
+++ b/sc/source/ui/miscdlgs/linkarea.src
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: linkarea.src,v $
  *
- *  $Revision: 1.20 $
+ *  $Revision: 1.21 $
  *
- *  last change: $Author: kz $ $Date: 2002-11-27 16:38:26 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:19 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -105,7 +105,7 @@ ModalDialog RID_SCDLG_LINKAREA
         Text[ polish ] = "Adres URL zewntrznego rda danych";
         Text[ portuguese_brazilian ] = "External Data Source Location";
         Text[ japanese ] = "外部データソースの URL(~E)";
-        Text[ korean ] = "외부 데이터 소스의 URL(~E)";
+        Text[ korean ] = "외부 데이터 원본의 URL(~E)";
         Text[ chinese_simplified ] = "外部数据源的 URL(~E)";
         Text[ chinese_traditional ] = "外部資料源的 URL(~E)";
         Text[ turkish ] = "External Data Source Location";
@@ -147,7 +147,7 @@ ModalDialog RID_SCDLG_LINKAREA
         Text[ polish ] = "(Adres URL dokumentu rdowego w lokalnym systemie plikw lub w Internecie)";
         Text[ portuguese_brazilian ] = "(Insert a local file location or an URL from a web site here)";
         Text[ japanese ] = "(ローカルのファイルシステム、あるいはインターネットにあるソースドキュメントの URL)";
-        Text[ korean ] = "(로컬 파일 시스템 또는 웹사이트 내 소스 문서의 URL)";
+        Text[ korean ] = "(로컬 파일 시스템 또는 웹사이트 내 원본 문서의 URL)";
         Text[ chinese_simplified ] = "(本机文件系统或国际互联网之中源文本的 URL)";
         Text[ chinese_traditional ] = "(本機檔案系統或 internet 之中源文件的 URL)";
         Text[ turkish ] = "(Insert a local file location or an URL from a web site here)";
@@ -175,7 +175,7 @@ ModalDialog RID_SCDLG_LINKAREA
         Text[ polish ] = "Dostpne tabele/obszary";
         Text[ portuguese_brazilian ] = "Available Tables/Ranges";
         Text[ japanese ] = "使用できる表と範囲(~A)";
-        Text[ korean ] = "사용 가능한 시트/범위(~A)";
+        Text[ korean ] = "사용 가능한 표/범위(~A)";
         Text[ chinese_simplified ] = "现有的表格/区域(~A)";
         Text[ chinese_traditional ] = "現有的表格或區域(~A)";
         Text[ turkish ] = "Available Tables/Ranges";
@@ -212,7 +212,7 @@ ModalDialog RID_SCDLG_LINKAREA
         Text[ polish ] = "Aktualizuj co";
         Text[ portuguese_brazilian ] = "Auto reload data every";
         Text[ japanese ] = "次の時間間隔で更新(~U)";
-        Text[ korean ] = "모두 업데이트(~U)";
+        Text[ korean ] = "업데이트 시간 간격(~U)";
         Text[ chinese_simplified ] = "更新时间间隔为每(~U)";
         Text[ chinese_traditional ] = "更新時間間隔為每(~U)";
         Text[ turkish ] = "Auto reload data every";
@@ -297,3 +297,8 @@ ModalDialog RID_SCDLG_LINKAREA
 
 
 
+
+
+
+
+
diff --git a/sc/source/ui/miscdlgs/tabopdlg.cxx b/sc/source/ui/miscdlgs/tabopdlg.cxx
index 16cfddd0ef35..87db66afc8d2 100644
--- a/sc/source/ui/miscdlgs/tabopdlg.cxx
+++ b/sc/source/ui/miscdlgs/tabopdlg.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: tabopdlg.cxx,v $
  *
- *  $Revision: 1.5 $
+ *  $Revision: 1.6 $
  *
- *  last change: $Author: dr $ $Date: 2002-03-13 11:44:14 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:20 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -386,7 +386,7 @@ IMPL_LINK( ScTabOpDlg, GetFocusHdl, Control*, pCtrl )
     else if( (pCtrl == (Control*)&aEdColCell) || (pCtrl == (Control*)&aRBColCell) )
         pEdActive = &aEdColCell;
     else
-        pEdActive == NULL;
+        pEdActive = NULL;
 
     if( pEdActive )
         pEdActive->SetSelection( Selection( 0, SELECTION_MAX ) );
diff --git a/sc/source/ui/navipi/navipi.src b/sc/source/ui/navipi/navipi.src
index 881e02a46dbd..2c44787daeeb 100644
--- a/sc/source/ui/navipi/navipi.src
+++ b/sc/source/ui/navipi/navipi.src
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: navipi.src,v $
  *
- *  $Revision: 1.32 $
+ *  $Revision: 1.33 $
  *
- *  last change: $Author: kz $ $Date: 2002-11-27 16:34:59 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:22 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -354,7 +354,7 @@ Window RID_SCDLG_NAVIGATOR
                 Text[ dutch ] = "Gegevensbereik";
                 Text[ chinese_simplified ] = "数据区域";
                 Text[ greek ] = " ";
-                Text[ korean ] = "데이터 영역";
+                Text[ korean ] = "데이터 범위";
                 Text[ turkish ] = "Veri alan";
                 Text[ language_user1 ] = " ";
                 Text[ catalan ] = "rea de dades";
@@ -439,14 +439,14 @@ Window RID_SCDLG_NAVIGATOR
                 Text [ dutch ] = "Inhoud" ;
                 Text [ english_us ] = "Contents" ;
                 Text [ italian ] = "Contenuti" ;
-                Text [ spanish ] = "Contenidos" ;
+                Text [ spanish ] = "Contenido" ;
                 Text [ french ] = "Contenu" ;
                 Text [ swedish ] = "Innehll" ;
                 Text [ danish ] = "Indhold" ;
                 Text [ portuguese ] = "Contedos" ;
                 Text [ portuguese_brazilian ] = "Inhalte" ;
                 Text[ chinese_simplified ] = "内容";
-                Text[ russian ] = "";
+                Text[ russian ] = "";
                 Text[ polish ] = "Zawartoci";
                 Text[ japanese ] = "内容";
                 Text[ chinese_traditional ] = "內容";
@@ -477,7 +477,7 @@ Window RID_SCDLG_NAVIGATOR
                 Text [ portuguese ] = "Comutar" ;
                 Text [ portuguese_brazilian ] = "Umschalten" ;
                 Text[ chinese_simplified ] = "切换";
-                Text[ russian ] = "";
+                Text[ russian ] = "";
                 Text[ polish ] = "Przecz";
                 Text[ japanese ] = "切り替え";
                 Text[ chinese_traditional ] = "切換";
@@ -784,7 +784,7 @@ Window RID_SCDLG_NAVIGATOR
         Text[ dutch ] = "Opmerkingen";
         Text[ chinese_simplified ] = "注解";
         Text[ greek ] = "";
-        Text[ korean ] = "주석";
+        Text[ korean ] = "설명";
         Text[ turkish ] = "Aklama";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Comentari";
@@ -875,7 +875,7 @@ String SCSTR_CONTENT_ROOT
     TEXT [ English ] = "Contents" ;
     Text [ english_us ] = "Contents" ;
     Text [ italian ] = "Contenuti" ;
-    Text [ spanish ] = "Contenidos" ;
+    Text [ spanish ] = "Contenido" ;
     Text [ french ] = "Contenu" ;
     Text [ dutch ] = "Inhoud" ;
     Text [ swedish ] = "Innehll" ;
@@ -949,7 +949,7 @@ String SCSTR_CONTENT_RANGENAME
     Text[ dutch ] = "Bereiknamen";
     Text[ chinese_simplified ] = "区域名称";
     Text[ greek ] = " ";
-    Text[ korean ] = "영역 이름";
+    Text[ korean ] = "범위 이름";
     Text[ turkish ] = "Alan adlar";
     Text[ language_user1 ] = " ";
     Text[ catalan ] = "Noms d'rea";
@@ -978,7 +978,7 @@ String SCSTR_CONTENT_DBAREA
     Text[ dutch ] = "Databasebereiken";
     Text[ chinese_simplified ] = "数据库区域";
     Text[ greek ] = "  ";
-    Text[ korean ] = "데이터베이스 영역";
+    Text[ korean ] = "데이터베이스 범위";
     Text[ turkish ] = "Veritaban alanlar";
     Text[ language_user1 ] = " ";
     Text[ catalan ] = "rees de la base de dades";
@@ -1007,7 +1007,7 @@ String SCSTR_CONTENT_GRAPHIC
     Text[ dutch ] = "Afbeeldingen";
     Text[ chinese_simplified ] = "图形";
     Text[ greek ] = "";
-    Text[ korean ] = "그래픽";
+    Text[ korean ] = "그림";
     Text[ turkish ] = "Grafikler";
     Text[ language_user1 ] = " ";
     Text[ catalan ] = "Grfics";
@@ -1094,7 +1094,7 @@ String SCSTR_CONTENT_AREALINK
     Text[ dutch ] = "Gekoppelde bereiken";
     Text[ chinese_simplified ] = "链接的区域";
     Text[ greek ] = " ";
-    Text[ korean ] = "링크된 영역";
+    Text[ korean ] = "연결된 영역";
     Text[ turkish ] = "Balantl alanlar";
     Text[ language_user1 ] = " ";
     Text[ catalan ] = "rees enllaades";
@@ -1156,7 +1156,7 @@ Menu RID_POPUP_DROPMODE
             Text[ dutch ] = "Als Hyperlink invoegen";
             Text[ chinese_simplified ] = "当作超链接插入";
             Text[ greek ] = "  -";
-            Text[ korean ] = "하이퍼링크 삽입";
+            Text[ korean ] = "하이퍼링크로 삽입";
             Text[ turkish ] = "Hyperlink olarak ekle";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Insereix com a hiperenlla";
@@ -1187,7 +1187,7 @@ Menu RID_POPUP_DROPMODE
             Text[ dutch ] = "Als koppeling invoegen";
             Text[ chinese_simplified ] = "当作链接插入";
             Text[ greek ] = "  ";
-            Text[ korean ] = "연결로 삽입";
+            Text[ korean ] = "링크로 삽입";
             Text[ turkish ] = "Balant olarak ekle";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Insereix com a enlla";
@@ -1243,7 +1243,7 @@ Menu RID_POPUP_NAVIPI_SCENARIO
             Text [ swedish ] = "Radera" ;
             Text [ danish ] = "Slet" ;
             Text [ italian ] = "Elimina" ;
-            Text [ spanish ] = "Eliminar" ;
+            Text [ spanish ] = "Borrar" ;
             Text [ french ] = "Supprimer" ;
             Text [ dutch ] = "Wissen" ;
             Text[ chinese_simplified ] = "删除";
@@ -1286,7 +1286,7 @@ Menu RID_POPUP_NAVIPI_SCENARIO
             Text[ dutch ] = "Eigenschappen...";
             Text[ chinese_simplified ] = "属性...";
             Text[ greek ] = "...";
-            Text[ korean ] = "특성...";
+            Text[ korean ] = "등록 정보...";
             Text[ turkish ] = "zellikler...";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Propietats...";
@@ -1310,4 +1310,9 @@ Menu RID_POPUP_NAVIPI_SCENARIO
 
 
 
+
+
+
+
+
 
diff --git a/sc/source/ui/optdlg/opredlin.cxx b/sc/source/ui/optdlg/opredlin.cxx
index 0201248c272c..5cd5d9696e6c 100644
--- a/sc/source/ui/optdlg/opredlin.cxx
+++ b/sc/source/ui/optdlg/opredlin.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: opredlin.cxx,v $
  *
- *  $Revision: 1.1.1.1 $
+ *  $Revision: 1.2 $
  *
- *  last change: $Author: hr $ $Date: 2000-09-18 16:45:03 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:23 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
diff --git a/sc/source/ui/optdlg/tpcalc.cxx b/sc/source/ui/optdlg/tpcalc.cxx
index 3cd8555fb216..6e636b499fbd 100644
--- a/sc/source/ui/optdlg/tpcalc.cxx
+++ b/sc/source/ui/optdlg/tpcalc.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: tpcalc.cxx,v $
  *
- *  $Revision: 1.8 $
+ *  $Revision: 1.9 $
  *
- *  last change: $Author: er $ $Date: 2001-07-11 16:02:59 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:23 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -72,8 +72,8 @@
 #include "scitems.hxx"
 #include 
 
-#ifndef _TOOLS_SOLMATH_HXX //autogen wg. SolarMath
-#include 
+#ifndef INCLUDED_RTL_MATH_HXX
+#include 
 #endif
 #ifndef _UNOTOOLS_LOCALEDATAWRAPPER_HXX
 #include 
@@ -182,12 +182,11 @@ SfxTabPage* __EXPORT ScTpCalcOptions::Create( Window* pParent, const SfxItemSet&
 void __EXPORT ScTpCalcOptions::Reset( const SfxItemSet& rCoreAttrs )
 {
     USHORT  d,m,y;
-    String  aStrBuf;
 
     *pLocalOptions  = *pOldOptions;
 
-    SolarMath::DoubleToString( aStrBuf, pLocalOptions->GetIterEps(),
-        'G', 6, aDecSep.GetChar(0), TRUE );
+    String aStrBuf( ::rtl::math::doubleToUString( pLocalOptions->GetIterEps(),
+                rtl_math_StringFormat_G, 6, aDecSep.GetChar(0), TRUE));
 
     aBtnCase   .Check( !pLocalOptions->IsIgnoreCase() );
     aBtnCalc   .Check( pLocalOptions->IsCalcAsShown() );
@@ -267,13 +266,14 @@ BOOL ScTpCalcOptions::GetEps( double& rEps )
 {
     String aStr( aEdEps.GetText() );
     aStr.EraseTrailingChars( ' ' );
-    int nErrno;
-    const sal_Unicode* pEnd;
-    rEps = SolarMath::StringToDouble( aStr.GetBuffer(),
-        ScGlobal::pLocaleData->getNumThousandSep().GetChar(0),
+    rtl_math_ConversionStatus eStatus;
+    sal_Unicode const * pBegin = aStr.GetBuffer();
+    sal_Unicode const * pEnd;
+    rEps = rtl_math_uStringToDouble( pBegin, pBegin + aStr.Len(),
         ScGlobal::pLocaleData->getNumDecimalSep().GetChar(0),
-        nErrno, &pEnd );
-    BOOL bOk = ( nErrno == 0 && *pEnd == '\0' && rEps > 0.0 );
+        ScGlobal::pLocaleData->getNumThousandSep().GetChar(0),
+        &eStatus, &pEnd );
+    BOOL bOk = ( eStatus == rtl_math_ConversionStatus_Ok && *pEnd == '\0' && rEps > 0.0 );
 
     if ( bOk )
         pLocalOptions->SetIterEps( rEps );
diff --git a/sc/source/ui/pagedlg/hfedtdlg.src b/sc/source/ui/pagedlg/hfedtdlg.src
index cec75becb266..ce08c84f5ba5 100644
--- a/sc/source/ui/pagedlg/hfedtdlg.src
+++ b/sc/source/ui/pagedlg/hfedtdlg.src
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: hfedtdlg.src,v $
  *
- *  $Revision: 1.32 $
+ *  $Revision: 1.33 $
  *
- *  last change: $Author: kz $ $Date: 2002-11-27 16:35:18 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:23 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -73,7 +73,7 @@
     Text [ french ] = "En-tte/Pied de page" ; \
     Text [ swedish ] = "Sidhuvud/sidfot" ; \
     Text [ dutch ] = "Kop-/voettekst" ; \
-    Text [ spanish ] = "Encabezam./Pie de pgina" ; \
+    Text [ spanish ] = "Encabezamientos y pies de pgina" ; \
     Text [ english_us ] = "Headers/Footers" ; \
     Text[ chinese_simplified ] = "页眉/页脚";   \
     Text[ russian ] = "/ "; \
@@ -160,7 +160,7 @@
     Text [ french ] = "En-tte (droit)" ; \
     Text [ swedish ] = "Sidhuvud (hger)" ; \
     Text [ dutch ] = "Koptekst (rechts)" ; \
-    Text [ spanish ] = "Encabezam. (der.)" ; \
+    Text [ spanish ] = "Encabezamiento (der.)" ; \
     Text [ english_us ] = "Header (right)" ; \
     Text[ chinese_simplified ] = "页眉(右)"; \
     Text[ russian ] = "  ()";    \
@@ -189,7 +189,7 @@
     Text [ french ] = "En-tte ( gauche)" ; \
     Text [ swedish ] = "Sidhuvud (vnster)" ; \
     Text [ dutch ] = "Koptekst (links)" ; \
-    Text [ spanish ] = "Encabezam. (izq.)" ; \
+    Text [ spanish ] = "Encabezamiento (izq.)" ; \
     Text [ english_us ] = "Header (left)" ; \
     Text[ chinese_simplified ] = "页眉(左)"; \
     Text[ russian ] = "  ()"; \
@@ -337,7 +337,7 @@ TabDialog RID_SCDLG_HFED_FOOTER
     Text [ portuguese ] = "Rodap" ;
     Text [ finnish ] = "Alatunnisteet" ;
     Text [ danish ] = "Sidefdder" ;
-    Text [ french ] = "Pieds de pages" ;
+    Text [ french ] = "Pieds de page" ;
     Text [ swedish ] = "Sidftter" ;
     Text [ dutch ] = "Voetteksten" ;
     Text [ spanish ] = "Pies de pgina" ;
@@ -1133,7 +1133,7 @@ TabPage RID_HFBASE
         QuickHelpText[ dutch ] = "Pagina's";
         QuickHelpText[ chinese_simplified ] = "页数";
         QuickHelpText[ greek ] = "";
-        QuickHelpText[ korean ] = "페이지들";
+        QuickHelpText[ korean ] = "페이지";
         QuickHelpText[ language_user1 ] = " ";
         QuickHelpText[ turkish ] = "Seiten";
         QuickHelpText[ catalan ] = "Pgines";
@@ -1253,7 +1253,7 @@ TabPage RID_HFBASE
         Text [ french ] = "Utilisez les boutons pour modifier la police ou pour insrer des champs tels que la date, l'heure, etc." ;
         Text [ swedish ] = "Anvnd kommandoknapparna fr att ndra teckensnitt eller infoga fltkommandon som datum, klockslag etc." ;
         Text [ dutch ] = "Gebruik de knoppen om de tekstattributen te wijzigen of om veldopdrachten zoals datum, tijd, enz. in te voegen." ;
-        Text [ spanish ] = "Utilice los botones para modificar la fuente o para insertar comandos como fecha, hora, etc." ;
+        Text [ spanish ] = "Utilice los botones para modificar la fuente o para insertar ordenes como fecha, hora, etc." ;
         Text [ english_us ] = "Use the buttons to change the font or insert field commands such as date, time, etc." ;
         Text[ chinese_simplified ] = "请点击按钮,更改字体或插入日期,时间等区域指令。";
         Text[ russian ] = "          ,  ,   ..";
@@ -1264,7 +1264,7 @@ TabPage RID_HFBASE
         Text[ dutch ] = "Gebruik de knoppen om de tekstattributen te wijzigen of om veldopdrachten zoals datum, tijd, enz. in te voegen.";
         Text[ chinese_simplified ] = "请点击按钮,更改字体或插入日期,时间等区域指令。";
         Text[ greek ] = "              ,  .. , , .";
-        Text[ korean ] = "글꼴을 변경하거나 날짜, 시간등의 필드 명령어를 삽입하기 위해서는 버튼을 사용하십시오.";
+        Text[ korean ] = "글꼴을 변경하거나 날짜, 시간등의 필드를 삽입하기 위해서 버튼을 사용하십시오.";
         Text[ turkish ] = "Yaztipini deitirmek ya da tarih, saat gibi alan komutlar eklemek iin dmeleri kullannz.";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Utilitzeu els botons per canviar el tipus de lletra o b inserir ordres de camp com ara la data, l'hora, etc.";
@@ -1296,7 +1296,7 @@ TabPage RID_HFBASE
         Text[ dutch ] = "Tip";
         Text[ chinese_simplified ] = "提示";
         Text[ greek ] = "";
-        Text[ korean ] = "주";
+        Text[ korean ] = "참고";
         Text[ turkish ] = "Not";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Nota";
@@ -1433,3 +1433,8 @@ TabPage RID_SCPAGE_HFED_FR < RID_HFBASE
 
 
 
+
+
+
+
+
diff --git a/sc/source/ui/pagedlg/pagedlg.src b/sc/source/ui/pagedlg/pagedlg.src
index 3c9928bb20fa..f894d8fb70af 100644
--- a/sc/source/ui/pagedlg/pagedlg.src
+++ b/sc/source/ui/pagedlg/pagedlg.src
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: pagedlg.src,v $
  *
- *  $Revision: 1.39 $
+ *  $Revision: 1.40 $
  *
- *  last change: $Author: kz $ $Date: 2002-12-09 09:54:21 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:24 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -116,7 +116,7 @@ ModelessDialog RID_SCDLG_AREAS
         Text[ chinese_traditional ] = "列印範圍";
         Text[ arabic ] = " ";
         Text[ greek ] = " ";
-        Text[ korean ] = "인쇄 영역";
+        Text[ korean ] = "인쇄 범위";
         Text[ turkish ] = "Yazdrma aral";
         Text[ catalan ] = "rea d'impressi";
         Text[ thai ] = "ช่วงการพิมพ์";
@@ -518,7 +518,7 @@ ModelessDialog RID_SCDLG_AREAS
         Text [ NORWEGIAN ] = "Columns to repeat at left" ;
         Text [ DANISH ] = "Gentagelses~kolonne" ;
         Text [ ENGLISH_US ] = "Columns to repeat" ;
-        Text [ SPANISH ] = "~Columna a repetir" ;
+        Text [ SPANISH ] = "~Columna que repetir" ;
         Text [ FINNISH ] = "Toista sarake" ;
         Text [ FRENCH ] = "~Colonne  rpter" ;
         Text [ ITALIAN ] = "Colonna da ripetere" ;
@@ -716,7 +716,7 @@ ModelessDialog RID_SCDLG_AREAS
     Text[ chinese_traditional ] = "編輯列印範圍";
     Text[ arabic ] = "  ";
     Text[ greek ] = "  ";
-    Text[ korean ] = "인쇄 영역 편집";
+    Text[ korean ] = "인쇄 범위 편집";
     Text[ turkish ] = "Yazdrma aralklarn dzenle";
     Text[ catalan ] = "Edita les rees d'impressi";
     Text[ finnish ] = "Muuta tulostusalueita";
@@ -754,7 +754,7 @@ TabPage RID_SCPAGE_TABLE
         Text[ chinese_traditional ] = "欄和列標題(~C)";
         Text[ arabic ] = "  ";
         Text[ greek ] = " /";
-        Text[ korean ] = "행과 열 머리글(~C)";
+        Text[ korean ] = "열 머리글/행 머리글(~C)";
         Text[ turkish ] = "Satr ve stun ~balklar";
         Text[ catalan ] = "Capaleres de ~columnes i files";
         Text[ thai ] = "ส่วนหัว~คอลัมน์และแถว";
@@ -784,7 +784,7 @@ TabPage RID_SCPAGE_TABLE
         Text[ chinese_traditional ] = "工作表網格(~G)";
         Text[ arabic ] = " ";
         Text[ greek ] = "~ ";
-        Text[ korean ] = "눈금선(~G)";
+        Text[ korean ] = "표의 눈금선(~G)";
         Text[ turkish ] = "~Klavuz izgiler";
         Text[ catalan ] = "~Graella";
         Text[ thai ] = "เ~ส้นตาราง";
@@ -838,13 +838,13 @@ TabPage RID_SCPAGE_TABLE
         Text [ ENGLISH_US ] = "~Objects/graphics" ;
         TabStop = TRUE ;
         Text[ chinese_simplified ] = "对象/图形(~O)";
-        Text[ russian ] = "/ ";
+        Text[ russian ] = "/~ ";
         Text[ polish ] = "Obiekty/~Grafiki";
         Text[ japanese ] = "オブジェクトと図(~O)";
         Text[ chinese_traditional ] = "物件/圖形(~O)";
         Text[ arabic ] = "/";
         Text[ greek ] = "/";
-        Text[ korean ] = "개체/그래픽(~O)";
+        Text[ korean ] = "개체/그림(~O)";
         Text[ turkish ] = "~Nesne/grafikler";
         Text[ catalan ] = "~Objectes/grfics";
         Text[ thai ] = "~วัตถุ/กราฟิค";
@@ -898,7 +898,7 @@ TabPage RID_SCPAGE_TABLE
         Text [ ENGLISH_US ] = "~Drawing objects" ;
         TabStop = TRUE ;
         Text[ chinese_simplified ] = "绘图对象(~D)";
-        Text[ russian ] = "";
+        Text[ russian ] = "~";
         Text[ polish ] = "Obiekty g~raficzne";
         Text[ japanese ] = "図形描画オブジェクト(~D)";
         Text[ chinese_traditional ] = "繪圖物件(~D)";
@@ -1032,7 +1032,7 @@ TabPage RID_SCPAGE_TABLE
     {
         Pos = MAP_APPFONT ( 12 , 28 ) ;
         Size = MAP_APPFONT ( 142 , 10 ) ;
-        Text = "Von Lin~ks-nach-rechts, dann nach unten" ;
+        Text = "Von lin~ks nach rechts, dann nach unten" ;
         Text [ ENGLISH ] = "Left to rig~ht, then to bottom" ;
         Text [ norwegian ] = "Left to rig~ht" ;
         Text [ italian ] = "Da sinistra a d~estra, poi in basso" ;
@@ -1040,7 +1040,7 @@ TabPage RID_SCPAGE_TABLE
         Text [ portuguese ] = "Da esquerda para a di~reita, depois para baixo" ;
         Text [ finnish ] = "~Vasemmalta oikealle, sitten alas" ;
         Text [ danish ] = "Fra ~venstre mod hjre, derefter nedad" ;
-        Text [ french ] = "De gauche  dro~ite, puis vers le bas" ;
+        Text [ french ] = "De gauche  droite, puis vers le bas" ;
         Text [ swedish ] = "Frn vnster till hg~er, sedan nedt" ;
         Text [ dutch ] = "Van ~links naar rechts, dan naar beneden" ;
         Text [ spanish ] = "De ~izquierda a derecha, despus hacia abajo" ;
@@ -1054,7 +1054,7 @@ TabPage RID_SCPAGE_TABLE
         Text[ arabic ] = "   ";
         Text[ language_user1 ] = "; - - - -";
         Text[ greek ] = "    ,     ~";
-        Text[ korean ] = "왼쪽에서 오른쪽으로, 그 후에 아래로";
+        Text[ korean ] = "왼쪽에서 오른쪽으로, 그 다음 아래로";
         Text[ turkish ] = "S~oldan saa";
         Text[ catalan ] = "D'~esquerra a dreta";
         Text[ thai ] = "ซ้า~ยไปขวา";
@@ -1103,7 +1103,7 @@ TabPage RID_SCPAGE_TABLE
         Text [ english_us ] = "First ~page number" ;
         TabStop = TRUE ;
         Text[ chinese_simplified ] = "第一个页码(~P)";
-        Text[ russian ] = "  ";
+        Text[ russian ] = "  ";
         Text[ polish ] = "Pierwszy nu~mer strony";
         Text[ japanese ] = "最初のページ番号(~P)";
         Text[ chinese_traditional ] = "第一個頁碼(~P)";
@@ -1262,7 +1262,7 @@ TabPage RID_SCPAGE_TABLE
         Text[ chinese_traditional ] = "顯示比例";
         Text[ arabic ] = "";
         Text[ greek ] = "";
-        Text[ korean ] = "배율";
+        Text[ korean ] = "배율 조정";
         Text[ turkish ] = "lek";
         Text[ catalan ] = "Escala";
         Text[ finnish ] = "Skaalaa";
@@ -1275,12 +1275,3 @@ TabPage RID_SCPAGE_TABLE
 
 
 
-
-
-
-
-
-
-
-
-
diff --git a/sc/source/ui/pagedlg/tphf.src b/sc/source/ui/pagedlg/tphf.src
index 4bebd342277b..2ca4783faf95 100644
--- a/sc/source/ui/pagedlg/tphf.src
+++ b/sc/source/ui/pagedlg/tphf.src
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: tphf.src,v $
  *
- *  $Revision: 1.15 $
+ *  $Revision: 1.16 $
  *
- *  last change: $Author: rt $ $Date: 2001-11-16 22:53:19 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:24 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -72,7 +72,7 @@ PushButton RID_SCBTN_HFEDIT
     Text [ italian ] = "Modifica..." ;
     Text [ portuguese_brazilian ] = "Edi~tar..." ;
     Text [ portuguese ] = "Edi~tar..." ;
-    Text [ finnish ] = "~Muokkaa" ;
+    Text [ finnish ] = "~Muuta..." ;
     Text [ danish ] = "Rediger..." ;
     Text [ french ] = "~diter..." ;
     Text [ swedish ] = "Redige~ra..." ;
@@ -86,10 +86,11 @@ PushButton RID_SCBTN_HFEDIT
     Text[ chinese_traditional ] = "編輯(~E)...";
     Text[ arabic ] = "...";
     Text[ greek ] = "...";
-    Text[ korean ] = "편집.(~E)...";
+    Text[ korean ] = "편집(~E)...";
     Text[ turkish ] = "~Dzenle...";
     Text[ language_user1 ] = " ";
-    Text[ catalan ] = "~Editar...";
+    Text[ catalan ] = "~Edita...";
+    Text[ thai ] = "แ~ก้ไข...";
 };
 
 
@@ -101,3 +102,6 @@ PushButton RID_SCBTN_HFEDIT
 
 
 
+
+
+
diff --git a/sc/source/ui/src/attrdlg.src b/sc/source/ui/src/attrdlg.src
index 8b1cbff1b70d..9a503ae77200 100644
--- a/sc/source/ui/src/attrdlg.src
+++ b/sc/source/ui/src/attrdlg.src
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: attrdlg.src,v $
  *
- *  $Revision: 1.44 $
+ *  $Revision: 1.45 $
  *
- *  last change: $Author: kz $ $Date: 2002-11-27 16:42:49 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:25 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -73,15 +73,15 @@ TabDialog RID_SCDLG_ATTR
     Text = "Zellen formatieren" ;
     Text [ ENGLISH ] = "Cell Attributes" ;
     Text [ norwegian ] = "Cell Attributes" ;
-    Text [ italian ] = "Attributi cella" ;
+    Text [ italian ] = "Formatta celle" ;
     Text [ portuguese_brazilian ] = "Atributos da C?lula" ;
     Text [ portuguese ] = "Atributos de clula" ;
     Text [ finnish ] = "Solun mritteet" ;
     Text [ danish ] = "Celleattributter" ;
-    Text [ french ] = "Attributs de cellule" ;
-    Text [ swedish ] = "Cellattribut" ;
+    Text [ french ] = "Formatage des cellules" ;
+    Text [ swedish ] = "Formatera celler" ;
     Text [ dutch ] = "Celattributen" ;
-    Text [ spanish ] = "Atributos de celda" ;
+    Text [ spanish ] = "Formateado de celdas" ;
     Text [ english_us ] = "Format Cells" ;
     Moveable = TRUE ;
     Closeable = FALSE ;
@@ -253,7 +253,7 @@ TabDialog RID_SCDLG_ATTR
                 Text [ french ] = "Bordure" ;
                 Text [ swedish ] = "Inramning" ;
                 Text [ dutch ] = "Omranding" ;
-                Text [ spanish ] = "Borde" ;
+                Text [ spanish ] = "Bordes" ;
                 Text [ english_us ] = "Borders" ;
                 Text[ chinese_simplified ] = "边框";
                 Text[ russian ] = "";
@@ -262,7 +262,7 @@ TabDialog RID_SCDLG_ATTR
                 Text[ chinese_traditional ] = "邊框";
                 Text[ arabic ] = "";
                 Text[ greek ] = "";
-                Text[ korean ] = "외곽선";
+                Text[ korean ] = "테두리";
                 Text[ turkish ] = "Kenarlk";
                 Text[ language_user1 ] = " ";
                 Text[ catalan ] = "Vores";
@@ -333,11 +333,11 @@ TabDialog RID_SCDLG_ATTR
     Text[ chinese_simplified ] = "单元格属性";
     Text[ russian ] = " ";
     Text[ polish ] = "Atrybuty komrek";
-    Text[ japanese ] = "セルの属性";
-    Text[ chinese_traditional ] = "儲存格屬性";
+    Text[ japanese ] = "セルの書式設定";
+    Text[ chinese_traditional ] = "格式化儲存格";
     Text[ arabic ] = " ";
     Text[ greek ] = " ";
-    Text[ korean ] = "셀 속성";
+    Text[ korean ] = "셀 서식 설정";
     Text[ turkish ] = "Hcre znitelikleri";
     Text[ language_user1 ] = " ";
     Text[ catalan ] = "Atributs de la cel.la";
@@ -379,7 +379,7 @@ TabPage RID_SCPAGE_PROTECTION
         Text[ chinese_traditional ] = "鎖定(~P)";
         Text[ arabic ] = "";
         Text[ greek ] = "";
-        Text[ korean ] = "장평(~P)";
+        Text[ korean ] = "보호함(~P)";
         Text[ turkish ] = "~Koruma altnda";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "~Protegit";
@@ -435,13 +435,13 @@ TabPage RID_SCPAGE_PROTECTION
         Text [ english_us ] = "Hide ~all" ;
         TabStop = TRUE ;
         Text[ chinese_simplified ] = "全部隐入(~A)";
-        Text[ russian ] = " ";
+        Text[ russian ] = "~ ";
         Text[ polish ] = "Ukryj wszystko";
         Text[ japanese ] = "すべて表示しない(~A)";
         Text[ chinese_traditional ] = "全部隱入(~A)";
         Text[ arabic ] = " ";
         Text[ greek ] = "~ ";
-        Text[ korean ] = "전부 숨기기(~A)";
+        Text[ korean ] = "모두 숨기기(~A)";
         Text[ turkish ] = "~Tmn gizle";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Oculta-ho ~tot";
@@ -466,16 +466,16 @@ TabPage RID_SCPAGE_PROTECTION
         Text [ french ] = "Pour activer la protection d'une cellule, vous devez protger la feuille active.\n\nChoisissez 'Protection' dans le menu 'Outils' puis la commande 'Feuille'." ;
         Text [ swedish ] = "Cellskyddet r bara verksamt om den aktiva tabellen r skyddad.\n\nVlj 'Skydda dokument' p menyn 'Verktyg' och drefter 'Tabell' fr att skydda tabellen." ;
         Text [ dutch ] = "De celbeveiliging functioneert alleen als het actieve werkblad beveiligd is.\n\nKies eerst in menu 'Extra' de optie 'Document beveiligen' en vervolgens de optie 'Werkblad'." ;
-        Text [ spanish ] = "La proteccin de celdas ser efectiva solamente si la hoja activa est protegida.\n\nEn 'Herramientas' seleccione el comando 'Proteger documento' y a continuacin 'Hoja de clculo'." ;
+        Text [ spanish ] = "La proteccin de celdas ser efectiva solamente si la hoja activa est protegida.\n\nEn 'Herramientas' seleccione la orden 'Proteger documento' y a continuacin 'Hoja de clculo'." ;
         Text [ english_us ] = "Cell protection is only effective after the current sheet has been protected. \n\nSelect 'Protect Document' from the 'Tools' menu, and specify 'Sheet'." ;
         Text[ chinese_simplified ] = "只有在使用保护工作表后,单元格才会受到保护。\n\n请点击菜单命令\"工具\",\"保护文档\",\"工作表\"。";
-        Text[ russian ] = "        .\n\n      ''  ' ',    ''.";
+        Text[ russian ] = "        .\n\n      ''  '  ',    ''.";
         Text[ polish ] = "Ochrona komrek aktywna bdzie dopiero po zabezpieczeniu aktualnego arkusza.\n\nNaley wybra w tym celu z menu 'Narzdzia' polecenie 'Chro dokument', a nastpnie polecenie 'Arkusz'.";
         Text[ japanese ] = "セルの保護は現在の表が保護されている時のみ有効です。\n\n表を保護するには、メニューでツール→ドキュメントの保護→表を選択します。";
         Text[ chinese_traditional ] = "只有在啟動保護工作表後,儲存格才會受到保護。\n\n請按一下這個功能表指令:<保護文件>,<工作表>。";
         Text[ arabic ] = "    ɡ      .\n\n     ' '   ''  ?";
         Text[ greek ] = "             .\n\n       ''   ' '      ''.";
-        Text[ korean ] = "셀 보호는 현재의 시트가 보호되었을 때만 유효합니다.  \n\n'도구' 메뉴에서 '문서 보호'를 선택한 다음, '시트'를 지정하십시오.";
+        Text[ korean ] = "셀 보호는 현재 활성 중인 시트가 보호되었을 때만 유효합니다. \n\n[도구] 메뉴에서 [문서 보호]를 선택한 후 [시트]를 지정하십시오.";
         Text[ turkish ] = "Hcre korumas, yalnzca aktif tablo da korunmusa etkindir.\n\nBunun iin 'Aralar' mnsnden nce 'belgeyi koru' sonra 'Tablo' komutunu sein.";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "La protecci de cel.les noms s efectiva desprs d'haver protegit el full actual. \n\nSeleccioneu 'Protegeix el document' del men 'Eines' i especifiqueu 'Full'.";
@@ -567,7 +567,7 @@ TabPage RID_SCPAGE_PROTECTION
         Text[ chinese_traditional ] = "目前選取的儲存格不會被列印出來。";
         Text[ arabic ] = "      .";
         Text[ greek ] = "         .";
-        Text[ korean ] = "선택된 셀은 인쇄에서 제외될 것입니다.";
+        Text[ korean ] = "선택된 셀은 인쇄되지 않습니다.";
         Text[ turkish ] = "Yrrlkteki seimin hcreleri yazdrmaya dahil olmayacak.";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "En imprimir, les cel.les seleccionades s'ometran.";
@@ -619,4 +619,9 @@ TabPage RID_SCPAGE_PROTECTION
 
 
 
+
+
+
+
+
 
diff --git a/sc/source/ui/src/autofmt.src b/sc/source/ui/src/autofmt.src
index bb44d841a029..3efea6d4fe4d 100644
--- a/sc/source/ui/src/autofmt.src
+++ b/sc/source/ui/src/autofmt.src
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: autofmt.src,v $
  *
- *  $Revision: 1.33 $
+ *  $Revision: 1.34 $
  *
- *  last change: $Author: kz $ $Date: 2001-11-16 22:54:13 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:25 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -80,7 +80,7 @@ ModalDialog RID_SCDLG_AUTOFORMAT
     Text [ french ] = "AutoFormat" ;
     Text [ swedish ] = "Autoformat" ;
     Text [ dutch ] = "AutoOpmaak" ;
-    Text [ spanish ] = "AutoFormato" ;
+    Text [ spanish ] = "Formateado automtico" ;
     Text [ english_us ] = "AutoFormat" ;
     Moveable = TRUE ;
     Closeable = FALSE ;
@@ -101,10 +101,10 @@ ModalDialog RID_SCDLG_AUTOFORMAT
         Text [ italian ] = "Formato" ;
         Text [ portuguese_brazilian ] = "~Formato" ;
         Text [ portuguese ] = "Fo~rmato" ;
-        Text [ finnish ] = "~Muotoile" ;
-        Text [ danish ] = "Forma~ter" ;
+        Text [ finnish ] = "Muotoil~e" ;
+        Text [ danish ] = "Form~ater" ;
         Text [ french ] = "Forma~t" ;
-        Text [ swedish ] = "~Format" ;
+        Text [ swedish ] = "Form~at" ;
         Text [ dutch ] = "~Opmaak" ;
         Text [ spanish ] = "~Formato" ;
         Text [ english_us ] = "F~ormat" ;
@@ -118,7 +118,8 @@ ModalDialog RID_SCDLG_AUTOFORMAT
         Text[ korean ] = "서식(~O)";
         Text[ turkish ] = "Format";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "~Formato";
+        Text[ catalan ] = "~Format";
+        Text[ thai ] = "~รูปแบบ";
     };
     Window WND_PREVIEW
     {
@@ -147,16 +148,17 @@ ModalDialog RID_SCDLG_AUTOFORMAT
         Text [ english_us ] = "A~utoFit width and height" ;
         TabStop = TRUE ;
         Text[ chinese_simplified ] = "调整宽度/高度(~U)";
-        Text[ russian ] = " /";
+        Text[ russian ] = "   ";
         Text[ polish ] = "Dostosuj szeroko/wysoko";
         Text[ japanese ] = "幅と高さの調整(~U)";
         Text[ chinese_traditional ] = "調整寬度/高度(~U)";
         Text[ arabic ] = "  ";
         Text[ greek ] = " /";
-        Text[ korean ] = "너비와 높이 조절(~U)";
+        Text[ korean ] = "너비 및 높이 자동 맞춤(~U)";
         Text[ turkish ] = "Genilik/ykseklii ayarla";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Ajustar anc~ho/alto";
+        Text[ catalan ] = "Aj~usta automticament l'amplada i l'alada";
+        Text[ thai ] = "ความกว้างและความสูงพอดีอั~ตโนมัติ";
     };
     CheckBox BTN_BORDER
     {
@@ -174,7 +176,7 @@ ModalDialog RID_SCDLG_AUTOFORMAT
         Text [ french ] = "~Bordure" ;
         Text [ swedish ] = "~Inramning" ;
         Text [ dutch ] = "~Omranding" ;
-        Text [ spanish ] = "~Borde" ;
+        Text [ spanish ] = "~Bordes" ;
         Text [ english_us ] = "~Borders" ;
         TabStop = TRUE ;
         Text[ chinese_simplified ] = "边框(~B)";
@@ -184,10 +186,11 @@ ModalDialog RID_SCDLG_AUTOFORMAT
         Text[ chinese_traditional ] = "邊框(~B)";
         Text[ arabic ] = "";
         Text[ greek ] = "";
-        Text[ korean ] = "외곽선(~B)";
+        Text[ korean ] = "테두리(~B)";
         Text[ turkish ] = "~Kenarlk";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "~Borde";
+        Text[ catalan ] = "~Vores";
+        Text[ thai ] = "~เส้นขอบ";
     };
     CheckBox BTN_FONT
     {
@@ -202,7 +205,7 @@ ModalDialog RID_SCDLG_AUTOFORMAT
         Text [ portuguese ] = "~Tipo de letra" ;
         Text [ finnish ] = "~Fontti" ;
         Text [ danish ] = "Skrifttype" ;
-        Text [ french ] = "~Police" ;
+        Text [ french ] = "Police" ;
         Text [ swedish ] = "Tecken~snitt" ;
         Text [ dutch ] = "~Lettertype" ;
         Text [ spanish ] = "Fuen~te" ;
@@ -211,14 +214,15 @@ ModalDialog RID_SCDLG_AUTOFORMAT
         Text[ chinese_simplified ] = "字体(~O)";
         Text[ russian ] = "";
         Text[ polish ] = "Czcionka";
-        Text[ japanese ] = "フォントの種類(~O)";
+        Text[ japanese ] = "フォントの種類(~O)";
         Text[ chinese_traditional ] = "字型(~O)";
         Text[ arabic ] = " ";
         Text[ greek ] = "";
         Text[ korean ] = "글꼴(~O)";
         Text[ turkish ] = "~Yaztipi";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Fuen~te";
+        Text[ catalan ] = "T~ipus de lletra";
+        Text[ thai ] = "ตัว~อักษร";
     };
     CheckBox BTN_PATTERN
     {
@@ -240,7 +244,7 @@ ModalDialog RID_SCDLG_AUTOFORMAT
         Text [ english_us ] = "~Pattern" ;
         TabStop = TRUE ;
         Text[ chinese_simplified ] = "图案(~P)";
-        Text[ russian ] = "~";
+        Text[ russian ] = "~";
         Text[ polish ] = "Dese";
         Text[ japanese ] = "背景(~P)";
         Text[ chinese_traditional ] = "圖案(~P)";
@@ -249,7 +253,8 @@ ModalDialog RID_SCDLG_AUTOFORMAT
         Text[ korean ] = "패턴(~P)";
         Text[ turkish ] = "~rnek";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "~Modelo";
+        Text[ catalan ] = "~Patr";
+        Text[ thai ] = "~ลวดลาย";
     };
     CheckBox BTN_ALIGNMENT
     {
@@ -259,12 +264,12 @@ ModalDialog RID_SCDLG_AUTOFORMAT
         Text = "~Ausrichtung" ;
         Text [ ENGLISH ] = "Orien~tation" ;
         Text [ norwegian ] = "Orien~tation" ;
-        Text [ italian ] = "Orien~tamento" ;
+        Text [ italian ] = "~Orientamento" ;
         Text [ portuguese_brazilian ] = "Orien~ta??o" ;
         Text [ portuguese ] = "~Alinhamento" ;
         Text [ finnish ] = "~Tasaus" ;
         Text [ danish ] = "Justering" ;
-        Text [ french ] = "~Alignement" ;
+        Text [ french ] = "Alignement" ;
         Text [ swedish ] = "~Justering" ;
         Text [ dutch ] = "~Positie" ;
         Text [ spanish ] = "A~lineacin" ;
@@ -280,7 +285,8 @@ ModalDialog RID_SCDLG_AUTOFORMAT
         Text[ korean ] = "맞춤(~T)";
         Text[ turkish ] = "~Hizalama";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "A~lineacin";
+        Text[ catalan ] = "A~lineaci";
+        Text[ thai ] = "จัดตำแ~หน่ง";
     };
     CheckBox BTN_NUMFORMAT
     {
@@ -293,12 +299,12 @@ ModalDialog RID_SCDLG_AUTOFORMAT
         Text [ italian ] = "Formato ~numero" ;
         Text [ portuguese_brazilian ] = "~Formatodon?ero" ;
         Text [ portuguese ] = "~Formato numrico" ;
-        Text [ finnish ] = "~Numeromuoto" ;
+        Text [ finnish ] = "~Lukumuoto" ;
         Text [ danish ] = "Talformat" ;
         Text [ french ] = "~Format numrique" ;
         Text [ swedish ] = "Talf~ormat" ;
         Text [ dutch ] = "~Getalnotatie" ;
-        Text [ spanish ] = "~Formato de nmeros" ;
+        Text [ spanish ] = "Formato nu~mrico" ;
         Text [ english_us ] = "~Number format" ;
         TabStop = TRUE ;
         Text[ chinese_simplified ] = "数字格式(~N)";
@@ -308,10 +314,11 @@ ModalDialog RID_SCDLG_AUTOFORMAT
         Text[ chinese_traditional ] = "數字格式(~N)";
         Text[ arabic ] = " ";
         Text[ greek ] = " ";
-        Text[ korean ] = "숫자 포맷(~N)";
+        Text[ korean ] = "숫자 표기 형식(~N)";
         Text[ turkish ] = "Say f~ormat";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "~Formato de nmeros";
+        Text[ catalan ] = "Format dels ~nombres";
+        Text[ thai ] = "รูปแบบ~ตัวเลข";
     };
     FixedLine FL_FORMATTING
     {
@@ -328,7 +335,7 @@ ModalDialog RID_SCDLG_AUTOFORMAT
         Text [ danish ] = "Formatering" ;
         Text [ french ] = "Formatage" ;
         Text [ swedish ] = "Formatering" ;
-        Text [ dutch ] = "Opmaken" ;
+        Text [ dutch ] = "Opmaak" ;
         Text [ spanish ] = "Formato" ;
         Text [ english_us ] = "Formatting" ;
         Text[ chinese_simplified ] = "格式化";
@@ -338,10 +345,11 @@ ModalDialog RID_SCDLG_AUTOFORMAT
         Text[ chinese_traditional ] = "格式化";
         Text[ arabic ] = "";
         Text[ greek ] = "";
-        Text[ korean ] = "포맷팅";
+        Text[ korean ] = "서식 설정";
         Text[ turkish ] = "Formatlama";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Formato";
+        Text[ catalan ] = "Format";
+        Text[ thai ] = "จัดรูปแบบ";
     };
     OKButton BTN_OK
     {
@@ -375,7 +383,7 @@ ModalDialog RID_SCDLG_AUTOFORMAT
         Text [ italian ] = "~Inserisci..." ;
         Text [ portuguese_brazilian ] = "~Add..." ;
         Text [ portuguese ] = "~Adicionar..." ;
-        Text [ finnish ] = "~Lis??..." ;
+        Text [ finnish ] = "~Lis..." ;
         Text [ danish ] = "Tilfj..." ;
         Text [ french ] = "A~jouter..." ;
         Text [ swedish ] = "Lgg ti~ll..." ;
@@ -397,7 +405,8 @@ ModalDialog RID_SCDLG_AUTOFORMAT
         Text[ korean ] = "추가(~A)...";
         Text[ turkish ] = "~Ekle...";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "~Aadir...";
+        Text[ catalan ] = "~Afegeix...";
+        Text[ thai ] = "เ~พิ่ม...";
     };
     PushButton BTN_REMOVE
     {
@@ -412,10 +421,10 @@ ModalDialog RID_SCDLG_AUTOFORMAT
         Text [ portuguese ] = "E~liminar" ;
         Text [ finnish ] = "~Poista" ;
         Text [ danish ] = "Slet" ;
-        Text [ french ] = "~Supprimer" ;
+        Text [ french ] = "Supprimer" ;
         Text [ swedish ] = "~Radera" ;
         Text [ dutch ] = "~Wissen" ;
-        Text [ spanish ] = "~Eliminar" ;
+        Text [ spanish ] = "~Borrar" ;
         Text [ english_us ] = "~Delete" ;
         TabStop = TRUE ;
         Text[ chinese_simplified ] = "删除(~D)";
@@ -428,7 +437,8 @@ ModalDialog RID_SCDLG_AUTOFORMAT
         Text[ korean ] = "삭제(~D)";
         Text[ turkish ] = "~Sil";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "~Eliminar";
+        Text[ catalan ] = "~Suprimeix";
+        Text[ thai ] = "~ลบ";
     };
 
     PushButton BTN_RENAME
@@ -458,8 +468,9 @@ ModalDialog RID_SCDLG_AUTOFORMAT
         Text[ korean ] = "이름 바꾸기(~R)";
         Text[ turkish ] = "~Yeniden adlandr";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Cambiar ~nombre";
-        Text[ finnish ] = "~Nime? uudelleen";
+        Text[ catalan ] = "~Reanomena";
+        Text[ finnish ] = "~Nime uudelleen";
+        Text[ thai ] = "เ~ปลี่ยนชื่อ";
     };
 
     HelpButton BTN_HELP
@@ -479,24 +490,25 @@ ModalDialog RID_SCDLG_AUTOFORMAT
         Text [ italian ] = "Aggiungi formattazione automatica" ;
         Text [ portuguese_brazilian ] = "Acrescentar Formato autom?tico" ;
         Text [ portuguese ] = "Adicionar AutoFormato" ;
-        Text [ finnish ] = "Lis?? automaattinen muotoilu" ;
+        Text [ finnish ] = "Lis automaattinen muotoilu" ;
         Text [ danish ] = "Tilfj AutoFormat" ;
         Text [ french ] = "Ajouter un AutoFormat" ;
         Text [ swedish ] = "Lgg till autoformat" ;
         Text [ dutch ] = "AutoOpmaak toevoegen" ;
-        Text [ spanish ] = "Aadir AutoFormato" ;
+        Text [ spanish ] = "Aadir Formateado automtico" ;
         Text [ english_us ] = "Add AutoFormat" ;
         Text[ chinese_simplified ] = "新增自动格式";
         Text[ russian ] = " ";
         Text[ polish ] = "Dodaj Autoformat";
-        Text[ japanese ] = "オートフォーマットの追加";
+        Text[ japanese ] = "オートフォーマットの追加";
         Text[ chinese_traditional ] = "新增自動格式";
         Text[ arabic ] = "  ";
         Text[ greek ] = " ";
-        Text[ korean ] = "자동서식 추가";
+        Text[ korean ] = "자동 서식 추가";
         Text[ turkish ] = "Otomatik formatlama ekle";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Aadir AutoFormato";
+        Text[ catalan ] = "Afegeix el formatatge automtic";
+        Text[ thai ] = "เพิ่มรูปแบบอัตโนมัติ";
     };
 
     String STR_RENAME_TITLE
@@ -509,21 +521,22 @@ ModalDialog RID_SCDLG_AUTOFORMAT
         Text [ swedish ] = "Byt namn p autoformat" ;
         Text [ danish ] = "Omdb AutoFormat" ;
         Text [ italian ] = "Rinomina formattazione automatica" ;
-        Text [ spanish ] = "Cambiar nombre del AutoFormato" ;
+        Text [ spanish ] = "Cambiar nombre del Formateado automtico" ;
         Text [ french ] = "Renommer l'AutoFormat" ;
         Text [ dutch ] = "AutoOpmaak nieuwe naam geven" ;
         Text[ chinese_simplified ] = "重命名自动格式";
         Text[ russian ] = " ";
         Text[ polish ] = "Zmie nazw Autoformatu";
-        Text[ japanese ] = "オートフォーマットの名前の変更";
+        Text[ japanese ] = "オートフォーマットの名前の変更";
         Text[ chinese_traditional ] = "重新命名自動格式";
         Text[ arabic ] = "   ";
         Text[ greek ] = " ";
-        Text[ korean ] = "자동서식 이름 바꾸기";
+        Text[ korean ] = "자동 서식 이름 바꾸기";
         Text[ turkish ] = "Otom. formatlamay yen. adlandr";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Cambiar nombre del AutoFormato";
-        Text[ finnish ] = "Nime? automaattinen muotoilu uudelleen";
+        Text[ catalan ] = "Reanomena el formatatge automtic";
+        Text[ finnish ] = "Nime automaattinen muotoilu uudelleen";
+        Text[ thai ] = "เปลี่ยนชื่อรูปแบบอัตโนมัติ";
     };
 
     String STR_ADD_LABEL
@@ -551,7 +564,8 @@ ModalDialog RID_SCDLG_AUTOFORMAT
         Text[ korean ] = "이름";
         Text[ turkish ] = "Ad";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Nombre";
+        Text[ catalan ] = "Nom";
+        Text[ thai ] = "ชื่อ";
     };
     String STR_DEL_TITLE
     {
@@ -567,19 +581,20 @@ ModalDialog RID_SCDLG_AUTOFORMAT
         Text [ french ] = "Supprimer l'AutoFormat" ;
         Text [ swedish ] = "Radera autoformat" ;
         Text [ dutch ] = "AutoOpmaak wissen" ;
-        Text [ spanish ] = "Eliminar AutoFormato" ;
+        Text [ spanish ] = "Borrar Formateado automtico" ;
         Text [ english_us ] = "Delete AutoFormat" ;
         Text[ chinese_simplified ] = "删除自动格式";
         Text[ russian ] = " ";
         Text[ polish ] = "Usu Autoformat";
-        Text[ japanese ] = "オートフォーマットの削除";
+        Text[ japanese ] = "オートフォーマットの削除";
         Text[ chinese_traditional ] = "刪除自動格式";
         Text[ arabic ] = "  ";
         Text[ greek ] = " ";
-        Text[ korean ] = "자동서식 삭제";
+        Text[ korean ] = "자동 서식 삭제";
         Text[ turkish ] = "Otomatik formatlamay sil";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Eliminar AutoFormato";
+        Text[ catalan ] = "Suprimeix el formatatge automtic";
+        Text[ thai ] = "ลบรูปแบบอัตโนมัติ";
     };
     String STR_DEL_MSG
     {
@@ -595,19 +610,20 @@ ModalDialog RID_SCDLG_AUTOFORMAT
         Text [ french ] = "Confirmez-vous la suppression de l'AutoFormat # ?" ;
         Text [ swedish ] = "Skall autoformatet # verkligen raderas?" ;
         Text [ dutch ] = "Wilt u AutoOpmaak # werkelijk verwijderen?" ;
-        Text [ spanish ] = "Desea realmente eliminar el AutoFormato #?" ;
+        Text [ spanish ] = "Desea realmente borrar el Formateado automtico #?" ;
         Text [ english_us ] = "Do you really want to delete the # AutoFomat?" ;
         Text[ chinese_simplified ] = "您真要删除自动格式 # ?";
         Text[ russian ] = "     #?";
         Text[ polish ] = "Czy na pewno usun Autoformat #?";
-        Text[ japanese ] = "オートフォーマット # を本当に削除しますか。";
+        Text[ japanese ] = "オートフォーマット # を本当に削除しますか。";
         Text[ chinese_traditional ] = "真要刪除自動格式 # ?";
         Text[ arabic ] = "      #";
         Text[ greek ] = "      #;";
-        Text[ korean ] = "# 자동서식을 정말로 삭제하시겠습니까?";
+        Text[ korean ] = "# 자동 서식을 정말로 삭제하겠습니까?";
         Text[ turkish ] = "Otomatik formatlama # gerekten silinsin mi?";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Desea realmente eliminar el AutoFormato #?";
+        Text[ catalan ] = "Segur que voleu suprimir el formatatge automtic #?";
+        Text[ thai ] = "คุณต้องการลบ # รูปแบบอัตโนมัติหรือไม่?";
     };
     String STR_BTN_CLOSE
     {
@@ -620,7 +636,7 @@ ModalDialog RID_SCDLG_AUTOFORMAT
         Text [ portuguese ] = "~Fechar" ;
         Text [ finnish ] = "~Sulje" ;
         Text [ danish ] = "Luk" ;
-        Text [ french ] = "~Fermer" ;
+        Text [ french ] = "Fermer" ;
         Text [ swedish ] = "St~ng" ;
         Text [ dutch ] = "~Sluiten" ;
         Text [ spanish ] = "~Cerrar" ;
@@ -635,7 +651,8 @@ ModalDialog RID_SCDLG_AUTOFORMAT
         Text[ korean ] = "닫기(~C)";
         Text[ turkish ] = "K~apat";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "~Cerrar";
+        Text[ catalan ] = "~Tanca";
+        Text[ thai ] = "~ปิด";
     };
     String STR_JAN
     {
@@ -662,7 +679,8 @@ ModalDialog RID_SCDLG_AUTOFORMAT
         Text[ korean ] = "1월";
         Text[ turkish ] = "Oca";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Ene";
+        Text[ catalan ] = "Gen.";
+        Text[ thai ] = "มกราคม";
     };
     String STR_FEB
     {
@@ -689,7 +707,8 @@ ModalDialog RID_SCDLG_AUTOFORMAT
         Text[ korean ] = "2월";
         Text[ turkish ] = "ub";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Feb";
+        Text[ catalan ] = "Feb.";
+        Text[ thai ] = "กุมภาพันธ์";
     };
     String STR_MAR
     {
@@ -717,7 +736,8 @@ ModalDialog RID_SCDLG_AUTOFORMAT
         Text[ korean ] = "3월";
         Text[ turkish ] = "Mar";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Mar";
+        Text[ catalan ] = "Mar";
+        Text[ thai ] = "มีนาคม";
     };
     String STR_NORTH
     {
@@ -744,7 +764,8 @@ ModalDialog RID_SCDLG_AUTOFORMAT
         Text[ korean ] = "북쪽";
         Text[ turkish ] = "Kuzey";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Norte";
+        Text[ catalan ] = "Nord";
+        Text[ thai ] = "เหนือ";
     };
     String STR_MID
     {
@@ -756,7 +777,7 @@ ModalDialog RID_SCDLG_AUTOFORMAT
         Text [ portuguese ] = "Centro" ;
         Text [ finnish ] = "Keski" ;
         Text [ danish ] = "Midte" ;
-        Text [ french ] = "Milieu" ;
+        Text [ french ] = "Centre" ;
         Text [ swedish ] = "Mitten" ;
         Text [ dutch ] = "Midden" ;
         Text [ spanish ] = "Centrado" ;
@@ -768,10 +789,11 @@ ModalDialog RID_SCDLG_AUTOFORMAT
         Text[ chinese_traditional ] = "中";
         Text[ arabic ] = "";
         Text[ greek ] = "";
-        Text[ korean ] = "중간";
+        Text[ korean ] = "가운데";
         Text[ turkish ] = "Orta";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Centro";
+        Text[ catalan ] = "Mig";
+        Text[ thai ] = "กลาง";
     };
     String STR_SOUTH
     {
@@ -782,7 +804,7 @@ ModalDialog RID_SCDLG_AUTOFORMAT
         Text [ italian ] = "Sud" ;
         Text [ portuguese_brazilian ] = "Sul" ;
         Text [ portuguese ] = "Sul" ;
-        Text [ finnish ] = "Etel?" ;
+        Text [ finnish ] = "Etel" ;
         Text [ danish ] = "Syd" ;
         Text [ french ] = "Sud" ;
         Text [ swedish ] = "Sder" ;
@@ -799,7 +821,8 @@ ModalDialog RID_SCDLG_AUTOFORMAT
         Text[ korean ] = "남쪽";
         Text[ turkish ] = "Gney";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Sur";
+        Text[ catalan ] = "Sud";
+        Text[ thai ] = "ใต้";
     };
     String STR_SUM
     {
@@ -809,7 +832,7 @@ ModalDialog RID_SCDLG_AUTOFORMAT
         Text [ italian ] = "Somma" ;
         Text [ portuguese_brazilian ] = "Soma" ;
         Text [ portuguese ] = "Soma" ;
-        Text [ finnish ] = "Yhteens?" ;
+        Text [ finnish ] = "Yhteens" ;
         Text [ danish ] = "Total" ;
         Text [ french ] = "Somme" ;
         Text [ swedish ] = "Summa" ;
@@ -826,19 +849,21 @@ ModalDialog RID_SCDLG_AUTOFORMAT
         Text[ korean ] = "합계";
         Text[ turkish ] = "Toplam";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Suma";
+        Text[ catalan ] = "Total";
+        Text[ thai ] = "รวม";
     };
     Text[ chinese_simplified ] = "自动格式";
     Text[ russian ] = "";
     Text[ polish ] = "Autoformat";
-    Text[ japanese ] = "オートフォーマット";
+    Text[ japanese ] = "オートフォーマット";
     Text[ chinese_traditional ] = "自動格式";
     Text[ arabic ] = " ";
     Text[ greek ] = "";
-    Text[ korean ] = "자동서식";
+    Text[ korean ] = "자동 서식";
     Text[ turkish ] = "Otomatik formatlama";
     Text[ language_user1 ] = " ";
-    Text[ catalan ] = "AutoFormato";
+    Text[ catalan ] = "Formatatge automtic";
+    Text[ thai ] = "รูปแบบอัตโนมัติ";
 };
 
 
@@ -853,5 +878,12 @@ ModalDialog RID_SCDLG_AUTOFORMAT
 
 
 
+
+
+
+
+
+
+
 
 
diff --git a/sc/source/ui/src/condfrmt.src b/sc/source/ui/src/condfrmt.src
index 6ef0d217a907..c7cf89c7058f 100644
--- a/sc/source/ui/src/condfrmt.src
+++ b/sc/source/ui/src/condfrmt.src
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: condfrmt.src,v $
  *
- *  $Revision: 1.20 $
+ *  $Revision: 1.21 $
  *
- *  last change: $Author: kz $ $Date: 2002-11-27 16:53:19 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:25 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -94,7 +94,7 @@ ModelessDialog RID_SCDLG_CONDFORMAT
         Text[ chinese_traditional ] = "條件 ~1";
         Text[ arabic ] = " 1";
         Text[ greek ] = " ~1";
-        Text[ korean ] = "전제 조건 1";
+        Text[ korean ] = "조건 1";
         Text[ turkish ] = "Koul 1";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Condici 1";
@@ -431,10 +431,10 @@ ModelessDialog RID_SCDLG_CONDFORMAT
         < "미만" ; Default ; > ;
         < "초과" ; Default ; > ;
         < "이하" ; Default ; > ;
-        < "이상" ; Default ; > ;
+        < "다음 값 이상" ; Default ; > ;
         < "지정한 조건과 다름" ; Default ; > ;
         < "다음 사이임" ; Default ; > ;
-        < "다음 사이가 아님" ; Default ; > ;
+        < "다음 값 사이에 없음" ; Default ; > ;
     };
     StringList [ turkish ] =
     {
@@ -553,7 +553,7 @@ ModelessDialog RID_SCDLG_CONDFORMAT
         Text[ chinese_traditional ] = "和";
         Text[ arabic ] = "";
         Text[ greek ] = "";
-        Text[ korean ] = "와";
+        Text[ korean ] = "및";
         Text[ turkish ] = "ve";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "i";
@@ -665,7 +665,7 @@ ModelessDialog RID_SCDLG_CONDFORMAT
         Text[ chinese_traditional ] = "條件 ~2";
         Text[ arabic ] = " 2";
         Text[ greek ] = " ~2";
-        Text[ korean ] = "전제 조건 2";
+        Text[ korean ] = "조건 2";
         Text[ turkish ] = "Koul 2";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Condici 2";
@@ -1002,10 +1002,10 @@ ModelessDialog RID_SCDLG_CONDFORMAT
         < "미만" ; Default ; > ;
         < "초과" ; Default ; > ;
         < "이하" ; Default ; > ;
-        < "크거나 지정한 조건과 같음" ; Default ; > ;
+        < "다음 값 이상" ; Default ; > ;
         < "지정한 조건과 다름" ; Default ; > ;
         < "다음 날짜 사이" ; Default ; > ;
-        < "지정한 값 이외" ; Default ; > ;
+        < "다음 값 사이에 없음" ; Default ; > ;
     };
     StringList [ turkish ] =
     {
@@ -1124,7 +1124,7 @@ ModelessDialog RID_SCDLG_CONDFORMAT
         Text[ chinese_traditional ] = "和";
         Text[ arabic ] = "";
         Text[ greek ] = "";
-        Text[ korean ] = "와";
+        Text[ korean ] = "및";
         Text[ turkish ] = "ve";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "i";
@@ -1236,7 +1236,7 @@ ModelessDialog RID_SCDLG_CONDFORMAT
         Text[ chinese_traditional ] = "條件 ~3";
         Text[ arabic ] = " 3";
         Text[ greek ] = " ~3";
-        Text[ korean ] = "전제 조건 3";
+        Text[ korean ] = "조건 3";
         Text[ turkish ] = "Koul 3";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Condici 3";
@@ -1573,10 +1573,10 @@ ModelessDialog RID_SCDLG_CONDFORMAT
         < "미만" ; Default ; > ;
         < "초과" ; Default ; > ;
         < "이하" ; Default ; > ;
-        < "크거나 지정한 조건과 같음" ; Default ; > ;
+        < "다음 값 이상" ; Default ; > ;
         < "지정한 조건과 다름" ; Default ; > ;
         < "다음 날짜 사이" ; Default ; > ;
-        < "지정한 범위 이외" ; Default ; > ;
+        < "다음 값 사이에 없음" ; Default ; > ;
     };
     StringList [ turkish ] =
     {
@@ -1695,7 +1695,7 @@ ModelessDialog RID_SCDLG_CONDFORMAT
         Text[ chinese_traditional ] = "和";
         Text[ arabic ] = "";
         Text[ greek ] = "";
-        Text[ korean ] = "와";
+        Text[ korean ] = "및";
         Text[ turkish ] = "ve";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "i";
@@ -1800,7 +1800,7 @@ ModelessDialog RID_SCDLG_CONDFORMAT
     };
     Text [ english_us ] = "Conditional Formatting" ;
     Text [ italian ] = "Formattazione condizionata" ;
-    Text [ spanish ] = "Formateado condicionado" ;
+    Text [ spanish ] = "Formateado condicional" ;
     Text [ french ] = "Formatage conditionnel" ;
     Text [ dutch ] = "Conditionele opmaak" ;
     Text [ swedish ] = "Villkorlig formatering" ;
@@ -1814,7 +1814,7 @@ ModelessDialog RID_SCDLG_CONDFORMAT
     Text[ chinese_traditional ] = "有條件的格式";
     Text[ arabic ] = " ";
     Text[ greek ] = "  ";
-    Text[ korean ] = "조건적 서식 지정";
+    Text[ korean ] = "조건부 서식";
     Text[ turkish ] = "Koullu formatlama";
     Text[ language_user1 ] = " ";
     Text[ catalan ] = "Formatatge condicional";
@@ -1834,3 +1834,8 @@ ModelessDialog RID_SCDLG_CONDFORMAT
 
 
 
+
+
+
+
+
diff --git a/sc/source/ui/src/crnrdlg.src b/sc/source/ui/src/crnrdlg.src
index a9c5e8312c75..74b1c31f5300 100644
--- a/sc/source/ui/src/crnrdlg.src
+++ b/sc/source/ui/src/crnrdlg.src
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: crnrdlg.src,v $
  *
- *  $Revision: 1.32 $
+ *  $Revision: 1.33 $
  *
- *  last change: $Author: kz $ $Date: 2002-11-27 16:52:13 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:26 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -95,7 +95,7 @@ ModelessDialog RID_SCDLG_COLROWNAMERANGES
         Text[ chinese_traditional ] = "區域";
         Text[ arabic ] = "";
         Text[ greek ] = "";
-        Text[ korean ] = "영역";
+        Text[ korean ] = "범위";
         Text[ turkish ] = "Aralk";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "rea";
@@ -159,8 +159,8 @@ ModelessDialog RID_SCDLG_COLROWNAMERANGES
         Text [ portuguese ] = "Contm ~cabealhos das colunas" ;
         Text [ finnish ] = "Sislt sarakeotsikot" ;
         Text [ danish ] = "indeholder kolonneoverskrifter" ;
-        Text [ french ] = "En-ttes de ~colonnes inclus" ;
-        Text [ swedish ] = "innehller ~kolumnhuvuden" ;
+        Text [ french ] = "Contient des tiquettes de colonne" ;
+        Text [ swedish ] = "Innehller ~kolumnetiketter" ;
         Text [ dutch ] = "~bevat kolomkoppen" ;
         Text [ spanish ] = "Contiene ttulos de ~columnas" ;
         Text [ english_us ] = "Contains ~column labels" ;
@@ -168,10 +168,10 @@ ModelessDialog RID_SCDLG_COLROWNAMERANGES
         Text[ russian ] = "  ";
         Text[ polish ] = "zawiera nagwki kolumn";
         Text[ japanese ] = "列の項目欄を含む(~C)";
-        Text[ chinese_traditional ] = "包含欄標題(~C)";
+        Text[ chinese_traditional ] = "包含欄標籤(~C)";
         Text[ arabic ] = "  ";
         Text[ greek ] = "  ";
-        Text[ korean ] = "열 머리글 포함(~C)";
+        Text[ korean ] = "열 레이블 포함(~C)";
         Text[ turkish ] = "Stun balklar ~ieriyor";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Cont capaleres de ~columna";
@@ -186,21 +186,21 @@ ModelessDialog RID_SCDLG_COLROWNAMERANGES
         Text [ ENGLISH ] = "contains row headers" ;
         Text [ english_us ] = "Contains ~row labels" ;
         Text [ dutch ] = "~bevat rijkoppen" ;
-        Text [ swedish ] = "innehller r~adhuvuden" ;
+        Text [ swedish ] = "Innehller r~adetiketter" ;
         Text [ danish ] = "indeholder rkkeoverskrifter" ;
         Text [ italian ] = "Include intestazioni righe" ;
         Text [ spanish ] = "Contiene ttulos de ~filas" ;
-        Text [ french ] = "En-ttes de ~lignes inclus" ;
+        Text [ french ] = "Contient des tiquettes de ligne" ;
         Text [ portuguese ] = "Contm ~cabealhos das linhas" ;
         Text [ portuguese_brazilian ] = "enth?lt ~Zeilenk?fe" ;
         Text[ chinese_simplified ] = "包含行标题(~R)";
         Text[ russian ] = "  ";
         Text[ polish ] = "zawiera nagwki wierszy";
         Text[ japanese ] = "行の項目欄を含む(~R)";
-        Text[ chinese_traditional ] = "包含列標題(~R)";
+        Text[ chinese_traditional ] = "包含列標籤(~R)";
         Text[ arabic ] = "  ";
         Text[ greek ] = "  ";
-        Text[ korean ] = "행 머리글 포함(~R)";
+        Text[ korean ] = "행 레이블 포함(~R)";
         Text[ turkish ] = "Satr balklar  i~eriyor";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Cont capaleres de ~fila";
@@ -229,7 +229,7 @@ ModelessDialog RID_SCDLG_COLROWNAMERANGES
         Text[ chinese_traditional ] = "用於資料區域(~D)";
         Text[ arabic ] = " ";
         Text[ greek ] = "  ~";
-        Text[ korean ] = "정의될 영역 설정(~D)";
+        Text[ korean ] = "데이터 범위(~D)";
         Text[ turkish ] = "Veri aral";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Per a l'rea de dades";
@@ -332,7 +332,7 @@ ModelessDialog RID_SCDLG_COLROWNAMERANGES
         Text [ french ] = "Supprimer" ;
         Text [ swedish ] = "~Radera" ;
         Text [ dutch ] = "~Wissen" ;
-        Text [ spanish ] = "~Eliminar" ;
+        Text [ spanish ] = "~Borrar" ;
         Text [ english_us ] = "~Delete" ;
         TabStop = TRUE ;
         Text[ chinese_simplified ] = "删除(~D)";
@@ -370,7 +370,7 @@ ModelessDialog RID_SCDLG_COLROWNAMERANGES
     Text[ chinese_traditional ] = "定義標題區域";
     Text[ arabic ] = "  ";
     Text[ greek ] = "  ";
-    Text[ korean ] = "라벨 영역 정의";
+    Text[ korean ] = "레이블 범위 지정";
     Text[ turkish ] = "Balk araln belirle";
     Text[ language_user1 ] = " ";
     Text[ catalan ] = "Defineix l'rea de l'etiqueta";
@@ -378,3 +378,5 @@ ModelessDialog RID_SCDLG_COLROWNAMERANGES
     Text[ thai ] = "กำหนดช่วงป้ายชื่อ";
 };
 
+
+
diff --git a/sc/source/ui/src/dbnamdlg.src b/sc/source/ui/src/dbnamdlg.src
index 40970dd21ae8..b8a731583ede 100644
--- a/sc/source/ui/src/dbnamdlg.src
+++ b/sc/source/ui/src/dbnamdlg.src
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: dbnamdlg.src,v $
  *
- *  $Revision: 1.33 $
+ *  $Revision: 1.34 $
  *
- *  last change: $Author: kz $ $Date: 2002-11-27 17:05:20 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:26 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -229,8 +229,8 @@ ModelessDialog RID_SCDLG_DBNAMES
         Text [ portuguese ] = "Incluir ~cabealhos de colunas" ;
         Text [ finnish ] = "~Sislt sarakeotsikot" ;
         Text [ danish ] = "Indeholder kolonneoverskrifter" ;
-        Text [ french ] = "En-ttes de colonnes inclus" ;
-        Text [ swedish ] = "Innehller ~kolumnhuvuden" ;
+        Text [ french ] = "Contient des tiquettes de colonne" ;
+        Text [ swedish ] = "Innehller ~kolumnetiketter" ;
         Text [ dutch ] = "bevat ~kolomkoppen" ;
         Text [ spanish ] = "Contiene ttulos de ~columnas" ;
         Text [ english_us ] = "Co~ntains column labels" ;
@@ -239,10 +239,10 @@ ModelessDialog RID_SCDLG_DBNAMES
         Text[ russian ] = "  ";
         Text[ polish ] = "zawiera nagwki kolumn";
         Text[ japanese ] = "列の項目欄を含む(~N)";
-        Text[ chinese_traditional ] = "包含欄標題(~N)";
+        Text[ chinese_traditional ] = "包含欄標籤(~N)";
         Text[ arabic ] = "  ";
         Text[ greek ] = "  ";
-        Text[ korean ] = "열 머리글 포함(~N)";
+        Text[ korean ] = "열 레이블 포함(~N)";
         Text[ turkish ] = "Stun balklar ~ieriyor";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Co~nt capaleres de columna";
@@ -262,7 +262,7 @@ ModelessDialog RID_SCDLG_DBNAMES
         Text [ swedish ] = "Infoga/radera ~celler" ;
         Text [ danish ] = "Indst/slet celler" ;
         Text [ italian ] = "Inserisci/elimina celle" ;
-        Text [ spanish ] = "~Insertar o eliminar celdas" ;
+        Text [ spanish ] = "~Insertar / borrar celdas" ;
         Text [ french ] = "~Insrer/supprimer des cellules" ;
         Text [ dutch ] = "~Cellen invoegen/wissen" ;
         Text[ chinese_simplified ] = "插入/删除单元格(~C)";
@@ -303,7 +303,7 @@ ModelessDialog RID_SCDLG_DBNAMES
         Text[ chinese_traditional ] = "保留格式(~F)";
         Text[ arabic ] = "  ";
         Text[ greek ] = " ~";
-        Text[ korean ] = "서식 지정 실행(~F)";
+        Text[ korean ] = "서식 설정 그대로 유지(~F)";
         Text[ turkish ] = "Formatlamay ~koru";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Conserva el ~formatatge";
@@ -364,7 +364,7 @@ ModelessDialog RID_SCDLG_DBNAMES
         Text[ chinese_traditional ] = "資料源:";
         Text[ arabic ] = ":";
         Text[ greek ] = ":";
-        Text[ korean ] = "소스:";
+        Text[ korean ] = "원본:";
         Text[ turkish ] = "Kaynak:";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Font:";
@@ -439,7 +439,7 @@ ModelessDialog RID_SCDLG_DBNAMES
         Text[ chinese_traditional ] = "新增(~A)";
         Text[ arabic ] = "";
         Text[ greek ] = "~";
-        Text[ korean ] = "삽입(~A)";
+        Text[ korean ] = "추가(~A)";
         Text[ turkish ] = "~Ekle";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "~Afegeix";
@@ -460,7 +460,7 @@ ModelessDialog RID_SCDLG_DBNAMES
         Text [ french ] = "Supprimer" ;
         Text [ swedish ] = "~Radera" ;
         Text [ dutch ] = "~Wissen" ;
-        Text [ spanish ] = "~Eliminar" ;
+        Text [ spanish ] = "~Borrar" ;
         Text [ english_us ] = "~Delete" ;
         TabStop = TRUE ;
         Text[ chinese_simplified ] = "删除(~D)";
@@ -540,7 +540,7 @@ ModelessDialog RID_SCDLG_DBNAMES
         Text[ chinese_traditional ] = "變更(~O)";
         Text[ arabic ] = "";
         Text[ greek ] = "";
-        Text[ korean ] = "수정(~O)";
+        Text[ korean ] = "변경(~O)";
         Text[ turkish ] = "~Deitir";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "M~odifica";
@@ -566,7 +566,7 @@ ModelessDialog RID_SCDLG_DBNAMES
         Text[ chinese_traditional ] = "無效的區域";
         Text[ arabic ] = "  ";
         Text[ greek ] = "  ";
-        Text[ korean ] = "유효하지 않은 범위";
+        Text[ korean ] = "잘못된 범위";
         Text[ turkish ] = "Geersiz aralk";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "L'rea no s vlida";
@@ -580,10 +580,15 @@ ModelessDialog RID_SCDLG_DBNAMES
     Text[ chinese_traditional ] = "定義資料庫區域";
     Text[ arabic ] = "   ";
     Text[ greek ] = "   ";
-    Text[ korean ] = "데이터베이스 영역 정의";
+    Text[ korean ] = "데이터베이스 범위 지정";
     Text[ turkish ] = "Veritaban araln belirle";
     Text[ language_user1 ] = " ";
     Text[ catalan ] = "Defineix l'rea de la base de dades";
     Text[ thai ] = "กำหนดช่วงฐานข้อมูล";
 };
 
+
+
+
+
+
diff --git a/sc/source/ui/src/filter.src b/sc/source/ui/src/filter.src
index d8a3b020feb1..3aa01a3a90c0 100644
--- a/sc/source/ui/src/filter.src
+++ b/sc/source/ui/src/filter.src
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: filter.src,v $
  *
- *  $Revision: 1.45 $
+ *  $Revision: 1.46 $
  *
- *  last change: $Author: kz $ $Date: 2002-12-09 11:42:37 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:26 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -311,7 +311,7 @@ ModelessDialog RID_SCDLG_FILTER
     };
     StringList [ korean ] =
     {
-            < "와" ; Default ; > ;
+            < "와(과)" ; Default ; > ;
         < "또는" ; Default ; > ;
     };
     StringList [ turkish ] =
@@ -444,7 +444,7 @@ ModelessDialog RID_SCDLG_FILTER
     };
     StringList [ korean ] =
     {
-            < "와" ; Default ; > ;
+            < "와(과)" ; Default ; > ;
         < "또는" ; Default ; > ;
     };
     StringList [ turkish ] =
@@ -1549,7 +1549,7 @@ ModelessDialog RID_SCDLG_FILTER
         Text [ french ] = "Caractre ~gnrique" ;
         Text [ swedish ] = "~Reguljrt uttryck" ;
         Text [ dutch ] = "~Gangbare uitdrukking" ;
-        Text [ spanish ] = "~Expresin corriente" ;
+        Text [ spanish ] = "~Expresin regular" ;
         Text [ english_us ] = "Regular ~expression" ;
         TabStop = TRUE ;
         Text[ chinese_simplified ] = "常规表达(~E)";
@@ -1578,20 +1578,20 @@ ModelessDialog RID_SCDLG_FILTER
         Text [ portuguese ] = "A rea ~contm cabealhos de colunas" ;
         Text [ finnish ] = "~Alue sislt sarakeotsikot" ;
         Text [ danish ] = "Omrde indholder kolonneoverskrifter" ;
-        Text [ french ] = "La plage contient des en-ttes de colonne" ;
-        Text [ swedish ] = "Omrde ~innehller kolumnhuvuden" ;
+        Text [ french ] = "La plage contient des tiquettes de colonne." ;
+        Text [ swedish ] = "Omrde ~innehller kolumnetiketter" ;
         Text [ dutch ] = "Bereik bevat ~kolomkoppen" ;
-        Text [ spanish ] = "rea contiene ttulos de ~columnas" ;
+        Text [ spanish ] = "El rea contiene los ttulos de ~columnas" ;
         Text [ english_us ] = "Range contains ~column labels" ;
         TabStop = TRUE ;
         Text[ chinese_simplified ] = "区域包含列标题(~C)";
         Text[ russian ] = "   ";
         Text[ polish ] = "Obszar zawiera nagwki kolumn";
         Text[ japanese ] = "範囲に列の項目欄を含む(~C)";
-        Text[ chinese_traditional ] = "區域包含欄標題(~C)";
+        Text[ chinese_traditional ] = "範圍包含欄標籤(~C)";
         Text[ arabic ] = "   ";
         Text[ greek ] = "   ";
-        Text[ korean ] = "열 머리글 포함(~C)";
+        Text[ korean ] = "범위에 열 레이블을 포함(~C)";
         Text[ turkish ] = "Aralk, ~stun balklar ieriyor";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "L'rea cont capaleres de ~columna";
@@ -1623,7 +1623,7 @@ ModelessDialog RID_SCDLG_FILTER
         Text[ chinese_traditional ] = "不產生備份(~N)";
         Text[ arabic ] = "   ";
         Text[ greek ] = "  ";
-        Text[ korean ] = "중복 허용 안됨(~N)";
+        Text[ korean ] = "복제 없음(~N)";
         Text[ turkish ] = "Ayn sonular ~aykla";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Sense ~duplicats";
@@ -1674,7 +1674,7 @@ ModelessDialog RID_SCDLG_FILTER
         Text [ swedish ] = "~Behll filterkriterier" ;
         Text [ danish ] = "Persistent" ;
         Text [ italian ] = "Mantieni criteri" ;
-        Text [ spanish ] = "~Persistente" ;
+        Text [ spanish ] = "~Conservar los criterios de filtrado" ;
         Text [ french ] = "Conserver les critres de filtre" ;
         Text [ dutch ] = "~Persistent" ;
         Text [ portuguese ] = "~Manter critrios" ;
@@ -1787,7 +1787,7 @@ ModelessDialog RID_SCDLG_FILTER
         Text [ french ] = "factice" ;
         Text [ swedish ] = "dummy" ;
         Text [ dutch ] = "dummy" ;
-        Text [ spanish ] = "Comodn" ;
+        Text [ spanish ] = "Texto ejemplo" ;
         Text [ english_us ] = "dummy" ;
         Left = TRUE ;
         Text[ chinese_simplified ] = "样本";
@@ -1828,7 +1828,7 @@ ModelessDialog RID_SCDLG_FILTER
         Text[ chinese_traditional ] = "資料區域:";
         Text[ arabic ] = " :";
         Text[ greek ] = " :";
-        Text[ korean ] = "데이터 영역:";
+        Text[ korean ] = "데이터 범위:";
         Text[ turkish ] = "Veri aral:";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "rea de dades:";
@@ -1915,7 +1915,7 @@ ModelessDialog RID_SCDLG_SPEC_FILTER
         Text [ spanish ] = "Leer los criterios del ~filtro en" ;
         Text [ english_us ] = "Read ~filter criteria from" ;
         Text[ chinese_simplified ] = "筛选条件来自(~F)";
-        Text[ russian ] = "  ";
+        Text[ russian ] = " ";
         Text[ polish ] = "Kryteria filtrowania znajduj si w";
         Text[ japanese ] = "フィルタ条件にする範囲(~F)";
         Text[ chinese_traditional ] = "篩選條件來自(~F)";
@@ -2021,7 +2021,7 @@ ModelessDialog RID_SCDLG_SPEC_FILTER
         Text [ french ] = "Caractre ~gnrique" ;
         Text [ swedish ] = "~Reguljrt uttryck" ;
         Text [ dutch ] = "~Gangbare uitdrukking" ;
-        Text [ spanish ] = "~Expresin corriente" ;
+        Text [ spanish ] = "~Expresin regular" ;
         Text [ english_us ] = "Regular ~expressions" ;
         TabStop = TRUE ;
         Text[ chinese_simplified ] = "常规表达(~E)";
@@ -2050,20 +2050,20 @@ ModelessDialog RID_SCDLG_SPEC_FILTER
         Text [ portuguese ] = "Contm ~cabealhos para colunas" ;
         Text [ finnish ] = "~Sislt sarakeotsikot" ;
         Text [ danish ] = "Indeholder kolonneoverskrifter" ;
-        Text [ french ] = "La plage contient des en-ttes de colonne" ;
-        Text [ swedish ] = "Omrde ~innehller kolumnhuvuden" ;
+        Text [ french ] = "La plage contient des tiquettes de colonne." ;
+        Text [ swedish ] = "Omrde ~innehller kolumnetiketter" ;
         Text [ dutch ] = "Bereik bevat ~kolomkoppen" ;
-        Text [ spanish ] = "El rea contiene ttulos de ~columnas" ;
+        Text [ spanish ] = "El rea contiene los ttulos de ~columnas" ;
         Text [ english_us ] = "Range c~ontains column labels" ;
         TabStop = TRUE ;
         Text[ chinese_simplified ] = "区域包含列标题(~O)";
         Text[ russian ] = "  ";
         Text[ polish ] = "Obszar zawiera nagwki kolumn";
         Text[ japanese ] = "範囲に列の項目欄を含む(~O)";
-        Text[ chinese_traditional ] = "區域包含欄標題(~O)";
+        Text[ chinese_traditional ] = "範圍包含欄標籤(~O)";
         Text[ arabic ] = "   ";
         Text[ greek ] = "   ";
-        Text[ korean ] = "열 머리글 포함(~O)";
+        Text[ korean ] = "범위에 열 레이블을 포함(~O)";
         Text[ turkish ] = "Aralk, ~stun balklar ieriyor";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Co~nt capaleres de columna";
@@ -2095,7 +2095,7 @@ ModelessDialog RID_SCDLG_SPEC_FILTER
         Text[ chinese_traditional ] = "不產生備份(~N)";
         Text[ arabic ] = "   ";
         Text[ greek ] = "  ";
-        Text[ korean ] = "중복 허용 안됨(~N)";
+        Text[ korean ] = "복제 없음(~N)";
         Text[ turkish ] = "Ayn sonular ~aykla";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Sense ~duplicats";
@@ -2146,7 +2146,7 @@ ModelessDialog RID_SCDLG_SPEC_FILTER
         Text [ swedish ] = "~Behll filterkriterier" ;
         Text [ danish ] = "Persistent" ;
         Text [ italian ] = "Mantieni criteri" ;
-        Text [ spanish ] = "~Persistente" ;
+        Text [ spanish ] = "~Conservar los criterios de filtrado" ;
         Text [ french ] = "Conserver les critres de filtre" ;
         Text [ dutch ] = "~Persistent" ;
         Text [ portuguese ] = "~Manter critrios" ;
@@ -2259,7 +2259,7 @@ ModelessDialog RID_SCDLG_SPEC_FILTER
         Text [ french ] = "factice" ;
         Text [ swedish ] = "dummy" ;
         Text [ dutch ] = "dummy" ;
-        Text [ spanish ] = "Comodn" ;
+        Text [ spanish ] = "Texto ejemplo" ;
         Text [ english_us ] = "dummy" ;
         Left = TRUE ;
         Text[ chinese_simplified ] = "样本";
@@ -2300,7 +2300,7 @@ ModelessDialog RID_SCDLG_SPEC_FILTER
         Text[ chinese_traditional ] = "資料區域:";
         Text[ arabic ] = " :";
         Text[ greek ] = " :";
-        Text[ korean ] = "데이터 영역:";
+        Text[ korean ] = "데이터 범위:";
         Text[ turkish ] = "Veri aral:";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "rea de dades:";
@@ -2598,7 +2598,7 @@ ModalDialog RID_SCDLG_PIVOTFILTER
     };
     StringList [ korean ] =
     {
-            < "와" ; Default ; > ;
+            < "와(과)" ; Default ; > ;
         < "또는" ; Default ; > ;
     };
     StringList [ turkish ] =
@@ -2731,7 +2731,7 @@ ModalDialog RID_SCDLG_PIVOTFILTER
     };
     StringList [ korean ] =
     {
-            < "와" ; Default ; > ;
+            < "와(과)" ; Default ; > ;
         < "또는" ; Default ; > ;
     };
     StringList [ turkish ] =
@@ -3575,7 +3575,7 @@ ModalDialog RID_SCDLG_PIVOTFILTER
         Text [ french ] = "Caractre ~gnrique" ;
         Text [ swedish ] = "~Reguljrt uttryck" ;
         Text [ dutch ] = "~Gangbare uitdrukking" ;
-        Text [ spanish ] = "~Expresin corriente" ;
+        Text [ spanish ] = "~Expresin regular" ;
         Text [ english_us ] = "~Regular expression" ;
         TabStop = TRUE ;
         Text[ chinese_simplified ] = "常规表达(~R)";
@@ -3585,7 +3585,7 @@ ModalDialog RID_SCDLG_PIVOTFILTER
         Text[ chinese_traditional ] = "常規表達(~R)";
         Text[ arabic ] = " ";
         Text[ greek ] = " ~";
-        Text[ korean ] = "일반적 표현(~R)";
+        Text[ korean ] = "정규식(~R)";
         Text[ turkish ] = "~Genel arama karakteri";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Expressi ~habitual";
@@ -3617,7 +3617,7 @@ ModalDialog RID_SCDLG_PIVOTFILTER
         Text[ chinese_traditional ] = "不產生備份(~N)";
         Text[ arabic ] = "   ";
         Text[ greek ] = "  ";
-        Text[ korean ] = "중복 허용 안됨(~N)";
+        Text[ korean ] = "복제 없음(~N)";
         Text[ turkish ] = "Ayn sonular ~aykla";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Sense ~duplicats";
@@ -3670,7 +3670,7 @@ ModalDialog RID_SCDLG_PIVOTFILTER
         Text [ french ] = "factice" ;
         Text [ swedish ] = "dummy" ;
         Text [ dutch ] = "dummy" ;
-        Text [ spanish ] = "Comodn" ;
+        Text [ spanish ] = "Texto ejemplo" ;
         Text [ english_us ] = "dummy" ;
         Left = TRUE ;
         Text[ chinese_simplified ] = "样本";
@@ -3711,7 +3711,7 @@ ModalDialog RID_SCDLG_PIVOTFILTER
         Text[ chinese_traditional ] = "資料區域:";
         Text[ arabic ] = " :";
         Text[ greek ] = " :";
-        Text[ korean ] = "데이터 영역:";
+        Text[ korean ] = "데이터 범위:";
         Text[ turkish ] = "Veri aral:";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "rea de dades:";
@@ -3758,3 +3758,8 @@ ModalDialog RID_SCDLG_PIVOTFILTER
     Text[ thai ] = "ตัวกรอง";
 };
 
+
+
+
+
+
diff --git a/sc/source/ui/src/globstr.src b/sc/source/ui/src/globstr.src
index 8f775927f1d8..7875ccb44edd 100644
--- a/sc/source/ui/src/globstr.src
+++ b/sc/source/ui/src/globstr.src
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: globstr.src,v $
  *
- *  $Revision: 1.42 $
+ *  $Revision: 1.43 $
  *
- *  last change: $Author: kz $ $Date: 2002-12-09 09:54:39 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:26 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -108,7 +108,7 @@ Resource RID_GLOBSTR
         Text [ french ] = "Donnes supprimes" ;
         Text [ swedish ] = "Radera" ;
         Text [ dutch ] = "Wissen" ;
-        Text [ spanish ] = "Eliminar" ;
+        Text [ spanish ] = "Borrar" ;
         Text [ english_us ] = "Delete" ;
         Text[ chinese_simplified ] = "删除";
         Text[ russian ] = "";
@@ -202,7 +202,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "拖曳";
         Text[ arabic ] = "  ";
         Text[ greek ] = "  A";
-        Text[ korean ] = "끌어서 놓기";
+        Text[ korean ] = "끌어 놓기";
         Text[ turkish ] = "Srkle ve brak";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Arrossega i deixa anar";
@@ -278,7 +278,7 @@ Resource RID_GLOBSTR
         Text [ french ] = "Donnes supprimes" ;
         Text [ swedish ] = "Radera" ;
         Text [ dutch ] = "Wissen" ;
-        Text [ spanish ] = "Eliminar" ;
+        Text [ spanish ] = "Borrar" ;
         Text [ english_us ] = "Delete" ;
         Text[ chinese_simplified ] = "删除";
         Text[ russian ] = "";
@@ -510,7 +510,7 @@ Resource RID_GLOBSTR
         Text[ chinese_simplified ] = "合并";
         Text[ russian ] = "";
         Text[ polish ] = "Scal";
-        Text[ japanese ] = "統合";
+        Text[ japanese ] = "結合";
         Text[ chinese_traditional ] = "合併";
         Text[ arabic ] = "";
         Text[ greek ] = "";
@@ -542,7 +542,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "取消合併";
         Text[ arabic ] = " ";
         Text[ greek ] = " ";
-        Text[ korean ] = "요약 해제";
+        Text[ korean ] = "분할";
         Text[ turkish ] = "Bl";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Divideix";
@@ -562,7 +562,7 @@ Resource RID_GLOBSTR
         Text [ french ] = "AutoFormat" ;
         Text [ swedish ] = "Autoformat" ;
         Text [ dutch ] = "AutoOpmaak" ;
-        Text [ spanish ] = "AutoFormato" ;
+        Text [ spanish ] = "Formateado automtico" ;
         Text [ english_us ] = "AutoFormat" ;
         Text[ chinese_simplified ] = "自动格式";
         Text[ russian ] = "";
@@ -684,7 +684,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "插入換欄";
         Text[ arabic ] = "  ";
         Text[ greek ] = "  ";
-        Text[ korean ] = "열 삽입";
+        Text[ korean ] = "열 나누기 삽입";
         Text[ turkish ] = "Stun sonu ekle";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Insereix un salt de columna";
@@ -704,7 +704,7 @@ Resource RID_GLOBSTR
         Text [ french ] = "Supprimer le saut de colonne" ;
         Text [ swedish ] = "Radera kolumnbrytning" ;
         Text [ dutch ] = "Kolomeinde verwijderen" ;
-        Text [ spanish ] = "Eliminar salto de columna" ;
+        Text [ spanish ] = "Borrar salto de columna" ;
         Text [ english_us ] = "Delete column break" ;
         Text[ chinese_simplified ] = "删除分列符";
         Text[ russian ] = "  ";
@@ -713,7 +713,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "刪除換欄";
         Text[ arabic ] = "  ";
         Text[ greek ] = "  ";
-        Text[ korean ] = "열 삭제";
+        Text[ korean ] = "열 나누기 삭제";
         Text[ turkish ] = "Stun sonunu sil";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Suprimeix el salt de columna";
@@ -742,7 +742,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "插入換欄";
         Text[ arabic ] = "  ";
         Text[ greek ] = "  ";
-        Text[ korean ] = "단락 삽입";
+        Text[ korean ] = "행 나누기 삽입";
         Text[ turkish ] = "Satr sonu ekle";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Insereix un salt de fila";
@@ -762,7 +762,7 @@ Resource RID_GLOBSTR
         Text [ french ] = "Supprimer le renvoi  la ligne" ;
         Text [ swedish ] = "Radera radbrytning" ;
         Text [ dutch ] = "Rij-einde verwijderen" ;
-        Text [ spanish ] = "Eliminar salto de fila" ;
+        Text [ spanish ] = "Borrar salto de fila" ;
         Text [ english_us ] = "Delete row break" ;
         Text[ chinese_simplified ] = "删除换行符";
         Text[ russian ] = "  ";
@@ -771,7 +771,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "取消換列";
         Text[ arabic ] = "  ";
         Text[ greek ] = "  ";
-        Text[ korean ] = "단락 삭제";
+        Text[ korean ] = "행 나누기 삭제";
         Text[ turkish ] = "Satr sonunu sil";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Suprimeix el salt de fila";
@@ -912,7 +912,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "選擇大綱級";
         Text[ arabic ] = "  ";
         Text[ greek ] = "  ";
-        Text[ korean ] = "아웃트라인 선택";
+        Text[ korean ] = "개요 수준 선택";
         Text[ turkish ] = "Anahat dzeyini se";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Seleccioneu el nivell de contorn";
@@ -984,10 +984,10 @@ Resource RID_GLOBSTR
         Text [ portuguese ] = "Remover esquema" ;
         Text [ finnish ] = "Tyhjenn riviiva" ;
         Text [ danish ] = "Fjern disposition" ;
-        Text [ french ] = "Supprimer le plan" ;
+        Text [ french ] = "Effacer le plan" ;
         Text [ swedish ] = "Ta bort disposition" ;
         Text [ dutch ] = "Overzicht verwijderen" ;
-        Text [ spanish ] = "Eliminar el esquema" ;
+        Text [ spanish ] = "Borrar esquema" ;
         Text [ english_us ] = "Clear Outline" ;
         Text[ chinese_simplified ] = "删除大纲";
         Text[ russian ] = " ";
@@ -1025,7 +1025,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "自動顯示大綱";
         Text[ arabic ] = " ";
         Text[ greek ] = "";
-        Text[ korean ] = "자동 외곽선";
+        Text[ korean ] = "자동 윤곽";
         Text[ turkish ] = "Otomatik anahat";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Contorn automtic";
@@ -1109,7 +1109,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "篩選";
         Text[ arabic ] = "";
         Text[ greek ] = "";
-        Text[ korean ] = "필터";
+        Text[ korean ] = "필터링";
         Text[ turkish ] = "Filtrele";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Filtre";
@@ -1126,7 +1126,7 @@ Resource RID_GLOBSTR
         Text [ portuguese ] = "Modificar rea da base de dados" ;
         Text [ finnish ] = "Muuta tietokanta-aluetta" ;
         Text [ danish ] = "Modificer databaseomrde" ;
-        Text [ french ] = "Modifier plages de base de donnes" ;
+        Text [ french ] = "Modifier les plages de base de donnes" ;
         Text [ swedish ] = "ndra databasomrden" ;
         Text [ dutch ] = "Databasebereik wijzigen" ;
         Text [ spanish ] = "Modificar el rea de la base de datos" ;
@@ -1138,7 +1138,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "變更資料庫區域";
         Text[ arabic ] = "   ";
         Text[ greek ] = "   ";
-        Text[ korean ] = "데이터베이스 영역 수정";
+        Text[ korean ] = "데이터베이스 범위 수정";
         Text[ turkish ] = "Veritaban aralklarn deitir";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Canvia l'rea de la base de dades";
@@ -1160,7 +1160,7 @@ Resource RID_GLOBSTR
         Text [ spanish ] = "Importar" ;
         Text [ english_us ] = "Importing" ;
         Text[ chinese_simplified ] = "输入";
-        Text[ russian ] = "";
+        Text[ russian ] = "";
         Text[ polish ] = "Importuj";
         Text[ japanese ] = "インポート";
         Text[ chinese_traditional ] = "匯入";
@@ -1192,7 +1192,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "更新區域";
         Text[ arabic ] = " ";
         Text[ greek ] = " ";
-        Text[ korean ] = "영역 업데이트";
+        Text[ korean ] = "범위 새로 고침";
         Text[ turkish ] = "Aral gncelle";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Refresca l'rea";
@@ -1207,7 +1207,7 @@ Resource RID_GLOBSTR
         Text [ english_us ] = "Edit graphics" ;
         Text [ italian ] = "Modifica immagine" ;
         Text [ spanish ] = "Editar imagen" ;
-        Text [ french ] = "Modifier image" ;
+        Text [ french ] = "diter l'image" ;
         Text [ swedish ] = "Redigera grafik" ;
         Text [ danish ] = "Rediger grafik" ;
         Text [ portuguese ] = "Editar imagem" ;
@@ -1219,7 +1219,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "編輯圖形";
         Text[ arabic ] = " ";
         Text[ greek ] = " ";
-        Text[ korean ] = "그래픽 편집";
+        Text[ korean ] = "그림 편집";
         Text[ turkish ] = "Grafik dzenle";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Edita els grfics";
@@ -1232,7 +1232,7 @@ Resource RID_GLOBSTR
         Text [ ENGLISH ] = "List names" ;
         Text [ english_us ] = "List names" ;
         Text [ italian ] = "Elenca nomi" ;
-        Text [ spanish ] = "Alistar nombres" ;
+        Text [ spanish ] = "Lista de nombres" ;
         Text [ french ] = "Liste des noms" ;
         Text [ dutch ] = "Lijst namen weergeven" ;
         Text [ swedish ] = "Lista upp namn" ;
@@ -1246,7 +1246,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "列出名稱";
         Text[ arabic ] = "  ";
         Text[ greek ] = " ";
-        Text[ korean ] = "이름 목록 작성";
+        Text[ korean ] = "이름 목록";
         Text[ turkish ] = "Adlar srala";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Noms de llista";
@@ -1315,7 +1315,7 @@ Resource RID_GLOBSTR
         Text [ dutch ] = "DataPiloot-tabel wissen" ;
         Text [ english_us ] = "Delete DataPilot Table" ;
         Text [ italian ] = "Elimina tabella di DataPilot" ;
-        Text [ spanish ] = "Eliminar tabla del Piloto de Datos" ;
+        Text [ spanish ] = "Borrar tabla del Piloto de Datos" ;
         Text [ french ] = "Supprimer la table du pilote de donnes" ;
         Text [ swedish ] = "Radera Datapilottabell" ;
         Text [ danish ] = "Slet DataPilot-tabel" ;
@@ -1463,7 +1463,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "使用儲存格樣式";
         Text[ arabic ] = "  ";
         Text[ greek ] = "  ";
-        Text[ korean ] = "셀 템플릿 적용";
+        Text[ korean ] = "셀 스타일 적용";
         Text[ turkish ] = "Hcre biimini uygula";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Aplica l'estil de la cel.la";
@@ -1487,7 +1487,7 @@ Resource RID_GLOBSTR
         Text[ polish ] = "Edytuj styl komrki";
         Text[ portuguese_brazilian ] = "Edit cell style";
         Text[ japanese ] = "セルスタイルの編集";
-        Text[ korean ] = "셀 템플릿 편집";
+        Text[ korean ] = "셀 스타일 편집";
         Text[ chinese_simplified ] = "编辑单元格样式";
         Text[ chinese_traditional ] = "編輯儲存格樣式";
         Text[ turkish ] = "Edit cell style";
@@ -1583,7 +1583,7 @@ Resource RID_GLOBSTR
         Text [ ENGLISH ] = "Remove Predescessor" ;
         Text [ english_us ] = "Remove Precedent" ;
         Text [ italian ] = "Rimuovi traccia sul precedente" ;
-        Text [ spanish ] = "Rastro al precedente" ;
+        Text [ spanish ] = "Borrar el rastro al precedente" ;
         Text [ french ] = "Supprimer le reprage des antcdents" ;
         Text [ dutch ] = "Spoor naar voorganger verwijderen" ;
         Text [ swedish ] = "Ta bort spr till verordnade" ;
@@ -1637,7 +1637,7 @@ Resource RID_GLOBSTR
         Text [ ENGLISH ] = "Remove Successor" ;
         Text [ english_us ] = "Remove Dependent" ;
         Text [ italian ] = "Rimuovi ~freccia sul dipendente" ;
-        Text [ spanish ] = "Eliminar rastro al sucesor" ;
+        Text [ spanish ] = "Borrar rastro al sucesor" ;
         Text [ french ] = "Supprimer le reprage des dpendants" ;
         Text [ dutch ] = "Spoor naar opvolger verwijderen" ;
         Text [ swedish ] = "Ta bort spr till underordnade" ;
@@ -1672,7 +1672,7 @@ Resource RID_GLOBSTR
         Text [ portuguese ] = "Analisar erro" ;
         Text [ portuguese_brazilian ] = "Spur zum Fehler" ;
         Text[ chinese_simplified ] = "指向错误的追踪箭头";
-        Text[ russian ] = " ";
+        Text[ russian ] = " ";
         Text[ polish ] = "led bdy";
         Text[ japanese ] = "エラーのトレース";
         Text[ chinese_traditional ] = "追蹤錯誤";
@@ -1691,7 +1691,7 @@ Resource RID_GLOBSTR
         Text [ ENGLISH ] = "Remove all Traces" ;
         Text [ english_us ] = "Remove all Traces" ;
         Text [ italian ] = "Rimuovi tutte le tracce" ;
-        Text [ spanish ] = "Eliminar todos los rastros" ;
+        Text [ spanish ] = "Borrar todos los rastros" ;
         Text [ french ] = "Supprimer tous les repres" ;
         Text [ dutch ] = "Alle sporen verwijderen" ;
         Text [ swedish ] = "Ta bort alla spr" ;
@@ -1733,7 +1733,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "標記無效的資料";
         Text[ arabic ] = "     ";
         Text[ greek ] = " ( )   ";
-        Text[ korean ] = "유효하지 않은 데이터 표시";
+        Text[ korean ] = "잘못된 데이터 표시";
         Text[ turkish ] = "Geersiz verileri iaretle";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Marca les dades no vlides";
@@ -1760,7 +1760,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "更新追蹤箭號";
         Text[ arabic ] = " ";
         Text[ greek ] = " ";
-        Text[ korean ] = "추적 업데이트";
+        Text[ korean ] = "추적 새로 고침";
         Text[ turkish ] = "zleri gncelle";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Refresca els rastres";
@@ -1776,7 +1776,7 @@ Resource RID_GLOBSTR
         Text [ english_us ] = "Modify chart data range" ;
         Text [ italian ] = "Modifica area dati del diagramma" ;
         Text [ spanish ] = "Modificar el rea de datos del diagrama" ;
-        Text [ french ] = "Modifier plage de donnes du diagramme" ;
+        Text [ french ] = "Modifier la plage de donnes du diagramme" ;
         Text [ swedish ] = "ndra diagramets dataomrde" ;
         Text [ danish ] = "Modificer diagrammets dataomrde" ;
         Text [ portuguese ] = "Alterar rea de dados do grfico" ;
@@ -1788,7 +1788,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "變更圖表資料區域";
         Text[ arabic ] = "     ";
         Text[ greek ] = "    ";
-        Text[ korean ] = "차트 데이터 영역 수정";
+        Text[ korean ] = "차트 데이터 범위 수정";
         Text[ turkish ] = "emann veri araln deitir";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Modifica l'rea de dades del diagrama";
@@ -1807,7 +1807,7 @@ Resource RID_GLOBSTR
         Text [ finnish ] = "Alkuperinen koko" ;
         Text [ danish ] = "Oprindelig strrelse" ;
         Text [ french ] = "Taille d'origine" ;
-        Text [ swedish ] = "Orginalstorlek" ;
+        Text [ swedish ] = "Originalstorlek" ;
         Text [ dutch ] = "Originele grootte" ;
         Text [ spanish ] = "Tamao original" ;
         Text [ english_us ] = "Original Size" ;
@@ -1818,7 +1818,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "原件大小";
         Text[ arabic ] = " ";
         Text[ greek ] = " ";
-        Text[ korean ] = "원래대로";
+        Text[ korean ] = "원래 크기";
         Text[ turkish ] = "Gerek boyut";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Mida original";
@@ -1845,7 +1845,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "更新捷徑";
         Text[ arabic ] = " ";
         Text[ greek ] = " ";
-        Text[ korean ] = "링크 새로 고침";
+        Text[ korean ] = "링크 업데이트";
         Text[ turkish ] = "Balanty gncelle";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Actualitza l'enlla";
@@ -1860,7 +1860,7 @@ Resource RID_GLOBSTR
         Text [ dutch ] = "Koppeling opheffen" ;
         Text [ english_us ] = "Unlink" ;
         Text [ italian ] = "Rimuovi i collegamenti" ;
-        Text [ spanish ] = "Eliminar vnculo" ;
+        Text [ spanish ] = "Borrar vnculo" ;
         Text [ french ] = "Supprimer le lien" ;
         Text [ swedish ] = "Upphv lnk" ;
         Text [ danish ] = "Ophv kde" ;
@@ -1873,7 +1873,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "取消捷徑";
         Text[ arabic ] = " ";
         Text[ greek ] = " ";
-        Text[ korean ] = "연결 삭제";
+        Text[ korean ] = "연결 해제";
         Text[ turkish ] = "Balanty kaldr";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Desenllaa";
@@ -1901,7 +1901,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "插入捷徑";
         Text[ arabic ] = " ";
         Text[ greek ] = " ";
-        Text[ korean ] = "연결 삽입";
+        Text[ korean ] = "링크 삽입";
         Text[ turkish ] = "Balant ekle";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Insereix un enlla";
@@ -1918,7 +1918,7 @@ Resource RID_GLOBSTR
         Text [ italian ] = "Inserisci formula di matrice" ;
         Text [ spanish ] = "Insertar frmula matriz" ;
         Text [ french ] = "Insrer une formule de matrice" ;
-        Text [ swedish ] = "Infoga matrixformel" ;
+        Text [ swedish ] = "Infoga matrisformel" ;
         Text [ danish ] = "Indst matrixformel" ;
         Text [ portuguese ] = "Inserir frmula matriz" ;
         Text [ portuguese_brazilian ] = "Matrixformel einf?en" ;
@@ -2026,7 +2026,7 @@ Resource RID_GLOBSTR
         Text [ swedish ] = "Frminska indrag" ;
         Text [ danish ] = "Formindsk indrykning" ;
         Text [ italian ] = "Riduci rientro" ;
-        Text [ spanish ] = "Reducir sangra" ;
+        Text [ spanish ] = "Reducir la sangra" ;
         Text [ french ] = "Rduire le retrait" ;
         Text [ portuguese ] = "Diminuir avano" ;
         Text [ portuguese_brazilian ] = "Einzug vermindern" ;
@@ -2037,7 +2037,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "減少縮排";
         Text[ arabic ] = " ";
         Text[ greek ] = " ";
-        Text[ korean ] = "들여쓰기,감소";
+        Text[ korean ] = "내어쓰기";
         Text[ turkish ] = "Girintiyi klt";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Redueix el sagnat";
@@ -2175,7 +2175,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "取消保護文件";
         Text[ arabic ] = "  ";
         Text[ greek ] = "  ";
-        Text[ korean ] = "문서보호 해제";
+        Text[ korean ] = "문서 보호 해제";
         Text[ turkish ] = "Belge korumasn kaldr";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Desprotegeix el document";
@@ -2202,7 +2202,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "列印範圍";
         Text[ arabic ] = " ";
         Text[ greek ] = " ";
-        Text[ korean ] = "인쇄범위";
+        Text[ korean ] = "인쇄 범위";
         Text[ turkish ] = "Yazdrma aral";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "rea d'impressi";
@@ -2220,7 +2220,7 @@ Resource RID_GLOBSTR
         Text [ swedish ] = "Radera sidbrytningar" ;
         Text [ danish ] = "Slet sideskift" ;
         Text [ italian ] = "Elimina interruzioni pagina" ;
-        Text [ spanish ] = "Eliminar saltos de pgina" ;
+        Text [ spanish ] = "Borrar saltos de pgina" ;
         Text [ french ] = "Supprimer les sauts de page" ;
         Text [ dutch ] = "Pagina-einde wissen" ;
         Text[ chinese_simplified ] = "删除换页符";
@@ -2312,7 +2312,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "編輯區域名稱";
         Text[ arabic ] = "  ";
         Text[ greek ] = "  ";
-        Text[ korean ] = "영역 이름 편집";
+        Text[ korean ] = "범위 이름 편집";
         Text[ turkish ] = "Aralk adlarn dzenle";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Edita els noms d'rea";
@@ -2336,7 +2336,7 @@ Resource RID_GLOBSTR
         Text[ polish ] = "Wielkie i mae litery";
         Text[ portuguese_brazilian ] = "Change case";
         Text[ japanese ] = "文字種の変換";
-        Text[ korean ] = "문자 모양 바꾸기";
+        Text[ korean ] = "문자 바꾸기";
         Text[ chinese_simplified ] = "变化字母和字体格式";
         Text[ chinese_traditional ] = "變化字母和字型格式";
         Text[ turkish ] = "Change case";
@@ -2443,7 +2443,7 @@ Resource RID_GLOBSTR
         Text [ french ] = "Supprimer les donnes ?" ;
         Text [ swedish ] = "Radera data?" ;
         Text [ dutch ] = "Gegevens wissen?" ;
-        Text [ spanish ] = "Desea eliminar los datos?" ;
+        Text [ spanish ] = "Desea borrar los datos?" ;
         Text [ english_us ] = "Delete data?" ;
         Text[ chinese_simplified ] = "删除数据?";
         Text[ russian ] = " ?";
@@ -2510,7 +2510,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "不執行動作";
         Text[ arabic ] = "   ";
         Text[ greek ] = "    ";
-        Text[ korean ] = "작업 실행 취소.";
+        Text[ korean ] = "실행할 작업이 없습니다.";
         Text[ turkish ] = "Yrtlecek ilem yok";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "No hi ha cap operaci per executar";
@@ -2539,7 +2539,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "區域沒有列標題。\n要用第一列的內容當作列標題?";
         Text[ arabic ] = "      .\n      .";
         Text[ greek ] = "     .\n        ;";
-        Text[ korean ] = "이 영역에는 열 머리글이 포함되어 있지 않습니다.\n첫번째 행을 열 머리글로서 사용하겠습니까?";
+        Text[ korean ] = "이 영역에는 열 머리글이 포함되어 있지 않습니다.\n첫번째 줄을 열 머리글로 사용하시겠습니까?";
         Text[ turkish ] = "Bu aralk, stun balklar iermiyor.\nlk satr stun bal olarak kullanlsn m?";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "L'rea no cont les capaleres de les columnes.\nVoleu utilitzar la primera lnia com a capalera de la columna?";
@@ -2620,7 +2620,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "無法開啟這個查詢<#>。";
         Text[ arabic ] = "   '#'.";
         Text[ greek ] = "       '#'.";
-        Text[ korean ] = "질의 '#'을(를) 열 수 없었습니다.";
+        Text[ korean ] = "쿼리 '#'을(를) 열 수 없습니다.";
         Text[ turkish ] = "'#' sorgusu alamad.";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "No s'ha pogut obrir la consulta '#'.";
@@ -2675,7 +2675,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "# 匯入資料...";
         Text[ arabic ] = "# () ()...";
         Text[ greek ] = "#  ...";
-        Text[ korean ] = "# 레코드를 가져왔습니다 ...";
+        Text[ korean ] = "# 레코드를 가져왔습니다...";
         Text[ turkish ] = "# veri kmesi ie aktarld...";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "S'han importat # registres...";
@@ -2705,7 +2705,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "無法建立群組";
         Text[ arabic ] = "  ";
         Text[ greek ] = "     ";
-        Text[ korean ] = "그룹 만들기 불가능";
+        Text[ korean ] = "그룹화 불가능";
         Text[ turkish ] = "Gruplama yaplamaz";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "No s possible l'agrupament";
@@ -2734,7 +2734,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "無法取消";
         Text[ arabic ] = "  ";
         Text[ greek ] = "      ";
-        Text[ korean ] = "실행 취소 불가능";
+        Text[ korean ] = "그룹 해제 불가능";
         Text[ turkish ] = "Grup zlemiyor";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "El desagrupament no s possible";
@@ -2791,7 +2791,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "不允許複合合併!";
         Text[ arabic ] = "   !";
         Text[ greek ] = "           !";
-        Text[ korean ] = "병합시에 겹치지 않게!";
+        Text[ korean ] = "셀 병합을 중복할 수 없습니다.";
         Text[ turkish ] = "zetlenmi hcreler zetlenemez!";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "No s possible fusionar les cel.les si ja estan fusionades.";
@@ -2819,7 +2819,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "不允許複合合併!";
         Text[ arabic ] = "   !";
         Text[ greek ] = "           !";
-        Text[ korean ] = "병합시에 겹치지 않게!";
+        Text[ korean ] = "셀 병합을 중복할 수 없습니다.";
         Text[ turkish ] = "zetlenmi hcreler zetlenemez!";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "No s possible fusionar les cel.les si ja estan fusionades.";
@@ -2838,7 +2838,7 @@ Resource RID_GLOBSTR
         Text [ french ] = "Bordure incompatible avec la slection multiple" ;
         Text [ swedish ] = "Ej multimarkering fr kantlinje" ;
         Text [ dutch ] = "Geen kader bij meervoudige selectie" ;
-        Text [ spanish ] = "Marco incompatible con seleccin mltiple" ;
+        Text [ spanish ] = "No se pueden aplicar bordes a una seleccin mltiple" ;
         Text [ english_us ] = "Cannot apply borders to multiple selection" ;
         Text[ chinese_simplified ] = "框无法适用于多重选择";
         Text[ russian ] = "     ";
@@ -2847,7 +2847,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "框無法用於多重選取";
         Text[ arabic ] = "      ";
         Text[ greek ] = "        ";
-        Text[ korean ] = "경계선에 다중 선택이 적용 될 수 없습니다.";
+        Text[ korean ] = "테두리는 다중 선택으로 사용할 수 없습니다.";
         Text[ turkish ] = "oklu hcre seimi iin kenarlk oluturulamyor";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "No es poden aplicar vores en una selecci mltiple";
@@ -2870,13 +2870,13 @@ Resource RID_GLOBSTR
         Text [ spanish ] = "No es posible insertar en reas fusionadas" ;
         Text [ english_us ] = "Inserting into merged ranges not possible" ;
         Text[ chinese_simplified ] = "无法插入到合并的区域内";
-        Text[ russian ] = "    ";
+        Text[ russian ] = "    ";
         Text[ polish ] = "Nie mona wstawi do poczonych obszarw";
         Text[ japanese ] = "結合した範囲に挿入できません。";
         Text[ chinese_traditional ] = "無法在合併的區域內插入";
         Text[ arabic ] = "     ";
         Text[ greek ] = "        ";
-        Text[ korean ] = "병합된 영역에 삽입할 수 없습니다.";
+        Text[ korean ] = "병합된 범위에 삽입할 수 없습니다.";
         Text[ turkish ] = "Birletirilmi aralklara ekleme yaplamaz";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "No s possible inserir en rees fusionades";
@@ -2896,16 +2896,16 @@ Resource RID_GLOBSTR
         Text [ french ] = "Suppression impossible dans des plages contant des cellules fusionnes" ;
         Text [ swedish ] = "Kan inte radera frn sammanfattade omrden" ;
         Text [ dutch ] = "Verwijderen binnen samengevoegde bereiken onmogelijk!" ;
-        Text [ spanish ] = "No se puede eliminar en reas fusionadas" ;
+        Text [ spanish ] = "No se puede borrar en reas fusionadas" ;
         Text [ english_us ] = "Deleting in merged ranges not possible" ;
         Text[ chinese_simplified ] = "无法从合并的区域中删除";
-        Text[ russian ] = "    ";
+        Text[ russian ] = "    ";
         Text[ polish ] = "Nie moe usun ze poczonych obszarw";
         Text[ japanese ] = "結合した範囲から削除できません。";
         Text[ chinese_traditional ] = "無法刪除合併的區域";
         Text[ arabic ] = "     ";
         Text[ greek ] = "        ";
-        Text[ korean ] = "병합된 영역에서 삭제할 수 없습니다.";
+        Text[ korean ] = "병합된 범위에서 삭제할 수 없습니다.";
         Text[ turkish ] = "Birletirilmi aralklarda silme yaplamaz";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "No s possible suprimir en rees fusionades";
@@ -2933,7 +2933,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "不允許複合合併!";
         Text[ arabic ] = "    !";
         Text[ greek ] = "           !";
-        Text[ korean ] = "병합시에 겹치지 않게!";
+        Text[ korean ] = "셀 병합을 중복할 수 없습니다.";
         Text[ turkish ] = "zetlenmi hcreler zetlenemez!";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "No s possible fusionar les cel.les si ja estan fusionades";
@@ -2960,7 +2960,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "只有在不帶格式的條件下才能排序含有合併的儲存格區域。";
         Text[ arabic ] = "         .";
         Text[ greek ] = "  ,     ,        .";
-        Text[ korean ] = "병합된 셀을 포함하고 있는 영역은 서식이 없을 때만 정렬될 수 있습니다.";
+        Text[ korean ] = "병합된 셀을 포함하고 있는 범위는 서식이 없을 때만 정렬될 수 있습니다.";
         Text[ turkish ] = "Birletirilmi hcre ieren aralklar yalnzca formatsz olarak sralanabilir.";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Les rees que contenen cel.les fusionades noms es poden ordenar sense formats.";
@@ -2987,7 +2987,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "沒有找到搜尋項目。";
         Text[ arabic ] = "      .";
         Text[ greek ] = "    .";
-        Text[ korean ] = "검색 용어를 찾지 못했습니다.";
+        Text[ korean ] = "검색 키를 찾지 못했습니다.";
         Text[ turkish ] = "Aranan terim bulunamad.";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "No s'ha trobat la clau de cerca.";
@@ -3215,7 +3215,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "總結果";
         Text[ arabic ] = "";
         Text[ greek ] = " ";
-        Text[ korean ] = "전체 합계";
+        Text[ korean ] = "총합계";
         Text[ turkish ] = "Genel toplam";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Suma total";
@@ -3298,7 +3298,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "和";
         Text[ arabic ] = "AND";
         Text[ greek ] = "KAI";
-        Text[ korean ] = "그리고";
+        Text[ korean ] = "AND";
         Text[ turkish ] = "VE";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "AND";
@@ -3365,7 +3365,7 @@ Resource RID_GLOBSTR
         Text = "- ans Ende stellen -" ;
         Text [ ENGLISH ] = "- move to last position -" ;
         Text [ norwegian ] = "- move to last position -" ;
-        Text [ italian ] = "- spostare all'ultima posizione -" ;
+        Text [ italian ] = "- sposta all'ultima posizione -" ;
         Text [ portuguese_brazilian ] = "- mova para ?tima posi??o -" ;
         Text [ portuguese ] = "- mover para ltima posio -" ;
         Text [ finnish ] = "- siirr loppusijaintiin -" ;
@@ -3467,7 +3467,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "資料區域必須至少含有一欄數據。";
         Text[ arabic ] = "          .";
         Text[ greek ] = "          .";
-        Text[ korean ] = "데이터 영역에는 최소한 하나의 데이터-행이 있어야 합니다.";
+        Text[ korean ] = "데이터 범위에는 최소한 한 줄의 행이 있어야 합니다.";
         Text[ turkish ] = "Veri aralnda en az bir satr bulunmaldr.";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "L'rea de dades ha de contenir almenys una fila.";
@@ -3516,7 +3516,7 @@ Resource RID_GLOBSTR
         Text [ french ] = "Impossible de supprimer cette plage de donnes." ;
         Text [ swedish ] = "Dataomrdet kan inte raderas." ;
         Text [ dutch ] = "Gegevensbereik wissen onmogelijk." ;
-        Text [ spanish ] = "No se puede eliminar el rea de datos." ;
+        Text [ spanish ] = "No se puede borrar el rea de datos." ;
         Text [ english_us ] = "The data range can not be deleted." ;
         Text[ chinese_simplified ] = "无法删除数据库区域。";
         Text[ russian ] = "   .";
@@ -3525,7 +3525,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "無法刪除資料區域。";
         Text[ arabic ] = "    .";
         Text[ greek ] = "       .";
-        Text[ korean ] = "데이터 영역은 삭제할 수 없습니다.";
+        Text[ korean ] = "데이터 범위는 삭제할 수 없습니다.";
         Text[ turkish ] = "Veri aral silinemiyor.";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "No es pot suprimir l'rea de dades.";
@@ -3539,7 +3539,7 @@ Resource RID_GLOBSTR
         Text [ english_us ] = "Error creating the Data Pilot Table." ;
         Text [ italian ] = "Erore nella creazione della tabella DataPilot" ;
         Text [ spanish ] = "Error al crear la tabla del Piloto de Datos." ;
-        Text [ french ] = "Erreur en crant la table du pilote de donnes" ;
+        Text [ french ] = "Erreur lors de la cration de la table du pilote de donnes" ;
         Text [ swedish ] = "Fel nr Datapilot-tabell skapades." ;
         Text [ danish ] = "Fejl ved oprettelse af DataPilot-tabellen." ;
         Text [ portuguese ] = "Erro ao criar a tabela do Piloto de Dados." ;
@@ -3551,7 +3551,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "在建立資料助理工作表時發生錯誤。";
         Text[ arabic ] = "      .";
         Text[ greek ] = "        .";
-        Text[ korean ] = "데이터 파일럿 표 작성시 오류.";
+        Text[ korean ] = "데이터 파일럿 표 만드는 중 오류";
         Text[ turkish ] = "Veri pilotu tablosu oluturma hatas";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "S'ha produt un error en crear la taula del DataPilot.";
@@ -3601,13 +3601,13 @@ Resource RID_GLOBSTR
         Text [ french ] = "La plage cible n'est pas vide. Voulez-vous remplacer son contenu ?" ;
         Text [ dutch ] = "Het doelbereik is niet leeg. Overschrijven?" ;
         Text[ chinese_simplified ] = "这个目标区域不是空白的。还是要删除它?";
-        Text[ russian ] = "   .  ?";
+        Text[ russian ] = "   .  ?";
         Text[ polish ] = "Obszar docelowy nie jest pusty. Czy on ma zosta skasowany przez zapisanie?";
         Text[ japanese ] = "貼り付け先が空白ではありません。上書きしてもよろしいですか。";
         Text[ chinese_traditional ] = "這個目標區域不是空白的。還是要刪除?";
         Text[ arabic ] = "   .     ";
         Text[ greek ] = "     .   ;";
-        Text[ korean ] = "대상 영역이 비어있지 않습니다. 기존의 내용에 덮어쓰겠습니까?";
+        Text[ korean ] = "대상 범위가 비어있지 않습니다. 기존의 내용에 덮어쓰시겠습니까?";
         Text[ turkish ] = "Hedef aral bo deil. Mevcut ieriin zerine yazlsn m?";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "L'rea de destinaci no s buida. Voleu sobreescriure el contingut existent?";
@@ -3631,7 +3631,7 @@ Resource RID_GLOBSTR
         Text[ polish ] = "Obszar rdowy zawiera sumy porednie, ktre mog sfaszowa wynik. Czy uy go pomimo tego?";
         Text[ portuguese_brazilian ] = "The source range contains subtotals which may distort the results. Use it anyway?";
         Text[ japanese ] = "このソース範囲には小計が含まれており、正しくない結果が出る可能性があります。使用しますか。";
-        Text[ korean ] = "소스 영역에 잘못된 결과를 초래할 수 있는 부분합이 포함되어 있습니다. 그래도 사용하겠습니까?";
+        Text[ korean ] = "원본 범위에 잘못된 결과를 초래할 수 있는 부분합이 포함되어 있습니다. 그래도 사용하시겠습니까?";
         Text[ chinese_simplified ] = "这个源区域含有一些可能会影响到计算结果的自动求和公式。还是要使用它?";
         Text[ chinese_traditional ] = "這個源區域含有一些可能會影響到計算結果的小計公式。還是要使用它?";
         Text[ turkish ] = "The source range contains subtotals which may distort the results. Use it anyway?";
@@ -3689,7 +3689,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "總計";
         Text[ arabic ] = "";
         Text[ greek ] = "";
-        Text[ korean ] = "전체";
+        Text[ korean ] = "총";
         Text[ turkish ] = "Toplam";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Total";
@@ -3801,7 +3801,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "平均值";
         Text[ arabic ] = "AVERAGE";
         Text[ greek ] = "AVERAGE";
-        Text[ korean ] = "평균";
+        Text[ korean ] = "AVERAGE";
         Text[ turkish ] = "AVERAGE";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "AVERAGE";
@@ -3885,7 +3885,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "乘積";
         Text[ arabic ] = "";
         Text[ greek ] = "";
-        Text[ korean ] = "제품";
+        Text[ korean ] = "PRODUCT";
         Text[ turkish ] = "PRODUCT";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "PRODUCT";
@@ -4221,7 +4221,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "<不明的工作表引用>";
         Text[ arabic ] = "<   >";
         Text[ greek ] = "<  >";
-        Text[ korean ] = "<알려지지 않은 시트 참조>";
+        Text[ korean ] = "<알 수 없는 표 참조>";
         Text[ turkish ] = "";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "";
@@ -4250,7 +4250,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "已經加入了這個區域。";
         Text[ arabic ] = "    .";
         Text[ greek ] = "   .";
-        Text[ korean ] = "이 범위는 이미 삽입되었습니다.";
+        Text[ korean ] = "이 범위는 이미 삽입되어 있습니다.";
         Text[ turkish ] = "Bu aralk daha nce eklendi.";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Aquesta rea ja s'ha inserit.";
@@ -4273,13 +4273,13 @@ Resource RID_GLOBSTR
         Text [ spanish ] = "Referencia a hoja no vlida." ;
         Text [ english_us ] = "Invalid sheet reference." ;
         Text[ chinese_simplified ] = "工作表引用无效。";
-        Text[ russian ] = "  .";
+        Text[ russian ] = "   .";
         Text[ polish ] = "Nieprawidowy odnonik arkusza.";
         Text[ japanese ] = "貼り付け先が指定されていません。";
         Text[ chinese_traditional ] = "工作表引用無效。";
         Text[ arabic ] = "   .";
         Text[ greek ] = "   ";
-        Text[ korean ] = "유효하지 않은 시트 참조.";
+        Text[ korean ] = "잘못된 시트 참조.";
         Text[ turkish ] = "Geersiz tablo referans.";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "La referncia del full no s vlida.";
@@ -4302,13 +4302,13 @@ Resource RID_GLOBSTR
         Text [ spanish ] = "Este rea no contiene ninguna consulta vlida." ;
         Text [ english_us ] = "This range does not contain a valid query." ;
         Text[ chinese_simplified ] = "这个区域没有有效的查询。";
-        Text[ russian ] = "    .";
+        Text[ russian ] = "    .";
         Text[ polish ] = "Ten obszar nie zawiera prawidowej kwerendy.";
         Text[ japanese ] = "この範囲は有効なクエリーを含んでいません。        ";
         Text[ chinese_traditional ] = "這個區域沒有有效的查詢。";
         Text[ arabic ] = "      .";
         Text[ greek ] = "     .";
-        Text[ korean ] = "이 범위에는 유효한 질의가 포함되어 있지 않습니다 .";
+        Text[ korean ] = "이 범위에는 유효한 쿼리가 포함되어 있지 않습니다.";
         Text[ turkish ] = "Bu aralk geerli bir sorgu iermiyor.";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Aquesta rea no cont cap consulta vlida.";
@@ -4360,7 +4360,7 @@ Resource RID_GLOBSTR
         Text [ spanish ] = "Esta funcin no se puede aplicar con selecciones mltiples." ;
         Text [ english_us ] = "This function cannot be used with multiple selections." ;
         Text[ chinese_simplified ] = "这个功能无法运用于多重选择。";
-        Text[ russian ] = "      .";
+        Text[ russian ] = "      .";
         Text[ polish ] = "Tej funkcji nie mona zastosowa do wielokrotnej selekcji.";
         Text[ japanese ] = "この機能は複数選択では使えません。";
         Text[ chinese_traditional ] = "這個功能無法應用於多重選取。";
@@ -4386,7 +4386,7 @@ Resource RID_GLOBSTR
         Text [ french ] = "Remplissage de srie..." ;
         Text [ swedish ] = "Fyll serie..." ;
         Text [ dutch ] = "Reeksen invullen..." ;
-        Text [ spanish ] = "Rellenar serie..." ;
+        Text [ spanish ] = "Rellenar fila..." ;
         Text [ english_us ] = "Fill Row..." ;
         Text[ chinese_simplified ] = "充填系列...";
         Text[ russian ] = " ...";
@@ -4423,7 +4423,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "不明的篩選: ";
         Text[ arabic ] = "  : ";
         Text[ greek ] = " : ";
-        Text[ korean ] = "알려져 있지 않은 필터: ";
+        Text[ korean ] = "알 수 없는 필터: ";
         Text[ turkish ] = "Bilinmeyen filtre: ";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Filtre desconegut: ";
@@ -4551,7 +4551,7 @@ Resource RID_GLOBSTR
         Text [ portuguese ] = "Preencher folhas" ;
         Text [ finnish ] = "Tyt taulukot" ;
         Text [ danish ] = "Fyld ark" ;
-        Text [ french ] = "Remplissage feuilles" ;
+        Text [ french ] = "Remplissage des feuilles" ;
         Text [ swedish ] = "Fyll tabeller" ;
         Text [ dutch ] = "Werkbladen vullen" ;
         Text [ spanish ] = "Rellenar hojas" ;
@@ -4607,7 +4607,7 @@ Resource RID_GLOBSTR
         Text [ portuguese ] = "Adicionar reas seleccionadas ao cenrio activo?" ;
         Text [ finnish ] = "Listnk valinnat nykyiseen skenaarioon?" ;
         Text [ danish ] = "Tilfje markerede omrder til scenariet?" ;
-        Text [ french ] = "Ajouter les plages slectionnes au scnario en cours ?" ;
+        Text [ french ] = "Ajouter les plages slectionnes au scnario ?" ;
         Text [ swedish ] = "Utka scenario med de markerade omrdena?" ;
         Text [ dutch ] = "Geselecteerde bereiken aan huidig scenario toevoegen?" ;
         Text [ spanish ] = "Desea aadir las reas seleccionadas al escenario actual?" ;
@@ -4670,7 +4670,7 @@ Resource RID_GLOBSTR
         Text [ spanish ] = "Ninguna rea seleccionada." ;
         Text [ english_us ] = "A range has not been selected." ;
         Text[ chinese_simplified ] = "没有标记任何区域。";
-        Text[ russian ] = "  .";
+        Text[ russian ] = "  .";
         Text[ polish ] = "Nie zaznaczono obszaru.";
         Text[ japanese ] = "何も選択されていません。";
         Text[ chinese_traditional ] = "沒有標記任何區域。";
@@ -4733,7 +4733,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "工作表名稱無效。請用數字或字母代替。";
         Text[ arabic ] = "   .";
         Text[ greek ] = "  .";
-        Text[ korean ] = "유효하지 않은 시트 이름";
+        Text[ korean ] = "잘못된 시트 이름";
         Text[ turkish ] = "Geersiz tablo ad.";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "El nom del full no s vlid.";
@@ -4901,7 +4901,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "平均值";
         Text[ arabic ] = "";
         Text[ greek ] = " ";
-        Text[ korean ] = "평균";
+        Text[ korean ] = "평균값";
         Text[ turkish ] = "Average";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Mitjana";
@@ -4985,7 +4985,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "乘積";
         Text[ arabic ] = " ";
         Text[ greek ] = "";
-        Text[ korean ] = "제품";
+        Text[ korean ] = "곱";
         Text[ turkish ] = "arpm";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Producte";
@@ -5228,7 +5228,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "(空缺)";
         Text[ arabic ] = "()";
         Text[ greek ] = "()";
-        Text[ korean ] = "(공백)";
+        Text[ korean ] = "(빈)";
         Text[ turkish ] = "(bo)";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "(buit)";
@@ -5257,7 +5257,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "無效的列印區域";
         Text[ arabic ] = "   ";
         Text[ greek ] = "  ";
-        Text[ korean ] = "유효하지 않은 인쇄 영역";
+        Text[ korean ] = "잘못된 인쇄 범위";
         Text[ turkish ] = "Geersiz yazdrma aral";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "L'rea d'impressi no s vlida";
@@ -5276,7 +5276,7 @@ Resource RID_GLOBSTR
         Text [ french ] = "Style de page" ;
         Text [ swedish ] = "Sidformatmall" ;
         Text [ dutch ] = "Pagina-opmaakprofiel" ;
-        Text [ spanish ] = "Estilo de hoja" ;
+        Text [ spanish ] = "Estilo de pgina" ;
         Text [ english_us ] = "Page Style" ;
         Text[ chinese_simplified ] = "页面样式";
         Text[ russian ] = " ";
@@ -5454,7 +5454,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "頁";
         Text[ arabic ] = "";
         Text[ greek ] = "PAGES";
-        Text[ korean ] = "페이지들";
+        Text[ korean ] = "페이지";
         Text[ turkish ] = "SAYFA";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "PAGES";
@@ -5482,7 +5482,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "日期";
         Text[ arabic ] = "";
         Text[ greek ] = "";
-        Text[ korean ] = "일자";
+        Text[ korean ] = "DATE";
         Text[ turkish ] = "DATE";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "DATE";
@@ -5645,21 +5645,21 @@ Resource RID_GLOBSTR
          // Text[spanish] = "Las celdas protegidas no pueden modificarse.";
         Text [ english_us ] = "You cannot change only part of an array." ;
         Text [ dutch ] = "Een deel van een matrix kan niet worden gewijzigd." ;
-        Text [ italian ] = "Non  possibile modificare una parte della matrice" ;
-        Text [ spanish ] = "No se puede modificar parte de la matriz." ;
-        Text [ french ] = "Impossible de modifier la partie d'une matrice." ;
-        Text [ swedish ] = "En del av en matris kan inte ndras." ;
+        Text [ italian ] = "Non  possibile modificare solo una parte della matrice." ;
+        Text [ spanish ] = "No se puede modificar slo una parte de la matriz." ;
+        Text [ french ] = "Il n'est pas possible de ne modifier qu'une partie d'une matrice." ;
+        Text [ swedish ] = "Du kan inte ndra bara en del av en matris." ;
         Text [ danish ] = "Det er ikke muligt at ndre en del af en matrix." ;
         Text [ portuguese ] = "Impossvel alterar uma parte da matriz." ;
         Text [ portuguese_brazilian ] = "Teil einer Matrix kann nicht ge?ndert werden." ;
-        Text[ chinese_simplified ] = "矩阵的一部分无法被更改。";
+        Text[ chinese_simplified ] = "您无法只更改矩阵的一部分。";
         Text[ russian ] = "   .";
         Text[ polish ] = "Cz macierzy nie moe by zmodyfikowana.";
         Text[ japanese ] = "行列は部分変更できません。";
-        Text[ chinese_traditional ] = "無法變更矩陣的一部份。";
+        Text[ chinese_traditional ] = "無法僅變更陣列的一部份。";
         Text[ arabic ] = "     .";
         Text[ greek ] = "       .";
-        Text[ korean ] = "행렬의 일부를 변경할 수 없습니다.";
+        Text[ korean ] = "행렬의 일부 만을 변경할 수 없습니다.";
         Text[ turkish ] = "Matrislerin bir ksm deitirilemiyor.";
         Text[ language_user1 ] = "EM Dec 2002: In other words, you can only change the whole thing.";
         Text[ catalan ] = "No es pot modificar una part d'una matriu.";
@@ -5746,7 +5746,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "錯誤:無效的自變量";
         Text[ arabic ] = ":   ";
         Text[ greek ] = ":   ";
-        Text[ korean ] = "오류: 유효하지 않은 독립 변수";
+        Text[ korean ] = "오류: 잘못된 독립 변수";
         Text[ turkish ] = "Hata: Geersiz deiken";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Error: argument no vlid";
@@ -5774,7 +5774,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "參數清單有錯誤";
         Text[ arabic ] = "    ";
         Text[ greek ] = "   ";
-        Text[ korean ] = "파라미터 목록상의 오류";
+        Text[ korean ] = "매개 변수 목록의 오류";
         Text[ turkish ] = "Parametre listesinde hata";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "S'ha produt un error a la llista de parmetres";
@@ -5799,11 +5799,11 @@ Resource RID_GLOBSTR
         Text[ chinese_simplified ] = "错误:无效的浮点运算";
         Text[ russian ] = ":     ";
         Text[ polish ] = "Bd: Niepoprawna operacja liczby zmiennoprzecinkowej";
-        Text[ japanese ] = "エラー: 無効な浮動少数点演算です";
+        Text[ japanese ] = "エラー: 無効な浮動小数点演算です";
         Text[ chinese_traditional ] = "錯誤:無效的浮點運算";
         Text[ arabic ] = ":     ";
         Text[ greek ] = ":     ";
-        Text[ korean ] = "오류: 유효하지 않은 부동 소수점 작동";
+        Text[ korean ] = "오류: 잘못된 부동 소수점 작동";
         Text[ turkish ] = "Hata: Geersiz kayan nokta ilemi";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Error: l'operaci de coma flotant no s vlida";
@@ -5832,7 +5832,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "錯誤:無效的字元";
         Text[ arabic ] = ":   ";
         Text[ greek ] = ":   ";
-        Text[ korean ] = "오류: 유효하지 않은 문자";
+        Text[ korean ] = "오류: 잘못된 문자";
         Text[ turkish ] = "Hata: Geersiz karakter";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Error: carcter no vlid";
@@ -5861,7 +5861,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "錯誤:無效的分號";
         Text[ arabic ] = ":    ";
         Text[ greek ] = ":   semicolon ( ; )";
-        Text[ korean ] = "오류:유효하지 않은 세미콜론";
+        Text[ korean ] = "오류: 잘못된 세미콜론";
         Text[ turkish ] = "Hata: Geersiz noktal virgl";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Error: punt i coma no vlid";
@@ -6116,7 +6116,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "錯誤:無效的名稱";
         Text[ arabic ] = ":   ";
         Text[ greek ] = ":   ";
-        Text[ korean ] = "오류: 유효하지 않은 이름";
+        Text[ korean ] = "오류: 잘못된 이름";
         Text[ turkish ] = "Hata: Geersiz ad";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Error: nom no vlid";
@@ -6144,7 +6144,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "錯誤:沒有找到 Add-In";
         Text[ arabic ] = "Error: AddIn not found";
         Text[ greek ] = ":    AddIn";
-        Text[ korean ] = "오류: 플러그인을 찾지 못했습니다";
+        Text[ korean ] = "오류: Add-in을 찾지 못했습니다";
         Text[ turkish ] = "Error: AddIn not found";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Error: no s'ha trobat AddIn";
@@ -6431,13 +6431,13 @@ Resource RID_GLOBSTR
         Text [ spanish ] = "El rea de la base de datos destino no existe." ;
         Text [ english_us ] = "The target database range does not exist." ;
         Text[ chinese_simplified ] = "这个目标数据区域已经存在。";
-        Text[ russian ] = "     .";
+        Text[ russian ] = "     .";
         Text[ polish ] = "Obszar docelowej bazy danych nie istnieje.";
         Text[ japanese ] = "ターゲットデータベースがありません。";
         Text[ chinese_traditional ] = "這個目標資料庫區域已經存在。";
         Text[ arabic ] = "     .";
         Text[ greek ] = "     .";
-        Text[ korean ] = "목표 데이터베이스 영역은 존재하지 않습니다.";
+        Text[ korean ] = "대상 데이터베이스 범위가 없습니다.";
         Text[ turkish ] = "Hedef veritaban aral mevcut deil.";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "L'rea de la base de dades de destinaci no existeix.";
@@ -6466,7 +6466,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "無效的遞增";
         Text[ arabic ] = "  ";
         Text[ greek ] = "  ";
-        Text[ korean ] = "유효하지 않은 증가";
+        Text[ korean ] = "잘못된 증가";
         Text[ turkish ] = "Geersiz aama";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "L'increment no s vlid";
@@ -6544,7 +6544,7 @@ Resource RID_GLOBSTR
         Text [ french ] = "Vous avez indiqu un nom incorrect.\nImpossible de crer l'AutoFormat.\nChoisissez un autre nom." ;
         Text [ swedish ] = "Du har angett ett ogiltigt namn.\nDet gick inte att skapa autoformatet.\nVlj ett annat namn." ;
         Text [ dutch ] = "U gebruikte een ongeldige naam.\nDe gewenste AutoOpmaak kan niet worden uitgevoerd.\nKies een andere naam." ;
-        Text [ spanish ] = "Ha escrito un nombre no vlido,\npor lo que no se pudo crear el AutoFormato.\nSeleccione otro nombre por favor." ;
+        Text [ spanish ] = "Ha indicado un nombre no vlido.\nEl Formateado automtico no se ha podido efectuar.\nSeleccione otro nombre." ;
         Text [ ENGLISH_US ] = "You have entered an invalid name.\nAutoFormat could not be created. \nTry again using a different name." ;
         Text[ chinese_simplified ] = "您输入了一个无效的名称。\n无法建立自动格式。\n请您输入一个有效的名称。";
         Text[ russian ] = "   .\n  .\n  .";
@@ -6553,7 +6553,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "您輸入了一個無效的名稱。\n無法建立自動格式。\n請您輸入一個有效的名稱。";
         Text[ arabic ] = "     .\n   .\n   .";
         Text[ greek ] = "     .  \n     .\n  .";
-        Text[ korean ] = "사용자는 유효하지 않은 이름을 입력하셨습니다 .\n따라서 자동 서식은 만들어지지 않습니다. \n다른 이름을 선택하십시오.";
+        Text[ korean ] = "잘못된 이름을 입력하셨습니다 .\\요구되는 자동 서식을 만들 수 없습니다. \n다른 이름을 선택하십시오.";
         Text[ turkish ] = "Girilen ad geersiz.\nOtomatik formatlama yaplamad.\nBaka bir ad ile yeniden deneyin.";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Heu introdut un nom no vlid.\nNo s'ha pogut crear el formatatge automtic. \nTorneu-ho a intentar amb un altre nom.";
@@ -6768,7 +6768,7 @@ Resource RID_GLOBSTR
         Text [ portuguese ] = "Para aplicar o AutoFormato, dever seleccionar uma\nrea da tabela de pelo menos 3 x 3 clulas." ;
         Text [ french ] = "Une plage de feuille ncessite\nau moins 3x3 cellules slectionnes\npour appliquer l'AutoFormat." ;
         Text [ dutch ] = "Om AutoOpmaak te kunnen uitvoeren,\nmoet er een tabelbereik van tenminste\n3x3 cellen gemarkeerd zijn." ;
-        Text [ spanish ] = "Para poder aplicar el AutoFormato\nes necesario marcar un rea en la tabla\nde por lo menos 3x3 celdas." ;
+        Text [ spanish ] = "Para poder aplicar el Formateado  automtico\nes necesario seleccionar un rea\nde por lo menos 3x3 celdas." ;
         Text [ danish ] = "For at kunne anvende AutoFormat,\nskal et tabelomrde p mindst\n3x3 celler vre markeret." ;
         Text [ swedish ] = "Fr att du ska kunna anvnda autoformatet\nmste ett tabellomrde p minst\n3x3 celler vara markerat." ;
         Text [ finnish ] = "Jotta automaattista muotoilua voi kytt,\non valittava vhintn 3x3 solun\nkokoinen taulukkoalue." ;
@@ -6780,7 +6780,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "為了使用自動格式,\n您必須至少選取了\n3x3 工作表區域。";
         Text[ arabic ] = "   \n        \n3x3 .";
         Text[ greek ] = "    ,\n         \n  33.";
-        Text[ korean ] = "자동 서식을 적용하기 위해서는,\n최소한\n3x3셀의 표 영역이 선택되어 있어야 합니다.";
+        Text[ korean ] = "자동 서식을 적용하기 위해서는 최소한\n3x3셀의 표 범위가 선택되어 있어야 합니다.";
         Text[ turkish ] = "otomatik formatlamay kullanabilmek iin\n en az 3x3 hcre byklnde bir tablo aral seilmi olmaldr.";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Per aplicar un formatatge automtic,\n cal seleccionar una rea de taula de com a mnim \n3x3 cel.les.";
@@ -6830,7 +6830,7 @@ Resource RID_GLOBSTR
         Text [ spanish ] = "(opcional)" ;
         Text [ english_us ] = "(optional)" ;
         Text[ chinese_simplified ] = "(可选择的)";
-        Text[ russian ] = "()";
+        Text[ russian ] = "()";
         Text[ polish ] = "(opcjonalny)";
         Text[ japanese ] = "(オプション)";
         Text[ chinese_traditional ] = "(可選擇的)";
@@ -6858,7 +6858,7 @@ Resource RID_GLOBSTR
         Text [ spanish ] = "(necesario)" ;
         Text [ english_us ] = "(required)" ;
         Text[ chinese_simplified ] = "(需要输入)";
-        Text[ russian ] = "()";
+        Text[ russian ] = "()";
         Text[ polish ] = "(wymagany,-a, -e)";
         Text[ japanese ] = "(必須)";
         Text[ chinese_traditional ] = "(需要輸入)";
@@ -6893,7 +6893,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "無效";
         Text[ arabic ] = " ";
         Text[ greek ] = " ";
-        Text[ korean ] = "유효하지 않음";
+        Text[ korean ] = "잘못됨";
         Text[ turkish ] = "geersiz";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "no vlid";
@@ -6962,7 +6962,7 @@ Resource RID_GLOBSTR
         Text [ ENGLISH ] = "Are you sure you want to delete the selected sheets?" ;
         Text [ english_us ] = "Are you sure you want to permanently delete the current sheet(s)?" ;
         Text [ italian ] = "Si vuole eliminare definitivamente la tabella?" ;
-        Text [ spanish ] = "Desea eliminar las hojas seleccionadas?" ;
+        Text [ spanish ] = "Desea borrar las hojas seleccionadas?" ;
         Text [ french ] = "Voulez-vous supprimer les feuilles slectionnes ?" ;
         Text [ dutch ] = "Wilt u het huidige werkblad werkelijk wissen?" ;
         Text [ swedish ] = "Vill du radera de markerade tabellerna?" ;
@@ -6993,7 +6993,7 @@ Resource RID_GLOBSTR
         Text [ swedish ] = "Vill du radera det markerade scenariot?" ;
         Text [ danish ] = "Vil du slette det markerede scenario?" ;
         Text [ italian ] = "Cancellare lo scenario scelto?" ;
-        Text [ spanish ] = "Est seguro de querer eliminar el escenario seleccionado?" ;
+        Text [ spanish ] = "Est seguro de querer borrar el escenario seleccionado?" ;
         Text [ french ] = "Voulez-vous supprimer le scnario slectionn ?" ;
         Text [ dutch ] = "Wilt u het geselecteerde scenario verwijderen?" ;
         Text[ chinese_simplified ] = "您真的要删除这个选中的方案吗?";
@@ -7191,7 +7191,7 @@ Resource RID_GLOBSTR
         Text[ polish ] = "Eksport DBase";
         Text[ portuguese_brazilian ] = "DBase export";
         Text[ japanese ] = "DBase のエクスポート";
-        Text[ korean ] = "DBase 보내기";
+        Text[ korean ] = "DBase 내보내기";
         Text[ chinese_simplified ] = "DBase 输出";
         Text[ chinese_traditional ] = "DBase 匯出";
         Text[ arabic ] = "DBase ";
@@ -7220,7 +7220,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "儲存成 DIF 格式";
         Text[ arabic ] = " Dif";
         Text[ greek ] = " Dif";
-        Text[ korean ] = "Dif  내보내기";
+        Text[ korean ] = "Dif 내보내기";
         Text[ turkish ] = "Da aktar (Dif)";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Exportaci DIF";
@@ -7274,7 +7274,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "標準";
         Text[ arabic ] = "";
         Text[ greek ] = "";
-        Text[ korean ] = "표준";
+        Text[ korean ] = "기본값";
         Text[ turkish ] = "Standart";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Per defecte";
@@ -7358,7 +7358,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "標題";
         Text[ arabic ] = "";
         Text[ greek ] = "";
-        Text[ korean ] = "글머리";
+        Text[ korean ] = "제목";
         Text[ turkish ] = "Balk";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Encapalament";
@@ -7386,7 +7386,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "標題 1";
         Text[ arabic ] = " 1";
         Text[ greek ] = "1";
-        Text[ korean ] = "글머리1";
+        Text[ korean ] = "제목1";
         Text[ turkish ] = "Balk1";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Encapalament1";
@@ -7607,7 +7607,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "沒有設定任何語言";
         Text[ arabic ] = "   ";
         Text[ greek ] = "  ";
-        Text[ korean ] = "언어 집합이 없습니다.";
+        Text[ korean ] = "언어를 설정하지 않았습니다.";
         Text[ turkish ] = "Dil seilmedi";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Sense conjunt d'idiomes";
@@ -7650,7 +7650,7 @@ Resource RID_GLOBSTR
         Text [ dutch ] = "Werkblad wissen" ;
         Text [ english_us ] = "Delete Sheets" ;
         Text [ italian ] = "Elimina tabelle" ;
-        Text [ spanish ] = "Eliminar hoja" ;
+        Text [ spanish ] = "Borrar hojas" ;
         Text [ french ] = "Supprimer des feuilles" ;
         Text [ swedish ] = "Radera tabeller" ;
         Text [ danish ] = "Slet ark" ;
@@ -7677,7 +7677,7 @@ Resource RID_GLOBSTR
         Text [ english_us ] = "Rename Sheet" ;
         Text [ italian ] = "Rinomina tabella" ;
         Text [ spanish ] = "Cambiar nombre a la hoja" ;
-        Text [ french ] = "Renommer feuille" ;
+        Text [ french ] = "Renommer la feuille" ;
         Text [ dutch ] = "Werkbladnaam wijzigen" ;
         Text [ swedish ] = "Byt namn p tabell" ;
         Text [ danish ] = "Omdb ark" ;
@@ -7705,7 +7705,7 @@ Resource RID_GLOBSTR
         Text [ english_us ] = "Move Sheets" ;
         Text [ italian ] = "Sposta tabella" ;
         Text [ spanish ] = "Desplazar hojas" ;
-        Text [ french ] = "Dplacer feuilles" ;
+        Text [ french ] = "Dplacer les feuilles" ;
         Text [ swedish ] = "Flytta tabeller" ;
         Text [ danish ] = "Flyt ark" ;
         Text [ portuguese ] = "Mover folhas" ;
@@ -7759,7 +7759,7 @@ Resource RID_GLOBSTR
         Text [ dutch ] = "Werkblad toevoegen" ;
         Text [ english_us ] = "Append sheet" ;
         Text [ italian ] = "Allega tabella" ;
-        Text [ spanish ] = "Aadir hoja" ;
+        Text [ spanish ] = "Adjuntar hoja" ;
         Text [ french ] = "Annexer la feuille" ;
         Text [ swedish ] = "Tillfoga tabell" ;
         Text [ danish ] = "Vedhft ark" ;
@@ -7786,7 +7786,7 @@ Resource RID_GLOBSTR
         Text [ english_us ] = "Show Sheet" ;
         Text [ italian ] = "Mostra tabella" ;
         Text [ spanish ] = "Mostrar hoja" ;
-        Text [ french ] = "Afficher feuille" ;
+        Text [ french ] = "Afficher la feuille" ;
         Text [ dutch ] = "Werkblad weergeven" ;
         Text [ swedish ] = "Visa tabell" ;
         Text [ danish ] = "Vis ark" ;
@@ -7989,7 +7989,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "新的工作表含有絕對的指向其它工作表的參照,這些其它的工作表可能有錯誤!";
         Text[ arabic ] = "            !";
         Text[ greek ] = "         ,      !";
-        Text[ korean ] = "새로운 시트는 다른 시트에 대해 더 이상 일치하지 않아도 되는 절대 참조를 포함하고 있습니다!";
+        Text[ korean ] = "새 표는 옳지 않을 수 있는 다른 표에 대해 절대적 참조를 수록하고 있습니다.";
         Text[ turkish ] = "Yeni tabloda bulunan dier tablolar ile ilgili mutlak referanslar doru olmayabilir!";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "La taula nova cont referncies absolutes a altres taules que poden ser incorrectes.";
@@ -8011,13 +8011,13 @@ Resource RID_GLOBSTR
         Text [ portuguese ] = "Devido a nomes idnticos foi modificado o nome de uma rea no documento de destino!" ;
         Text [ portuguese_brazilian ] = "Wegen einer Namensgleichheit wurde im Zieldokument ein bestehender Bereichsname ver?ndert!" ;
         Text[ chinese_simplified ] = "因为名称相同,目标文档内的区域名称已经被更改!";
-        Text[ russian ] = "-        !";
+        Text[ russian ] = "-        !";
         Text[ polish ] = "Ze wzgldu na identyczne nazwy zostaa zmieniona nazwa obszaru w dokumencie docelowym!";
         Text[ japanese ] = "名前が同一であったため、ターゲットディレクトリに既存する範囲名が変更されました。";
         Text[ chinese_traditional ] = "因為名稱相同,目標文件內的區域名稱已經被變更!";
         Text[ arabic ] = "           !";
         Text[ greek ] = "           !";
-        Text[ korean ] = "같은 이름으로 인해 대상 문서의 기존 영역 이름이 변경되었습니다!";
+        Text[ korean ] = "이름이 같은 이유로 대상 문서의 기존 범위 이름이 바뀌었습니다.";
         Text[ turkish ] = "Ad elemesi nedeniyle hedef belgede mevcut bir aralk ad deitirildi!";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Com que hi havia noms idntics, s'ha modificat un nom d'rea existent al document de destinaci.";
@@ -8032,7 +8032,7 @@ Resource RID_GLOBSTR
         Text [ dutch ] = "AutoFilter niet mogelijk" ;
         Text [ english_us ] = "AutoFilter not possible" ;
         Text [ italian ] = "Filtro automatico non possibile" ;
-        Text [ spanish ] = "El AutoFiltro no es posible" ;
+        Text [ spanish ] = "Filtro automtico imposible" ;
         Text [ french ] = "AutoFiltre impossible" ;
         Text [ swedish ] = "AutoFilter omjligt" ;
         Text [ danish ] = "AutoFilter ikke mulig" ;
@@ -8128,7 +8128,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "搜尋和代替";
         Text[ arabic ] = " ";
         Text[ greek ] = "  ";
-        Text[ korean ] = "찾기 & 바꾸기";
+        Text[ korean ] = "찾기 및 바꾸기";
         Text[ turkish ] = "Ara ve deitir";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Cerca i reemplaa";
@@ -8155,7 +8155,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "%PRODUCTNAME Calc 已經搜尋到文件的起始位置。要繼續在文件的結束位置搜尋?";
         Text[ arabic ] = " %PRODUCTNAME Calc   .       Ͽ";
         Text[ greek ] = " %PRODUCTNAME Calc        .          ;";
-        Text[ korean ] = "%PRODUCTNAME Calc는 문서의 시작부분을 검색했습니다.  마지막까지 계속 하겠습니까?";
+        Text[ korean ] = "%PRODUCTNAME Calc는 문서의 시작을 검색했습니다. 문서의 끝에서 검색을 계속하시겠습니까?";
         Text[ turkish ] = "%PRODUCTNAME Calc belgenin bana kadar arad. Aramaya belge sonunda devam etmek istiyor musunuz?";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "%PRODUCTNAME Calc ha buscat fins al principi del document. Voleu continuar la cerca fins al final del document?";
@@ -8209,7 +8209,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "代替現存的定義 # ?";
         Text[ arabic ] = "    # Ͽ";
         Text[ greek ] = "    #;";
-        Text[ korean ] = "#의 기존 정의를 바꾸겠습니까?";
+        Text[ korean ] = "#의 기존 정의를 바꾸시겠습니까?";
         Text[ turkish ] = "Mevcut # tanm deitirilsin mi?";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Voleu reemplaar la definici existent de #?";
@@ -8237,7 +8237,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "區域名稱的錯誤選擇";
         Text[ arabic ] = "    .";
         Text[ greek ] = "    ";
-        Text[ korean ] = "범위 이름에 대한 잘못된 선택 표시";
+        Text[ korean ] = "범위 이름의 잘못된 선택";
         Text[ turkish ] = "Aralk adlar iin geersiz seim";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "La selecci per a noms d'rea no s vlida";
@@ -8265,7 +8265,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "無法在源資料之上加入捷徑。";
         Text[ arabic ] = "      .";
         Text[ greek ] = "          .";
-        Text[ korean ] = "링크를 소스 데이터 위로 삽입할 수 없습니다.";
+        Text[ korean ] = "참조를 원본 데이터 위로 삽입할 수 없습니다.";
         Text[ turkish ] = "Referanslar, kaynak verilerinin stnde eklenemez.";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "No es poden inserir referncies sobre les dades font.";
@@ -8307,7 +8307,7 @@ Resource RID_GLOBSTR
         Text [ english_us ] = "Do you really want to delete the entry #?" ;
         Text [ dutch ] = "Wilt u het item # werkelijk wissen?" ;
         Text [ italian ] = "Si vuole veramente eliminare la voce #?" ;
-        Text [ spanish ] = "Desea realmente eliminar la entrada #?" ;
+        Text [ spanish ] = "Desea realmente borrar la entrada #?" ;
         Text [ french ] = "Voulez-vous vraiment supprimer l'entre # ?" ;
         Text [ swedish ] = "Vill du verkligen radera #?" ;
         Text [ danish ] = "Er du sikker p at du vil slette element #?" ;
@@ -8347,7 +8347,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "物件/圖形";
         Text[ arabic ] = "/";
         Text[ greek ] = "/";
-        Text[ korean ] = "개체/그래픽";
+        Text[ korean ] = "개체/그림";
         Text[ turkish ] = "Nesne/Grafik";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Objectes/grfics";
@@ -8497,7 +8497,7 @@ Resource RID_GLOBSTR
         Text [ dutch ] = "Van boven naar beneden" ;
         Text [ italian ] = "Da sopra a sotto" ;
         Text [ spanish ] = "De arriba hacia abajo" ;
-        Text [ french ] = "Du haut en bas" ;
+        Text [ french ] = "De haut en bas" ;
         Text [ swedish ] = "Uppifrn ned" ;
         Text [ danish ] = "Fra verst til nederst" ;
         Text [ portuguese ] = "De cima para baixo" ;
@@ -8590,7 +8590,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "工作表網格";
         Text[ arabic ] = " ";
         Text[ greek ] = " ";
-        Text[ korean ] = "눈금선";
+        Text[ korean ] = "표의 눈금선";
         Text[ turkish ] = "Klavuz izgiler";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Graella";
@@ -8618,7 +8618,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "欄標題和列標題";
         Text[ arabic ] = "  ";
         Text[ greek ] = "   ";
-        Text[ korean ] = "행 & 열 머리글";
+        Text[ korean ] = "열 머리글/행 머리글";
         Text[ turkish ] = "Satr ve stun balklar";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Capaleres de la fila i de la columna";
@@ -8751,7 +8751,7 @@ Resource RID_GLOBSTR
         Text[ polish ] = "Wszystko na [%] ";
         Text[ japanese ] = "すべて [%]";
         Text[ greek ] = "  [%]";
-        Text[ korean ] = "전체를 [%]로";
+        Text[ korean ] = "모두를 [%]로";
         Text[ chinese_traditional ] = "全部採用[%]";
         Text[ arabic ] = "   [%]";
         Text[ turkish ] = "Tmn [%]";
@@ -8796,7 +8796,7 @@ Resource RID_GLOBSTR
         TEXT [ portuguese ] = "Estatstica" ;
         TEXT [ finnish ] = "Tilastotiedot" ;
         TEXT [ danish ] = "Statistik" ;
-        TEXT [ french ] = "Statistique" ;
+        TEXT [ french ] = "Statistiques" ;
         TEXT [ swedish ] = "Statistik" ;
         TEXT [ dutch ] = "Statistiek" ;
         TEXT [ spanish ] = "Estadstica" ;
@@ -8917,7 +8917,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "摘要";
         Text[ arabic ] = "";
         Text[ greek ] = "";
-        Text[ korean ] = "미리보기";
+        Text[ korean ] = "개요";
         Text[ turkish ] = "Genel bak";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Visi general";
@@ -8931,7 +8931,7 @@ Resource RID_GLOBSTR
         Text [ ENGLISH_US ] = "Doc.Information" ;
         Text [ dutch ] = "Documentinfo" ;
         Text [ italian ] = "Info documento" ;
-        Text [ spanish ] = "Info documento" ;
+        Text [ spanish ] = "Informacin documento" ;
         Text [ french ] = "Info document" ;
         Text [ swedish ] = "Dokumentinformation" ;
         Text [ danish ] = "Dokumentinfo" ;
@@ -8999,7 +8999,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "已經修改";
         Text[ arabic ] = "";
         Text[ greek ] = "";
-        Text[ korean ] = "수정됨";
+        Text[ korean ] = "변경됨";
         Text[ turkish ] = "Deitirilen";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Modificat";
@@ -9039,7 +9039,7 @@ Resource RID_GLOBSTR
         Text [ ENGLISH ] = "Theme" ;
         Text [ ENGLISH_US ] = "Subject" ;
         Text [ italian ] = "Argomento" ;
-        Text [ spanish ] = "Tema" ;
+        Text [ spanish ] = "Asunto" ;
         Text [ french ] = "Sujet" ;
         Text [ dutch ] = "Onderwerp" ;
         Text [ swedish ] = "Tema" ;
@@ -9081,7 +9081,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "關鍵字";
         Text[ arabic ] = " ";
         Text[ greek ] = " ";
-        Text[ korean ] = "키 워드";
+        Text[ korean ] = "키워드";
         Text[ turkish ] = "Anahtar szckler";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Paraules clau";
@@ -9108,7 +9108,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "評語";
         Text[ arabic ] = "";
         Text[ greek ] = "";
-        Text[ korean ] = "주";
+        Text[ korean ] = "설명";
         Text[ turkish ] = "Aklamalar";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Comentaris";
@@ -9135,7 +9135,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "由";
         Text[ arabic ] = "";
         Text[ greek ] = "";
-        Text[ korean ] = "로";
+        Text[ korean ] = "작성자";
         Text[ turkish ] = "Yazdran";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "per";
@@ -9191,7 +9191,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "這個檔案含有指向其他檔案的捷徑。\n要更新這個檔案?";
         Text[ arabic ] = "       .\n  ǿ";
         Text[ greek ] = "       .\n    ;";
-        Text[ korean ] = "이 파일은 다른 파일과 연결되어 있습니다.\n이 파일을 업데이트하겠습니까?";
+        Text[ korean ] = "이 파일은 다른 파일과 연결되어 있습니다.\n이 파일을 업데이트하시겠습니까?";
         Text[ turkish ] = "Bu dosyada baka dosyalara balantlar mevcut.\nBalantlar gncellensin mi?";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Aquest fitxer cont enllaos a altres fitxers.\nVoleu actualitzar-los?";
@@ -9219,7 +9219,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "這個檔案含有一些查詢,它們的結果無法被儲存。\n要重複執行這個查詢?";
         Text[ arabic ] = "        .\n    ʿ";
         Text[ greek ] = "    ,      .\n     ;";
-        Text[ korean ] = "이 파일에는 질의가 포함되어 있습니다. 이 질의 이 결과들은 저장되지 않았습니다 .\n이 질의를 반복 하겠습니까?";
+        Text[ korean ] = "이 파일에는 쿼리가 포함되어 있습니다. 이 쿼리의 결과가 저장되지 않았습니다.\n이 쿼리를 반복하시겠습니까?";
         Text[ turkish ] = "Bu dosya, sonular kaydedilmeyen sorgular ieriyor.\nBU sorgular yinelensin mi?";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Aquest fitxer cont consultes. Els resultats d'aquestes consultes no s'han desat.\nVoleu repetir-les?";
@@ -9302,7 +9302,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "無法輸入這個工作表。";
         Text[ arabic ] = "  .";
         Text[ greek ] = "       .";
-        Text[ korean ] = "시트를 삽입하지 못했습니다.";
+        Text[ korean ] = "표를 삽입하지 못했습니다.";
         Text[ turkish ] = "Tablo eklenemedi.";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "No s'ha pogut inserir la taula.";
@@ -9319,7 +9319,7 @@ Resource RID_GLOBSTR
         Text [ swedish ] = "Tabellerna kunde inte raderas." ;
         Text [ danish ] = "Det var ikke muligt at slette arkene." ;
         Text [ italian ] = "Impossibile cancellare le tabelle." ;
-        Text [ spanish ] = "No se pudieron eliminar las hojas de clculo" ;
+        Text [ spanish ] = "No se pudieron borrar las hojas de clculo." ;
         Text [ french ] = "Impossible de supprimer les feuilles de calcul" ;
         Text [ dutch ] = "De werkbladen kunnen niet worden gewist." ;
         Text[ chinese_simplified ] = "无法删除这个工作表。";
@@ -9385,7 +9385,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "空間不夠,無法插入。";
         Text[ arabic ] = "    .";
         Text[ greek ] = "         .";
-        Text[ korean ] = "시트에 삽입될 공간이 부족합니다. .";
+        Text[ korean ] = "시트에 삽입할 공간이 부족합니다.";
         Text[ turkish ] = "Sayfada ekleme iin yeterli alan yok.";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "No hi ha prou espai al full per inserir aqu.";
@@ -9412,7 +9412,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "剪貼簿的內容大於選取的區域。\n您還是要插入?";
         Text[ arabic ] = "   ޡ    .\n     ߿";
         Text[ greek ] = "         .\n '      ;";
-        Text[ korean ] = "클립보드의 내용이 선택된 영역의 내용보다  크기가 더 큽니다.\n그래도 삽입하겠습니까?";
+        Text[ korean ] = "클립보드의 내용이 선택된 범위의 내용보다 더 큽니다.\n그래도 삽입하시겠습니까?";
         Text[ turkish ] = "Pano ierii, seilen alandan daha byk.\nYine de eklemek istiyor musunuz?";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "El contingut del porta-retalls s ms gran que l'rea seleccionada.\nEl voleu inserir igualment?";
@@ -9461,13 +9461,13 @@ Resource RID_GLOBSTR
         Text [ portuguese ] = "Fonte e destino no se devem sobrepor." ;
         Text [ portuguese_brazilian ] = "Quell- und Zielbereich d?fen sich nicht ?erlappen." ;
         Text[ chinese_simplified ] = "源区域和目标区域不可以相互重叠。";
-        Text[ russian ] = "      .";
+        Text[ russian ] = "       .";
         Text[ polish ] = "Obszar rdowy i docelowy nie mog zachodzi na siebie.";
         Text[ japanese ] = "ソース範囲とターゲット範囲を重ねることはできません。";
         Text[ chinese_traditional ] = "源區域和目標區域不可以相互重疊。";
         Text[ arabic ] = "      .";
         Text[ greek ] = "        .";
-        Text[ korean ] = "소스 영역과 대상 영역이 겹쳐져서는 안됩니다.";
+        Text[ korean ] = "원본과 대상이 겹쳐져서는 안됩니다.";
         Text[ turkish ] = "Kaynak ve hedef aral rtmemelidir.";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "No es poden superposar la font i la destinaci.";
@@ -9494,7 +9494,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "圖形";
         Text[ arabic ] = "";
         Text[ greek ] = "";
-        Text[ korean ] = "그래픽";
+        Text[ korean ] = "그림";
         Text[ turkish ] = "Grafik";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Grfics";
@@ -9522,7 +9522,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "無效的名稱。";
         Text[ arabic ] = "  .";
         Text[ greek ] = " .";
-        Text[ korean ] = "유효하지 않은 이름.";
+        Text[ korean ] = "잘못된 이름.";
         Text[ turkish ] = "Geersiz ad.";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "El nom no s vlid.";
@@ -9565,7 +9565,7 @@ Resource RID_GLOBSTR
         Text [ english_us ] = "Invalid value." ;
         Text [ italian ] = "Il valore digitato non  valido." ;
         Text [ spanish ] = "Valor no vlido." ;
-        Text [ french ] = "Donne entre incorrecte." ;
+        Text [ french ] = "Valeur incorrecte" ;
         Text [ swedish ] = "Det inmatade vrdet r ogilitigt." ;
         Text [ danish ] = "Den indtastede vrdi er ugyldig." ;
         Text [ portuguese ] = "O valor  incorrecto." ;
@@ -9577,7 +9577,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "這個輸入的數值無效。";
         Text[ arabic ] = "   .";
         Text[ greek ] = "  .";
-        Text[ korean ] = "입력된 값은 유효하지 않음.";
+        Text[ korean ] = "입력된 값은 잘못됨.";
         Text[ turkish ] = "Girilen deer geerli deil.";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "El valor no s vlid.";
@@ -9650,7 +9650,7 @@ Resource RID_GLOBSTR
         Text [ danish ] = "Tilpas rkkehjde" ;
         Text [ italian ] = "Adatta altezza riga" ;
         Text [ spanish ] = "Ajustar altura de filas" ;
-        Text [ french ] = "Adapter haut.de lignes" ;
+        Text [ french ] = "Adapter la hauteur des lignes" ;
         Text [ dutch ] = "Rijhoogte aanpassen" ;
         Text[ chinese_simplified ] = "调整行高";
         Text[ russian ] = "  ";
@@ -9732,7 +9732,7 @@ Resource RID_GLOBSTR
         Text [ swedish ] = "Radera innehll" ;
         Text [ danish ] = "Slet indhold" ;
         Text [ italian ] = "Elimina contenuti" ;
-        Text [ spanish ] = "Eliminar contenidos" ;
+        Text [ spanish ] = "Borrar contenido" ;
         Text [ french ] = "Supprimer du contenu" ;
         Text [ dutch ] = "Inhoud wissen" ;
         Text[ chinese_simplified ] = "删除内容";
@@ -9742,7 +9742,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "刪除內容";
         Text[ arabic ] = " ";
         Text[ greek ] = " ";
-        Text[ korean ] = "내용 지우기";
+        Text[ korean ] = "내용 삭제";
         Text[ turkish ] = "erikleri sil";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Suprimeix el contingut";
@@ -9796,7 +9796,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "其他...";
         Text[ arabic ] = "...";
         Text[ greek ] = "...";
-        Text[ korean ] = "자세히...";
+        Text[ korean ] = "기타...";
         Text[ turkish ] = "Dier...";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Ms...";
@@ -9824,7 +9824,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "無效的區域";
         Text[ arabic ] = "  ";
         Text[ greek ] = "  ";
-        Text[ korean ] = "유효하지 않은 영역";
+        Text[ korean ] = "잘못된 범위";
         Text[ turkish ] = "Geersiz aralk";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "L'rea no s vlida";
@@ -10041,7 +10041,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "排序";
         Text[ arabic ] = "";
         Text[ greek ] = "";
-        Text[ korean ] = "정열";
+        Text[ korean ] = "정렬";
         Text[ turkish ] = "Sralama";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Ordena";
@@ -10258,7 +10258,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "<空缺>";
         Text[ arabic ] = "<>";
         Text[ greek ] = "<>";
-        Text[ korean ] = "<비어 있음>";
+        Text[ korean ] = "<빈>";
         Text[ turkish ] = "";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "";
@@ -10306,7 +10306,7 @@ Resource RID_GLOBSTR
         Text [ french ] = "#1 insr" ;
         Text [ dutch ] = "#1 ingevoegd" ;
         Text[ chinese_simplified ] = "已经加入 #1";
-        Text[ russian ] = "#1 ";
+        Text[ russian ] = "#1 ";
         Text[ polish ] = "#1 wstawiony";
         Text[ japanese ] = "#1 は挿入されました。";
         Text[ chinese_traditional ] = "已經加入 #1";
@@ -10329,11 +10329,11 @@ Resource RID_GLOBSTR
         Text [ swedish ] = "#1 raderad" ;
         Text [ danish ] = "#1 slettet" ;
         Text [ italian ] = "#1 cancellato" ;
-        Text [ spanish ] = "#1 eliminada" ;
+        Text [ spanish ] = "#1 borrado" ;
         Text [ french ] = "#1 supprim" ;
         Text [ dutch ] = "#1 gewist" ;
         Text[ chinese_simplified ] = "已经删除 #1";
-        Text[ russian ] = "#1 ";
+        Text[ russian ] = "#1 ";
         Text[ polish ] = "#1 usunity";
         Text[ japanese ] = "#1 は削除されました。";
         Text[ chinese_traditional ] = "已經刪除 #1";
@@ -10414,13 +10414,13 @@ Resource RID_GLOBSTR
         Text [ french ] = "Cette opration met fin  l'enregistrement des modifications.\nToute information concernant les modifications sera perdue.\n\nQuitter l'enregistrement ?\n\n" ;
         Text [ dutch ] = "Door deze activiteit wordt het registreren van wijzigingen beindigd.\\ nDe informatie over wijzigingen gaat hierdoor verloren.\n\nRegistratie beindigen?\n\n" ;
         Text[ chinese_simplified ] = "这个操作会中断更改记录。\n更改内容就会遗失。\n\n您还是要中断记录吗?\n\n";
-        Text[ russian ] = "     .\n     .\n\n    ?\n\n";
+        Text[ russian ] = "    .\n      .\n\n   ?\n\n";
         Text[ polish ] = "Akcja ta koczy zapisywanie zmian.\nProwadzi to do utraty informacji o zmianach.\n\nZakoczy zapisywanie?\n\n";
         Text[ japanese ] = "変更の記録をこのアクションで終了します。\n同時に変更した情報も完全に失われます。\n\n記録を終了しますか。\n\n";
         Text[ chinese_traditional ] = "這個動作會結束修改。\n修改內容就會流失。\n\n您還是要繼續?\n\n";
         Text[ arabic ] = "        .\n        .\n\n   \n\n";
         Text[ greek ] = "        .\n        .\n\n   ;\n\n";
-        Text[ korean ] = "이 실행으로 변경 기록이 종료됩니다.\n따라서 변경에 대한 정보가 손실될 것입니다 .\n\n기록을 종료하겠습니까?\n\n";
+        Text[ korean ] = "이 작동을 실행하면 변경 기록이 종료됩니다.\n그러면 변경 내용 정보가 손실됩니다.\n\n변경 기록을 종료하시겠습니까?\n\n";
         Text[ turkish ] = "Bu ilem ile deiikliklerin izlenmesi sona erdirilecek.\nDaha nceki deiiklikler ile ilgili tm bilgiler kaybolacak.\n\nKayt durdurulsun mu?\n\n";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Aquesta acci sortir dels canvis del registre.\nEs perdr tota la informaci sobre els canvis.\n\nVoleu sortir dels canvis del registre?\n\n";
@@ -10447,7 +10447,7 @@ Resource RID_GLOBSTR
         Text[ chinese_traditional ] = "在更新一個捷徑時無法關閉這個文件。";
         Text[ arabic ] = "          .";
         Text[ greek ] = "           .";
-        Text[ korean ] = "링크가 업데이트되는 동안에는 문서를 닫을 수 없습니다 .";
+        Text[ korean ] = "링크가 업데이트되는 동안에는 문서를 닫을 수 없습니다.";
         Text[ turkish ] = "Belge, balant gncellemesi yaplrken kapatlamaz.";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "No es pot tancar el document mentre s'actualitza un enlla.";
@@ -10559,6 +10559,11 @@ Resource RID_GLOBSTR
 
 
 
+
+
+
+
+
 
 
 
diff --git a/sc/source/ui/src/hdrcont.src b/sc/source/ui/src/hdrcont.src
index 5fc5ad09df28..2b5c0888d93f 100644
--- a/sc/source/ui/src/hdrcont.src
+++ b/sc/source/ui/src/hdrcont.src
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: hdrcont.src,v $
  *
- *  $Revision: 1.22 $
+ *  $Revision: 1.23 $
  *
- *  last change: $Author: kz $ $Date: 2001-11-16 23:05:33 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:27 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -69,7 +69,7 @@
         HelpId = FID_CELL_FORMAT ; \
         Text = "~Zellen formatieren..." ; \
         Text [ ENGLISH ] = "Format Cells..." ; \
-        Text [ finnish ] = "~Muotoile solut" ; \
+        Text [ finnish ] = "~Muotoile solut..." ; \
         Text [ danish ] = "Formater celler..." ; \
         Text [ french ] = "Formater les ~cellules..." ; \
         Text [ swedish ] = "Formatera ~celler..." ; \
@@ -82,14 +82,15 @@
         Text[ chinese_simplified ] = "单元格格式化(~F)...";\
         Text[ russian ] = " ...";\
         Text[ polish ] = "Formatuj komrki...";\
-        Text[ japanese ] = "セルの書式設定(~F)...";\
+        Text[ japanese ] = "セルの書式設定(~F)...";\
         Text[ chinese_traditional ] = "儲存格格式化(~F)...";\
         Text[ arabic ] = "... ";\
         Text[ greek ] = "~ ...";\
-        Text[ korean ] = "셀 포맷팅(~F)...";\
+        Text[ korean ] = "셀 서식 설정(~F)...";\
         Text[ turkish ] = "Hcreleri formatla...";\
         Text[ language_user1 ] = " ";\
-        Text[ catalan ] = "~Formatear celdas...";\
+        Text[ catalan ] = "~Formata les cel.les...";\
+        Text[ thai ] = "~รูปแบบเซลล์...";\
     };
 
 
@@ -100,7 +101,7 @@
         HelpId = SID_CUT ; \
         Text = "Auss~chneiden" ; \
         Text [ ENGLISH ] = "Cut" ; \
-        Text [ finnish ] = "L~eikkaa" ; \
+        Text [ finnish ] = "~Leikkaa" ; \
         Text [ danish ] = "Klip" ; \
         Text [ french ] = "Couper" ; \
         Text [ swedish ] = "Klipp ~ut" ; \
@@ -121,7 +122,8 @@
         Text[ korean ] = "잘라내기(~T)";\
         Text[ turkish ] = "~Kes";\
         Text[ language_user1 ] = " ";\
-        Text[ catalan ] = "Co~rtar";\
+        Text[ catalan ] = "Retal~la";\
+        Text[ thai ] = "ตั~ด";\
     };\
     MenuItem\
     {\
@@ -129,7 +131,7 @@
         HelpId = SID_COPY ; \
         Text = "Kopie~ren" ; \
         Text [ ENGLISH ] = "Copy" ; \
-        Text [ finnish ] = "~Kopioi" ; \
+        Text [ finnish ] = "K~opioi" ; \
         Text [ danish ] = "Kopier" ; \
         Text [ french ] = "Copier" ; \
         Text [ swedish ] = "Kopie~ra" ; \
@@ -142,14 +144,15 @@
         Text[ chinese_simplified ] = "复制(~C)";\
         Text[ russian ] = "";\
         Text[ polish ] = "Kopiuj";\
-        Text[ japanese ] = "コピー(~C)";\
+        Text[ japanese ] = "コピー(~C)";\
         Text[ chinese_traditional ] = "複製(~C)";\
         Text[ arabic ] = "";\
         Text[ greek ] = "~";\
         Text[ korean ] = "복사(~C)";\
         Text[ turkish ] = "Kopyala";\
         Text[ language_user1 ] = " ";\
-        Text[ catalan ] = "Co~piar";\
+        Text[ catalan ] = "~Copia";\
+        Text[ thai ] = "~คัดลอก";\
     };\
     MenuItem\
     {\
@@ -158,7 +161,7 @@
         /* ### ACHTUNG: Neuer Text in Resource? Einfgen : Einfgen */\
         Text = "E~infgen" ; \
         Text [ ENGLISH ] = "Paste" ; \
-        Text [ finnish ] = "L~iit?" ; \
+        Text [ finnish ] = "Lii~t" ; \
         Text [ danish ] = "St i~nd" ; \
         Text [ french ] = "~Insrer" ; \
         Text [ swedish ] = "Klistra ~in" ; \
@@ -169,17 +172,18 @@
         Text [ italian ] = "~Incolla" ; \
         Text [ portuguese ] = "Colar" ; \
         Text [ portuguese_brazilian ] = "Einf?en" ; \
-        Text[ chinese_simplified ] = "插入(~P)";\
+        Text[ chinese_simplified ] = "粘贴(~P)";\
         Text[ russian ] = "~";\
         Text[ polish ] = "~Wklej";\
         Text[ japanese ] = "貼り付け(~P)";\
-        Text[ chinese_traditional ] = "插入(~P)";\
+        Text[ chinese_traditional ] = "貼上(~P)";\
         Text[ arabic ] = "~";\
         Text[ greek ] = "~";\
         Text[ korean ] = "붙여넣기(~P)";\
         Text[ turkish ] = "~Yaptr";\
         Text[ language_user1 ] = " ";\
-        Text[ catalan ] = "P~egar";\
+        Text[ catalan ] = "~Enganxa";\
+        Text[ thai ] = "~วาง";\
     };
 
  //-------------------------------------------------------------------------------
@@ -210,17 +214,18 @@ Menu RID_POPUP_ROWHEADER
             Text [ italian ] = "Altezza riga..." ;
             Text [ portuguese ] = "Altu~ra da linha..." ;
             Text [ portuguese_brazilian ] = "Zeilenh?e..." ;
-            Text[ chinese_simplified ] = "行高(~H)...";
+            Text[ chinese_simplified ] = "行高(~G)...";
             Text[ russian ] = " ...";
             Text[ polish ] = "Wysoko linii...";
-            Text[ japanese ] = "行の高さ(~H)...";
-            Text[ chinese_traditional ] = "列高(~H)...";
+            Text[ japanese ] = "行の高さ(~G)...";
+            Text[ chinese_traditional ] = "列高(~G)...";
             Text[ arabic ] = " ...";
             Text[ greek ] = " ~...";
-            Text[ korean ] = "행높이(~H)...";
+            Text[ korean ] = "행높이(~G)...";
             Text[ turkish ] = "Satr ykseklii...";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "~Altura de fila...";
+            Text[ catalan ] = "~Alada...";
+            Text[ thai ] = "~ความสูง...";
         };
         MenuItem
         {
@@ -247,10 +252,11 @@ Menu RID_POPUP_ROWHEADER
             Text[ chinese_traditional ] = "最適列高(~R)...";
             Text[ arabic ] = "...  ";
             Text[ greek ] = "~  ...";
-            Text[ korean ] = "최적  행 높이(~R)...";
+            Text[ korean ] = "최적 행 높이(~R)...";
             Text[ turkish ] = "~En uygun ykseklik...";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "~Optimar altura de fila...";
+            Text[ catalan ] = "Alada ptima de la ~fila...";
+            Text[ thai ] = "ความยาวแ~ถวที่เหมาะที่สุด...";
         };
          //------------------------------
         MenuItem { Separator = TRUE ; };
@@ -262,7 +268,7 @@ Menu RID_POPUP_ROWHEADER
             /* ### ACHTUNG: Neuer Text in Resource? Zeilen einfgen : Zeilen einfgen */
             Text = "Zeilen ~einfgen" ;
             Text [ ENGLISH ] = "Insert rows" ;
-            Text [ finnish ] = "~Lis?? rivit" ;
+            Text [ finnish ] = "~Lis rivit" ;
             Text [ danish ] = "Indst rkker" ;
             Text [ french ] = "I~nsrer des lignes" ;
             Text [ swedish ] = "Infoga rad~er" ;
@@ -283,7 +289,8 @@ Menu RID_POPUP_ROWHEADER
             Text[ korean ] = "행 삽입(~I)";
             Text[ turkish ] = "Satr ekle";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "~Insertar filas";
+            Text[ catalan ] = "~Insereix files";
+            Text[ thai ] = "แ~ทรกแถว";
         };
         MenuItem
         {
@@ -296,7 +303,7 @@ Menu RID_POPUP_ROWHEADER
             /* ### ACHTUNG: Neuer Text in Resource? Ganze Zeilen lschen : Ganze Zeilen lschen */
             Text [ dutch ] = "Rijen ~wissen" ;
             Text [ italian ] = "Elimina righe" ;
-            Text [ spanish ] = "~Eliminar filas" ;
+            Text [ spanish ] = "~Borrar filas" ;
             Text [ french ] = "~Supprimer des lignes" ;
             Text [ swedish ] = "Radera ra~der" ;
             Text [ danish ] = "Slet rkker" ;
@@ -312,8 +319,9 @@ Menu RID_POPUP_ROWHEADER
             Text[ korean ] = "행 삭제(~D)";
             Text[ turkish ] = "Satr sil";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "~Eliminar filas";
+            Text[ catalan ] = "~Suprimeix les files";
             Text[ finnish ] = "~Poista rivit";
+            Text[ thai ] = "~ลบแถว";
         };
         MenuItem
         {
@@ -326,12 +334,12 @@ Menu RID_POPUP_ROWHEADER
             Text [ italian ] = "Canc~ella contenuti..." ;
             Text [ portuguese_brazilian ] = "Apa~gar Dados..." ;
             Text [ portuguese ] = "Eli~minar contedos..." ;
-            Text [ finnish ] = "~Poista sis?ll?..." ;
+            Text [ finnish ] = "~Poista sislt..." ;
             Text [ danish ] = "Slet indhold..." ;
             Text [ french ] = "S~upprimer du contenu..." ;
             Text [ swedish ] = "Radera inneh~ll..." ;
             Text [ dutch ] = "~Inhoud wissen..." ;
-            Text [ spanish ] = "Eliminar contenidos..." ;
+            Text [ spanish ] = "~Borrar contenido..." ;
             Text [ english_us ] = "De~lete Contents..." ;
             /* ### ACHTUNG: Neuer Text in Resource? Ausgewhlte Inhalte lschen (Formeln, Formate etc.) : Ausgewhlte Inhalte lschen (Formeln, Formate etc.) */
             Text[ chinese_simplified ] = "删除内容(~L)...";
@@ -344,7 +352,8 @@ Menu RID_POPUP_ROWHEADER
             Text[ korean ] = "내용 삭제(~L)...";
             Text[ turkish ] = "erikleri sil...";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Eliminar contenidos...";
+            Text[ catalan ] = "Su~primeix el contingut...";
+            Text[ thai ] = "ล~บเนื้อหา...";
         };
          //------------------------------
         MenuItem { Separator = TRUE ; };
@@ -360,7 +369,7 @@ Menu RID_POPUP_ROWHEADER
             Text [ french ] = "M~asquer" ;
             Text [ swedish ] = "~Dlj" ;
             Text [ dutch ] = "~Verbergen" ;
-            Text [ spanish ] = "~Ocultar" ;
+            Text [ spanish ] = "Ocultar" ;
             Text [ english_us ] = "~Hide" ;
             Text [ italian ] = "Nascondi" ;
             Text [ portuguese ] = "O~cultar" ;
@@ -375,7 +384,8 @@ Menu RID_POPUP_ROWHEADER
             Text[ korean ] = "숨기기(~H)";
             Text[ turkish ] = "~Gizle";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "~Ocultar";
+            Text[ catalan ] = "~Oculta";
+            Text[ thai ] = "~ซ่อน";
         };
         MenuItem
         {
@@ -383,7 +393,7 @@ Menu RID_POPUP_ROWHEADER
             HelpId = FID_ROW_SHOW ;
             Text = "Ein~blenden" ;
             Text [ ENGLISH ] = "Show" ;
-            Text [ finnish ] = "~N?yt?" ;
+            Text [ finnish ] = "~Nyt" ;
             Text [ danish ] = "Vis" ;
             Text [ french ] = "~Afficher" ;
             Text [ swedish ] = "~Visa" ;
@@ -400,10 +410,11 @@ Menu RID_POPUP_ROWHEADER
             Text[ chinese_traditional ] = "顯示(~S)";
             Text[ arabic ] = "";
             Text[ greek ] = "~";
-            Text[ korean ] = "나타내기(~S)";
+            Text[ korean ] = "표시(~S)";
             Text[ turkish ] = "G~ster";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "~Mostrar";
+            Text[ catalan ] = "~Mostra";
+            Text[ thai ] = "แ~สดง";
         };
          //------------------------------
         MenuItem { Separator = TRUE ; };
@@ -414,29 +425,30 @@ Menu RID_POPUP_ROWHEADER
             Identifier = FID_PASTE_CONTENTS ;
             HelpId = FID_PASTE_CONTENTS ;
             Text = "In~halte einfgen..." ;
-            Text[ chinese_simplified ] = "插入内容(~S)...";
+            Text[ chinese_simplified ] = "粘贴内容(~A)...";
             Text [ ENGLISH ] = "Paste ~Special..." ;
             Text [ norwegian ] = "Paste ~Special..." ;
             Text [ italian ] = "Incolla ~speciale..." ;
             Text [ portuguese_brazilian ] = "Colar ~Especial..." ;
             Text [ portuguese ] = "Colar e~special..." ;
-            Text [ finnish ] = "Liit? ~m??r?ten" ;
+            Text [ finnish ] = "Liit ~mrten..." ;
             Text [ danish ] = "Indst ind~hold..." ;
             Text [ french ] = "Colla~ge spcial..." ;
             Text [ swedish ] = "Klistra in inne~hll..." ;
             Text [ dutch ] = "Plakken ~speciaal..." ;
             Text [ spanish ] = "Peg~ado especial..." ;
             Text [ english_us ] = "P~aste Special..." ;
-            Text[ russian ] = "~ ...";
+            Text[ russian ] = " ...";
             Text[ polish ] = "~Wstaw zawarto...";
-            Text[ japanese ] = "形式を選択して貼り付け(~S)...";
-            Text[ chinese_traditional ] = "插入內容(~S)...";
+            Text[ japanese ] = "形式を選択して貼り付け(~A)...";
+            Text[ chinese_traditional ] = "貼上內容(~A)...";
             Text[ arabic ] = " ...";
             Text[ greek ] = " ~...";
-            Text[ korean ] = "선택하여 붙여넣기( ~S)...";
+            Text[ korean ] = "선택하여 붙여넣기(~A)...";
             Text[ turkish ] = "~zel yaptr...";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Peg~ado especial...";
+            Text[ catalan ] = "Enganxament ~especial...";
+            Text[ thai ] = "วาง~พิเศษ...";
         };
     };
 };
@@ -478,7 +490,8 @@ Menu RID_POPUP_COLHEADER
             Text[ korean ] = "열 너비(~U)...";
             Text[ turkish ] = "Stun genilii...";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "~Ancho de columna...";
+            Text[ catalan ] = "Amplada de la col~umna...";
+            Text[ thai ] = "ความกว้างคอลัม~น์...";
         };
         MenuItem
         {
@@ -497,7 +510,7 @@ Menu RID_POPUP_COLHEADER
             Text [ portuguese ] = "~Optimizar largura da coluna..." ;
             Text [ portuguese_brazilian ] = "Optimale Spaltenbreite..." ;
             Text[ chinese_simplified ] = "最佳列宽(~P)...";
-            Text[ russian ] = "  ...";
+            Text[ russian ] = "  ...";
             Text[ polish ] = "Optymalna szeroko kolumny...";
             Text[ japanese ] = "最適な列幅(~P)...";
             Text[ chinese_traditional ] = "最適欄寬(~P)...";
@@ -506,7 +519,8 @@ Menu RID_POPUP_COLHEADER
             Text[ korean ] = "최적 열 너비(~P)...";
             Text[ turkish ] = "En uygun genilik...";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "~Optimar ancho de columna...";
+            Text[ catalan ] = "Amplada ~ptima de la columna...";
+            Text[ thai ] = "ความกว้างคอลัมน์~ที่เหมาะที่สุด...";
         };
          //------------------------------
         MenuItem { Separator = TRUE ; };
@@ -518,7 +532,7 @@ Menu RID_POPUP_COLHEADER
             /* ### ACHTUNG: Neuer Text in Resource? Spalten einfgen : Spalten einfgen */
             Text = "Spalten ~einfgen" ;
             Text [ ENGLISH ] = "Insert columns" ;
-            Text [ finnish ] = "~Lis?? sarakkeet" ;
+            Text [ finnish ] = "~Lis sarakkeet" ;
             Text [ danish ] = "Indst kolonner" ;
             Text [ french ] = "I~nsrer des colonnes" ;
             Text [ swedish ] = "Infoga ~kolumner" ;
@@ -539,7 +553,8 @@ Menu RID_POPUP_COLHEADER
             Text[ korean ] = "열 삽입(~I)";
             Text[ turkish ] = "Stun ekle";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "~Insertar columnas";
+            Text[ catalan ] = "~Insereix columnes";
+            Text[ thai ] = "แ~ทรกคอลัมน์";
         };
         MenuItem
         {
@@ -551,7 +566,7 @@ Menu RID_POPUP_COLHEADER
             Text [ english_us ] = "~Delete Columns" ;
             /* ### ACHTUNG: Neuer Text in Resource? Ganze Spalten lschen : Ganze Spalten lschen */
             Text [ italian ] = "Elimina colonne" ;
-            Text [ spanish ] = "~Eliminar columnas" ;
+            Text [ spanish ] = "~Borrar columnas" ;
             Text [ french ] = "S~upprimer des colonnes" ;
             Text [ dutch ] = "K~olommen wissen" ;
             Text [ swedish ] = "Radera ko~lumner" ;
@@ -568,8 +583,9 @@ Menu RID_POPUP_COLHEADER
             Text[ korean ] = "열 삭제(~D)";
             Text[ turkish ] = "Stun sil";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "~Eliminar columnas";
+            Text[ catalan ] = "~Suprimeix les columnes";
             Text[ finnish ] = "~Poista sarakkeet";
+            Text[ thai ] = "~ลบคอลัมน์";
         };
         MenuItem
         {
@@ -582,12 +598,12 @@ Menu RID_POPUP_COLHEADER
             Text [ italian ] = "Can~cella contenuti..." ;
             Text [ portuguese_brazilian ] = "Apa~gar Dados..." ;
             Text [ portuguese ] = "Eliminar co~ntedos..." ;
-            Text [ finnish ] = "Pois~ta sis?lt?" ;
+            Text [ finnish ] = "Pois~ta sislt..." ;
             Text [ danish ] = "Slet indhold..." ;
             Text [ french ] = "~Supprimer du contenu..." ;
             Text [ swedish ] = "Radera ~innehll..." ;
-            Text [ dutch ] = "I~nhoud wissen..." ;
-            Text [ spanish ] = "~Eliminar contenidos..." ;
+            Text [ dutch ] = "In~houd wissen..." ;
+            Text [ spanish ] = "~Borrar contenido..." ;
             Text [ english_us ] = "D~elete Contents..." ;
             /* ### ACHTUNG: Neuer Text in Resource? Ausgewhlte Inhalte lschen (Formeln, Formate etc.) : Ausgewhlte Inhalte lschen (Formeln, Formate etc.) */
             Text[ chinese_simplified ] = "删除内容(~E)...";
@@ -600,7 +616,8 @@ Menu RID_POPUP_COLHEADER
             Text[ korean ] = "내용 삭제(~E)...";
             Text[ turkish ] = "erikleri sil...";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "~Eliminar contenidos...";
+            Text[ catalan ] = "S~uprimeix el contingut...";
+            Text[ thai ] = "ล~บเนื้อหา...";
         };
          //------------------------------
         MenuItem { Separator = TRUE ; };
@@ -616,7 +633,7 @@ Menu RID_POPUP_COLHEADER
             Text [ french ] = "~Masquer" ;
             Text [ swedish ] = "~Dlj" ;
             Text [ dutch ] = "~Verbergen" ;
-            Text [ spanish ] = "~Ocultar" ;
+            Text [ spanish ] = "Ocultar" ;
             Text [ english_us ] = "~Hide" ;
             Text [ italian ] = "Nascondi" ;
             Text [ portuguese ] = "O~cultar" ;
@@ -631,7 +648,8 @@ Menu RID_POPUP_COLHEADER
             Text[ korean ] = "숨기기(~H)";
             Text[ turkish ] = "~Gizle";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "~Ocultar";
+            Text[ catalan ] = "~Oculta";
+            Text[ thai ] = "~ซ่อน";
         };
         MenuItem
         {
@@ -639,7 +657,7 @@ Menu RID_POPUP_COLHEADER
             HelpId = FID_COL_SHOW ;
             Text = "Ein~blenden" ;
             Text [ ENGLISH ] = "Show" ;
-            Text [ finnish ] = "~N?yt?" ;
+            Text [ finnish ] = "~Nyt" ;
             Text [ danish ] = "Vis" ;
             Text [ french ] = "A~fficher" ;
             Text [ swedish ] = "~Visa" ;
@@ -656,10 +674,11 @@ Menu RID_POPUP_COLHEADER
             Text[ chinese_traditional ] = "顯示(~S)";
             Text[ arabic ] = "";
             Text[ greek ] = "~";
-            Text[ korean ] = "나타내기(~S)";
+            Text[ korean ] = "표시(~S)";
             Text[ turkish ] = "G~ster";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "~Mostrar";
+            Text[ catalan ] = "~Mostra";
+            Text[ thai ] = "แ~สดง";
         };
          //------------------------------
         MenuItem { Separator = TRUE ; };
@@ -670,29 +689,30 @@ Menu RID_POPUP_COLHEADER
             Identifier = FID_PASTE_CONTENTS ;
             HelpId = FID_PASTE_CONTENTS ;
             Text = "In~halte einfgen..." ;
-            Text[ chinese_simplified ] = "插入内容(~S)...";
+            Text[ chinese_simplified ] = "粘贴内容(~S)...";
             Text [ ENGLISH ] = "Paste ~Special..." ;
             Text [ norwegian ] = "Paste ~Special..." ;
             Text [ italian ] = "Incolla ~speciale..." ;
             Text [ portuguese_brazilian ] = "Colar ~Especial..." ;
             Text [ portuguese ] = "Colar e~special..." ;
-            Text [ finnish ] = "Liit? ~m??r?ten" ;
+            Text [ finnish ] = "Liit ~mrten..." ;
             Text [ danish ] = "Indst ind~hold..." ;
             Text [ french ] = "Colla~ge spcial..." ;
             Text [ swedish ] = "Klistra in inne~hll..." ;
             Text [ dutch ] = "Plakken ~speciaal..." ;
             Text [ spanish ] = "Peg~ado especial..." ;
             Text [ english_us ] = "Paste ~Special..." ;
-            Text[ russian ] = "~ ...";
+            Text[ russian ] = " ...";
             Text[ polish ] = "~Wstaw zawarto...";
             Text[ japanese ] = "形式を選択して貼り付け(~S)...";
-            Text[ chinese_traditional ] = "插入內容(~S)...";
+            Text[ chinese_traditional ] = "貼上內容(~S)...";
             Text[ arabic ] = " ...";
             Text[ greek ] = " ~...";
-            Text[ korean ] = "선택하여 붙여넣기( ~S)...";
+            Text[ korean ] = "선택하여 붙여넣기(~S)...";
             Text[ turkish ] = "~zel yaptr...";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Peg~ado especial...";
+            Text[ catalan ] = "Enganxament ~especial...";
+            Text[ thai ] = "วาง~พิเศษ...";
         };
     };
 };
@@ -710,3 +730,8 @@ Menu RID_POPUP_COLHEADER
 
 
 
+
+
+
+
+
diff --git a/sc/source/ui/src/miscdlgs.src b/sc/source/ui/src/miscdlgs.src
index 732442db020b..2577d50c18d0 100644
--- a/sc/source/ui/src/miscdlgs.src
+++ b/sc/source/ui/src/miscdlgs.src
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: miscdlgs.src,v $
  *
- *  $Revision: 1.61 $
+ *  $Revision: 1.62 $
  *
- *  last change: $Author: kz $ $Date: 2002-11-27 17:04:22 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:27 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -79,7 +79,7 @@ ModalDialog RID_SCDLG_DELCELL
     Text [ french ] = "Supprimer des cellules" ;
     Text [ swedish ] = "Radera celler" ;
     Text [ dutch ] = "Cellen wissen" ;
-    Text [ spanish ] = "Eliminar celdas" ;
+    Text [ spanish ] = "Borrar celdas" ;
     Text [ english_us ] = "Delete Cells" ;
     Moveable = TRUE ;
     Closeable = FALSE ;
@@ -117,7 +117,7 @@ ModalDialog RID_SCDLG_DELCELL
         Text [ french ] = "Supprimer des ~colonnes entires" ;
         Text [ swedish ] = "Radera hela ~kolumner" ;
         Text [ dutch ] = "Hele ~kolommen verwijderen" ;
-        Text [ spanish ] = "Eli~minar columnas completas" ;
+        Text [ spanish ] = "~Borrar columnas completas" ;
         Text [ english_us ] = "Delete entire ~column(s)" ;
         TabStop = TRUE ;
         Text[ chinese_simplified ] = "删除整列(~C)";
@@ -148,7 +148,7 @@ ModalDialog RID_SCDLG_DELCELL
         Text [ french ] = "Supprimer des ~lignes entires" ;
         Text [ swedish ] = "Radera hela ~rader" ;
         Text [ dutch ] = "Hele ~rijen verwijderen" ;
-        Text [ spanish ] = "~Eliminar filas completas" ;
+        Text [ spanish ] = "~Borrar filas completas" ;
         Text [ english_us ] = "Delete entire ~row(s)" ;
         TabStop = TRUE ;
         Text[ chinese_simplified ] = "删除整行(~R)";
@@ -499,7 +499,7 @@ ModalDialog RID_SCDLG_DELCONT
     Text [ french ] = "Supprimer du contenu" ;
     Text [ swedish ] = "Radera innehll" ;
     Text [ dutch ] = "Inhoud wissen" ;
-    Text [ spanish ] = "Eliminar contenidos" ;
+    Text [ spanish ] = "Borrar contenido" ;
     Text [ english_us ] = "Delete Contents" ;
     Moveable = TRUE ;
     Closeable = FALSE ;
@@ -537,7 +537,7 @@ ModalDialog RID_SCDLG_DELCONT
         Text [ french ] = "Supprimer ~tout" ;
         Text [ swedish ] = "Radera ~allt" ;
         Text [ dutch ] = "Alles ~wissen" ;
-        Text [ spanish ] = "Eliminar ~todo" ;
+        Text [ spanish ] = "Borrar ~todo" ;
         Text [ english_us ] = "Delete ~all" ;
         TabStop = TRUE ;
         Text[ chinese_simplified ] = "全部删除(~A)";
@@ -640,7 +640,7 @@ ModalDialog RID_SCDLG_DELCONT
         Text[ chinese_traditional ] = "日期和時間(~D)";
         Text[ arabic ] = " ";
         Text[ greek ] = "  ";
-        Text[ korean ] = "날짜 & 시간(~D)";
+        Text[ korean ] = "날짜 및 시간(~D)";
         Text[ turkish ] = "~Tarih & Saat";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "~Dia i hora";
@@ -972,7 +972,7 @@ ModalDialog RID_SCDLG_INSCONT
         Text[ chinese_traditional ] = "日期和時間(~D)";
         Text[ arabic ] = " ";
         Text[ greek ] = "  ";
-        Text[ korean ] = "일자 & 시간(~D)";
+        Text[ korean ] = "날짜 및 시간(~D)";
         Text[ turkish ] = "~Tarih & Saat";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "~Dia i hora";
@@ -1052,7 +1052,7 @@ ModalDialog RID_SCDLG_INSCONT
         Text[ russian ] = "O~bjects";
         Text[ greek ] = "O~bjects";
         Text[ dutch ] = "O~bjects";
-        Text[ french ] = "Objects";
+        Text[ french ] = "Objets";
         Text[ spanish ] = "O~bjetos";
         Text[ finnish ] = "O~bjects";
         Text[ italian ] = "Oggetti";
@@ -1194,7 +1194,7 @@ ModalDialog RID_SCDLG_INSCONT
         Text [ dutch ] = "~Aftrekken" ;
         Text [ english_us ] = "S~ubtract" ;
         Text [ italian ] = "Sottrai" ;
-        Text [ spanish ] = "Sustraer" ;
+        Text [ spanish ] = "~Substraer" ;
         Text [ french ] = "~Soustraction" ;
         Text [ swedish ] = "Su~btrahera" ;
         Text [ danish ] = "Subtraher" ;
@@ -1323,7 +1323,7 @@ ModalDialog RID_SCDLG_INSCONT
         Text[ chinese_traditional ] = "跳過空儲存格(~K)";
         Text[ arabic ] = "  ";
         Text[ greek ] = "  ";
-        Text[ korean ] = "빈 셀 넘어가기(~K)";
+        Text[ korean ] = "빈 셀 건너뛰기(~K)";
         Text[ turkish ] = "~Bo hcreleri atla";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Ome~t les cel.les buides";
@@ -1352,7 +1352,7 @@ ModalDialog RID_SCDLG_INSCONT
         Text[ chinese_traditional ] = "行欄替換(~T)";
         Text[ arabic ] = " ";
         Text[ greek ] = "";
-        Text[ korean ] = "뒤 바꾸기(~T)";
+        Text[ korean ] = "바꾸기(~T)";
         Text[ turkish ] = "Dntr";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "~Transposa";
@@ -1439,7 +1439,7 @@ ModalDialog RID_SCDLG_INSCONT
         Text[ chinese_traditional ] = "不移動(~I)";
         Text[ arabic ] = " ";
         Text[ greek ] = "   ";
-        Text[ korean ] = "밀어내기 금지(~I)";
+        Text[ korean ] = "이동하지 않음(~I)";
         Text[ turkish ] = "~Tama";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "No desplacis";
@@ -1620,7 +1620,7 @@ ModalDialog RID_SCDLG_MOVETAB
         Text[ chinese_traditional ] = "加入文件(~D)";
         Text[ arabic ] = " ";
         Text[ greek ] = " ";
-        Text[ korean ] = "문서에(~D)";
+        Text[ korean ] = "문서로(~D)";
         Text[ turkish ] = "~Belgeye";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Al ~document";
@@ -1658,7 +1658,7 @@ ModalDialog RID_SCDLG_MOVETAB
         Text[ chinese_traditional ] = "前置於(~I)";
         Text[ arabic ] = " ";
         Text[ greek ] = "  ";
-        Text[ korean ] = "앞에 삽입(~I)";
+        Text[ korean ] = "다음 표 앞에 삽입(~I)";
         Text[ turkish ] = "~ne ekle";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "~Insereix abans de";
@@ -1715,7 +1715,7 @@ ModalDialog RID_SCDLG_MOVETAB
         Text [ french ] = "- Nouveau document -" ;
         Text [ swedish ] = "- nytt dokument -" ;
         Text [ dutch ] = "- nieuw document -" ;
-        Text [ spanish ] = "- nuevo documento -" ;
+        Text [ spanish ] = "- documento nuevo -" ;
         Text [ english_us ] = "- new document -" ;
         Text[ chinese_simplified ] = "- 新文档 -";
         Text[ russian ] = "-   -";
@@ -1948,13 +1948,13 @@ ModalDialog RID_SCDLG_COL_MAN
         Text [ swedish ] = "~Standardvrde" ;
         Text [ danish ] = "Standardvrdi" ;
         Text[ chinese_simplified ] = "默认值(~D)";
-        Text[ russian ] = " ";
+        Text[ russian ] = " ";
         Text[ polish ] = "Warto domylna";
         Text[ japanese ] = "標準値(~D)";
         Text[ chinese_traditional ] = "默認值(~D)";
         Text[ arabic ] = " ";
         Text[ greek ] = " ";
-        Text[ korean ] = "기본 값(~D)";
+        Text[ korean ] = "기본값(~D)";
         Text[ turkish ] = "~Standart deer";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Valor per ~defecte";
@@ -2075,13 +2075,13 @@ ModalDialog RID_SCDLG_COL_OPT
         Text [ swedish ] = "~Standardvrde" ;
         Text [ danish ] = "~Standardvrdi" ;
         Text[ chinese_simplified ] = "默认值(~D)";
-        Text[ russian ] = " ";
+        Text[ russian ] = " ";
         Text[ polish ] = "Warto domylna";
         Text[ japanese ] = "標準値(~D)";
         Text[ chinese_traditional ] = "默認值(~D)";
         Text[ arabic ] = " ";
         Text[ greek ] = " ";
-        Text[ korean ] = "기본 값(~D)";
+        Text[ korean ] = "기본값(~D)";
         Text[ turkish ] = "~Standart deer";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Valor per ~defecte";
@@ -2203,13 +2203,13 @@ ModalDialog RID_SCDLG_ROW_MAN
         Text [ danish ] = "~Standardvrdi" ;
         Text[ chinese_simplified ] = "默认值(~D)";
         Text[ language_user1 ] = " ";
-        Text[ russian ] = " ";
+        Text[ russian ] = " ";
         Text[ polish ] = "Warto domylna";
         Text[ japanese ] = "標準値(~D)";
         Text[ chinese_traditional ] = "默認值(~D)";
         Text[ arabic ] = " ";
         Text[ greek ] = " ";
-        Text[ korean ] = "기본 값(~D)";
+        Text[ korean ] = "기본값(~D)";
         Text[ turkish ] = "~Standart deer";
         Text[ catalan ] = "Valor per ~defecte";
         Text[ finnish ] = "Oletusarvo";
@@ -2328,13 +2328,13 @@ ModalDialog RID_SCDLG_ROW_OPT
         Text [ swedish ] = "~Standardvrde" ;
         Text [ danish ] = "~Standardvrdi" ;
         Text[ chinese_simplified ] = "默认值(~D)";
-        Text[ russian ] = " ";
+        Text[ russian ] = " ";
         Text[ polish ] = "Warto domylna";
         Text[ japanese ] = "標準値(~D)";
         Text[ chinese_traditional ] = "默認值(~D)";
         Text[ arabic ] = " ";
         Text[ greek ] = " ";
-        Text[ korean ] = "기본 값(~D)";
+        Text[ korean ] = "기본값(~D)";
         Text[ turkish ] = "~Standart deer";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Valor per ~defecte";
@@ -2955,7 +2955,7 @@ ModalDialog RID_SCDLG_FILLSERIES
         Text [ portuguese ] = "AutoPreenchimento" ;
         Text [ finnish ] = "Automaattinen tytt" ;
         Text [ danish ] = "AutoFyld" ;
-        Text [ french ] = "~Rempl. automatique" ;
+        Text [ french ] = "Remplissage automatique" ;
         Text [ swedish ] = "Auto~Fyll" ;
         Text [ dutch ] = "~Automatisch invullen" ;
         Text [ spanish ] = "~Relleno automtico" ;
@@ -2998,7 +2998,7 @@ ModalDialog RID_SCDLG_FILLSERIES
         Text[ chinese_traditional ] = "排列類型";
         Text[ arabic ] = " ";
         Text[ greek ] = " ";
-        Text[ korean ] = "형식";
+        Text[ korean ] = "연속 데이터 유형";
         Text[ turkish ] = "Sra tr";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Tipus";
@@ -3146,7 +3146,7 @@ ModalDialog RID_SCDLG_FILLSERIES
         Text[ chinese_traditional ] = "無效值";
         Text[ arabic ] = "  ";
         Text[ greek ] = "  ";
-        Text[ korean ] = "유효하지 않은 값";
+        Text[ korean ] = "잘못된 값";
         Text[ turkish ] = "Geersiz deer";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "El valor no s vlid";
@@ -3313,7 +3313,7 @@ ModalDialog RID_SCDLG_GROUP
         Text[ chinese_traditional ] = "啟動用於";
         Text[ arabic ] = "  ";
         Text[ greek ] = " ";
-        Text[ korean ] = "그룹화하는 대상";
+        Text[ korean ] = "활성화 대상";
         Text[ turkish ] = "unun iin etkinletir:";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Inclou";
@@ -3341,7 +3341,7 @@ ModalDialog RID_SCDLG_GROUP
         Text[ chinese_traditional ] = "取消群組";
         Text[ arabic ] = "   ";
         Text[ greek ] = " ";
-        Text[ korean ] = "의 실행 취소";
+        Text[ korean ] = "그룹 해제 대상";
         Text[ turkish ] = "unun iin etkinliini kaldr:";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Desactiva durant";
@@ -3367,7 +3367,7 @@ ModalDialog RID_SCDLG_GROUP
     Text[ chinese_traditional ] = "群組";
     Text[ arabic ] = "";
     Text[ greek ] = "";
-    Text[ korean ] = "그룹 만들기";
+    Text[ korean ] = "그룹";
     Text[ turkish ] = "Grup";
     Text[ language_user1 ] = " ";
     Text[ catalan ] = "Grup";
@@ -3443,21 +3443,21 @@ ModalDialog RID_SCDLG_NAMES_CREATE
         Text [ ENGLISH ] = "First row" ;
         Text [ dutch ] = "~Koptekst" ;
         Text [ english_us ] = "~Top row" ;
-        Text [ italian ] = "Riga d'intestazione" ;
-        Text [ spanish ] = "~Encabezamiento" ;
-        Text [ french ] = "~En-tte" ;
-        Text [ swedish ] = "Si~dhuvud" ;
+        Text [ italian ] = "Riga superiore" ;
+        Text [ spanish ] = "~Fila superior" ;
+        Text [ french ] = "Ligne suprieure" ;
+        Text [ swedish ] = "~versta raden" ;
         Text [ danish ] = "verste rkke" ;
         Text [ portuguese_brazilian ] = "~Kopfzeile" ;
         Text [ portuguese ] = "~Cabealho" ;
-        Text[ chinese_simplified ] = "页眉(~E)";
+        Text[ chinese_simplified ] = "上行(~T)";
         Text[ russian ] = " ";
         Text[ polish ] = "~nagwka";
-        Text[ japanese ] = "上端行(~E)";
-        Text[ chinese_traditional ] = "頁首(~E)";
+        Text[ japanese ] = "上端行(~T)";
+        Text[ chinese_traditional ] = "首列(~T)";
         Text[ arabic ] = " ";
         Text[ greek ] = "";
-        Text[ korean ] = "머리글(~E)";
+        Text[ korean ] = "맨위 행(~E)";
         Text[ turkish ] = "~stbilgi";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Capa~lera";
@@ -3503,21 +3503,21 @@ ModalDialog RID_SCDLG_NAMES_CREATE
         Text [ ENGLISH ] = "Last row" ;
         Text [ dutch ] = "~Voettekst" ;
         Text [ english_us ] = "~Bottom row" ;
-        Text [ italian ] = "Pi di pagina" ;
-        Text [ spanish ] = "~Pie de pgina" ;
-        Text [ french ] = "~Pied de page" ;
-        Text [ swedish ] = "Sid~fot" ;
+        Text [ italian ] = "Riga inferiore" ;
+        Text [ spanish ] = "~Fila inferior" ;
+        Text [ french ] = "Ligne infrieure" ;
+        Text [ swedish ] = "N~edersta raden" ;
         Text [ danish ] = "Nederste rkke" ;
         Text [ portuguese ] = "~Rodap" ;
         Text [ portuguese_brazilian ] = "~Fu?zeile" ;
-        Text[ chinese_simplified ] = "页脚(~F)";
+        Text[ chinese_simplified ] = "下行(~B)";
         Text[ russian ] = " ";
         Text[ polish ] = "~stopki";
-        Text[ japanese ] = "最下行(~F)";
-        Text[ chinese_traditional ] = "頁尾(~F)";
+        Text[ japanese ] = "最下行(~B)";
+        Text[ chinese_traditional ] = "末列(~B)";
         Text[ arabic ] = " ";
         Text[ greek ] = "";
-        Text[ korean ] = "바닥글(~F)";
+        Text[ korean ] = "맨아래 행(~F)";
         Text[ turkish ] = "~Altbilgi";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "~Peu de pgina";
@@ -3595,7 +3595,7 @@ ModalDialog RID_SCDLG_NAMES_CREATE
         Text[ chinese_traditional ] = "新建名稱從";
         Text[ arabic ] = "  ";
         Text[ greek ] = "  ";
-        Text[ korean ] = "이름으로 쓰는 위치";
+        Text[ korean ] = "적용할 이름의 위치";
         Text[ turkish ] = "Ad iin kaynak";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Nom a partir de ";
@@ -3811,7 +3811,7 @@ ModalDialog RID_SCDLG_CHARTCOLROW
         Text[ chinese_traditional ] = "將第一欄當作標題(~C)";
         Text[ arabic ] = "  ";
         Text[ greek ] = "   ";
-        Text[ korean ] = "처음 열을 라벨로(~C)";
+        Text[ korean ] = "첫 열을 레이블로(~C)";
         Text[ turkish ] = "Etiket olarak ilk~stun";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "La primera ~columna com a etiqueta";
@@ -3840,7 +3840,7 @@ ModalDialog RID_SCDLG_CHARTCOLROW
         Text[ chinese_traditional ] = "第一列當作標題(~R)";
         Text[ arabic ] = "  ";
         Text[ greek ] = "   ";
-        Text[ korean ] = "처음 행을 라벨로(~R)";
+        Text[ korean ] = "첫 행을 레이블로(~R)";
         Text[ turkish ] = "Etiket olarak ilk~satr";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "La primera ~fila com a etiqueta";
@@ -3910,7 +3910,7 @@ ModalDialog RID_SCDLG_CHARTCOLROW
     Text[ chinese_traditional ] = "變更源資料區域";
     Text[ arabic ] = "   ";
     Text[ greek ] = "   ";
-    Text[ korean ] = "소스 데이터 영역 변경";
+    Text[ korean ] = "원본 데이터 범위 변경";
     Text[ turkish ] = "Kaynak verileri araln deitir";
     Text[ language_user1 ] = " ";
     Text[ catalan ] = "Modifica les dades font";
@@ -3918,3 +3918,8 @@ ModalDialog RID_SCDLG_CHARTCOLROW
     Text[ thai ] = "เปลี่ยนช่วงแหล่งข้อมูล";
 };
 
+
+
+
+
+
diff --git a/sc/source/ui/src/namedlg.src b/sc/source/ui/src/namedlg.src
index 74503995cd2b..1b80570cb3ec 100644
--- a/sc/source/ui/src/namedlg.src
+++ b/sc/source/ui/src/namedlg.src
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: namedlg.src,v $
  *
- *  $Revision: 1.23 $
+ *  $Revision: 1.24 $
  *
- *  last change: $Author: kz $ $Date: 2001-11-16 23:12:37 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:28 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -64,9 +64,9 @@
  // (C) 1994-96 StarDivision GmbH, Hamburg, Germany
  //
  // $Workfile:   namedlg.src  $
- //   $Author: kz $
- //     $Date: 2001-11-16 23:12:37 $
- // $Revision: 1.23 $
+ //   $Author: hr $
+ //     $Date: 2003-03-26 18:06:28 $
+ // $Revision: 1.24 $
  //  $Logfile:   T:/sc/source/ui/src/namedlg.srv  $
  //---------------------------------------------------------------------------
 
@@ -84,7 +84,7 @@ ModelessDialog RID_SCDLG_NAMES
     Text [ italian ] = "Definisci nomi" ;
     Text [ portuguese_brazilian ] = "Definir Nomes" ;
     Text [ portuguese ] = "Definir nomes" ;
-    Text [ finnish ] = "M??rit? nimet" ;
+    Text [ finnish ] = "Mrit nimet" ;
     Text [ danish ] = "Definer navne" ;
     Text [ french ] = "Dfinir des noms" ;
     Text [ swedish ] = "Definiera namn" ;
@@ -122,9 +122,9 @@ ModelessDialog RID_SCDLG_NAMES
         Text [ italian ] = "Aggiungi" ;
         Text [ portuguese_brazilian ] = "~Acrescentar" ;
         Text [ portuguese ] = "~Adicionar" ;
-        Text [ finnish ] = "~Lis??" ;
+        Text [ finnish ] = "~Lis" ;
         Text [ danish ] = "Tilfj" ;
-        Text [ french ] = "~Ajouter" ;
+        Text [ french ] = "Ajouter" ;
         Text [ swedish ] = "~Lgg till" ;
         Text [ dutch ] = "Toe~voegen" ;
         Text [ spanish ] = "~Aadir" ;
@@ -141,7 +141,8 @@ ModelessDialog RID_SCDLG_NAMES
         Text[ korean ] = "추가(~A)";
         Text[ turkish ] = "~Ekle";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "~Aadir";
+        Text[ catalan ] = "~Afegeix";
+        Text[ thai ] = "เ~พิ่ม";
     };
     PushButton BTN_REMOVE
     {
@@ -156,10 +157,10 @@ ModelessDialog RID_SCDLG_NAMES
         Text [ portuguese ] = "E~liminar" ;
         Text [ finnish ] = "~Poista" ;
         Text [ danish ] = "Slet" ;
-        Text [ french ] = "~Supprimer" ;
+        Text [ french ] = "Supprimer" ;
         Text [ swedish ] = "~Radera" ;
         Text [ dutch ] = "~Wissen" ;
-        Text [ spanish ] = "~Eliminar" ;
+        Text [ spanish ] = "~Borrar" ;
         Text [ english_us ] = "~Delete" ;
         TabStop = TRUE ;
         Text[ chinese_simplified ] = "删除(~D)";
@@ -172,7 +173,8 @@ ModelessDialog RID_SCDLG_NAMES
         Text[ korean ] = "삭제(~D)";
         Text[ turkish ] = "~Sil";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "~Eliminar";
+        Text[ catalan ] = "~Suprimeix";
+        Text[ thai ] = "~ลบ";
     };
     FixedLine FL_NAME
     {
@@ -201,7 +203,8 @@ ModelessDialog RID_SCDLG_NAMES
         Text[ korean ] = "이름";
         Text[ turkish ] = "Ad";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Nombre";
+        Text[ catalan ] = "Nom";
+        Text[ thai ] = "ชื่อ";
     };
     ComboBox ED_NAME
     {
@@ -221,24 +224,25 @@ ModelessDialog RID_SCDLG_NAMES
         Text [ italian ] = "Riferito a" ;
         Text [ portuguese_brazilian ] = "Remente a" ;
         Text [ portuguese ] = "Refere-se a" ;
-        Text [ finnish ] = "Viittauskohde" ;
-        Text [ danish ] = "Henviser til" ;
+        Text [ finnish ] = "Liitoskohde" ;
+        Text [ danish ] = "Tildelt til" ;
         Text [ french ] = "Assign " ;
         Text [ swedish ] = "Refererar till" ;
         Text [ dutch ] = "Toegevoegd aan" ;
         Text [ spanish ] = "Asignado a" ;
         Text [ english_us ] = "Assigned to" ;
         Text[ chinese_simplified ] = "指定给";
-        Text[ russian ] = " ";
+        Text[ russian ] = " ";
         Text[ polish ] = "Odnosi si do";
         Text[ japanese ] = "位置";
         Text[ chinese_traditional ] = "指定到";
         Text[ arabic ] = " ";
         Text[ greek ] = " ";
-        Text[ korean ] = "에 할당";
+        Text[ korean ] = "위치";
         Text[ turkish ] = "Ait olduu aralk";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Asignado a";
+        Text[ catalan ] = "Fa referncia a";
+        Text[ thai ] = "อ้างถึง";
     };
     Edit ED_ASSIGN
     {
@@ -273,8 +277,9 @@ ModelessDialog RID_SCDLG_NAMES
         QuickHelpText[ korean ] = "축소";
         QuickHelpText[ language_user1 ] = " ";
         QuickHelpText[ turkish ] = "Verkleinern";
-        QuickHelpText[ catalan ] = "Reducir";
-        QuickHelpText[ finnish ] = "Kutista!";
+        QuickHelpText[ catalan ] = "Redueix";
+        QuickHelpText[ finnish ] = "Kutista";
+        QuickHelpText[ thai ] = "Shrink";
     };
     MoreButton BTN_MORE
     {
@@ -308,10 +313,11 @@ ModelessDialog RID_SCDLG_NAMES
         Text[ chinese_traditional ] = "區域類型";
         Text[ arabic ] = " ";
         Text[ greek ] = " ";
-        Text[ korean ] = "구역 종류";
+        Text[ korean ] = "영역 종류";
         Text[ turkish ] = "Aralk tr";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Tipo de rea";
+        Text[ catalan ] = "Tipus d'rea";
+        Text[ thai ] = "ชนิดพื้นที่";
     };
     CheckBox BTN_PRINTAREA
     {
@@ -341,7 +347,8 @@ ModelessDialog RID_SCDLG_NAMES
         Text[ korean ] = "인쇄 범위(~P)";
         Text[ turkish ] = "Yazdrma a~ral";
         Text[ language_user1 ] = "RB: zu finden in: Format - Druckbereich - Bearbeiten... - -";
-        Text[ catalan ] = "rea de ~impresin";
+        Text[ catalan ] = "rea d'im~pressi";
+        Text[ thai ] = "ช่วงการ~พิมพ์";
     };
     CheckBox BTN_CRITERIA
     {
@@ -353,7 +360,7 @@ ModelessDialog RID_SCDLG_NAMES
         Text [ italian ] = "~Filtro" ;
         Text [ portuguese_brazilian ] = "~Filtro" ;
         Text [ portuguese ] = "~Filtro" ;
-        Text [ finnish ] = "~Suodatin" ;
+        Text [ finnish ] = "~Suodatus" ;
         Text [ danish ] = "Filter" ;
         Text [ french ] = "~Filtre" ;
         Text [ swedish ] = "Fil~ter" ;
@@ -364,14 +371,15 @@ ModelessDialog RID_SCDLG_NAMES
         Text[ chinese_simplified ] = "筛选(~F)";
         Text[ russian ] = "";
         Text[ polish ] = "Filtr";
-        Text[ japanese ] = "フィルタ(~F)";
+        Text[ japanese ] = "フィルタ(~F)";
         Text[ chinese_traditional ] = "篩選(~F)";
         Text[ arabic ] = "";
         Text[ greek ] = "";
         Text[ korean ] = "필터(~F)";
         Text[ turkish ] = "Fil~tre";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Fi~ltro";
+        Text[ catalan ] = "~Filtre";
+        Text[ thai ] = "~ตัวกรอง";
     };
     CheckBox BTN_ROWHEADER
     {
@@ -388,20 +396,21 @@ ModelessDialog RID_SCDLG_NAMES
         Text [ french ] = "~Ligne  rpter" ;
         Text [ swedish ] = "Upprepn~ingsrad" ;
         Text [ dutch ] = "~Rij herhalen" ;
-        Text [ spanish ] = "Fil~a a repetir" ;
+        Text [ spanish ] = "Fil~a que repetir" ;
         Text [ english_us ] = "Repeat ~row" ;
         TabStop = TRUE ;
         Text[ chinese_simplified ] = "重复的行(~R)";
-        Text[ russian ] = " ";
+        Text[ russian ] = " ";
         Text[ polish ] = "Wiersz powtrzony";
         Text[ japanese ] = "繰り返す行(~R)";
         Text[ chinese_traditional ] = "重複的列(~R)";
         Text[ arabic ] = " ";
         Text[ greek ] = "~ ";
-        Text[ korean ] = "반복행(~R)";
+        Text[ korean ] = "반복 행(~R)";
         Text[ turkish ] = "Y~inelenen satr";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Fil~a a repetir";
+        Text[ catalan ] = "Repeteix la ~fila";
+        Text[ thai ] = "ทำแ~ถวซ้ำ";
     };
     CheckBox BTN_COLHEADER
     {
@@ -418,20 +427,21 @@ ModelessDialog RID_SCDLG_NAMES
         Text [ french ] = "~Colonne  rpter" ;
         Text [ swedish ] = "~Upprepningskolumn" ;
         Text [ dutch ] = "~Kolom herhalen" ;
-        Text [ spanish ] = "Columna a r~epetir" ;
+        Text [ spanish ] = "Columna que r~epetir" ;
         Text [ english_us ] = "Repeat ~column" ;
         TabStop = TRUE ;
         Text[ chinese_simplified ] = "重复的列(~C)";
-        Text[ russian ] = " ";
+        Text[ russian ] = " ";
         Text[ polish ] = "Kolumna powtrzona";
         Text[ japanese ] = "繰り返す列(~C)";
         Text[ chinese_traditional ] = "重複的欄(~C)";
         Text[ arabic ] = " ";
         Text[ greek ] = "~ ";
-        Text[ korean ] = "반복열(~C)";
+        Text[ korean ] = "반복 열(~C)";
         Text[ turkish ] = "~Yinelenen stun";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Columna a r~epetir";
+        Text[ catalan ] = "Repeteix la ~columna";
+        Text[ thai ] = "ทำ~คอลัมน์ซ้ำ";
     };
     String STR_ADD
     {
@@ -442,9 +452,9 @@ ModelessDialog RID_SCDLG_NAMES
         Text [ italian ] = "Aggiungi" ;
         Text [ portuguese_brazilian ] = "~Acrescentar" ;
         Text [ portuguese ] = "~Adicionar" ;
-        Text [ finnish ] = "~Lis??" ;
+        Text [ finnish ] = "~Lis" ;
         Text [ danish ] = "Tilfj" ;
-        Text [ french ] = "~Ajouter" ;
+        Text [ french ] = "Ajouter" ;
         Text [ swedish ] = "~Lgg till" ;
         Text [ dutch ] = "Toe~voegen" ;
         Text [ spanish ] = "~Aadir" ;
@@ -459,7 +469,8 @@ ModelessDialog RID_SCDLG_NAMES
         Text[ korean ] = "추가(~A)";
         Text[ turkish ] = "~Ekle";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "~Aadir";
+        Text[ catalan ] = "~Afegeix";
+        Text[ thai ] = "เ~พิ่ม";
     };
     String STR_MODIFY
     {
@@ -470,9 +481,9 @@ ModelessDialog RID_SCDLG_NAMES
         Text [ italian ] = "Modifica" ;
         Text [ portuguese_brazilian ] = "Modif~icar" ;
         Text [ portuguese ] = "~Modificar" ;
-        Text [ finnish ] = "~Muokkaa" ;
+        Text [ finnish ] = "~Muuta" ;
         Text [ danish ] = "Modificer" ;
-        Text [ french ] = "~Modifier" ;
+        Text [ french ] = "Modifier" ;
         Text [ swedish ] = "n~dra" ;
         Text [ dutch ] = "Wij~zigen" ;
         Text [ spanish ] = "~Modificar" ;
@@ -484,10 +495,11 @@ ModelessDialog RID_SCDLG_NAMES
         Text[ chinese_traditional ] = "變更(~I)";
         Text[ arabic ] = "";
         Text[ greek ] = "";
-        Text[ korean ] = "수정(~I)";
+        Text[ korean ] = "변경(~I)";
         Text[ turkish ] = "~Deitir";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "~Modificar";
+        Text[ catalan ] = "Mod~ifica";
+        Text[ thai ] = "ดัดแ~ปลง";
     };
     String STR_INVALIDSYMBOL
     {
@@ -512,22 +524,24 @@ ModelessDialog RID_SCDLG_NAMES
         Text[ chinese_traditional ] = "無效的表述式";
         Text[ arabic ] = "  ";
         Text[ greek ] = "  ";
-        Text[ korean ] = "유효하지 않은 표현";
+        Text[ korean ] = "잘못된 식";
         Text[ turkish ] = "Geersiz terim";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Expresin no vlida";
+        Text[ catalan ] = "L'expressi no s vlida";
+        Text[ thai ] = "นิพจน์ไม่ถูกต้อง";
     };
     Text[ chinese_simplified ] = "定义名称";
-    Text[ russian ] = " ";
+    Text[ russian ] = " ";
     Text[ polish ] = "Definiowanie nazw";
     Text[ japanese ] = "名前の指定";
     Text[ chinese_traditional ] = "定義名稱";
     Text[ arabic ] = " ";
     Text[ greek ] = " ";
-    Text[ korean ] = "이름 정의";
+    Text[ korean ] = "이름 지정";
     Text[ turkish ] = "Ad tanmla";
     Text[ language_user1 ] = " ";
-    Text[ catalan ] = "Definir nombres";
+    Text[ catalan ] = "Defineix els noms";
+    Text[ thai ] = "กำหนดชื่อ";
 };
 
 
@@ -539,3 +553,10 @@ ModelessDialog RID_SCDLG_NAMES
 
 
 
+
+
+
+
+
+
+
diff --git a/sc/source/ui/src/opredlin.src b/sc/source/ui/src/opredlin.src
index fa336f3de23d..36226948c84d 100644
--- a/sc/source/ui/src/opredlin.src
+++ b/sc/source/ui/src/opredlin.src
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: opredlin.src,v $
  *
- *  $Revision: 1.26 $
+ *  $Revision: 1.27 $
  *
- *  last change: $Author: kz $ $Date: 2001-11-16 23:14:48 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:28 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -77,14 +77,14 @@ TabPage RID_SCPAGE_OPREDLINE
         Text [ english_us ] = "Chan~ges" ;
         Text [ portuguese_brazilian ] = "~?nderungen" ;
         Text [ swedish ] = "~ndringar" ;
-        Text [ danish ] = "ndringer" ;
+        Text [ danish ] = "~ndringer" ;
         Text [ italian ] = "~Modifica" ;
         Text [ spanish ] = "~Modificaciones" ;
         Text [ french ] = "~Modifications" ;
         Text [ dutch ] = "~Wijzigingen" ;
         Text [ portuguese ] = "~Modificaes" ;
         Text[ chinese_simplified ] = "更改(~G)";
-        Text[ russian ] = "";
+        Text[ russian ] = "";
         Text[ polish ] = "Zmiany";
         Text[ japanese ] = "変更(~G)";
         Text[ chinese_traditional ] = "變更(~G)";
@@ -93,8 +93,9 @@ TabPage RID_SCPAGE_OPREDLINE
         Text[ korean ] = "변경(~G)";
         Text[ turkish ] = "~Deiiklikler";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "~Modificaciones";
+        Text[ catalan ] = "Can~vis";
         Text[ finnish ] = "Muu~tokset";
+        Text[ thai ] = "เป~ลี่ยน";
     };
     FixedText FT_REMOVE
     {
@@ -108,9 +109,9 @@ TabPage RID_SCPAGE_OPREDLINE
         Text [ swedish ] = "~Raderingar" ;
         Text [ danish ] = "Sletninger" ;
         Text [ italian ] = "~Elimina" ;
-        Text [ spanish ] = "~Eliminaciones" ;
+        Text [ spanish ] = "~Borrar" ;
         Text [ french ] = "~Suppressions" ;
-        Text [ dutch ] = "~Verwijderingen" ;
+        Text [ dutch ] = "V~erwijderingen" ;
         Text[ chinese_simplified ] = "删除(~D)";
         Text[ russian ] = "";
         Text[ polish ] = "Usunicia";
@@ -121,8 +122,9 @@ TabPage RID_SCPAGE_OPREDLINE
         Text[ korean ] = "삭제(~D)";
         Text[ turkish ] = "~Silinenler";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "~Eliminaciones";
+        Text[ catalan ] = "~Supressions";
         Text[ finnish ] = "~Poistot";
+        Text[ thai ] = "~ลบ";
     };
     FixedText FT_INSERT
     {
@@ -135,7 +137,7 @@ TabPage RID_SCPAGE_OPREDLINE
         Text [ portuguese_brazilian ] = "~Einf?ungen" ;
         Text [ swedish ] = "~Infogningar" ;
         Text [ danish ] = "Indsttelser" ;
-        Text [ italian ] = "~Inserisci" ;
+        Text [ italian ] = "Inserisci" ;
         Text [ spanish ] = "~Inserciones" ;
         Text [ french ] = "~Insertions" ;
         Text [ dutch ] = "~Invoegingen" ;
@@ -149,8 +151,9 @@ TabPage RID_SCPAGE_OPREDLINE
         Text[ korean ] = "삽입(~I)";
         Text[ turkish ] = "~Eklemeler";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "~Inserciones";
-        Text[ finnish ] = "~Lis?ykset";
+        Text[ catalan ] = "~Insercions";
+        Text[ finnish ] = "~Lisykset";
+        Text[ thai ] = "แ~ทรก";
     };
     FixedText FT_MOVE
     {
@@ -165,10 +168,10 @@ TabPage RID_SCPAGE_OPREDLINE
         Text [ danish ] = "Flytninger" ;
         Text [ italian ] = "~Sposta" ;
         Text [ spanish ] = "~Desplazamientos" ;
-        Text [ french ] = "~Dplacements" ;
-        Text [ dutch ] = "~Verplaatsingen" ;
+        Text [ french ] = "Dplacements" ;
+        Text [ dutch ] = "Ver~plaatsingen" ;
         Text[ chinese_simplified ] = "移动(~M)";
-        Text[ russian ] = "C";
+        Text[ russian ] = " ";
         Text[ polish ] = "Przesunicia";
         Text[ japanese ] = "移動(~M)";
         Text[ chinese_traditional ] = "移動(~M)";
@@ -177,8 +180,9 @@ TabPage RID_SCPAGE_OPREDLINE
         Text[ korean ] = "이동(~M)";
         Text[ turkish ] = "~Tanan giriler";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "~Desplazamientos";
-        Text[ finnish ] = "~Siirretyt merkinn?t";
+        Text[ catalan ] = "Entrades ~mogudes";
+        Text[ finnish ] = "~Siirretyt merkinnt";
+        Text[ thai ] = "~ย้ายรายการ";
     };
     FixedLine GB_COLORCHGS
     {
@@ -190,7 +194,7 @@ TabPage RID_SCPAGE_OPREDLINE
         Text [ english_us ] = "Colors for changes" ;
         Text [ portuguese_brazilian ] = "Farbgebung f? ?nderungen" ;
         Text [ swedish ] = "Frggivning fr ndringar" ;
-        Text [ danish ] = "Farver for ndringer" ;
+        Text [ danish ] = "Farve til markering af ndringer" ;
         Text [ italian ] = "Colori per i comandi" ;
         Text [ spanish ] = "Colores para las modificaciones" ;
         Text [ french ] = "Couleurs pour les modifications" ;
@@ -205,8 +209,9 @@ TabPage RID_SCPAGE_OPREDLINE
         Text[ korean ] = "변경 색상";
         Text[ turkish ] = "Deiiklikleri gsteren renkler";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Colores para las modificaciones";
+        Text[ catalan ] = "Colors per als canvis";
         Text[ finnish ] = "Muutosten vrit";
+        Text[ thai ] = "สีสำหรับเปลี่ยน";
     };
     ListBox CLB_CONTENT
     {
@@ -246,21 +251,22 @@ TabPage RID_SCPAGE_OPREDLINE
         Text [ swedish ] = "Efter frfattare" ;
         Text [ danish ] = "Efter forfatter" ;
         Text [ italian ] = "per autore" ;
-        Text [ spanish ] = "Segn autor" ;
+        Text [ spanish ] = "Por autor" ;
         Text [ french ] = "Par auteur" ;
         Text [ dutch ] = "Naar auteur" ;
         Text[ chinese_simplified ] = "依作者设定";
         Text[ russian ] = " ";
         Text[ polish ] = "Wedug autora";
-        Text[ japanese ] = "作成者べつ";
+        Text[ japanese ] = "作成者別";
         Text[ chinese_traditional ] = "依作者設定";
         Text[ arabic ] = " ";
         Text[ greek ] = " ";
-        Text[ korean ] = "작성자";
+        Text[ korean ] = "작성자 설정";
         Text[ turkish ] = "Yazana gre";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Segn autor";
-        Text[ finnish ] = "Laatija";
+        Text[ catalan ] = "Per l'autor";
+        Text[ finnish ] = "Tekij";
+        Text[ thai ] = "โดยผู้แต่ง";
     };
 };
 
@@ -274,3 +280,11 @@ TabPage RID_SCPAGE_OPREDLINE
 
 
 
+
+
+
+
+
+
+
+
diff --git a/sc/source/ui/src/optdlg.src b/sc/source/ui/src/optdlg.src
index 2e5934574f82..5ff9a654b06c 100644
--- a/sc/source/ui/src/optdlg.src
+++ b/sc/source/ui/src/optdlg.src
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: optdlg.src,v $
  *
- *  $Revision: 1.52 $
+ *  $Revision: 1.53 $
  *
- *  last change: $Author: kz $ $Date: 2002-12-09 10:02:40 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:28 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -404,7 +404,7 @@ TabPage RID_SCPAGE_CALC
         QuickHelpText[ arabic ] = "0 corresponds to 12/30/1899";
         QuickHelpText[ italian ] = "Il valore 0 corrisponde a 30/12/1899";
         Text[ greek ] = "30/12/1899 (~)";
-        Text[ korean ] = "1899/12/30 (표준)(~U)";
+        Text[ korean ] = "1899/12/30 (기본값)(~U)";
         QuickHelpText[ greek ] = " 0    30/12/1899";
         QuickHelpText[ korean ] = "값0은 1899,12,30에 일치";
         Text[ turkish ] = "30.12.1899 ( ~Standart )";
@@ -585,7 +585,7 @@ TabPage RID_SCPAGE_CALC
         Text[ chinese_traditional ] = "小數點位數(~D)";
         Text[ arabic ] = " ";
         Text[ greek ] = " ";
-        Text[ korean ] = "소수점 이하 자리(~D)";
+        Text[ korean ] = "소수점 이하 자릿수(~D)";
         Text[ turkish ] = "~Ondalk hane";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Nombre de ~decimals";
@@ -667,7 +667,7 @@ TabPage RID_SCPAGE_CALC
         Text [ ENGLISH ] = "Search cri~terias = and <> must match entire cells" ;
         Text [ english_us ] = "Search criteria = and <> must apply to ~whole cells" ;
         Text [ italian ] = "I criteri di ricerca  = ed <> devono riferirsi a celle intere" ;
-        Text [ spanish ] = "Criterios de ~bsqueda = y <> deben coincidir con celdas completas" ;
+        Text [ spanish ] = "Los criterios de ~bsqueda = y <> deben referirse a celdas completas" ;
         Text [ french ] = "Critres de recherche = et <> doivent correspondre  des lignes entires" ;
         Text [ dutch ] = "~Zoekcriteria = en <> moeten op hele cellen toepasbaar zijn" ;
         Text [ swedish ] = "S~kkriterier = och <> mste matcha hela celler" ;
@@ -704,13 +704,13 @@ TabPage RID_SCPAGE_CALC
         Text [ portuguese_brazilian ] = "Enable regular expressions in formulas" ;
         Text [ portuguese ] = "Permitir expresses regulares em ~frmulas" ;
         Text[ chinese_simplified ] = "允许公式含有常规表达式(~E)";
-        Text[ russian ] = "    ";
+        Text[ russian ] = "  ~  ";
         Text[ polish ] = "Dopu w formuach wyraenia regularne";
         Text[ japanese ] = "数式で正規表現を使う(~E)";
         Text[ chinese_traditional ] = "允許公式含有常規表達式(~E)";
         Text[ arabic ] = "Enable regular expressions in formulas";
         Text[ greek ] = "Enable regular expressions in formulas";
-        Text[ korean ] = "양식에서 정규식 활성화(~E)";
+        Text[ korean ] = "수식에서 정규식 활성화(~E)";
         Text[ turkish ] = "Enable regular expressions in formulas";
         Text[ language_user1 ] = " ";
         Text[ finnish ] = "Ot~a snnlliset lausekkeet kyttn kaavoissa";
@@ -739,7 +739,7 @@ TabPage RID_SCPAGE_CALC
         Text[ chinese_traditional ] = "自動搜尋列/欄標題(~A)";
         Text[ arabic ] = "     ";
         Text[ greek ] = "   /";
-        Text[ korean ] = "열과 행의 라벨 자동 찾기(~A)";
+        Text[ korean ] = "열 및 행의 레이블을 자동으로 찾기(~A)";
         Text[ turkish ] = "Stun/satr balklarn otomatik olarak ara";
         Text[ language_user1 ] = " ";
         Text[ finnish ] = "~Hae sarakkeiden ja rivien selitteet automaattisesti ";
@@ -951,7 +951,7 @@ TabPage RID_SCPAGE_USERLISTS
         Text [ french ] = "Supprimer" ;
         Text [ swedish ] = "~Radera" ;
         Text [ dutch ] = "~Wissen" ;
-        Text [ spanish ] = "~Eliminar" ;
+        Text [ spanish ] = "~Borrar" ;
         Text [ english_us ] = "~Delete" ;
         Text[ chinese_simplified ] = "删除(~D)";
         Text[ russian ] = "";
@@ -1037,7 +1037,7 @@ TabPage RID_SCPAGE_USERLISTS
         Text [ french ] = "tes-vous sr de vouloir supprimer l'entre\n#\n ?" ;
         Text [ swedish ] = "Skall posten\n#\nraderas?" ;
         Text [ dutch ] = "Wilt u \n#\nverwijderen?" ;
-        Text [ spanish ] = "Desea eliminar la entrada\n\n#\\?" ;
+        Text [ spanish ] = "Desea borrar la entrada\n\n#\\?" ;
         Text [ english_us ] = "Should the entry\n#\nbe deleted?" ;
         Text[ chinese_simplified ] = "您要删除这个条目\n#?";
         Text[ russian ] = " \n#\n?";
@@ -1099,7 +1099,7 @@ TabPage RID_SCPAGE_USERLISTS
         Text[ chinese_traditional ] = "清單從";
         Text[ arabic ] = " ";
         Text[ greek ] = " ";
-        Text[ korean ] = "로부터의 목록";
+        Text[ korean ] = "목록 출처";
         Text[ turkish ] = "Liste kayna";
         Text[ language_user1 ] = " ";
         Text[ finnish ] = "Luettelo";
@@ -1120,13 +1120,13 @@ TabPage RID_SCPAGE_USERLISTS
         Text [ portuguese_brazilian ] = "Zellen ohne einfachen Text wurden ignoriert." ;
         Text [ portuguese ] = "As clulas sem texto foram ignoradas." ;
         Text[ chinese_simplified ] = "忽略不含文字的单元格。";
-        Text[ russian ] = "    .";
+        Text[ russian ] = "   .";
         Text[ polish ] = "Komrki bez tekstu zostay zignorowane.";
         Text[ japanese ] = "テキストのないセルは無視されました。";
         Text[ chinese_traditional ] = "忽略不含文字的儲存格。";
         Text[ arabic ] = "        .";
         Text[ greek ] = "      .";
-        Text[ korean ] = "텍스트 없는 셀 무시";
+        Text[ korean ] = "텍스트 없는 셀은 무시됩니다.";
         Text[ turkish ] = "Metinsiz hcreler yok sayld.";
         Text[ language_user1 ] = " ";
         Text[ finnish ] = "Tekstittmt solut ohitettiin.";
@@ -1260,7 +1260,7 @@ TabPage RID_SCPAGE_CONTENT
         Text [ dutch ] = "~Pagina-einde" ;
         Text [ portuguese ] = "~Quebras de pgina" ;
         Text[ chinese_simplified ] = "换页(~P)";
-        Text[ russian ] = " ";
+        Text[ russian ] = "~ ";
         Text[ polish ] = "Podziay ~strony";
         Text[ japanese ] = "改ページ(~P)";
         Text[ chinese_traditional ] = "換頁(~P)";
@@ -1281,7 +1281,7 @@ TabPage RID_SCPAGE_CONTENT
         Text [ ENGLISH ] = "Guides ~while moving" ;
         Text[ english_us ] = "Guides ~while moving";
         Text[ portuguese ] = "Guias durante o movimento";
-        Text[ russian ] = "  ";
+        Text[ russian ] = " ~ ";
         Text[ greek ] = "~    ";
         Text[ dutch ] = "H~ulplijnen tijdens de beweging";
         Text[ french ] = "Repres lors du dplacement";
@@ -1292,7 +1292,7 @@ TabPage RID_SCPAGE_CONTENT
         Text[ polish ] = "Linie pomocnicze podczas przesuwania";
         Text[ portuguese_brazilian ] = "Guides while moving";
         Text[ japanese ] = "移動時の補助線(~W)";
-        Text[ korean ] = "이동시에 안내선(~W)";
+        Text[ korean ] = "이동시 안내선(~W)";
         Text[ chinese_simplified ] = "移动时显示辅助线(~W)";
         Text[ chinese_traditional ] = "移動時顯示輔助線(~W)";
         Text[ turkish ] = "Guides while moving";
@@ -1466,7 +1466,7 @@ TabPage RID_SCPAGE_CONTENT
         Text [ portuguese ] = "~Indicador de anotaes" ;
         Text [ finnish ] = "Huomautusilmaisin" ;
         Text [ danish ] = "Note~indikator" ;
-        Text [ french ] = "Indicateur de ~notes" ;
+        Text [ french ] = "Indicateur de ~note" ;
         Text [ swedish ] = "Ante~ckningsmarkr" ;
         Text [ dutch ] = "Aantekeningenwij~zer" ;
         Text [ spanish ] = "I~ndicador de notas" ;
@@ -1655,7 +1655,7 @@ TabPage RID_SCPAGE_CONTENT
         Text[ chinese_traditional ] = "物件及圖形(~J)";
         Text[ arabic ] = "/";
         Text[ greek ] = "/~";
-        Text[ korean ] = "대상/그래픽(~J)";
+        Text[ korean ] = "개체/그림(~J)";
         Text[ turkish ] = "~Nesne/grafik";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Ob~jectes/Grfics";
@@ -1795,7 +1795,7 @@ TabPage RID_SCPAGE_CONTENT
         Text[ chinese_traditional ] = "欄標題和列標題(~M)";
         Text[ arabic ] = "  ";
         Text[ greek ] = "~ /";
-        Text[ korean ] = "행과 열 머리글(~M)";
+        Text[ korean ] = "행 머리글/열 머리글(~M)";
         Text[ turkish ] = "Sa~tr ve stun balklar";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Capaleres de colu~mnes/files";
@@ -1825,7 +1825,7 @@ TabPage RID_SCPAGE_CONTENT
         Text[ chinese_traditional ] = "水平式捲軸(~Z)";
         Text[ arabic ] = "   ";
         Text[ greek ] = "  ~";
-        Text[ korean ] = "수평 스크롤(~Z)";
+        Text[ korean ] = "수평 스크롤 막대(~Z)";
         Text[ turkish ] = "~Yatay kaydrma ubuu";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Barra de desplaament horit~zontal";
@@ -1855,7 +1855,7 @@ TabPage RID_SCPAGE_CONTENT
         Text[ chinese_traditional ] = "垂直式捲軸(~V)";
         Text[ arabic ] = "   ";
         Text[ greek ] = "  ~";
-        Text[ korean ] = "수직 스크롤(~V)";
+        Text[ korean ] = "수직 스크롤 막대(~V)";
         Text[ turkish ] = "~Dikey kaydrma ubuu";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Barra de desplaament ~vertical";
@@ -1915,7 +1915,7 @@ TabPage RID_SCPAGE_CONTENT
         Text[ chinese_traditional ] = "大綱圖示(~O)";
         Text[ arabic ] = " ";
         Text[ greek ] = " ";
-        Text[ korean ] = "아웃트라인 기호(~O)";
+        Text[ korean ] = "개요 기호(~O)";
         Text[ turkish ] = "A~nahat simgesi";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Smbols del c~ontorn";
@@ -2322,7 +2322,7 @@ TabPage RID_SCPAGE_LAYOUT
         Text[ polish ] = "Tabulator";
         Text[ portuguese_brazilian ] = "Tab stops";
         Text[ japanese ] = "タブ間隔(~T)";
-        Text[ korean ] = "탭(~T)";
+        Text[ korean ] = "탭 간격(~T)";
         Text[ chinese_simplified ] = "制表符(~T)";
         Text[ chinese_traditional ] = "定位鍵(~T)";
         Text[ turkish ] = "Tab stops";
@@ -2487,7 +2487,7 @@ TabPage RID_SCPAGE_LAYOUT
         Text[ spanish ] = "~Nunca";
         Text[ english_us ] = "~Never";
         Text[ chinese_simplified ] = "永远不(~N)";
-        Text[ russian ] = "";
+        Text[ russian ] = "~";
         Text[ polish ] = "Nigdy";
         Text[ japanese ] = "しない(~N)";
         Text[ chinese_traditional ] = "永不(~N)";
@@ -2692,7 +2692,7 @@ TabPage RID_SCPAGE_LAYOUT
     };
     StringList [ korean ] =
     {
-            < "아래" ; Default ; > ;
+            < "아래로" ; Default ; > ;
         < "오른쪽" ; Default ; > ;
         < "위" ; Default ; > ;
         < "왼쪽" ; Default ; > ;
@@ -2772,20 +2772,20 @@ TabPage RID_SCPAGE_LAYOUT
         Text [ swedish ] = "Utka ~formatering" ;
         Text [ danish ] = "~Udvid formatering" ;
         Text [ italian ] = "~Espandi formattazione" ;
-        Text [ spanish ] = "Extender ~formato" ;
+        Text [ spanish ] = "Expandir ~formato" ;
         Text [ french ] = "Expansion du ~formatage" ;
         Text [ dutch ] = "~Opmaakbereik uitbreiden" ;
         Text [ portuguese_brazilian ] = "Formatierung ausdehnen" ;
         Text [ portuguese ] = "Expandir ~formatao" ;
         Text[ chinese_simplified ] = "套用前一个单元格格式(~F)";
-        Text[ russian ] = " ";
+        Text[ russian ] = " ~";
         Text[ polish ] = "Rozszerz formatowanie";
         Text[ japanese ] = "書式の拡張(~F)";
         Text[ chinese_traditional ] = "採用前一個儲存格的格式(~F)";
         Text[ arabic ] = " ";
         Text[ language_user1 ] = " ";
         Text[ greek ] = "~  ";
-        Text[ korean ] = "서식 연장(~F)";
+        Text[ korean ] = "서식 확장(~F)";
         Text[ turkish ] = "~Formatlamay genilet";
         Text[ finnish ] = "Laajenna m~uotoilua";
         Text[ catalan ] = "Expandeix el ~formatatge";
@@ -2813,7 +2813,7 @@ TabPage RID_SCPAGE_LAYOUT
         Text[ chinese_traditional ] = "擴展顯示插入的列欄參照(~R)";
         Text[ arabic ] = "      ";
         Text[ greek ] = "  ~     /";
-        Text[ korean ] = "행과 열 삽입시 테두리로 참조 확장(~R)";
+        Text[ korean ] = "행과 열을 삽입할 때 테두리로 참조를 확장(~R)";
         Text[ turkish ] = "Yeni stun/satr eklendiinde refera~nslar kenarlardan genilet";
         Text[ language_user1 ] = " ";
         Text[ finnish ] = "Laajenna ~viitteit, jos uusia rivej tai sarakkeita listn";
@@ -2869,7 +2869,7 @@ TabPage RID_SCPAGE_LAYOUT
         Text[ polish ] = "Do sformatowania tekstu uyj parametrw drukarki";
         Text[ portuguese_brazilian ] = "Use printer metrics for text formatting";
         Text[ japanese ] = "文書書式設定の印刷範囲を使用";
-        Text[ korean ] = "텍스트 서식 지정에서 프린터 메트릭 사용";
+        Text[ korean ] = "문서 서식 설정에서 프린터 메트릭 사용";
         Text[ chinese_simplified ] = "文字格式化采用打印版式";
         Text[ chinese_traditional ] = "文字格式化採用列印版式";
         Text[ turkish ] = "Use printer metrics for text formatting";
@@ -2896,7 +2896,7 @@ TabPage RID_SCPAGE_LAYOUT
         Text[ swedish ] = "Visa ~varning fr att skriva ver nr data klistras in";
         Text[ polish ] = "Show overwrite ~warning when pasting data";
         Text[ japanese ] = "データを挿入する際、データ上書きの確認をする";
-        Text[ korean ] = "데이터를 붙여넣을 때 겹쳐쓰기 경고 표시";
+        Text[ korean ] = "데이터를 붙여넣기할 때 겹쳐쓰기 경고 표시";
         Text[ chinese_simplified ] = "粘贴数据时显示改写警告";
         Text[ chinese_traditional ] = "貼上資料時顯示覆寫警告";
         Text[ turkish ] = "Show overwrite ~warning when pasting data";
@@ -2953,7 +2953,7 @@ TabPage RID_SCPAGE_PRINT
         Text [ ENGLISH ] = "~Suppress output of empty pages" ;
         Text[ english_us ] = "~Suppress output of empty pages";
         Text[ portuguese ] = "~No imprimir pginas vazias";
-        Text[ russian ] = "~   ";
+        Text[ russian ] = "~   ";
         Text[ greek ] = "~Suppress output of empty pages";
         Text[ dutch ] = "~Weergave van lege pagina's onderdrukken";
         Text[ french ] = "Ignorer les pages vides pour l'impression";
@@ -2965,7 +2965,7 @@ TabPage RID_SCPAGE_PRINT
         Text[ polish ] = "~Nie drukuj pustych stron";
         Text[ portuguese_brazilian ] = "~Suppress output of empty pages";
         Text[ japanese ] = "空白のページを出力しない(~S)";
-        Text[ korean ] = "빈 페이지 출력 안함(~S)";
+        Text[ korean ] = "빈 페이지는 출력하지 않음(~S)";
         Text[ chinese_simplified ] = "不打印空白页面(~S)";
         Text[ chinese_traditional ] = "不列印空白頁面(~S)";
         Text[ turkish ] = "~Suppress output of empty pages";
@@ -3046,6 +3046,11 @@ TabPage RID_SCPAGE_PRINT
 
 
 
+
+
+
+
+
 
 
 
diff --git a/sc/source/ui/src/popup.src b/sc/source/ui/src/popup.src
index 0cb15f9a811b..204bc6f27f65 100644
--- a/sc/source/ui/src/popup.src
+++ b/sc/source/ui/src/popup.src
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: popup.src,v $
  *
- *  $Revision: 1.42 $
+ *  $Revision: 1.43 $
  *
- *  last change: $Author: kz $ $Date: 2002-12-05 10:27:23 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:28 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -122,7 +122,7 @@ Menu RID_POPUP_CELLS
             Text[ chinese_traditional ] = "標準(~D)";
             Text[ arabic ] = "~";
             Text[ greek ] = "~";
-            Text[ korean ] = "기본 값(~D)";
+            Text[ korean ] = "기본값(~D)";
             Text[ turkish ] = "~Standart";
             Text[ catalan ] = "Per ~defecte";
             Text[ finnish ] = "~Palauta oletustyyli";
@@ -155,7 +155,7 @@ Menu RID_POPUP_CELLS
             Text[ chinese_traditional ] = "儲存格格式化(~F)...";
             Text[ arabic ] = "... ";
             Text[ greek ] = "~ ...";
-            Text[ korean ] = "셀 서식 지정(~F)...";
+            Text[ korean ] = "셀 서식 설정(~F)...";
             Text[ turkish ] = "Hcreleri formatla...";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "~Formata les cel.les...";
@@ -209,7 +209,7 @@ Menu RID_POPUP_CELLS
             Text [ french ] = "Suppr~imer des cellules..." ;
             Text [ swedish ] = "Radera ce~ller..." ;
             Text [ dutch ] = "Cellen ~wissen..." ;
-            Text [ spanish ] = "~Eliminar celdas..." ;
+            Text [ spanish ] = "~Borrar celdas..." ;
             Text [ english_us ] = "De~lete Cells..." ;
             Text[ chinese_simplified ] = "删除单元格(~L)...";
             Text[ russian ] = " ...";
@@ -239,7 +239,7 @@ Menu RID_POPUP_CELLS
             Text [ french ] = "Supprimer du ~contenu..." ;
             Text [ swedish ] = "Ra~dera innehll..." ;
             Text [ dutch ] = "In~houd wissen..." ;
-            Text [ spanish ] = "Eliminar contenidos..." ;
+            Text [ spanish ] = "~Borrar contenido..." ;
             Text [ english_us ] = "Delete C~ontents..." ;
             Text[ chinese_simplified ] = "删除内容(~O)...";
             Text[ russian ] = " ...";
@@ -469,7 +469,7 @@ String RID_POPUP_TAB
     Text[ chinese_traditional ] = "工作表工具列的快顯功能表";
     Text[ arabic ] = "   ";
     Text[ greek ] = "    ";
-    Text[ korean ] = "시트 표시줄 팝업메뉴";
+    Text[ korean ] = "시트 표시줄 팝업 메뉴";
     Text[ turkish ] = "Tablo ubuu iin popup mn";
     Text[ language_user1 ] = " ";
     Text[ catalan ] = "Men emergent de la barra del full";
@@ -525,7 +525,7 @@ Menu RID_POPUP_TAB
             Text [ french ] = "~Supprimer la feuille..." ;
             Text [ swedish ] = "~Radera tabell..." ;
             Text [ dutch ] = "~Wissen..." ;
-            Text [ spanish ] = "Eli~minar hoja..." ;
+            Text [ spanish ] = "~Borrar hoja..." ;
             Text [ english_us ] = "~Delete Sheet..." ;
             Text[ chinese_simplified ] = "删除工作表(~D)...";
             Text[ russian ] = "...";
@@ -582,7 +582,7 @@ Menu RID_POPUP_TAB
             Text [ portuguese ] = "~Mover/Copiar..." ;
             Text [ finnish ] = "~Siirr/kopioi..." ;
             Text [ danish ] = "Flyt/kopier..." ;
-            Text [ french ] = "~Dplacer/Copier la feuille..." ;
+            Text [ french ] = "~Dplacer/copier la feuille..." ;
             Text [ swedish ] = "~Flytta/kopiera tabell..." ;
             Text [ dutch ] = "~Verplaatsen/kopiren..." ;
             Text [ spanish ] = "~Desplazar/copiar hoja..." ;
@@ -720,7 +720,7 @@ Menu RID_POPUP_PIVOT
             Text[ chinese_traditional ] = "更新(~R)";
             Text[ arabic ] = "";
             Text[ greek ] = "~";
-            Text[ korean ] = "업데이트(~R)";
+            Text[ korean ] = "새로 고침(~R)";
             Text[ turkish ] = "Gncelle";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "~Refresca";
@@ -757,7 +757,7 @@ Menu RID_POPUP_PIVOT
             Text [ french ] = "~Supprimer" ;
             Text [ swedish ] = "~Radera" ;
             Text [ dutch ] = "~Wissen" ;
-            Text [ spanish ] = "~Eliminar" ;
+            Text [ spanish ] = "~Borrar" ;
             Text [ english_us ] = "~Delete" ;
             Text[ chinese_simplified ] = "删除(~D)";
             Text[ russian ] = "";
@@ -788,7 +788,7 @@ String RID_POPUP_PREVIEW
     Text [ french ] = "Menu Pop-up pour l'aperu de page" ;
     Text [ swedish ] = "Popupmeny fr sidfrhandsvisning" ;
     Text [ dutch ] = "PopUp-menu voor paginavoorbeeld" ;
-    Text [ spanish ] = "Men para la previsualizacin" ;
+    Text [ spanish ] = "Men de la vista preliminar" ;
     Text [ english_us ] = "Page Preview pop-up menu" ;
     Text[ chinese_simplified ] = "页面预览弹出式菜单";
     Text[ russian ] = "    ";
@@ -797,7 +797,7 @@ String RID_POPUP_PREVIEW
     Text[ chinese_traditional ] = "頁面檢視快顯功能表";
     Text[ arabic ] = "   ";
     Text[ greek ] = "   ";
-    Text[ korean ] = "페이지 미리보기 팝업 메뉴";
+    Text[ korean ] = "페이지 미리 보기 팝업 메뉴";
     Text[ turkish ] = "Sayfa nizlemesi iin popup mn";
     Text[ language_user1 ] = " ";
     Text[ catalan ] = "Men emergent de la vista preliminar";
@@ -892,7 +892,7 @@ Menu RID_POPUP_PREVIEW
             Text[ chinese_traditional ] = "頁面版式(~G)...";
             Text[ arabic ] = " ...";
             Text[ greek ] = "~ ...";
-            Text[ korean ] = "페이지 레이아웃(~G)...";
+            Text[ korean ] = "페이지 모양(~G)...";
             Text[ turkish ] = "Sayfa dzeni...";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Disseny de p~gina...";
@@ -940,18 +940,18 @@ Menu RID_POPUP_PREVIEW
             Text[ russian ] = "Close Pre~view";
             Text[ greek ] = "Close Pre~view";
             Text[ dutch ] = "Close Pre~view";
-            Text[ french ] = "Close Pre~view";
-            Text[ spanish ] = "Close Pre~view";
+            Text[ french ] = "Fermer l'~aperu";
+            Text[ spanish ] = "Cerrar ~previsualizacin";
             Text[ finnish ] = "Close Pre~view";
-            Text[ italian ] = "Close Pre~view";
+            Text[ italian ] = "Chiudi anteprima";
             Text[ danish ] = "Close Pre~view";
-            Text[ swedish ] = "Close Pre~view";
+            Text[ swedish ] = "Stng frh~andsvisning";
             Text[ polish ] = "Close Pre~view";
             Text[ portuguese_brazilian ] = "Close Pre~view";
-            Text[ japanese ] = "Close Pre~view";
-            Text[ korean ] = "Close Pre~view";
-            Text[ chinese_simplified ] = "Close Pre~view";
-            Text[ chinese_traditional ] = "Close Pre~view";
+            Text[ japanese ] = "プレビューを閉じる(~V)";
+            Text[ korean ] = "미리 보기 닫기";
+            Text[ chinese_simplified ] = "关闭预览(~V)";
+            Text[ chinese_traditional ] = "關閉預覽(~V)";
             Text[ turkish ] = "Close Pre~view";
             Text[ arabic ] = "Close Pre~view";
             Text[ catalan ] = "Close Pre~view";
@@ -1015,7 +1015,7 @@ Menu RID_POPUP_EDIT
             Text[ chinese_traditional ] = "標準(~D)";
             Text[ arabic ] = "~";
             Text[ greek ] = "~";
-            Text[ korean ] = "기본 값(~D)";
+            Text[ korean ] = "기본값(~D)";
             Text[ turkish ] = "~Standart";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Per ~defecte";
@@ -1142,7 +1142,7 @@ Menu RID_POPUP_EDIT
                         Text[ chinese_traditional ] = "上標(~U)";
                         Text[ arabic ] = "";
                         Text[ greek ] = "~";
-                        Text[ korean ] = "윗 첨자(~U)";
+                        Text[ korean ] = "위 첨자(~U)";
                         Text[ turkish ] = "st simge";
                         Text[ language_user1 ] = " ";
                         Text[ catalan ] = "Superndex";
@@ -1297,7 +1297,7 @@ Menu RID_POPUP_AUDIT
             Text [ french ] = "~Supprimer le reprage des antcdents" ;
             Text [ swedish ] = "Ta bort spr till v~erordnade" ;
             Text [ dutch ] = "Spoor naar voorganger v~erwijderen" ;
-            Text [ spanish ] = "~Eliminar rastro a precedente" ;
+            Text [ spanish ] = "~Borrar rastro de precedentes" ;
             Text [ english_us ] = "~Remove Precedent" ;
             Text[ chinese_simplified ] = "删除向前的追踪箭头(~R)";
             Text[ russian ] = "    ";
@@ -1357,7 +1357,7 @@ Menu RID_POPUP_AUDIT
             Text [ french ] = "S~upprimer le reprage des dpendants" ;
             Text [ swedish ] = "Ta bort spr till un~derordnade" ;
             Text [ dutch ] = "Spoor naar opvolger ve~rwijderen" ;
-            Text [ spanish ] = "~Eliminar rastro a dependiente" ;
+            Text [ spanish ] = "~Borrar rastro a dependiente" ;
             Text [ english_us ] = "Remove Dependent" ;
             Text[ chinese_simplified ] = "删除向后的追踪箭头";
             Text[ russian ] = "    ";
@@ -1387,7 +1387,7 @@ Menu RID_POPUP_AUDIT
             Text [ french ] = "Su~pprimer tous les repres" ;
             Text [ swedish ] = "Ta bort ~alla spr" ;
             Text [ dutch ] = "~Alle sporen verwijderen" ;
-            Text [ spanish ] = "Eliminar ~todos los rastros" ;
+            Text [ spanish ] = "Borrar rastro de los d~ependientes" ;
             Text [ english_us ] = "Remove ~All Traces" ;
             Text[ chinese_simplified ] = "删除全部的追踪箭头(~A)";
             Text[ russian ] = "  ";
@@ -1488,7 +1488,7 @@ Menu RID_POPUP_PAGEBREAK
             Text[ chinese_traditional ] = "標準(~D)";
             Text[ arabic ] = "~";
             Text[ greek ] = "~";
-            Text[ korean ] = "기본 값(~D)";
+            Text[ korean ] = "기본값(~D)";
             Text[ turkish ] = "~Standart";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Per ~defecte";
@@ -1522,7 +1522,7 @@ Menu RID_POPUP_PAGEBREAK
             Text[ chinese_traditional ] = "儲存格格式化(~F)...";
             Text[ arabic ] = " ...";
             Text[ greek ] = "~ ...";
-            Text[ korean ] = "셀 서식 지정(~F)...";
+            Text[ korean ] = "셀 서식 설정(~F)...";
             Text[ turkish ] = "Hcreleri formatla...";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "~Formata les cel.les...";
@@ -1553,7 +1553,7 @@ Menu RID_POPUP_PAGEBREAK
             Text[ chinese_traditional ] = "插入換列(~R)";
             Text[ arabic ] = "  ";
             Text[ greek ] = "~  ";
-            Text[ korean ] = "단락 삽입(~R)";
+            Text[ korean ] = "행 나누기 삽입(~R)";
             Text[ turkish ] = "Satr sonu ekle";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Insereix un salt de fi~la";
@@ -1582,7 +1582,7 @@ Menu RID_POPUP_PAGEBREAK
             Text[ chinese_traditional ] = "插入換欄(~C)";
             Text[ arabic ] = "  ";
             Text[ greek ] = "  ~";
-            Text[ korean ] = "열 삽입(~C)";
+            Text[ korean ] = "열 나누기 삽입(~C)";
             Text[ turkish ] = "Stun sonu ekle";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Insereix un salt de ~columna";
@@ -1600,7 +1600,7 @@ Menu RID_POPUP_PAGEBREAK
             Text [ swedish ] = "Radera alla ~manuella brytningar" ;
             Text [ danish ] = "Slet alle manuelle skift" ;
             Text [ italian ] = "Elimina interruzioni manuali" ;
-            Text [ spanish ] = "Eliminar todos los saltos ~manuales" ;
+            Text [ spanish ] = "Borrar todos los saltos ~manuales" ;
             Text [ french ] = "Supprimer tous les sauts ~manuels" ;
             Text [ dutch ] = "Alle handmatige ~einden wissen" ;
             Text [ portuguese ] = "Remover todas as quebras ~manuais" ;
@@ -1640,7 +1640,7 @@ Menu RID_POPUP_PAGEBREAK
             Text[ chinese_traditional ] = "重設顯示比例";
             Text[ arabic ] = " ";
             Text[ greek ] = " ~";
-            Text[ korean ] = "배율 해제";
+            Text[ korean ] = "축소/확대 원래대로";
             Text[ turkish ] = "leklendirmeyi kaldr";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Reinicia l'escala";
@@ -1672,7 +1672,7 @@ Menu RID_POPUP_PAGEBREAK
             Text[ chinese_traditional ] = "設定列印範圍";
             Text[ arabic ] = "  ";
             Text[ greek ] = "~  ";
-            Text[ korean ] = "인쇄 영역 정의";
+            Text[ korean ] = "인쇄 범위 지정";
             Text[ turkish ] = "Yazdrma araln tanmla";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Defineix l'rea d'impressi";
@@ -1701,7 +1701,7 @@ Menu RID_POPUP_PAGEBREAK
             Text[ chinese_traditional ] = "新增列印範圍";
             Text[ arabic ] = "  ";
             Text[ greek ] = " ~ ";
-            Text[ korean ] = "인쇄 영역 추가";
+            Text[ korean ] = "인쇄 범위 추가";
             Text[ turkish ] = "Yazdrma araln ekle";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Afegeix una rea d'impressi";
@@ -1730,7 +1730,7 @@ Menu RID_POPUP_PAGEBREAK
             Text[ chinese_traditional ] = "重設列印範圍";
             Text[ arabic ] = "  ";
             Text[ greek ] = "~  ";
-            Text[ korean ] = "인쇄 영역 실행취소";
+            Text[ korean ] = "인쇄 범위 실행 취소";
             Text[ turkish ] = "Yazdrma araln kaldr";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Desfs l'rea d'impressi";
@@ -1805,3 +1805,8 @@ Menu RID_POPUP_PAGEBREAK
 };
 
 
+
+
+
+
+
diff --git a/sc/source/ui/src/sc.src b/sc/source/ui/src/sc.src
index 670c6fc1aa37..84dfed5d3f95 100644
--- a/sc/source/ui/src/sc.src
+++ b/sc/source/ui/src/sc.src
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: sc.src,v $
  *
- *  $Revision: 1.14 $
+ *  $Revision: 1.15 $
  *
- *  last change: $Author: kz $ $Date: 2002-11-27 16:41:42 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:29 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -62,7 +62,7 @@
  // StarCalc Applikations Resource
  //
  // (C) 1994 StarDivision GmbH, Hamburg, Germany
- // $Author: kz $ $Date: 2002-11-27 16:41:42 $ $Revision: 1.14 $
+ // $Author: hr $ $Date: 2003-03-26 18:06:29 $ $Revision: 1.15 $
  // $Logfile:   T:/sc/source/ui/src/sc.srv  $ $Workfile:   sc.src  $
  //==================================================================
 
@@ -154,3 +154,5 @@ String 30001 { Text = "Dummy1" ; };
 String 30002 { Text = "Dummy2" ; };
 String 30006 { Text = "Dummy3" ; };
 
+
+
diff --git a/sc/source/ui/src/scerrors.src b/sc/source/ui/src/scerrors.src
index 3486c2ed0553..22635fcbd76b 100644
--- a/sc/source/ui/src/scerrors.src
+++ b/sc/source/ui/src/scerrors.src
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: scerrors.src,v $
  *
- *  $Revision: 1.36 $
+ *  $Revision: 1.37 $
  *
- *  last change: $Author: kz $ $Date: 2002-12-09 10:01:40 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:29 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -91,7 +91,7 @@ Resource RID_ERRHDLSC
         Text[ chinese_traditional ] = "無法連結這個檔案。";
         Text[ arabic ] = "  .";
         Text[ greek ] = "        .";
-        Text[ korean ] = "파일에 연결이 불가능합니다.";
+        Text[ korean ] = "파일로 연결할 수 없습니다.";
         Text[ turkish ] = "Dosya ile balant oluturulamad.";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "s impossible connectar-se al fitxer.";
@@ -146,7 +146,7 @@ Resource RID_ERRHDLSC
         Text[ chinese_traditional ] = "發生一個不明的錯誤。";
         Text[ arabic ] = "   .";
         Text[ greek ] = "  .";
-        Text[ korean ] = "알수없는 오류가 발생했습니다.";
+        Text[ korean ] = "알 수 없는 오류가 발생했습니다.";
         Text[ turkish ] = "Bilnmeyen hata olutu.";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "S'ha produt un error desconegut.";
@@ -167,13 +167,13 @@ Resource RID_ERRHDLSC
         Text [ portuguese ] = "Memria insuficiente ao importar." ;
         Text [ portuguese_brazilian ] = "Nicht genug Speicher beim Importieren." ;
         Text[ chinese_simplified ] = "在输入时内存不足。";
-        Text[ russian ] = "   .";
+        Text[ russian ] = "    .";
         Text[ polish ] = "Za mao pamici dla importu.";
         Text[ japanese ] = "インポートに必要なディスク空き容量が足りません。";
         Text[ chinese_traditional ] = "匯入時記憶體不足。";
         Text[ arabic ] = "    .";
         Text[ greek ] = "     .";
-        Text[ korean ] = "가져오기를 하기 위한 메모리가 부족합니다.";
+        Text[ korean ] = "가져오기 실행 중 메모리가 부족합니다.";
         Text[ turkish ] = "e aktarma ileminde bellek yetersiz.";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Memria insuficient durant la importaci.";
@@ -200,7 +200,7 @@ Resource RID_ERRHDLSC
         Text[ chinese_traditional ] = "不明的 Lotus1-2-3 檔案格式。";
         Text[ arabic ] = "  Lotus-123  .";
         Text[ greek ] = "   Lotus1-2-3.";
-        Text[ korean ] = "알수없는 로터스1-2-3 파일 서식";
+        Text[ korean ] = "알 수 없는 Lotus1-2-3 파일 서식";
         Text[ turkish ] = "Bilinmeyen Lotus-123 dosya format.";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Format de fitxer Lotus1-2-3 desconegut.";
@@ -221,13 +221,13 @@ Resource RID_ERRHDLSC
         Text [ portuguese ] = "Erro na estrutura do ficheiro ao importar." ;
         Text [ portuguese_brazilian ] = "Fehler in Dateistruktur beim Importieren." ;
         Text[ chinese_simplified ] = "在输入时发生文件结构错误。";
-        Text[ russian ] = "    .";
+        Text[ russian ] = "     .";
         Text[ polish ] = "Bd struktury pliku podczas importowania.";
         Text[ japanese ] = "インポート時のファイル構造でのエラー。";
         Text[ chinese_traditional ] = "匯入時發生檔案結構錯誤。";
         Text[ arabic ] = "      .";
         Text[ greek ] = "       .";
-        Text[ korean ] = "가져오기를 하는동안 파일 구조에서 오류";
+        Text[ korean ] = "가져오기 실행 중 파일 구조에서 오류";
         Text[ turkish ] = "e aktarma ileminde dosya yapsnda hata.";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "S'ha produt un error en l'estructura del fitxer durant la importaci.";
@@ -256,7 +256,7 @@ Resource RID_ERRHDLSC
         Text[ chinese_traditional ] = "目前還不能為這個檔案類型提供篩選功能。";
         Text[ arabic ] = "       .";
         Text[ greek ] = "        .";
-        Text[ korean ] = "이 파일 유형에 맞는 필터가 없습니다.";
+        Text[ korean ] = "이 파일 형식에 사용할 필터가 없습니다.";
         Text[ turkish ] = "Bu dosya tipi iin filtre mevcut deil.";
         Text[ catalan ] = "No hi ha cap filtre disponible per a aquest tipus de fitxer.";
         Text[ finnish ] = "Tlle tiedostotyypille ei ole suodatusta.";
@@ -269,7 +269,7 @@ Resource RID_ERRHDLSC
         Text [ ENGLISH ] = "Unknown or not supported Excel file format" ;
         Text [ english_us ] = "Unknown or unsupported Excel file format." ;
         Text [ italian ] = "Formato file Excel sconosciuto o non supportato" ;
-        Text [ spanish ] = "Formato del archivo Excel no soportado o desconocido." ;
+        Text [ spanish ] = "Formato de archivo Excel no admitido o desconocido." ;
         Text [ french ] = "Format de fichier Excel inconnu ou incompatible." ;
         Text [ dutch ] = "Niet ondersteund of onbekende Excel-bestandsindeling." ;
         Text [ swedish ] = "Ej understtt eller obekant Excel-filformat." ;
@@ -283,7 +283,7 @@ Resource RID_ERRHDLSC
         Text[ chinese_traditional ] = "不受支援的或不明的 Excel 檔案格式。";
         Text[ arabic ] = "  Excel     .";
         Text[ greek ] = "      Excel.";
-        Text[ korean ] = "알 수 없는 또는 지원되지 않는 Excel 파일 서식.";
+        Text[ korean ] = "알 수 없거나 지원하지 않는 Excel 파일 서식.";
         Text[ turkish ] = "Desteklenmeyen ya da bilinmeyen Excel dosya format.";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Format de fitxer Excel no perms o desconegut.";
@@ -310,7 +310,7 @@ Resource RID_ERRHDLSC
         Text[ chinese_traditional ] = "還不受支援的 Excel 檔案格式。";
         Text[ arabic ] = "  Excel    .";
         Text[ greek ] = "  Excel     .";
-        Text[ korean ] = "Excel 파일 형식이 아직 구현되지 않았습니다.";
+        Text[ korean ] = "아직 구현되지 않은 Excel 파일 서식.";
         Text[ turkish ] = "Henz kullanlmayan Excel dosya format.";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "El format de fitxer Excel encara no s'ha implementat.";
@@ -338,7 +338,7 @@ Resource RID_ERRHDLSC
         Text[ chinese_traditional ] = "這個檔案受到密碼保護。";
         Text[ arabic ] = "    .";
         Text[ greek ] = "     .";
-        Text[ korean ] = "파일은 패스워드로 보호되어 있습니다.";
+        Text[ korean ] = "파일은 암호로 보호되어 있습니다.";
         Text[ turkish ] = "Dosya ifre ile korunuyor.";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Aquest fitxer est protegit amb una contrasenya.";
@@ -359,13 +359,13 @@ Resource RID_ERRHDLSC
         Text [ portuguese ] = "Erro de importao interno." ;
         Text [ portuguese_brazilian ] = "Interner Importfehler" ;
         Text[ chinese_simplified ] = "内部输入错误。";
-        Text[ russian ] = "  .";
+        Text[ russian ] = "  .";
         Text[ polish ] = "Wewntrzny bd importu";
         Text[ japanese ] = "内部のインポートエラー。";
         Text[ chinese_traditional ] = "內部輸入錯誤。";
         Text[ arabic ] = "  ";
         Text[ greek ] = "  .";
-        Text[ korean ] = "내부 가져오기 오류.";
+        Text[ korean ] = "내부의 가져오기 오류";
         Text[ turkish ] = " ie aktarma hatas";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "S'ha produt un error d'importaci intern.";
@@ -387,13 +387,13 @@ Resource RID_ERRHDLSC
         Text [ french ] = "Le fichier ne peut pas tre lu car il contient des donnes au del de la ligne 8192." ;
         Text [ dutch ] = "In het bestand komen beneden regel 8192 gegevens voor en het kan daarom niet worden gelezen." ;
         Text[ chinese_simplified ] = "这个文件含有行数8192之下的数据,因此无法读出。";
-        Text[ russian ] = "  ,       ,    8192.";
+        Text[ russian ] = "  ,      ,    8192.";
         Text[ polish ] = "Plik zawiera znaki poniej wiersza 8192 i z tego powodu nie moe zosta odczytany.";
         Text[ japanese ] = "ファイルは 8192行目の下にデータを含んでいるため、読み取りできません。";
         Text[ chinese_traditional ] = "這個檔案含有列數8192之下的數據,因此無法讀出。";
         Text[ arabic ] = "      8192    .";
         Text[ greek ] = "             8192 .";
-        Text[ korean ] = "파일이 8192 행 미만의 데이터를 포함하고 있어서 읽을 수 없습니다.";
+        Text[ korean ] = "파일은 8192 행 이후의 데이터를 포함하고 있어 읽을 수 없습니다.";
         Text[ turkish ] = "Dosya, 8192 satr altnda veri bulunduu okununamyor.";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "El fitxer cont dades ms enll de la fila 8192 i, per tant, no es pot llegir.";
@@ -406,7 +406,7 @@ Resource RID_ERRHDLSC
         TEXT [ English ] = "File format error in sub-document $(ARG1) at $(ARG2)(row,col)" ;
         TEXT[ english_us ] = "Format error discovered in the file in sub-document $(ARG1) at $(ARG2)(row,col)";
         TEXT[ portuguese ] = "Erro de formato no sub-documento $(ARG1) do ficheiro, na posio $(ARG2)(linha,coluna)";
-        TEXT[ russian ] = "     $(ARG1)   $(ARG2)(,).";
+        TEXT[ russian ] = "     $(ARG1)   $(ARG2)(,).";
         TEXT[ greek ] = "         $(ARG1)   $(ARG2)(, )";
         TEXT[ dutch ] = "Indelingsfout in subdocument $(ARG1) op positie $(ARG2)(rij,kolom)";
         TEXT[ french ] = "Erreur de format dans le sous-document $(ARG1) du fichier, position $(ARG2)(ligne,colonne).";
@@ -417,7 +417,7 @@ Resource RID_ERRHDLSC
         TEXT[ polish ] = "Wykryto w pliku bd w formacie dokumentu podrzdnego $(ARG1) na pozycji $(ARG2)(wiersz, kolumna)";
         TEXT[ portuguese_brazilian ] = "File format error in sub-document $(ARG1) at $(ARG2)(row,col)";
         TEXT[ japanese ] = "ファイルの部分ドキュメント $(ARG1)の$(ARG2)(行、列)に書式エラーが見つかりました。";
-        TEXT[ korean ] = "파일의 $(ARG2)(행, 열)위치에 있는 부분 문서 $(ARG1)에서 형식 오류 발견";
+        TEXT[ korean ] = "파일의 $(ARG2)(행, 열)위치에 있는 부분 문서 $(ARG1)에서 서식 오류를 발견했습니다.";
         TEXT[ chinese_simplified ] = "在文件的子文档$(ARG1)内的 $(ARG2)(行,列)处发现格式错误";
         TEXT[ chinese_traditional ] = "發現檔案的子文件$(ARG1)內含格式錯誤,位置在 $(ARG2)(行,欄)";
         TEXT[ turkish ] = "File format error in sub-document $(ARG1) at $(ARG2)(row,col)";
@@ -447,7 +447,7 @@ Resource RID_ERRHDLSC
         Text[ chinese_traditional ] = "檔案含有格式錯誤,位置在 $(ARG1)(行,欄)";
         Text[ arabic ] = "     $(ARG1)(ѡ)  ";
         Text[ greek ] = "     $(ARG1)(,)  ";
-        Text[ korean ] = "파일의 $(ARG1)(행,열)에서 형식 오류 발견";
+        Text[ korean ] = "파일의 $(ARG1)(행,열)에서 서식 오류를 발견했습니다.";
         Text[ turkish ] = "Dosya format hatas $(ARG1)(satr, stun) bulundu";
         Text[ catalan ] = "Error en el format del fitxer a la posici $(ARG1)(fila,columna)";
         Text[ finnish ] = "Tiedostomuotovirhe ilmeni kohteessa $(ARG1)(rivi,sarake).";
@@ -476,7 +476,7 @@ Resource RID_ERRHDLSC
         Text[ chinese_traditional ] = "無法連結檔案。";
         Text[ arabic ] = "  .";
         Text[ greek ] = "        .";
-        Text[ korean ] = "파일에 대한 연결을 구축하지 못했습니다.";
+        Text[ korean ] = "파일로 연결하지 못했습니다.";
         Text[ turkish ] = "Dosya ile balant oluturulamad.";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "No s'ha pogut establir la connexi al fitxer.";
@@ -561,7 +561,7 @@ Resource RID_ERRHDLSC
         Text[ chinese_traditional ] = "超過列數最高限度。超過的列不會被匯入!";
         Text[ arabic ] = "    .      !";
         Text[ greek ] = "     .          !";
-        Text[ korean ] = "행의 최대수를 초과했습니다. 초과된 행은 함께 들여와지지 않았습니다.";
+        Text[ korean ] = "행의 최대수를 초과했습니다. 초과된 행은 가져오지 않았습니다.";
         Text[ turkish ] = "Azami satr says ald. Fazla satrlar ie aktarlmad!";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "S'ha excedit el nombre mxim de files. Les files sobrants no s'han importat!";
@@ -575,22 +575,22 @@ Resource RID_ERRHDLSC
         Text [ english_us ] = "The data could not be loaded completely because the maximum number of rows per sheet was exceeded." ;
         Text[ portuguese ] = "The data could not be loaded completely because the maximum number of rows per sheet was exceeded.";
         Text[ russian ] = "The data could not be loaded completely because the maximum number of rows per sheet was exceeded.";
-        Text[ spanish ] = "The data could not be loaded completely because the maximum number of rows per sheet was exceeded.";
-        Text[ italian ] = "The data could not be loaded completely because the maximum number of rows per sheet was exceeded.";
-        Text[ swedish ] = "The data could not be loaded completely because the maximum number of rows per sheet was exceeded.";
+        Text[ spanish ] = "Los datos no se pudieron cargar por completo por haberse excedido el nmero mximo de filas por hoja. ";
+        Text[ italian ] = "Impossibile caricare completamente i dati in quanto il numero di colonne supera il massimo consentito.";
+        Text[ swedish ] = "Det gick inte att ladda data fullstndigt eftersom det maximala antalet rader per tabell har verskridits.";
         Text[ polish ] = "The data could not be loaded completely because the maximum number of rows per sheet was exceeded.";
         Text[ portuguese_brazilian ] = "The data could not be loaded completely because the maximum number of rows per sheet was exceeded.";
-        Text[ japanese ] = "The data could not be loaded completely because the maximum number of rows per sheet was exceeded.";
-        Text[ korean ] = "The data could not be loaded completely because the maximum number of rows per sheet was exceeded.";
+        Text[ japanese ] = "シート内の行数が最大数を超えたため、データの一部を読み込むことができませんでした。";
+        Text[ korean ] = "한 시트 당 행의 최대치가 초과되었기 때문에 데이터를 완전하게 로딩할 수 없습니다.";
         Text[ turkish ] = "The data could not be loaded completely because the maximum number of rows per sheet was exceeded.";
         Text[ thai ] = "The data could not be loaded completely because the maximum number of rows per sheet was exceeded.";
         Text[ greek ] = "The data could not be loaded completely because the maximum number of rows per sheet was exceeded.";
         Text[ dutch ] = "The data could not be loaded completely because the maximum number of rows per sheet was exceeded.";
-        Text[ french ] = "The data could not be loaded completely because the maximum number of rows per sheet was exceeded.";
+        Text[ french ] = "Impossible de charger la totalit des donnes : dpassement du nombre maximal de lignes par feuille.";
         Text[ finnish ] = "The data could not be loaded completely because the maximum number of rows per sheet was exceeded.";
         Text[ danish ] = "The data could not be loaded completely because the maximum number of rows per sheet was exceeded.";
-        Text[ chinese_simplified ] = "The data could not be loaded completely because the maximum number of rows per sheet was exceeded.";
-        Text[ chinese_traditional ] = "The data could not be loaded completely because the maximum number of rows per sheet was exceeded.";
+        Text[ chinese_simplified ] = "无法完全装载数据,因为已经超过表格行的最大数目。";
+        Text[ chinese_traditional ] = "由於超過每張工作表的最大列數,無法完全載入資料。";
         Text[ arabic ] = "The data could not be loaded completely because the maximum number of rows per sheet was exceeded.";
         Text[ catalan ] = "The data could not be loaded completely because the maximum number of rows per sheet was exceeded.";
     };
@@ -601,22 +601,22 @@ Resource RID_ERRHDLSC
         Text [ english_us ] = "The data could not be loaded completely because the maximum number of columns per sheet was exceeded." ;
         Text[ portuguese ] = "The data could not be loaded completely because the maximum number of columns per sheet was exceeded.";
         Text[ russian ] = "The data could not be loaded completely because the maximum number of columns per sheet was exceeded.";
-        Text[ spanish ] = "The data could not be loaded completely because the maximum number of columns per sheet was exceeded.";
-        Text[ italian ] = "The data could not be loaded completely because the maximum number of columns per sheet was exceeded.";
-        Text[ swedish ] = "The data could not be loaded completely because the maximum number of columns per sheet was exceeded.";
+        Text[ spanish ] = "Los datos no se han podido cargar por completo por haberse excedido el nmero mximo de columnas por hoja. ";
+        Text[ italian ] = "Impossibile caricare completamente i dati in quanto il numero delle colonne per pagina supera il massimo consentito.";
+        Text[ swedish ] = "Det gick inte att ladda data fullstndigt eftersom det maximala antalet kolumner per tabell har verskridits.";
         Text[ polish ] = "The data could not be loaded completely because the maximum number of columns per sheet was exceeded.";
         Text[ portuguese_brazilian ] = "The data could not be loaded completely because the maximum number of columns per sheet was exceeded.";
-        Text[ japanese ] = "The data could not be loaded completely because the maximum number of columns per sheet was exceeded.";
-        Text[ korean ] = "The data could not be loaded completely because the maximum number of columns per sheet was exceeded.";
+        Text[ japanese ] = "シート内の列数が最大数を超えたため、データの一部を読み込むことができませんでした。";
+        Text[ korean ] = "한 시트 당 열의 최대치가 초과되었기 때문에 데이터를 완전하게 로딩할 수 없습니다.";
         Text[ turkish ] = "The data could not be loaded completely because the maximum number of columns per sheet was exceeded.";
         Text[ thai ] = "The data could not be loaded completely because the maximum number of columns per sheet was exceeded.";
         Text[ greek ] = "The data could not be loaded completely because the maximum number of columns per sheet was exceeded.";
         Text[ dutch ] = "The data could not be loaded completely because the maximum number of columns per sheet was exceeded.";
-        Text[ french ] = "The data could not be loaded completely because the maximum number of columns per sheet was exceeded.";
+        Text[ french ] = "Impossible de charger la totalit des donnes : dpassement du nombre maximal de colonnes par feuille.";
         Text[ finnish ] = "The data could not be loaded completely because the maximum number of columns per sheet was exceeded.";
         Text[ danish ] = "The data could not be loaded completely because the maximum number of columns per sheet was exceeded.";
-        Text[ chinese_simplified ] = "The data could not be loaded completely because the maximum number of columns per sheet was exceeded.";
-        Text[ chinese_traditional ] = "The data could not be loaded completely because the maximum number of columns per sheet was exceeded.";
+        Text[ chinese_simplified ] = "无法完全装载数据,因为已经超过表格列的最大数目。";
+        Text[ chinese_traditional ] = "由於超過每張工作表的最大欄數,無法完全載入資料。";
         Text[ arabic ] = "The data could not be loaded completely because the maximum number of columns per sheet was exceeded.";
         Text[ catalan ] = "The data could not be loaded completely because the maximum number of columns per sheet was exceeded.";
     };
@@ -627,22 +627,22 @@ Resource RID_ERRHDLSC
         Text [ english_us ] = "Some sheets could not be loaded because the maximum number of sheets was exceeded." ;
         Text[ portuguese ] = "Some sheets could not be loaded because the maximum number of sheets was exceeded.";
         Text[ russian ] = "Some sheets could not be loaded because the maximum number of sheets was exceeded.";
-        Text[ spanish ] = "Some sheets could not be loaded because the maximum number of sheets was exceeded.";
-        Text[ italian ] = "Some sheets could not be loaded because the maximum number of sheets was exceeded.";
-        Text[ swedish ] = "Some sheets could not be loaded because the maximum number of sheets was exceeded.";
+        Text[ spanish ] = "Algunas hojas no se han podido cargar por completo por haberse excedido el nmero mximo de hojas.";
+        Text[ italian ] = "Impossibile caricare tutte le tabelle in quanto superano il numero massimo consentito.";
+        Text[ swedish ] = "Det gick inte att ladda en del tabeller eftersom det maximala antalet tabeller har verskridits.";
         Text[ polish ] = "Some sheets could not be loaded because the maximum number of sheets was exceeded.";
         Text[ portuguese_brazilian ] = "Some sheets could not be loaded because the maximum number of sheets was exceeded.";
-        Text[ japanese ] = "Some sheets could not be loaded because the maximum number of sheets was exceeded.";
-        Text[ korean ] = "Some sheets could not be loaded because the maximum number of sheets was exceeded.";
+        Text[ japanese ] = "シートの数が最大数を超えたため、いくつかのシートを読み込むことができませんでした。";
+        Text[ korean ] = "시트의 최대치가 초과되었기 때문에 시트 중 몇가지는로딩할 수 없습니다.";
         Text[ turkish ] = "Some sheets could not be loaded because the maximum number of sheets was exceeded.";
         Text[ thai ] = "Some sheets could not be loaded because the maximum number of sheets was exceeded.";
         Text[ greek ] = "Some sheets could not be loaded because the maximum number of sheets was exceeded.";
         Text[ dutch ] = "Some sheets could not be loaded because the maximum number of sheets was exceeded.";
-        Text[ french ] = "Some sheets could not be loaded because the maximum number of sheets was exceeded.";
+        Text[ french ] = "Impossible de charger la totalit des feuilles : dpassement du nombre maximal de feuilles.";
         Text[ finnish ] = "Some sheets could not be loaded because the maximum number of sheets was exceeded.";
         Text[ danish ] = "Some sheets could not be loaded because the maximum number of sheets was exceeded.";
-        Text[ chinese_simplified ] = "Some sheets could not be loaded because the maximum number of sheets was exceeded.";
-        Text[ chinese_traditional ] = "Some sheets could not be loaded because the maximum number of sheets was exceeded.";
+        Text[ chinese_simplified ] = "无法完全装载数据,因为已经超过表格的最大数目。";
+        Text[ chinese_traditional ] = "由於超過工作表的最大數,有些工作表無法載入。";
         Text[ arabic ] = "Some sheets could not be loaded because the maximum number of sheets was exceeded.";
         Text[ catalan ] = "Some sheets could not be loaded because the maximum number of sheets was exceeded.";
     };
@@ -741,7 +741,7 @@ Resource RID_ERRHDLSC
         Text [ swedish ] = "Dokumentet innehller mer rader n vad som understds av utmatningsformatet.\nvertaliga rader sparades inte." ;
         Text [ danish ] = "Dokumentet indeholder flere rkker end output-formatet understtter.\nDe overtallige rkker blev ikke gemt." ;
         Text [ italian ] = "Il documento contiene pi righe di quelle supportate dal formato di uscita.\nLe righe in eccesso non sono state salvate." ;
-        Text [ spanish ] = "El documento contiene ms filas de las que soporta el formato seleccionado.\nLas filas adicionales no se guardaron." ;
+        Text [ spanish ] = "El documento contiene ms filas de las que el formato seleccionado admite.\nLas filas adicionales no se guardaron." ;
         Text [ french ] = "Le document comporte plus de lignes que le format n'en supporte.\nLes lignes en surplus n'ont pas t enregistres." ;
         Text [ dutch ] = "Het document bevat teveel regels voor dit formaat.\nDeze zijn niet opgeslagen." ;
         Text[ chinese_simplified ] = "整个文档含有的行数超过打印格式支持的范围。\n超过的行不会被存盘。";
@@ -751,7 +751,7 @@ Resource RID_ERRHDLSC
         Text[ chinese_traditional ] = "這個文件含有的列數超過列印格式支持的範圍。\n超過的列不會被儲存。";
         Text[ arabic ] = "            .\n    .";
         Text[ greek ] = "          \n.     .";
-        Text[ korean ] = "출력 형식이 지원할 수 있는것보다 더 많은 행이 문서에 포함되어 있습니다.\n초과되는 행은 저장되지 않았습니다.";
+        Text[ korean ] = "선택된 서식에서 지원할 수 있는 것보다 더 많은 행이 문서에 포함되어 있습니다.\n초과 행은 저장하지 않습니다.";
         Text[ turkish ] = "Belge, kt formatnn desteklediinden ok satr ieriyor.\nFazla gelen satrlar kaydedilmedi.";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "El document cont ms files de les que permet el format seleccionat.\nLes files addicionals no s'han desat.";
@@ -766,7 +766,7 @@ Resource RID_ERRHDLSC
         Text [ portuguese ] = "O documento contm informaes desconhecidas para esta verso do programa.\nAo guardar novamente perder estas informaes!" ;
         Text [ english_us ] = "The document contains information not recognized by this program version.\nResaving the document will delete this information!" ;
         Text [ portuguese_brazilian ] = "Das Dokument enth?lt Informationen, die dieser Programmversion unbekannt sind.\nBei erneutem Speichern gehen diese Informationen verloren!" ;
-        Text [ swedish ] = "Dokumentet innehller information som denna programversion inte knner igen.\nOm Du sparar igen gr den hr informationen frlorad!" ;
+        Text [ swedish ] = "Dokumentet innehller information som denna programversion inte knner igen.\nOm du sparar igen gr den hr informationen frlorad!" ;
         Text [ danish ] = "Dokumentet indeholder informationer, som denne programversion ikke kan genkende.\nHvis du gemmer dokumentet igen, vil disse informationer g tabt." ;
         Text [ italian ] = "Il documento contiene informazioni sconosciute alla versione corrente del programma.\nCon un nuovo salvataggio le informazioni andranno perse!" ;
         Text [ spanish ] = "El documento contiene informacin desconocida para la versin de este programa.\nAl volver a guardar se perder esta informacin!" ;
@@ -779,7 +779,7 @@ Resource RID_ERRHDLSC
         Text[ chinese_traditional ] = "這個程序無法處理這個文件中不明的資訊。\n在重新儲存時這些資訊會流失!";
         Text[ arabic ] = "        .\n       !";
         Text[ greek ] = "             \n.        ";
-        Text[ korean ] = "문서에는 이 프로그램의 버전에 의해서는 인식될 수 없는 정보가 포함되어 있습니다.\n다시 저장시에 이 정보는 상실됩니다!";
+        Text[ korean ] = "문서에는 이 프로그램의 버전으로 인식되지 않는 정보가 포함되어 있습니다.\n다시 저장 시에 이 정보는 상실됩니다.";
         Text[ turkish ] = "Belgede, bu program srmnde bilinmeyen bilgiler mevcut.\nBu bilgiler, yeniden kaytta kaybolacak!";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "El document cont informaci que aquesta versi del programa no reconeix.\nSi es torna a desar el document, aquesta informaci es perdr.";
@@ -796,7 +796,7 @@ Resource RID_ERRHDLSC
         Text [ swedish ] = "Allt innehll i cellerna kunde inte sparas i det angivna formatet." ;
         Text [ danish ] = "Det var ikke muligt at gemme alle celleindhold i det angivne format." ;
         Text [ italian ] = "Non  stato possibile salvare tutti i contenuti delle celle nel formato specificato ." ;
-        Text [ spanish ] = "No se pudieron guardar todos los contenidos de las celdas en el formato especificado." ;
+        Text [ spanish ] = "No se pudo guardar el contenido de las celdas en el formato especificado." ;
         Text [ french ] = "Il n'a pas t possible d'enregistrer le contenu de toutes les cellules dans le format spcifi." ;
         Text [ dutch ] = "Niet van elke cel kan de inhoud in het opgegeven formaat worden opgeslagen." ;
         Text[ chinese_simplified ] = "无法用指定的格式存盘全部的单元格内容。";
@@ -845,7 +845,7 @@ Resource RID_ERRHDLSC
         TEXT [ English ] = "File format error in sub-document $(ARG1) at $(ARG2)(row,col)" ;
         TEXT[ english_us ] = "Format error discovered in the file in sub-document $(ARG1) at $(ARG2)(row,col)";
         TEXT[ portuguese ] = "Erro de formato no sub-documento $(ARG1) do ficheiro, na posio(ARG2)(linha,coluna)";
-        TEXT[ russian ] = "      $(ARG1)   $(ARG2)(,).";
+        TEXT[ russian ] = "     $(ARG1)   $(ARG2)(,).";
         TEXT[ greek ] = "        $(ARG1)   $(ARG2)(,)";
         TEXT[ dutch ] = "Indelingsfout in subdocument $(ARG1) op positie $(ARG2)(rij,kolom)";
         TEXT[ french ] = "Erreur de format dans le sous-document $(ARG1) du fichier, position $(ARG2)(ligne,colonne).";
@@ -856,7 +856,7 @@ Resource RID_ERRHDLSC
         TEXT[ polish ] = "Wykryto w pliku bd w formacie dokumentu podrzdnego $(ARG1) na pozycji $(ARG2)(wiersz, kolumna)";
         TEXT[ portuguese_brazilian ] = "File format error in sub-document $(ARG1) at $(ARG2)(row,col)";
         TEXT[ japanese ] = "ファイルの部分ドキュメント $(ARG1)の $(ARG2)(行、列)に書式エラーが見つかりました。";
-        TEXT[ korean ] = "파일의 $(ARG2)(행,열) 위치에 있는 부분 문서 $(ARG1)에서 형식 오류 발견";
+        TEXT[ korean ] = "파일의 $(ARG2)(행,열) 위치에 있는 부분 문서 $(ARG1)에서 서식 오류를 발견했습니다.";
         TEXT[ chinese_simplified ] = "在文件的子文档$(ARG1)内的 $(ARG2)(行,列)处发现格式错误";
         TEXT[ chinese_traditional ] = "發現檔案的子文件$(ARG1)內含格式錯誤,位置在 $(ARG2)(行,欄)";
         TEXT[ turkish ] = "File format error in sub-document $(ARG1) at $(ARG2)(row,col)";
@@ -879,3 +879,8 @@ Resource RID_ERRHDLSC
 
 
 
+
+
+
+
+
diff --git a/sc/source/ui/src/scfuncs.src b/sc/source/ui/src/scfuncs.src
index 1e18770e416b..5c55f9d05632 100644
--- a/sc/source/ui/src/scfuncs.src
+++ b/sc/source/ui/src/scfuncs.src
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: scfuncs.src,v $
  *
- *  $Revision: 1.70 $
+ *  $Revision: 1.71 $
  *
- *  last change: $Author: rt $ $Date: 2002-09-05 18:53:49 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:29 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -118,7 +118,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Cuenta, dentro de la base de datos, todas las celdas cuyos contenidos coinciden con los valores buscados." ;
             Text [ english_us ] = "Counts the cells of a data range whose contents match the search criteria." ;
             Text[ chinese_simplified ] = "计算一个数据区域内符合搜寻条件的单元格数目。";
-            Text[ russian ] = "    ,     .";
+            Text[ russian ] = "    ,     .";
             Text[ polish ] = "Liczy wszystkie komrki z obszaru danych, ktrych zawartoci odpowiadaj podanym kryteriom wyszukiwania.";
             Text[ japanese ] = "データ範囲内で、検索条件に合ったセルの数を数えます。";
             Text[ chinese_traditional ] = "計算一個資料區域內符合搜尋條件的儲存格數目。";
@@ -126,10 +126,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Telt alle cellen van een gegevensbereik, waarvan de inhoud aan de criteria voldoet.";
             Text[ chinese_simplified ] = "计算一个数据区域内符合搜寻条件的单元格数目。";
             Text[ greek ] = "                .";
-            Text[ korean ] = "검색 기준에 맞는 내용이 있는 데이터 영역의 모든 셀을 계수";
+            Text[ korean ] = "검색 기준에 해당하는 내용을 포함하는 데이터 범위의 모든 셀을 셉니다.";
             Text[ turkish ] = "Veri aralnda olup ierikleri arama ltlerine uyan tm hcreleri sayar.";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Compta les celles d'una rea de dades el contingut de les quals coincideix amb els criteris de cerca.";
+            Text[ catalan ] = "Compta les cel.les d'una rea de dades el contingut de les quals coincideix amb els criteris de cerca.";
+            Text[ thai ] = "นับเซลล์ของช่วงข้อมูลที่เนื้อหาเข้ากับเกณฑ์ในการค้นหา";
         };
         ExtraData =
         {
@@ -165,6 +166,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Veritaban";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Base de dades";
+            Text[ thai ] = "ฐานข้อมูล";
         };
         String 3 // Description of Parameter 1
         {
@@ -182,7 +184,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "rea de celdas con los datos" ;
             Text [ english_us ] = "The range of cells containing data." ;
             Text[ chinese_simplified ] = "含有数据的单元格区域";
-            Text[ russian ] = "   ";
+            Text[ russian ] = " ,  .";
             Text[ polish ] = "Zakres komrek sucych do tworzenia bazy danych.";
             Text[ japanese ] = "データのあるセル範囲";
             Text[ chinese_traditional ] = "含有數據的儲存格區域";
@@ -190,10 +192,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Het cellenbereik met de gegevens";
             Text[ chinese_simplified ] = "含有数据的单元格区域";
             Text[ greek ] = "     .";
-            Text[ korean ] = "데이터가 포함되어 있는 셀 영역";
+            Text[ korean ] = "데이터가 포함되어 있는 셀 범위";
             Text[ turkish ] = "Verileri ieren hcre aral";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "rea de celles que contenen les dades.";
+            Text[ catalan ] = "rea de cel.les que contenen les dades.";
+            Text[ thai ] = "ช่วงของเซลล์มีข้อมูล";
         };
         String 4 // Name of Parameter 2
         {
@@ -207,7 +210,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ danish ] = "Databasefelt" ;
             Text [ french ] = "Champ" ;
             Text [ swedish ] = "databasflt" ;
-            Text [ dutch ] = "Database-veld" ;
+            Text [ dutch ] = "Databaseveld" ;
             Text [ spanish ] = "Campo de base de datos" ;
             Text [ english_us ] = "Database field" ;
             Text[ chinese_simplified ] = "field";
@@ -216,13 +219,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ japanese ] = "データベースフィールド";
             Text[ chinese_traditional ] = "field";
             Text[ arabic ] = "Field";
-            Text[ dutch ] = "Database-veld";
+            Text[ dutch ] = "Databaseveld";
             Text[ chinese_simplified ] = "field";
             Text[ greek ] = "  ";
             Text[ korean ] = "데이터베이스 필드";
             Text[ turkish ] = "Veritaban alan";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Camp de la base de dades";
+            Text[ thai ] = "เขตข้อมูลของฐานข้อมูล";
         };
         String 5 // Description of Parameter 2
         {
@@ -237,7 +241,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ danish ] = "Definerer databasefeltet (kolonne) for sgekriterierne." ;
             Text [ french ] = "Indique le champ de base de donnes (colonne) utilis pour les critres de recherche." ;
             Text [ swedish ] = "Definierar databasfltet (kolumn) fr skkriterierna." ;
-            Text [ dutch ] = "Bepaalt het database-veld (kolom) voor de zoekcriteria." ;
+            Text [ dutch ] = "Bepaalt het databaseveld (kolom) voor de zoekcriteria." ;
             Text [ spanish ] = "indica el campo (columna) que se utiliza para los valores buscados." ;
             Text [ english_us ] = "Indicates which database field (column) is to be used for the search criteria." ;
             Text[ chinese_simplified ] = "指定要当作搜寻条件的数据列。";
@@ -246,13 +250,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ japanese ] = "検索条件をあてはめるデータベースフィールド(列)。";
             Text[ chinese_traditional ] = "含有搜尋條件的資料庫區域(欄)。";
             Text[ arabic ] = "     .";
-            Text[ dutch ] = "Bepaalt het database-veld (kolom) voor de zoekcriteria.";
+            Text[ dutch ] = "Bepaalt het databaseveld (kolom) voor de zoekcriteria.";
             Text[ chinese_simplified ] = "指定要当作搜寻条件的数据列。";
             Text[ greek ] = "     ()    .";
             Text[ korean ] = "검색 기준에 대한 데이터베이스 필드(열) 정의";
             Text[ turkish ] = "Arama ltleri iin veritaban alann (stun) belirler.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Indica quin camp de la base de dades (columna) s'ha d'utilitzar per als criteris de cerca.";
+            Text[ thai ] = "ระบุว่าไม่ใช้เขตข้อมูลของฐานข้อมูล (คอลัมน์) สำหรับเกณฑ์ในการค้นหา";
         };
         String 6 // Name of Parameter 3
         {
@@ -282,6 +287,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Arama ltleri";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Criteris de cerca";
+            Text[ thai ] = "เกณฑ์ในการค้นหา";
         };
         String 7 // Description of Parameter 3
         {
@@ -299,7 +305,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "rea de celdas que contiene los valores buscados." ;
             Text [ english_us ] = "Defines the cell range containing the search criteria." ;
             Text[ chinese_simplified ] = "含有搜寻条件的单元格区域。";
-            Text[ russian ] = "  ,    .";
+            Text[ russian ] = "  ,    .";
             Text[ polish ] = "Wyznacza zakres komrek zawierajcych kryteria wyszukiwania.";
             Text[ japanese ] = "検索条件を含むセル範囲。";
             Text[ chinese_traditional ] = "確定含有搜尋條件的儲存格區域。";
@@ -307,10 +313,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Geeft het cellenbereik met de zoekcriteria aan.";
             Text[ chinese_simplified ] = "含有搜寻条件的单元格区域。";
             Text[ greek ] = "       .";
-            Text[ korean ] = "검색 기준을 포함하고 있는 셀 영역을 정의";
+            Text[ korean ] = "검색 기준을 포함하고 있는 셀 범위를 지정합니다.";
             Text[ turkish ] = "Arama ltlerini ieren hcre araln tanmlar.";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Defineix l'rea de celles que contenen els criteris de cerca.";
+            Text[ catalan ] = "Defineix l'rea de cel.les que contenen els criteris de cerca.";
+            Text[ thai ] = "กำหนดช่วงของเซลล์มีเกณฑ์ในการค้นหา";
         };
     };
     Resource SC_OPCODE_DB_COUNT_2
@@ -332,7 +339,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Cuenta las celdas en un rea de datos que no estn en blanco cuyos contenidos coinciden con los criterios de bsqueda." ;
             Text [ english_us ] = "Counts all non-blank cells of a data range where the content corresponds to the search criteria." ;
             Text[ chinese_simplified ] = "计算一个数据区域内符合搜寻条件的且不是空白的单元格数目。";
-            Text[ russian ] = "     ,     .";
+            Text[ russian ] = "     ,     .";
             Text[ polish ] = "Liczy wszystkie niepuste komrki obszaru danych, ktrych zawartoci odpowiadaj kryteriom wyszukiwania.";
             Text[ japanese ] = "検索条件を満たす内容のデータ範囲を対象に、空白でないすべてのセルの数を数えます。";
             Text[ chinese_traditional ] = "計算一個資料區域內符合搜尋條件的不是空白的儲存格數目。";
@@ -340,10 +347,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Telt alle niet-lege cellen van een gegevensbereik waarvan de inhoud aan de zoekcriteria voldoet.";
             Text[ chinese_simplified ] = "计算一个数据区域内符合搜寻条件的且不是空白的单元格数目。";
             Text[ greek ] = "                .";
-            Text[ korean ] = "내용이 검색 기준에 상응하는, 데이터영역의 비어있지 않은 셀을 모두 셉니다.";
+            Text[ korean ] = "내용이 검색 기준에 상응하며 데이터 범위의 비어있지 않은 셀을 모두 셉니다.";
             Text[ turkish ] = "Veri aralnda bulunup ierikleri arama ltlerine uyan ve bo olmayan hcrelerini sayar.";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Compta totes les celles que no estiguin en blanc d'una rea de dades el contingut de les quals correspongui als criteris de cerca.";
+            Text[ catalan ] = "Compta totes les cel.les que no estiguin en blanc d'una rea de dades el contingut de les quals correspongui als criteris de cerca.";
+            Text[ thai ] = "นับเซลล์ที่ไม่เป็นช่องว่างทั้งหมดของช่วงข้อมูลที่เนื้อหาตรงกับเกณฑ์ในการค้นหา";
         };
         ExtraData =
         {
@@ -379,6 +387,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Veritaban";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Base de dades";
+            Text[ thai ] = "ฐานข้อมูล";
         };
         String 3 // Description of Parameter 1
         {
@@ -396,7 +405,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "rea de celdas con los datos" ;
             Text [ english_us ] = "The range of cells containing data." ;
             Text[ chinese_simplified ] = "含有数据的单元格区域";
-            Text[ russian ] = "   .";
+            Text[ russian ] = " ,  .";
             Text[ polish ] = "Zakres komrek sucych do tworzenia bazy danych.";
             Text[ japanese ] = "データのあるセル範囲";
             Text[ chinese_traditional ] = "含有數據的儲存格區域";
@@ -404,10 +413,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Het cellenbereik met de gegevens";
             Text[ chinese_simplified ] = "含有数据的单元格区域";
             Text[ greek ] = "     .";
-            Text[ korean ] = "데이터가 포함되어 있는 셀 영역";
+            Text[ korean ] = "데이터가 포함되어 있는 셀 범위";
             Text[ turkish ] = "Verileri ieren hcre aral";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "rea de celles que contenen les dades.";
+            Text[ catalan ] = "rea de cel.les que contenen les dades.";
+            Text[ thai ] = "ช่วงของเซลล์มีข้อมูล";
         };
         String 4 // Name of Parameter 2
         {
@@ -421,7 +431,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ danish ] = "Databasefelt" ;
             Text [ french ] = "Champ" ;
             Text [ swedish ] = "databasflt" ;
-            Text [ dutch ] = "Database-veld" ;
+            Text [ dutch ] = "Databaseveld" ;
             Text [ spanish ] = "Campo de base de datos" ;
             Text [ english_us ] = "Database field" ;
             Text[ chinese_simplified ] = "field";
@@ -430,13 +440,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ japanese ] = "データベースフィールド";
             Text[ chinese_traditional ] = "field";
             Text[ arabic ] = "Field";
-            Text[ dutch ] = "Database-veld";
+            Text[ dutch ] = "Databaseveld";
             Text[ chinese_simplified ] = "field";
             Text[ greek ] = "  ";
             Text[ korean ] = "데이터베이스 필드";
             Text[ turkish ] = "Veritaban alan";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Camp de la base de dades";
+            Text[ thai ] = "เขตข้อมูลของฐานข้อมูล";
         };
         String 5 // Description of Parameter 2
         {
@@ -451,7 +462,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ danish ] = "Definerer databasefeltet (kolonne) for sgekriterierne." ;
             Text [ french ] = "Indique le champ de base de donnes (colonne) utilis pour les critres de recherche." ;
             Text [ swedish ] = "Definierar databasfltet (kolumn) fr skkriterierna." ;
-            Text [ dutch ] = "Bepaalt het database-veld (kolom) voor de zoekcriteria." ;
+            Text [ dutch ] = "Bepaalt het databaseveld (kolom) voor de zoekcriteria." ;
             Text [ spanish ] = "indica el campo (columna) que se utiliza en la funcin." ;
             Text [ english_us ] = "Indicates which database field (column) is to be used for the search criteria." ;
             Text[ chinese_simplified ] = "指定要当作搜寻条件的数据列。";
@@ -460,13 +471,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ japanese ] = "検索条件をあてはめるデータベースフィールド(列)。";
             Text[ chinese_traditional ] = "含有搜尋條件的資料庫區域(欄)。";
             Text[ arabic ] = "     .";
-            Text[ dutch ] = "Bepaalt het database-veld (kolom) voor de zoekcriteria.";
+            Text[ dutch ] = "Bepaalt het databaseveld (kolom) voor de zoekcriteria.";
             Text[ chinese_simplified ] = "指定要当作搜寻条件的数据列。";
             Text[ greek ] = "     ()    .";
             Text[ korean ] = "검색 기준에 사용되는 데이터베이스 필드(열) 정의";
             Text[ turkish ] = "Arama ltleri iin veritaban alann (stun) belirler.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Indica quin camp de la base de dades (columna) s'ha d'utilitzar per als criteris de cerca.";
+            Text[ thai ] = "ระบุว่าไม่ใช้เขตข้อมูลของฐานข้อมูล (คอลัมน์) สำหรับเกณฑ์การค้นหา";
         };
         String 6 // Name of Parameter 3
         {
@@ -496,6 +508,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Arama ltleri";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Criteris de cerca";
+            Text[ thai ] = "เกณฑ์การค้นหา";
         };
         String 7 // Description of Parameter 3
         {
@@ -513,7 +526,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "rea de celdas que contiene los criterios de bsqueda." ;
             Text [ english_us ] = "Defines the cell range containing the search criteria." ;
             Text[ chinese_simplified ] = "含有搜寻条件的单元格区域。";
-            Text[ russian ] = "  ,    .";
+            Text[ russian ] = "  ,    .";
             Text[ polish ] = "Wyznacza zakres komrek zawierajcych kryteria wyszukiwania.";
             Text[ japanese ] = "検索条件を含むセル範囲。";
             Text[ chinese_traditional ] = "確定含有搜尋條件的儲存格區域。";
@@ -521,10 +534,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Geeft het cellenbereik met de zoekcriteria aan.";
             Text[ chinese_simplified ] = "含有搜寻条件的单元格区域。";
             Text[ greek ] = "       .";
-            Text[ korean ] = "검색 기준을 포함하고 있는 셀 영역을 정의";
+            Text[ korean ] = "검색 기준을 포함하고 있는 셀 범위를 지정합니다.";
             Text[ turkish ] = "Arama ltlerini ieren hcre araln tanmlar.";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Defineix l'rea de celles que contenen els criteris de cerca.";
+            Text[ catalan ] = "Defineix l'rea de cel.les que contenen els criteris de cerca.";
+            Text[ thai ] = "กำหนดช่วงเซลล์มีเกณฑ์การค้นหา";
         };
     };
      // -=*# Resource for function DBMITTELWERT #*=-
@@ -546,7 +560,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Devuelve el promedio de todas las celdas de un rea de una base de datos cuyos contenidos coinciden con los criterios." ;
             Text [ english_us ] = "Returns the average value of all the cells of a data range whose contents match the search criteria." ;
             Text[ chinese_simplified ] = "计算一个数据区域中符合搜寻条件的数据的平均值。";
-            Text[ russian ] = "       ,     .";
+            Text[ russian ] = "       ,     .";
             Text[ polish ] = "Wyznacza redni wszystkich komrek zakresu danych, zawartoci ktrych odpowiada kryteriom wyszukiwania.";
             Text[ japanese ] = "データ範囲内で、検索条件に合ったすべてのセルの平均値を返します。";
             Text[ chinese_traditional ] = "計算一個資料區域中符合搜尋條件的數據平均值。";
@@ -554,10 +568,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Berekent de gemiddelde waarde van alle cellen van een gegevensbereik waarvan de inhoud overeenkomt met de zoekcriteria.";
             Text[ chinese_simplified ] = "计算一个数据区域中符合搜寻条件的数据的平均值。";
             Text[ greek ] = "         ,        .";
-            Text[ korean ] = "검색 기준에 맞는 내용이 있는 데이터 영역의 모든 셀의 평균값 만들기";
+            Text[ korean ] = "검색 기준에 해당하는 내용이 있는 데이터 범위의 모든 셀의 평균값을 만듭니다.";
             Text[ turkish ] = "Veri aralnda olup ierikleri arama ltlerine uyan hcrelerin ortalamasn verir.";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Torna el valor mitj de totes les celles d'un rea de dades els continguts de les quals coincideixen amb els criteris de cerca.";
+            Text[ catalan ] = "Torna el valor mitj de totes les cel.les d'una rea de dades els continguts de les quals coincideixen amb els criteris de cerca.";
+            Text[ thai ] = "ส่งกลับค่าเฉลี่ยของเซลล์ของช่วงข้อมูลทั้งหมดของเนื้อหาที่เข้ากับเกณฑ์การค้นหา";
         };
         ExtraData =
         {
@@ -593,6 +608,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Veritaban";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Base de dades";
+            Text[ thai ] = "ฐานข้อมูล";
         };
         String 3 // Description of Parameter 1
         {
@@ -610,7 +626,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "es el rea de celdas con los datos" ;
             Text [ english_us ] = "The range of cells containing data." ;
             Text[ chinese_simplified ] = "含数据的单元格区域";
-            Text[ russian ] = "   .";
+            Text[ russian ] = " ,  .";
             Text[ polish ] = "Zakres komrek sucych do tworzenia bazy danych.";
             Text[ japanese ] = "データのあるセル範囲";
             Text[ chinese_traditional ] = "含數據的儲存格區域";
@@ -618,10 +634,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Het cellenbereik met de gegevens";
             Text[ chinese_simplified ] = "含数据的单元格区域";
             Text[ greek ] = "     .";
-            Text[ korean ] = "데이터가 있는 셀 영역";
+            Text[ korean ] = "데이터가 포함되어 있는 셀 범위";
             Text[ turkish ] = "Verileri ieren hcre aral";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "rea de celles que contenen les dades.";
+            Text[ catalan ] = "rea de cel.les que contenen les dades.";
+            Text[ thai ] = "ช่วงของเซลล์มีข้อมูล";
         };
         String 4 // Name of Parameter 2
         {
@@ -635,7 +652,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ danish ] = "Databasefelt" ;
             Text [ french ] = "Champ de BD" ;
             Text [ swedish ] = "databasflt" ;
-            Text [ dutch ] = "Database-veld" ;
+            Text [ dutch ] = "Databaseveld" ;
             Text [ spanish ] = "Campo de base de datos" ;
             Text [ english_us ] = "Database field" ;
             Text[ chinese_simplified ] = "field";
@@ -644,13 +661,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ japanese ] = "データベースフィールド";
             Text[ chinese_traditional ] = "field";
             Text[ arabic ] = "Field";
-            Text[ dutch ] = "Database-veld";
+            Text[ dutch ] = "Databaseveld";
             Text[ chinese_simplified ] = "field";
             Text[ greek ] = "  ";
             Text[ korean ] = "데이터베이스 필드";
             Text[ turkish ] = "Veritaban alan";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Camp de la base de dades";
+            Text[ thai ] = "เขตข้อมูลของฐานข้อมูล";
         };
         String 5 // Description of Parameter 2
         {
@@ -665,7 +683,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ danish ] = "Definerer databasefeltet (kolonne) for sgekriterierne." ;
             Text [ french ] = "Indique le champ de base de donnes (colonne) utilis pour les critres de recherche." ;
             Text [ swedish ] = "Definierar databasfltet (kolumn) fr skkriterierna." ;
-            Text [ dutch ] = "Bepaalt het database-veld (kolom) voor de zoekcriteria." ;
+            Text [ dutch ] = "Bepaalt het databaseveld (kolom) voor de zoekcriteria." ;
             Text [ spanish ] = "indica el campo de la base de datos (columna) para los valores buscados." ;
             Text [ english_us ] = "Indicates which database field (column) is to be used for the search criteria." ;
             Text[ chinese_simplified ] = "确定含有搜寻条件的数据库名称或列号。";
@@ -674,13 +692,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ japanese ] = "検索条件をあてはめるデータベースフィールド(列)。";
             Text[ chinese_traditional ] = "確定含有搜尋條件的資料庫名稱或欄號。";
             Text[ arabic ] = "     .";
-            Text[ dutch ] = "Bepaalt het database-veld (kolom) voor de zoekcriteria.";
+            Text[ dutch ] = "Bepaalt het databaseveld (kolom) voor de zoekcriteria.";
             Text[ chinese_simplified ] = "确定含有搜寻条件的数据库名称或列号。";
             Text[ greek ] = "     ()    .";
             Text[ korean ] = "검색 기준에 사용되는 데이터베이스 필드(열) 정의";
             Text[ turkish ] = "Arama ltleri iin veritaban alann (stun) belirler.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Indica quin camp de la base de dades (columna) s'ha d'utilitzar per als criteris de cerca.";
+            Text[ thai ] = "ระบุว่าไม่ใช้เขตข้อมูลของฐานข้อมูล (คอลัมน์) สำหรับเกณฑ์การค้นหา";
         };
         String 6 // Name of Parameter 3
         {
@@ -710,6 +729,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Arama ltleri";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Criteris de cerca";
+            Text[ thai ] = "เกณฑ์การค้นหา";
         };
         String 7 // Description of Parameter 3
         {
@@ -727,7 +747,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "rea de celdas que contiene los valores buscados." ;
             Text [ english_us ] = "Defines the cell range containing the search criteria." ;
             Text[ chinese_simplified ] = "含有搜寻条件的单元格区域。";
-            Text[ russian ] = "  ,    .";
+            Text[ russian ] = "  ,    .";
             Text[ polish ] = "Wyznacza zakres komrek zawierajcych kryteria wyszukiwania.";
             Text[ japanese ] = "検索条件を含むセル範囲。";
             Text[ chinese_traditional ] = "確定含有搜尋條件的儲存格區域。";
@@ -735,10 +755,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Geeft het cellenbereik met de zoekcriteria aan.";
             Text[ chinese_simplified ] = "含有搜寻条件的单元格区域。";
             Text[ greek ] = "       .";
-            Text[ korean ] = "검색 기준을 포함하고 있는 셀 영역 정의";
+            Text[ korean ] = "검색 기준을 포함하고 있는 셀 범위를 지정합니다.";
             Text[ turkish ] = "Arama ltlerini ieren hcre araln tanmlar.";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Defineix l'rea de celles que contenen els criteris de cerca.";
+            Text[ catalan ] = "Defineix l'rea de cel.les que contenen els criteris de cerca.";
+            Text[ thai ] = "กำหนดช่วงเซลล์มีเกณฑ์การค้นหา";
         };
     };
      // -=*# Resource for function DBAUSZUG #*=-
@@ -760,7 +781,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Devuelve el contenido de la celda de un rea de datos cuyo contenido coincide con los criterios de bsqueda." ;
             Text [ english_us ] = "Defines the contents of the cell of a data range which matches the search criteria." ;
             Text[ chinese_simplified ] = "确定一个数据区域内符合搜寻条件的第一个单元格的内容。";
-            Text[ russian ] = "    ,     .";
+            Text[ russian ] = "    ,    .";
             Text[ polish ] = "Okrela zawarto pierwszej komrki obszaru danych, ktra odpowiada kryteriom wyszukiwania.";
             Text[ japanese ] = "データ範囲内で、検索条件に合ったセルの内容を返します。";
             Text[ chinese_traditional ] = "確定一個符合搜尋條件的資料區域的第一個儲存格的內容。";
@@ -768,10 +789,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Geeft de inhoud van de cel in een gegevensbereik waarvan de inhoud voldoet aan de zoekcriteria.";
             Text[ chinese_simplified ] = "确定一个数据区域内符合搜寻条件的第一个单元格的内容。";
             Text[ greek ] = "       ,        .";
-            Text[ korean ] = "검색 기준에 맞는 내용이 있는 데이터 영역의 셀 내용 제공";
+            Text[ korean ] = "검색 기준에 해당하는 내용이 있는 데이터 범위의 셀을 지정합니다.";
             Text[ turkish ] = "Veri aralnda olup ierii arama ltlerine uyan hcrenin ieriini verir.";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Defineix el contingut de la cella d'una rea de dades que coincideix amb els criteris de cerca.";
+            Text[ catalan ] = "Defineix el contingut de la cel.la d'una rea de dades que coincideix amb els criteris de cerca.";
+            Text[ thai ] = "กำหนดเนื้อหาของเซลล์ของช่วงข้อมูลที่ตรงกับเกณฑ์การค้นหา";
         };
         ExtraData =
         {
@@ -807,6 +829,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Veritaban";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Base de dades";
+            Text[ thai ] = "ฐานข้อมูล";
         };
         String 3 // Description of Parameter 1
         {
@@ -824,7 +847,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "rea de celdas con los datos" ;
             Text [ english_us ] = "The range of cells containing data." ;
             Text[ chinese_simplified ] = "含有数据的单元格区域";
-            Text[ russian ] = "   .";
+            Text[ russian ] = " ,  .";
             Text[ polish ] = "Zakres komrek sucych do tworzenia bazy danych.";
             Text[ japanese ] = "データのあるセル範囲";
             Text[ chinese_traditional ] = "含有數據的儲存格區域";
@@ -832,10 +855,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Het cellenbereik met de gegevens";
             Text[ chinese_simplified ] = "含有数据的单元格区域";
             Text[ greek ] = "     .";
-            Text[ korean ] = "데이터가 있는 셀 영역";
+            Text[ korean ] = "데이터가 포함되어 있는 셀 범위";
             Text[ turkish ] = "Verileri ieren hcre aral";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "rea de celles que contenen les dades.";
+            Text[ catalan ] = "rea de cel.les que contenen les dades.";
+            Text[ thai ] = "ช่วงของเซลล์มีข้อมูล";
         };
         String 4 // Name of Parameter 2
         {
@@ -849,7 +873,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ danish ] = "Databasefelt" ;
             Text [ french ] = "Champ" ;
             Text [ swedish ] = "databasflt" ;
-            Text [ dutch ] = "Database-veld" ;
+            Text [ dutch ] = "Databaseveld" ;
             Text [ spanish ] = "Campo de base de datos" ;
             Text [ english_us ] = "Database field" ;
             Text[ chinese_simplified ] = "field";
@@ -858,13 +882,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ japanese ] = "データベースフィールド";
             Text[ chinese_traditional ] = "field";
             Text[ arabic ] = "Field";
-            Text[ dutch ] = "Database-veld";
+            Text[ dutch ] = "Databaseveld";
             Text[ chinese_simplified ] = "field";
             Text[ greek ] = "  ";
             Text[ korean ] = "데이터베이스 필드";
             Text[ turkish ] = "Veritaban alan";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Camp de la base de dades";
+            Text[ thai ] = "เขตข้อมูลของฐานข้อมูล";
         };
         String 5 // Description of Parameter 2
         {
@@ -879,7 +904,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ danish ] = "Definerer databasefeltet (kolonne) for sgekriterierne." ;
             Text [ french ] = "Indique le champ de base de donnes (colonne) utilis pour les critres de recherche." ;
             Text [ swedish ] = "Definierar databasfltet (kolumn) fr skkriterierna." ;
-            Text [ dutch ] = "Bepaalt het database-veld (kolom) voor de zoekcriteria." ;
+            Text [ dutch ] = "Bepaalt het databaseveld (kolom) voor de zoekcriteria." ;
             Text [ spanish ] = "indica el campo (columna) que debe utilizarse en la funcin." ;
             Text [ english_us ] = "Indicates which database field (column) is to be used for the search criteria." ;
             Text[ chinese_simplified ] = "确定含有搜寻条件的数据库区域(列)。";
@@ -888,13 +913,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ japanese ] = "検索条件をあてはめるデータベースフィールド(列)。";
             Text[ chinese_traditional ] = "確定含有搜尋條件的資料庫區域(欄)。";
             Text[ arabic ] = "     .";
-            Text[ dutch ] = "Bepaalt het database-veld (kolom) voor de zoekcriteria.";
+            Text[ dutch ] = "Bepaalt het databaseveld (kolom) voor de zoekcriteria.";
             Text[ chinese_simplified ] = "确定含有搜寻条件的数据库区域(列)。";
             Text[ greek ] = "     ()    .";
             Text[ korean ] = "검색 기준에 대한 데이터베이스 필드(열) 정의";
             Text[ turkish ] = "Arama ltleri iin veritaban alann (stun) belirler.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Indica quin camp de la base de dades (columna) s'ha d'utilitzar per als criteris de cerca.";
+            Text[ thai ] = "ระบุว่าใช้เขตข้อมูลของฐานข้อมูล (คอลัมน์) สำหรับเกณฑ์การค้นหา";
         };
         String 6 // Name of Parameter 3
         {
@@ -924,6 +950,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Arama ltleri";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Criteris de cerca";
+            Text[ thai ] = "เกณฑ์การค้นหา";
         };
         String 7 // Description of Parameter 3
         {
@@ -941,7 +968,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "rea de celdas que contiene los criterios de bsqueda." ;
             Text [ english_us ] = "Defines the cell range containing the search criteria." ;
             Text[ chinese_simplified ] = "确定含有搜寻条件的单元格区域。";
-            Text[ russian ] = "  ,    .";
+            Text[ russian ] = "  ,    .";
             Text[ polish ] = "Wyznacza zakres komrek zawierajcych kryteria wyszukiwania.";
             Text[ japanese ] = "検索条件を含むセル範囲。";
             Text[ chinese_traditional ] = "確定含有搜尋條件的儲存格區域。";
@@ -949,10 +976,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Geeft het cellenbereik met de zoekcriteria aan.";
             Text[ chinese_simplified ] = "确定含有搜寻条件的单元格区域。";
             Text[ greek ] = "       .";
-            Text[ korean ] = "검색 기준을 포함하고 있는 셀 영역 정의";
+            Text[ korean ] = "검색 기준을 포함하고 있는 셀의 범위를 지정합니다.";
             Text[ turkish ] = "Arama ltlerini ieren hcre araln tanmlar.";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Defineix l'rea de celles que contenen els criteris de cerca.";
+            Text[ catalan ] = "Defineix l'rea de cel.les que contenen els criteris de cerca.";
+            Text[ thai ] = "กำหนดช่วงเซลล์มีเกณฑ์การค้นหา";
         };
     };
      // -=*# Resource for function DBMAX #*=-
@@ -974,7 +1002,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Devuelve el valor mximo de todas las celdas de un rea cuyos contenidos coinciden con los valores buscados." ;
             Text [ english_us ] = "Returns the maximum value from all of the cells of a data range which correspond to the search criteria." ;
             Text[ chinese_simplified ] = "找出数据区域中符合搜寻条件的单元格的最大数值。";
-            Text[ russian ] = "      ,     .";
+            Text[ russian ] = "       ,     .";
             Text[ polish ] = "Okrela maksimum wszystkich komrek obszaru danych, ktrych zawartoci odpowiadaj kryteriom wyszukiwania.";
             Text[ japanese ] = "データ範囲内で、検索条件に合ったセルの最高値を返します。";
             Text[ chinese_traditional ] = "找出資料區域中符合搜尋條件的儲存格的最大數值。";
@@ -982,10 +1010,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Bepaalt de maximumwaarde van alle cellen van een gegevensbereik waarvan de inhoud voldoet aan de zoekcriteria.";
             Text[ chinese_simplified ] = "找出数据区域中符合搜寻条件的单元格的最大数值。";
             Text[ greek ] = " .        ,        .";
-            Text[ korean ] = "검색 기준에 상응하는 내용이 있는 데이터 영역의 모든 셀에 대한 최대값을 결정.";
+            Text[ korean ] = "검색 기준에 해당하는 내용이 있는 데이터 범위의 모든 셀에 대한 최대값을 결정합니다.";
             Text[ turkish ] = "Veri aralnda olup ierikleri arama ltlerine uyan tm hcrelerin azami deerini verir.";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Torna el valor mxim de totes les celles d'una rea de dades que corresponguin als criteris de cerca.";
+            Text[ catalan ] = "Torna el valor mxim de totes les cel.les d'una rea de dades que corresponguin als criteris de cerca.";
+            Text[ thai ] = "ส่งกลับค่าที่มากที่สุดจากเซลล์ทั้งหมดของช่วงข้อมูลที่ตรงกับเกณฑ์การค้นหา";
         };
         ExtraData =
         {
@@ -1021,6 +1050,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Veritaban";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Base de dades";
+            Text[ thai ] = "ฐานข้อมูล";
         };
         String 3 // Description of Parameter 1
         {
@@ -1038,7 +1068,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "rea de celdas con los datos" ;
             Text [ english_us ] = "The range of cells containing data." ;
             Text[ chinese_simplified ] = "含有数据的单元格区域";
-            Text[ russian ] = "   .";
+            Text[ russian ] = " ,  .";
             Text[ polish ] = "Zakres komrek sucych do tworzenia bazy danych.";
             Text[ japanese ] = "データのあるセル範囲。";
             Text[ chinese_traditional ] = "含有數據的儲存格區域";
@@ -1046,10 +1076,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Het cellenbereik met de gegevens";
             Text[ chinese_simplified ] = "含有数据的单元格区域";
             Text[ greek ] = "     .";
-            Text[ korean ] = "데이터를 포함하고 있는 영역";
+            Text[ korean ] = "데이터를 포함하고 있는 범위";
             Text[ turkish ] = "Verileri ieren hcre aral";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "rea de celles que contenen les dades.";
+            Text[ catalan ] = "rea de cel.les que contenen les dades.";
+            Text[ thai ] = "ช่วงของเซลล์มีข้อมูล";
         };
         String 4 // Name of Parameter 2
         {
@@ -1063,7 +1094,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ danish ] = "Databasefelt" ;
             Text [ french ] = "Champ" ;
             Text [ swedish ] = "databasflt" ;
-            Text [ dutch ] = "Database-veld" ;
+            Text [ dutch ] = "Databaseveld" ;
             Text [ spanish ] = "Campo de base de datos" ;
             Text [ english_us ] = "Database field" ;
             Text[ chinese_simplified ] = "field";
@@ -1072,13 +1103,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ japanese ] = "データベースフィールド";
             Text[ chinese_traditional ] = "field";
             Text[ arabic ] = "Field";
-            Text[ dutch ] = "Database-veld";
+            Text[ dutch ] = "Databaseveld";
             Text[ chinese_simplified ] = "field";
             Text[ greek ] = "  ";
             Text[ korean ] = "데이터베이스 필드";
             Text[ turkish ] = "Veritaban alan";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Camp de la base de dades";
+            Text[ thai ] = "เขตข้อมูลของฐานข้อมูล";
         };
         String 5 // Description of Parameter 2
         {
@@ -1093,7 +1125,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ danish ] = "Definerer databasefeltet (kolonne) for sgekriterierne." ;
             Text [ french ] = "Indique le champ de base de donnes (colonne) utilis pour les critres de recherche." ;
             Text [ swedish ] = "Definierar databasfltet (kolumn) fr skkriterierna." ;
-            Text [ dutch ] = "Bepaalt het database-veld (kolom) voor de zoekcriteria." ;
+            Text [ dutch ] = "Bepaalt het databaseveld (kolom) voor de zoekcriteria." ;
             Text [ spanish ] = "indica el campo (columna) que se utiliza en la funcin." ;
             Text [ english_us ] = "Indicates which database field (column) is to be used for the search criteria." ;
             Text[ chinese_simplified ] = "确定含有搜寻条件的数据库区域(列)。";
@@ -1102,13 +1134,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ japanese ] = "検索条件をあてはめるデータベースフィールド(列)。";
             Text[ chinese_traditional ] = "確定含有搜尋條件的資料庫區域(欄)。";
             Text[ arabic ] = "     .";
-            Text[ dutch ] = "Bepaalt het database-veld (kolom) voor de zoekcriteria.";
+            Text[ dutch ] = "Bepaalt het databaseveld (kolom) voor de zoekcriteria.";
             Text[ chinese_simplified ] = "确定含有搜寻条件的数据库区域(列)。";
             Text[ greek ] = "     ()    .";
             Text[ korean ] = "검색 기준에 대한 데이터베이스 필드(열) 정의";
             Text[ turkish ] = "Arama ltleri iin veritaban alann (stun) belirler.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Indica quin camp de la base de dades (columna) s'ha d'utilitzar per als criteris de cerca.";
+            Text[ thai ] = "ระบุว่าใช้เขตข้อมูลของฐานข้อมูล (คอลัมน์) สำหรับเกณฑ์การค้นหา";
         };
         String 6 // Name of Parameter 3
         {
@@ -1138,6 +1171,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Arama ltleri";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Criteris de cerca";
+            Text[ thai ] = "เกณฑ์การค้นหา";
         };
         String 7 // Description of Parameter 3
         {
@@ -1155,7 +1189,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "rea de celdas que contiene los valores buscados." ;
             Text [ english_us ] = "Defines the cell range containing the search criteria." ;
             Text[ chinese_simplified ] = "确定含有搜寻条件的单元格区域。";
-            Text[ russian ] = "  ,    .";
+            Text[ russian ] = "  ,    .";
             Text[ polish ] = "Wyznacza zakres komrek zawierajcych kryteria wyszukiwania.";
             Text[ japanese ] = "検索条件を含むセル範囲。";
             Text[ chinese_traditional ] = "確定含有搜尋條件的儲存格區域。";
@@ -1163,10 +1197,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Geeft het cellenbereik met de zoekcriteria aan.";
             Text[ chinese_simplified ] = "确定含有搜寻条件的单元格区域。";
             Text[ greek ] = "       .";
-            Text[ korean ] = "검색 기준이 있는 셀 영역 정의";
+            Text[ korean ] = "검색 기준이 있는 셀의 범위를 지정합니다.";
             Text[ turkish ] = "Arama ltlerini ieren hcre araln tanmlar.";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Defineix l'rea de celles que contenen els criteris de cerca.";
+            Text[ catalan ] = "Defineix l'rea de cel.les que contenen els criteris de cerca.";
+            Text[ thai ] = "กำหนดช่วงเซลล์มีเกณฑ์การค้นหา";
         };
     };
      // -=*# Resource for function DBMIN #*=-
@@ -1188,7 +1223,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Devuelve el valor mnimo de la columna nombre_de_campo de los registros de la base de datos que coinciden con el argumento criterios." ;
             Text [ english_us ] = "Returns the minimum of all cells of a data range where the contents correspond to the search criteria." ;
             Text[ chinese_simplified ] = "找出数据区域中符合搜寻条件的单元格中的最小数值。";
-            Text[ russian ] = "      ,     .";
+            Text[ russian ] = "       ,     .";
             Text[ polish ] = "Okrela minimum wszystkich komrek obszaru danych, ktrych zawartoci odpowiadaj kryteriom wyszukiwania.";
             Text[ japanese ] = "データ範囲内で、検索条件に合ったセルの最低値を返します。";
             Text[ chinese_traditional ] = "找出資料區域中符合搜尋條件的儲存格中的最小數值。";
@@ -1196,10 +1231,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Bepaalt de minimumwaarde van alle cellen van een gegevensbereik, waarvan de inhoud aan de criteria voldoet.";
             Text[ chinese_simplified ] = "找出数据区域中符合搜寻条件的单元格中的最小数值。";
             Text[ greek ] = " .        ,        .";
-            Text[ korean ] = "검색 기준에 상응하는 내용이 있는 데이터 영역의 모든 셀에 대한 최소값을 결정.";
+            Text[ korean ] = "검색 기준에 상응하는 내용이 있는 데이터 범위의 모든 셀에 대한 최소값을 결정합니다.";
             Text[ turkish ] = "Veri aralnda olup ierikleri arama ltlerine uyan tm hcrelerin asgari deerini verir.";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Torna el mnim de totes les celles d'una rea de dades el contingut de les quals corresponguin als criteris de cerca.";
+            Text[ catalan ] = "Torna el mnim de totes les cel.les d'una rea de dades el contingut de les quals corresponguin als criteris de cerca.";
+            Text[ thai ] = "ส่งกลับเซลล์ทั้งหมดของช่วงข้อมูลที่น้อยที่สุดที่เนื้อหาตรงกับเกณฑ์การค้นหา";
         };
         ExtraData =
         {
@@ -1235,6 +1271,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Veritaban";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Base de dades";
+            Text[ thai ] = "ฐานข้อมูล";
         };
         String 3 // Description of Parameter 1
         {
@@ -1252,7 +1289,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "rea de celdas con los datos" ;
             Text [ english_us ] = "The range of cells containing data." ;
             Text[ chinese_simplified ] = "含有数据的单元格区域";
-            Text[ russian ] = "   .";
+            Text[ russian ] = " ,  .";
             Text[ polish ] = "Zakres komrek sucych do tworzenia bazy danych.";
             Text[ japanese ] = "データのあるセル範囲。";
             Text[ chinese_traditional ] = "含有數據的儲存格區域";
@@ -1260,10 +1297,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Het cellenbereik met de gegevens";
             Text[ chinese_simplified ] = "含有数据的单元格区域";
             Text[ greek ] = "     .";
-            Text[ korean ] = "데이터를 포함하고 있는 영역";
+            Text[ korean ] = "데이터를 포함하고 있는 범위";
             Text[ turkish ] = "Verileri ieren hcre aral";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "rea de celles que contenen les dades.";
+            Text[ catalan ] = "rea de cel.les que contenen les dades.";
+            Text[ thai ] = "ช่วงของเซลล์มีข้อมูล";
         };
         String 4 // Name of Parameter 2
         {
@@ -1277,7 +1315,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ danish ] = "Databasefelt" ;
             Text [ french ] = "Champ" ;
             Text [ swedish ] = "databasflt" ;
-            Text [ dutch ] = "Database-veld" ;
+            Text [ dutch ] = "Databaseveld" ;
             Text [ spanish ] = "Campo de base de datos" ;
             Text [ english_us ] = "Database field" ;
             Text[ chinese_simplified ] = "field";
@@ -1286,13 +1324,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ japanese ] = "データベースフィールド";
             Text[ chinese_traditional ] = "field";
             Text[ arabic ] = "Field";
-            Text[ dutch ] = "Database-veld";
+            Text[ dutch ] = "Databaseveld";
             Text[ chinese_simplified ] = "field";
             Text[ greek ] = "  ";
             Text[ korean ] = "데이터베이스 필드";
             Text[ turkish ] = "Veritaban alan";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Camp de la base de dades";
+            Text[ thai ] = "เขตข้อมูลของฐานข้อมูล";
         };
         String 5 // Description of Parameter 2
         {
@@ -1307,7 +1346,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ danish ] = "Definerer databasefeltet (kolonne) for sgekriterierne." ;
             Text [ french ] = "Indique le champ de base de donnes (colonne) utilis pour les critres de recherche." ;
             Text [ swedish ] = "Definierar databasfltet (kolumn) fr skkriterierna." ;
-            Text [ dutch ] = "Bepaalt het database-veld (kolom) voor de criteria." ;
+            Text [ dutch ] = "Bepaalt het databaseveld (kolom) voor de criteria." ;
             Text [ spanish ] = "indica el campo (columna) que se utiliza en la funcin." ;
             Text [ english_us ] = "Indicates which database field (column) is to be used for the search criteria." ;
             Text[ chinese_simplified ] = "确定含有搜寻条件的数据库区域(列)。";
@@ -1316,13 +1355,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ japanese ] = "検索条件をあてはめるデータベースフィールド(列)。";
             Text[ chinese_traditional ] = "確定含有搜尋條件的資料庫區域(欄)。";
             Text[ arabic ] = "     .";
-            Text[ dutch ] = "Bepaalt het database-veld (kolom) voor de criteria.";
+            Text[ dutch ] = "Bepaalt het databaseveld (kolom) voor de criteria.";
             Text[ chinese_simplified ] = "确定含有搜寻条件的数据库区域(列)。";
             Text[ greek ] = "     ()    .";
             Text[ korean ] = "검색 기준에 대한 데이터베이스 필드(열) 정의";
             Text[ turkish ] = "Arama ltleri iin veritaban alann (stun) belirler.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Indica quin camp de la base de dades (columna) s'ha d'utilitzar per als criteris de cerca.";
+            Text[ thai ] = "ระบุว่าใช้เขตข้อมูลของฐานข้อมูล (คอลัมน์) สำหรับเกณฑ์การค้นหา";
         };
         String 6 // Name of Parameter 3
         {
@@ -1352,6 +1392,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Arama ltleri";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Criteris de cerca";
+            Text[ thai ] = "เกณฑ์การค้นหา";
         };
         String 7 // Description of Parameter 3
         {
@@ -1369,7 +1410,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "rea de celdas con los criterios de bsqueda." ;
             Text [ english_us ] = "Defines the cell range containing the search criteria." ;
             Text[ chinese_simplified ] = "确定含有搜寻条件的单元格区域。";
-            Text[ russian ] = "  ,    .";
+            Text[ russian ] = "  ,    .";
             Text[ polish ] = "Wyznacza zakres komrek zawierajcych kryteria wyszukiwania.";
             Text[ japanese ] = "検索条件を含むセル範囲。";
             Text[ chinese_traditional ] = "確定含有搜尋條件的儲存格區域。";
@@ -1377,10 +1418,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Geeft het cellenbereik met de zoekcriteria aan.";
             Text[ chinese_simplified ] = "确定含有搜寻条件的单元格区域。";
             Text[ greek ] = "       .";
-            Text[ korean ] = "검색 기준이 있는 셀 영역 정의";
+            Text[ korean ] = "검색 기준이 있는 셀 범위를 지정합니다.";
             Text[ turkish ] = "Arama ltlerini ieren hcre araln tanmlar.";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Defineix l'rea de celles que contenen els criteris de cerca.";
+            Text[ catalan ] = "Defineix l'rea de cel.les que contenen els criteris de cerca.";
+            Text[ thai ] = "กำหนดช่วงเซลล์มีเกณฑ์การค้นหา";
         };
     };
      // -=*# Resource for function DBPRODUKT #*=-
@@ -1398,22 +1440,23 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ danish ] = "Ganger vrdierne i alle celler indenfor et dataomrde, hvis indhold opfylder sgekriterierne." ;
             Text [ french ] = "Multiplie toutes les cellules d'une plage de donnes dont les contenus correspondent aux critres de recherche." ;
             Text [ swedish ] = "Multiplicerar alla celler i ett dataomrde vars innehll motsvarar skkriterierna." ;
-            Text [ dutch ] = "Vermengvuldigt alle cellen in een gegevensbereik waarvan de inhoud voldoet aan de zoekcriteria." ;
+            Text [ dutch ] = "Vermenigvuldigt alle cellen in een gegevensbereik waarvan de inhoud voldoet aan de zoekcriteria." ;
             Text [ spanish ] = "Multiplica los valores de un campo de registros determinado que coinciden con los criterios de una base de datos." ;
             Text [ english_us ] = "Multiplies all cells of a data range where the contents match the search criteria." ;
             Text[ chinese_simplified ] = "一个数据区域内符合搜寻条件的所有单元格的乘积。";
-            Text[ russian ] = "    ,     .";
+            Text[ russian ] = "    ,     .";
             Text[ polish ] = "Mnoy wszystkie komrki zakresu danych, ktrych zawartoci odpowiadaj kryteriom wyszukiwania.";
             Text[ japanese ] = "データ範囲内で、検索条件に合ったセルの積を返します。";
             Text[ chinese_traditional ] = "一個資料區域內符合搜尋條件的所有儲存格的乘積。";
             Text[ arabic ] = "         .";
-            Text[ dutch ] = "Vermengvuldigt alle cellen in een gegevensbereik waarvan de inhoud voldoet aan de zoekcriteria.";
+            Text[ dutch ] = "Vermenigvuldigt alle cellen in een gegevensbereik waarvan de inhoud voldoet aan de zoekcriteria.";
             Text[ chinese_simplified ] = "一个数据区域内符合搜寻条件的所有单元格的乘积。";
             Text[ greek ] = "      ,        .";
-            Text[ korean ] = "검색 기준에 상응하는 내용이 있는 데이터 영역의 모든 셀을 곱함";
+            Text[ korean ] = "검색 기준에 해당하는 내용이 있는 데이터 범위의 모든 셀을 곱합니다.";
             Text[ turkish ] = "Veri alannda olup ierikleri arama ltlerine uyan tm hcreleri arpar.";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Multiplica totes les celles d'una rea de dades el contingut de les quals coincideixi amb els criteris de cerca.";
+            Text[ catalan ] = "Multiplica totes les cel.les d'una rea de dades el contingut de les quals coincideixi amb els criteris de cerca.";
+            Text[ thai ] = "ตัวคูณเซลล์ทั้งหมดของช่วงข้อมูลที่เนื้อหาตรงกับเกณฑ์การค้นหา ";
         };
         ExtraData =
         {
@@ -1449,6 +1492,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Veritaban";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Base de dades";
+            Text[ thai ] = "ฐานข้อมูล";
         };
         String 3 // Description of Parameter 1
         {
@@ -1466,7 +1510,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "rea de celdas con los datos." ;
             Text [ english_us ] = "The range of cells containing data." ;
             Text[ chinese_simplified ] = "含有数据的单元格区域";
-            Text[ russian ] = "   .";
+            Text[ russian ] = " ,  .";
             Text[ polish ] = "Zakres komrek sucych do tworzenia bazy danych.";
             Text[ japanese ] = "データのあるセル範囲。";
             Text[ chinese_traditional ] = "含有數據的儲存格區域";
@@ -1474,10 +1518,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Het cellenbereik met de gegevens";
             Text[ chinese_simplified ] = "含有数据的单元格区域";
             Text[ greek ] = "     .";
-            Text[ korean ] = "데이터가 있는 셀 영역";
+            Text[ korean ] = "데이터가 포함된 셀 범위";
             Text[ turkish ] = "Verileri ieren hcre aral";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "rea de celles que contenen les dades.";
+            Text[ catalan ] = "rea de cel.les que contenen les dades.";
+            Text[ thai ] = "ช่วงของเซลล์มีข้อมูล";
         };
         String 4 // Name of Parameter 2
         {
@@ -1491,7 +1536,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ danish ] = "Databasefelt" ;
             Text [ french ] = "Champ" ;
             Text [ swedish ] = "databasflt" ;
-            Text [ dutch ] = "Database-veld" ;
+            Text [ dutch ] = "Databaseveld" ;
             Text [ spanish ] = "Campo de base de datos" ;
             Text [ english_us ] = "Database field" ;
             Text[ chinese_simplified ] = "field";
@@ -1500,13 +1545,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ japanese ] = "データベースフィールド";
             Text[ chinese_traditional ] = "field";
             Text[ arabic ] = "Field";
-            Text[ dutch ] = "Database-veld";
+            Text[ dutch ] = "Databaseveld";
             Text[ chinese_simplified ] = "field";
             Text[ greek ] = "  ";
             Text[ korean ] = "데이터베이스 필드";
             Text[ turkish ] = "Veritaban alan";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Camp de la base de dades";
+            Text[ thai ] = "เขตข้อมูลของฐานข้อมูล";
         };
         String 5 // Description of Parameter 2
         {
@@ -1521,7 +1567,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ danish ] = "Definerer databasefeltet (kolonne) for sgekriterierne." ;
             Text [ french ] = "Indique le champ de base de donnes (colonne) utilis pour les critres de recherche." ;
             Text [ swedish ] = "Definierar databasflt (kolumn) fr skkriterierna." ;
-            Text [ dutch ] = "Bepaalt het database-veld (kolom) voor de zoekcriteria." ;
+            Text [ dutch ] = "Bepaalt het databaseveld (kolom) voor de zoekcriteria." ;
             Text [ spanish ] = "indica el campo (columna) que se utiliza en la funcin." ;
             Text [ english_us ] = "Indicates which database field (column) is to be used for the search criteria." ;
             Text[ chinese_simplified ] = "确定含有搜寻条件的数据库区域(列)。";
@@ -1530,13 +1576,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ japanese ] = "検索条件をあてはめるデータベースフィールド(列)。";
             Text[ chinese_traditional ] = "確定含有搜尋條件的資料庫區域(欄)。";
             Text[ arabic ] = "     .";
-            Text[ dutch ] = "Bepaalt het database-veld (kolom) voor de zoekcriteria.";
+            Text[ dutch ] = "Bepaalt het databaseveld (kolom) voor de zoekcriteria.";
             Text[ chinese_simplified ] = "确定含有搜寻条件的数据库区域(列)。";
             Text[ greek ] = "     ()    .";
             Text[ korean ] = "검색 기준에 대한 데이터베이스 필드(열) 정의";
             Text[ turkish ] = "Arama ltleri iin veritaban alann (stun) belirler.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Indica quin camp de la base de dades (columna) s'ha d'utilitzar per als criteris de cerca.";
+            Text[ thai ] = "ระบุว่าใช้เขตข้อมูลของฐานข้อมูล (คอลัมน์) สำหรับเกณฑ์การค้นหา";
         };
         String 6 // Name of Parameter 3
         {
@@ -1566,6 +1613,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Arama ltleri";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Criteris de cerca";
+            Text[ thai ] = "เกณฑ์การค้นหา";
         };
         String 7 // Description of Parameter 3
         {
@@ -1583,7 +1631,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "rea de celdas que contiene los criterios de bsqueda." ;
             Text [ english_us ] = "Defines the cell range containing the search criteria." ;
             Text[ chinese_simplified ] = "确定含有搜寻条件的单元格区域。";
-            Text[ russian ] = "  ,    .";
+            Text[ russian ] = "  ,    .";
             Text[ polish ] = "Podaje zakres komrek z kryteriami wyszukiwania.";
             Text[ japanese ] = "検索条件を含むセル範囲。";
             Text[ chinese_traditional ] = "確定含有搜尋條件儲存格區域。";
@@ -1591,10 +1639,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Geeft het cellenbereik met de zoekcriteria aan.";
             Text[ chinese_simplified ] = "确定含有搜寻条件的单元格区域。";
             Text[ greek ] = "       .";
-            Text[ korean ] = "검색 기준이 있는 셀 영역 정의";
+            Text[ korean ] = "검색 기준이 있는 셀의 범위 지정";
             Text[ turkish ] = "Arama ltlerini ieren hcre araln tanmlar.";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Defineix l'rea de celles que contenen els criteris de cerca.";
+            Text[ catalan ] = "Defineix l'rea de cel.les que contenen els criteris de cerca.";
+            Text[ thai ] = "กำหนดช่วงเซลล์มีเกณฑ์การค้นหา";
         };
     };
      // -=*# Resource for function DBSTDABW #*=-
@@ -1612,22 +1661,23 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ danish ] = "Beregner standardafvigelsen af alle celler indenfor et dataomrde, hvis indhold opfylder sgekriterierne." ;
             Text [ french ] = "value l'cart type de toutes cellules d'une plage dont les contenus correspondent aux critres de recherche." ;
             Text [ swedish ] = "Bestmmer standardavvikelsen fr alla celler i ett dataomrde vars innehll motsvarar skkriterierna." ;
-            Text [ dutch ] = "Bepaalt de standaarddeviatievan alle cellen in een gegevensbereik, waarvan de inhoud voldoet aan de criteria." ;
+            Text [ dutch ] = "Bepaalt de standaarddeviatie van alle cellen in een gegevensbereik, waarvan de inhoud voldoet aan de criteria." ;
             Text [ spanish ] = "Calcula la desviacin predeterminada basndose en una muestra de las entradas seleccionadas de una base de datos." ;
             Text [ english_us ] = "Calculates the standard deviation of all cells in a data range whose contents match the search criteria." ;
             Text[ chinese_simplified ] = "估算一个数据区域内符合搜寻条件的所有单元格中\n数据的标准偏差。";
-            Text[ russian ] = "      ,     .";
+            Text[ russian ] = "      ,     .";
             Text[ polish ] = "Okrela odchylenie standardowe wszystkich komrek obszaru danych, ktrych zawartoci odpowiadaj kryteriom wyszukiwania.";
             Text[ japanese ] = "データ範囲内で、検索条件に合ったセルの標準偏差を返します。";
             Text[ chinese_traditional ] = "估算一個資料區域內符合搜尋條件的所有儲存格中數據的標準偏差。";
             Text[ arabic ] = "       ǡ    .";
-            Text[ dutch ] = "Bepaalt de standaarddeviatievan alle cellen in een gegevensbereik, waarvan de inhoud voldoet aan de criteria.";
+            Text[ dutch ] = "Bepaalt de standaarddeviatie van alle cellen in een gegevensbereik, waarvan de inhoud voldoet aan de criteria.";
             Text[ chinese_simplified ] = "估算一个数据区域内符合搜寻条件的所有单元格中\n数据的标准偏差。";
             Text[ greek ] = "         ,        .";
-            Text[ korean ] = "검색 기준에 맞는 내용이 있는 데이터 영역 안의 모든 셀의 표준 편차를 결정";
+            Text[ korean ] = "검색 기준에 맞는 내용이 있는 데이터 범위 안의 모든 셀의 표준 편차를 결정합니다.";
             Text[ turkish ] = "Veri aralnda olup ierikleri arama ltlerine uyan tm hcrelerin standart sapmasn hesaplar.";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Calcula la desviaci estndard de totes les celles d'una rea de dades el contingut de les quals coincideix amb els criteris de cerca.";
+            Text[ catalan ] = "Calcula la desviaci estndard de totes les cel.les d'una rea de dades el contingut de les quals coincideix amb els criteris de cerca.";
+            Text[ thai ] = "คำนวณส่วนเบี่ยงเบนมาตรฐานของเซลล์ทั้งหมดของช่วงข้อมูลของเนื้อหาที่ตรงกับเกณฑ์การค้นหา";
         };
         ExtraData =
         {
@@ -1663,6 +1713,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Veritaban";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Base de dades";
+            Text[ thai ] = "ฐานข้อมูล";
         };
         String 3 // Description of Parameter 1
         {
@@ -1680,7 +1731,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "rea de celdas con los datos" ;
             Text [ english_us ] = "The range of cells containing data." ;
             Text[ chinese_simplified ] = "含有数据的单元格区域";
-            Text[ russian ] = "   .";
+            Text[ russian ] = " ,  .";
             Text[ polish ] = "Zakres komrek sucych do tworzenia bazy danych.";
             Text[ japanese ] = "データのあるセル範囲。";
             Text[ chinese_traditional ] = "含有數據的儲存格區域";
@@ -1688,10 +1739,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Het cellenbereik met de gegevens";
             Text[ chinese_simplified ] = "含有数据的单元格区域";
             Text[ greek ] = "     .";
-            Text[ korean ] = "데이터를 포함하고 있는 영역";
+            Text[ korean ] = "데이터를 포함하고 있는 범위";
             Text[ turkish ] = "Verileri ieren hcre aral";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "rea de celles que contenen les dades.";
+            Text[ catalan ] = "rea de cel.les que contenen les dades.";
+            Text[ thai ] = "ช่วงของเซลล์มีข้อมูล";
         };
         String 4 // Name of Parameter 2
         {
@@ -1705,7 +1757,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ danish ] = "Databasefelt" ;
             Text [ french ] = "Champ" ;
             Text [ swedish ] = "databasflt" ;
-            Text [ dutch ] = "Database-veld" ;
+            Text [ dutch ] = "Databaseveld" ;
             Text [ spanish ] = "Campo de base de datos" ;
             Text [ english_us ] = "Database field" ;
             Text[ chinese_simplified ] = "field";
@@ -1714,13 +1766,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ japanese ] = "データベースフィールド";
             Text[ chinese_traditional ] = "field";
             Text[ arabic ] = "Field";
-            Text[ dutch ] = "Database-veld";
+            Text[ dutch ] = "Databaseveld";
             Text[ chinese_simplified ] = "field";
             Text[ greek ] = "  ";
             Text[ korean ] = "데이터베이스 필드";
             Text[ turkish ] = "Veritaban alan";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Camp de la base de dades";
+            Text[ thai ] = "เขตข้อมูลของฐานข้อมูล";
         };
         String 5 // Description of Parameter 2
         {
@@ -1735,7 +1788,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ danish ] = "Definerer databasefeltet (kolonne) for sgekriterierne." ;
             Text [ french ] = "Indique le champ de base de donnes (colonne) utilis pour les critres de recherche." ;
             Text [ swedish ] = "Definierar databasfltet (kolumn) fr skkriterierna." ;
-            Text [ dutch ] = "Bepaalt het database-veld (kolom) voor de zoekcriteria." ;
+            Text [ dutch ] = "Bepaalt het databaseveld (kolom) voor de zoekcriteria." ;
             Text [ spanish ] = "indica el campo (columna) que se utiliza en la funcin." ;
             Text [ english_us ] = "Indicates which database field (column) is to be used for the search criteria." ;
             Text[ chinese_simplified ] = "确定含有搜寻条件的数据库区域(列)。";
@@ -1744,13 +1797,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ japanese ] = "検索条件をあてはめるデータベースフィールド(列)。";
             Text[ chinese_traditional ] = "確定含有搜尋條件的資料庫區域(欄)。";
             Text[ arabic ] = "     .";
-            Text[ dutch ] = "Bepaalt het database-veld (kolom) voor de zoekcriteria.";
+            Text[ dutch ] = "Bepaalt het databaseveld (kolom) voor de zoekcriteria.";
             Text[ chinese_simplified ] = "确定含有搜寻条件的数据库区域(列)。";
             Text[ greek ] = "     ()    .";
             Text[ korean ] = "검색 기준에 대한 데이터베이스 필드(열) 정의";
             Text[ turkish ] = "Arama ltleri iin veritaban alann (stun) belirler.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Indica quin camp de la base de dades (columna) s'ha d'utilitzar per als criteris de cerca.";
+            Text[ thai ] = "ระบุว่าใช้เขตข้อมูลของฐานข้อมูล (คอลัมน์) สำหรับเกณฑ์การค้นหา";
         };
         String 6 // Name of Parameter 3
         {
@@ -1780,6 +1834,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Arama ltleri";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Criteris de cerca";
+            Text[ thai ] = "เกณฑ์การค้นหา";
         };
         String 7 // Description of Parameter 3
         {
@@ -1797,7 +1852,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "rea de celdas con los criterios de bsqueda." ;
             Text [ english_us ] = "Defines the cell range containing the search criteria." ;
             Text[ chinese_simplified ] = "确定含有搜寻条件的单元格区域。";
-            Text[ russian ] = "  ,    .";
+            Text[ russian ] = "  ,    .";
             Text[ polish ] = "Wyznacza zakres komrek odpowiadajcych kryteriom wyszukiwania.";
             Text[ japanese ] = "検索条件を含むセル範囲。";
             Text[ chinese_traditional ] = "確定含有搜尋條件的儲存格區域。";
@@ -1805,10 +1860,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Geeft het cellenbereik met de zoekcriteria aan.";
             Text[ chinese_simplified ] = "确定含有搜寻条件的单元格区域。";
             Text[ greek ] = "       .";
-            Text[ korean ] = "검색 기준이 있는 셀 영역 정의";
+            Text[ korean ] = "검색 기준이 있는 셀의 범위를 지정합니다.";
             Text[ turkish ] = "Arama ltlerini ieren hcre araln tanmlar.";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Defineix l'rea de celles que contenen els criteris de cerca.";
+            Text[ catalan ] = "Defineix l'rea de cel.les que contenen els criteris de cerca.";
+            Text[ thai ] = "กำหนดช่วงเซลล์มีเกณฑ์การค้นหา";
         };
     };
      // -=*# Resource for function DBSTDABWN #*=-
@@ -1826,22 +1882,23 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ danish ] = "Beregner standardafvigelsen baseret p hele populationen af alle celler indenfor et dataomrde, hvis indhold opfylder sgekriterierne." ;
             Text [ french ] = "value l'cart type d'une population reprsente par toutes les cellules d'une plage de donnes dont les contenus correspondent aux critres de recherche." ;
             Text [ swedish ] = "Bestmmer standardavvikelsen baserad p populationen av alla celler i ett dataomrde vars innehll motsvarar skkriterierna." ;
-            Text [ dutch ] = "Berekent de standaarddeviatie m.b.t. de hele populatie van de cellen van een gegevensvbereik, waarvan de inhoud aan de criteria voldoet." ;
+            Text [ dutch ] = "Berekent de standaarddeviatie m.b.t. de hele populatie van de cellen van een gegevensbereik, waarvan de inhoud aan de criteria voldoet." ;
             Text [ spanish ] = "Calcula la desviacin predeterminada basndose en la poblacin total de las entradas seleccionadas de una base de datos." ;
             Text [ english_us ] = "Returns the standard deviation with regards to the population of all cells of a data range matching the search criteria." ;
             Text[ chinese_simplified ] = "计算一个数据区域内符合搜寻条件的所有单元格中数据的总体标准偏差。";
-            Text[ russian ] = "        ,     .";
+            Text[ russian ] = "       ,     .";
             Text[ polish ] = "Wyznacza odchylenie standardowe ewent.populacj komrek obszaru danych, ktrych zawartoci odpowiadaj kryteriom wyszukiwania.";
             Text[ japanese ] = "データ範囲内で、検索条件に合ったセルの母集団を基準とした標準偏差を返します。";
             Text[ chinese_traditional ] = "計算一個資料區域內符合搜尋條件的所有儲存格中數據的總體標準偏差。";
             Text[ arabic ] = "              .";
-            Text[ dutch ] = "Berekent de standaarddeviatie m.b.t. de hele populatie van de cellen van een gegevensvbereik, waarvan de inhoud aan de criteria voldoet.";
+            Text[ dutch ] = "Berekent de standaarddeviatie m.b.t. de hele populatie van de cellen van een gegevensbereik, waarvan de inhoud aan de criteria voldoet.";
             Text[ chinese_simplified ] = "计算一个数据区域内符合搜寻条件的所有单元格中数据的总体标准偏差。";
             Text[ greek ] = "              ,     ? ";
-            Text[ korean ] = "검색 기준에 맞는 내용의 데이터 영역이 있는 모든 셀의 모집단에 관련된 표준 편차 결정.";
+            Text[ korean ] = "검색 기준에 해당하는 내용의 데이터 범위가 있는 모든 셀의 모집단에 관련된 표준 편차를 결정합니다.";
             Text[ turkish ] = "Veri aralnda olup ierikleri arama ltlerine uyan tm hcrelerin poplasyonu ile ilgili standart sapmay belirler.";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Torna la desviaci estndard, quant a la poblaci, de totes les celles d'una rea de dades que coincideixin amb els criteris de cerca.";
+            Text[ catalan ] = "Torna la desviaci estndard, quant a la poblaci, de totes les cel.les d'una rea de dades que coincideixin amb els criteris de cerca.";
+            Text[ thai ] = "ส่งกลับส่วนเบี่ยงเบนมาตรฐานในเรื่องประชากรของเซลล์ทั้งหมดของช่วงข้อมูลตรงกับเกณฑ์การค้นหา";
         };
         ExtraData =
         {
@@ -1877,6 +1934,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Veritaban";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Base de dades";
+            Text[ thai ] = "ฐานข้อมูล";
         };
         String 3 // Description of Parameter 1
         {
@@ -1894,7 +1952,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "rea de celdas con los datos" ;
             Text [ english_us ] = "The range of cells containing data." ;
             Text[ chinese_simplified ] = "带数据的单元格区域";
-            Text[ russian ] = "   .";
+            Text[ russian ] = " ,  .";
             Text[ polish ] = "Zakres komrek sucych do tworzenia bazy danych.";
             Text[ japanese ] = "データのあるセル範囲。";
             Text[ chinese_traditional ] = "帶數據的儲存格區域";
@@ -1902,10 +1960,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Het cellenbereik met de gegevens";
             Text[ chinese_simplified ] = "带数据的单元格区域";
             Text[ greek ] = "     .";
-            Text[ korean ] = "데이터를 포함하고 있는 영역";
+            Text[ korean ] = "데이터를 포함하고 있는 범위";
             Text[ turkish ] = "Verileri ieren hcre aral";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "rea de celles que contenen les dades.";
+            Text[ catalan ] = "rea de cel.les que contenen les dades.";
+            Text[ thai ] = "ช่วงของเซลล์มีข้อมูล";
         };
         String 4 // Name of Parameter 2
         {
@@ -1919,7 +1978,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ danish ] = "Databasefelt" ;
             Text [ french ] = "Champ" ;
             Text [ swedish ] = "databasflt" ;
-            Text [ dutch ] = "Database-veld" ;
+            Text [ dutch ] = "Databaseveld" ;
             Text [ spanish ] = "Campo de base de datos" ;
             Text [ english_us ] = "Database field" ;
             Text[ chinese_simplified ] = "field";
@@ -1928,13 +1987,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ japanese ] = "データベースフィールド";
             Text[ chinese_traditional ] = "field";
             Text[ arabic ] = "Field";
-            Text[ dutch ] = "Database-veld";
+            Text[ dutch ] = "Databaseveld";
             Text[ chinese_simplified ] = "field";
             Text[ greek ] = "  ";
             Text[ korean ] = "데이터베이스 필드";
             Text[ turkish ] = "Veritaban alan";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Camp de la base de dades";
+            Text[ thai ] = "เขตข้อมูลของฐานข้อมูล";
         };
         String 5 // Description of Parameter 2
         {
@@ -1949,7 +2009,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ danish ] = "Definerer databasefeltet (kolonne) for sgekriterierne." ;
             Text [ french ] = "Indique le champ de base de donnes (colonne) utilis pour les critres de recherche." ;
             Text [ swedish ] = "Definierar databasfltet (kolumn) fr skkriterierna." ;
-            Text [ dutch ] = "Bepaalt het database-veld (kolom) voor de zoekcriteria." ;
+            Text [ dutch ] = "Bepaalt het databaseveld (kolom) voor de zoekcriteria." ;
             Text [ spanish ] = "Indica el campo (columna) que se utiliza en la funcin." ;
             Text [ english_us ] = "Indicates which database field (column) is to be used for the search criteria." ;
             Text[ chinese_simplified ] = "确定含有搜寻条件的数据库区域(列)。";
@@ -1958,13 +2018,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ japanese ] = "検索条件をあてはめるデータベースフィールド(列)。";
             Text[ chinese_traditional ] = "確定含有搜尋條件的資料庫區域(欄)。";
             Text[ arabic ] = "     .";
-            Text[ dutch ] = "Bepaalt het database-veld (kolom) voor de zoekcriteria.";
+            Text[ dutch ] = "Bepaalt het databaseveld (kolom) voor de zoekcriteria.";
             Text[ chinese_simplified ] = "确定含有搜寻条件的数据库区域(列)。";
             Text[ greek ] = "     ()    .";
             Text[ korean ] = "검색 기준에 대한 데이터베이스 필드(열) 정의";
             Text[ turkish ] = "Arama ltleri iin veritaban alann (stun) belirler.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Indica quin camp de la base de dades (columna) s'ha d'utilitzar per als criteris de cerca.";
+            Text[ thai ] = "ระบุว่าใช้เขตข้อมูลของฐานข้อมูล (คอลัมน์) สำหรับเกณฑ์การค้นหา";
         };
         String 6 // Name of Parameter 3
         {
@@ -1994,6 +2055,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Arama ltleri";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Criteris de cerca";
+            Text[ thai ] = "เกณฑ์การค้นหา";
         };
         String 7 // Description of Parameter 3
         {
@@ -2011,7 +2073,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "rea de celdas que contiene los criterios de bsqueda." ;
             Text [ english_us ] = "Defines the cell range containing the search criteria." ;
             Text[ chinese_simplified ] = "确定含有搜寻条件的单元格区域。";
-            Text[ russian ] = "  ,    .";
+            Text[ russian ] = "  ,    .";
             Text[ polish ] = "Wyznacza zakres komrek zawierajcych kryteria wyszukiwania.";
             Text[ japanese ] = "検索条件を含むセル範囲。";
             Text[ chinese_traditional ] = "確定含有搜尋條件的儲存格區域。";
@@ -2019,10 +2081,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Geeft het cellenbereik met de zoekcriteria aan.";
             Text[ chinese_simplified ] = "确定含有搜寻条件的单元格区域。";
             Text[ greek ] = "       .";
-            Text[ korean ] = "검색 기준을  포함하고 있는 셀 영역 정의";
+            Text[ korean ] = "검색 기준이 있는 셀의 범위를 지정합니다.";
             Text[ turkish ] = "Arama ltlerini ieren hcre araln tanmlar.";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Defineix l'rea de celles que contenen els criteris de cerca.";
+            Text[ catalan ] = "Defineix l'rea de cel.les que contenen els criteris de cerca.";
+            Text[ thai ] = "กำหนดช่วงเซลล์มีเกณฑ์การค้นหา";
         };
     };
      // -=*# Resource for function DBSUMME #*=-
@@ -2044,7 +2107,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Suma todas las celdas de un rea de datos cuyos contenidos que coinciden con los criterios." ;
             Text [ english_us ] = "Adds all the cells of a data range where the contents match the search criteria." ;
             Text[ chinese_simplified ] = "数据区域内符合搜寻条件的所有单元格中的数字之和。";
-            Text[ russian ] = "    ,     .";
+            Text[ russian ] = "    ,     .";
             Text[ polish ] = "Dodaje zawartoci wszystkich komrek, ktrych tre odpowiada kryteriom wyszukiwania.";
             Text[ japanese ] = "データ範囲内で、検索条件に合ったセルの合計を返します。";
             Text[ chinese_traditional ] = "資料區域內符合搜尋條件的所有儲存格中的數字之和。";
@@ -2052,10 +2115,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Berekent de som van alle veld waarden van een gegevensbereik die aan de zoekcriteria voldoen.";
             Text[ chinese_simplified ] = "数据区域内符合搜寻条件的所有单元格中的数字之和。";
             Text[ greek ] = "      ,        .";
-            Text[ korean ] = "검색 기준에 상응하는 내용이 있는 데이터 영역의 모든 셀을 합산";
+            Text[ korean ] = "검색 기준에 해당하는 내용이 있는 데이터 범위의 모든 셀을 합산합니다.";
             Text[ turkish ] = "Veri aralnda olup ierikleri arama ltlerine uyan tm hcreleri toplar.";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Afegeix totes les celles d'una rea de dades el contingut de les quals coincideixi amb els criteris de cerca.";
+            Text[ catalan ] = "Afegeix totes les cel.les d'una rea de dades el contingut de les quals coincideixi amb els criteris de cerca.";
+            Text[ thai ] = "เพิ่มเซลล์ทั้งหมดของช่วงข้อมูลที่เนื้อหาตรงกับเกณฑ์การค้นหา";
         };
         ExtraData =
         {
@@ -2091,6 +2155,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Veritaban";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Base de dades";
+            Text[ thai ] = "ฐานข้อมูล";
         };
         String 3 // Description of Parameter 1
         {
@@ -2108,7 +2173,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "rea de celdas con los datos" ;
             Text [ english_us ] = "The range of cells containing data." ;
             Text[ chinese_simplified ] = "含有数据的单元格区域";
-            Text[ russian ] = "   ";
+            Text[ russian ] = " ,  .";
             Text[ polish ] = "Zakres komrek sucych do tworzenia bazy danych.";
             Text[ japanese ] = "データのあるセル範囲。";
             Text[ chinese_traditional ] = "含有數據的儲存格區域";
@@ -2116,10 +2181,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Het cellenbereik met de gegevens";
             Text[ chinese_simplified ] = "含有数据的单元格区域";
             Text[ greek ] = "     .";
-            Text[ korean ] = "데이터가 있는 셀 영역";
+            Text[ korean ] = "데이터가 있는 셀 범위";
             Text[ turkish ] = "Verileri ieren hcre aral";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "rea de celles que contenen les dades.";
+            Text[ catalan ] = "rea de cel.les que contenen les dades.";
+            Text[ thai ] = "ช่วงของเซลล์มีข้อมูล";
         };
         String 4 // Name of Parameter 2
         {
@@ -2133,7 +2199,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ danish ] = "Databasefelt" ;
             Text [ french ] = "Champ" ;
             Text [ swedish ] = "databasflt" ;
-            Text [ dutch ] = "Database-veld" ;
+            Text [ dutch ] = "Databaseveld" ;
             Text [ spanish ] = "Campo de base de datos" ;
             Text [ english_us ] = "Database field" ;
             Text[ chinese_simplified ] = "field";
@@ -2142,13 +2208,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ japanese ] = "データベースフィールド";
             Text[ chinese_traditional ] = "field";
             Text[ arabic ] = "Field";
-            Text[ dutch ] = "Database-veld";
+            Text[ dutch ] = "Databaseveld";
             Text[ chinese_simplified ] = "field";
             Text[ greek ] = "  ";
             Text[ korean ] = "데이터베이스 필드";
             Text[ turkish ] = "Veritaban alan";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Camp de la base de dades";
+            Text[ thai ] = "เขตข้อมูลของฐานข้อมูล";
         };
         String 5 // Description of Parameter 2
         {
@@ -2163,7 +2230,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ danish ] = "Definerer databasefeltet (kolonne) for sgekriterierne." ;
             Text [ french ] = "Indique le champ de base de donnes (colonne) utilis pour les critres de recherche." ;
             Text [ swedish ] = "Definierar databasfltet (kolumn) fr skkriterierna." ;
-            Text [ dutch ] = "Bepaalt het database-veld (kolom) voor de zoekcritera." ;
+            Text [ dutch ] = "Bepaalt het databaseveld (kolom) voor de zoekcriteria." ;
             Text [ spanish ] = "Determina el campo (columna) para los criterios de bsqueda." ;
             Text [ english_us ] = "Indicates which database field (column) is to be used for the search criteria." ;
             Text[ chinese_simplified ] = "确定含有搜寻条件的数据库区域(列)。";
@@ -2172,13 +2239,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ japanese ] = "検索条件をあてはめるデータベースフィールド(列)。";
             Text[ chinese_traditional ] = "確定含有搜尋條件的資料庫區域(欄)。";
             Text[ arabic ] = "     .";
-            Text[ dutch ] = "Bepaalt het database-veld (kolom) voor de zoekcritera.";
+            Text[ dutch ] = "Bepaalt het databaseveld (kolom) voor de zoekcriteria.";
             Text[ chinese_simplified ] = "确定含有搜寻条件的数据库区域(列)。";
             Text[ greek ] = "     ()    .";
             Text[ korean ] = "검색 기준에 대한 데이터베이스 필드(열) 정의";
             Text[ turkish ] = "Arama ltleri iin veritaban alann (stun) belirler.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Indica quin camp de la base de dades (columna) s'ha d'utilitzar per als criteris de cerca.";
+            Text[ thai ] = "ระบุว่าใช้เขตข้อมูลของฐานข้อมูล (คอลัมน์) สำหรับเกณฑ์การค้นหา";
         };
         String 6 // Name of Parameter 3
         {
@@ -2208,6 +2276,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Arama ltleri";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Criteris de cerca";
+            Text[ thai ] = "เกณฑ์การค้นหา";
         };
         String 7 // Description of Parameter 3
         {
@@ -2225,7 +2294,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "rea de celdas con los criterios de bsqueda." ;
             Text [ english_us ] = "Defines the cell range containing the search criteria." ;
             Text[ chinese_simplified ] = "确定含有搜寻条件的单元格区域。";
-            Text[ russian ] = "  ,    .";
+            Text[ russian ] = "  ,    .";
             Text[ polish ] = "Wyznacza zakres komrek zawierajcych kryteria wyszukiwania.";
             Text[ japanese ] = "検索条件を含むセル範囲。";
             Text[ chinese_traditional ] = "確定含有搜尋條件的儲存格區域。";
@@ -2233,10 +2302,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Geeft het cellenbereik met de zoekcriteria aan.";
             Text[ chinese_simplified ] = "确定含有搜寻条件的单元格区域。";
             Text[ greek ] = "       .";
-            Text[ korean ] = "검색 기준을 포함하고 있는 셀 영역 정의";
+            Text[ korean ] = "검색 기준이 있는 셀의 범위 지정합니다.";
             Text[ turkish ] = "Arama ltlerini ieren hcre araln tanmlar.";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Defineix l'rea de celles que contenen els criteris de cerca.";
+            Text[ catalan ] = "Defineix l'rea de cel.les que contenen els criteris de cerca.";
+            Text[ thai ] = "กำหนดช่วงของเซลล์มีเกณฑ์การค้นหา";
         };
     };
      // -=*# Resource for function DBVARIANZ #*=-
@@ -2255,10 +2325,10 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ french ] = "Calcule la variance de toutes les cellules d'une plage de donnes dont les contenus correspondent aux critres de recherche." ;
             Text [ swedish ] = "Bestmmer variansen av alla celler i ett dataomrde vars innehll motsvarar skkriterierna." ;
             Text [ dutch ] = "Bepaalt de variantie van alle cellen van een gegevensbereik, waarvan de inhoud aan de zoekcriteria voldoet." ;
-            Text [ spanish ] = "Calcula la varianza de todas las celdas de un rea de datos cuyos contenidos coinciden con los criterios especificados." ;
+            Text [ spanish ] = "Calcula la variancia de todas las celdas de un rea de datos cuyos contenidos coincidan con los criterios especificados." ;
             Text [ english_us ] = "Determines the variance of all the cells in a data range where the contents match the search criteria." ;
             Text[ chinese_simplified ] = "估算一个数据区域内符合搜寻条件的所有单元格中数据的方差。";
-            Text[ russian ] = "     ,     .";
+            Text[ russian ] = "      ,     .";
             Text[ polish ] = "Okrela wariancj wszystkich komrek obszaru danych, ktrych zawartoci odpowiadaj podanym kryteriom wyszukiwania.";
             Text[ japanese ] = "データ範囲内で、検索条件に合ったセルの分散を返します。";
             Text[ chinese_traditional ] = "估算一個資料區域內符合搜尋條件的所有儲存格中數據的方差。";
@@ -2266,10 +2336,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Bepaalt de variantie van alle cellen van een gegevensbereik, waarvan de inhoud aan de zoekcriteria voldoet.";
             Text[ chinese_simplified ] = "估算一个数据区域内符合搜寻条件的所有单元格中数据的方差。";
             Text[ greek ] = "        ,        .";
-            Text[ korean ] = "내용이 검색 기준에 상응하는 데이터 영역의 모든 셀의 분산을 결정.";
+            Text[ korean ] = "내용이 검색 기준에 해당하는 데이터 범위의 모든 셀의 분산을 지정합니다.";
             Text[ turkish ] = "Veri aralnda olup ierikleri arama ltlerine uyan tm hcrelerin varyansn belirler.";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Determina la varincia de totes les celles d'una rea de dades el contingut de les quals coincideixi amb els criteris de cerca.";
+            Text[ catalan ] = "Determina la varincia de totes les cel.les d'una rea de dades el contingut de les quals coincideixi amb els criteris de cerca.";
+            Text[ thai ] = "กำหนดว่าการแปรผันของเซลล์ทั้งหมดของช่วงข้อมูลที่เนื้อหาตรงกับเกณฑ์การค้นหา";
         };
         ExtraData =
         {
@@ -2305,6 +2376,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Veritaban";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Base de dades";
+            Text[ thai ] = "ฐานข้อมูล";
         };
         String 3 // Description of Parameter 1
         {
@@ -2322,7 +2394,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "rea de celdas con los datos." ;
             Text [ english_us ] = "The range of cells containing data." ;
             Text[ chinese_simplified ] = "含有数据的单元格区域";
-            Text[ russian ] = "   .";
+            Text[ russian ] = " ,  .";
             Text[ polish ] = "Zakres komrek sucych do tworzenia bazy danych.";
             Text[ japanese ] = "データのあるセル範囲。";
             Text[ chinese_traditional ] = "含有數據的儲存格區域";
@@ -2330,10 +2402,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Het cellenbereik met de gegevens";
             Text[ chinese_simplified ] = "含有数据的单元格区域";
             Text[ greek ] = "     .";
-            Text[ korean ] = "데이터가 있는 셀 영역";
+            Text[ korean ] = "데이터가 포함되어 있는 셀 범위";
             Text[ turkish ] = "Verileri ieren hcre aral";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "rea de celles que contenen les dades.";
+            Text[ catalan ] = "rea de cel.les que contenen les dades.";
+            Text[ thai ] = "ช่วงของเซลล์มีข้อมูล";
         };
         String 4 // Name of Parameter 2
         {
@@ -2347,7 +2420,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ danish ] = "Databasefelt" ;
             Text [ french ] = "Champ" ;
             Text [ swedish ] = "databasflt" ;
-            Text [ dutch ] = "Database-veld" ;
+            Text [ dutch ] = "Databaseveld" ;
             Text [ spanish ] = "Campo de base de datos" ;
             Text [ english_us ] = "Database field" ;
             Text[ chinese_simplified ] = "field";
@@ -2356,13 +2429,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ japanese ] = "データベースフィールド";
             Text[ chinese_traditional ] = "field";
             Text[ arabic ] = "Field";
-            Text[ dutch ] = "Database-veld";
+            Text[ dutch ] = "Databaseveld";
             Text[ chinese_simplified ] = "field";
             Text[ greek ] = "  ";
             Text[ korean ] = "데이터베이스 필드";
             Text[ turkish ] = "Veritaban alan";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Camp de la base de dades";
+            Text[ thai ] = "เขตข้อมูลของฐานข้อมูล";
         };
         String 5 // Description of Parameter 2
         {
@@ -2377,7 +2451,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ danish ] = "Definerer databasefeltet (kolonne) for sgekriterierne." ;
             Text [ french ] = "Indique le champ de base de donnes (colonne) utilis pour les critres de recherche." ;
             Text [ swedish ] = "Definierar databasfltet (kolumn) fr skkriterierna." ;
-            Text [ dutch ] = "Bepaalt het database-veld (kolom) voor de zoekcriteria." ;
+            Text [ dutch ] = "Bepaalt het databaseveld (kolom) voor de zoekcriteria." ;
             Text [ spanish ] = "Indica el campo (columna) que se utiliza en la funcin." ;
             Text [ english_us ] = "Indicates which database field (column) is to be used for the search criteria." ;
             Text[ chinese_simplified ] = "确定含有搜寻条件的数据库区域(列)。";
@@ -2386,13 +2460,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ japanese ] = "検索条件をあてはめるデータベースフィールド(列)。";
             Text[ chinese_traditional ] = "確定含有搜尋條件的資料庫區域(欄)。";
             Text[ arabic ] = "     .";
-            Text[ dutch ] = "Bepaalt het database-veld (kolom) voor de zoekcriteria.";
+            Text[ dutch ] = "Bepaalt het databaseveld (kolom) voor de zoekcriteria.";
             Text[ chinese_simplified ] = "确定含有搜寻条件的数据库区域(列)。";
             Text[ greek ] = "     ()    .";
             Text[ korean ] = "검색 기준에 대한 데이터베이스 필드(열) 정의";
             Text[ turkish ] = "Arama ltleri iin veritaban alann (stun) belirler.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Indica quin camp de la base de dades (columna) s'ha d'utilitzar per als criteris de cerca.";
+            Text[ thai ] = "ระบุว่าใช้เขตข้อมูลของฐานข้อมูล (คอลัมน์) สำหรับเกณฑ์การค้นหา";
         };
         String 6 // Name of Parameter 3
         {
@@ -2422,6 +2497,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Arama ltleri";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Criteris de cerca";
+            Text[ thai ] = "เกณฑ์การค้นหา";
         };
         String 7 // Description of Parameter 3
         {
@@ -2439,7 +2515,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "rea de celdas que contiene los criterios bsqueda." ;
             Text [ english_us ] = "Defines the cell range containing the search criteria." ;
             Text[ chinese_simplified ] = "确定含有搜寻条件的单元格区域。";
-            Text[ russian ] = "  ,    .";
+            Text[ russian ] = "  ,    .";
             Text[ polish ] = "Wyznacza zakres komrek zawierajcych kryteria wyszukiwania.";
             Text[ japanese ] = "検索条件を含むセル範囲。";
             Text[ chinese_traditional ] = "確定含有搜尋條件的儲存格區域。";
@@ -2447,10 +2523,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Geeft het cellenbereik met de zoekcriteria aan.";
             Text[ chinese_simplified ] = "确定含有搜寻条件的单元格区域。";
             Text[ greek ] = "       .";
-            Text[ korean ] = "검색 기준을 포함하고 있는 셀 영역 정의";
+            Text[ korean ] = "검색 기준을 포함하고 있는 셀의 범위를 지정합니다.";
             Text[ turkish ] = "Arama ltlerini ieren hcre araln tanmlar.";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Defineix l'rea de celles que contenen els criteris de cerca.";
+            Text[ catalan ] = "Defineix l'rea de cel.les que contenen els criteris de cerca.";
+            Text[ thai ] = "กำหนดช่วงของเซลล์มีเกณฑ์การค้นหา";
         };
     };
      // -=*# Resource for function DBVARIANZEN #*=-
@@ -2469,10 +2546,10 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ french ] = "Calcule la variance sur l'ensemble d'une population de toutes les cellules d'une plage de donnes dont les contenus correspondent aux critres de recherche." ;
             Text [ swedish ] = "Bestmmer variansen baserat p populationen av alla celler i ett dataomrde vars innehll motsvarar skkriterierna." ;
             Text [ dutch ] = "Bepaalt de variantie m.b.t. de hele populatie van alle cellen van een gegevensbereik, waarvan de inhoud aan de zoekcriteria voldoet." ;
-            Text [ spanish ] = "Calcula la varianza basndose en la poblacin total de todas las celdas de un rea de datos cuyos contenidos coinciden con los criterios." ;
+            Text [ spanish ] = "Calcula la variancia basndose en la poblacin total de todas las celdas de un rea de datos cuyos contenidos coincidan con los criterios." ;
             Text [ english_us ] = "Determines variance of a population based on all cells in a data range where contents match the search criteria." ;
             Text[ chinese_simplified ] = "计算一个数据区域内符合搜寻条件的所有单元格中数据的总体方差。";
-            Text[ russian ] = "       ,     .";
+            Text[ russian ] = "     ,     .";
             Text[ polish ] = "Okrela wariancj lub populacj wszystkich komrek obszaru danych, ktrych zawartoci odpowiadaj podanym kryteriom.";
             Text[ japanese ] = "データ範囲内で、検索条件に合ったセルの母集団を基準とした分散を返します。";
             Text[ chinese_traditional ] = "計算一個資料區域內符合搜尋條件的所有儲存格中數據的總體方差。";
@@ -2480,10 +2557,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Bepaalt de variantie m.b.t. de hele populatie van alle cellen van een gegevensbereik, waarvan de inhoud aan de zoekcriteria voldoet.";
             Text[ chinese_simplified ] = "计算一个数据区域内符合搜寻条件的所有单元格中数据的总体方差。";
             Text[ greek ] = "            ,         ";
-            Text[ korean ] = "내용이 검색 기준에 상응하는 데이터 영역의 모든 셀의 모집단에 관련된 분산을 결정.";
+            Text[ korean ] = "내용이 검색 기준에 해당하는 데이터 범위의 모든 셀의 모집단에 관련된 분산을 지정합니다.";
             Text[ turkish ] = "Veri aralnda olup ierikleri arama ltlerine uyan tm hcrelerin poplasyonu ile ilgili varyans belirler.";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Determina la varincia d'una poblaci basada en totes les celles d'una rea de dades el contingut de la qual coincideixi amb els criteris de cerca.";
+            Text[ catalan ] = "Determina la varincia d'una poblaci basada en totes les cel.les d'una rea de dades el contingut de la qual coincideixi amb els criteris de cerca.";
+            Text[ thai ] = "กำหนดการแปรผันของประชากรอยู่บนพื้นฐานเซลล์ทั้งหมดในช่วงข้อมูลหนึ่งที่เนื้อหาตรงกับเกณฑ์การค้นหา";
         };
         ExtraData =
         {
@@ -2519,6 +2597,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Veritaban";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Base de dades";
+            Text[ thai ] = "ฐานข้อมูล";
         };
         String 3 // Description of Parameter 1
         {
@@ -2536,7 +2615,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "rea de celdas con los datos." ;
             Text [ english_us ] = "The range of cells containing data." ;
             Text[ chinese_simplified ] = "含有数据的单元格区域。";
-            Text[ russian ] = "   .";
+            Text[ russian ] = " ,  .";
             Text[ polish ] = "Zakres komrek sucych do tworzenia bazy danych.";
             Text[ japanese ] = "データのあるセル範囲。";
             Text[ chinese_traditional ] = "含有數據的儲存格區域。";
@@ -2544,10 +2623,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Het cellenbereik met de gegevens";
             Text[ chinese_simplified ] = "含有数据的单元格区域。";
             Text[ greek ] = "     .";
-            Text[ korean ] = "데이터가 포함되어 있는 셀 영역";
+            Text[ korean ] = "데이터가 포함되어 있는 셀 범위";
             Text[ turkish ] = "Verileri ieren hcre aral";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "rea de celles que contenen les dades.";
+            Text[ catalan ] = "rea de cel.les que contenen les dades.";
+            Text[ thai ] = "ช่วงของเซลล์มีข้อมูล";
         };
         String 4 // Name of Parameter 2
         {
@@ -2561,7 +2641,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ danish ] = "Databasefelt" ;
             Text [ french ] = "Champ" ;
             Text [ swedish ] = "databasflt" ;
-            Text [ dutch ] = "Database-veld" ;
+            Text [ dutch ] = "Databaseveld" ;
             Text [ spanish ] = "Campo de base de datos" ;
             Text [ english_us ] = "Database field" ;
             Text[ chinese_simplified ] = "field";
@@ -2570,13 +2650,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ japanese ] = "データベースフィールド";
             Text[ chinese_traditional ] = "field";
             Text[ arabic ] = "Field";
-            Text[ dutch ] = "Database-veld";
+            Text[ dutch ] = "Databaseveld";
             Text[ chinese_simplified ] = "field";
             Text[ greek ] = "  ";
             Text[ korean ] = "데이터베이스 필드";
             Text[ turkish ] = "Veritaban alan";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Camp de la base de dades";
+            Text[ thai ] = "เขตข้อมูลของฐานข้อมูล";
         };
         String 5 // Description of Parameter 2
         {
@@ -2591,7 +2672,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ danish ] = "Definerer databasefeltet (kolonne) for sgekriterierne." ;
             Text [ french ] = "Indique le champ de base de donnes (colonne) utilis pour les critres de recherche." ;
             Text [ swedish ] = "Definierar databasfltet (kolumn) fr skkriterierna." ;
-            Text [ dutch ] = "Bepaalt het database-veld (kolom) voor de zoekcriteria." ;
+            Text [ dutch ] = "Bepaalt het databaseveld (kolom) voor de zoekcriteria." ;
             Text [ spanish ] = "Indica el campo (columna) que se utiliza en la funcin." ;
             Text [ english_us ] = "Indicates which database field (column) is to be used for the search criteria." ;
             Text[ chinese_simplified ] = "确定含有搜寻条件的数据库区域(列)。";
@@ -2600,13 +2681,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ japanese ] = "検索条件をあてはめるデータベースフィールド(列)。";
             Text[ chinese_traditional ] = "確定含有搜尋條件的資料庫區域(欄)。";
             Text[ arabic ] = "     .";
-            Text[ dutch ] = "Bepaalt het database-veld (kolom) voor de zoekcriteria.";
+            Text[ dutch ] = "Bepaalt het databaseveld (kolom) voor de zoekcriteria.";
             Text[ chinese_simplified ] = "确定含有搜寻条件的数据库区域(列)。";
             Text[ greek ] = "     ()    .";
             Text[ korean ] = "검색 기준에 대한 데이터베이스 필드(열) 정의";
             Text[ turkish ] = "Arama ltleri iin veritaban alann (stun) belirler.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Indica quin camp de la base de dades (columna) s'ha d'utilitzar per als criteris de cerca.";
+            Text[ thai ] = "ระบุว่าใช้เขตข้อมูลของฐานข้อมูล (คอลัมน์) สำหรับเกณฑ์การค้นหา";
         };
         String 6 // Name of Parameter 3
         {
@@ -2636,6 +2718,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Arama ltleri";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Criteris de cerca";
+            Text[ thai ] = "เกณฑ์การค้นหา";
         };
         String 7 // Description of Parameter 3
         {
@@ -2661,10 +2744,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Geeft het cellenbereik met de zoekcriteria aan.";
             Text[ chinese_simplified ] = "确定含有搜寻条件的单元格区域。";
             Text[ greek ] = "       .";
-            Text[ korean ] = "검색 기준이 있는 셀 영역 정의";
+            Text[ korean ] = "검색 기준이 있는 셀의 범위를 지정합니다.";
             Text[ turkish ] = "Arama ltlerini ieren hcre araln tanmlar.";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Defineix l'rea de celles que contenen els criteris de cerca.";
+            Text[ catalan ] = "Defineix l'rea de cel.les que contenen els criteris de cerca.";
+            Text[ thai ] = "ระบุช่วงของเซลล์มีเกณฑ์การค้นหา";
         };
     };
      // -=*# Resource for function DATUM #*=-
@@ -2687,7 +2771,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Devuelve el nmero de serie de una fecha especificada." ;
             Text [ english_us ] = "Provides an internal number for the date given." ;
             Text[ chinese_simplified ] = "为给定的日期提供一个内部序列数。";
-            Text[ russian ] = "       .";
+            Text[ russian ] = "      .";
             Text[ polish ] = "Zwraca numer kolejny odpowiadajcy podanej dacie.";
             Text[ japanese ] = "日付のシリアル値を返します。";
             Text[ chinese_traditional ] = "為指定的日期提供一個內部數值。";
@@ -2695,10 +2779,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Converteert een bepaalde datum naar een serieel getal.";
             Text[ chinese_simplified ] = "为给定的日期提供一个内部序列数。";
             Text[ greek ] = "       .";
-            Text[ korean ] = "주어진 날짜의 내부 숫자를 제공";
+            Text[ korean ] = "주어진 날짜의 내부값을 제공합니다.";
             Text[ turkish ] = "Belirtilen tarih iin bir i say retir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Proporciona un nombre intern per a les dades indicades.";
+            Text[ thai ] = "จัดหาตัวเลขภายในสำหรับวันที่ที่ให้มา";
         };
         ExtraData =
         {
@@ -2734,6 +2819,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Yl";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "any";
+            Text[ thai ] = "ปี";
         };
         String 3 // Description of Parameter 1
         {
@@ -2763,6 +2849,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Enter entre 1583 i 9956 o entre 0 i 99 (19xx o 20xx segons l'opci definida).";
             Text[ finnish ] = "Kokonaisluku 1583 - 9956 tai 0 - 99 (19xx tai 20xx valinnan mukaan).";
+            Text[ thai ] = "จำนวนเต็มระหว่าง 1583 และ 9956 หรือ 0 และ 99 (19xx หรือ 20xx ขึ้นอยู่กับตัวเลือกที่ระบุ)";
         };
         String 4 // Name of Parameter 2
         {
@@ -2791,7 +2878,8 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ korean ] = "월";
             Text[ turkish ] = "Ay";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "MONTH";
+            Text[ catalan ] = "mes";
+            Text[ thai ] = "เดือน";
         };
         String 5 // Description of Parameter 2
         {
@@ -2822,6 +2910,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Ay iin 1 ile 12 arasnda bir tamsay.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Enter entre 1 i 12 que representa el mes.";
+            Text[ thai ] = "จำนวนเต็มระหว่าง 1 และ 12 ใช้แทนเดือน";
         };
         String 6 // Name of Parameter 3
         {
@@ -2851,6 +2940,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Gn";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "dia";
+            Text[ thai ] = "วัน";
         };
         String 7 // Description of Parameter 3
         {
@@ -2881,6 +2971,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Gn iin 1 ile 31 arasnda bir tamsay.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Enter entre 1 i 31 que representa el dia del mes.";
+            Text[ thai ] = "จำนวนเต็มระหว่าง 1 และ 31 ใช้แทนวันของเดือน";
         };
     };
      // -=*# Resource for function DATWERT #*=-
@@ -2911,10 +3002,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Converteert datum in de vorm van tekst naar een serieel getal.";
             Text[ chinese_simplified ] = "将具备日期输入格式的文字转换成日期的系统内部序列数。";
             Text[ greek ] = "           ";
-            Text[ korean ] = "가능한 일자 서식에 대한 내부 수를 반환";
+            Text[ korean ] = "날짜 서식을 포함하고 있을 수 있는 문자열의 내부값을 구합니다.";
             Text[ turkish ] = "Muhtemel bir tarih formatndaki bir metinden i say retir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna un nombre intern per a un text que tingui un format de data possible.";
+            Text[ thai ] = "ส่งกลับตัวเลขภายในสำหรับการมีรูปแบบข้อความวันที่ที่เป็นไปได้";
         };
         ExtraData =
         {
@@ -2950,6 +3042,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Metin";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "text";
+            Text[ thai ] = "ข้อความ";
         };
         String 3 // Description of Parameter 1
         {
@@ -2960,11 +3053,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Il testo tra virgolette che riproduce una data in formato %PRODUCTNAME." ;
             Text [ portuguese_brazilian ] = "Ein in Anf?rungszeichen eingeschlossener Text, der ein Datum in einem %PRODUCTNAME Calc Datumsformat wiedergibt." ;
             Text [ portuguese ] = "Um texto entre aspas que devolve uma data com um formato do %PRODUCTNAME." ;
-            Text [ finnish ] = "Lainausmerkeill rajattu teksti, joka palauttaa pivmrn ohjelman %PRODUCTNAME pivmrmuodossa." ;
+            Text [ finnish ] = "Lainausmerkeill rajattu teksti, joka palauttaa pivmrn %PRODUCTNAMEn pivmrmuodossa." ;
             Text [ danish ] = "Tekst i anfrselstegn som reprsenterer en dato i et %PRODUCTNAME datoformat." ;
             Text [ french ] = "Un texte entre guillemets qui renvoie une date dans un format de date de %PRODUCTNAME." ;
             Text [ swedish ] = "En inom citationstecken skriven text, som returnerar ett datum i ngot av %PRODUCTNAME Calcs datumformat." ;
-            Text [ dutch ] = "Een tekst tussen aanhalingstekens met een datum in een %PRODUCTNAME Calc-datumsformaat." ;
+            Text [ dutch ] = "Een tekst tussen aanhalingstekens met een datum in een %PRODUCTNAME Calc Datumnotatie." ;
             Text [ spanish ] = "Un texto entre comillas que ser devuelto en un formato de fecha de %PRODUCTNAME." ;
             Text [ english_us ] = "A text enclosed in quotation marks which returns a date in a %PRODUCTNAME date format." ;
             Text[ chinese_simplified ] = "引号内的字串转换成 %PRODUCTNAME 日期格式。";
@@ -2973,13 +3066,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ japanese ] = "クォテーションマークで囲んだ日付を表す文字列を %PRODUCTNAME の日付表示形式で指定します。";
             Text[ chinese_traditional ] = "將引號內的文字轉變成%PRODUCTNAME 日期格式。";
             Text[ arabic ] = "           %PRODUCTNAME Calc.";
-            Text[ dutch ] = "Een tekst tussen aanhalingstekens met een datum in een %PRODUCTNAME Calc-datumsformaat.";
+            Text[ dutch ] = "Een tekst tussen aanhalingstekens met een datum in een %PRODUCTNAME Calc Datumnotatie.";
             Text[ chinese_simplified ] = "引号内的字串转换成 %PRODUCTNAME 日期格式。";
             Text[ greek ] = "   ,          %PRODUCTNAME Calc.";
             Text[ korean ] = "인용부호 안에 들어 있는 텍스트로서 %PRODUCTNAME 날짜 서식에 있는 날짜를 나타냅니다.";
             Text[ turkish ] = "%PRODUCTNAME tarih formatnda tarih bilgisi veren trnak iaretleri iindeki metin.";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Un text entre cometes que ser retornat en un format de data de %PRODUCTNAME.";
+            Text[ catalan ] = "Un text entre cometes que ser retornat en un format de data d'%PRODUCTNAME.";
+            Text[ thai ] = "ข้อความที่แนบมาในใบเสนอราคามีเครื่องหมายที่ส่งกลับวันที่ในรูปแบบวันที่ของ %PRODUCTNAME ";
         };
     };
      // -=*# Resource for function TAG #*=-
@@ -2997,22 +3091,23 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ danish ] = "Omregner serienummeret til en dag i mneden som et mellem 1 og 31." ;
             Text [ french ] = "Renvoie le jour du mois (compris entre 1 et 31) correspondant  l'argument numro_srie." ;
             Text [ swedish ] = "Bestmmer dagen i mnaden som tal (1-31) fr datumvrdet." ;
-            Text [ dutch ] = "Converteert de actuele dag van de maand naar een serieel getal tussen 1 en 31." ;
+            Text [ dutch ] = "Converteert de huidige dag van de maand naar een serieel getal tussen 1 en 31." ;
             Text [ spanish ] = "Devuelve el da del mes (1 - 31) correspondiente al nm_de_serie." ;
             Text [ english_us ] = "Returns the sequential date of the month as an integer (1-31) in relation to the date value." ;
             Text[ chinese_simplified ] = "确定与日期值相对应的,且用整数 1 到 31 表示的,一月内的某天。";
-            Text[ russian ] = "     (  1  31).";
+            Text[ russian ] = "    .         1  31.";
             Text[ polish ] = "Konwertuje kolejny numer na dzie miesica w postaci liczby (1 - 31).";
             Text[ japanese ] = "日付のシリアル値がその月の何日目にあたるかを数値(1~31)で返します。";
             Text[ chinese_traditional ] = "轉換日期序列數成對應的一月內的某天﹐用整數 1 到 31 表示。";
             Text[ arabic ] = "      .";
-            Text[ dutch ] = "Converteert de actuele dag van de maand naar een serieel getal tussen 1 en 31.";
+            Text[ dutch ] = "Converteert de huidige dag van de maand naar een serieel getal tussen 1 en 31.";
             Text[ chinese_simplified ] = "确定与日期值相对应的,且用整数 1 到 31 表示的,一月内的某天。";
             Text[ greek ] = "            (1 - 31).";
             Text[ korean ] = "월의 연속적인 날짜를 나타내는 숫자(1 - 31)를 날짜값으로 결정";
             Text[ turkish ] = "Tarih deerine gre, ayn srekli tarihini tam say (1 - 31) olarak belirtir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna la data seqencial del mes com un enter (1-31) en relaci al valor de la data.";
+            Text[ thai ] = "ส่งกลับวันที่ของเดือนตามลำดับเป็นจำนวนเต็ม (1-31) สัมพันธ์กับค่าของวันที่";
         };
         ExtraData =
         {
@@ -3048,6 +3143,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -3057,7 +3153,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Data espressa come numero seriale." ;
             Text [ portuguese_brazilian ] = "Interne Zahl des Datums." ;
             Text [ portuguese ] = " o cdigo data-hora usado para calcular a data e a hora." ;
-            Text [ finnish ] = "Pivmrn sisinen numeroarvo." ;
+            Text [ finnish ] = "Pivmrn sisinen numeroarvo" ;
             Text [ danish ] = "Intern datovrdi." ;
             Text [ french ] = "Le numro de srie de la date." ;
             Text [ swedish ] = "Internt tal fr datum." ;
@@ -3065,7 +3161,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Nmero interno de la fecha" ;
             Text [ english_us ] = "The internal number for the date." ;
             Text[ chinese_simplified ] = "日期的系统内部序数。";
-            Text[ russian ] = " -,      .";
+            Text[ russian ] = "  .";
             Text[ polish ] = "Kod daty-godziny uywany do obliczenia daty i godziny.";
             Text[ japanese ] = "日付のシリアル値";
             Text[ chinese_traditional ] = "日期的系統內部數字。";
@@ -3073,10 +3169,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Serieel getal van de datum.";
             Text[ chinese_simplified ] = "日期的系统内部序数。";
             Text[ greek ] = "is the date-time code used for date and time calculations.";
-            Text[ korean ] = "날짜의 내부 값";
+            Text[ korean ] = "날짜 내부값";
             Text[ turkish ] = "Tarihin i says.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre intern per a la data.";
+            Text[ thai ] = "ตัวเลขภายในสำหรับวันที่";
         };
     };
      // -=*# Resource for function TAGE360 #*=-
@@ -3090,7 +3187,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Restituisce il numero di giorni compresi tra due date sulla base di un anno di 360 giorni." ;
             Text [ portuguese_brazilian ] = "Bestimmt die Tagesdifferenz zweier Daten bei 360-Tage/Jahr-Berechnung." ;
             Text [ portuguese ] = "Calcula o nmero de dias entre duas datas, baseando-se num ano de 360 dias." ;
-            Text [ finnish ] = "Laskee kahden pivmrn vlisten pivien mrn (360-pivn pituisen vuoden mukaan)." ;
+            Text [ finnish ] = "Laskee kahden pivmrn vlisten pivien mrn 360 pivn pituisen vuoden mukaan." ;
             Text [ danish ] = "Bestemmer antallet af dage mellem to datoer baserende p et r med 360 dage." ;
             Text [ french ] = "Renvoie le nombre de jours compris entre deux dates sur la base d'une anne de 360 jours." ;
             Text [ swedish ] = "Bestmmer antalet dagar mellan tv datum baserat p 360 dagar per r." ;
@@ -3106,10 +3203,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Bepaalt het aantal dagen tussen twee data op basis van 360 dagen per jaar.";
             Text[ chinese_simplified ] = "按照一年360天的规则,计算两个日期之间的相差天数。";
             Text[ greek ] = "        360 /.";
-            Text[ korean ] = "360일/년의 계산에서 두 날짜간 날짜를 정합니다";
+            Text[ korean ] = "360일/년의 계산을 기준으로 두 날짜간의 차이를 계산합니다.";
             Text[ turkish ] = "360 gnl yl hesaplamasnda iki tarih arasndaki gn farkn hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Calcula el nombre de dies entre dues dates considerant un any de 360 dies.";
+            Text[ thai ] = "คำนวณจำนวนวันระหว่างวันที่สองวันบนพื้นฐานปีหนึ่งมี 360 วัน";
         };
         ExtraData =
         {
@@ -3133,7 +3231,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Fecha_1" ;
             Text [ english_us ] = "Date_1" ;
             Text[ chinese_simplified ] = "date_1";
-            Text[ russian ] = "_1";
+            Text[ russian ] = " 1";
             Text[ polish ] = "Data_1";
             Text[ japanese ] = "日付 1";
             Text[ chinese_traditional ] = "date_1";
@@ -3145,6 +3243,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Tarih_1";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Data_1";
+            Text[ thai ] = "วันที่_1";
         };
         String 3 // Description of Parameter 1
         {
@@ -3170,10 +3269,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Oudere datum ter bepaling van het aantal dagen.";
             Text[ chinese_simplified ] = "计算两个日期相差天数时较早的那个日期。";
             Text[ greek ] = "       .";
-            Text[ korean ] = "날짜 차이에서의 시작 일자";
+            Text[ korean ] = "요일 수 차이 계산의 시작 날짜";
             Text[ turkish ] = "Gn fark hesab iin erken olan tarih.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Data d'inici per calcular la diferncia en dies.";
+            Text[ thai ] = "วันที่เริ่มต้นสำหรับการคำนวณความต่างกันในวันที่ต่าง ๆ";
         };
         String 4 // Name of Parameter 2
         {
@@ -3191,7 +3291,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Fecha_2" ;
             Text [ english_us ] = "Date_2" ;
             Text[ chinese_simplified ] = "date_2";
-            Text[ russian ] = "_2";
+            Text[ russian ] = " 2";
             Text[ polish ] = "Data_2";
             Text[ japanese ] = "日付 2";
             Text[ chinese_traditional ] = "date_2";
@@ -3203,6 +3303,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Tarih_2";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Data_2";
+            Text[ thai ] = "วันที่_2";
         };
         String 5 // Description of Parameter 2
         {
@@ -3228,10 +3329,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Jongere datum ter bepaling van het aantal dagen.";
             Text[ chinese_simplified ] = "计算两个日期相差天数时较晚的那个日期。";
             Text[ greek ] = "        .";
-            Text[ korean ] = "날짜 차이에서의 마지막 일자";
+            Text[ korean ] = "요일 수 차이 계산의 최종 날짜";
             Text[ turkish ] = "Gn fark hesab iin ge olan tarih.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Data final per calcular la diferncia en dies.";
+            Text[ thai ] = "วันที่สุดท้ายสำหรับการคำนวณความต่างกันในวันที่ต่าง ๆ";
         };
         String 6 // Name of Parameter 3
         {
@@ -3249,7 +3351,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Tipo" ;
             Text [ english_us ] = "Type" ;
             Text[ chinese_simplified ] = "type";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "Typ";
             Text[ japanese ] = "タイプ";
             Text[ chinese_traditional ] = "type";
@@ -3261,6 +3363,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Tr";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Tipus";
+            Text[ thai ] = "ชนิด";
         };
         String 7 // Description of Parameter 3
         {
@@ -3278,7 +3381,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Mtodo de clculo de diferencia. Modo = 0 para el americano (NASD) y = 1 para el europeo." ;
             Text [ english_us ] = "Method used to form differences: Type = 0 denotes US method (NASD), Type = 1 denotes the European method." ;
             Text[ chinese_simplified ] = "构成差数的方式。type = 0 表示美国方式(NASD), \ntype = 1 表示欧洲方式。";
-            Text[ russian ] = ",       :   (NASD) (1)    (0).";
+            Text[ russian ] = ",      :   (NASD) (1)    (0).";
             Text[ polish ] = "Rodzaj obliczania rnicy: 0 oznacza metod amerykask (NASD), 1 - europejsk.";
             Text[ japanese ] = "算出方式。方式 = 0 米国(NASD)方式、 方式 = 1 ヨーロッパ方式。";
             Text[ chinese_traditional ] = "構成差數的方式。type = 0 表示美國方式(NASD)﹐ type = 1 表示歐洲方式。";
@@ -3290,6 +3393,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Fark hesaplama yntemi: Tr = 1, ABD'de kullanlan yntem (NASD), tr = 0 ise Avrupa'da kullanlan yntemidir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "El mtode utilitzat per formar diferncies: tipus = 0 indica el mtode americ (NASD), tipus = 1 indica el mtode europeu.";
+            Text[ thai ] = "วิธีการใช้กับแบบฟอร์มที่ต่างกัน: ชนิด = 0 แทนวีธีการของอเมริกัน  (NASD), ชนิด = 1 แทนวิธีการของยุโรป";
         };
     };
      // -=*# Resource for function STUNDE #*=-
@@ -3311,7 +3415,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Devuelve la hora correspondiente al argumento nm_de_serie en forma de nmero (0 - 23)." ;
             Text [ english_us ] = "Determines the sequential number of the hour of the day (0-23) for the time value." ;
             Text[ chinese_simplified ] = "确定与时间值对应的小时数(0 - 23)。";
-            Text[ russian ] = "     (0 - 23)  .";
+            Text[ russian ] = "    .      0  23.";
             Text[ polish ] = "Podaje godzin odpowiednio do numeru kolejnego (liczba cakowita od 0 do 23).";
             Text[ japanese ] = "時間のシリアル値がその日の何時にあたるかを数値(0~23)で返します。";
             Text[ chinese_traditional ] = "轉換數字成小時數(0 - 23)。";
@@ -3323,6 +3427,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Saat deerine gre, gnn srekli saatini tam say (0 - 23) olarak belirtir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Determina el nombre seqencial de l'hora del dia (0-23) per al valor de l'hora.";
+            Text[ thai ] = "กำหนดจำนวนชั่วโมงของวันตามลำดับ (0-23) สำหรับค่าของเวลา";
         };
         ExtraData =
         {
@@ -3358,6 +3463,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -3375,7 +3481,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Valor interno de hora" ;
             Text [ english_us ] = "Internal time value" ;
             Text[ chinese_simplified ] = "系统内部时间值。";
-            Text[ russian ] = " -,        .";
+            Text[ russian ] = "  .";
             Text[ polish ] = "Kod daty-godziny uywany do obliczenia daty i godziny.";
             Text[ japanese ] = "時間のシリアル値";
             Text[ chinese_traditional ] = "系統內部時間序數。";
@@ -3387,6 +3493,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = " saat deeri.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor intern de l'hora";
+            Text[ thai ] = "ค่าของเวลาภายใน";
         };
     };
      // -=*# Resource for function MINUTE #*=-
@@ -3408,7 +3515,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Devuelve el minuto que corresponde a nm_de_serie en forma de nmero (0 - 59)." ;
             Text [ english_us ] = "Determines the sequential number for the minute of the hour (0-59) for the time value." ;
             Text[ chinese_simplified ] = "确定与时间值对应的分钟数(0 - 59)。";
-            Text[ russian ] = "     (0 - 59)  .";
+            Text[ russian ] = "     .      0  59.";
             Text[ polish ] = "Podaje minut odpowiadajc numerowi kolejnemu jako liczb (0 - 59).";
             Text[ japanese ] = "時間のシリアル値がその時間の何分にあたるかを数値で返します。(0-59)";
             Text[ chinese_traditional ] = "轉換數字成份鐘數(0 - 59)。";
@@ -3420,6 +3527,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Saat deerine gre, saatin srekli dakika deerini tam say (0 - 59) olarak belirtir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Determina el nombre seqencial per al minut de l'hora (0-59) per al valor de l'hora.";
+            Text[ thai ] = "กำหนดจำนวนนาทีของชั่วโมงตามลำดับ (0-59) สำหรับค่าของเวลา";
         };
         ExtraData =
         {
@@ -3455,6 +3563,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Saat";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -3472,7 +3581,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Valor interno de hora" ;
             Text [ english_us ] = "Internal time value." ;
             Text[ chinese_simplified ] = "系统内部时间值。";
-            Text[ russian ] = " -,        .";
+            Text[ russian ] = "  .";
             Text[ polish ] = "Kod daty-godziny uywany do obliczenia daty i godziny.";
             Text[ japanese ] = "時間のシリアル値";
             Text[ chinese_traditional ] = "系統內部時間序數。";
@@ -3484,6 +3593,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = " saat deeri.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor intern de l'hora.";
+            Text[ thai ] = "ค่าของเวลาภายใน";
         };
     };
      // -=*# Resource for function MONAT #*=-
@@ -3505,7 +3615,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Devuelve el mes que corresponde a nm_de_serie en forma de nmero (1 - 12)." ;
             Text [ english_us ] = "Determines the sequential number of a month of the year (1-12) for the date value." ;
             Text[ chinese_simplified ] = "确定与时间值对应的月份数(1 - 12)。";
-            Text[ russian ] = "       (  1  12).";
+            Text[ russian ] = "    .      1  12.";
             Text[ polish ] = "Podaje miesic odpowiadajcy numerowi kolejnemu jako liczb (1 - 12).";
             Text[ japanese ] = "日付のシリアル値がその年の何月にあたるかを数値(1~12)で返します。";
             Text[ chinese_traditional ] = "轉換數字成月份數(1 - 12)。";
@@ -3513,10 +3623,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Converteert een tijdswaarde naar een maand als getal (1 - 12).";
             Text[ chinese_simplified ] = "确定与时间值对应的月份数(1 - 12)。";
             Text[ greek ] = "            (1-12).";
-            Text[ korean ] = "1년의 연속적인 월을 나타내는 숫자(1-12)를 날짜값으로 결정.";
+            Text[ korean ] = "한 해의 연속되는 개월 수(1-12)를 날짜값으로 지정합니다.";
             Text[ turkish ] = "Tarih deerine gre yln srekli ay deerini (1 - 12) tam say olarak belirtir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Determina el nombre seqencial del mes de l'any (1-12) per al valor de la data.";
+            Text[ thai ] = "กำหนดจำนวนเดือนของปีตามลำดับ (1-12) สำหรับค่าของวันที่";
         };
         ExtraData =
         {
@@ -3552,6 +3663,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -3569,7 +3681,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Nmero interno de la fecha." ;
             Text [ english_us ] = "The internal number of the date." ;
             Text[ chinese_simplified ] = "日期的系统内部序数。";
-            Text[ russian ] = " -,        .";
+            Text[ russian ] = "  .";
             Text[ polish ] = "Kod daty-godziny uywany do obliczenia daty i godziny.";
             Text[ japanese ] = "日付のシリアル値";
             Text[ chinese_traditional ] = "日期的系統內部數字。";
@@ -3577,10 +3689,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Datum als serieel getal.";
             Text[ chinese_simplified ] = "日期的系统内部序数。";
             Text[ greek ] = "is the date-time code used for date and time calculations.";
-            Text[ korean ] = "날짜의 내부 값";
+            Text[ korean ] = "날짜 내부값";
             Text[ turkish ] = " tarih says.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre intern de la data.";
+            Text[ thai ] = "จำนวนวันที่ภายใน";
         };
     };
      // -=*# Resource for function JETZT #*=-
@@ -3598,22 +3711,23 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ danish ] = "Beregner serienummeret for computerens aktuelle klokkeslt." ;
             Text [ french ] = "Dtermine le numro de srie et de l'heure courante." ;
             Text [ swedish ] = "Bestmmer den aktuella tiden fr datorn." ;
-            Text [ dutch ] = "Bepaalt de actuele tijd van de computer." ;
+            Text [ dutch ] = "Bepaalt de huidige tijd van de computer." ;
             Text [ spanish ] = "Determina la hora actual del ordenador." ;
             Text [ english_us ] = "Determines the current time of the computer." ;
             Text[ chinese_simplified ] = "确定计算机内部时钟的当前时间。";
-            Text[ russian ] = "   .";
+            Text[ russian ] = "     .";
             Text[ polish ] = "Podaje warto kolejnego numeru biecej daty i czasu.";
             Text[ japanese ] = "コンピュータの現在の時間のシリアル値を返します。";
             Text[ chinese_traditional ] = "確定電腦內部時鐘的目前時間。";
             Text[ arabic ] = "   .";
-            Text[ dutch ] = "Bepaalt de actuele tijd van de computer.";
+            Text[ dutch ] = "Bepaalt de huidige tijd van de computer.";
             Text[ chinese_simplified ] = "确定计算机内部时钟的当前时间。";
             Text[ greek ] = "     .";
             Text[ korean ] = "컴퓨터의 현재 일자를 결정";
             Text[ turkish ] = "Bilgisayarn gncel saatini belirler.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Determina l'hora actual de l'ordinador.";
+            Text[ thai ] = "กำหนดเวลาปัจจุบันของเครื่องคอมพิวเตอร์";
         };
         ExtraData =
         {
@@ -3641,7 +3755,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Devuelve los segundos que corresponden al nm_de_serie en forma de nmero (0 - 59)." ;
             Text [ english_us ] = "Determines the sequential number of the second of a minute (0-59) for the time value." ;
             Text[ chinese_simplified ] = "确定与时间值对应的秒钟数(0 - 59)。";
-            Text[ russian ] = "       (  0  59).";
+            Text[ russian ] = "    .      0  59.";
             Text[ polish ] = "Podaje w wyniku sekund, ktrej przyporzdkowany jest numer_kolejny (liczba cakowita w zakresie od 0 do 59).";
             Text[ japanese ] = "時間のシリアル値がその分の何秒にあたるかを数値(0~59)で返します。";
             Text[ chinese_traditional ] = "轉換數字成秒鐘數(0 - 59)。";
@@ -3653,6 +3767,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Saat deerine gre, dakikann srekli saniye deerini tam say (0 - 59) olarak belirtir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Determina el nombre seqencial del segon d'un minut (0-59) per al valor de l'hora.";
+            Text[ thai ] = "กำหนดจำนวนวินาทีของนาทีตามลำดับ (0-59) สำหรับค่าของเวลา";
         };
         ExtraData =
         {
@@ -3688,6 +3803,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -3705,7 +3821,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Valor interno de hora" ;
             Text [ english_us ] = "The internal time value." ;
             Text[ chinese_simplified ] = "系统内部时间值。";
-            Text[ russian ] = " -,        .";
+            Text[ russian ] = "  .";
             Text[ polish ] = "Kod daty-godziny uywany do obliczenia daty i godziny.";
             Text[ japanese ] = "時間のシリアル値";
             Text[ chinese_traditional ] = "系統內部時間序數。";
@@ -3717,6 +3833,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = " saat says.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor intern de l'hora.";
+            Text[ thai ] = "ค่าของเวลาภายใน";
         };
     };
      // -=*# Resource for function ZEIT #*=-
@@ -3739,7 +3856,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Devuelve el nmero de serie para una hora determinada en hora, minutos y segundos" ;
             Text [ english_us ] = "Determines a time value from the details for hour, minute and second." ;
             Text[ chinese_simplified ] = "生成一个由小时,分钟和秒组成的时间值。";
-            Text[ russian ] = "       .";
+            Text[ russian ] = "    ,   .";
             Text[ polish ] = "Zwraca numer kolejny odpowiadajcy podanej dacie oznaczajcy godzin, minut i sekund.";
             Text[ japanese ] = "時、分、秒を指定して時間のシリアル値を求めます。";
             Text[ chinese_traditional ] = "確定一個由小時﹐分鐘和秒組成的時間數值。";
@@ -3751,6 +3868,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Saat, dakika ve saniye say deerleri iin bir saat deeri oluturur";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Determina un valor d'hora a partir dels detalls d'hora, minut i segon.";
+            Text[ thai ] = "กำหนดค่าของเวลาจากรายละเอียดสำหรับชั่วโมง, นาทีและวินาที";
         };
         ExtraData =
         {
@@ -3785,7 +3903,8 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ korean ] = "시간";
             Text[ turkish ] = "Saat";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "HOUR";
+            Text[ catalan ] = "hora";
+            Text[ thai ] = "ชัวโมง";
         };
         String 3 // Description of Parameter 1
         {
@@ -3796,7 +3915,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Numero intero che rappresenta l'ora." ;
             Text [ portuguese_brazilian ] = "Ganze Zahl f? die Stunde." ;
             Text [ portuguese ] = " um nmero inteiro entre 0 e 23 que representa a hora." ;
-            Text [ finnish ] = "Tunteja kuvaava muuttuja." ;
+            Text [ finnish ] = "Tunteja kuvaava kokonaisluku." ;
             Text [ danish ] = "Heltal som svarer til timen." ;
             Text [ french ] = "Nombre entier pour l'heure." ;
             Text [ swedish ] = "Heltal fr timmen." ;
@@ -3816,6 +3935,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Saat iin tamsay.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Enter per a l'hora.";
+            Text[ thai ] = "จำนวนเต็มสำหรับชั่วโมง";
         };
         String 4 // Name of Parameter 2
         {
@@ -3833,7 +3953,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Minuto" ;
             Text [ english_us ] = "minute" ;
             Text[ chinese_simplified ] = "minute";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "Minuta";
             Text[ japanese ] = "分";
             Text[ chinese_traditional ] = "minute";
@@ -3845,6 +3965,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Dakika";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "minut";
+            Text[ thai ] = "นาที";
         };
         String 5 // Description of Parameter 2
         {
@@ -3855,7 +3976,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Numero intero che rappresenta il minuto." ;
             Text [ portuguese_brazilian ] = "Ganze Zahl f? die Minute." ;
             Text [ portuguese ] = " um nmero inteiro entre 0 e 59 que representa o minuto." ;
-            Text [ finnish ] = "Minuutteja kuvaava muuttuja." ;
+            Text [ finnish ] = "Minuutteja kuvaava kokonaisluku." ;
             Text [ danish ] = "Heltal som svarer til minuttet." ;
             Text [ french ] = "Nombre entier pour les minutes." ;
             Text [ swedish ] = "Heltal fr minuten." ;
@@ -3875,6 +3996,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Dakika iin tamsay.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Enter per al minut.";
+            Text[ thai ] = "จำนวนเต็มสำหรับนาที";
         };
         String 6 // Name of Parameter 3
         {
@@ -3892,7 +4014,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Segundo" ;
             Text [ english_us ] = "second" ;
             Text[ chinese_simplified ] = "second";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "Sekunda";
             Text[ japanese ] = "秒";
             Text[ chinese_traditional ] = "second";
@@ -3904,6 +4026,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Saniye";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "segon";
+            Text[ thai ] = "วินาที";
         };
         String 7 // Description of Parameter 3
         {
@@ -3914,7 +4037,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Un numero intero che rappresenta i secondi." ;
             Text [ portuguese_brazilian ] = "Ganze Zahl f? die Sekunde." ;
             Text [ portuguese ] = " um nmero inteiro entre 0 e 59 que representa o segundo." ;
-            Text [ finnish ] = "Sekunteja kuvaava muuttuja." ;
+            Text [ finnish ] = "Sekunteja kuvaava kokonaisluku." ;
             Text [ danish ] = "Heltal som svarer til sekundet." ;
             Text [ french ] = "Nombre entier pour les secondes." ;
             Text [ swedish ] = "Heltal fr sekunden." ;
@@ -3934,6 +4057,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Saniye iin tamsay.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Enter per al segon.";
+            Text[ thai ] = "จำนวนเต็มสำหรับวินาที";
         };
     };
      // -=*# Resource for function ZEITWERT #*=-
@@ -3956,7 +4080,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Devuelve el nmero de serie de la hora representada por texto_de_hora." ;
             Text [ english_us ] = "Returns a sequential number for a text shown in a possible time entry format." ;
             Text[ chinese_simplified ] = "转换文字类型的时间值成为序列时间值。";
-            Text[ russian ] = "         .";
+            Text[ russian ] = "         .";
             Text[ polish ] = "Zamienia tekst w formacie wprowadzania czasu na kolejn liczb.";
             Text[ japanese ] = "時間を表す文字列をシリアル値に変換します。";
             Text[ chinese_traditional ] = "字元時間格式轉換成序列數時間格式。";
@@ -3964,10 +4088,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Converteert een datum in de vorm van tekst te naar een serieel getal.";
             Text[ chinese_simplified ] = "转换文字类型的时间值成为序列时间值。";
             Text[ greek ] = "           .";
-            Text[ korean ] = "가능한 시간 입력 형식의 텍스트에서 연속적인 수 선택.";
+            Text[ korean ] = "가능한 시간 입력 서식의 텍스트에서 연속적인 수 선택";
             Text[ turkish ] = "Muhtemel bir saat formatndaki bir metinden i say retir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna un nombre seqencial per a un text mostrat en un format d'entrada d'hora possible.";
+            Text[ thai ] = "ส่งกลับลำดับตัวเลขสำหรับการแสดงข้อความในรูปแบบรายการเวลาที่เป็นไปได้";
         };
         ExtraData =
         {
@@ -4003,6 +4128,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Metin";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "text";
+            Text[ thai ] = "ข้อความ";
         };
         String 3 // Description of Parameter 1
         {
@@ -4013,11 +4139,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Testo tra virgolette che riproduce un'indicazione oraria in formato %PRODUCTNAME." ;
             Text [ portuguese_brazilian ] = "Ein in Anf?rungszeichen eingeschlossener Text, der eine Zeitangabe in einem %PRODUCTNAME Calc Zeitformat wiedergibt." ;
             Text [ portuguese ] = "Um texto que fornece uma hora num dos vrios formatos de horas do %PRODUCTNAME." ;
-            Text [ finnish ] = "Lainausmerkeill rajattu teksti, joka palauttaa kellonajan ohjelman %PRODUCTNAME aikamuodossa." ;
+            Text [ finnish ] = "Lainausmerkeill rajattu teksti, joka palauttaa kellonajan %PRODUCTNAMEn aikamuodossa." ;
             Text [ danish ] = "Tekst i anfrselstegn som reprsenterer et klokkeslt i et %PRODUCTNAME datoformat." ;
             Text [ french ] = "Un texte entre guillemets qui renvoie une heure dans un format d'heure de %PRODUCTNAME." ;
             Text [ swedish ] = "En inom citationstecken skriven text, som returnerar en tid i ngot av %PRODUCTNAME Calcs tidsformat." ;
-            Text [ dutch ] = "Een tekst tussen aanhalingstekens met een tijdsaanduiding in een %PRODUCTNAME Calc tijdformaat." ;
+            Text [ dutch ] = "Een tekst tussen aanhalingstekens met een tijdsaanduiding in een %PRODUCTNAME Calc Tijdnotatie." ;
             Text [ spanish ] = "Un texto entre comillas que devuelve una hora en uno de los formatos horarios de %PRODUCTNAME." ;
             Text [ english_us ] = "A text enclosed in quotation marks which returns a time in a %PRODUCTNAME time format." ;
             Text[ chinese_simplified ] = "引号内的字串转换成 %PRODUCTNAME 时间格式。";
@@ -4026,13 +4152,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ japanese ] = "クォテーションマークで囲んだ時間を表す文字列を %PRODUCTNAME の時間表示形式で指定します。";
             Text[ chinese_traditional ] = "一個引號內的字串轉換成一個 %PRODUCTNAME 時間格式。";
             Text[ arabic ] = "           %PRODUCTNAME.";
-            Text[ dutch ] = "Een tekst tussen aanhalingstekens met een tijdsaanduiding in een %PRODUCTNAME Calc tijdformaat.";
+            Text[ dutch ] = "Een tekst tussen aanhalingstekens met een tijdsaanduiding in een %PRODUCTNAME Calc Tijdnotatie.";
             Text[ chinese_simplified ] = "引号内的字串转换成 %PRODUCTNAME 时间格式。";
             Text[ greek ] = "   ,          %PRODUCTNAME Calc.";
-            Text[ korean ] = "인용부호 안에 들어 있는 텍스트로서 %PRODUCTNAME 시간서식에 있는 시간을 나타냅니다.";
+            Text[ korean ] = "인용 부호 안에 들어 있는 텍스트로서 %PRODUCTNAME 시간 표기 형식에 있는 시간을 나타냅니다.";
             Text[ turkish ] = "%PRODUCTNAME zaman formatnda zaman bilgisi veren trnak iaretleri iindeki metin.";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Un text entre cometes que retorna una hora en un dels formats horaris de %PRODUCTNAME.";
+            Text[ catalan ] = "Un text entre cometes que retorna una hora en un dels formats horaris d'%PRODUCTNAME.";
+            Text[ thai ] = "ข้อความที่แนบมาในใบเสนอราคามีเครื่องหมายที่ส่งกลับเวลาในรูปแบบเวลาของ %PRODUCTNAME ";
         };
     };
      // -=*# Resource for function HEUTE #*=-
@@ -4054,7 +4181,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Determina la fecha actual del ordenador." ;
             Text [ english_us ] = "Determines the current date of the computer." ;
             Text[ chinese_simplified ] = "确定计算机内部时钟当前的日期。";
-            Text[ russian ] = "   .";
+            Text[ russian ] = "   .";
             Text[ polish ] = "Podaje warto kolejnego numeru biecej daty.";
             Text[ japanese ] = "コンピュータの現在の日付のシリアル値を返します。";
             Text[ chinese_traditional ] = "確定電腦內部時鐘目前的日期。";
@@ -4062,10 +4189,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Bepaalt de huidige datum van de computer.";
             Text[ chinese_simplified ] = "确定计算机内部时钟当前的日期。";
             Text[ greek ] = "     .";
-            Text[ korean ] = "컴퓨터의 현재 날짜를 결정";
+            Text[ korean ] = "컴퓨터의 현재 날짜를 지정합니다.";
             Text[ turkish ] = "Bilgisayarn gncel tarihini belirler.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Determina la data actual de l'ordinador.";
+            Text[ thai ] = "กำหนดวันที่ปัจจุบันของเครื่องคอมพิวเตอร์";
         };
         ExtraData =
         {
@@ -4093,7 +4221,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Devuelve el da de la semana (1 - 7) correspondiente al argumento nm_de_serie." ;
             Text [ english_us ] = "Returns the day of the week for the date value as an integer (1-7)." ;
             Text[ chinese_simplified ] = "确定与日期值相对应的一周内的某天,结果用介于1和7之间的整数表示。";
-            Text[ russian ] = "         (  1  7).";
+            Text[ russian ] = "     .      1()  7().";
             Text[ polish ] = "Podaje dzie tygodnia odpowiadajcy numerowi kolejnemu (liczba cakowita od 1 do 7).";
             Text[ japanese ] = "日付のシリアル値が何曜日にあたるかを数値(1~7)で返します。";
             Text[ chinese_traditional ] = "轉換日期成對應的一週內的某天(1-7)。";
@@ -4101,10 +4229,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Converteert een bepaalde dag van de week naar een serieel getal (1 - 7).";
             Text[ chinese_simplified ] = "确定与日期值相对应的一周内的某天,结果用介于1和7之间的整数表示。";
             Text[ greek ] = "           (1 - 7).";
-            Text[ korean ] = "요일을 나타내는 숫자 (1-7)을 날짜값으로 결정.";
+            Text[ korean ] = "요일을 나타내는 숫자(1-7)를 날짜값으로 지정합니다.";
             Text[ turkish ] = "Tarih deerine gre, hafta gnn tam say (1 - 7) olarak belirtir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna el dia de la setmana per al valor de la data com a enter (1-7).";
+            Text[ thai ] = "ส่งกลับวันของสัปดาห์สำหรับค่าของวันที่เป็นจำนวนเต็ม (1-7)";
         };
         ExtraData =
         {
@@ -4140,6 +4269,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -4149,7 +4279,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Data espressa come numero seriale." ;
             Text [ portuguese_brazilian ] = "Interne Zahl des Datums." ;
             Text [ portuguese ] = " o cdigo de data-hora para calcular a data e a hora." ;
-            Text [ finnish ] = "Pivmrn sisinen numeroarvo." ;
+            Text [ finnish ] = "Pivmrn sisinen numeroarvo" ;
             Text [ danish ] = "Intern datovrdi." ;
             Text [ french ] = "Le numro de srie de la date." ;
             Text [ swedish ] = "Internt tal fr datum." ;
@@ -4157,7 +4287,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Nmero interno de la fecha." ;
             Text [ english_us ] = "The internal number for the date." ;
             Text[ chinese_simplified ] = "日期的系统内部数字。";
-            Text[ russian ] = " -,        .";
+            Text[ russian ] = "  .";
             Text[ polish ] = "Kod daty-godziny uywany do obliczenia daty i godziny.";
             Text[ japanese ] = "日付のシリアル値";
             Text[ chinese_traditional ] = "日期的內部數字。";
@@ -4165,10 +4295,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Serieel getal van de datum.";
             Text[ chinese_simplified ] = "日期的系统内部数字。";
             Text[ greek ] = "is the date-time code used for date and time calculations.";
-            Text[ korean ] = "날짜의 내부 값";
+            Text[ korean ] = "날짜 내부값";
             Text[ turkish ] = "Tarihin i says.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre intern per a la data.";
+            Text[ thai ] = "ตัวเลขภายในสำหรับวันที่";
         };
         String 4 // Name of Parameter 2
         {
@@ -4198,6 +4329,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Tr";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Tipus";
+            Text[ thai ] = "ชนิด";
         };
         String 5 // Description of Parameter 2
         {
@@ -4227,6 +4359,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Haftaban ve hesaplama trn belirler";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Fixa el comenament de la setmana i el tipus de clcul que s'utilitzar.";
+            Text[ thai ] = "ให้การเริ่มต้นสัปดาห์คงที่และใช้ชนิดของการคำนวณ";
         };
     };
      // -=*# Resource for function JAHR #*=-
@@ -4240,26 +4373,27 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Restituisce l'anno espresso come numero seriale." ;
             Text [ portuguese_brazilian ] = "Bestimmt zu dem Datumswert das Jahr als Zahl." ;
             Text [ portuguese ] = "Devolve o ano correspondente a nm_srie." ;
-            Text [ finnish ] = "Palauttaa pivmrn vuosiarvon muuttujana." ;
+            Text [ finnish ] = "Palauttaa pivmrn vuosiarvon kokonaislukuna." ;
             Text [ danish ] = "Omregner serienummeret til et r." ;
             Text [ french ] = "Renvoie l'anne correspondant  l'argument numro_srie." ;
             Text [ swedish ] = "Bestmmer ret som tal fr datumvrdet." ;
-            Text [ dutch ] = "Converteert de datumswaarde naar een jaar dat wordt weergegeven als getal." ;
+            Text [ dutch ] = "Converteert de datumwaarde naar een jaar dat wordt weergegeven als getal." ;
             Text [ spanish ] = "Devuelve el ao correspondiente al nm_de_serie." ;
             Text [ english_us ] = "Returns the year of a date value as an integer." ;
             Text[ chinese_simplified ] = "转换日期数值成相对应的年份数。";
-            Text[ russian ] = "      .";
+            Text[ russian ] = "     .";
             Text[ polish ] = "Przeksztaca numer kolejny w rok.";
             Text[ japanese ] = "日付のシリアル値が西暦何年にあたるかを数値で返します。";
             Text[ chinese_traditional ] = "日期轉換成相對應的年份數。";
             Text[ arabic ] = "    .";
-            Text[ dutch ] = "Converteert de datumswaarde naar een jaar dat wordt weergegeven als getal.";
+            Text[ dutch ] = "Converteert de datumwaarde naar een jaar dat wordt weergegeven als getal.";
             Text[ chinese_simplified ] = "转换日期数值成相对应的年份数。";
             Text[ greek ] = "        .";
-            Text[ korean ] = "년도를 나타내는 날짜값으로 사용할 숫자 선택";
+            Text[ korean ] = "연도를 나타내는 날짜값으로 사용할 숫자를 구합니다.";
             Text[ turkish ] = "Tarih deerine gre yl tamsay olarak bulur.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna l'any d'un valor de data com a enter.";
+            Text[ thai ] = "ส่งกลับปีของค่าของวันที่เป็นจำนวนเต็ม";
         };
         ExtraData =
         {
@@ -4295,6 +4429,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -4312,7 +4447,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Nmero interno de la fecha" ;
             Text [ english_us ] = "Internal number of the date." ;
             Text[ chinese_simplified ] = "日期的系统内部数字。";
-            Text[ russian ] = " -,        .";
+            Text[ russian ] = "  .";
             Text[ polish ] = "Kod daty-godziny uywany do obliczenia daty i godziny.";
             Text[ japanese ] = "日付のシリアル値";
             Text[ chinese_traditional ] = "日期的內部數字。";
@@ -4320,10 +4455,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "De datum als serieel getal.";
             Text[ chinese_simplified ] = "日期的系统内部数字。";
             Text[ greek ] = "is the date-time code used for date and time calculations.";
-            Text[ korean ] = "날짜의 내부 값";
+            Text[ korean ] = "날짜 내부값";
             Text[ turkish ] = "Tarihin i says.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre intern de la data.";
+            Text[ thai ] = "ตัวเลขภายในของวันที่";
         };
     };
      // -=*# Resource for function TAGE #*=-
@@ -4357,6 +4493,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "ki tarih arasndaki gn farkn bulur.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Calcula el nombre de dies entre dues dates.";
+            Text[ thai ] = "คำนวณจำนวนวันระหว่างวันที่สองวัน";
         };
         ExtraData =
         {
@@ -4380,7 +4517,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Fecha_2" ;
             Text [ english_us ] = "Date_2" ;
             Text[ chinese_simplified ] = "date_2";
-            Text[ russian ] = "_2";
+            Text[ russian ] = " 2";
             Text[ polish ] = "Data_2";
             Text[ japanese ] = "日付 2";
             Text[ chinese_traditional ] = "date_2";
@@ -4392,6 +4529,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Tarih_2";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Data_2";
+            Text[ thai ] = "วันที่_2";
         };
         String 3 // Description of Parameter 1
         {
@@ -4417,10 +4555,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Jongere datum ter bepaling van het aantal dagen.";
             Text[ chinese_simplified ] = "计算两个日期相差天数时较晚的那个日期。";
             Text[ greek ] = "       .";
-            Text[ korean ] = "날짜 계산에서의 마지막 일자.";
+            Text[ korean ] = "요일수 차이 계산의 최종 날짜";
             Text[ turkish ] = "Gn fark hesab iin ge olan tarih.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Data final per calcular la diferncia en dies.";
+            Text[ thai ] = "วันสุดท้ายสำหรับการคำนวณความแตกต่างในวันต่าง ๆ";
         };
         String 4 // Name of Parameter 2
         {
@@ -4438,7 +4577,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Fecha_1" ;
             Text [ english_us ] = "Date_1" ;
             Text[ chinese_simplified ] = "date_1";
-            Text[ russian ] = "_1";
+            Text[ russian ] = " 1";
             Text[ polish ] = "Data_1";
             Text[ japanese ] = "日付 1";
             Text[ chinese_traditional ] = "date_1";
@@ -4450,6 +4589,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Tarih_1";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Data_1";
+            Text[ thai ] = "วันที่_1";
         };
         String 5 // Description of Parameter 2
         {
@@ -4475,10 +4615,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Oudere datum ter bepaling van het aantal dagen.";
             Text[ chinese_simplified ] = "计算两个日期相差天数时较早的那个日期。";
             Text[ greek ] = "       .";
-            Text[ korean ] = "날짜 계산에서의 시작 일자";
+            Text[ korean ] = "요일 수 차이 계산의 시작 날짜";
             Text[ turkish ] = "Gn fark hesab iin erken olan tarih.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Data d'inici per calcular la diferncia en dies.";
+            Text[ thai ] = "วันเริ่มต้นสำหรับการคำนวณความแตกต่างกันในวันต่าง ๆ";
         };
     };
      // -=*# Resource for function KALENDERWOCHE #*=-
@@ -4500,7 +4641,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Calcula la semana del ao correspondiente a la fecha especificada." ;
             Text [ english_us ] = "Calculates the calendar week corresponding to the given date." ;
             Text[ chinese_simplified ] = "计算某一日期在一年中所对应的星期序列数。";
-            Text[ russian ] = "     .";
+            Text[ russian ] = "        .";
             Text[ polish ] = "Oblicza dla podanej daty tydzie kalendarzowy w roku.";
             Text[ japanese ] = "日付のシリアル値がその年の何週目にあたるかを、数値で返します。";
             Text[ chinese_traditional ] = "計算某一日期在一年中的星期序列數。";
@@ -4508,10 +4649,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Bepaalt de kalenderweek aan de hand van de gegeven datumwaarde.";
             Text[ chinese_simplified ] = "计算某一日期在一年中所对应的星期序列数。";
             Text[ greek ] = "         .";
-            Text[ korean ] = "날짜값에 대해 주/년을 결정";
+            Text[ korean ] = "지정된 연도에 해당하는 주일 수를 계산합니다.";
             Text[ turkish ] = "Tarih deerine gre takvim haftasn belirler.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Calcula la setmana corresponent a la data indicada.";
+            Text[ thai ] = "คำนวณสัปดาห์ของปฏิทินสอดคล้องกับวันที่ให้มา";
         };
         ExtraData =
         {
@@ -4547,6 +4689,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -4556,7 +4699,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Data espressa come numero seriale." ;
             Text [ portuguese_brazilian ] = "Interne Zahl des Datums." ;
             Text [ portuguese ] = " o nmero interno da data." ;
-            Text [ finnish ] = "Pivmrn sisinen arvo." ;
+            Text [ finnish ] = "Pivmrn sisinen arvo" ;
             Text [ danish ] = "Intern datovrdi." ;
             Text [ french ] = "Le numro de srie de la date." ;
             Text [ swedish ] = "Internt tal fr datum." ;
@@ -4564,7 +4707,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "es el cdigo de fecha que representa la fecha." ;
             Text [ english_us ] = "The internal number of the date." ;
             Text[ chinese_simplified ] = "日期的内部序列数。";
-            Text[ russian ] = "   .";
+            Text[ russian ] = "  .";
             Text[ polish ] = "Numer kolejny odpowiadajcy dacie.";
             Text[ japanese ] = "日付のシリアル値";
             Text[ chinese_traditional ] = "日期的內部數字。";
@@ -4572,10 +4715,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "De datum als serieel getal.";
             Text[ chinese_simplified ] = "日期的内部序列数。";
             Text[ greek ] = "   .";
-            Text[ korean ] = "날짜의 내부 값";
+            Text[ korean ] = "날짜 내부값";
             Text[ turkish ] = "Dahili tarih says.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre intern de la data.";
+            Text[ thai ] = "ตัวเลขภายในของวันที่";
         };
         String 4 // Name of Parameter 2
         {
@@ -4605,6 +4749,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Kip";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "mode";
+            Text[ thai ] = "โหมด";
         };
         String 5 // Description of Parameter 2
         {
@@ -4614,7 +4759,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Stabilisce il primo giorno della settimana (1 = domenica, altro valore = luned)." ;
             Text [ portuguese_brazilian ] = "Legt den ersten Tag in der Woche fest." ;
             Text [ portuguese ] = "Determina o primeiro dia da semana." ;
-            Text [ finnish ] = "Viikon ensimminen piv." ;
+            Text [ finnish ] = "Viikon ensimminen piv (1 = sunnuntai, muut arvot = maanantai)" ;
             Text [ danish ] = "Definerer den frste dag i ugen (1 = sndag, andre vrdier = mandag)." ;
             Text [ french ] = "Dtermine le premier jour de la semaine (1 = Dimanche, autres valeurs = Lundi)." ;
             Text [ swedish ] = "Definierar den frsta dagen i veckan (1 = sndag, andra vrden = mndag)." ;
@@ -4634,6 +4779,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Haftann birinci gnn belirler.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Indica el primer dia de la setmana.";
+            Text[ thai ] = "ระบุวันแรกของสัปดาห์";
         };
     };
      // -=*# Resource for function OSTERSONNTAG #*=-
@@ -4645,8 +4791,8 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ english ] = "Calculates the date of easter sunday in a given year." ;
             Text[ english_us ] = "Calculates the date of Easter Sunday in a given year.";
             Text[ portuguese ] = "Calcula a data do domingo de Pscoa para um ano determinado.";
-            Text[ russian ] = "     .";
-            Text[ dutch ] = "Berekent de datum van de eerste Paasdag in een bepaald jaar.";
+            Text[ russian ] = "      .";
+            Text[ dutch ] = "Berekent de datum van eerste Paasdag in een bepaald jaar.";
             Text[ french ] = "Calcule la date du dimanche de Pques pour une anne donne";
             Text[ spanish ] = "Calcula la fecha del Domingo de Pascua de un ao.";
             Text[ italian ] = "Restituisce la data della domenica di Pasqua per l'anno indicato.";
@@ -4658,14 +4804,15 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ chinese_simplified ] = "计算某一年复活节星期天的日期。";
             Text[ chinese_traditional ] = "計算某一年復活節星期天的日期。";
             Text[ arabic ] = "         .";
-            Text[ dutch ] = "Berekent de datum van de eerste Paasdag in een bepaald jaar.";
+            Text[ dutch ] = "Berekent de datum van eerste Paasdag in een bepaald jaar.";
             Text[ chinese_simplified ] = "计算某一年复活节星期天的日期。";
             Text[ greek ] = "       .";
-            Text[ korean ] = "주어진 년도의부활절 일요일의 날짜를 계산";
+            Text[ korean ] = "지정된 연도 부활절 일요일의 날짜를 계산합니다.";
             Text[ turkish ] = "Paskalya Pazar gnnn hangi tarihe denk geldiini hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Calcula la data de la Pasqua de Resurrecci d'un any determinat.";
             Text[ finnish ] = "Laskee psiissunnuntain pivmrn annettuna vuonna.";
+            Text[ thai ] = "คำนวณวันที่ของวันอาทิตย์ที่เป็นวันอีสเตอร์ในปีที่ให้มา";
         };
         ExtraData =
         {
@@ -4700,6 +4847,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "any";
             Text[ finnish ] = "vuosi";
+            Text[ thai ] = "ปี";
         };
         String 3 // Description of Parameter 1
         {
@@ -4728,6 +4876,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Enter entre 1583 i 9956, o entre 0 i 99 (19xx o 20xx segons l'opci establerta).";
             Text[ finnish ] = "Kokonaisluku 1583 - 9956, tai 0 - 99 (19xx tai 20xx kytetyn asetuksen mukaan).";
+            Text[ thai ] = "จำนวนเต็มระหว่าง 1583 และ 9956, หรือ 0 และ 99 (19xx หรือ 20xx ขึ้นอยู่กับชุดตัวเลือก)";
         };
     };
      // -=*# Resource for function BW #*=-
@@ -4761,6 +4910,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Bugnk deer. Bir yatrmn bugnk deerini verir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor actual. Calcula el valor actual d'una inversi.";
+            Text[ thai ] = "ค่าปัจจุบัน คำนวณค่าปัจุบันของการลงทุน";
         };
         ExtraData =
         {
@@ -4784,7 +4934,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "tasa" ;
             Text [ english_us ] = "Rate" ;
             Text[ chinese_simplified ] = "rate";
-            Text[ russian ] = "  ";
+            Text[ russian ] = "";
             Text[ polish ] = "Odsetek";
             Text[ japanese ] = "利率";
             Text[ chinese_traditional ] = "rate";
@@ -4792,10 +4942,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Rente";
             Text[ chinese_simplified ] = "rate";
             Text[ greek ] = "Rate";
-            Text[ korean ] = "비율";
+            Text[ korean ] = "이율";
             Text[ turkish ] = "Faiz";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Taxa";
+            Text[ thai ] = "อัตรา";
         };
         String 3 // Description of Parameter 1
         {
@@ -4825,6 +4976,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Dnem faiz oran.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Taxa d'inters per al perode donat.";
+            Text[ thai ] = "อัตราดอกเบี้ยสำหรับงวดที่ให้มา";
         };
         String 4 // Name of Parameter 2
         {
@@ -4834,11 +4986,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Numero rate" ;
             Text [ portuguese_brazilian ] = "ZZR" ;
             Text [ portuguese ] = "NPER" ;
-            Text [ finnish ] = "NPER" ;
+            Text [ finnish ] = "NJAKSO" ;
             Text [ danish ] = "NPER" ;
             Text [ french ] = "NPM" ;
             Text [ swedish ] = "Perioder" ;
-            Text [ dutch ] = "BT" ;
+            Text [ dutch ] = "NPER" ;
             Text [ spanish ] = "nper" ;
             Text [ english_us ] = "NPER" ;
             Text[ chinese_simplified ] = "nper";
@@ -4847,13 +4999,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ japanese ] = "全支払い期間";
             Text[ chinese_traditional ] = "NPER";
             Text[ arabic ] = "NPER";
-            Text[ dutch ] = "BT";
+            Text[ dutch ] = "NPER";
             Text[ chinese_simplified ] = "nper";
             Text[ greek ] = "NPER";
             Text[ korean ] = "NPER";
             Text[ turkish ] = "NPER";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "NPER";
+            Text[ thai ] = "NPER";
         };
         String 5 // Description of Parameter 2
         {
@@ -4884,6 +5037,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Taksit says. Annite denen toplam dnem says.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Perode de pagament. Nombre total de perodes en qu es paga l'anualitat.";
+            Text[ thai ] = "งวดการจ่ายเงิน จำนวนงวดทั้งหมดที่จ่ายเงินรายปี";
         };
         String 6 // Name of Parameter 3
         {
@@ -4893,7 +5047,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Rata" ;
             Text [ portuguese_brazilian ] = "RMZ" ;
             Text [ portuguese ] = "Pgto" ;
-            Text [ finnish ] = "PMT" ;
+            Text [ finnish ] = "MAKSU" ;
             Text [ danish ] = "YDELSE" ;
             Text [ french ] = "VPM" ;
             Text [ swedish ] = "Betalning" ;
@@ -4913,6 +5067,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "PMT";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "PMT";
+            Text[ thai ] = "PMT";
         };
         String 7 // Description of Parameter 3
         {
@@ -4943,6 +5098,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Dzenli demeler. Her dnem denen sabit anniteler.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Pagaments regulars. Quantitat constant de l'anualitat que es paga en cada perode.";
+            Text[ thai ] = "การจ่ายเงินปกติ จำนวนเงินคงที่ของเงินรายปีที่จ่ายในแต่ละงวด";
         };
         String 8 // Name of Parameter 4
         {
@@ -4952,7 +5108,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Valore futuro" ;
             Text [ portuguese_brazilian ] = "ZW" ;
             Text [ portuguese ] = "Vf" ;
-            Text [ finnish ] = "FV" ;
+            Text [ finnish ] = "TULEVA_ARVO" ;
             Text [ danish ] = "FV" ;
             Text [ french ] = "VC" ;
             Text [ swedish ] = "Slutvrde" ;
@@ -4960,7 +5116,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "vf" ;
             Text [ english_us ] = "FV" ;
             Text[ chinese_simplified ] = "fv";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "fv";
             Text[ japanese ] = "将来価値";
             Text[ chinese_traditional ] = "fv";
@@ -4972,6 +5128,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "FV";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "FV";
+            Text[ thai ] = "FV";
         };
         String 9 // Description of Parameter 4
         {
@@ -4990,7 +5147,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "es el valor futuro o el saldo en efectivo que desea lograr despus de efectuar el ltimo pago." ;
             Text [ english_us ] = "Future value. The value (final value) to be attained after the last payment." ;
             Text[ chinese_simplified ] = "未来值。完成最后一次支付后达到的最终值。";
-            Text[ russian ] = " .  ( ),       .";
+            Text[ russian ] = " .  ( ),      .";
             Text[ polish ] = "Przysza warto. Warto kocowa, ktra ma zosta osignita po dokonaniu ostatniej patnoci.";
             Text[ japanese ] = "将来価値。投資の将来価値、または最後の支払いを行ったあとに残る現金の収支。";
             Text[ chinese_traditional ] = "未來值。完成最後一次支付後達到的最終值。";
@@ -5002,6 +5159,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Gelecek deer. Son deme yapldktan sonra elde edilmek istenen deer (son deer).";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor de futur. Valor (valor final) que s'ha d'aconseguir desprs de l'ltim pagament.";
+            Text[ thai ] = "ค่าของอนาคต ค่า (ค่าสุดท้าย) ที่ได้รับหลังจากการจ่ายเงินครั้งสุดท้าย";
         };
         String 10 // Name of Parameter 5
         {
@@ -5031,6 +5189,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Tip";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Tipus";
+            Text[ thai ] = "ชนิด";
         };
         String 11 // Description of Parameter 5
         {
@@ -5041,7 +5200,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Scadenza pagamenti. Tipo=1 significa scadenza all'inizio e Tipo=0 significa alla fine di un periodo." ;
             Text [ portuguese_brazilian ] = "F?lligkeit. F = 1 hei?t F?lligkeit am Anfang einer Periode, F = 0 am Ende." ;
             Text [ portuguese ] = " o nmero 0 ou 1 e indica as datas de vencimento dos pagamentos. 1 = incio do perodo; 0 = fim do perodo." ;
-            Text [ finnish ] = "Tyyppi = 1 tarkoittaa kauden alkua ja = 0 kauden loppua." ;
+            Text [ finnish ] = "Tyyppi 1 tarkoittaa kauden alkua ja 0 kauden loppua." ;
             Text [ danish ] = "Forfaldstidspunkt. F = 1 betyder betaling ved periodens begyndelse, F = 0 betaling ved periodens slutning." ;
             Text [ french ] = "chance. Type=1 signifie chance au dbut d'une priode, type=0  la fin d'une priode." ;
             Text [ swedish ] = "Frfallotidpunkt. F = 1 betyder frfallotidpunkt i brjan av en period, F = 0 i slutet." ;
@@ -5049,7 +5208,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "es el vencimiento de los pagos. El 1 es al comienzo del perodo, el 0 al final." ;
             Text [ english_us ] = "Type = 1 denotes due at the beginning of the period, = 0 at the end." ;
             Text[ chinese_simplified ] = "到期类型。 type = 1 表示在周期开始时到期,type= 0 表示在周期结束时到期。";
-            Text[ russian ] = "  (0 1), ,        (0)     (1).";
+            Text[ russian ] = " = 1 ,      , = 0 -   .";
             Text[ polish ] = "Warto 0 lub 1 okrelajca sposb dokonywania patnoci (z dou lub z gry).";
             Text[ japanese ] = "支払期日。支払期 = 1 は各期の期首、支払期日 = 0 は各期の期末。";
             Text[ chinese_traditional ] = "到期類型。 F = 1 表示在週期開始時到期﹐F = 0 表示在週期結束時到期。";
@@ -5061,6 +5220,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Vade. F = 1, vade dnem banda,  F = 0 ise dnem sonunda anlamna gelir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Tipus = 1 indica venciment al comenament del perode; = 0, al final.";
+            Text[ thai ] = "ชนิด = 1 แทนครบกำหนดงวดเริ่มต้น, = 0 งวดสุดท้าย";
         };
     };
      // -=*# Resource for function ZW #*=-
@@ -5075,7 +5235,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Valore futuro. Restituisce il valore futuro di un investimento sulla base di pagamenti periodici e di un tasso di interesse costante." ;
             Text [ portuguese_brazilian ] = "Zuk?ftiger Wert. Berechnet den Endwert einer Investition bei regelm??igen Zahlungen und konstantem Zinssatz." ;
             Text [ portuguese ] = "Devolve o valor futuro de um investimento de acordo com os pagamentos peridicos e constantes e com uma taxa de juros constante." ;
-            Text [ finnish ] = "Tuleva arvo. Palauttaa sijoituksen tulevan arvon, joka lasketaan snnllisen maksuohjelman ja kiinten korkoprosentin mukaan." ;
+            Text [ finnish ] = "Tuleva arvo Palauttaa sijoituksen tulevan arvon, joka lasketaan snnllisen maksuohjelman ja kiinten korkoprosentin mukaan." ;
             Text [ danish ] = "Fremtidsvrdi. Beregner slutvrdien af en investering ved konstant ydelse og konstant rentesats." ;
             Text [ french ] = "Calcule la valeur future d'un investissement sur la base de paiements rguliers et d'un taux d'intrt constant." ;
             Text [ swedish ] = "Framtida vrde. Berknar slutvrdet fr en investering vid regelbundna betalningar och konstant rntesats." ;
@@ -5083,7 +5243,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Devuelve el valor futuro de una inversin basndose en pagos peridicos constantes y en una tasa de inters constante." ;
             Text [ english_us ] = "Future value. Returns the future value of an investment based on regular payments and a constant interest rate." ;
             Text[ chinese_simplified ] = "未来值。在定期支付和利率恒定的情况下,\n计算一项投资的未来值。";
-            Text[ russian ] = "         .";
+            Text[ russian ] = "         .";
             Text[ polish ] = "Oblicza warto przysz inwestycji opart na regularnych wpatach i staej stopie oprocentowania.";
             Text[ japanese ] = "将来価値。投資の将来価値、または最後の支払いを行ったあとに残る現金の収支を指定します。";
             Text[ chinese_traditional ] = "未來值。在定期支付和利率恆定的情況下﹐計算一項投資的未來值。";
@@ -5095,6 +5255,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Gelecek deer. Dzenli demeli ve sabit faiz oranl yatrmn son deerini verir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor de futur. Torna el valor de futur d'una inversi basada en pagaments regulars i una taxa d'inters constant.";
+            Text[ thai ] = "ค่าของอนาคต ส่งกลับค่าของอนาคตของการลงทุนบนพื้นฐานการจ่ายเงินปกติและอัตราดอกเบี้ยคงที่";
         };
         ExtraData =
         {
@@ -5118,7 +5279,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "tasa" ;
             Text [ english_us ] = "Rate" ;
             Text[ chinese_simplified ] = "rate";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "Odsetki";
             Text[ japanese ] = "利率";
             Text[ chinese_traditional ] = "rate";
@@ -5126,10 +5287,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Rente";
             Text[ chinese_simplified ] = "rate";
             Text[ greek ] = "rate";
-            Text[ korean ] = "비율";
+            Text[ korean ] = "이율";
             Text[ turkish ] = "Faiz";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Taxa";
+            Text[ thai ] = "อัตรา";
         };
         String 3 // Description of Parameter 1
         {
@@ -5139,7 +5301,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Tasso di interesse per periodo." ;
             Text [ portuguese_brazilian ] = "Der Zinssatz pro Periode." ;
             Text [ portuguese ] = " a taxa de juros peridica." ;
-            Text [ finnish ] = "Kausikohtainen korkoprosentti." ;
+            Text [ finnish ] = "Kausikohtainen korkoprosentti" ;
             Text [ danish ] = "Rentesatsen per periode." ;
             Text [ french ] = "Le taux d'intrt par priode." ;
             Text [ swedish ] = "Rntesatsen per period." ;
@@ -5147,7 +5309,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "es la tasa de inters por perodo." ;
             Text [ english_us ] = "The rate of interest per period." ;
             Text[ chinese_simplified ] = "各期的利率。";
-            Text[ russian ] = "   .";
+            Text[ russian ] = "   .";
             Text[ polish ] = "Stopa procentowa dla pojedynczego okresu.";
             Text[ japanese ] = "各期の利息";
             Text[ chinese_traditional ] = "各期的利率。";
@@ -5159,6 +5321,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Dnem faiz oran.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Taxa d'inters per perode.";
+            Text[ thai ] = "อัตราดอกเบี้ยต่องวด";
         };
         String 4 // Name of Parameter 2
         {
@@ -5168,7 +5331,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Numero rate" ;
             Text [ portuguese_brazilian ] = "ZZR" ;
             Text [ portuguese ] = "Nper" ;
-            Text [ finnish ] = "NPER" ;
+            Text [ finnish ] = "NJAKSO" ;
             Text [ danish ] = "NPER" ;
             Text [ french ] = "NPM" ;
             Text [ swedish ] = "Perioder" ;
@@ -5176,7 +5339,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "nper" ;
             Text [ english_us ] = "NPER" ;
             Text[ chinese_simplified ] = "nper";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "LICZBA.RAT";
             Text[ japanese ] = "全支払い期間";
             Text[ chinese_traditional ] = "nper";
@@ -5188,6 +5351,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "NPER";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "NPER";
+            Text[ thai ] = "NPER";
         };
         String 5 // Description of Parameter 2
         {
@@ -5198,7 +5362,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Numero totale dei periodi di pagamento in un'annualit." ;
             Text [ portuguese_brazilian ] = "Zahlungszeitraum. Die Gesamtanzahl der Perioden, in denen die Annuit?t (Rente) gezahlt wird." ;
             Text [ portuguese ] = " o nmero total de perodos de pagamento numa anuidade." ;
-            Text [ finnish ] = "Maksukausi. Maksukaudet, joiden aikana annuiteetti (elke) maksetaan." ;
+            Text [ finnish ] = "Maksukausi Maksukaudet, joiden aikana annuiteetti (elke) maksetaan." ;
             Text [ danish ] = "Ydelsesperioder. Det samlede antal ydelsesperioder i en annuitet." ;
             Text [ french ] = "Le nombre total de priodes de paiement de l'annuit." ;
             Text [ swedish ] = "Betalningsperiod. Det totala antalet perioder d annuiteten (pension) betalas." ;
@@ -5218,6 +5382,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Taksit says. Annite denen toplam dnem says.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Perode de pagament. Nombre total de perodes en qu es paga l'anualitat (pensi).";
+            Text[ thai ] = "งวดการจ่ายเงิน จำนวนงวดทั้งหมดที่จ่ายเงินรายปี (เงินบำเหน็จ) ";
         };
         String 6 // Name of Parameter 3
         {
@@ -5227,7 +5392,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Rata" ;
             Text [ portuguese_brazilian ] = "RMZ" ;
             Text [ portuguese ] = "Pgto" ;
-            Text [ finnish ] = "PMT" ;
+            Text [ finnish ] = "MAKSU" ;
             Text [ danish ] = "YDELSE" ;
             Text [ french ] = "VPM" ;
             Text [ swedish ] = "Betalning" ;
@@ -5247,6 +5412,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Dzenli deme";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "PMT";
+            Text[ thai ] = "PMT";
         };
         String 7 // Description of Parameter 3
         {
@@ -5257,7 +5423,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Pagamento effettuato in ciascun periodo e non pu variare nel corso dell'annualit." ;
             Text [ portuguese_brazilian ] = "Regelm??ige Zahlung. Die konstante Annuit?t, die in jeder Periode gezahlt wird." ;
             Text [ portuguese ] = " o pagamento feito em cada perodo, mantendo-se constante durante a vigncia da anuidade." ;
-            Text [ finnish ] = "Snnlliset maksut. Kunakin kautena maksettava vakioannuiteetti." ;
+            Text [ finnish ] = "Snnlliset maksut Kunakin kautena maksettava vakioannuiteetti." ;
             Text [ danish ] = "Ydelse. Den konstante ydelse som betales hver periode og ikke kan ndres i annuitetens lbetid" ;
             Text [ french ] = "Paiement rgulier. L'annuit constante paye pour chaque priode." ;
             Text [ swedish ] = "Regelbunden betalning. Den konstanta annuiteten som betalas i varje period." ;
@@ -5277,6 +5443,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Dzenli demeler. Her dnem denen sabit annite.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Pagaments regulars. Anualitat constant que s'ha de pagar en cada perode.";
+            Text[ thai ] = "การจ่ายเงินปกติ เงินรายปีคงที่ที่จ่ายในแต่ละปี";
         };
         String 8 // Name of Parameter 4
         {
@@ -5286,7 +5453,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Valore attuale" ;
             Text [ portuguese_brazilian ] = "BW" ;
             Text [ portuguese ] = "VA" ;
-            Text [ finnish ] = "PV" ;
+            Text [ finnish ] = "NA" ;
             Text [ danish ] = "NV" ;
             Text [ french ] = "VA" ;
             Text [ swedish ] = "Nuvrde" ;
@@ -5294,7 +5461,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "va" ;
             Text [ english_us ] = "PV" ;
             Text[ chinese_simplified ] = "pv";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "PV";
             Text[ japanese ] = "現在価値";
             Text[ chinese_traditional ] = "pv";
@@ -5306,6 +5473,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Bugnk deer";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "PV";
+            Text[ thai ] = "PV";
         };
         String 9 // Description of Parameter 4
         {
@@ -5315,7 +5483,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Valore attuale di una serie di pagamenti." ;
             Text [ portuguese_brazilian ] = "Barwert. Der derzeitige Wert der Reihe von Zahlungen." ;
             Text [ portuguese ] = " o valor presente ou a quantia total actual correspondente a uma srie de pagamentos futuros." ;
-            Text [ finnish ] = "Nykyinen arvo. Maksusarjan nykyinen arvo" ;
+            Text [ finnish ] = "Nykyinen arvo Maksusarjan nykyinen arvo" ;
             Text [ danish ] = "Nutidsvrdi. Den vrdi en rkke ydelser er vrd nu." ;
             Text [ french ] = "Valeur actuelle = la valeur,  la date d'aujourd'hui, d'une srie de remboursements futurs." ;
             Text [ swedish ] = "Nuvarande vrde. Det nuvarande vrdet fr raden av betalningar." ;
@@ -5323,7 +5491,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "es el valor actual de la cantidad total de una serie de pagos futuros." ;
             Text [ english_us ] = "Present value. The current value of a series of payments" ;
             Text[ chinese_simplified ] = "现金值。一系列未来支付的目前价值。";
-            Text[ russian ] = "          .";
+            Text[ russian ] = "          .";
             Text[ polish ] = "Warto bieca dla serii przyszych patnoci.";
             Text[ japanese ] = "現在価値。将来行われる一連の支払いを、現時点で一括払いした場合の合計金額。";
             Text[ chinese_traditional ] = "凈現值。一系列未來付款目前值的累積數。";
@@ -5335,6 +5503,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Bugnk deer. deme dizisinin bugnk deerini verir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor actual. Valor actual d'una srie de pagaments.";
+            Text[ thai ] = "ค่าปัจจุบัน ค่าปัจจุบันของลำดับการจ่ายเงิน";
         };
         String 10 // Name of Parameter 5
         {
@@ -5360,10 +5529,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "V";
             Text[ chinese_simplified ] = "type";
             Text[ greek ] = "";
-            Text[ korean ] = "F";
+            Text[ korean ] = "type";
             Text[ turkish ] = "Tip";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Tipus";
+            Text[ thai ] = "ชนิด";
         };
         String 11 // Description of Parameter 5
         {
@@ -5374,7 +5544,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Tipo di scadenze dei pagamenti. 1 = all'inizio di un periodo, 0 = alla fine." ;
             Text [ portuguese_brazilian ] = "F?lligkeit. F = 1 hei?t F?lligkeit am Anfang einer Periode, F = 0 am Ende." ;
             Text [ portuguese ] = " o vencimento dos pagamentos de juros. 1 significa no nicio do perodo, 0 no final." ;
-            Text [ finnish ] = "Tyyppi = 1 tarkoittaa kauden alkua ja = 0 kauden loppua." ;
+            Text [ finnish ] = "Tyyppi 1 tarkoittaa kauden alkua ja 0 kauden loppua." ;
             Text [ danish ] = "Forfaldstidspunkt. F = 1 betyder betaling ved periodens begyndelse, F = 0 betaling ved periodens slutning." ;
             Text [ french ] = "chance. Type=1 signifie chance au dbut d'une priode, type=0  la fin d'une priode." ;
             Text [ swedish ] = "Frfallotidpunkt. F = 1 betyder frfallotidpunkt i brjan av en period och F = 0 i slutet." ;
@@ -5382,7 +5552,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "es el vencimiento de los pagos, 1 es al comienzo del perodo, 0 al final." ;
             Text [ english_us ] = "Type = 1 denotes due at the beginning of the period, = 0 at the end." ;
             Text[ chinese_simplified ] = "到期类型。 type = 1 表示在周期开始时到期,type= 0 表示在周期结束时到期。";
-            Text[ russian ] = "  (0 1), ,        (0)     (1).";
+            Text[ russian ] = " = 1 ,      , = 0 -   .";
             Text[ polish ] = "Warto 0 lub 1 okrelajca sposb dokonywania patnoci ( z dou lub z gry).";
             Text[ japanese ] = "支払期日、支払期日 = 1 各期の期首、支払期日 = 0 各期の期末。";
             Text[ chinese_traditional ] = "到期類型。 F = 1 表示在期初時到期﹐F = 0 表示在期末時到期。";
@@ -5394,6 +5564,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Vade. F = 1, vade dnem banda,  F = 0 ise dnem sonunda anlamna gelir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Tipus = 1 indica venciment al comenament del perode; = 0, al final.";
+            Text[ thai ] = "ชนิด = 1 แทนงวดเริ่มต้น, = 0 งวดสุดท้าย";
         };
     };
      // -=*# Resource for function ZZR #*=-
@@ -5408,7 +5579,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Numero di rate. Restituisce il numero di periodi di pagamento relativi ad un investimento che prevede pagamenti periodici a tasso di interesse costante." ;
             Text [ portuguese_brazilian ] = "Zahlungszeitraum. Berechnet die Anzahl der Zahlungsperioden einer Investition bei regelm??igen Zahlungen und konstantem Zinssatz." ;
             Text [ portuguese ] = "Calcula o nmero de perodos para um investimento de acordo com pagamentos regulares e uma taxa de juros constante." ;
-            Text [ finnish ] = "Maksukausi. Laskee sijoituksen maksukausien mrn snnllisten maksujen ja kiinten koron mukaan." ;
+            Text [ finnish ] = "Maksukausi Laskee sijoituksen maksukausien mrn snnllisten maksujen ja kiinten koron mukaan." ;
             Text [ danish ] = "Ydelsesperioder. Beregner antallet af ydelsesperioder for en investering ved konstant ydelse og konstant rentesats." ;
             Text [ french ] = "Calcule le nombre de priodes de paiement pour un investissement sur la base de paiements rguliers et d'un taux d'intrt constant." ;
             Text [ swedish ] = "Betalningsperiod. Berknar antalet betalningsperioder fr en investering vid regelbundna betalningar och konstant rntesats." ;
@@ -5416,7 +5587,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Devuelve el nmero de pagos de una inversin basndose en los pagos peridicos constantes y en la tasa de inters constante." ;
             Text [ english_us ] = "Payment period. Calculates the number of payment periods for an investment based on regular payments and a constant interest rate." ;
             Text[ chinese_simplified ] = "支付周期数。在定期支付和利率恒定的情况下,\n计算一项投资的支付周期数。";
-            Text[ russian ] = "             .";
+            Text[ russian ] = "             .";
             Text[ polish ] = "Okres patnoci. Oblicza ilo okresw patnoci dla inwestycji przy regularnych patnociach i staej stopie oprocentowania.";
             Text[ japanese ] = "支払い期間。定額の支払いを定期的に行い、利率が一定であると仮定して、投資に必要な期間を返します。";
             Text[ chinese_traditional ] = "支付週期數。在定期支付和利率恆定的情況下﹐計算一項投資的支付週期數。";
@@ -5428,6 +5599,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Taksit says. Dzenli deme ve sabit faiz oranl bir yatrmn deme dnemi saysn hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Perode de pagament. Calcula el nombre de perodes de pagament d'una inversi basada en pagaments regulars i una taxa d'inters constant.";
+            Text[ thai ] = "งวดการจ่ายเงิน คำนวนจำนวนงวดการจ่ายเงินสำหรับการลงทุนบนพื้นฐานการจ่ายเงินปกติและอัตราดอกเบี้ยปกติ";
         };
         ExtraData =
         {
@@ -5451,7 +5623,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "tasa" ;
             Text [ english_us ] = "Rate" ;
             Text[ chinese_simplified ] = "rate";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "Odsetki";
             Text[ japanese ] = "利率";
             Text[ chinese_traditional ] = "rate";
@@ -5459,10 +5631,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Rente";
             Text[ chinese_simplified ] = "rate";
             Text[ greek ] = "rate";
-            Text[ korean ] = "이자";
+            Text[ korean ] = "이율";
             Text[ turkish ] = "Faiz";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Taxa";
+            Text[ thai ] = "อัตรา";
         };
         String 3 // Description of Parameter 1
         {
@@ -5472,7 +5645,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Tasso di interesse per periodo." ;
             Text [ portuguese_brazilian ] = "Der Zinssatz pro Periode." ;
             Text [ portuguese ] = " a taxa de juros peridica." ;
-            Text [ finnish ] = "Kausikohtainen korkoprosentti." ;
+            Text [ finnish ] = "Kausikohtainen korkoprosentti" ;
             Text [ danish ] = "Rentesatsen per periode." ;
             Text [ french ] = "Le taux d'intrt par priode." ;
             Text [ swedish ] = "Rntesatsen per period." ;
@@ -5480,7 +5653,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "es la tasa de inters por perodo." ;
             Text [ english_us ] = "The rate of interest per period." ;
             Text[ chinese_simplified ] = "每个周期的利率。";
-            Text[ russian ] = "   .";
+            Text[ russian ] = "   .";
             Text[ polish ] = "Stopa procentowa w pojedynczym okresie.";
             Text[ japanese ] = "投資期間を通じての一定の利率。";
             Text[ chinese_traditional ] = "每個週期的利率。";
@@ -5492,6 +5665,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Dnem faizi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Taxa d'inters per perode.";
+            Text[ thai ] = "อัตราดอกเบี้ยต่องวด";
         };
         String 4 // Name of Parameter 2
         {
@@ -5501,7 +5675,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Rata" ;
             Text [ portuguese_brazilian ] = "RMZ" ;
             Text [ portuguese ] = "Pgto" ;
-            Text [ finnish ] = "PMT" ;
+            Text [ finnish ] = "MAKSU" ;
             Text [ danish ] = "YDELSE" ;
             Text [ french ] = "VPM" ;
             Text [ swedish ] = "Betalning" ;
@@ -5521,6 +5695,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Dzenli demeler";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "PMT";
+            Text[ thai ] = "PMT";
         };
         String 5 // Description of Parameter 2
         {
@@ -5531,7 +5706,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Pagamenti regolari. Le annualit costanti pagate in ogni periodo." ;
             Text [ portuguese_brazilian ] = "Regelm??ige Zahlung. Die konstante Annuit?t, die in jeder Periode gezahlt wird." ;
             Text [ portuguese ] = " o pagamento feito em cada perodo, mantendo-se constante durante a vigncia da anuidade." ;
-            Text [ finnish ] = "Snnlliset maksut. Kunakin kautena maksettava vakioannuiteetti." ;
+            Text [ finnish ] = "Snnlliset maksut Kunakin kautena maksettava vakioannuiteetti" ;
             Text [ danish ] = "Ydelse. Den konstante ydelse som betales hver periode og ikke kan ndres i annuitetens lbetid" ;
             Text [ french ] = "Paiement rgulier. L'annuit constante paye pour chaque priode." ;
             Text [ swedish ] = "Regelbunden betalning. Den konstanta annuiteten som betalas i varje period." ;
@@ -5539,7 +5714,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "es el pago efectuado en cada perodo; debe permanecer constante durante la vida de la anualidad." ;
             Text [ english_us ] = "Regular payments. The constant annuity to be paid in each period." ;
             Text[ chinese_simplified ] = "各个周期应支付的年金。";
-            Text[ russian ] = " .    .";
+            Text[ russian ] = " ,    .";
             Text[ polish ] = "Staa suma spaty dugu (obejmujca cz dugu i odsetki), ktra jest pacona regularnie w kadym okresie.";
             Text[ japanese ] = "定期的な支払い額。将来一連に支払われる一定の年金。";
             Text[ chinese_traditional ] = "各個週期應支付的年金。";
@@ -5551,6 +5726,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Dzenli demeler. Her dnem denen sabit anniteler.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Pagaments regulars. Anualitat constant que s'ha de pagar en cada perode.";
+            Text[ thai ] = "การจ่ายเงินปกติ เงินรายปีคงที่ที่จ่ายในแต่ละงวด";
         };
         String 6 // Name of Parameter 3
         {
@@ -5560,7 +5736,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Valore attuale" ;
             Text [ portuguese_brazilian ] = "BW" ;
             Text [ portuguese ] = "VA" ;
-            Text [ finnish ] = "PV" ;
+            Text [ finnish ] = "NA" ;
             Text [ danish ] = "NV" ;
             Text [ french ] = "VA" ;
             Text [ swedish ] = "Nuvrde" ;
@@ -5568,7 +5744,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "va" ;
             Text [ english_us ] = "PV" ;
             Text[ chinese_simplified ] = "pv";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "PV";
             Text[ japanese ] = "現在価値";
             Text[ chinese_traditional ] = "pv";
@@ -5580,6 +5756,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Bugnk deer";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "PV";
+            Text[ thai ] = "PV";
         };
         String 7 // Description of Parameter 3
         {
@@ -5589,7 +5766,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Valore attuale di una serie di pagamenti." ;
             Text [ portuguese_brazilian ] = "Barwert. Der derzeitige Wert der Reihe von Zahlungen." ;
             Text [ portuguese ] = " o valor presente ou a quantia total actual correspondente a uma srie de pagamentos futuros." ;
-            Text [ finnish ] = "Nykyinen arvo. Maksusarjan nykyinen arvo" ;
+            Text [ finnish ] = "Nykyinen arvo Maksusarjan nykyinen arvo" ;
             Text [ danish ] = "Nutidsvrdi. Den vrdi en rkke ydelser er vrd nu." ;
             Text [ french ] = "Valeur actuelle = la valeur,  la date d'aujourd'hui, d'une srie de remboursements futurs." ;
             Text [ swedish ] = "Nuvarande vrde. Det nuvarande vrdet fr en rad betalningar." ;
@@ -5597,7 +5774,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "es el valor actual o la suma total de una serie de futuros pagos." ;
             Text [ english_us ] = "Present value. The current value of a series of payments" ;
             Text[ chinese_simplified ] = "现金值。或一系列未来支付的目前价值。";
-            Text[ russian ] = "          .";
+            Text[ russian ] = "   .";
             Text[ polish ] = "Warto bieca dla serii przyszych patnoci.";
             Text[ japanese ] = "現在価値。将来行われる一連の支払いを、現時点で一括払いした場合の合計金額。";
             Text[ chinese_traditional ] = "凈現值。或一系列未來支付的目前價值。";
@@ -5609,6 +5786,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Bugnk deer. deme dizisinin bugnk deeri.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor actual. Valor actual d'una srie de pagaments.";
+            Text[ thai ] = "ค่าปัจจุบัน ค่าปัจจุบันของลำดับการจ่ายเงิน";
         };
         String 8 // Name of Parameter 4
         {
@@ -5618,7 +5796,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Valore futuro" ;
             Text [ portuguese_brazilian ] = "ZW" ;
             Text [ portuguese ] = "VF" ;
-            Text [ finnish ] = "FV" ;
+            Text [ finnish ] = "TULEVA_ARVO" ;
             Text [ danish ] = "FV" ;
             Text [ french ] = "VC" ;
             Text [ swedish ] = "Slutvrde" ;
@@ -5626,7 +5804,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "vf" ;
             Text [ english_us ] = "FV" ;
             Text[ chinese_simplified ] = "fv";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "FV";
             Text[ japanese ] = "将来価値";
             Text[ chinese_traditional ] = "fv";
@@ -5638,6 +5816,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Gelecek deer";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "FV";
+            Text[ thai ] = "FV";
         };
         String 9 // Description of Parameter 4
         {
@@ -5648,7 +5827,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Il valore finale che si desidera raggiungere dopo aver effettuato l'ultimo pagamento." ;
             Text [ portuguese_brazilian ] = "Zuk?ftiger Wert. Der Wert (Endwert), der nach der letzten Zahlung erreicht werden soll." ;
             Text [ portuguese ] = " o valor futuro ou um saldo de caixa obtido depois de efectuado o ltimo pagamento." ;
-            Text [ finnish ] = "Tuleva arvo. Viimeisen maksun jlkeinen arvo (loppuarvo)." ;
+            Text [ finnish ] = "Tuleva arvo Viimeisen maksun jlkeinen arvo (loppuarvo)" ;
             Text [ danish ] = "Fremtidsvrdi. Den vrdi eller den kassebalance der nskes opnet, nr den sidste ydelse er betalt." ;
             Text [ french ] = "Valeur future (valeur capitalise) : le montant que vous souhaitez obtenir aprs le dernier paiement." ;
             Text [ swedish ] = "Framtida vrde. Vrdet (slutvrde) som skall uppns efter den sista betalningen." ;
@@ -5656,7 +5835,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "es el valor futuro o saldo en efectivo que se desea lograr despus del ltimo pago." ;
             Text [ english_us ] = "Future value. The value (end value) to be attained after the final payment." ;
             Text[ chinese_simplified ] = "未来值。完成最后一次支付后达到的最终值。";
-            Text[ russian ] = "    .      .";
+            Text[ russian ] = " ,      .";
             Text[ polish ] = "Przysza warto. Warto kocowa, ktra ma zosta osignita po dokonaniu ostatniej patnoci.";
             Text[ japanese ] = "将来価値。投資の将来価値、または最後の支払いを行ったあとに残る現金の収支。";
             Text[ chinese_traditional ] = "未來值。完成最後一次支付後達到的最終值。";
@@ -5668,6 +5847,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Gelecek deer. Son deme yapldktan sonra elde edilmek istenen deer (son deer).";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor de futur. Valor (valor final) que s'ha d'aconseguir desprs de l'ltim pagament.";
+            Text[ thai ] = "ค่าของอนาคต ค่า (ค่าสุดท้าย) ที่ได้รับหลังจากการจ่ายเงินครั้งสุดท้าย";
         };
         String 10 // Name of Parameter 5
         {
@@ -5697,6 +5877,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Tip";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Tipus";
+            Text[ thai ] = "ชนิด";
         };
         String 11 // Description of Parameter 5
         {
@@ -5707,7 +5888,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Tipo di scadenza. 1 = all'inizio, 0 = alla fine del periodo." ;
             Text [ portuguese_brazilian ] = "F?lligkeit. F = 1 hei?t F?lligkeit am Anfang einer Periode, F = 0 am Ende." ;
             Text [ portuguese ] = " o vencimento dos pagamentos de juros. 1 significa no nicio do perodo, 0 no final." ;
-            Text [ finnish ] = "Tyyppi = 1 tarkoittaa kauden alkua ja = 0 kauden loppua." ;
+            Text [ finnish ] = "Tyyppi 1 tarkoittaa kauden alkua ja 0 kauden loppua." ;
             Text [ danish ] = "Forfaldstidspunkt. F = 1 betyder betaling ved periodens begyndelse, F = 0 betaling ved periodens slutning." ;
             Text [ french ] = "chance. Type=1 signifie chance au dbut d'une priode, type=0  la fin d'une priode." ;
             Text [ swedish ] = "Frfallotidpunkt. F = 1 betyder frfallotidpunkt i brjan av en period, F = 0 i slutet." ;
@@ -5715,7 +5896,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "es el vencimiento de los pagos, 1 es al comienzo del perodo, 0 al final." ;
             Text [ english_us ] = "Type = 1 denotes due at the beginning of the period, = 0 at the end." ;
             Text[ chinese_simplified ] = "到期类型。 type = 1 表示在周期开始时到期,type = 0 \n表示在周期结束时到期。";
-            Text[ russian ] = "  (0 1), ,        (0)     (1).";
+            Text[ russian ] = " = 1 ,      , = 0 -   .";
             Text[ polish ] = "Warto 0 lub 1 oznaczajca sposb dokonywania patnoci (z dou lub z gry).";
             Text[ japanese ] = "支払期日。支払期日 = 1 は各期の期首、支払期日 = 0 は各期の期末。";
             Text[ chinese_traditional ] = "到期類型。 F = 1 表示在週期開始時到期﹐F = 0 表示在週期結束時到期。";
@@ -5727,6 +5908,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Vade. F = 1, vade dnem banda,  F = 0 ise dnem sonunda anlamna gelir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Tipus = 1 indica venciment al comenament del perode; = 0, al final.";
+            Text[ thai ] = "ชนิด = 1 แทนครบกำหนดงวดเริ่มต้น, = 0 งวดสุดท้าย";
         };
     };
      // -=*# Resource for function RMZ #*=-
@@ -5741,7 +5923,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Restituisce il pagamento periodico (annualit) per un investimento a tasso di interesse costante." ;
             Text [ portuguese_brazilian ] = "Regelm??ige Zahlungen. Berechnet die regelm??igen Zahlungen (Annuit?t) f? eine Investition bei konstantem Zinssatz." ;
             Text [ portuguese ] = "Calcula o pagamento peridico de uma anuidade, baseado em pagamentos regulares e numa taxa de juro constante." ;
-            Text [ finnish ] = "Snnlliset maksut. Palauttaa annuiteetin snnllisen maksun, joka lasketaan snnllisen maksuohjelman ja kiinten korkoprosentin avulla." ;
+            Text [ finnish ] = "Snnlliset maksut Palauttaa annuiteetin snnllisen maksun, joka lasketaan snnllisen maksuohjelman ja kiinten korkoprosentin avulla." ;
             Text [ danish ] = "Ydelse. Beregner den regelmssige ydelse for en investering ved konstant rentsats." ;
             Text [ french ] = "Calcule le montant total de chaque remboursement priodique d'un investissement  remboursements et taux d'intrt constants." ;
             Text [ swedish ] = "Regelbundna betalningar. Berknar de regelbundna betalningarna (annuitet) fr en investering vid konstant rntesats." ;
@@ -5761,6 +5943,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Dzenli demeler. Sabit faiz oranl bir yatrm iin yaplan dzenli demeleri (anniteleri) hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Pagaments regulars. Torna el pagament peridic d'una anualitat, basat en pagaments regulars i una taxa d'inters peridic fixa.";
+            Text[ thai ] = "การจ่ายเงินปกติ ส่งกลับงวดการจ่ายเงินรายปี, บนพื้นฐานการจ่ายเงินปกติและดอกเบี้ยคงที่เป็นรายงวด";
         };
         ExtraData =
         {
@@ -5784,7 +5967,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "tasa" ;
             Text [ english_us ] = "Rate" ;
             Text[ chinese_simplified ] = "rate";
-            Text[ russian ] = "  ";
+            Text[ russian ] = "";
             Text[ polish ] = "Odsetki";
             Text[ japanese ] = "利率";
             Text[ chinese_traditional ] = "Rate";
@@ -5792,10 +5975,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Rente";
             Text[ chinese_simplified ] = "rate";
             Text[ greek ] = "Rate";
-            Text[ korean ] = "이자";
+            Text[ korean ] = "이율";
             Text[ turkish ] = "Faiz";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Taxa";
+            Text[ thai ] = "อัตรา";
         };
         String 3 // Description of Parameter 1
         {
@@ -5805,7 +5989,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Tasso di interesse per periodo." ;
             Text [ portuguese_brazilian ] = "Der Zinssatz pro Periode." ;
             Text [ portuguese ] = " a taxa de juro peridica." ;
-            Text [ finnish ] = "Kausikohtainen korkoprosentti." ;
+            Text [ finnish ] = "Kausikohtainen korkoprosentti" ;
             Text [ danish ] = "Rentesatsen per periode." ;
             Text [ french ] = "Le taux d'intrt par priode." ;
             Text [ swedish ] = "Rntesatsen per period." ;
@@ -5825,6 +6009,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Dnem faiz oran.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Taxa d'inters per perode.";
+            Text[ thai ] = "อัตราดอกเบี้ยต่องวด";
         };
         String 4 // Name of Parameter 2
         {
@@ -5834,7 +6019,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Numero rate" ;
             Text [ portuguese_brazilian ] = "ZZR" ;
             Text [ portuguese ] = "Nper" ;
-            Text [ finnish ] = "NPER" ;
+            Text [ finnish ] = "NJAKSO" ;
             Text [ danish ] = "NPER" ;
             Text [ french ] = "NPM" ;
             Text [ swedish ] = "Perioder" ;
@@ -5842,7 +6027,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "nper" ;
             Text [ english_us ] = "NPER" ;
             Text[ chinese_simplified ] = "nper";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "LICZBA.RAT";
             Text[ japanese ] = "全支払い期間";
             Text[ chinese_traditional ] = "nper";
@@ -5854,6 +6039,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "NPER";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "NPER";
+            Text[ thai ] = "NPER";
         };
         String 5 // Description of Parameter 2
         {
@@ -5864,7 +6050,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Numero totale dei periodi di pagamento in un'annualit." ;
             Text [ portuguese_brazilian ] = "Zahlungszeitraum. Die Gesamtanzahl der Perioden, in denen die Annuit?t (Rente) gezahlt wird." ;
             Text [ portuguese ] = " o nmero total de perodos de pagamento numa anuidade." ;
-            Text [ finnish ] = "Maksukausi. Maksukaudet, joiden aikana annuiteetti (elke) maksetaan." ;
+            Text [ finnish ] = "Maksukausi Maksukaudet, joiden aikana annuiteetti (elke) maksetaan." ;
             Text [ danish ] = "Ydelsesperioder. Det samlede antal ydelsesperioder i en annuitet." ;
             Text [ french ] = "Le nombre total de priodes de paiement de l'annuit." ;
             Text [ swedish ] = "Betalningsperiod. Det totala antalet perioder d annuiteten (pension) betalas." ;
@@ -5884,6 +6070,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Taksit says. Annite denen toplam dnem says.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Perode de pagament. Nombre total de perodes en qu es paga l'anualitat (pensi).";
+            Text[ thai ] = "งวดการจ่ายเงิน จำนวนงวดทั้งหมดในเงินรายปี (เงินบำเหน็จ) ที่จ่าย";
         };
         String 6 // Name of Parameter 3
         {
@@ -5893,7 +6080,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Valore attuale" ;
             Text [ portuguese_brazilian ] = "BW" ;
             Text [ portuguese ] = "VA" ;
-            Text [ finnish ] = "PV" ;
+            Text [ finnish ] = "NA" ;
             Text [ danish ] = "NV" ;
             Text [ french ] = "VA" ;
             Text [ swedish ] = "Nuvrde" ;
@@ -5901,7 +6088,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "va" ;
             Text [ english_us ] = "PV" ;
             Text[ chinese_simplified ] = "pv";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "PV";
             Text[ japanese ] = "現在価値";
             Text[ chinese_traditional ] = "pv";
@@ -5913,6 +6100,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Bugnk deer";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "PV";
+            Text[ thai ] = "PV";
         };
         String 7 // Description of Parameter 3
         {
@@ -5930,7 +6118,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "es el valor actual o la cantidad total de una serie de pagos futuros." ;
             Text [ english_us ] = "Present value. The current value of a series of payments" ;
             Text[ chinese_simplified ] = "现金值。或一系列未来支付的目前价值。";
-            Text[ russian ] = "          .";
+            Text[ russian ] = "   .";
             Text[ polish ] = "Warto bieca dla serii przyszych patnoci.";
             Text[ japanese ] = "現在価値。将来行われる一連の支払いを、現時点で一括払いした場合の合計金額。";
             Text[ chinese_traditional ] = "凈現值。或一系列未來支付的目前價值。";
@@ -5942,6 +6130,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Bugnk deer. deme dizisinin bugnk deeri.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor actual. Valor actual d'una srie de pagaments.";
+            Text[ thai ] = "ค่าปัจจุบัน ค่าปัจจุบันของลำดับการจ่ายเงิน";
         };
         String 8 // Name of Parameter 4
         {
@@ -5951,7 +6140,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Valore futuro" ;
             Text [ portuguese_brazilian ] = "ZW" ;
             Text [ portuguese ] = "VF" ;
-            Text [ finnish ] = "FV" ;
+            Text [ finnish ] = "TULEVA_ARVO" ;
             Text [ danish ] = "FV" ;
             Text [ french ] = "VC" ;
             Text [ swedish ] = "Slutvrde" ;
@@ -5959,7 +6148,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "vf" ;
             Text [ english_us ] = "FV" ;
             Text[ chinese_simplified ] = "fv";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "FV";
             Text[ japanese ] = "将来価値";
             Text[ chinese_traditional ] = "fv";
@@ -5971,6 +6160,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Gelecek deer";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "FV";
+            Text[ thai ] = "FV";
         };
         String 9 // Description of Parameter 4
         {
@@ -5989,7 +6179,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "es el valor futuro o saldo en efectivo que desea lograr despus de efectuar el ltimo pago." ;
             Text [ english_us ] = "Future value. The value (end value) to be attained after the final payment." ;
             Text[ chinese_simplified ] = "未来值。完成最后一次支付后达到的最终值。";
-            Text[ russian ] = " .  ( ),       .";
+            Text[ russian ] = " .  ( ),      .";
             Text[ polish ] = "Przysza warto. Warto kocowa, ktra ma zosta osignita po dokonaniu ostatniej patnoci.";
             Text[ japanese ] = "将来価値。投資の将来価値、または最後の支払いを行ったあとに残る現金の収支。";
             Text[ chinese_traditional ] = "未來值。完成最後一次支付後達到的最終值。";
@@ -6001,6 +6191,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Gelecek deer. Son deme yapldktan sonra elde edilmek istenen deer (son deer).";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor de futur. Valor (valor final) que s'ha d'aconseguir desprs de l'ltim pagament.";
+            Text[ thai ] = "ค่าของอนาคต ค่า (ค่าสุดท้าย) ที่ได้รับหลังจากการจ่ายเงินครั้งสุดท้าย";
         };
         String 10 // Name of Parameter 5
         {
@@ -6030,6 +6221,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Tip";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Tipus";
+            Text[ thai ] = "ชนิด";
         };
         String 11 // Description of Parameter 5
         {
@@ -6040,7 +6232,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Tipo di scadenza. 1 = all'inizio, 0 = alla fine del periodo." ;
             Text [ portuguese_brazilian ] = "F?lligkeit. F = 1 hei?t F?lligkeit am Anfang einer Periode, F = 0 am Ende." ;
             Text [ portuguese ] = " o vencimento dos pagamentos de juros. 1 significa no nicio do perodo, 0 no final." ;
-            Text [ finnish ] = "Tyyppi = 1 tarkoittaa kauden alkua ja = 0 kauden loppua." ;
+            Text [ finnish ] = "Tyyppi 1 tarkoittaa kauden alkua ja 0 kauden loppua." ;
             Text [ danish ] = "Forfaldstidspunkt. F = 1 betyder betaling ved periodens begyndelse, F = 0 betaling ved periodens slutning." ;
             Text [ french ] = "chance. Type=1 signifie chance au dbut d'une priode, type=0  la fin d'une priode." ;
             Text [ swedish ] = "Frfallotidpunkt. F = 1 betyder frfallotidpunkt i brjan av en period, F = 0 i slutet." ;
@@ -6048,7 +6240,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "es el vencimiento de los pagos, 1 es al comienzo de un perodo, 0 al final." ;
             Text [ english_us ] = "Type = 1 denotes due at the beginning of the period, = 0 at the end." ;
             Text[ chinese_simplified ] = "到期类型。 type = 1 表示在周期开始时到期,type= 0 表示在周期结束时到期。";
-            Text[ russian ] = "  (0 1), ,        (0)     (1).";
+            Text[ russian ] = " = 1 ,      , = 0 -   .";
             Text[ polish ] = "Warto 0 lub 1 oznaczajca sposb dokonywania patnoci (z dou lub z gry).";
             Text[ japanese ] = "支払期日。支払期日 = 1 は各期の期首、支払期日 = 0 は各期の期末。";
             Text[ chinese_traditional ] = "到期類型。 F = 1 表示在週期開始時到期﹐F = 0 表示在週期結束時到期。";
@@ -6060,6 +6252,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Vade. F = 1, vade dnem banda,  F = 0 ise dnem sonunda anlamna gelir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Tipus = 1 indica venciment al comenament del perode; = 0, al final.";
+            Text[ thai ] = "ชนิด = 1 แทนครบกำหนดงวดเริ่มต้น, = 0 งวดสุดท้าย";
         };
     };
      // -=*# Resource for function ZINS #*=-
@@ -6082,7 +6275,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Devuelve la tasa de inters por perodo de una anualidad." ;
             Text [ english_us ] = "Calculates the constant interest rate of an investment with regular payments." ;
             Text[ chinese_simplified ] = "计算一项贷款在定期偿还情况下的各期(恒定)利率。";
-            Text[ russian ] = "        .";
+            Text[ russian ] = "      .";
             Text[ polish ] = "Oblicza sta stop procentow inwestycji przy regularnej patnoci.";
             Text[ japanese ] = "定期支払いにおける投資の一定の利率を返します。";
             Text[ chinese_traditional ] = "計算一項定期償還的貸款的恆定利率。";
@@ -6094,6 +6287,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Dzenli demeleri olan bir yatrmn sabit faiz orann hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Calcula la taxa d'inters constant d'una inversi amb pagaments regulars.";
+            Text[ thai ] = "คำนวณอัตราดอกเบี้ยคงที่ของการลงทุนด้วยการจ่ายเงินแบบปกติ";
         };
         ExtraData =
         {
@@ -6109,7 +6303,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Numero rate" ;
             Text [ portuguese_brazilian ] = "ZZR" ;
             Text [ portuguese ] = "Nper" ;
-            Text [ finnish ] = "NPER" ;
+            Text [ finnish ] = "NJAKSO" ;
             Text [ danish ] = "NPER" ;
             Text [ french ] = "NPM" ;
             Text [ swedish ] = "Perioder" ;
@@ -6117,7 +6311,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "nper" ;
             Text [ english_us ] = "NPER" ;
             Text[ chinese_simplified ] = "nper";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "LICZBA.RAT";
             Text[ japanese ] = "全支払い期間";
             Text[ chinese_traditional ] = "nper";
@@ -6129,6 +6323,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "NPER";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "NPER";
+            Text[ thai ] = "NPER";
         };
         String 3 // Description of Parameter 1
         {
@@ -6139,7 +6334,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Numero totale dei periodi di pagamento in un'annualit." ;
             Text [ portuguese_brazilian ] = "Zahlungszeitraum. Die Gesamtanzahl der Perioden, in denen die Annuit?t (Rente) gezahlt wird." ;
             Text [ portuguese ] = " o nmero total de perodos de pagamento numa anuidade." ;
-            Text [ finnish ] = "Maksukausi. Maksukaudet, joiden aikana annuiteetti (elke) maksetaan." ;
+            Text [ finnish ] = "Maksukausi Maksukaudet, joiden aikana annuiteetti (elke) maksetaan." ;
             Text [ danish ] = "Ydelsesperioder. Det samlede antal ydelsesperioder i en annuitet." ;
             Text [ french ] = "Le nombre total de priodes de paiement de l'annuit." ;
             Text [ swedish ] = "Betalningsperiod. Det totala antalet perioder d annuiteten (pension) betalas." ;
@@ -6159,6 +6354,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Taksit says. Annite denen toplam dnem says.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Perode de pagament. Nombre total de perodes en qu es paga l'anualitat (pensi).";
+            Text[ thai ] = "งวดการจ่ายเงิน จำนวนงวดทั้งหมดในเงินรายปี (เงินบำเหน็จ) ที่จ่าย";
         };
         String 4 // Name of Parameter 2
         {
@@ -6168,7 +6364,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Rata" ;
             Text [ portuguese_brazilian ] = "RMZ" ;
             Text [ portuguese ] = "Pgto" ;
-            Text [ finnish ] = "PMT" ;
+            Text [ finnish ] = "MAKSU" ;
             Text [ danish ] = "YDELSE" ;
             Text [ french ] = "VPM" ;
             Text [ swedish ] = "Betalning" ;
@@ -6188,6 +6384,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Dzenli deme";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "PMT";
+            Text[ thai ] = "PMT";
         };
         String 5 // Description of Parameter 2
         {
@@ -6198,7 +6395,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Pagamento effettuato in ciascun periodo che non pu variare nel corso dell'annualit." ;
             Text [ portuguese_brazilian ] = "Regelm??ige Zahlung. Die konstante Annuit?t, die in jeder Periode gezahlt wird." ;
             Text [ portuguese ] = " o pagamento feito em cada perodo, mantendo-se constante durante a vigncia da anuidade." ;
-            Text [ finnish ] = "Snnlliset maksut. Kunakin kautena maksettava vakioannuiteetti." ;
+            Text [ finnish ] = "Snnlliset maksut Kunakin kautena maksettava vakioannuiteetti." ;
             Text [ danish ] = "Ydelse. Den konstante ydelse som betales hver periode og ikke kan ndres i annuitetens lbetid" ;
             Text [ french ] = "Paiement rgulier. L'annuit constante paye pour chaque priode." ;
             Text [ swedish ] = "Regelbunden betalning. Den konstanta annuiteten som betalas i varje period." ;
@@ -6206,7 +6403,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "es el pago que se efecta en cada perodo y que no puede cambiar durante la vida de la anualidad." ;
             Text [ english_us ] = "Regular payments. The constant annuity to be paid in each period." ;
             Text[ chinese_simplified ] = "分期支付额。在每个周期应支付的固定金额。";
-            Text[ russian ] = ",            .";
+            Text[ russian ] = "     .";
             Text[ polish ] = "Staa suma spaty dugu (obejmujca cz dugu i odsetki), ktra jest pacona regularnie w kadym okresie.";
             Text[ japanese ] = "定期支払額。 毎回の支払額を指定します。投資期間内に支払額を変更することはできません。";
             Text[ chinese_traditional ] = "分期支付。各期支付的恆定年金。";
@@ -6218,6 +6415,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Dzenli demeler. Her dnem denen sabit anniteler.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Pagaments regulars. Anualitat constant que s'ha de pagar en cada perode.";
+            Text[ thai ] = "การจ่ายเงินปกติ เงินรายปีคงที่ที่จ่ายในแต่ละงวด";
         };
         String 6 // Name of Parameter 3
         {
@@ -6227,7 +6425,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Valore attuale" ;
             Text [ portuguese_brazilian ] = "BW" ;
             Text [ portuguese ] = "VA" ;
-            Text [ finnish ] = "PV" ;
+            Text [ finnish ] = "NA" ;
             Text [ danish ] = "NV" ;
             Text [ french ] = "VA" ;
             Text [ swedish ] = "Nuvrde" ;
@@ -6235,7 +6433,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "va" ;
             Text [ english_us ] = "PV" ;
             Text[ chinese_simplified ] = "pv";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "PV";
             Text[ japanese ] = "現在価値";
             Text[ chinese_traditional ] = "pv";
@@ -6247,6 +6445,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Bugnk deer";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "PV";
+            Text[ thai ] = "PV";
         };
         String 7 // Description of Parameter 3
         {
@@ -6256,7 +6455,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Valore attuale di una serie di pagamenti." ;
             Text [ portuguese_brazilian ] = "Barwert. Der derzeitige Wert der Reihe von Zahlungen." ;
             Text [ portuguese ] = " o valor presente ou a quantia total actual correspondente a uma srie de pagamentos futuros." ;
-            Text [ finnish ] = "Nykyinen arvo. Maksusarjan nykyinen arvo" ;
+            Text [ finnish ] = "Nykyinen arvo Maksusarjan nykyinen arvo" ;
             Text [ danish ] = "Nutidsvrdi. Den vrdi en rkke ydelser er vrd nu." ;
             Text [ french ] = "Valeur actuelle = la valeur,  la date d'aujourd'hui, d'une srie de remboursements futurs." ;
             Text [ swedish ] = "Nuvarande vrde. Det nuvarande vrdet fr raden av betalningar." ;
@@ -6264,7 +6463,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "es el valor actual de la cantidad total de una serie de pagos futuros." ;
             Text [ english_us ] = "Present value. The current value of a series of payments" ;
             Text[ chinese_simplified ] = "现金值。或一系列未来支付的目前价值。";
-            Text[ russian ] = " :        .";
+            Text[ russian ] = "   .";
             Text[ polish ] = "Warto bieca dla serii przyszych patnoci.";
             Text[ japanese ] = "現在価値。 将来行われる一連の支払いを、現時点で一括払いした場合の合計金額。";
             Text[ chinese_traditional ] = "凈現值。或一系列未來支付的目前價值。";
@@ -6276,6 +6475,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Bugnk deer. deme dizisinin bugnk deerini verir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor actual. Valor actual d'una srie de pagaments";
+            Text[ thai ] = "ค่าปัจจุบัน ค่าปัจจุบันของลำดับการจ่ายเงิน";
         };
         String 8 // Name of Parameter 4
         {
@@ -6285,7 +6485,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Valore futuro" ;
             Text [ portuguese_brazilian ] = "ZW" ;
             Text [ portuguese ] = "VF" ;
-            Text [ finnish ] = "FV" ;
+            Text [ finnish ] = "TULEVA_ARVO" ;
             Text [ danish ] = "FV" ;
             Text [ french ] = "VC" ;
             Text [ swedish ] = "Slutvrde" ;
@@ -6293,7 +6493,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "vf" ;
             Text [ english_us ] = "FV" ;
             Text[ chinese_simplified ] = "fv";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "fv";
             Text[ japanese ] = "将来価値";
             Text[ chinese_traditional ] = "fv";
@@ -6305,6 +6505,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Gelecek deer";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "FV";
+            Text[ thai ] = "FV";
         };
         String 9 // Description of Parameter 4
         {
@@ -6315,7 +6516,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Valore finale che si desidera raggiungere dopo aver effettuato l'ultimo pagamento." ;
             Text [ portuguese_brazilian ] = "Zuk?ftiger Wert. Der Wert (Endwert), der nach der letzten Zahlung erreicht werden soll." ;
             Text [ portuguese ] = " o valor futuro ou um saldo de caixa obtido depois de efectuado o ltimo pagamento." ;
-            Text [ finnish ] = "Tuleva arvo. Viimeisen maksun jlkeinen arvo (loppuarvo)." ;
+            Text [ finnish ] = "Tuleva arvo Viimeisen maksun jlkeinen arvo (loppuarvo)" ;
             Text [ danish ] = "Fremtidsvrdi. Den vrdi eller den kassebalance, der nskes opnet, nr den sidste ydelse er betalt." ;
             Text [ french ] = "Valeur future (valeur capitalise) : le montant que vous souhaitez obtenir aprs le dernier paiement." ;
             Text [ swedish ] = "Framtida vrde. Vrdet (slutvrde) som skall uppns efter den sista betalningen." ;
@@ -6323,7 +6524,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "es el valor futuro o un saldo en efectivo que desea lograr despus de efectuar el ltimo pago." ;
             Text [ english_us ] = "Future value. The value (end value) to be attained after the final payment." ;
             Text[ chinese_simplified ] = "未来值。完成最后一次支付后达到的最终值。";
-            Text[ russian ] = "    ,      .";
+            Text[ russian ] = " ,      .";
             Text[ polish ] = "Przysza warto. Warto kocowa, ktra ma zosta osignita po dokonaniu ostatniej patnoci.";
             Text[ japanese ] = "投資の将来価値。最後の支払いを行ったあとに残る現金の収支を指定します。";
             Text[ chinese_traditional ] = "未來值。完成最後一次支付後達到的最終值。";
@@ -6335,6 +6536,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Gelecek deer. Son deme yapldktan sonra elde edilmek istenen deer (son deer).";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor de futur. Valor (valor final) que s'ha d'aconseguir desprs de l'ltim pagament.";
+            Text[ thai ] = "ค่าของอนาคต ค่า(ค่าสุดท้าย) ที่ได้รับหลังจากการจ่ายเงินครั้งสุดท้าย";
         };
         String 10 // Name of Parameter 5
         {
@@ -6364,6 +6566,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Tip";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Tipus";
+            Text[ thai ] = "ชนิด";
         };
         String 11 // Description of Parameter 5
         {
@@ -6374,7 +6577,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Tipo di scadenza dei pagamenti. 1 = all'inizio di un periodo, 0 = alla fine." ;
             Text [ portuguese_brazilian ] = "F?lligkeit. F = 1 hei?t F?lligkeit am Anfang einer Periode, F = 0 am Ende." ;
             Text [ portuguese ] = " o vencimento dos pagamentos de juros. 1 significa no nicio do perodo, 0 no final." ;
-            Text [ finnish ] = "Tyyppi = 1 tarkoittaa kauden alkua ja = 0 kauden loppua." ;
+            Text [ finnish ] = "Tyyppi 1 tarkoittaa kauden alkua ja 0 kauden loppua." ;
             Text [ danish ] = "Forfaldstidspunkt. F = 1 betyder betaling ved periodens begyndelse, F = 0 betaling ved periodens slutning." ;
             Text [ french ] = "chance. Type=1 signifie chance au dbut d'une priode, type=0  la fin d'une priode." ;
             Text [ swedish ] = "Frfallotidpunkt. F = 1 betyder frfallotidpunkt i brjan av en period, F = 0 i slutet." ;
@@ -6382,7 +6585,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "es el vencimiento de los pagos, 1 es al comienzo del perodo, 0 al final." ;
             Text [ english_us ] = "Type = 1 denotes due at the beginning of the period, = 0 at the end." ;
             Text[ chinese_simplified ] = "到期类型。 type = 1 表示在周期开始时到期,\ntype = 0 表示在周期结束时到期。";
-            Text[ russian ] = "  (0 1), ,        (0)     (1).";
+            Text[ russian ] = " = 1 ,      , = 0 -   .";
             Text[ polish ] = "Warto 0 lub 1 okrelajca sposb dokonywania patnoci ( z dou lub z gry).";
             Text[ japanese ] = "支払い期日。支払期日 = 1 各期の期首、支払期日 = 0 各期の期末。";
             Text[ chinese_traditional ] = "到期類型。 F = 1 表示在週期開始時到期﹐F = 0 表示在週期結束時到期。";
@@ -6394,6 +6597,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Vade. F = 1, vade dnem banda,  F = 0 ise dnem sonunda anlamna gelir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Tipus = 1 indica venciment al comenament del perode; = 0, al final.";
+            Text[ thai ] = "ชนิด = 1 แทนครบกำหนดงวดเริ่มต้น, = 0 งวดสุดท้าย";
         };
         String 12 // Name of Parameter 6
         {
@@ -6423,6 +6627,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Tahmini deer";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Estima";
+            Text[ thai ] = "คะเน";
         };
         String 13 // Description of Parameter 6
         {
@@ -6433,7 +6638,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Previsione del tasso di interesse futuro." ;
             Text [ portuguese_brazilian ] = "Sch?tzwert. Sch?tzwert des Zinses f? das iterative Berechnungsverfahren." ;
             Text [ portuguese ] = " um nmero que se estima estar prximo do resultado da taxa de retorno interna." ;
-            Text [ finnish ] = "Arvio:! Iteratiivisen laskentamenetelmn arvioitu korkoprosenttia." ;
+            Text [ finnish ] = "Arvio Iteratiivisen laskentamenetelmn arvioitu korkoprosenttia." ;
             Text [ danish ] = "Gt. Skn over renten for den iterative beregning." ;
             Text [ french ] = "La valeur estime quant au taux pour la mthode de calculation itrative." ;
             Text [ swedish ] = "Gissning. Rntans uppskattade vrde fr den iterativa berkningsmetoden." ;
@@ -6441,7 +6646,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "es su estimacin de la tasa de inters." ;
             Text [ english_us ] = "Guess. The estimate of the interest rate for the iterative calculating method." ;
             Text[ chinese_simplified ] = "估计值。采用近似计算法时的利率估计值。";
-            Text[ russian ] = "  .";
+            Text[ russian ] = "      .";
             Text[ polish ] = "Warto szacowana odsetek dla iteracyjnej metody kalkulacji.";
             Text[ japanese ] = "推定値。 利率がおよそどれくらいになるかを推定した値。";
             Text[ chinese_traditional ] = "估計值。用來近似計算法的利息估計值。";
@@ -6453,6 +6658,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Tahmini deer. zyineleme hesab iin faiz orannn balang deeri.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Estima. Estimaci de la taxa d'inters per al mtode de clcul iteratiu.";
+            Text[ thai ] = "คะเน อัตราดอกเบี้ยโดยประมาณสำหรับวิธีการคำนวณแบบทวนซ้ำ";
         };
     };
      // -=*# Resource for function ZINSZ #*=-
@@ -6467,7 +6673,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Interesse composto. Restituisce il pagamento di un periodo per un investimento sulla base di pagamenti periodici e interessi costanti." ;
             Text [ portuguese_brazilian ] = "Zinseszins. Berechnet den Zinsbetrag einer Periode f? eine Investition bei regelm??igen Zahlungen und konstantem Zinssatz." ;
             Text [ portuguese ] = "Devolve a quantia total de juros peridicos de um investimento a uma taxa de juros constante." ;
-            Text [ finnish ] = "Yhteiskorko. Laskee poman korkomaksun suuruuden kauden alalta snnllisten maksujen ja kiinten korkoprosentin mukaan." ;
+            Text [ finnish ] = "Yhteiskorko Laskee poman korkomaksun suuruuden kauden alalta snnllisten maksujen ja kiinten korkoprosentin mukaan." ;
             Text [ danish ] = "Rentes rente. Beregner renteydelsen i en periode for en investering ved konstante ydelser og konstant rentesats." ;
             Text [ french ] = "Calcule le montant des intrts d'un investissement pour une priode donne sur la base de paiements rguliers et d'un taux d'intrt constant." ;
             Text [ swedish ] = "Rnta p rnta. Berknar rntebeloppet i en period fr en investering vid regelbundna betalningar och konstant rntesats." ;
@@ -6487,6 +6693,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Bileik faiz. Dzenli demeli ve sabit faiz oranl yatrmn dnem faizini hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Inters compost. Calcula el pagament d'interessos del principal per a una inversi amb pagaments regulars i una taxa d'inters constant per a un perode donat.";
+            Text[ thai ] = "ดอกเบี้ยเชิงซ้อน คำนวณการจ่ายดอกเบี้ยบนหลักการลงทุนด้วยการจ่ายเงินแบบปกติและอัตราดอกเบี้ยคงที่สำหรับงวดที่ให้มา";
         };
         ExtraData =
         {
@@ -6510,7 +6717,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "tasa" ;
             Text [ english_us ] = "Rate" ;
             Text[ chinese_simplified ] = "rate";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "Odsetki";
             Text[ japanese ] = "利率";
             Text[ chinese_traditional ] = "rate";
@@ -6518,10 +6725,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Rente";
             Text[ chinese_simplified ] = "rate";
             Text[ greek ] = "rate";
-            Text[ korean ] = "이자";
+            Text[ korean ] = "이율";
             Text[ turkish ] = "Faiz";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Taxa";
+            Text[ thai ] = "อัตรา";
         };
         String 3 // Description of Parameter 1
         {
@@ -6531,7 +6739,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Tasso di interesse per periodo" ;
             Text [ portuguese_brazilian ] = "Der Zinssatz pro Periode." ;
             Text [ portuguese ] = " a taxa de juros peridica." ;
-            Text [ finnish ] = "Kausikohtainen korkoprosentti." ;
+            Text [ finnish ] = "Kausikohtainen korkoprosentti" ;
             Text [ danish ] = "Rentesatsen per periode." ;
             Text [ french ] = "Le taux d'intrt par priode." ;
             Text [ swedish ] = "Rntesatsen per period." ;
@@ -6539,7 +6747,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "es la tasa de inters por perodo." ;
             Text [ english_us ] = "The rate of interest per period." ;
             Text[ chinese_simplified ] = "每个周期的利率。";
-            Text[ russian ] = "   .";
+            Text[ russian ] = "   .";
             Text[ polish ] = "Stopa procentowa dla pojedynczego okresu.";
             Text[ japanese ] = "各期の利息。";
             Text[ chinese_traditional ] = "每個週期的利率。";
@@ -6551,6 +6759,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Dnem faiz oran.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Taxa d'inters per perode.";
+            Text[ thai ] = "อัตราดอกเบี้ยต่องวด";
         };
         String 4 // Name of Parameter 2
         {
@@ -6580,6 +6789,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "D";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Perode";
+            Text[ thai ] = "งวด";
         };
         String 5 // Description of Parameter 2
         {
@@ -6590,7 +6800,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "La durata per la quale si desidera calcolare gli interessi. 1 = per il primo periodo, Periodi = Numero rate significa per l'ultimo." ;
             Text [ portuguese_brazilian ] = "Periode. Die Periode, f? die die Zinseszinsen berechnet werden. P = 1 hei?t f? die erste Periode, P = ZZR f? die letzte." ;
             Text [ portuguese ] = " o perodo para o qual se calcula a amortizao. 1 indica o primeiro perodo, nper o ltimo." ;
-            Text [ finnish ] = "Kaudet! Kaudet, joiden yhteiskorko lasketaan.! P = 1 tarkoittaa ensimmist ja P = NPER viimeist kautta" ;
+            Text [ finnish ] = "Kaudet Kaudet, joiden yhteiskorko lasketaan. P = 1 tarkoittaa ensimmist ja P = NJAKSO viimeist kautta." ;
             Text [ danish ] = "Periode. Perioden som rentes renten beregnes for. P = 1 betyder for den frste periode, P = NPER for den sidste." ;
             Text [ french ] = "La priode pour laquelle vous souhaitez calculer les intrts. P = 1 pour la premire priode, P = NPM pour la dernire." ;
             Text [ swedish ] = "Period. Perioden som rntorna p rntor skall betalas fr. P = 1 betyder fr den frsta perioden och P = Perioder fr den sista." ;
@@ -6598,7 +6808,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "es el perodo para el que se desea calcular el inters, y deber estar entre 1 y el argumento nper." ;
             Text [ english_us ] = "Periods. The periods for which the compounded interest is to be calculated. P = 1 denotes for the first period, P = NPER for the last one." ;
             Text[ chinese_simplified ] = "周期数。要计算其利息金额的周期数。 per = 1 \n是第一个周期, per = nper 是最后一个周期。";
-            Text[ russian ] = ",     ,      1  .";
+            Text[ russian ] = ",     ,      1  .";
             Text[ polish ] = "Okres, dla ktrego maj zosta obliczone odsetki skadowe. 1 oznacza pierwszy okres, nper  - ostatni.";
             Text[ japanese ] = "期。金利支払額を求める期。期 = 1 は最初の期、期 = 全支払い期間は最後の期。";
             Text[ chinese_traditional ] = "週期。用於計算復利的週期數。 per = 1 是第一個週期﹐ \nper = nper 是最後一個週期。";
@@ -6610,6 +6820,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Dnem. Geri demenin hesapland dnem. P = 1 ilk dnem, P = NPER ise son dnemdir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Perodes. Perodes l'inters compost dels quals s'ha de calcular. P = 1 indica per al primer perode; P = NPER, per a l'ltim.";
+            Text[ thai ] = "งวด งวดในการคำนวณดอกเบี้ยเชิงซ้อน P = 1 แทนงวดแรก, P = NPER สำหรับงวดสุดท้าย";
         };
         String 6 // Name of Parameter 3
         {
@@ -6619,7 +6830,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Numero rate" ;
             Text [ portuguese_brazilian ] = "ZZR" ;
             Text [ portuguese ] = "Nper" ;
-            Text [ finnish ] = "NPER" ;
+            Text [ finnish ] = "NJAKSO" ;
             Text [ danish ] = "NPER" ;
             Text [ french ] = "NPM" ;
             Text [ swedish ] = "Perioder" ;
@@ -6627,7 +6838,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "nper" ;
             Text [ english_us ] = "NPER" ;
             Text[ chinese_simplified ] = "nper";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "LICZBA.RAT";
             Text[ japanese ] = "全支払い期間";
             Text[ chinese_traditional ] = "nper";
@@ -6639,6 +6850,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "NPER";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "NPER";
+            Text[ thai ] = "NPER";
         };
         String 7 // Description of Parameter 3
         {
@@ -6649,7 +6861,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Numero totale dei periodi di pagamento in un'annualit" ;
             Text [ portuguese_brazilian ] = "Zahlungszeitraum. Die Gesamtanzahl der Perioden, in denen die Annuit?t (Rente) gezahlt wird." ;
             Text [ portuguese ] = " o nmero total de perodos de pagamento numa anuidade." ;
-            Text [ finnish ] = "Maksukausi. Maksukaudet, joiden aikana annuiteetti (elke) maksetaan." ;
+            Text [ finnish ] = "Maksukausi Maksukaudet, joiden aikana annuiteetti (elke) maksetaan." ;
             Text [ danish ] = "Ydelsesperioder. Det samlede antal ydelsesperioder i en annuitet." ;
             Text [ french ] = "Le nombre total de priodes de paiement de l'annuit." ;
             Text [ swedish ] = "Betalningsperiod. Det totala antalet perioder d annuiteten (pension) betalas." ;
@@ -6669,6 +6881,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Taksit says. Annite denen toplam dnem says.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Perode de pagament. Nombre total de perodes en qu es paga l'anualitat (pensi).";
+            Text[ thai ] = "งวดการจ่ายเงิน จำนวนงวดทั้งหมดในเงินรายปี (เงินบำเหน็จ) ที่จ่าย ";
         };
         String 8 // Name of Parameter 4
         {
@@ -6678,7 +6891,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Valore attuale" ;
             Text [ portuguese_brazilian ] = "BW" ;
             Text [ portuguese ] = "VA" ;
-            Text [ finnish ] = "pv" ;
+            Text [ finnish ] = "na" ;
             Text [ danish ] = "NV" ;
             Text [ french ] = "VA" ;
             Text [ swedish ] = "Nuvrde" ;
@@ -6686,7 +6899,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "va" ;
             Text [ english_us ] = "pv" ;
             Text[ chinese_simplified ] = "pv";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "PV";
             Text[ japanese ] = "現在価値";
             Text[ chinese_traditional ] = "pv";
@@ -6697,7 +6910,8 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ korean ] = "pv";
             Text[ turkish ] = "Bugnk deer";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "PV";
+            Text[ catalan ] = "va";
+            Text[ thai ] = "pv";
         };
         String 9 // Description of Parameter 4
         {
@@ -6707,7 +6921,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Valore attuale di una serie di pagamenti" ;
             Text [ portuguese_brazilian ] = "Barwert. Der derzeitige Wert der Reihe von Zahlungen." ;
             Text [ portuguese ] = " o valor presente ou a quantia total actual correspondente a uma srie de pagamentos futuros." ;
-            Text [ finnish ] = "Nykyinen arvo. Maksusarjan nykyinen arvo" ;
+            Text [ finnish ] = "Nykyinen arvo Maksusarjan nykyinen arvo" ;
             Text [ danish ] = "Nutidsvrdi. Den vrdi en rkke ydelser er vrd nu." ;
             Text [ french ] = "Valeur actuelle = la valeur,  la date d'aujourd'hui, d'une srie de remboursements futurs." ;
             Text [ swedish ] = "Nuvarande vrde. Det nuvarande vrdet fr en rad betalningar." ;
@@ -6715,7 +6929,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "es el valor actual de la suma total de una serie de pagos futuros." ;
             Text [ english_us ] = "Present value. The current value of a series of payments" ;
             Text[ chinese_simplified ] = "现金值。或一系列未来支付的目前价值。";
-            Text[ russian ] = "          .";
+            Text[ russian ] = "   .";
             Text[ polish ] = "Warto bieca dla serii przyszych patnoci.";
             Text[ japanese ] = "現在価値。将来行われる一連の支払いを、現時点で一括払いした場合の合計金額。";
             Text[ chinese_traditional ] = "凈現值。或一系列未來支付的目前價值。";
@@ -6727,6 +6941,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Bugnk deer. deme dizisinin bugnk deerini verir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor actual. Valor actual d'una srie de pagaments.";
+            Text[ thai ] = "ค่าปัจจุบัน ค่าปัจจุบันของลำดับการจ่ายเงิน";
         };
         String 10 // Name of Parameter 5
         {
@@ -6736,7 +6951,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Valore futuro" ;
             Text [ portuguese_brazilian ] = "ZW" ;
             Text [ portuguese ] = "VF" ;
-            Text [ finnish ] = "FV" ;
+            Text [ finnish ] = "TULEVA_ARVO" ;
             Text [ danish ] = "FV" ;
             Text [ french ] = "VC" ;
             Text [ swedish ] = "Slutvrde" ;
@@ -6744,7 +6959,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "vf" ;
             Text [ english_us ] = "FV" ;
             Text[ chinese_simplified ] = "fv";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "fv";
             Text[ japanese ] = "将来価値";
             Text[ chinese_traditional ] = "fv";
@@ -6756,6 +6971,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Gelecek deer";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "FV";
+            Text[ thai ] = "FV";
         };
         String 11 // Description of Parameter 5
         {
@@ -6766,7 +6982,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Valore finale che si desidera raggiungere dopo aver effettuato l'ultimo pagamento." ;
             Text [ portuguese_brazilian ] = "Zuk?ftiger Wert. Der Wert (Endwert), der nach der letzten Zahlung erreicht werden soll." ;
             Text [ portuguese ] = " o valor futuro ou um saldo de caixa obtido depois de efectuado o ltimo pagamento." ;
-            Text [ finnish ] = "Tuleva arvo. Viimeisen maksun jlkeinen arvo (loppuarvo)." ;
+            Text [ finnish ] = "Tuleva arvo Viimeisen maksun jlkeinen arvo (loppuarvo)" ;
             Text [ danish ] = "Fremtidsvrdi. Den vrdi eller den kassebalance, der nskes opnet, nr den sidste ydelse er betalt." ;
             Text [ french ] = "Valeur future (valeur capitalise) : le montant que vous souhaitez obtenir aprs le dernier paiement." ;
             Text [ swedish ] = "Framtida vrde. Vrdet (slutvrde) som skall uppns efter den sista betalningen." ;
@@ -6774,7 +6990,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "es el valor futuro o saldo en efectivo que desea obtener despus de efectuar el ltimo pago." ;
             Text [ english_us ] = "Future value. The value (end value) to be attained after the final payment." ;
             Text[ chinese_simplified ] = "未来值。完成最后一次支付后达到的最终值。";
-            Text[ russian ] = "    ,      .";
+            Text[ russian ] = " ,      .";
             Text[ polish ] = "Przysza warto. Warto kocowa, ktra ma zosta osignita po dokonaniu ostatniej patnoci.";
             Text[ japanese ] = "将来価値。投資の将来価値、または最後の支払いを行ったあとに残る現金の収支。";
             Text[ chinese_traditional ] = "未來值。完成最後一次支付後達到的最終值。";
@@ -6786,6 +7002,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Gelecek deer. Son deme yapldktan sonra elde edilmek istenen deer (son deer).";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor de futur. Valor (valor final) que s'ha d'aconseguir desprs de l'ltim pagament.";
+            Text[ thai ] = "ค่าของอนาคต ค่า (ค่าสุดท้าย) ที่ได้รับหลังจากการจ่ายเงินครั้งสุดท้าย";
         };
         String 12 // Name of Parameter 6
         {
@@ -6815,6 +7032,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Tip";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Tipus";
+            Text[ thai ] = "ชนิด";
         };
         String 13 // Description of Parameter 6
         {
@@ -6825,7 +7043,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Tipo di scadenza dei pagamenti. 1 = all'inizio di un periodo, 0 = alla fine." ;
             Text [ portuguese_brazilian ] = "F?lligkeit. F = 1 hei?t F?lligkeit am Anfang einer Periode, F = 0 am Ende." ;
             Text [ portuguese ] = " o vencimento dos pagamentos de juros. 1 significa no nicio do perodo, 0 no final." ;
-            Text [ finnish ] = "Tyyppi = 1 tarkoittaa kauden alkua ja = 0 kauden loppua." ;
+            Text [ finnish ] = "Tyyppi 1 tarkoittaa kauden alkua ja 0 kauden loppua." ;
             Text [ danish ] = "Forfaldstidspunkt. F = 1 betyder betaling ved periodens begyndelse, F = 0 betaling ved periodens slutning." ;
             Text [ french ] = "chance. Type=1 signifie chance au dbut d'une priode, type=0  la fin d'une priode." ;
             Text [ swedish ] = "Frfallotidpunkt. F = 1 betyder frfallotidpunkt i brjan av en period, F = 0 i slutet." ;
@@ -6833,7 +7051,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "es el vencimiento de los pagos, 1 es al comienzo del perodo, 0 al final." ;
             Text [ english_us ] = "Type = 1 denotes due at the beginning of the period, = 0 at the end." ;
             Text[ chinese_simplified ] = "到期类型。 type = 1 表示在周期开始时到期,\ntype = 0 表示在周期结束时到期。";
-            Text[ russian ] = "  (0 1), ,        (0)     (1).";
+            Text[ russian ] = " = 1 ,      , = 0 -   .";
             Text[ polish ] = "Warto 0 lub 1 okrelajca sposb dokonywania patnoci (z dou lub z gry).";
             Text[ japanese ] = "支払期日。支払期日 = 1 各期の期首、支払期日 = 0 各期の期末。";
             Text[ chinese_traditional ] = "到期類型。 F = 1 表示在週期開始時到期﹐F = 0 表示是在週期結束時到期。";
@@ -6845,6 +7063,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Vade. F = 1, vade dnem banda,  F = 0 ise dnem sonunda anlamna gelir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Tipus = 1 indica venciment al comenament del perode; = 0, al final.";
+            Text[ thai ] = "ชนิด = 1 แทนงวดเริ่มต้น, = 0 งวดสุดท้าย";
         };
     };
      // -=*# Resource for function KAPZ #*=-
@@ -6879,6 +7098,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Geri deme. Dzenli demeler ve sabit faizli bir yatrm iin dnemi geri deme meblan hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Amortitzaci. Calcula la quantitat d'amortitzaci, per a un perode determinat, d'una inversi els pagaments de la qual es fan a intervals regulars i amb una taxa d'inters constant.";
+            Text[ thai ] = "การจ่ายเงินคืน คำนวณจำนวนงวดการจ่ายเงินคืนสำหรับการลงทุนด้วยการจ่ายเงินช่วงปกติและอัตราดอกเบี้ยคงที่";
         };
         ExtraData =
         {
@@ -6910,10 +7130,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Rente";
             Text[ chinese_simplified ] = "rate";
             Text[ greek ] = "Rate";
-            Text[ korean ] = "이자";
+            Text[ korean ] = "이율";
             Text[ turkish ] = "Faiz";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Taxa";
+            Text[ thai ] = "อัตรา";
         };
         String 3 // Description of Parameter 1
         {
@@ -6943,6 +7164,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Dnem faiz oran.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Taxa d'inters per perode.";
+            Text[ thai ] = "อัตราดอกเบี้ยต่องวด";
         };
         String 4 // Name of Parameter 2
         {
@@ -6972,6 +7194,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Dnem";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Perode";
+            Text[ thai ] = "งวด";
         };
         String 5 // Description of Parameter 2
         {
@@ -6982,7 +7205,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "La durata per la quale si desidera calcolare l'ammortamento .  1 = primo periodo, Numero rate = ultimo periodo." ;
             Text [ portuguese_brazilian ] = "Periode. Die Periode, f? die die Tilgung berechnet wird. P = 1 hei?t f? die erste Periode, P = ZZR f? die letzte." ;
             Text [ portuguese ] = " o perodo para o qual se calcula a amortizao. 1 indica o primeiro perodo, nper o ltimo." ;
-            Text [ finnish ] = "Kausi! Kausi, jonka maksut lasketaan. P = 1 tarkoittaa ensimmist ja P = NPER viimeist kautta" ;
+            Text [ finnish ] = "Kausi Kausi, jonka maksut lasketaan. P = 1 tarkoittaa ensimmist ja P = NPER viimeist kautta" ;
             Text [ danish ] = "Periode. Perioden som amortsationen beregnes for. P = 1 betyder for den frste periode, P = NPER for den sidste." ;
             Text [ french ] = "Priode pour laquelle vous souhaitez calculer le remboursement. P = 1 pour la premire priode, P = NPM pour la dernire." ;
             Text [ swedish ] = "Period. Perioden som amorteringen berknas fr. P = 1 betyder fr den frsta perioden, P = Perioder fr den sista." ;
@@ -6990,7 +7213,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Especifica el perodo para el cual se calcula la amortizacin. 1 indica el primer perodo, nper el ltimo." ;
             Text [ english_us ] = "Period. The period for which the repayments are to be calculated. Per = 1 denotes for the first period, P = NPER for the last" ;
             Text[ chinese_simplified ] = "周期数。计算分期付款的周期数。P = 1 表示第一个\n周期, P = NPER 表示最后一个周期。";
-            Text[ russian ] = ",    .       1 ( )   ( ).";
+            Text[ russian ] = ",    .       1 ( )   ( ).";
             Text[ polish ] = "Wyznacza okres, dla ktrego obliczona bdzie spata kredytu. 1 oznacza pierwszy okres, NPER - ostatni.";
             Text[ japanese ] = "期。元金支払額を求める期。期 = 1 は最初の期、期 = 全支払い期間は最後の期。";
             Text[ chinese_traditional ] = "週期數。計算分期付款的週期數。P = 1 表示第一個週期﹐ \nP = ZZR 表示最後一個週期。";
@@ -7002,6 +7225,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Dnem. Geri demenin hesapland dnem. P = 1 ilk dnem, P = NPER ise son dnemdir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Perode. Perode per al qual s'han de calcular les amortitzacions. Per = 1 indica per al primer perode; P = NPER, per a l'ltim.";
+            Text[ thai ] = "งวด งวดในการคำนวณการจ่ายเงินคืน Per = 1 แทนงวดแรก, P = NPER สำหรับงวดสุดท้าย";
         };
         String 6 // Name of Parameter 3
         {
@@ -7011,7 +7235,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Numero rate" ;
             Text [ portuguese_brazilian ] = "ZZR" ;
             Text [ portuguese ] = "Nper" ;
-            Text [ finnish ] = "NPER" ;
+            Text [ finnish ] = "NJAKSO" ;
             Text [ danish ] = "NPER" ;
             Text [ french ] = "NPM" ;
             Text [ swedish ] = "Perioder" ;
@@ -7031,6 +7255,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "NPER";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "NPER";
+            Text[ thai ] = "NPER";
         };
         String 7 // Description of Parameter 3
         {
@@ -7061,6 +7286,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Taksit says. Annite denen toplam dnem says.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Perode de pagament. Nombre total de perodes en qu es paga l'anualitat (pensi).";
+            Text[ thai ] = "งวดการจ่าย จำนวนงวดทั้งหมดในเงินรายปี (เงินบำเหน็จ) ที่จ่าย ";
         };
         String 8 // Name of Parameter 4
         {
@@ -7070,7 +7296,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Valore attuale" ;
             Text [ portuguese_brazilian ] = "BW" ;
             Text [ portuguese ] = "Va" ;
-            Text [ finnish ] = "PV" ;
+            Text [ finnish ] = "NA" ;
             Text [ danish ] = "NV" ;
             Text [ french ] = "VA" ;
             Text [ swedish ] = "Nuvrde" ;
@@ -7078,7 +7304,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Va" ;
             Text [ english_us ] = "PV" ;
             Text[ chinese_simplified ] = "pv";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "PV";
             Text[ japanese ] = "現在価値";
             Text[ chinese_traditional ] = "pv";
@@ -7090,6 +7316,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Bugnk deer";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "PV";
+            Text[ thai ] = "PV";
         };
         String 9 // Description of Parameter 4
         {
@@ -7107,7 +7334,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Es el valor actual de la cantidad total de una serie de pagos futuros." ;
             Text [ english_us ] = "The present value. The present value or the amount the annuity is currently worth." ;
             Text[ chinese_simplified ] = "现金值。或一系列未来支付的目前价值。";
-            Text[ russian ] = " :    .";
+            Text[ russian ] = " .    .";
             Text[ polish ] = "Warto bieca dla serii przyszych patnoci.";
             Text[ japanese ] = "現在価値。 将来行われる一連の支払いを、現時点で一括払いした場合の合計金額。";
             Text[ chinese_traditional ] = "凈現值。或一系列未來支付的目前價值。";
@@ -7119,6 +7346,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Bugnk deer. deme dizisinin bugnk deerini verir.Barwert.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor actual. Valor actual o la quantitat en qu l'anualitat est valorada actualment.";
+            Text[ thai ] = "ค่าปัจจุบัน ค่าปัจจุบันหรือจำนวนเงินรายปีที่มีค่าในปัจจุบัน";
         };
         String 10 // Name of Parameter 5
         {
@@ -7128,7 +7356,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Valore futuro" ;
             Text [ portuguese_brazilian ] = "ZW" ;
             Text [ portuguese ] = "Vf" ;
-            Text [ finnish ] = "FV" ;
+            Text [ finnish ] = "TULEVA_ARVO" ;
             Text [ danish ] = "FV" ;
             Text [ french ] = "VC" ;
             Text [ swedish ] = "Slutvrde" ;
@@ -7136,7 +7364,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Vf" ;
             Text [ english_us ] = "FV" ;
             Text[ chinese_simplified ] = "fv";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "fv";
             Text[ japanese ] = "将来価値";
             Text[ chinese_traditional ] = "fv";
@@ -7148,6 +7376,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Gelecek deer";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "FV";
+            Text[ thai ] = "FV";
         };
         String 11 // Description of Parameter 5
         {
@@ -7178,6 +7407,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Gelecek deer. Son deme yapldktan sonra elde edilmek istenen deer (son deer).";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor de futur. Valor aconseguit (valor final) desprs que s'hagi fet l'ltim pagament.";
+            Text[ thai ] = "ค่าของอนาคต ค่า (ค่าสุดท้าย) ที่ได้รับหลังจากทำการจ่ายเงินงวดสุดท้าย";
         };
         String 12 // Name of Parameter 6
         {
@@ -7207,6 +7437,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Tip";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Tipus";
+            Text[ thai ] = "ชนิด";
         };
         String 13 // Description of Parameter 6
         {
@@ -7217,7 +7448,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Tipo di scadenza dei pagamenti. 1 = all'inizio di un periodo, 0 = alla fine." ;
             Text [ portuguese_brazilian ] = "F?lligkeit. F = 1 hei?t F?lligkeit am Anfang einer Periode, F = 0 am Ende." ;
             Text [ portuguese ] = " o nmero 0 ou 1 e indica as datas de vencimento dos pagamentos. 1 = incio do perodo; 0 = fim do perodo." ;
-            Text [ finnish ] = "Tyyppi = 1 tarkoittaa kauden alkua ja = 0 kauden loppua." ;
+            Text [ finnish ] = "Tyyppi 1 tarkoittaa kauden alkua ja 0 kauden loppua." ;
             Text [ danish ] = "Forfaldstidspunkt. F = 1 betyder betaling ved periodens begyndelse, F = 0 betaling ved periodens slutning." ;
             Text [ french ] = "chance. Type=1 signifie chance au dbut d'une priode, type=0  la fin d'une priode." ;
             Text [ swedish ] = "Frfallotidpunkt. F = 1 betyder frfallotidpunkt i brjan av en period, F = 0 i slutet." ;
@@ -7225,7 +7456,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Es el vencimiento de los pagos, 1 es al comienzo del perodo y 0 al final." ;
             Text [ english_us ] = "Type = 1 denotes due at the beginning of the period, = 0 at the end." ;
             Text[ chinese_simplified ] = "到期类型。 type = 1 表示在一个周期的开始时到期,\ntype = 0 表示在一个周期结束时到期。";
-            Text[ russian ] = "  (0 1), ,        (0)     (1).";
+            Text[ russian ] = " = 1 ,      , = 0 -   .";
             Text[ polish ] = "Warto 0 lub 1 okrelajca sposb dokonywania patnoci; 1 oznacza patno na pocztku okresu, 0 - na kocu.";
             Text[ japanese ] = "支払期日。支払期日 = 1 は各期の期首、支払期日 = 0 は各期の期末。";
             Text[ chinese_traditional ] = "到期類型。 F = 1 表示在一個週期開始時到期﹐F = 0  表示在一個\n週期結束時到期。";
@@ -7237,6 +7468,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Vade. F = 1, vade dnem banda,  F = 0 ise dnem sonunda anlamna gelir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Tipus = 1 indica venciment al comenament del perode; = 0, al final.";
+            Text[ thai ] = "ชนิด = 1 แทนครบกำหนดงวดเริ่มต้น, = 0 งวดสุดท้าย";
         };
     };
      // -=*# Resource for function KUMKAPITAL #*=-
@@ -7251,7 +7483,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Capitale cumulativo. Calcola il valore totale dei pagamenti in un periodo per un investimento a interesse costante." ;
             Text [ portuguese_brazilian ] = "Kumuliertes Kapitel. Berechnet den Gesamtbetrag der Tilgungsanteile in einem Zeitraum f? eine Investition bei konstantem Zinssatz." ;
             Text [ portuguese ] = "Capital acumulado. Devolve o capital acumulado pago sobre um emprstimo entre incio_perodo e final_perodo a uma taxa de juro constante." ;
-            Text [ finnish ] = "Karttuva poma. Laskee sijoituksen kauden takaisinmaksuosuuksien kokonaissumman, kun korkoprosentti on kiinte." ;
+            Text [ finnish ] = "Karttuva poma Laskee sijoituksen kauden takaisinmaksuosuuksien kokonaissumman, kun korkoprosentti on kiinte." ;
             Text [ danish ] = "Akkumuleret hovedstol. Beregner den akkumulerede nedbringelse indenfor en periode for en investering ved konstant rentesats." ;
             Text [ french ] = "Capital cumul. Renvoie le montant total des remboursements d'une priode pour un investissement avec un taux d'intrt constant." ;
             Text [ swedish ] = "Kumulerat kapital. Berknar totalbeloppet av amorteringarna fr en investering under en tidsperiod med konstant rntesats." ;
@@ -7271,6 +7503,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Kmlatif sermaye. Sabit faiz oranl yatrmlar iin bir dnemdeki geri demelerin toplam meblan hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Capital acumulatiu. Calcula la quantitat total de la compartici d'amortitzaci en un perode per a una inversi amb una taxa d'inters constant.";
+            Text[ thai ] = "ทุนสะสม คำนวนจำนวนเงินทั้งหมดของส่วนแบ่งในการจ่ายเงินคืนในงวดสำหรับการลงทุนด้วยอัตราดอกเบี้ยคงที่";
         };
         ExtraData =
         {
@@ -7294,7 +7527,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Tasa" ;
             Text [ english_us ] = "Rate" ;
             Text[ chinese_simplified ] = "rate";
-            Text[ russian ] = "  ";
+            Text[ russian ] = "";
             Text[ polish ] = "Odsetki";
             Text[ japanese ] = "利率";
             Text[ chinese_traditional ] = "rate";
@@ -7302,10 +7535,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Rente";
             Text[ chinese_simplified ] = "rate";
             Text[ greek ] = "";
-            Text[ korean ] = "정수";
+            Text[ korean ] = "이율";
             Text[ turkish ] = "Faiz";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Taxa";
+            Text[ thai ] = "อัตรา";
         };
         String 3 // Description of Parameter 1
         {
@@ -7315,7 +7549,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Tasso di interesse per periodo." ;
             Text [ portuguese_brazilian ] = "Der Zinssatz pro Periode." ;
             Text [ portuguese ] = " a taxa de juros por perodo." ;
-            Text [ finnish ] = "Kausikohtainen korkoprosentti." ;
+            Text [ finnish ] = "Kausikohtainen korkoprosentti" ;
             Text [ danish ] = "Rentesatsen per periode." ;
             Text [ french ] = "Le taux d'intrt par priode." ;
             Text [ swedish ] = "Rntesatsen per period." ;
@@ -7335,6 +7569,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Dnem faiz oran.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Taxa d'inters per perode.";
+            Text[ thai ] = "อัตราดอกเบี้ยต่องวด";
         };
         String 4 // Name of Parameter 2
         {
@@ -7344,7 +7579,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Numero rate" ;
             Text [ portuguese_brazilian ] = "ZZR" ;
             Text [ portuguese ] = "Nper" ;
-            Text [ finnish ] = "NPER" ;
+            Text [ finnish ] = "NJAKSO" ;
             Text [ danish ] = "NPER" ;
             Text [ french ] = "NPM" ;
             Text [ swedish ] = "Perioder" ;
@@ -7352,7 +7587,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Nper" ;
             Text [ english_us ] = "NPER" ;
             Text[ chinese_simplified ] = "nper";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "LICZBA.RAT";
             Text[ japanese ] = "全支払い期間";
             Text[ chinese_traditional ] = "NPER";
@@ -7364,6 +7599,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "NPER";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "NPER";
+            Text[ thai ] = "NPER";
         };
         String 5 // Description of Parameter 2
         {
@@ -7374,7 +7610,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Numero complessivo dei periodi per i quali vengono effettuati pagamenti." ;
             Text [ portuguese_brazilian ] = "Zahlungszeitraum. Die Gesamtanzahl der Perioden, in denen die Annuit?t (Rente) gezahlt wird." ;
             Text [ portuguese ] = " o nmero total de perodos de pagamento numa anuidade." ;
-            Text [ finnish ] = "Maksukausi. Maksukaudet, joiden aikana annuiteetti (elke) maksetaan." ;
+            Text [ finnish ] = "Maksukausi Maksukaudet, joiden aikana annuiteetti (elke) maksetaan." ;
             Text [ danish ] = "Ydelsesperioder. Det samlede antal ydelsesperioder i en annuitet." ;
             Text [ french ] = "Le nombre total de priodes de paiement de l'annuit." ;
             Text [ swedish ] = "Betalningsperiod. Det totala antalet perioder d annuiteten (pension) betalas." ;
@@ -7394,6 +7630,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Taksit says. Annite denen toplam dnem says.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Perode de pagament. Nombre total de perodes en qu es paga l'anualitat (pensi).";
+            Text[ thai ] = "งวดการจ่ายเงิน จำนวนงวดทั้งหมดในเงินรายปี (เงินบำเหน็จ) ที่จ่าย";
         };
         String 6 // Name of Parameter 3
         {
@@ -7403,7 +7640,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Valore attuale" ;
             Text [ portuguese_brazilian ] = "BW" ;
             Text [ portuguese ] = "VA" ;
-            Text [ finnish ] = "PV" ;
+            Text [ finnish ] = "NA" ;
             Text [ danish ] = "NV" ;
             Text [ french ] = "VA" ;
             Text [ swedish ] = "Nuvrde" ;
@@ -7411,7 +7648,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Va" ;
             Text [ english_us ] = "PV" ;
             Text[ chinese_simplified ] = "pv";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "PV";
             Text[ japanese ] = "現在価値";
             Text[ chinese_traditional ] = "pv";
@@ -7423,6 +7660,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Bugnk deer";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "PV";
+            Text[ thai ] = "PV";
         };
         String 7 // Description of Parameter 3
         {
@@ -7432,7 +7670,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Valore attuale della serie di pagamenti." ;
             Text [ portuguese_brazilian ] = "Barwert. Der derzeitige Wert der Reihe von Zahlungen." ;
             Text [ portuguese ] = " o valor presente ou a quantia total actual correspondente a uma srie de pagamentos futuros." ;
-            Text [ finnish ] = "Nykyinen arvo. Annuiteetin nykyinen arvo." ;
+            Text [ finnish ] = "Nykyinen arvo Annuiteetin nykyinen arvo" ;
             Text [ danish ] = "Nutidsvrdi. Den vrdi en rkke ydelser er vrd nu." ;
             Text [ french ] = "Valeur actuelle = la valeur,  la date d'aujourd'hui, d'une srie de remboursements futurs." ;
             Text [ swedish ] = "Nuvarande vrde. Det nuvarande vrdet fr raden av betalningar." ;
@@ -7452,6 +7690,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Bugnk deer. deme dizisinin bugnk deerini verir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor actual. Valor actual o la quantitat en qu l'anualitat est valorada actualment.";
+            Text[ thai ] = "ค่าปัจจุบัน ค่าปัจจุบันหรือจำนวนเงินรายปีที่มีค่าในปัจจุบัน";
         };
         String 8 // Name of Parameter 4
         {
@@ -7469,7 +7708,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Per_inicial" ;
             Text [ english_us ] = "S" ;
             Text[ chinese_simplified ] = "start_period";
-            Text[ russian ] = "_";
+            Text[ russian ] = "";
             Text[ polish ] = "okres_pocz";
             Text[ japanese ] = "開始期";
             Text[ chinese_traditional ] = "Start_period";
@@ -7481,6 +7720,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "B";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "S";
+            Text[ thai ] = "S";
         };
         String 9 // Description of Parameter 4
         {
@@ -7491,7 +7731,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Periodo iniziale per il quale calcolare il deprezzamento. 1 = primo periodo." ;
             Text [ portuguese_brazilian ] = "Anfangsperiode. Die erste Periode, die ber?ksichtigt wird. A = 1 hei?t die allerserte Periode." ;
             Text [ portuguese ] = " o primeiro perodo no clculo. 1 representa o primeiro perodo." ;
-            Text [ finnish ] = "Aloituskausi. Ensimminen huomioitava kausi.! A = 1 tarkoittaa ensimmist kautta." ;
+            Text [ finnish ] = "Aloituskausi Ensimminen huomioitava kausi A = 1 tarkoittaa ensimmist kautta." ;
             Text [ danish ] = "Startperiode. Den frste periode i beregningen.Start = 1 betyder frste periode." ;
             Text [ french ] = "La premire priode incluse dans le calcul. Ces priodes sont numrotes  partir de 1." ;
             Text [ swedish ] = "Startperiod. Den frsta perioden fr berkningen. S = 1 betyder den allra frsta perioden." ;
@@ -7499,7 +7739,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Es el primer perodo en el clculo. 1 representa el primer perodo." ;
             Text [ english_us ] = "The start period. The first period to be taken into account. A = 1 denotes the very first period." ;
             Text[ chinese_simplified ] = "起始周期。第一个计算周期。 Start_period = 1 表示第一个周期。";
-            Text[ russian ] = "  ,   .  _  1,      .";
+            Text[ russian ] = "  ,   .   = 1,     .";
             Text[ polish ] = "Okres pocztkowy dla obliczania amortyzacji. A = 1 oznacza pierwszy okres.";
             Text[ japanese ] = "開始期。計算の対象となる最初の期で、開始期 = 1 は一番はじめの期。";
             Text[ chinese_traditional ] = "起始週期。第一個計算週期。 A = 1 表示第一個週期。";
@@ -7511,6 +7751,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "lk dnem. Dikkate alnan ilk dnem. A = 1 ilk dnem anlamna gelir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Perode inicial. Primer perode que s'ha de considerar. A = 1 indica el primer de tots els perodes.";
+            Text[ thai ] = "งวดเริ่มต้น งวดแรกที่คำนึงถึง A = 1 แทนงวดแรกสุด";
         };
         String 10 // Name of Parameter 5
         {
@@ -7528,7 +7769,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Per_final" ;
             Text [ english_us ] = "E" ;
             Text[ chinese_simplified ] = "end_period";
-            Text[ russian ] = "_";
+            Text[ russian ] = "";
             Text[ polish ] = "okres_koc";
             Text[ japanese ] = "終了期";
             Text[ chinese_traditional ] = "end_period";
@@ -7540,6 +7781,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "S";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "E";
+            Text[ thai ] = "สิ้นสุด";
         };
         String 11 // Description of Parameter 5
         {
@@ -7550,7 +7792,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Periodo finale. L'ultimo periodo del quale si tiene conto." ;
             Text [ portuguese_brazilian ] = "Endperiode. Die letzte Periode, die ber?ksichtigt wird." ;
             Text [ portuguese ] = " o ltimo perodo no clculo da amortizao." ;
-            Text [ finnish ] = "Viimeinen kausi. Viimeinen huomioitava kausi." ;
+            Text [ finnish ] = "Viimeinen kausi Viimeinen huomioitava kausi" ;
             Text [ danish ] = "Slutperiode. Den sidste periode i beregningen." ;
             Text [ french ] = "La dernire priode incluse dans le calcul." ;
             Text [ swedish ] = "Slutperiod. Den sista perioden fr berkningen." ;
@@ -7570,6 +7812,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Son dnem. Dikkate alnan son dnem.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Perode final. ltim perode que s'ha de considerar.";
+            Text[ thai ] = "งวดสุดท้าย งวดสุดท้ายที่คำนึงถึง";
         };
         String 12 // Name of Parameter 6
         {
@@ -7595,10 +7838,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "T";
             Text[ chinese_simplified ] = "type";
             Text[ greek ] = "";
-            Text[ korean ] = "형태";
+            Text[ korean ] = "유형";
             Text[ turkish ] = "Tip";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Tipus";
+            Text[ thai ] = "ชนิด";
         };
         String 13 // Description of Parameter 6
         {
@@ -7609,7 +7853,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Tipo di scadenza. 1 = scadenza all'inizio di un periodo, 0 = alla fine." ;
             Text [ portuguese_brazilian ] = "F?lligkeit. F = 1 hei?t F?lligkeit am Anfang einer Periode, F = 0 am Ende." ;
             Text [ portuguese ] = " o vencimento dos pagamentos de juros. 1 significa no nicio do perodo, 0 no final." ;
-            Text [ finnish ] = "Tyyppi = 1 tarkoittaa kauden alkua ja = 0 kauden loppua." ;
+            Text [ finnish ] = "Tyyppi 1 tarkoittaa kauden alkua ja 0 kauden loppua." ;
             Text [ danish ] = "Forfaldstidspunkt. F = 1 betyder betaling ved periodens begyndelse, F = 0 betaling ved periodens slutning." ;
             Text [ french ] = "chance. Type=1 signifie chance au dbut d'une priode, type=0  la fin d'une priode." ;
             Text [ swedish ] = "Frfallotidpunkt. F = 1 betyder frfallotidpunkt i brjan av en period, F = 0 i slutet." ;
@@ -7617,7 +7861,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Es el vencimiento de los pagos de intereses. 1 es al comienzo del perodo, 0 al final." ;
             Text [ english_us ] = "Type = 1 denotes due at the beginning of the period, = 0 at the end." ;
             Text[ chinese_simplified ] = "到期类型。type = 1 表示在周期的开始时到期,type = 0 \n表示在周期的结束时到期。";
-            Text[ russian ] = "  (0 1), ,        (0)     (1).";
+            Text[ russian ] = " = 1 ,      , = 0 -   .";
             Text[ polish ] = "Warto 0 lub 1 okrelajca sposb dokonywania patnoci. (1 oznacza patno na pocztku okresu, 0 - na kocu).";
             Text[ japanese ] = "支払期日。支払期日 = 1 は各期の期首、支払期日 = 0 各期の期末。";
             Text[ chinese_traditional ] = "到期類型。 F = 1 表示在週期的開始時到期﹐F = 0 表示在週期的結束時到期。";
@@ -7629,6 +7873,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Vade. F = 1, vade dnem banda,  F = 0 ise dnem sonunda anlamna gelir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Tipus = 1 indica venciment al comenament del perode; = 0, al final.";
+            Text[ thai ] = "ชนิด = 1 แทนครบกำหนดงวดเริ่มต้น, = 0 งวดสุดท้าย";
         };
     };
      // -=*# Resource for function KUMZINSZ #*=-
@@ -7643,7 +7888,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Interesse composto cumulativo. Fornisce l'ammontare totale degli interessi per periodo per un investimento a interesse costante." ;
             Text [ portuguese_brazilian ] = "Kumulierte Zinseszinsen. Berechnet den Gesamtbetrag der Zinsanteile in einem Zeitraum f? eine Investition bei konstantem Zinssatz." ;
             Text [ portuguese ] = "Juros acumulados compostos. Devolve a quantia total de juros peridicos de um investimento a uma taxa de juros constante." ;
-            Text [ finnish ] = "Kumulatiivinen yhteiskorko. Laskee sijoituksen kauden korkomaksujen kokonaissumman, kun korkoprosentti on kiinte." ;
+            Text [ finnish ] = "Kumulatiivinen yhteiskorko Laskee sijoituksen kauden korkomaksujen kokonaissumman, kun korkoprosentti on kiinte." ;
             Text [ danish ] = "Akkumuleret rentes rente. Beregner den akkumulerede rente indenfor en periode for en investering ved konstant rentesats." ;
             Text [ french ] = "Intrt cumul. Calcule le cumul des intrts pays entre deux priodes donnes pour un investissement de taux d'intrt constant." ;
             Text [ swedish ] = "Kumulerade rntor p rntor. Berknar det totala beloppet fr rnteandelarna i en tidsperiod fr en investering vid konstant rntesats." ;
@@ -7651,7 +7896,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Devuelve el inters acumulado pagado sobre un prstamo entre los argumentos per_inicial y per_final" ;
             Text [ english_us ] = "Cumulative compounded interest. Calculates the total amount of the interest share in a period for an investment with a constant interest rate." ;
             Text[ chinese_simplified ] = "累积复利。计算一笔固定利率贷款在一定时期内\n应偿还的利息总额。";
-            Text[ russian ] = "            .";
+            Text[ russian ] = "    .";
             Text[ polish ] = "Skumulowane odsetki skadane. Oblicza ogln sum odsetek w podanym okresie dla inwestycji przy staej stopie oprocentowania.";
             Text[ japanese ] = "複利計算での利息の累計。指定された期間に、貸付金に対して支払われる利息の累計を返します。";
             Text[ chinese_traditional ] = "累積複利。計算一筆固定利率貸款在一定時期內應償還的利息總額。";
@@ -7663,6 +7908,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Kmlatif bileik faiz. Sabit faiz oranl yatrmlar iin bir dnemdeki faiz paylarnn toplam meblan hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Inters compost acumulatiu. Calcula la quantitat total de la part d'inters d'un perode per a una inversi amb una taxa d'inters constant.";
+            Text[ thai ] = "ดอกเบี้ยเชิงซ้อนสะสม คำนวณจำนวนส่วนแบ่งดอกเบี้ยทั้งหมดในงวดเวลาหนึ่งสำหรับการลงทุนด้วยอัตราดอกเบี้ยคงที่";
         };
         ExtraData =
         {
@@ -7686,7 +7932,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Tasa" ;
             Text [ english_us ] = "Rate" ;
             Text[ chinese_simplified ] = "rate";
-            Text[ russian ] = "  ";
+            Text[ russian ] = "";
             Text[ polish ] = "Odsetki";
             Text[ japanese ] = "利率";
             Text[ chinese_traditional ] = "rate";
@@ -7694,10 +7940,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Rente";
             Text[ chinese_simplified ] = "rate";
             Text[ greek ] = "";
-            Text[ korean ] = "이자";
+            Text[ korean ] = "이율";
             Text[ turkish ] = "Faiz";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Taxa";
+            Text[ thai ] = "อัตรา";
         };
         String 3 // Description of Parameter 1
         {
@@ -7707,7 +7954,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Tasso di interesse per periodo." ;
             Text [ portuguese_brazilian ] = "Der Zinssatz pro Periode." ;
             Text [ portuguese ] = " a taxa de juros por perodo." ;
-            Text [ finnish ] = "Kausikohtainen korkoprosentti." ;
+            Text [ finnish ] = "Kausikohtainen korkoprosentti" ;
             Text [ danish ] = "Rentesatsen per periode." ;
             Text [ french ] = "Le taux d'intrt par priode." ;
             Text [ swedish ] = "Rntesats per period." ;
@@ -7727,6 +7974,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Dnem faiz oran.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Taxa d'inters per perode.";
+            Text[ thai ] = "อัตราดอกเบี้ยต่องวด";
         };
         String 4 // Name of Parameter 2
         {
@@ -7736,7 +7984,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Numero rate" ;
             Text [ portuguese_brazilian ] = "ZZR" ;
             Text [ portuguese ] = "Nper" ;
-            Text [ finnish ] = "NPER" ;
+            Text [ finnish ] = "NJAKSO" ;
             Text [ danish ] = "NPER" ;
             Text [ french ] = "NPM" ;
             Text [ swedish ] = "Perioder" ;
@@ -7744,7 +7992,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Nper" ;
             Text [ english_us ] = "NPER" ;
             Text[ chinese_simplified ] = "nper";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "LICZBA.RAT";
             Text[ japanese ] = "全支払い期間";
             Text[ chinese_traditional ] = "NPER";
@@ -7756,6 +8004,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "NPER";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "NPER";
+            Text[ thai ] = "NPER";
         };
         String 5 // Description of Parameter 2
         {
@@ -7766,7 +8015,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Il numero totale dei periodi di pagamento." ;
             Text [ portuguese_brazilian ] = "Zahlungszeitraum. Die Gesamtanzahl der Perioden, in denen die Annuit?t (Rente) gezahlt wird." ;
             Text [ portuguese ] = " o nmero total de perodos de pagamento numa anuidade." ;
-            Text [ finnish ] = "Maksukausi. Maksukaudet, joiden aikana annuiteetti (elke) maksetaan." ;
+            Text [ finnish ] = "Maksukausi Maksukaudet, joiden aikana annuiteetti (elke) maksetaan." ;
             Text [ danish ] = "Ydelsesperioder. Det samlede antal ydelsesperioder i en annuitet." ;
             Text [ french ] = "Le nombre total de priodes de paiement de l'annuit." ;
             Text [ swedish ] = "Betalningsperiod. Det totala antalet perioder d annuiteten (pension) betalas." ;
@@ -7786,6 +8035,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Taksit says. Annite denen toplam dnem says.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Perode de pagament. Nombre total de perodes en qu es paga l'anualitat (pensi).";
+            Text[ thai ] = "งวดการจ่ายเงิน จำนวนงวดทั้งหมดในเงินรายปี (เงินบำเหน็จ) ที่จ่าย";
         };
         String 6 // Name of Parameter 3
         {
@@ -7795,7 +8045,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Valore attuale" ;
             Text [ portuguese_brazilian ] = "BW" ;
             Text [ portuguese ] = "VA" ;
-            Text [ finnish ] = "pv" ;
+            Text [ finnish ] = "na" ;
             Text [ danish ] = "NV" ;
             Text [ french ] = "VA" ;
             Text [ swedish ] = "Nuvrde" ;
@@ -7803,7 +8053,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Va" ;
             Text [ english_us ] = "pv" ;
             Text[ chinese_simplified ] = "pv";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "PV";
             Text[ japanese ] = "現在価値";
             Text[ chinese_traditional ] = "PV";
@@ -7815,6 +8065,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Bugnk deer";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "pv";
+            Text[ thai ] = "pv";
         };
         String 7 // Description of Parameter 3
         {
@@ -7824,7 +8075,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Il valore attuale della serie di pagamenti" ;
             Text [ portuguese_brazilian ] = "Barwert. Der derzeitige Wert der Reihe von Zahlungen." ;
             Text [ portuguese ] = " o valor presente ou a quantia total actual correspondente a uma srie de pagamentos futuros." ;
-            Text [ finnish ] = "Nykyinen arvo. Annuiteetin nykyinen arvo." ;
+            Text [ finnish ] = "Nykyinen arvo Annuiteetin nykyinen arvo" ;
             Text [ danish ] = "Nutidsvrdi. Den vrdi en rkke ydelser er vrd nu." ;
             Text [ french ] = "Valeur actuelle = la valeur,  la date d'aujourd'hui, d'une srie de remboursements futurs." ;
             Text [ swedish ] = "Nuvarande vrde. Det nuvarande vrdet fr en rad betalningar." ;
@@ -7844,6 +8095,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Bugnk deer. deme dizisinin bugnk deerini verir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor actual. Valor actual o la quantitat en qu l'anualitat est valorada actualment.";
+            Text[ thai ] = "ค่าปัจจุบัน ค่าปัจจุบันหรือจำนวนเงินรายปที่มีค่าในปัจจุบัน";
         };
         String 8 // Name of Parameter 4
         {
@@ -7861,7 +8113,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Per_inicial" ;
             Text [ english_us ] = "S" ;
             Text[ chinese_simplified ] = "start_period";
-            Text[ russian ] = "_";
+            Text[ russian ] = "";
             Text[ polish ] = "okres_pocz";
             Text[ japanese ] = "開始期";
             Text[ chinese_traditional ] = "Start_period";
@@ -7873,6 +8125,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "B";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "S";
+            Text[ thai ] = "S";
         };
         String 9 // Description of Parameter 4
         {
@@ -7883,7 +8136,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Il periodo iniziale per il quale calcolare il deprezzamento. 1 = primo periodo." ;
             Text [ portuguese_brazilian ] = "Anfangsperiode. Die erste Periode, die ber?ksichtigt wird. A = 1 ist die allererste Periode." ;
             Text [ portuguese ] = " o primeiro perodo no clculo. 1 representa o primeiro perodo." ;
-            Text [ finnish ] = "Aloituskausi. Ensimminen huomioitava kausi.! A = 1 tarkoittaa ensimmist kautta." ;
+            Text [ finnish ] = "Aloituskausi Ensimminen huomioitava kausi A = 1 tarkoittaa ensimmist kautta." ;
             Text [ danish ] = "Startperiode. Den frste periode i beregningen.Start = 1 betyder frste periode." ;
             Text [ french ] = "La premire priode incluse dans le calcul. Ces priodes sont numrotes  partir de 1." ;
             Text [ swedish ] = "Startperiod. Den frsta perioden fr berkningen. A = 1 r den allra frsta perioden." ;
@@ -7903,6 +8156,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "lk dnem. Dikkate alnan ilk dnem. A = 1 ilk dnem anlamna gelir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Perode inicial. Primer perode que s'ha de considerar. A = 1 indica el primer de tots els perodes.";
+            Text[ thai ] = "งวดเริ่มต้น งวดแรกที่คำนึงถึง A = 1 แทนงวดแรกสุด";
         };
         String 10 // Name of Parameter 5
         {
@@ -7920,7 +8174,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Per_final" ;
             Text [ english_us ] = "E" ;
             Text[ chinese_simplified ] = "end_period";
-            Text[ russian ] = "_";
+            Text[ russian ] = "";
             Text[ polish ] = "okres_koc";
             Text[ japanese ] = "終了期";
             Text[ chinese_traditional ] = "End_period";
@@ -7932,6 +8186,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "S";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "E";
+            Text[ thai ] = "สิ้นสุด";
         };
         String 11 // Description of Parameter 5
         {
@@ -7942,11 +8197,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "L'ultimo periodo per il quale calcolare il deprezzamento." ;
             Text [ portuguese_brazilian ] = "Endperiode. Die letzte Periode, die ber?ksichtigt wird." ;
             Text [ portuguese ] = " o ltimo perodo do clculo." ;
-            Text [ finnish ] = "Viimeinen kausi. Viimeinen huomioitava kausi." ;
+            Text [ finnish ] = "Viimeinen kausi Viimeinen huomioitava kausi" ;
             Text [ danish ] = "Slutperiode. Den sidste periode i beregningen." ;
             Text [ french ] = "La dernire priode incluse dans le calcul." ;
             Text [ swedish ] = "Slutperiod. Den sista perioden fr berkningen." ;
-            Text [ dutch ] = "Einttermijn. De laatste termijn die in de berekening is opgenomen." ;
+            Text [ dutch ] = "Eindtermijn. De laatste termijn die in de berekening is opgenomen." ;
             Text [ spanish ] = "Es el perodo final del clculo." ;
             Text [ english_us ] = "The end period. The last period to be taken into account." ;
             Text[ chinese_simplified ] = "截止周期。最后一个计算周期。";
@@ -7955,13 +8210,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ japanese ] = "終了期。計算の対象となる最後の期。";
             Text[ chinese_traditional ] = "截止週期。最後一個計算週期。";
             Text[ arabic ] = "     .";
-            Text[ dutch ] = "Einttermijn. De laatste termijn die in de berekening is opgenomen.";
+            Text[ dutch ] = "Eindtermijn. De laatste termijn die in de berekening is opgenomen.";
             Text[ chinese_simplified ] = "截止周期。最后一个计算周期。";
             Text[ greek ] = " .       .";
             Text[ korean ] = "최종 시기. 고려해야 할 마지막 시기입니다.";
             Text[ turkish ] = "Son dnem. Dikkate alnan son dnem.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Perode final. L'ltim perode que s'ha de considerar.";
+            Text[ thai ] = "งวดสุดท้าย งวดสุดท้ายที่คำนึงถึง";
         };
         String 12 // Name of Parameter 6
         {
@@ -7991,6 +8247,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Tip";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Tipus";
+            Text[ thai ] = "ชนิด";
         };
         String 13 // Description of Parameter 6
         {
@@ -8001,7 +8258,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Tipo di scadenze dei pagamaenti. 1 = all'inizio del periodo, 0 = alla fine." ;
             Text [ portuguese_brazilian ] = "F?lligkeit. F = 1 hei?t F?lligkeit am Anfang einer Periode, F = 0 am Ende." ;
             Text [ portuguese ] = " o vencimento dos pagamentos de juros. 1 significa no nicio do perodo, 0 no final." ;
-            Text [ finnish ] = "Tyyppi = 1 tarkoittaa kauden alkua ja = 0 kauden loppua." ;
+            Text [ finnish ] = "Tyyppi 1 tarkoittaa kauden alkua ja 0 kauden loppua." ;
             Text [ danish ] = "Forfaldstidspunkt. F = 1 betyder betaling ved periodens begyndelse, F = 0 betaling ved periodens slutning." ;
             Text [ french ] = "chance. Type=1 signifie chance au dbut d'une priode, type=0  la fin d'une priode." ;
             Text [ swedish ] = "Frfallotidpunkt. F = 1 betyder frfallotidpunkt i brjan av en period, F = 0 i slutet." ;
@@ -8009,7 +8266,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Es el vencimiento de los pagos. 1 indica al principio del perodo, 0 al final." ;
             Text [ english_us ] = "Type = 1 denotes due at the beginning of the period, = 0 at the end." ;
             Text[ chinese_simplified ] = "到期类型。type = 1 表示在一个周期开始时到期。 \ntype = 0 则表示在一个周期结束时到期。";
-            Text[ russian ] = "  (0 1), ,        (0)     (1).";
+            Text[ russian ] = " = 1 ,      , = 0 -   .";
             Text[ polish ] = "Warto 0 lub 1 okrelajca sposb dokonywania patnoci. (1 oznacza patno na pocztku okresu, 0 - na kocu).";
             Text[ japanese ] = "支払期日。支払期日 = 1 は各期の期首、支払期日 = 0 は各期の期末。";
             Text[ chinese_traditional ] = "到期類型。F = 1 表示在一個週期開始時到期。 F = 0 則表示在一個週期結束時到期。";
@@ -8021,6 +8278,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Vade. F = 1, vade dnem banda,  F = 0 ise dnem sonunda anlamna gelir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Tipus = 1 indica venciment al comenament del perode; = 0, al final.";
+            Text[ thai ] = "ชนิด = 1 แทนครบกำหนดงวดเริ่มต้น, = 0 งวดสุดท้าย";
         };
     };
      // -=*# Resource for function DIA #*=-
@@ -8051,10 +8309,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Berekent de meetkundig-degressieve afschrijving voor een bepaalde termijn.";
             Text[ chinese_simplified ] = "计算指定期限内的算术递减型资产折旧额。";
             Text[ greek ] = "  -      .";
-            Text[ korean ] = "특정한 기간에 대한 산술적-체감 감가 상각액을 계산합니다";
+            Text[ korean ] = "특정한 기간에 대한 산술적 체감 감가 상각액을 계산합니다";
             Text[ turkish ] = "Belirli bir dnem iin aritmetik-azalan amortismann hesaplar";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Calcula el valor de disminuci aritmtica d'un b (depreciaci) per a un perode determinat.";
+            Text[ catalan ] = "Calcula el valor de disminuci aritmtica d'un b (depreciaci) per a un perode determinat.";
+            Text[ thai ] = "คำนวณค่าที่ลดลงแบบเลขคณิตของสินทรัพย์ (ค่าเสื่อมราคา) สำหรับงวดที่ระบุ";
         };
         ExtraData =
         {
@@ -8090,6 +8349,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Satnalma maliyeti";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Cost";
+            Text[ thai ] = "ต้นทุน";
         };
         String 3 // Description of Parameter 1
         {
@@ -8119,6 +8379,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Satnalma maliyeti. ktisadi maln satnalma maliyeti.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Costs d'adquisici. Cost inicial del b.";
+            Text[ thai ] = "ต้นทุนที่ได้รับมา ต้นทุนแรกเริ่มของสินทรัพย์";
         };
         String 4 // Name of Parameter 2
         {
@@ -8136,7 +8397,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Valor_residual" ;
             Text [ english_us ] = "Salvage" ;
             Text[ chinese_simplified ] = "salvage";
-            Text[ russian ] = "_";
+            Text[ russian ] = "_";
             Text[ polish ] = "Warto_odzysku";
             Text[ japanese ] = "残存価額";
             Text[ chinese_traditional ] = "salvage";
@@ -8148,6 +8409,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Kalan deer";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Salvament";
+            Text[ thai ] = "เงินชดเชย";
         };
         String 5 // Description of Parameter 2
         {
@@ -8165,7 +8427,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Valor residual. Es el valor al final de la amortizacin." ;
             Text [ english_us ] = "Salvage: The remaining value of the asset at the end of its life." ;
             Text[ chinese_simplified ] = "剩余值。使用年限终止时的剩余价值。";
-            Text[ russian ] = "     .";
+            Text[ russian ] = "     .";
             Text[ polish ] = "Warto kocowa po amortyzacji.";
             Text[ japanese ] = "残存価額。耐用年数が終了した時点での資産の価格。";
             Text[ chinese_traditional ] = "剩餘值。使用年限終止時的剩餘價值。";
@@ -8177,6 +8439,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Kalan deer. Varln mr tamamlandnda kalan deeri.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Salvament: valor restant del b al final de la seva vida.";
+            Text[ thai ] = "เงินชดเชย: ค่าของสินทรัพย์ที่เหลืออยู่ ณ จุดสิ้นสุดของอายุการใช้งานของมัน";
         };
         String 6 // Name of Parameter 3
         {
@@ -8206,6 +8469,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "mr";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Vida";
+            Text[ thai ] = "อายุการใช้งาน";
         };
         String 7 // Description of Parameter 3
         {
@@ -8224,7 +8488,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Es el nmero de perodos durante el cual se produce la amortizacin del bien (llamada tambin vida til del bien)." ;
             Text [ english_us ] = "Useful life. The number of periods in the useful life of the asset." ;
             Text[ chinese_simplified ] = "使用寿命。资产折旧期限。";
-            Text[ russian ] = " ,     (    ).";
+            Text[ russian ] = " .  ,    .";
             Text[ polish ] = "Liczba okresw, po ktrych rodek trway ulega amortyzacji.";
             Text[ japanese ] = "耐用年数。資産を使用できる年数、つまり償却の対象となる資産の寿命年数。";
             Text[ chinese_traditional ] = "使用年限。資產折舊期限。";
@@ -8236,6 +8500,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "mr. Varlk iin amortisman ayrlan dnem says.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Vida til. Nombre de perodes de la vida til del b.";
+            Text[ thai ] = "อายุการใช้งานที่ใช้ประโยชน์ จำนวนงวดในอายุการใช้งานที่ใช้ประโยชน์ของสินทรัพย์";
         };
         String 8 // Name of Parameter 4
         {
@@ -8265,6 +8530,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Dnem";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Perode";
+            Text[ thai ] = "งวด";
         };
         String 9 // Description of Parameter 4
         {
@@ -8274,7 +8540,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Periodo dell'ammortamento espresso nelle stesse unit di misura di Vita utile." ;
             Text [ portuguese_brazilian ] = "Zeitraum. Die Periode der Abschreibung in derselben Zeiteinheit wie die Nutzungsdauer." ;
             Text [ portuguese ] = " o perodo de amortizao que deseja calcular e tem a mesma unidade de tempo da vida til." ;
-            Text [ finnish ] = "Kausi! Poistokausi, jonka on oltava sama aikayksikk kuin mit kyttin mrityksess on kytetty." ;
+            Text [ finnish ] = "Kausi Poistokausi, jonka on oltava sama aikayksikk kuin mit kyttin mrityksess on kytetty." ;
             Text [ danish ] = "Tidsperiode. Afskrivningsperioden i samme tidsenhed som levetiden." ;
             Text [ french ] = "La priode d'amortissement ; doit tre exprime dans la mme unit que la dure." ;
             Text [ swedish ] = "Tidsperiod. Period fr avskrivning i samma tidsenhet som livslngden." ;
@@ -8282,7 +8548,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "es el perodo y se deben utilizar las mismas unidades que en el argumento vida." ;
             Text [ english_us ] = "Period. The depreciation period which must have the same time unit as average useful life." ;
             Text[ chinese_simplified ] = "折旧期数,其单位和使用年限的单位相同。";
-            Text[ russian ] = ".       ,    .";
+            Text[ russian ] = ".       ,    .";
             Text[ polish ] = "Okres amortyzacji musi zosta wyraony w tych samych jednostkach co argument czas_ycia.";
             Text[ japanese ] = "期間。減価償却費を求める期。";
             Text[ chinese_traditional ] = "折舊期數﹐其單位和使用年限的單位相同。";
@@ -8294,6 +8560,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Dnem. mr ile ayn zaman birimine sahip amortisman dnemi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Perode. Perode de depreciaci, que ha d'expressar-se en la mateixa unitat de temps que la vida til mitjana.";
+            Text[ thai ] = "งวด งวดของการเสื่อมราคาที่ต้องมีหน่วยเวลาเหมือนกับค่าเฉลี่ยอายุการใช้งานที่ใช้ประโยชน์";
         };
     };
      // -=*# Resource for function LIA #*=-
@@ -8315,7 +8582,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Devuelve la amortizacin lineal por perodo." ;
             Text [ english_us ] = "Calculates the linear depreciation per period." ;
             Text[ chinese_simplified ] = "计算各期的线性折旧额。";
-            Text[ russian ] = "       .";
+            Text[ russian ] = "       .";
             Text[ polish ] = "Oblicza warto amortyzacji rodka trwaego w podanym okresie metod liniow.";
             Text[ japanese ] = "定額法(Straight-line Method)を使用して、資産の1期当たりの減価償却費を返します。";
             Text[ chinese_traditional ] = "計算各期的線性折舊額。";
@@ -8327,6 +8594,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Beher dnemdeki dorusal amortisman hesaplar";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Calcula la depreciaci lineal per perode.";
+            Text[ thai ] = "คำนวณค่าเสื่อมราคาแบบเส้นตรงต่องวด";
         };
         ExtraData =
         {
@@ -8362,6 +8630,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Satnalma maliyeti";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Cost";
+            Text[ thai ] = "ต้นทุน";
         };
         String 3 // Description of Parameter 1
         {
@@ -8371,7 +8640,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Costo di acquisto del bene economico." ;
             Text [ portuguese_brazilian ] = "Anschaffungswert. Die Anschaffungskosten des Wirtschaftgutes." ;
             Text [ portuguese ] = " o custo de aquisio do activo." ;
-            Text [ finnish ] = "Hankintakustannus. Resurssin alkukustannukset." ;
+            Text [ finnish ] = "Hankintakustannus Resurssin alkukustannukset" ;
             Text [ danish ] = "Kbspris. Aktivets anskaffelsespris." ;
             Text [ french ] = "La valeur d'acquisition du bien." ;
             Text [ swedish ] = "Anskaffningsvrde. Anskaffningskostnaderna fr tillgngen." ;
@@ -8391,6 +8660,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Satnalma maliyeti. ktisadi varln satnalma maliyeti.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Cost d'adquisici. Cost inicial d'un b.";
+            Text[ thai ] = "ต้นทุนที่ได้รับมา ต้นทุนแรกเริ่มของสินทรัพย์";
         };
         String 4 // Name of Parameter 2
         {
@@ -8408,7 +8678,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Valor_residual" ;
             Text [ english_us ] = "Salvage" ;
             Text[ chinese_simplified ] = "salvage";
-            Text[ russian ] = "_";
+            Text[ russian ] = "_";
             Text[ polish ] = "Warto_odzysku";
             Text[ japanese ] = "残存価額";
             Text[ chinese_traditional ] = "salvage";
@@ -8420,6 +8690,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Kalan deer";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Salvament";
+            Text[ thai ] = "เงินชดเชย";
         };
         String 5 // Description of Parameter 2
         {
@@ -8437,7 +8708,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Valor residual. Es el valor al final de la amortizacin." ;
             Text [ english_us ] = "Salvage: The remaining value of the asset at the end of its life." ;
             Text[ chinese_simplified ] = "剩余值。使用年限终止时的剩余价值。";
-            Text[ russian ] = "     .";
+            Text[ russian ] = "     .";
             Text[ polish ] = "Warto kocowa po amortyzacji.";
             Text[ japanese ] = "残存価額。耐用年数が終了した時点での資産の価格。";
             Text[ chinese_traditional ] = "剩餘值。使用年限終止時的剩餘價值。";
@@ -8449,6 +8720,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Kalan deer. Varln mr tamamlandnda kalan deeri.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Salvament: valor restant del b al final de la seva vida.";
+            Text[ thai ] = "เงินชดเชย: ค่าของสินทรัพย์ที่เหลืออยู่ ณ จุดสิ้นสุดของอายุการใช้งานของมัน";
         };
         String 6 // Name of Parameter 3
         {
@@ -8478,6 +8750,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "mr";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Vida";
+            Text[ thai ] = "อายุการใช้งาน";
         };
         String 7 // Description of Parameter 3
         {
@@ -8488,7 +8761,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Vita utile di un bene o il numero di periodi in cui il bene viene ammortizzato." ;
             Text [ portuguese_brazilian ] = "Nutzungsdauer. Die Anzahl der Perioden, ?er die das Wirtschaftsgut abgeschrieben wird." ;
             Text [ portuguese ] = " o nmero de perodos de amortizao do activo." ;
-            Text [ finnish ] = "Hydyllinen kyttik. Resurssin kyttin hydyllisten jaksojen mr." ;
+            Text [ finnish ] = "Hydyllinen kyttik Resurssin kyttin hydyllisten jaksojen mr." ;
             Text [ danish ] = "Levetid. Antallet af perioder over hvilke aktivet afskrives." ;
             Text [ french ] = "La dure de vie utile du bien ou le nombre de priodes pendant lesquelles le bien est amorti." ;
             Text [ swedish ] = "Livslngd. Antalet perioder d tillgngen avskrivs." ;
@@ -8496,7 +8769,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Es el nmero de perodos durante los cuales ocurre la amortizacin del bien." ;
             Text [ english_us ] = "Useful life. The number of periods in the useful life of the asset." ;
             Text[ chinese_simplified ] = "使用期限。资产折旧期限。";
-            Text[ russian ] = " ,     (    ).";
+            Text[ russian ] = " .  ,    .";
             Text[ polish ] = "Liczba okresw, po ktrych rodek trway ulega amortyzacji.";
             Text[ japanese ] = "耐用年数。資産を使用できる年数、つまり償却の対象となる資産の寿命年数。";
             Text[ chinese_traditional ] = "使用年限。資產折舊期限。";
@@ -8508,6 +8781,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "mr. Varlk iin amortisman ayrlan dnem says.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Vida til. Nombre de perodes de la vida til del b.";
+            Text[ thai ] = "อายุการใช้งานที่ใช้ประโยชน์ จำนวนงวดในอายุการใช้งานที่ใช้ประโยชน์ของสินทรัพย์";
         };
     };
      // -=*# Resource for function GDA #*=-
@@ -8538,10 +8812,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Berekent de afschrijving van activa over een bepaalde termijn.";
             Text[ chinese_simplified ] = "计算指定期限内的算术递减型资产折旧额。";
             Text[ greek ] = "  -      .";
-            Text[ korean ] = "특정한 기간에 대한 산술적-체감 감가 상각액을 계산합니다";
+            Text[ korean ] = "특정한 기간에 대한 산술적 체감 감가 상각액을 계산합니다";
             Text[ turkish ] = "Belirli bir dnem iin aritmetik-azalan amortisman hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Calcula la depreciaci d'un b per a un perode determinat utilitzant el mtode de balan de doble disminuci o el factor de balan de disminuci.";
+            Text[ thai ] = "คำนวณค่าเสื่อมราคาของสินทรัพย์สำหรับการใช้งวดเฉพาะวิธีการสมดุลแบบลดลงคู่หรือปัจจัยการลดลงอย่างสมดุล";
         };
         ExtraData =
         {
@@ -8577,6 +8852,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Satnalma maliyeti";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Cost";
+            Text[ thai ] = "ต้นทุน";
         };
         String 3 // Description of Parameter 1
         {
@@ -8586,7 +8862,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Costo di acquisto del bene economico." ;
             Text [ portuguese_brazilian ] = "Anschaffungswert. Die Anschaffungskosten des Wirtschaftgutes." ;
             Text [ portuguese ] = " o valor inicial de aquisio do bem econmico." ;
-            Text [ finnish ] = "Hankintakustannukset. Resurssin alkukustannukset." ;
+            Text [ finnish ] = "Hankintakustannukset Resurssin alkukustannukset" ;
             Text [ danish ] = "Kbspris. Aktivets anskaffelsespris." ;
             Text [ french ] = "La valeur d'acquisition du bien." ;
             Text [ swedish ] = "Anskaffningsvrde. Anskaffningskostnaderna fr tillgngen." ;
@@ -8606,6 +8882,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Satnalma maliyeti. ktisadi maln satnalma maliyeti.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Costs d'adquisici. Cost inicial del b.";
+            Text[ thai ] = "ต้นทุนที่ได้รับมา ต้นทุนแรกเริ่มของสินทรัพย์";
         };
         String 4 // Name of Parameter 2
         {
@@ -8623,7 +8900,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Valor_residual" ;
             Text [ english_us ] = "Salvage" ;
             Text[ chinese_simplified ] = "salvage";
-            Text[ russian ] = "_";
+            Text[ russian ] = "_";
             Text[ polish ] = "Warto_odzysku";
             Text[ japanese ] = "残存価額";
             Text[ chinese_traditional ] = "salvage";
@@ -8635,6 +8912,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Kalan deer";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Salvament";
+            Text[ thai ] = "เงินชดเชย";
         };
         String 5 // Description of Parameter 2
         {
@@ -8652,7 +8930,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Valor residual. Es el valor al final de la amortizacin (a veces llamado valor residual del bien)." ;
             Text [ english_us ] = "Salvage: The remaining value of the asset at the end of its life." ;
             Text[ chinese_simplified ] = "剩余值。使用年限终止时的剩余价值。";
-            Text[ russian ] = "     .";
+            Text[ russian ] = "     .";
             Text[ polish ] = "Warto odzysku na koniec okresu amortyzacji.";
             Text[ japanese ] = "残存価額。耐用年数が終了した時点での資産の価格。";
             Text[ chinese_traditional ] = "剩餘值。使用年限終止時的剩餘價值。";
@@ -8664,6 +8942,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Kalan deer. Varln mr tamamlandnda kalan deeri.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Salvament: valor restant del b al final de la seva vida.";
+            Text[ thai ] = "เงินชดเชย: ค่าของสินทรัพย์ที่ยังเหลืออยู่ ณ จุดสิ้นสุดของอายุการใช้งาน";
         };
         String 6 // Name of Parameter 3
         {
@@ -8693,6 +8972,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "mr";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Vida";
+            Text[ thai ] = "อายุการใช้งาน";
         };
         String 7 // Description of Parameter 3
         {
@@ -8703,7 +8983,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Vita utile di un bene o il numero di periodi in cui il bene viene ammortizzato." ;
             Text [ portuguese_brazilian ] = "Nutzungsdauer. Die Anzahl der Perioden, ?er die das Wirtschaftsgut abgeschrieben wird." ;
             Text [ portuguese ] = " o nmero de perodos de amortizao do bem econmico." ;
-            Text [ finnish ] = "Hydyllinen kyttik. Resurssin kyttin hydyllisten jaksojen mr." ;
+            Text [ finnish ] = "Hydyllinen kyttik Resurssin kyttin hydyllisten jaksojen mr." ;
             Text [ danish ] = "Levetid. Antallet af perioder over hvilke aktivet afskrives." ;
             Text [ french ] = "La dure de vie utile du bien ou le nombre de priodes pendant lesquelles le bien est amorti." ;
             Text [ swedish ] = "Livslngd. Antalet perioder d tillgngen avskrivs." ;
@@ -8711,7 +8991,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Es el nmero de perodos durante los cuales se deprecia el bien (a veces llamado vida til del bien)." ;
             Text [ english_us ] = "Useful life. The number of periods in the useful life of the asset." ;
             Text[ chinese_simplified ] = "使用期限。资产折旧期限。";
-            Text[ russian ] = " ,     (    ).";
+            Text[ russian ] = " .  ,    .";
             Text[ polish ] = "Liczba okresw, po ktrych rodek trway ulega amortyzacji.";
             Text[ japanese ] = "耐用年数。資産を使用できる年数、つまり償却の対象となる資産の寿命年数。";
             Text[ chinese_traditional ] = "使用年限。資產折舊年限。";
@@ -8723,6 +9003,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "mr. Varlk iin amortisman ayrlan dnem says.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Vida til. Nombre de perodes de la vida til del b.";
+            Text[ thai ] = "อายุการใช้งานที่ใช้ประโยชน์ จำนวนช่วงในอายุที่ใช้ประโยชน์ของสินทรัพย์";
         };
         String 8 // Name of Parameter 4
         {
@@ -8752,6 +9033,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Dnem";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Perode";
+            Text[ thai ] = "งวด";
         };
         String 9 // Description of Parameter 4
         {
@@ -8761,7 +9043,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Durata dell'ammortamento espressa nelle stesse unit di misura di Vita utile." ;
             Text [ portuguese_brazilian ] = "Periode. Die Periode der Abschreibung in derselben Zeiteinheit wie die Nutzungsdauer." ;
             Text [ portuguese ] = " o perodo de amortizao que deseja calcular e tem a mesma unidade de tempo da vida til." ;
-            Text [ finnish ] = "Kausi! Poistokausi mritettyn samoina aikayksikkin kuin kyttik." ;
+            Text [ finnish ] = "Kausi Poistokausi mritettyn samoina aikayksikkin kuin kyttik." ;
             Text [ danish ] = "Periode. Afskrivningensperioden i samme tidsenhed som levetiden." ;
             Text [ french ] = "La priode pour laquelle vous voulez calculer l'amortissement, elle doit tre exprime dans la mme unit que la dure de vie du bien." ;
             Text [ swedish ] = "Period. Perioden fr avskrivning i samma tidsenhet som livslngden." ;
@@ -8781,6 +9063,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Dnem. mr ile ayn zaman birimine sahip amortisman dnemi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Perode. Perode de depreciaci, que ha d'expressar-se en la mateixa unitat de temps que l'entrada de vida til mitjana.";
+            Text[ thai ] = "งวด งวดค่าเสื่อมราคาในเวลาเดียวกับหน่วยเป็นรายการอายุการใช้งานที่ใช้ประโยชน์โดยเฉลี่ย";
         };
         String 10 // Name of Parameter 5
         {
@@ -8810,6 +9093,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Faktr";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Factor";
+            Text[ thai ] = "ปัจจัย";
         };
         String 11 // Description of Parameter 5
         {
@@ -8820,7 +9104,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Tasso al quale il valore residuo diminuisce. Se il Fattore = 2 l'ammortamento  a quote doppie." ;
             Text [ portuguese_brazilian ] = "Faktor. Faktor f? die Abnahme der Abschreibung. F = 2 hei?t Doppelraten-Abschreibung." ;
             Text [ portuguese ] = " a taxa de declnio do saldo." ;
-            Text [ finnish ] = "Kerroin: Saldon pienentymiskerroin. F = 2 tarkoittaa kaksinkertaista saldon pienentymist" ;
+            Text [ finnish ] = "Kerroin Saldon pienentymiskerroin F = 2 tarkoittaa kaksinkertaista saldon pienentymist" ;
             Text [ danish ] = "Faktor. Den sats, som saldoen aftager med. F= 2 betyder doppeltsaldometoden." ;
             Text [ french ] = "Le taux de l'amortissement dgressif. ; F = 2 est la mthode d'amortissement dgressif  taux double." ;
             Text [ swedish ] = "Faktor. Faktor fr minskning av avskrivning. F = 2 betyder dubbel avskrivning." ;
@@ -8828,7 +9112,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Es la tasa de declinacin del saldo." ;
             Text [ english_us ] = "Factor. The factor for balance decline. F = 2 means a double declining balance factor" ;
             Text[ chinese_simplified ] = "为用于折旧计算的余额递减因子。F=2 说明采用的是双倍余额递减折旧法。";
-            Text[ russian ] = "   .        .";
+            Text[ russian ] = "   .   ,      .";
             Text[ polish ] = "Warto sterujca szybkoci, z jak ma male saldo. 2 oznacza metod podwjnego spadku.";
             Text[ japanese ] = "率。減価償却率を指定します。率 = 2 にすると倍率逓減法で計算が行われます。";
             Text[ chinese_traditional ] = "為余額遞減折舊因子﹐F=2 是雙倍余額遞減折舊法。";
@@ -8836,10 +9120,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Factor. Factor voor de snelheid waarmee wordt afgeschreven. FA = 2 betekent afschrijving in dubbele termijnen.";
             Text[ chinese_simplified ] = "为用于折旧计算的余额递减因子。F=2 说明采用的是双倍余额递减折旧法。";
             Text[ greek ] = ".      . F = 2      .";
-            Text[ korean ] = "인수. 감가상각액 공제 인수. F = 2는 이중 감가 상각을 의미합니다.";
+            Text[ korean ] = "인수. 감가 상각액 공제 인수. F = 2는 이중 감가 상각을 의미합니다.";
             Text[ turkish ] = "Faktr. Amortisman bakiyesi faktr. F = 2, ift azalan bakiye amortisman anlamna gelir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Factor. Factor per a la disminuci del balan. F = 2 indica un factor de balan de doble disminuci";
+            Text[ thai ] = "ปัจจัย ปัจจัยสำหรับการลดลงอย่างสมดุล F = 2 หมายถึงปัจจัยการลดลงคู่แบบสมดุล";
         };
     };
      // -=*# Resource for function GDA2 #*=-
@@ -8862,7 +9147,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Devuelve la amortizacin de un bien durante un perodo especfico usando el mtodo de amortizacin de saldo fijo" ;
             Text [ english_us ] = "Returns the real depreciation of an asset for a specified period using the fixed-declining balance method." ;
             Text[ chinese_simplified ] = "计算指定期限内的几何递减型(固定余额递减法)资产折旧额。";
-            Text[ russian ] = "     ,     .";
+            Text[ russian ] = "      ,     .";
             Text[ polish ] = "Oblicza amortyzacj rodka trwaego za podany okres metod rwnomiernie malejcego salda.";
             Text[ japanese ] = "定率法(Fixed-declining Balance Method)を使用して、特定の期における資産の減価償却費を返します。";
             Text[ chinese_traditional ] = "用固定余額遞減法計算某一週期的資產折舊值。";
@@ -8874,6 +9159,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Belirli bir dnem iin geometrik-azalan amortisman hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna la depreciaci real d'un b per a un perode indicat utilitzant el mtode de balan de disminuci fixa.";
+            Text[ thai ] = "ส่งกลับค่าเสื่อมราคาจริงของสินทรัพย์สำหรับงวดที่ระบุใช้วิธีสมดุลแบบลดลงคงที่";
         };
         ExtraData =
         {
@@ -8897,7 +9183,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Costo" ;
             Text [ english_us ] = "Cost" ;
             Text[ chinese_simplified ] = "cost";
-            Text[ russian ] = "_";
+            Text[ russian ] = "";
             Text[ polish ] = "Cena_zakupu";
             Text[ japanese ] = "取得価額";
             Text[ chinese_traditional ] = "cost";
@@ -8909,6 +9195,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Satnalma maliyeti";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Cost";
+            Text[ thai ] = "ต้นทุน";
         };
         String 3 // Description of Parameter 1
         {
@@ -8918,7 +9205,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Costo di acquisto del bene economico." ;
             Text [ portuguese_brazilian ] = "Anschaffungswert. Die Anschaffungskosten des Wirtschaftgutes." ;
             Text [ portuguese ] = " o valor inicial de aquisio do bem econmico." ;
-            Text [ finnish ] = "Hankintakustannukset: Resurssin alkukustannukset." ;
+            Text [ finnish ] = "Hankintakustannukset: Resurssin alkukustannukset" ;
             Text [ danish ] = "Kbspris. Aktivets anskaffelsespris." ;
             Text [ french ] = "La valeur d'acquisition du bien." ;
             Text [ swedish ] = "Anskaffningsvrde. Anskaffningskostnader fr tillgngen." ;
@@ -8938,6 +9225,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Satnalma maliyeti. ktisadi varln satnalma maliyeti.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Costs d'adquisici: cost inicial del b.";
+            Text[ thai ] = "ต้นทุนที่ได้รับมา: ต้นทุนแรกเริ่มของสินทรัพย์";
         };
         String 4 // Name of Parameter 2
         {
@@ -8955,7 +9243,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Valor_residual" ;
             Text [ english_us ] = "Salvage" ;
             Text[ chinese_simplified ] = "salvage";
-            Text[ russian ] = "_";
+            Text[ russian ] = "_";
             Text[ polish ] = "Warto_odzysku";
             Text[ japanese ] = "残存価額";
             Text[ chinese_traditional ] = "salvage";
@@ -8967,6 +9255,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Kalan deer";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Salvament";
+            Text[ thai ] = "เงินชดเชย";
         };
         String 5 // Description of Parameter 2
         {
@@ -8984,7 +9273,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Valor residual. Es el valor al final de la amortizacin." ;
             Text [ english_us ] = "Salvage: The remaining value of the asset at the end of its life." ;
             Text[ chinese_simplified ] = "剩余价值。资产在折旧(使用)期限终止时的剩余价值。";
-            Text[ russian ] = "     .";
+            Text[ russian ] = "     .";
             Text[ polish ] = "Warto odzysku na koniec okresu amortyzacji.";
             Text[ japanese ] = "残存価額。耐用年数が終了した時点での資産の価格。";
             Text[ chinese_traditional ] = "剩餘值。使用年限終止時的資產剩餘值。";
@@ -8996,6 +9285,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Kalan deer. Varln mr tamamlandnda kalan deeri.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Salvament: valor restant del b al final de la seva vida.";
+            Text[ thai ] = "เงินชดเชย: ค่าที่เหลืออยู่ของสินทรัพย์ที่จุดสิ้นสุดของอายุการใช้งาน";
         };
         String 6 // Name of Parameter 3
         {
@@ -9025,6 +9315,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "mr";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Vida";
+            Text[ thai ] = "อายุการใช้งาน";
         };
         String 7 // Description of Parameter 3
         {
@@ -9035,7 +9326,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Vita utile di un bene o il numero di periodi in cui il bene viene ammortizzato." ;
             Text [ portuguese_brazilian ] = "Nutzungsdauer. Die Anzahl der Perioden, ?er die das Wirtschaftsgut abgeschrieben wird." ;
             Text [ portuguese ] = " o nmero de perodos de amortizao do bem econmico." ;
-            Text [ finnish ] = "Hydyllinen kyttik. Resurssin kyttin hydyllisten jaksojen mr." ;
+            Text [ finnish ] = "Hydyllinen kyttik Resurssin kyttin hydyllisten jaksojen mr." ;
             Text [ danish ] = "Levetid. Antallet af perioder over hvilke aktivet afskrives." ;
             Text [ french ] = "La dure de vie utile du bien ou le nombre de priodes pendant lesquelles le bien est amorti." ;
             Text [ swedish ] = "Livslngd. Antalet perioder d tillgngen avskrivs." ;
@@ -9043,7 +9334,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Es el nmero de perodos durante los cuales se deprecia el bien (tambin conocido como vida til del bien)." ;
             Text [ english_us ] = "Useful life. The number of periods in the useful life of the asset." ;
             Text[ chinese_simplified ] = "使用期限。资产折旧期限。";
-            Text[ russian ] = " ,     (    ).";
+            Text[ russian ] = " .  ,    .";
             Text[ polish ] = "Liczba okresw, o ktrych rodek trway ulega amortyzacji.";
             Text[ japanese ] = "耐用年数。資産を使用できる年数、つまり償却の対象となる資産の寿命年数。";
             Text[ chinese_traditional ] = "使用年限。資產折舊年限。";
@@ -9055,6 +9346,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "mr. Varlk iin amortisman ayrlan dnem says.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Vida til. Nombre de perodes de la vida til del b.";
+            Text[ thai ] = "อายุการใช้งานที่ใช้ประโยชน์ จำนวนงวดในอายุการใช้งานที่ใช้ประโยชน์ของสินทรัพย์";
         };
         String 8 // Name of Parameter 4
         {
@@ -9084,6 +9376,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Dnem";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Perode";
+            Text[ thai ] = "งวด";
         };
         String 9 // Description of Parameter 4
         {
@@ -9113,6 +9406,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Dnem. mr ile ayn zaman birimine sahip amortisman dnemi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Perodes: perode per al qual es calcula la depreciaci. La unitat de temps utilitzada per al perode ha de ser la mateixa que la utilitzada per a la vida til.";
+            Text[ thai ] = "งวด: งวดสำหรับคำนวณค่าเสื่อมราคา หน่วยเวลาที่ใช้สำหรับงวดต้องเหมือนกับอายุการใช้งานที่ใช้ประโยชน์";
         };
         String 10 // Name of Parameter 5
         {
@@ -9130,7 +9424,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Mes" ;
             Text [ english_us ] = "month" ;
             Text[ chinese_simplified ] = "month";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "Miesic";
             Text[ japanese ] = "月";
             Text[ chinese_traditional ] = "month";
@@ -9141,7 +9435,8 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ korean ] = "월";
             Text[ turkish ] = "Ay";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Mes";
+            Text[ catalan ] = "mes";
+            Text[ thai ] = "เดือน";
         };
         String 11 // Description of Parameter 5
         {
@@ -9167,10 +9462,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Maanden. Het aantal maanden in het eerste jaar van de afschrijving.";
             Text[ chinese_simplified ] = "月份数。进行折旧计算的首年月份数。";
             Text[ greek ] = ".         .";
-            Text[ korean ] = "월: 감가상각의 첫번째 년도의 개월수";
+            Text[ korean ] = "월: 감가 상각 시작 연도의 개월수";
             Text[ turkish ] = "Ay. lk amortisman ylndaki ay says.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Mesos: nombre de mesos en el primer any de depreciaci.";
+            Text[ thai ] = "เดือน: จำนวนเดือนในปีแรกของค่าเสื่อมราคา";
         };
     };
      // -=*# Resource for function VDB #*=-
@@ -9185,26 +9481,27 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Restituisce l'ammortamento decrescente per un determinato periodo (variable declining balance)." ;
             Text [ portuguese_brazilian ] = "Variable declining balance. Berechnet die arithmetisch-degressive Abschreibung f? eine bestimmte Periode" ;
             Text [ portuguese ] = "Devolve a amortizao aritmtica degressiva para um perodo determinado, usando o mtodo do balano decrescente duplo." ;
-            Text [ finnish ] = "Muuttujan laskeva saldo. Palauttaa laskevan arvon tietyn kauden poiston." ;
+            Text [ finnish ] = "Muuttujan laskeva saldo Palauttaa laskevan arvon tietyn kauden poiston." ;
             Text [ danish ] = "Variabel saldoafskrivning. Beregner afskrivningen p et aktiv i en angivet periode ved brug af dobbeltsaldometoden." ;
             Text [ french ] = "'Variable declining balance' - Calcule l'amortissement arithmtique dgressif pour une priode spcifie." ;
             Text [ swedish ] = "Berknar den aritmetisk-degressiva avskrivningen fr en bestmd period." ;
-            Text [ dutch ] = "Variable declining balance, Berekent de afschrijving van activa over een bepaalde periode met behulp van de \"variable declining balance\"-methode.." ;
+            Text [ dutch ] = "Variable declining balance. Berekent de afschrijving van activa over een bepaalde periode met behulp van de \"variable declining balance\"-methode.." ;
             Text [ spanish ] = "Devuelve la amortizacin de un bien, usando el mtodo de amortizacin por doble disminucin del saldo, durante un perodo especificado" ;
             Text [ english_us ] = "Variable declining balance. Returns the declining balance depreciation for a particular period." ;
             Text[ chinese_simplified ] = "可变余额递减法。计算指定期间内的算术递减型资产折旧额。";
-            Text[ russian ] = "               .";
+            Text[ russian ] = "            .";
             Text[ polish ] = "Oblicza amortyzacj rodka trwaego za podany okres lub jego cz metod malejcego salda.";
             Text[ japanese ] = "VDB は、Variable Declining Balance を表します。倍率逓減法または指定された方法を使用して、指定された期間における資産の減価償却費を返します。";
             Text[ chinese_traditional ] = "可變余額遞減法。計算指定期間內的資產折舊額。";
             Text[ arabic ] = "     ɡ     .";
-            Text[ dutch ] = "Variable declining balance, Berekent de afschrijving van activa over een bepaalde periode met behulp van de \"variable declining balance\"-methode..";
+            Text[ dutch ] = "Variable declining balance. Berekent de afschrijving van activa over een bepaalde periode met behulp van de \"variable declining balance\"-methode..";
             Text[ chinese_simplified ] = "可变余额递减法。计算指定期间内的算术递减型资产折旧额。";
             Text[ greek ] = "\"Variable declining balance\".   -    .";
-            Text[ korean ] = "수지하락 변수. 특정한 기간에 대한 산술적-체감 감가 상각액을 계산합니다.";
+            Text[ korean ] = "수지하락 변수. 특정한 기간에 대한 산술적 체감 감가 상각액을 계산합니다.";
             Text[ turkish ] = "Deiken azalan bakiye. Belirli bir dnem iin aritmetik-azalan amortisman hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Balan de disminuci variable. Torna la depreciaci de balan de disminuci per a un perode determinat.";
+            Text[ thai ] = "ความสมดุลของการลดลงของตัวแปร ส่งกลับค่าเสื่อมราคาที่สมดุลที่ลดลงสำหรับงวดเฉพาะ";
         };
         ExtraData =
         {
@@ -9228,7 +9525,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "costo" ;
             Text [ english_us ] = "Cost" ;
             Text[ chinese_simplified ] = "cost";
-            Text[ russian ] = "_";
+            Text[ russian ] = "";
             Text[ polish ] = "Cena_zakupu";
             Text[ japanese ] = "取得価額";
             Text[ chinese_traditional ] = "cost";
@@ -9236,10 +9533,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "AW";
             Text[ chinese_simplified ] = "cost";
             Text[ greek ] = "cost";
-            Text[ korean ] = "비용";
+            Text[ korean ] = "획득 비용";
             Text[ turkish ] = "Satnalma maliyeti";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Cost";
+            Text[ thai ] = "ต้นทุน";
         };
         String 3 // Description of Parameter 1
         {
@@ -9249,7 +9547,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Costo di acquisto del bene economico." ;
             Text [ portuguese_brazilian ] = "Anschaffungswert. Die Anschaffungskosten des Wirtschaftgutes." ;
             Text [ portuguese ] = " o custo inicial do activo." ;
-            Text [ finnish ] = "Kustannus. Resurssin alkukustannukset." ;
+            Text [ finnish ] = "Kustannus Resurssin alkukustannukset" ;
             Text [ danish ] = "Kbspris. Aktivets anskaffelsespris." ;
             Text [ french ] = "La valeur d'acquisition du bien." ;
             Text [ swedish ] = "Anskaffningsvrde. Anskaffningskostnaderna fr tillgngen." ;
@@ -9269,6 +9567,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Satnalma maliyeti. ktisadi varln satnalma maliyeti.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Cost. Cost inicial del b.";
+            Text[ thai ] = "ต้นทุน ต้นทุนแรกเริ่มของสินทรัพย์";
         };
         String 4 // Name of Parameter 2
         {
@@ -9286,7 +9585,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "valor_residual" ;
             Text [ english_us ] = "Salvage" ;
             Text[ chinese_simplified ] = "salvage";
-            Text[ russian ] = "_";
+            Text[ russian ] = "_";
             Text[ polish ] = "Warto_odzysku";
             Text[ japanese ] = "残存価額";
             Text[ chinese_traditional ] = "salvage";
@@ -9298,6 +9597,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Kalan deer";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Salvament";
+            Text[ thai ] = "เงินชดเชย";
         };
         String 5 // Description of Parameter 2
         {
@@ -9307,7 +9607,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Valore residuo del bene al termine della vita utile." ;
             Text [ portuguese_brazilian ] = "Restwert. Der verbleibende Wert am Ende der Nutzungsdauer." ;
             Text [ portuguese ] = " o valor do activo no fim da amortizao." ;
-            Text [ finnish ] = "Loppuarvo. Resurssin lopullinen arvo, kun resurssi on kulutettu loppuun." ;
+            Text [ finnish ] = "Loppuarvo Resurssin lopullinen arvo, kun resurssi on kulutettu loppuun." ;
             Text [ danish ] = "Restvrdi. Aktivets vrdi ved afskrivningens afslutning." ;
             Text [ french ] = "La valeur rsiduelle du bien au terme de l'amortissement." ;
             Text [ swedish ] = "Restvrde. Det resterande vrdet i slutet av livslngden." ;
@@ -9315,7 +9615,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Valor residual. Es el valor al final de la amortizacin." ;
             Text [ english_us ] = "Salvage. The salvage value of an asset at the end of its useful life." ;
             Text[ chinese_simplified ] = "剩余价值。资产在折旧(使用)期限终止时的剩余价值。";
-            Text[ russian ] = "     .";
+            Text[ russian ] = "     .";
             Text[ polish ] = "Odzysk: Warto kocowa po amortyzacji.";
             Text[ japanese ] = "残存価額。 耐用年数が終了した時点での資産の価格。";
             Text[ chinese_traditional ] = "剩餘值。使用年限終止時的資產剩餘值。";
@@ -9327,6 +9627,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Kalan deer. Varln mr tamamlandnda kalan deeri.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Salvament. Valor de salvament d'un b al final de la seva vida til.";
+            Text[ thai ] = "เงินชดเชย ค่าเงินชดเชยของสินทรัพย์ที่จุดสิ้นสุดของอายุการใช้งานที่ใช้ประโยชน์";
         };
         String 6 // Name of Parameter 3
         {
@@ -9344,7 +9645,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "vida" ;
             Text [ english_us ] = "Life" ;
             Text[ chinese_simplified ] = "life";
-            Text[ russian ] = "__";
+            Text[ russian ] = "_";
             Text[ polish ] = "okres_uytkowania";
             Text[ japanese ] = "耐用年数";
             Text[ chinese_traditional ] = "life";
@@ -9355,7 +9656,8 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ korean ] = "내구년한";
             Text[ turkish ] = "mr";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "vida";
+            Text[ catalan ] = "Vida";
+            Text[ thai ] = "อายุการใช้งาน";
         };
         String 7 // Description of Parameter 3
         {
@@ -9366,7 +9668,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Vita utile di un bene o il numero di periodi in cui il bene viene ammortizzato." ;
             Text [ portuguese_brazilian ] = "Nutzungsdauer. Die Anzahl der Perioden, ?er die das Wirtschaftsgut abgeschrieben wird." ;
             Text [ portuguese ] = " o nmero de perodos de amortizao do activo." ;
-            Text [ finnish ] = "Hydyllinen kyttik. Resurssin kyttin hydyllisten jaksojen mr." ;
+            Text [ finnish ] = "Hydyllinen kyttik Resurssin kyttin hydyllisten jaksojen mr." ;
             Text [ danish ] = "Levetid. Antallet af perioder over hvilke aktivet afskrives." ;
             Text [ french ] = "La dure de vie utile du bien ou le nombre de priodes pendant lesquelles le bien est amorti." ;
             Text [ swedish ] = "Livslngd. Antalet perioder d tillgngen avskrivs." ;
@@ -9374,7 +9676,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "es el nmero de perodos durante los que ocurre la amortizacin del bien (tambin conocido como vida til del bien)." ;
             Text [ english_us ] = "Useful life. The number of periods in the useful life of the asset." ;
             Text[ chinese_simplified ] = "使用期限。资产折旧期限。";
-            Text[ russian ] = " ,     (    )";
+            Text[ russian ] = " .  ,    .";
             Text[ polish ] = "Liczba okresw, po ktrych rodek trway ulega amortyzacji.";
             Text[ japanese ] = "耐用年数。 資産を使用できる年数、つまり償却の対象となる資産の寿命年数。";
             Text[ chinese_traditional ] = "使用年限。資產折舊年限。";
@@ -9386,6 +9688,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "mr. Varlk iin amortisman ayrlan dnem says.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Vida til. Nombre de perodes de la vida til del b.";
+            Text[ thai ] = "อายุการใช้งานที่ใช้ประโยชน์ จำนวนงวดในอายุการใช้งานที่ใช้ประโยชน์ของสินทรัพย์";
         };
         String 8 // Name of Parameter 4
         {
@@ -9415,6 +9718,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ language_user1 ] = " ";
             Text[ turkish ] = "B";
             Text[ catalan ] = "S";
+            Text[ thai ] = "S";
         };
         String 9 // Description of Parameter 4
         {
@@ -9424,7 +9728,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Primo periodo dell'ammortamento espresso nelle stesse unit di tempo di Vita utile." ;
             Text [ portuguese_brazilian ] = "Anfang. Die erste Periode der Abschreibung in derselben Zeiteinheit wie die Nutzungsdauer." ;
             Text [ portuguese ] = " o perodo inicial para o clculo da amortizao" ;
-            Text [ finnish ] = "Aloitus. Ensimminen poistokausi, jonka on oltava mritettyn samoina aikayksikkin kuin mit kyttin mrityksess on kytetty." ;
+            Text [ finnish ] = "Aloitus Ensimminen poistokausi, jonka on oltava mritettyn samoina aikayksikkin kuin mit kyttin mrityksess on kytetty." ;
             Text [ danish ] = "Start. Den frste afskrivningsperiode i samme tidsenhed som levetiden." ;
             Text [ french ] = "La premire priode de l'amortissement dans la mme unit que la dure." ;
             Text [ swedish ] = "Start. Den frsta perioden fr avskrivningen i samma tidsenhet som livslngden." ;
@@ -9444,6 +9748,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "lk dnem. mr ile ayn zaman birimine sahip ilk amortisman dnemi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Inici. Primer perode per a la depreciaci, que ha d'expressar-se en la mateixa unitat de temps que la vida til.";
+            Text[ thai ] = "เริ่มต้น งวดแรกสำหรับค่าเสื่อมราคาในหน่วยเวลาที่เหมือนกับอายุการใช้งานที่ใช้ประโยชน์";
         };
         String 10 // Name of Parameter 5
         {
@@ -9473,6 +9778,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "S";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "final";
+            Text[ thai ] = "สิ้นสุด";
         };
         String 11 // Description of Parameter 5
         {
@@ -9482,7 +9788,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Ultimo periodo dell'ammortamento espresso nelle stesse unit di misura di Vita utile." ;
             Text [ portuguese_brazilian ] = "Ende. Die letzte Periode der Abschreibung in derselben Zeiteinheit wie die Nutzungsdauer." ;
             Text [ portuguese ] = " o perodo final para o qual se deseja calcular a amortizao." ;
-            Text [ finnish ] = "Loppu! Viimeinen poistokausi, jonka aikamritys on sama kuin kyttin." ;
+            Text [ finnish ] = "Loppu Viimeinen poistokausi, jonka aikamritys on sama kuin kyttin." ;
             Text [ danish ] = "Slut. Den sidste afskrivningsperiode i samme tidsenhed som levetiden." ;
             Text [ french ] = "Reprsente la dernire priode de l'amortissement. L'unit de temps est identique  la priode d'utilisation." ;
             Text [ swedish ] = "Slut. Den sista perioden fr avskrivningen i samma tidsenhet som livslngden." ;
@@ -9502,6 +9808,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Son dnem. mr ile ayn zaman birimine sahip son amortisman dnemi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Final. ltim perode per a la depreciaci, utilitzant la mateixa unitat de temps que per a la vida til.";
+            Text[ thai ] = "สิ้นสุด งวดสุดท้ายของค่าเสื่อมราคาใช้หน่วยเวลาเดียวกับอายุการใช้งานที่ใช้ประโยชน์";
         };
         String 12 // Name of Parameter 6
         {
@@ -9530,7 +9837,8 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ korean ] = "FA";
             Text[ turkish ] = "Faktr";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "factor";
+            Text[ catalan ] = "Factor";
+            Text[ thai ] = "ปัจจัย";
         };
         String 13 // Description of Parameter 6
         {
@@ -9541,7 +9849,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Tasso di diminuzione delle quote proporzionali ai valori residui." ;
             Text [ portuguese_brazilian ] = "Faktor. Faktor f? die Abnahme der Abschreibung. F = 2 hei?t Doppelraten-Abschreibung." ;
             Text [ portuguese ] = " a taxa de amortizao degressiva." ;
-            Text [ finnish ] = "Kerroin: Poiston vhennyskerroin. F = 2 tarkoittaa kaksinkertaista poistonopeutta." ;
+            Text [ finnish ] = "Kerroin Poiston vhennyskerroin F = 2 tarkoittaa kaksinkertaista poistonopeutta." ;
             Text [ danish ] = "Faktor. Den sats som saldoen aftager med. F= 2 betyder doppeltsaldometoden." ;
             Text [ french ] = "Le taux de l'amortissement dgressif. F = 2 signifie amortissement dgressif  taux double." ;
             Text [ swedish ] = "Faktor. Faktor fr minskningen av avskrivningen. F = 2 betyder dubbel avskrivning." ;
@@ -9549,7 +9857,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "es la tasa a la que diminuye el saldo." ;
             Text [ english_us ] = "Factor. The factor for the reduction of the depreciation. F = 2 denotes double rate depreciation." ;
             Text[ chinese_simplified ] = "余额递减折旧因子,factor=2 表示采用双倍余额递减折旧法。";
-            Text[ russian ] = "   .        .";
+            Text[ russian ] = ".    .   ,      .";
             Text[ polish ] = "Warto sterujca szybkoci, z jak ma male saldo. Warto 2 oznacza metod podwjnego spadku.";
             Text[ japanese ] = "率。減価償却率。率 = 2 は倍率逓減法を表します。";
             Text[ chinese_traditional ] = "余額遞減折舊因子﹐F=2 是雙倍余額遞減折舊法。";
@@ -9561,6 +9869,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Faktr. Amortisman azalma faktr. F = 2, ift azalan bakiyeli amortisman anlamna gelir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Factor. Factor per a la reducci de la depreciaci. F = 2 indica la depreciaci de doble taxa.";
+            Text[ thai ] = "ปัจจัย ปัจจัยสำหรับการลดลงของค่าเสื่อมราคา F = 2 แทนค่าเสื่อมราคาอัตราสองเท่า่";
         };
         String 14 // Name of Parameter 7
         {
@@ -9578,7 +9887,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "sin_cambios" ;
             Text [ english_us ] = "Type" ;
             Text[ chinese_simplified ] = "no_switch";
-            Text[ russian ] = "_";
+            Text[ russian ] = "";
             Text[ polish ] = "bez_przeczenia";
             Text[ japanese ] = "切り替えなし";
             Text[ chinese_traditional ] = "no_switch";
@@ -9590,6 +9899,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Tr";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Tipus";
+            Text[ thai ] = "ชนิด";
         };
         String 15 // Description of Parameter 7
         {
@@ -9608,7 +9918,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "es un valor lgico, 1 indica que se deber cambiar al mtodo directo de amortizacin, 0 significa sin cambios." ;
             Text [ english_us ] = "Do not alter. Type = 1 denotes switch to linear depreciation, type = 0 do not switch." ;
             Text[ chinese_simplified ] = "no_switch=1 表示转换至直线式折旧法, no_switch= 0 表示不转换。";
-            Text[ russian ] = " = 1     .  = 0   .";
+            Text[ russian ] = " .  = 1     .  = 0   .";
             Text[ polish ] = "Nie zmieniaj. Typ 1 oznacza przeczenie na odpis na amortyzacj liniow, typ 0 oznacza brak przeczania.";
             Text[ japanese ] = "切り替えなし。切り替えなし = 1 は定額法への切り替えが行われ、切り替えなし = 0 は切り替えが行われません。";
             Text[ chinese_traditional ] = "是個邏輯值。數值 = 1 表示切換至直線式折舊法﹐ 數值 = 0 表示不用切換。";
@@ -9616,10 +9926,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Niet wisselen. Wissel = 1 betekent omschakelen op lineaire afschrijving, Wissel = 0 betekent niet omschakelen.";
             Text[ chinese_simplified ] = "no_switch=1 表示转换至直线式折旧法, no_switch= 0 表示不转换。";
             Text[ greek ] = "   .  = 1     ,  = 0   .";
-            Text[ korean ] = "변경하지 말것. 형식=1은 1차 감가상각으로 전환하는 것을 나타내며 형식=0은 전환하지 않음을 나타냅니다.";
+            Text[ korean ] = "바꾸지 말것. 형식=1은 1차 감가상각으로 전환하는 것을 나타내며 형식=0은 전환하지 않음을 나타냅니다.";
             Text[ turkish ] = "Deitirmeyin. Tr = 1, dorusal amortismana gei, tr = 0 ise gei yok anlamna gelir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "No ho canvis. Tipus = 1 indica commutaci a depreciaci lineal; tipus = 0, sense aquesta commutaci.";
+            Text[ thai ] = "ห้ามเปลี่ยน ชนิด = 1 แทนสลับไปยังค่าเสื่อมราคาแบบเส้นตรง, ชนิด = 0 ห้ามสลับ";
         };
     };
      // -=*# Resource for function EFFEKTIV #*=-
@@ -9654,6 +9965,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Nominal faiz oran iin yllk efektif faiz orann hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Calcula la taxa d'inters neta anual per a una taxa d'inters nominal.";
+            Text[ thai ] = "คำนวณอัตราดอกเบี้ยสุทธิประจำปีสำหรับอัตราดอกเบี้ยน้อยนิด";
         };
         ExtraData =
         {
@@ -9689,6 +10001,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "NOM";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "NOM";
+            Text[ thai ] = "NOM";
         };
         String 3 // Description of Parameter 1
         {
@@ -9718,6 +10031,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Nominal faiz oran";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Inters nominal";
+            Text[ thai ] = "ดอกเบี้ยน้อยนิด";
         };
         String 4 // Name of Parameter 2
         {
@@ -9735,7 +10049,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Periodo" ;
             Text [ english_us ] = "P" ;
             Text[ chinese_simplified ] = "p";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "Okres";
             Text[ japanese ] = "期間";
             Text[ chinese_traditional ] = "P";
@@ -9747,6 +10061,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Dnem";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "P";
+            Text[ thai ] = "งวด";
         };
         String 5 // Description of Parameter 2
         {
@@ -9756,7 +10071,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Numero dei periodi dei pagamenti d'interessi in un'annualit." ;
             Text [ portuguese_brazilian ] = "Perioden. Die Anzahl der Zinszahlungen pro Jahr." ;
             Text [ portuguese ] = " o nmero de pagamentos de juros por ano." ;
-            Text [ finnish ] = "Kaudet! Korkomaksujen mr vuodessa." ;
+            Text [ finnish ] = "Kaudet Korkomaksujen mr vuodessa." ;
             Text [ danish ] = "Perioder. Antallet af renteydelsesperioder per r." ;
             Text [ french ] = "Priodes. Le nombre de paiements d'intrts par an." ;
             Text [ swedish ] = "Perioder. Antalet rntebetalningar per r." ;
@@ -9764,7 +10079,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "es el nmero de pagos de inters compuesto por ao." ;
             Text [ english_us ] = "Periods. The number of interest payments per year." ;
             Text[ chinese_simplified ] = "每年支付利息的次数。";
-            Text[ russian ] = "    .";
+            Text[ russian ] = ".       .";
             Text[ polish ] = "Okresy. Liczba patnoci odsetek w roku.";
             Text[ japanese ] = "期間。1年当たりの複利計算回数。";
             Text[ chinese_traditional ] = "每年支付利息的次數。";
@@ -9772,10 +10087,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Termijnen. Het aantal rentebetalingen per jaar.";
             Text[ chinese_simplified ] = "每年支付利息的次数。";
             Text[ greek ] = ".       .";
-            Text[ korean ] = "기간. 년간 이자 지불 횟수";
+            Text[ korean ] = "기간. 연간 이자 지불 횟수";
             Text[ turkish ] = "Dnem. Yllk faiz demeleri says.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Perodes. Nombre de pagament d'inters per any.";
+            Text[ thai ] = "งวด จำนวนการจ่ายดอกเบี้ยต่อปี";
         };
     };
      // -=*# Resource for function NOMINAL #*=-
@@ -9806,10 +10122,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Berekent de nominale jaarlijkse rente op basis van het effectieve rentepercentage.";
             Text[ chinese_simplified ] = "计算以实际利率为基础的年名义利率。";
             Text[ greek ] = "       .";
-            Text[ korean ] = "실 이자율에 대한 연간 명목 이자율 산출";
+            Text[ korean ] = "실 이자율에 대한 연간 명목 이자율을 계산합니다.";
             Text[ turkish ] = "Efektif faiz oran iin yllk nominal faiz orann hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Calcula la taxa d'inters nominal anual com a taxa d'inters efectiu.";
+            Text[ thai ] = "คำนวณอัตราดอกเบี้ยน้อยนิดต่อปีเป็นอัตราดอกเบี้ยที่มีผล";
         };
         ExtraData =
         {
@@ -9845,6 +10162,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Net faiz";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "effect_rate";
+            Text[ thai ] = "มีผล_อัตรา";
         };
         String 3 // Description of Parameter 1
         {
@@ -9854,7 +10172,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Tasso di interesse effettivo" ;
             Text [ portuguese_brazilian ] = "Effektiver Zinssatz" ;
             Text [ portuguese ] = " a taxa de juros efectiva." ;
-            Text [ finnish ] = "Todellinen korkoprosentti" ;
+            Text [ finnish ] = "Kytettv korko" ;
             Text [ danish ] = "Den effektive rente" ;
             Text [ french ] = "Taux d'intrt effectif" ;
             Text [ swedish ] = "Effektiv rntesats." ;
@@ -9874,6 +10192,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Efektif faiz oran";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Taxa d'inters efectiu";
+            Text[ thai ] = "อัตราดอกเบี้ยที่มีผล";
         };
         String 4 // Name of Parameter 2
         {
@@ -9903,6 +10222,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "D";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "npery";
+            Text[ thai ] = "งวด";
         };
         String 5 // Description of Parameter 2
         {
@@ -9912,7 +10232,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Numero totale dei periodi di pagamento per anno" ;
             Text [ portuguese_brazilian ] = "Perioden. Die Anzahl der Zinszahlungen pro Jahr." ;
             Text [ portuguese ] = " o nmero de pagamentos de juros por ano." ;
-            Text [ finnish ] = "Kaudet! Korkomaksujen mr vuodessa." ;
+            Text [ finnish ] = "Kaudet Korkomaksujen mr vuodessa" ;
             Text [ danish ] = "Perioder. Antallet af renteydelsesperioder per r." ;
             Text [ french ] = "Priodes. Le nombre de paiements d'intrts par an." ;
             Text [ swedish ] = "Perioder. Antalet rntebetalningar per r." ;
@@ -9920,7 +10240,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "es el nmero de pagos de inters por ao." ;
             Text [ english_us ] = "Periods. The number of interest payment per year." ;
             Text[ chinese_simplified ] = "周期数。每年支付利息的周期数。";
-            Text[ russian ] = "    .";
+            Text[ russian ] = ".       .";
             Text[ polish ] = "Okresy. Liczba patnoci odsetek w roku.";
             Text[ japanese ] = "期間。1年当たりの利息計算回数。";
             Text[ chinese_traditional ] = "週期數。每年支付利息的週期數。";
@@ -9928,10 +10248,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Perioden. Het aantal rentebetalingen per jaar.";
             Text[ chinese_simplified ] = "周期数。每年支付利息的周期数。";
             Text[ greek ] = ".       .";
-            Text[ korean ] = "기간. 년간 이자 지불 횟수";
+            Text[ korean ] = "기간. 연간 이자 지불 횟수";
             Text[ turkish ] = "Dnem. Yllk faiz demeleri says.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Perodes. Nombre de pagament d'inters per any.";
+            Text[ thai ] = "งวด จำนวนการจ่ายดอกเบี้ยต่อปี";
         };
     };
      // -=*# Resource for function NBW #*=-
@@ -9945,7 +10266,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Restituisce il valore attuale netto di un investimento basato su pagamenti periodici e su un tasso di sconto." ;
             Text [ portuguese_brazilian ] = "Nettobarwert. Berechnet den Kapitalwert einer Investition auf Basis eines Abzinsungsfaktors bei periodischen Zahlungen." ;
             Text [ portuguese ] = "Devolve o valor lquido actual de um investimento, baseado numa srie de fluxos financeiros peridicos e numa taxa de desconto." ;
-            Text [ finnish ] = "Nykyinen nettoarvo. Laskee sijoituksen nykyisen nettoarvon snnllisten maksujen ja alennusprosentin mukaan." ;
+            Text [ finnish ] = "Nykyinen nettoarvo Laskee sijoituksen nykyisen nettoarvon snnllisten maksujen ja alennusprosentin mukaan." ;
             Text [ danish ] = "Nettonutidsvrdi. Beregner den aktuelle nutidsvrdi for en investering baseret p en diskontosats ved periodiske betalinger." ;
             Text [ french ] = "Calcule la valeur actuelle nette d'un investissement base sur des flux financiers non constants." ;
             Text [ swedish ] = "Nettonuvrde. Berknar kapitalvrdet av en investering baserat p en diskonteringsfaktor vid periodiska betalningar." ;
@@ -9953,7 +10274,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Devuelve el valor neto presente de una inversin a partir de flujos de caja que no tienen que ser constantes." ;
             Text [ english_us ] = "Net present value. Calculates the net present value of an investment based on a series of periodic payments and a discount rate." ;
             Text[ chinese_simplified ] = "净现金值。在贴现率固定且定期支付的情况下上,计算一项投资的净现金值。";
-            Text[ russian ] = "           .";
+            Text[ russian ] = "    ,         .";
             Text[ polish ] = "Oblicza warto biec netto inwestycji w oparciu o okresowe przepywy rodkw pieninych przy okrelonej stopie dyskontowej.";
             Text[ japanese ] = "正味現在価格。投資の正味現在価値を、投資期間の割引率をもとに算出します。";
             Text[ chinese_traditional ] = "在貼現率固定和一系列定期的現金流的基礎上,計算一項投資的淨現值。";
@@ -9965,6 +10286,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Bugnk net deer. Bir yatrmn, periyodik demeler ve indirim oran faktr baznda bugnk net deerini hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor net actual. Calcula el valor net actual d'una inversi basada en una srie de pagaments peridics i una taxa de descompte.";
+            Text[ thai ] = "ค่าปัจจุบันสุทธิ คำนวณค่าปัจจุบันสุทธิของการลงทุนบนพื้นฐานลำดับการจ่ายเงินและอัตราส่วนลดเป็นงวด";
         };
         ExtraData =
         {
@@ -9980,7 +10302,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Tasso interesse" ;
             Text [ portuguese_brazilian ] = "ZINS" ;
             Text [ portuguese ] = "TAXA" ;
-            Text [ finnish ] = "RATE" ;
+            Text [ finnish ] = "KORKO" ;
             Text [ danish ] = "RENTE" ;
             Text [ french ] = "TAUX" ;
             Text [ swedish ] = "RNTA" ;
@@ -9996,10 +10318,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "RENTE";
             Text[ chinese_simplified ] = "rate";
             Text[ greek ] = "RATE";
-            Text[ korean ] = "비율";
+            Text[ korean ] = "이자율";
             Text[ turkish ] = "FAZ";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "RATE";
+            Text[ thai ] = "อัตรา";
         };
         String 3 // Description of Parameter 1
         {
@@ -10010,7 +10333,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Tasso di sconto per la durata di un periodo." ;
             Text [ portuguese_brazilian ] = "Der Abzinsungssatz f? eine Periode." ;
             Text [ portuguese ] = " a taxa de desconto durante um perodo." ;
-            Text [ finnish ] = "Yhden kauden alennusprosentti." ;
+            Text [ finnish ] = "Yhden kauden alennusprosentti" ;
             Text [ danish ] = "Diskontosatsen for en periode." ;
             Text [ french ] = "Le taux d'actualisation pour une priode." ;
             Text [ swedish ] = "Diskonteringssatsen fr en period." ;
@@ -10030,6 +10353,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Bir dnemlik indirim oran.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Taxa de descompte per a un perode.";
+            Text[ thai ] = "อัตราส่วนลดสำหรับหนึ่งงวด";
         };
         String 4 // Name of Parameter 2
         {
@@ -10039,26 +10363,27 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Valore " ;
             Text [ portuguese_brazilian ] = "Wert " ;
             Text [ portuguese ] = "Valor " ;
-            Text [ finnish ] = "arvo" ;
+            Text [ finnish ] = "arvo " ;
             Text [ danish ] = "Vrdi " ;
             Text [ french ] = "Valeur  " ;
             Text [ swedish ] = "vrde  " ;
-            Text [ dutch ] = "Waarde  " ;
+            Text [ dutch ] = "Waarde" ;
             Text [ spanish ] = "valor " ;
             Text [ english_us ] = "value " ;
             Text[ chinese_simplified ] = "value ";
-            Text[ russian ] = "  ";
+            Text[ russian ] = " ";
             Text[ polish ] = "Warto  ";
             Text[ japanese ] = "値 ";
             Text[ chinese_traditional ] = "value ";
             Text[ arabic ] = " ";
-            Text[ dutch ] = "Waarde  ";
+            Text[ dutch ] = "Waarde";
             Text[ chinese_simplified ] = "value ";
             Text[ greek ] = " ";
             Text[ korean ] = "값 ";
             Text[ turkish ] = "Deer ";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "valor ";
+            Text[ thai ] = "ค่า ";
         };
         String 5 // Description of Parameter 2
         {
@@ -10089,6 +10414,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Deer 1;deer 2;... deme ve geliri temsil eden 1 - 30 aras deikendir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor 1, valor 2,... sn entre 1 i 30 arguments que representen pagaments i ingressos.";
+            Text[ thai ] = "ค่า 1, ค่า 2,... อยู่ในอาร์กิวเม้นท์ู่ 1 ถึง 30 ใช้แทนการจ่ายเงินและรายได้";
         };
     };
      // -=*# Resource for function IKV #*=-
@@ -10103,7 +10429,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Restituisce il tasso di rendimento interno di un investimento senza costi o utili." ;
             Text [ portuguese_brazilian ] = "Berechnet den internen Zinsfu? einer Investition ohne Kosten oder Gewinne." ;
             Text [ portuguese ] = "Calcula a taxa interna de retorno de um investimento sem considerar as despesas nem os lucros." ;
-            Text [ finnish ] = "Palauttaa sijoituksen (ilman kustannuksia tai voittoja) tilinpidollisen korkoprosentin." ;
+            Text [ finnish ] = "Palauttaa sijoituksen tilinpidollisen korkoprosentin ilman kustannuksia tai voittoja." ;
             Text [ danish ] = "Beregner det interne afkast for en investering uden udgifter eller indtgter." ;
             Text [ french ] = "Calcule le taux de rentabilit interne d'un investissement, sans tenir compte des cots ou des plus-values." ;
             Text [ swedish ] = "Berknar internrntan fr en investering utan kostnader eller vinster." ;
@@ -10111,7 +10437,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Devuelve la tasa interna de retorno de una inversin, sin costos de financiacin o las ganancias por reinversin." ;
             Text [ english_us ] = "Returns the actuarial rate of interest of an investment excluding costs or profits." ;
             Text[ chinese_simplified ] = "计算一个投资的内部收益率,不计成本和盈利。";
-            Text[ russian ] = "         .";
+            Text[ russian ] = "       .";
             Text[ polish ] = "Oblicza wewntrzn stop zwrotu dla przepyww rodkw pieninych.";
             Text[ japanese ] = "一連の定期的なキャッシュフローに対する内部利益率を返します。";
             Text[ chinese_traditional ] = "計算一個投資的內部收益率﹐不計成本和盈利。";
@@ -10123,6 +10449,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Bir yatrmn, masraf ve kar hari,  i verim oran hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna la taxa actuarial d'inters d'una inversi excloent-ne els costs i els beneficis.";
+            Text[ thai ] = "ส่งกลับอัตราดอกเบี้ยของการลงทุนเกี่ยวกับสถิติการประกันภัยที่ไม่รวมต้นทุนหรือกำไร";
         };
         ExtraData =
         {
@@ -10158,6 +10485,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Deerler";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valors";
+            Text[ thai ] = "ค่า";
         };
         String 3 // Description of Parameter 1
         {
@@ -10167,11 +10495,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Riferimento a una cella o a una matrice che contiene i valori degli importi di pagamento. " ;
             Text [ portuguese_brazilian ] = "Matrix oder Zellbezug auf Zellen, deren Inhalt den Zahlungen entsprechen. " ;
             Text [ portuguese ] = " uma matriz ou uma referncia a clulas, cujos contedos correspondem aos pagamentos. " ;
-            Text [ finnish ] = "Matriisi tai soluviite maksuja vastaaviin soluihin. " ;
+            Text [ finnish ] = "Taulukko tai soluviite maksuja vastaaviin soluihin. " ;
             Text [ danish ] = "Matrix eller reference til celler som indeholder de vrdier, det interne afkast skal beregnes for. " ;
             Text [ french ] = "Une matrice ou une rfrence  des cellules dont le contenu correspond aux paiements.  " ;
             Text [ swedish ] = "Matris eller cellreferens till celler vars innehll motsvarar betalningarna.  " ;
-            Text [ dutch ] = "Matrix of celverwijzing naar cellen waarvan de inhoud overeenkomt met de betalingen.  " ;
+            Text [ dutch ] = "Matrix of celverwijzing naar cellen waarvan de inhoud overeenkomt met de betalingen." ;
             Text [ spanish ] = "Es una matriz o referencia a celdas cuyo contenido correponde a los pagos.  " ;
             Text [ english_us ] = "An array or reference to cells whose contents correspond to the payments. " ;
             Text[ chinese_simplified ] = "含有支付金额的单元格组或单元格引用。 ";
@@ -10180,13 +10508,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ japanese ] = "数値が入力された配列、またはセル範囲を指定します。";
             Text[ chinese_traditional ] = "其內容與支付對應的儲存格組或儲存格參照。 ";
             Text[ arabic ] = "        . ";
-            Text[ dutch ] = "Matrix of celverwijzing naar cellen waarvan de inhoud overeenkomt met de betalingen.  ";
+            Text[ dutch ] = "Matrix of celverwijzing naar cellen waarvan de inhoud overeenkomt met de betalingen.";
             Text[ chinese_simplified ] = "含有支付金额的单元格组或单元格引用。 ";
             Text[ greek ] = "     ,       . ";
             Text[ korean ] = "지불에 상응하는 내용을 가진 셀에 대한 참조 또는 행렬입니다.";
             Text[ turkish ] = "erikleri, demelere uyan hcrelere referans ya da matris. ";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Matriu o referncia a celles el contingut de les quals correspon als pagaments. ";
+            Text[ catalan ] = "Matriu o referncia a cel.les el contingut de les quals correspon als pagaments. ";
+            Text[ thai ] = "แถวลำดับหรือการอ้างอิงไปยังเซลล์ของเนื้อหาสอดคล้องกับการจ่ายเงิน ";
         };
         String 4 // Name of Parameter 2
         {
@@ -10216,6 +10545,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Tahmini deer";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Estima";
+            Text[ thai ] = "คะเน";
         };
         String 5 // Description of Parameter 2
         {
@@ -10226,26 +10556,27 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Indica un valore ipotizzato. Il valore iniziale del tasso di interesse." ;
             Text [ portuguese_brazilian ] = "Sch?tzwert. Startwert des Zinsfu?es f? das Iterationsverfahren." ;
             Text [ portuguese ] = " um nmero que se estima estar prximo do resultado da taxa de retorno interna." ;
-            Text [ finnish ] = "Arvio:! Iteraatiolaskennassa kytettv arvioitu palautusprosentti." ;
+            Text [ finnish ] = "Arvio Iteraatiolaskennassa kytettv arvioitu palautusprosentti." ;
             Text [ danish ] = "Gt. Skn over rentefodens startvrdi for iterationsberegningen." ;
             Text [ french ] = "Le taux que vous estimez tre le plus proche du rsultat de TRI." ;
             Text [ swedish ] = "Gissning. Rntesatsens startvrde fr iterationsmetoden." ;
-            Text [ dutch ] = "Geschatte waarde. Startwaarde van de rentevoet voor het iteratieproces." ;
+            Text [ dutch ] = "Geschatte waarde. Beginwaarde van de rentevoet voor het iteratieproces." ;
             Text [ spanish ] = "Es un nmero que el usuario estima que se aproximar al resultado de TIR." ;
             Text [ english_us ] = "Guess. An estimated value of the rate of return to be used for the iteration calculation." ;
             Text[ chinese_simplified ] = "估计值。采用逐步逼近法计算时的利率起始估计值。";
-            Text[ russian ] = ",   ,      .";
+            Text[ russian ] = ". ,   ,     .";
             Text[ polish ] = "Warto szacowana. Warto pocztkowa ustawowej stopy procentowej dla iteracyjnej metody kalkulacji.";
             Text[ japanese ] = "推定値。計算結果に近いと思われる数値。";
             Text[ chinese_traditional ] = "估計值。用於逐步逼近法計算的利率開始估計值。";
             Text[ arabic ] = "        IRR.";
-            Text[ dutch ] = "Geschatte waarde. Startwaarde van de rentevoet voor het iteratieproces.";
+            Text[ dutch ] = "Geschatte waarde. Beginwaarde van de rentevoet voor het iteratieproces.";
             Text[ chinese_simplified ] = "估计值。采用逐步逼近法计算时的利率起始估计值。";
             Text[ greek ] = " .         .";
             Text[ korean ] = "추정값. 반복 횟수 방식을 위한 이자율의 시작값";
             Text[ turkish ] = "Tahmini deer. zyineleme hesab iin verim orannn balang deeri.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Estima. Valor estimatiu de la taxa de devoluci que s'ha d'utilitzar per al clcul iteratiu.";
+            Text[ thai ] = "คะเน ค่าโดยประมาณของอัตราของการส่งกลับที่ใช้สำหรับการคำนวณซ้ำ";
         };
     };
      // -=*# Resource for function QIKV/MIRR #*=-
@@ -10259,7 +10590,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ portuguese ] = "Calcula a taxa de rentabilidade interna de uma srie de investimentos.";
             Text[ russian ] = "      .";
             Text[ greek ] = "        .";
-            Text[ dutch ] = "Geeft als resultaat de gemodificeerde interne rentevoet in een reeks van inversteringen.";
+            Text[ dutch ] = "Geeft als resultaat de gemodificeerde interne rentevoet in een reeks van investeringen.";
             Text[ french ] = "Calcule le taux de rentabilit interne modifi pour une srie d'investissements.";
             Text[ spanish ] = "Calcula el tipo de inters de una serie de inversiones.";
             Text[ italian ] = "Restituisce il tasso di rendimento interno variato di una serie di investimenti.";
@@ -10275,6 +10606,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ arabic ] = "Returns the modified internal rate of return for a series of cash flows represented by the numbers in values.";
             Text[ catalan ] = "Torna la taxa interna modificada de devoluci per a una srie d'inversions.";
             Text[ finnish ] = "Palauttaa sijoitusten sisisen mukautetun tuottoprosentin.";
+            Text[ thai ] = "ส่งกลับอัตราภายในที่ดัดแปลงของการส่งกลับลำดับการลงทุน";
         };
         ExtraData =
         {
@@ -10306,6 +10638,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ arabic ] = "";
             Text[ catalan ] = "Valors";
             Text[ finnish ] = "Arvot";
+            Text[ thai ] = "ค่า";
         };
         String 3 // Description of Parameter 1
         {
@@ -10315,7 +10648,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ portuguese ] = "Uma matriz ou uma referncia a clulas, cujos contedos correspondem aos pagamentos.";
             Text[ russian ] = "    ,    .";
             Text[ greek ] = "      ,       .";
-            Text[ dutch ] = "Matrix of celverwijzing naar cellen waarvan de inhoud overeenkomt met de betalingen.  ";
+            Text[ dutch ] = "Matrix of celverwijzing naar cellen waarvan de inhoud overeenkomt met de betalingen.";
             Text[ french ] = "Une matrice ou une rfrence  des cellules dont le contenu correspond aux paiements.";
             Text[ spanish ] = "Matriz o referencia de celda a celdas cuyo contenido corresponde a los pagos.";
             Text[ italian ] = "Riferimento a una cella o una matrice che contiene i valori degli importi di pagamento.";
@@ -10329,8 +10662,9 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ chinese_traditional ] = "符合支付金額的儲存格矩陣或儲存格參照。 ";
             Text[ turkish ] = "is an array or a reference to cells that contain numbers for which you want to calculate the internal rate of return.";
             Text[ arabic ] = "        . ";
-            Text[ catalan ] = "Matriu o referncia a celles el contingut de les quals correspon als pagaments.";
-            Text[ finnish ] = "Matriisi tai soluviite maksuja vastaaviin soluihin.";
+            Text[ catalan ] = "Matriu o referncia a cel.les el contingut de les quals correspon als pagaments.";
+            Text[ finnish ] = "Taulukko tai soluviite maksuja vastaaviin soluihin.";
+            Text[ thai ] = "แถวลำดับหรือการอ้างอิงไปยังเซลล์ของเนื้อหาสอดคล้องกับการจ่ายเงิน";
         };
         String 4 // Name of Parameter 2
         {
@@ -10356,6 +10690,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ arabic ] = "invest_rate";
             Text[ catalan ] = "inversi";
             Text[ finnish ] = "sijoitus";
+            Text[ thai ] = "การลงทุน";
         };
         String 5 // Description of Parameter 2
         {
@@ -10380,7 +10715,8 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "interest rate of investments (the negative values in the array).";
             Text[ arabic ] = "interest rate of investments (the negative values in the array).";
             Text[ catalan ] = "Taxa d'inters per a les inversions (els valors negatius de la matriu).";
-            Text[ finnish ] = "Sijoitusten korkoprosentti (matriisin negatiiviset arvot).";
+            Text[ finnish ] = "Sijoitusten korkoprosentti (taulukon negatiiviset arvot).";
+            Text[ thai ] = "อัตราดอกเบี้ยสำหรับการลงทุน (ค่าลบในแถวลำดับ)";
         };
         String 6 // Name of Parameter 3
         {
@@ -10388,9 +10724,9 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ english ] = "reinvest_rate" ;
             Text[ english_us ] = "reinvest_rate";
             Text[ portuguese ] = "Reinvestimento";
-            Text[ russian ] = "";
+            Text[ russian ] = " ";
             Text[ greek ] = "";
-            Text[ dutch ] = "renvestering";
+            Text[ dutch ] = "Herinvestering";
             Text[ french ] = "Rinvestissement";
             Text[ spanish ] = "Reinversin";
             Text[ italian ] = "Reinvestimenti";
@@ -10405,7 +10741,8 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "reinvest_rate";
             Text[ arabic ] = "reinvest_rate";
             Text[ catalan ] = "reinvest_rate";
-            Text[ finnish ] = "reinvest_rate";
+            Text[ finnish ] = "uudelleensijoitus_korko";
+            Text[ thai ] = "ลงทุนซ้ำ_อัตรา";
         };
         String 7 // Description of Parameter 3
         {
@@ -10413,9 +10750,9 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ english ] = "interest rate of reinvestments (the positive values in the array)." ;
             Text[ english_us ] = "interest rate for reinvestments (the positive values in the array).";
             Text[ portuguese ] = "Taxa de juro dos reinvestimentos (valores positivos da matriz).";
-            Text[ russian ] = "  (  ).";
+            Text[ russian ] = "    (  ).";
             Text[ greek ] = "    (    ).";
-            Text[ dutch ] = "Rentevoet bij renvesteringen (de positieve waarden in de matrix).";
+            Text[ dutch ] = "Rentevoet bij herinvesteringen (de positieve waarden in de matrix).";
             Text[ french ] = "Taux de rentabilit des rinvestissements (les valeurs positives de la matrice).";
             Text[ spanish ] = "Tipo de inters de las reinversiones (los valores positivos de la matriz)";
             Text[ italian ] = "Tasso di rendimento dei reinvenstimenti (valori positivi della matrice).";
@@ -10430,7 +10767,8 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "interest rate of reinvestments (the positive values in the array).";
             Text[ arabic ] = "interest rate of reinvestments (the positive values in the array).";
             Text[ catalan ] = "taxa d'inters per a les reinversions (els valors positius de la matriu).";
-            Text[ finnish ] = "Uudelleensijoituksen korkoprosentti (matriisin positiiviset arvot).";
+            Text[ finnish ] = "Uudelleensijoituksen korkoprosentti (taulukon positiiviset arvot).";
+            Text[ thai ] = "อัตราดอกเบี้ยสำหรับการลงทุนซ้ำ (ค่าบวกในแถวลำดับ)";
         };
     };
      // -=*# Resource for function ISPMT #*=-
@@ -10442,7 +10780,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ english ] = "Returns the amount of interest for constant redemption rates." ;
             Text[ english_us ] = "Returns the amount of interest for constant amortization rates.";
             Text[ portuguese ] = "Calcula o montante dos juros a taxas de amortizao constantes.";
-            Text[ russian ] = "       .";
+            Text[ russian ] = "       .";
             Text[ greek ] = "Returns the amount of interest for constant redemption rates.";
             Text[ dutch ] = "Berekent de hoogte van de rente bij gelijkblijvende aflossingstermijnen.";
             Text[ french ] = "Calcule le montant des intrts pour un emprunt  remboursement constant.";
@@ -10460,6 +10798,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ arabic ] = "Returns the amount of interest for constant redemption rates.";
             Text[ catalan ] = "Torna la quantitat d'inters per a taxes d'amortitzaci constant.";
             Text[ finnish ] = "Palauttaa jatkuvan kuoletuskustannuksen korkosumman.";
+            Text[ thai ] = "ส่งกลับจำนวนดอกเบี้ยสำหรับอัตราหักลบกลบหนี้คงที่";
         };
         ExtraData =
         {
@@ -10484,13 +10823,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ polish ] = "Odsetek";
             Text[ portuguese_brazilian ] = "rate";
             Text[ japanese ] = "利率";
-            Text[ korean ] = "이자율";
+            Text[ korean ] = "이율";
             Text[ chinese_simplified ] = "rate";
             Text[ chinese_traditional ] = "rate";
             Text[ turkish ] = "rate";
             Text[ arabic ] = "rate";
             Text[ catalan ] = "taxa";
             Text[ finnish ] = "korko";
+            Text[ thai ] = "อัตรา";
         };
         String 3 // Description of Parameter 1
         {
@@ -10516,6 +10856,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ arabic ] = "Interest rate of a single redemption rate.";
             Text[ catalan ] = "Taxa d'inters per a una nica taxa d'amortitzaci.";
             Text[ finnish ] = "Yksittisen kuoletuskustannuksen korkoprosentti.";
+            Text[ thai ] = "อัตราดอกเบี้ยสำหรับอัตราหักลบกลบหนี้เชิงเดี่ยว";
         };
         String 4 // Name of Parameter 2
         {
@@ -10541,6 +10882,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ arabic ] = "period";
             Text[ catalan ] = "Perode";
             Text[ finnish ] = "Kausi";
+            Text[ thai ] = "งวด";
         };
         String 5 // Description of Parameter 2
         {
@@ -10566,6 +10908,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ arabic ] = "Count of amortization periods for the calculation of the interest.";
             Text[ catalan ] = "Nombre de perodes d'amortitzaci per al clcul de l'inters.";
             Text[ finnish ] = "Kuoletuskausien mr, joina korko lasketaan.";
+            Text[ thai ] = "จำนวนงวดหักลบกลบหนี้สำหรับการคำนวณดอกเบี้ย";
         };
         String 6 // Name of Parameter 3
         {
@@ -10573,7 +10916,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ english ] = "total_periods" ;
             Text[ english_us ] = "total_periods";
             Text[ portuguese ] = "Total_perodos";
-            Text[ russian ] = "_";
+            Text[ russian ] = " ";
             Text[ greek ] = "total_periods";
             Text[ dutch ] = "gehele_termijn";
             Text[ french ] = "Dure_totale";
@@ -10591,6 +10934,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ arabic ] = "total_periods";
             Text[ catalan ] = "total_periods";
             Text[ finnish ] = "total_periods";
+            Text[ thai ] = "ทั้งหมด_งวด";
         };
         String 7 // Description of Parameter 3
         {
@@ -10600,7 +10944,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ portuguese ] = "Soma total dos perodos de amortizao.";
             Text[ russian ] = "   .";
             Text[ greek ] = "Sum total of amortization periods.";
-            Text[ dutch ] = "Ttotaal aantal aflossingstermijnen.";
+            Text[ dutch ] = "Totaal aantal aflossingstermijnen.";
             Text[ french ] = "Nombre total de priodes d'amortissement.";
             Text[ spanish ] = "Cantidad total de periodos de amortizacin.";
             Text[ italian ] = "Calcolo totale del periodo di ammortamento";
@@ -10616,6 +10960,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ arabic ] = "Sum total of amortization periods.";
             Text[ catalan ] = "Suma total dels perodes d'amortitzaci.";
             Text[ finnish ] = "Kuoletuskausien kokonaissumma.";
+            Text[ thai ] = "ผลรวมทั้งหมดของงวดในการหักลบกลบหนี้";
         };
         String 8 // Name of Parameter 4
         {
@@ -10641,6 +10986,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ arabic ] = "invest";
             Text[ catalan ] = "invest";
             Text[ finnish ] = "sijoitus";
+            Text[ thai ] = "ลงทุน";
         };
         String 9 // Description of Parameter 4
         {
@@ -10650,7 +10996,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ portuguese ] = "Montante do investimento.";
             Text[ russian ] = " .";
             Text[ greek ] = "Amount of the investment.";
-            Text[ dutch ] = "Bedrag van de investering.";
+            Text[ dutch ] = "Investeringsbedrag";
             Text[ french ] = "Montant de l'investissement.";
             Text[ spanish ] = "Cantidad de la inversin.";
             Text[ italian ] = "Cifra d'investimento";
@@ -10659,13 +11005,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ polish ] = "Kwota inwestycji.";
             Text[ portuguese_brazilian ] = "Amount of the investment.";
             Text[ japanese ] = "現在の投資額または将来行われる一連の支払いを、現時点で一括払いした場合の合計を指定します。";
-            Text[ korean ] = "투자 금액.";
+            Text[ korean ] = "투자 금액";
             Text[ chinese_simplified ] = "一项投资金额。";
             Text[ chinese_traditional ] = "一項投資金額。";
             Text[ turkish ] = "Amount of the investment.";
             Text[ arabic ] = "Amount of the investment.";
             Text[ catalan ] = "Quantitat de la inversi.";
             Text[ finnish ] = "Sijoitettu summa.";
+            Text[ thai ] = "จำนวนเงินลงทุน";
         };
     };
      // -=*# Resource for function LAUFZEIT #*=-
@@ -10679,7 +11026,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Restituisce il numero di periodi necessari affinch un investimento raggiunga un valore voluto." ;
             Text [ portuguese_brazilian ] = "Laufzeit. Berechnet die Anzahl der Perioden, die eine Einlage ben?igt, um auf einen angestrebten Wert zu kommen." ;
             Text [ portuguese ] = "Durao. Devolve a quantidade de perodos necessrios para que um investimento atinja o valor desejado." ;
-            Text [ finnish ] = "Kesto: Laskee kausien mrn, joka tarvitaan sijoituksen halutun arvon saavuttamiseen." ;
+            Text [ finnish ] = "Kesto Laskee kausien mrn, joka tarvitaan sijoituksen halutun arvon saavuttamiseen." ;
             Text [ danish ] = "Varighed. Beregner antallet af perioder, som en investering krver for at opn den nskede vrdi." ;
             Text [ french ] = "Dure. Renvoie le nombre de priodes ncessaires  un investissement pour atteindre une valeur nominale." ;
             Text [ swedish ] = "Lptid. Berknar antalet perioder som en investering behver fr att uppn ett efterstrvat vrde." ;
@@ -10687,7 +11034,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Plazo. Devuelve la cantidad de perodos que requiere una inversin para lograr un valor deseado." ;
             Text [ english_us ] = "Duration. Calculates the number of periods required by an investment to attain the desired value." ;
             Text[ chinese_simplified ] = "期限。计算为了达到一定目标值一项投资所需要的周期数。";
-            Text[ russian ] = "  ,   ,    .";
+            Text[ russian ] = "  ,   ,    .";
             Text[ polish ] = "Oblicza ilo okresw, ktra jest wymagana, aby wkad osign oczekiwan warto.";
             Text[ japanese ] = "満額期。投資して目標額に達成するのに必要とする期間を返します。";
             Text[ chinese_traditional ] = "期限。計算為了達到一定目標值一項投資所需要的週期數。";
@@ -10699,6 +11046,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Sre. Bir yatrmn istenen deere ulaabilmesi iin gereken dnem saysn hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Durada. Calcula el nombre de perodes que una inversi necessita per aconseguir el valor desitjat.";
+            Text[ thai ] = "ระยะเวลา คำนวณจำนวนงวดที่ต้องการโดยการลงทุนเพื่อได้รับค่าที่ปรารถนา";
         };
         ExtraData =
         {
@@ -10714,7 +11062,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Tasso interesse" ;
             Text [ portuguese_brazilian ] = "ZINS" ;
             Text [ portuguese ] = "Taxa" ;
-            Text [ finnish ] = "RATE" ;
+            Text [ finnish ] = "KORKO" ;
             Text [ danish ] = "RENTE" ;
             Text [ french ] = "TAUX" ;
             Text [ swedish ] = "RNTA" ;
@@ -10730,10 +11078,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "RENTE";
             Text[ chinese_simplified ] = "rate";
             Text[ greek ] = "rate";
-            Text[ korean ] = "이자";
+            Text[ korean ] = "이율";
             Text[ turkish ] = "Faiz";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "RATE";
+            Text[ thai ] = "อัตรา";
         };
         String 3 // Description of Parameter 1
         {
@@ -10743,7 +11092,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "L'interesse costante" ;
             Text [ portuguese_brazilian ] = "konstanter Zinsatz" ;
             Text [ portuguese ] = " a taxa de juros constante." ;
-            Text [ finnish ] = "Kiinte korkoprosentti." ;
+            Text [ finnish ] = "Kiinte korkoprosentti" ;
             Text [ danish ] = "En konstant rentesats." ;
             Text [ french ] = "Taux d'intrt constant" ;
             Text [ swedish ] = "konstant rntesats." ;
@@ -10751,7 +11100,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Es la tasa de inters constante" ;
             Text [ english_us ] = "The constant rate of interest." ;
             Text[ chinese_simplified ] = "恒定利率";
-            Text[ russian ] = "  ";
+            Text[ russian ] = "  ";
             Text[ polish ] = "Staa stopa oprocentowania";
             Text[ japanese ] = "一定利率";
             Text[ chinese_traditional ] = "恆定利率";
@@ -10763,6 +11112,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Sabit faiz oran";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Taxa constant d'inters.";
+            Text[ thai ] = "อัตราดอกเบี้ยคงที่";
         };
         String 4 // Name of Parameter 2
         {
@@ -10772,7 +11122,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Valore attuale" ;
             Text [ portuguese_brazilian ] = "GW" ;
             Text [ portuguese ] = "VA" ;
-            Text [ finnish ] = "pv" ;
+            Text [ finnish ] = "na" ;
             Text [ danish ] = "NV" ;
             Text [ french ] = "VA" ;
             Text [ swedish ] = "Nuvrde" ;
@@ -10780,7 +11130,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "VA" ;
             Text [ english_us ] = "pv" ;
             Text[ chinese_simplified ] = "pv";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "PV";
             Text[ japanese ] = "現在価値";
             Text[ chinese_traditional ] = "pv";
@@ -10788,10 +11138,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "HW";
             Text[ chinese_simplified ] = "pv";
             Text[ greek ] = "PV";
-            Text[ korean ] = "현금가치";
+            Text[ korean ] = "pv";
             Text[ turkish ] = "Bugnk deer";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "pv";
+            Text[ thai ] = "pv";
         };
         String 5 // Description of Parameter 2
         {
@@ -10801,7 +11152,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Valore attuale dell'investimento" ;
             Text [ portuguese_brazilian ] = "Gegenwartswert der Einlage." ;
             Text [ portuguese ] = " o valor actual do investimento." ;
-            Text [ finnish ] = "Nykyinen arvo. Sijoituksen nykyinen arvo." ;
+            Text [ finnish ] = "Nykyinen arvo Sijoituksen nykyinen arvo" ;
             Text [ danish ] = "Nutidsvrdi. Investeringens nuvrende vrdi." ;
             Text [ french ] = "Valeur actuelle de l'investissement" ;
             Text [ swedish ] = "Nuvarande vrde. Det nuvarande vrdet fr investering." ;
@@ -10821,6 +11172,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Bugnk deer. Yatrmn bugnk deeri.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor actual. Valor actual de la inversi.";
+            Text[ thai ] = "ค่าปัจจุบัน ค่าปัจจุบันของการลงทุน";
         };
         String 6 // Name of Parameter 3
         {
@@ -10830,7 +11182,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Valore futuro" ;
             Text [ portuguese_brazilian ] = "ZW" ;
             Text [ portuguese ] = "Vf" ;
-            Text [ finnish ] = "FV" ;
+            Text [ finnish ] = "TULEVA_ARVO" ;
             Text [ danish ] = "FV" ;
             Text [ french ] = "VC" ;
             Text [ swedish ] = "Slutvrde" ;
@@ -10838,7 +11190,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Vf" ;
             Text [ english_us ] = "FV" ;
             Text[ chinese_simplified ] = "fv";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "FV";
             Text[ japanese ] = "将来価値";
             Text[ chinese_traditional ] = "fv";
@@ -10850,6 +11202,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Gelecek deer";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "FV";
+            Text[ thai ] = "FV";
         };
         String 7 // Description of Parameter 3
         {
@@ -10860,7 +11213,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Valore futuro dell'investimento" ;
             Text [ portuguese_brazilian ] = "Zuk?ftiger Wert der Einlage." ;
             Text [ portuguese ] = " o valor futuro do investimento." ;
-            Text [ finnish ] = "Sijoituksen tuleva arvo." ;
+            Text [ finnish ] = "Sijoituksen tuleva arvo" ;
             Text [ danish ] = "Investeringens fremtidvrdi." ;
             Text [ french ] = "Valeur future de l'investissement." ;
             Text [ swedish ] = "Framtida vrde av investering." ;
@@ -10880,6 +11233,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Yatrmn gelecek deeri.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor de futur de la inversi.";
+            Text[ thai ] = "ค่าอนาคตของการลงทุน";
         };
     };
      // -=*# Resource for function ZGZ #*=-
@@ -10893,7 +11247,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Calcola il tasso d'interessi che rappresenta la rendita di un investimento." ;
             Text [ portuguese_brazilian ] = "Zins. Berechnet den Zinssatz, der die Rendite aus einer Einlage darstellt." ;
             Text [ portuguese ] = "Juros. Calcula a taxa de juro de uma anuidade." ;
-            Text [ finnish ] = "Korko. Laskee sijoituksen voittoprosentin." ;
+            Text [ finnish ] = "Korko Laskee sijoituksen voittoprosentin." ;
             Text [ danish ] = "Rente. Beregner den rentesats, som reprsenterer det rlige renteudbytte fra en investering." ;
             Text [ french ] = "Calcule le taux d'intrt qui reprsente la rentabilit d'un investissement." ;
             Text [ swedish ] = "Rnta. Berknar rntesatsen som utgr avkastningen p en investering." ;
@@ -10901,7 +11255,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Inters. Devuelve la tasa de inters del rendimiento de una inversin." ;
             Text [ english_us ] = "Interest. Calculates the interest rate which represents the rate of return from an investment." ;
             Text[ chinese_simplified ] = "利率。计算表示投资赢利的利率。";
-            Text[ russian ] = ".   ,     .";
+            Text[ russian ] = "  ,      .";
             Text[ polish ] = "Odsetki. Oblicza stop procentow dla wkadu w okrelonym czasie w stosunku do woonego kapitau.";
             Text[ japanese ] = "利息。投資から得られる利得の一定の利率を返します。";
             Text[ chinese_traditional ] = "利息。計算顯示投資贏利的利率。";
@@ -10909,10 +11263,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Rente. Berekent de rentevoet die het rendement uit een investering weergeeft.";
             Text[ chinese_simplified ] = "利率。计算表示投资赢利的利率。";
             Text[ greek ] = ".   ,       .";
-            Text[ korean ] = "이자. 투자 수익에 의해 나타나는 이자율을 산출";
+            Text[ korean ] = "이자. 투자 수익에 의해 나타나는 이자율을 계산합니다.";
             Text[ turkish ] = "Faiz. Yatrmn gelirini temsil eden faiz orann hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Inters. Calcula la taxa d'inters que representa la taxa de devoluci d'una inversi.";
+            Text[ thai ] = "ดอกเบี้ย คำนวณอัตราดอกเบี้ยที่ใช้แทนอัตราของผลตอบแทนจากการลงทุน";
         };
         ExtraData =
         {
@@ -10936,7 +11291,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "perodos" ;
             Text [ english_us ] = "P" ;
             Text[ chinese_simplified ] = "p";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "Okres";
             Text[ japanese ] = "期間";
             Text[ chinese_traditional ] = "P";
@@ -10948,6 +11303,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "D";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "P";
+            Text[ thai ] = "งวด";
         };
         String 3 // Description of Parameter 1
         {
@@ -10958,7 +11314,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Numero dei periodi per il calcolo." ;
             Text [ portuguese_brazilian ] = "Anzahl der Perioden f? die Berechnung" ;
             Text [ portuguese ] = " o nmero de perodos a calcular." ;
-            Text [ finnish ] = "Laskennassa kytettv kausien mr." ;
+            Text [ finnish ] = "Laskennassa kytettv kausien mr" ;
             Text [ danish ] = "Antallet af perioder for beregningen." ;
             Text [ french ] = "Le nombre de priodes pour le calcul." ;
             Text [ swedish ] = "Antal perioder fr berkningen." ;
@@ -10978,6 +11334,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Hesaplamada kullanlan dnem says";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre de perodes utilitzats en el clcul.";
+            Text[ thai ] = "จำนวนงวดที่ใช้ในการคำนวณ";
         };
         String 4 // Name of Parameter 2
         {
@@ -10987,7 +11344,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Valore attuale" ;
             Text [ portuguese_brazilian ] = "GW" ;
             Text [ portuguese ] = "VA" ;
-            Text [ finnish ] = "pv" ;
+            Text [ finnish ] = "na" ;
             Text [ danish ] = "NV" ;
             Text [ french ] = "VA" ;
             Text [ swedish ] = "Nuvrde" ;
@@ -10995,7 +11352,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "va" ;
             Text [ english_us ] = "pv" ;
             Text[ chinese_simplified ] = "pv";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "PV";
             Text[ japanese ] = "現在価値";
             Text[ chinese_traditional ] = "PV";
@@ -11007,6 +11364,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Bugnk deer";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "pv";
+            Text[ thai ] = "pv";
         };
         String 5 // Description of Parameter 2
         {
@@ -11016,7 +11374,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Valore attuale dell'investimento." ;
             Text [ portuguese_brazilian ] = "Gegenwartswert der Einlage." ;
             Text [ portuguese ] = "Valor actual. Representa o valor actual de um investimento." ;
-            Text [ finnish ] = "Nykyinen arvo. Sijoituksen nykyinen arvo." ;
+            Text [ finnish ] = "Nykyinen arvo Sijoituksen nykyinen arvo" ;
             Text [ danish ] = "Nutidsvrdi. Investeringens nuvrende vrdi." ;
             Text [ french ] = "Valeur actuelle de l'investissement." ;
             Text [ swedish ] = "Nuvarande vrde. Nuvarande vrdet av investeringen." ;
@@ -11036,6 +11394,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Bugnk deer. Yatrmn bugnk deeri.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor actual. Valor actual de la inversi.";
+            Text[ thai ] = "ค่าปัจจุบัน ค่าปัจจุบันของการลงทุน";
         };
         String 6 // Name of Parameter 3
         {
@@ -11045,7 +11404,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Valore futuro" ;
             Text [ portuguese_brazilian ] = "ZW" ;
             Text [ portuguese ] = "VF" ;
-            Text [ finnish ] = "FV" ;
+            Text [ finnish ] = "TULEVA_ARVO" ;
             Text [ danish ] = "FV" ;
             Text [ french ] = "VC" ;
             Text [ swedish ] = "Slutvrde" ;
@@ -11053,7 +11412,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "vf" ;
             Text [ english_us ] = "FV" ;
             Text[ chinese_simplified ] = "fv";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "FV";
             Text[ japanese ] = "将来価値";
             Text[ chinese_traditional ] = "FV";
@@ -11065,6 +11424,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Gelecek deer";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "FV";
+            Text[ thai ] = "FV";
         };
         String 7 // Description of Parameter 3
         {
@@ -11075,7 +11435,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Valore futuro dell'investimento." ;
             Text [ portuguese_brazilian ] = "Zuk?ftiger Wert der Einlage." ;
             Text [ portuguese ] = "Representa o valor futuro de um investimento." ;
-            Text [ finnish ] = "Sijoituksen tuleva arvo." ;
+            Text [ finnish ] = "Sijoituksen tuleva arvo" ;
             Text [ danish ] = "Investeringens fremtidvrdi." ;
             Text [ french ] = "Reprsente la valeur future d'un investissement." ;
             Text [ swedish ] = "Framtida vrdet av investeringen." ;
@@ -11095,6 +11455,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Yatrmn gelecek deeri.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor de futur de la inversi.";
+            Text[ thai ] = "ค่าอนาคตของการลงทุน";
         };
     };
      // -=*# Resource for function ISTBEZUG #*=-
@@ -11108,7 +11469,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Restituisce VERO se il valore  un riferimento." ;
             Text [ portuguese_brazilian ] = "Liefert WAHR, wenn der Wert ein Bezug ist." ;
             Text [ portuguese ] = "Devolve VERDADEIRO, se o valor  uma referncia." ;
-            Text [ finnish ] = "Palauttaa arvon TRUE, jos arvo on viite." ;
+            Text [ finnish ] = "Palauttaa arvon TOSI, jos arvo on viite." ;
             Text [ danish ] = "Returnerer SAND, hvis vrdien er en reference." ;
             Text [ french ] = "Renvoie VRAI si la valeur est une rfrence." ;
             Text [ swedish ] = "Returnerar SANT om vrdet r en referens." ;
@@ -11128,6 +11489,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Deer bir referans ise sonu DORU olur.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna TRUE si el valor s una referncia.";
+            Text[ thai ] = "ส่งกลับ จริง ถ้าค่าเป็นการอ้างอิง";
         };
         ExtraData =
         {
@@ -11163,6 +11525,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Deer";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "valor";
+            Text[ thai ] = "ค่า";
         };
         String 3 // Description of Parameter 1
         {
@@ -11173,7 +11536,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Valore da esaminare." ;
             Text [ portuguese_brazilian ] = "Der Wert, der gepr?t werden soll." ;
             Text [ portuguese ] = " o valor a ser testado." ;
-            Text [ finnish ] = "Testattava arvo." ;
+            Text [ finnish ] = "Testattava arvo" ;
             Text [ danish ] = "Den vrdi som skal testes." ;
             Text [ french ] = "La valeur  examiner." ;
             Text [ swedish ] = "Vrdet som skall testas." ;
@@ -11193,6 +11556,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Denetlenecek deer.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor que s'ha de verificar.";
+            Text[ thai ] = "ค่าที่ถูกทดสอบ";
         };
     };
      // -=*# Resource for function ISTFEHL #*=-
@@ -11206,7 +11570,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Restituisce VERO se il valore  un valore di errore diverso da #N/D." ;
             Text [ portuguese_brazilian ] = "Liefert WAHR, wenn der Wert ein Fehlerwert ungleich #NV ist." ;
             Text [ portuguese ] = "Devolve VERDADEIRO, se o valor se refere a qualquer valor de erro diferente de #N/D." ;
-            Text [ finnish ] = "Palauttaa arvon TRUE, jos arvo on virhearvo, joka ei ole #N/A." ;
+            Text [ finnish ] = "Palauttaa arvon TOSI, jos arvo on virhearvo, joka ei ole #N/A." ;
             Text [ danish ] = "Returnerer SAND, hvis vrdien er en hvilken som helst fejlvrdi forskellig fra #I/T" ;
             Text [ french ] = "Renvoie VRAI si la valeur fait rfrence  une des valeurs d'erreur,  l'exception de #N/A." ;
             Text [ swedish ] = "Returnerar SANT nr vrdet r ett felvrde som ej r lika med #SAKNAS." ;
@@ -11214,7 +11578,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Devuelve VERDADERO si el valor es cualquier valor de error distinto de #N/A." ;
             Text [ english_us ] = "Returns TRUE if the value is an error value not equal to #N/A." ;
             Text[ chinese_simplified ] = "如果一个错误数值不等于 #NV ,那就反馈 TRUE 。";
-            Text[ russian ] = " ,      ,  /.";
+            Text[ russian ] = " ,      ,  #/.";
             Text[ polish ] = "Zwraca warto PRAWDA, jeeli warto bdu jest rna od #N/D.";
             Text[ japanese ] = "セルが #N/A でないエラーの場合、TRUEを返します。";
             Text[ chinese_traditional ] = "如果一個錯誤數值不等於 #NV ﹐那就傳回 TRUE 。";
@@ -11226,6 +11590,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Deer, #NV/A deerine eit olmayan bir hata deeri ise sonu DORU olur.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna TRUE si el valor s un valor d'error diferent de #N/A.";
+            Text[ thai ] = "ส่งกลับ จริง  ถ้าค่าเป็นค่าผิดพลาดที่ไม่เท่ากับ #N/A";
         };
         ExtraData =
         {
@@ -11261,6 +11626,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Deer";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "valor";
+            Text[ thai ] = "ค่า";
         };
         String 3 // Description of Parameter 1
         {
@@ -11271,7 +11637,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Valore da esaminare." ;
             Text [ portuguese_brazilian ] = "Der Wert, der gepr?t werden soll." ;
             Text [ portuguese ] = " o valor a ser testado." ;
-            Text [ finnish ] = "Testattava arvo." ;
+            Text [ finnish ] = "Testattava arvo" ;
             Text [ danish ] = "Den vrdi som skal testes." ;
             Text [ french ] = "La valeur  examiner." ;
             Text [ swedish ] = "Vrdet som skall testas." ;
@@ -11291,6 +11657,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Denetlenecek deer.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor que s'ha de verificar.";
+            Text[ thai ] = "ค่าที่ถูกทดสอบ";
         };
     };
      // -=*# Resource for function ISTFEHLER #*=-
@@ -11304,7 +11671,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Restituisce VERO se il valore  un valore di errore." ;
             Text [ portuguese_brazilian ] = "Liefert WAHR, wenn der Wert ein Fehlerwert ist." ;
             Text [ portuguese ] = "Devolve VERDADEIRO, se o valor se refere a qualquer valor de erro (#N/A,#VALOR!,'REF! ou NOME?)." ;
-            Text [ finnish ] = "Palauttaa arvon TRUE, jos arvo on virhearvo." ;
+            Text [ finnish ] = "Palauttaa arvon TOSI, jos arvo on virhearvo." ;
             Text [ danish ] = "Returnerer SAND, hvis vrdien er en hvilken som helst fejlvrdi." ;
             Text [ french ] = "Renvoie VRAI si la valeur fait rfrence  une valeur d'erreur." ;
             Text [ swedish ] = "Returnerar SANT om vrdet r ett felvrde." ;
@@ -11324,6 +11691,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Deer,  bir hata deeri ise sonu DORU olur.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna TRUE si el valor s un valor d'error.";
+            Text[ thai ] = "ส่งกลับ จริง  ถ้าค่าเป็นค่าผิดพลาด";
         };
         ExtraData =
         {
@@ -11359,6 +11727,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Deer";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "valor";
+            Text[ thai ] = "ค่า";
         };
         String 3 // Description of Parameter 1
         {
@@ -11369,7 +11738,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Valore da esaminare." ;
             Text [ portuguese_brazilian ] = "Der Wert, der gepr?t werden soll." ;
             Text [ portuguese ] = " o valor a ser testado." ;
-            Text [ finnish ] = "Testattava arvo." ;
+            Text [ finnish ] = "Testattava arvo" ;
             Text [ danish ] = "Den vrdi som skal testes." ;
             Text [ french ] = "La valeur  examiner." ;
             Text [ swedish ] = "Vrdet som skall testas." ;
@@ -11389,6 +11758,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Denetlenecek deer.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor que s'ha de verificar.";
+            Text[ thai ] = "ค่าที่ถูกทดสอบ";
         };
     };
      // -=*# Resource for function ISTLEER #*=-
@@ -11402,7 +11772,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Restituisce VERO se il valore  un riferimento ad una cella vuota." ;
             Text [ portuguese_brazilian ] = "Liefert WAHR, wenn der Wert ein Bezug auf eine leere Zelle ist." ;
             Text [ portuguese ] = "Devolve VERDADEIRO; se o valor se refere a uma clula vazia." ;
-            Text [ finnish ] = "Palauttaa arvon TRUE, jos arvo viittaa tyhjn soluun." ;
+            Text [ finnish ] = "Palauttaa arvon TOSI, jos arvo viittaa tyhjn soluun." ;
             Text [ danish ] = "Returnerer SAND, hvis vrdien refererer til en tom celle." ;
             Text [ french ] = "Renvoie VRAI si la valeur fait rfrence  une cellule vide." ;
             Text [ swedish ] = "Returnerar SANT om vrdet refererar till en tom cell." ;
@@ -11421,7 +11791,8 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ korean ] = "값이 빈 셀에 대한 참조이면 TRUE를 제공.";
             Text[ turkish ] = "Deer, bo bir hcreyi referans alyorsa sonu DORU olur.";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Torna TRUE si el valor es refereix a una cella buida.";
+            Text[ catalan ] = "Torna TRUE si el valor es refereix a una cel.la buida.";
+            Text[ thai ] = "ส่งกลับ จริง ถ้าค่าอ้างถึงเซลล์ว่าง";
         };
         ExtraData =
         {
@@ -11457,6 +11828,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Deer";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "valor";
+            Text[ thai ] = "ค่า";
         };
         String 3 // Description of Parameter 1
         {
@@ -11467,7 +11839,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Valore da esaminare." ;
             Text [ portuguese_brazilian ] = "Der Wert, der gepr?t werden soll." ;
             Text [ portuguese ] = " o valor a ser testado." ;
-            Text [ finnish ] = "Testattava arvo." ;
+            Text [ finnish ] = "Testattava arvo" ;
             Text [ danish ] = "Den vrdi som skal testes." ;
             Text [ french ] = "La valeur  examiner." ;
             Text [ swedish ] = "Vrdet som skall testas." ;
@@ -11487,6 +11859,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Denetlenecek deer.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor que s'ha de verificar.";
+            Text[ thai ] = "ค่าที่ถูกทดสอบ";
         };
     };
      // -=*# Resource for function ISTLOG #*=-
@@ -11501,7 +11874,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Restituisce VERO se il valore ha un formato numerico logico." ;
             Text [ portuguese_brazilian ] = "Liefert WAHR, wenn der Wert ein logisches Zahlformat tr?gt." ;
             Text [ portuguese ] = "Devolve VERDADEIRO, se o valor se refere a um valor lgico." ;
-            Text [ finnish ] = "Palauttaa arvon TRUE, jos arvossa on looginen lukumuoto." ;
+            Text [ finnish ] = "Palauttaa arvon TOSI, jos arvossa on looginen lukumuoto." ;
             Text [ danish ] = "Returnerer SAND, hvis vrdien er en logisk vrdi." ;
             Text [ french ] = "Renvoie VRAI si la valeur fait rfrence  une valeur logique." ;
             Text [ swedish ] = "Returnerar SANT om vrdet har ett logiskt talformat." ;
@@ -11517,10 +11890,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Geeft als resultaat WAAR als de waarde een logische waarde is.";
             Text[ chinese_simplified ] = "如果这个数值是一个逻辑值,那就反馈TRUE 。";
             Text[ greek ] = " TRUE ()        .";
-            Text[ korean ] = "값이 논리적 숫자 형식일 경우 TRUE를 반환.";
+            Text[ korean ] = "값이 논리적 숫자 서식일 경우 TRUE를 반환";
             Text[ turkish ] = "Deer, mantksal bir say format ieriyorsa sonu DORU olur.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna TRUE si el valor porta un format de nombres lgic.";
+            Text[ thai ] = "ส่งกลับ จริง  ถ้าค่ามีรูปแบบตัวเลขตามตรรกะ";
         };
         ExtraData =
         {
@@ -11556,6 +11930,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Deer";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "valor";
+            Text[ thai ] = "ค่า";
         };
         String 3 // Description of Parameter 1
         {
@@ -11566,7 +11941,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Valore da esaminare." ;
             Text [ portuguese_brazilian ] = "Der Wert, der gepr?t werden soll." ;
             Text [ portuguese ] = " o valor a ser testado." ;
-            Text [ finnish ] = "Testattava arvo." ;
+            Text [ finnish ] = "Testattava arvo" ;
             Text [ danish ] = "Den vrdi som skal testes." ;
             Text [ french ] = "La valeur  examiner." ;
             Text [ swedish ] = "Vrdet som skall testas." ;
@@ -11586,6 +11961,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Denetlenecek deer.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor que s'ha de verificar.";
+            Text[ thai ] = "ค่าที่ถูกทดสอบ";
         };
     };
      // -=*# Resource for function ISTNV #*=-
@@ -11599,7 +11975,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Restituisce VERO se il valore  uguale a #N/D (valore non disponibile)." ;
             Text [ portuguese_brazilian ] = "Liefert WAHR, wenn der Wert gleich #NV ist." ;
             Text [ portuguese ] = "Devolve VERDADEIRO, se o valor  igual ao valor de erro #N/A.." ;
-            Text [ finnish ] = "Palauttaa arvon TRUE, jos arvo on #N/A." ;
+            Text [ finnish ] = "Palauttaa arvon TOSI, jos arvo on #N/A." ;
             Text [ danish ] = "Returnerer SAND, hvis vrdien er lig med #I/T." ;
             Text [ french ] = "Renvoie VRAI si la valeur fait rfrence  la valeur d'erreur #N/A." ;
             Text [ swedish ] = "Returnerar SANT om vrdet r lika med #SAKNAS." ;
@@ -11607,7 +11983,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Devuelve VERDADERO si el valor es el valor de error  #N/A." ;
             Text [ english_us ] = "Returns TRUE if value equals #N/A." ;
             Text[ chinese_simplified ] = "如果这个数值等于 #NV ,那就反馈TRUE 。";
-            Text[ russian ] = " ,      #/.";
+            Text[ russian ] = " ,    .";
             Text[ polish ] = "Zwraca warto PRAWDA, jeli wartoci bdu jest #NV.";
             Text[ japanese ] = "値が #N/A の場合、TRUE を返します。";
             Text[ chinese_traditional ] = "如果這個數值等於 #NV ﹐那就傳回TRUE 。";
@@ -11619,6 +11995,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Deer eittir #NV ise sonu DORU olur.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna TRUE si el valor s igual a #N/A.";
+            Text[ thai ] = "ส่งกลับ จริง  ถ้าค่าเท่ากับ #N/A";
         };
         ExtraData =
         {
@@ -11654,6 +12031,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Deer";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "valor";
+            Text[ thai ] = "ค่า";
         };
         String 3 // Description of Parameter 1
         {
@@ -11664,7 +12042,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Valore da esaminare." ;
             Text [ portuguese_brazilian ] = "Der Wert, der gepr?t werden soll." ;
             Text [ portuguese ] = " o valor a ser testado." ;
-            Text [ finnish ] = "Testattava arvo." ;
+            Text [ finnish ] = "Testattava arvo" ;
             Text [ danish ] = "Den vrdi som skal testes." ;
             Text [ french ] = "La valeur  examiner." ;
             Text [ swedish ] = "Vrdet som skall testas." ;
@@ -11684,6 +12062,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Denetlenecek deer.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor que s'ha de verificar.";
+            Text[ thai ] = "ค่าที่ถูกทดสอบ";
         };
     };
      // -=*# Resource for function ISTKTEXT #*=-
@@ -11697,7 +12076,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Restituisce VERO se il valore non  un testo." ;
             Text [ portuguese_brazilian ] = "Liefert WAHR, wenn der Wert kein Text ist." ;
             Text [ portuguese ] = "Devolve VERDADEIRO; se o valor no for texto." ;
-            Text [ finnish ] = "Palauttaa arvon TRUE, jos arvo ei ole teksti." ;
+            Text [ finnish ] = "Palauttaa arvon TOSI, jos arvo ei ole teksti." ;
             Text [ danish ] = "Returnerer SAND, hvis vrdien ikke er tekst." ;
             Text [ french ] = "Renvoie VRAI si la valeur n'est pas du texte." ;
             Text [ swedish ] = "Returnerar SANT om vrdet inte r en text." ;
@@ -11717,6 +12096,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Deer bir metin deil  ise sonu DORU olur.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna TRUE si el valor no s text.";
+            Text[ thai ] = "ส่งกลับ จริง ถ้าค่าไม่ใช่ข้อความ";
         };
         ExtraData =
         {
@@ -11752,6 +12132,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Deer";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "valor";
+            Text[ thai ] = "ค่า";
         };
         String 3 // Description of Parameter 1
         {
@@ -11762,7 +12143,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Valore da esaminare." ;
             Text [ portuguese_brazilian ] = "Der Wert, der gepr?t werden soll." ;
             Text [ portuguese ] = " o valor a ser testado." ;
-            Text [ finnish ] = "Testattava arvo." ;
+            Text [ finnish ] = "Testattava arvo" ;
             Text [ danish ] = "Den vrdi som skal testes." ;
             Text [ french ] = "La valeur  examiner." ;
             Text [ swedish ] = "Vrdet som skall testas." ;
@@ -11782,6 +12163,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Denetlenecek deer.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor que s'ha de verificar.";
+            Text[ thai ] = "ค่าที่ถูกทดสอบ";
         };
     };
      // -=*# Resource for function ISTTEXT #*=-
@@ -11795,7 +12177,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Restituisce VERO se il valore  un testo." ;
             Text [ portuguese_brazilian ] = "Liefert WAHR, wenn der Wert ein Text ist." ;
             Text [ portuguese ] = "Devolve VERDADEIRO, se o valor  um texto." ;
-            Text [ finnish ] = "Palauttaa arvon TRUE, jos arvo on teksti." ;
+            Text [ finnish ] = "Palauttaa arvon TOSI, jos arvo on teksti." ;
             Text [ danish ] = "Returnerer SAND, hvis vrdien er en tekst." ;
             Text [ french ] = "Renvoie VRAI si la valeur est un texte." ;
             Text [ swedish ] = "Returnerar SANT om vrdet r en text." ;
@@ -11815,6 +12197,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Deer bir metin ise sonu DORU olur.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna TRUE si el valor s text.";
+            Text[ thai ] = "ส่งกลับ จริง ถ้าค่าเป็นข้อความ";
         };
         ExtraData =
         {
@@ -11850,6 +12233,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Deer";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "valor";
+            Text[ thai ] = "ค่า";
         };
         String 3 // Description of Parameter 1
         {
@@ -11860,7 +12244,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Valore da esaminare." ;
             Text [ portuguese_brazilian ] = "Der Wert, der gepr?t werden soll." ;
             Text [ portuguese ] = " o valor a ser testado." ;
-            Text [ finnish ] = "Testattava arvo." ;
+            Text [ finnish ] = "Testattava arvo" ;
             Text [ danish ] = "Den vrdi som skal testes." ;
             Text [ french ] = "La valeur  examiner." ;
             Text [ swedish ] = "Vrdet som skall testas." ;
@@ -11880,6 +12264,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Denetlenecek deer.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor que s'ha de verificar.";
+            Text[ thai ] = "ค่าที่ถูกทดสอบ";
         };
     };
      // -=*# Resource for function ISTZAHL #*=-
@@ -11893,7 +12278,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Restituisce VERO se il valore  un numero." ;
             Text [ portuguese_brazilian ] = "Liefert WAHR, wenn der Wert eine Zahl ist." ;
             Text [ portuguese ] = "Devolve VERDADEIRO, se o valor  um nmero." ;
-            Text [ finnish ] = "Palauttaa arvon TRUE, jos arvo on luku." ;
+            Text [ finnish ] = "Palauttaa arvon TOSI, jos arvo on luku." ;
             Text [ danish ] = "Returnerer SAND, hvis vrdien er et tal." ;
             Text [ french ] = "Renvoie VRAI si la valeur est un nombre." ;
             Text [ swedish ] = "Returnerar SANT om vrdet r ett tal." ;
@@ -11913,6 +12298,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Deer bir say ise sonu DORU olur.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna TRUE si el valor s un nombre.";
+            Text[ thai ] = "ส่งกลับ จริง ถ้าค่าเป็นตัวเลข";
         };
         ExtraData =
         {
@@ -11948,6 +12334,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Deer";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "valor";
+            Text[ thai ] = "ค่า";
         };
         String 3 // Description of Parameter 1
         {
@@ -11958,7 +12345,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Valore da esaminare." ;
             Text [ portuguese_brazilian ] = "Der Wert, der gepr?t werden soll." ;
             Text [ portuguese ] = " o valor a ser testado." ;
-            Text [ finnish ] = "Testattava arvo." ;
+            Text [ finnish ] = "Testattava arvo" ;
             Text [ danish ] = "Den vrdi som skal testes." ;
             Text [ french ] = "La valeur  examiner." ;
             Text [ swedish ] = "Vrdet som skall testas." ;
@@ -11978,6 +12365,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Denetlenecek deer.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor que s'ha de verificar.";
+            Text[ thai ] = "ค่าที่ถูกทดสอบ";
         };
     };
      // -=*# Resource for function ISTFORMEL #*=-
@@ -11991,7 +12379,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Restituisce VERO se la cella  una cella di formula" ;
             Text [ portuguese_brazilian ] = "Liefert WAHR, wenn die Zelle eine Formelzelle ist." ;
             Text [ portuguese ] = "Devolve VERDADEIRO, se o contedo da clula  uma  frmula." ;
-            Text [ finnish ] = "Palauttaa arvon TRUE, jos solu on kaavasolu." ;
+            Text [ finnish ] = "Palauttaa arvon TOSI, jos solu on kaavasolu." ;
             Text [ danish ] = "Returnerer SAND, hvis cellen er en formelcelle." ;
             Text [ french ] = "Renvoie VRAI si la cellule est une cellule de formule." ;
             Text [ swedish ] = "Returnerar SANT om cellen r en formelcell." ;
@@ -12010,7 +12398,8 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ korean ] = "셀이 수식 셀이라면 TRUE를 반환.";
             Text[ turkish ] = "Hcre bir forml hcresi ise sonu DORU olur.";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Torna TRUE si la cella s una cella de frmula.";
+            Text[ catalan ] = "Torna TRUE si la cel.la s una cel.la de frmula.";
+            Text[ thai ] = "ส่งกลับ จริง ถ้าเซลล์เป็นสูตร";
         };
         ExtraData =
         {
@@ -12046,6 +12435,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Referans";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "referncia";
+            Text[ thai ] = "อ้างอิง";
         };
         String 3 // Description of Parameter 1
         {
@@ -12064,7 +12454,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Es la celda que se desea probar." ;
             Text [ english_us ] = "The cell to be checked." ;
             Text[ chinese_simplified ] = "要检验的单元格。";
-            Text[ russian ] = "  ,   .";
+            Text[ russian ] = ",   .";
             Text[ polish ] = "Komrka do sprawdzenia.";
             Text[ japanese ] = "検査の対象となるセル。";
             Text[ chinese_traditional ] = "要檢驗的儲存格。";
@@ -12075,7 +12465,8 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ korean ] = "검사되어야 할 셀입니다.";
             Text[ turkish ] = "Denetlenecek deer.";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Cella que s'ha de comprovar.";
+            Text[ catalan ] = "Cel.la que s'ha de comprovar.";
+            Text[ thai ] = "เซลล์ที่ถูกตรวจสอบ";
         };
     };
      // -=*# Resource for function FORMEL #*=-
@@ -12103,8 +12494,9 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ chinese_traditional ] = "反饋一個儲存格的公式。";
             Text[ arabic ] = "    .";
             Text[ turkish ] = "Forml hcresinin formln verir.";
-            Text[ catalan ] = "Torna la frmula d'una cella de frmula.";
+            Text[ catalan ] = "Torna la frmula d'una cel.la de frmula.";
             Text[ finnish ] = "Palauttaa kaavasolun kaavan.";
+            Text[ thai ] = "ส่งกลับสูตรของเซลล์";
         };
         ExtraData =
         {
@@ -12136,6 +12528,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Referans";
             Text[ catalan ] = "Referncia";
             Text[ finnish ] = "Viite";
+            Text[ thai ] = "อ้างอิง";
         };
         String 3 // Description of Parameter 1
         {
@@ -12159,8 +12552,9 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ chinese_traditional ] = "公式儲存格。";
             Text[ arabic ] = " .";
             Text[ turkish ] = "Forml hcresi.";
-            Text[ catalan ] = "Cella de frmula";
-            Text[ finnish ] = "Kaavasolu.";
+            Text[ catalan ] = "Cel.la de frmula";
+            Text[ finnish ] = "Kaavasolu";
+            Text[ thai ] = "เซลล์สูตร";
         };
     };
      // -=*# Resource for function N #*=-
@@ -12194,6 +12588,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Bir deeri sayya evirir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Converteix un valor en un nombre.";
+            Text[ thai ] = "แปลงค่าเป็นตัวเลข";
         };
         ExtraData =
         {
@@ -12229,6 +12624,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Deer";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "valor";
+            Text[ thai ] = "ค่า";
         };
         String 3 // Description of Parameter 1
         {
@@ -12238,7 +12634,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Valore che si desidera convertire." ;
             Text [ portuguese_brazilian ] = "Der Wert, der als Zahl interpretiert wird." ;
             Text [ portuguese ] = " o valor que se deseja converter." ;
-            Text [ finnish ] = "Luvuksi muunnettava arvo." ;
+            Text [ finnish ] = "Luvuksi muunnettava arvo" ;
             Text [ danish ] = "Den vrdi som skal konverteres." ;
             Text [ french ] = "La valeur  convertir." ;
             Text [ swedish ] = "Vrdet som tolkas som tal." ;
@@ -12258,6 +12654,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Say olarak yorumlanan deer.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor que s'ha d'interpretar com a nombre.";
+            Text[ thai ] = "ค่าที่ถูกตีความเป็นตัวเลข";
         };
     };
      // -=*# Resource for function NV #*=-
@@ -12272,7 +12669,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Non disponibile. Imposta nella cella il valore di errore #N/D." ;
             Text [ portuguese_brazilian ] = "Nicht verf?bar. Setzt eine Zelle auf den Fehlerwert #NV." ;
             Text [ portuguese ] = "Devolve o valor de erro #N/A." ;
-            Text [ finnish ] = "Ei kytettviss. Palauttaa virhearvon #N/A." ;
+            Text [ finnish ] = "Ei kytettviss Palauttaa virhearvon #N/A." ;
             Text [ danish ] = "Ikke tilgngelig. Stter en celle p fejlvrdien #NV." ;
             Text [ french ] = "Aucune valeur disponible. Renvoie la valeur d'erreur #N/A pour une cellule." ;
             Text [ swedish ] = "Inte tillgnglig. Returnerar felvrdet #Saknas fr en cell." ;
@@ -12280,7 +12677,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "No disponible. Devuelve el valor de error #N/A que significa que el valor no est disponible." ;
             Text [ english_us ] = "Not available. Returns the error value #N/A." ;
             Text[ chinese_simplified ] = "不存在。反馈一个错误数值 #NV 。";
-            Text[ russian ] = "   #/ ( ).";
+            Text[ russian ] = ".    #/.";
             Text[ polish ] = "Niedostpne. Zwraca warto bdu #N/D.";
             Text[ japanese ] = "エラー値 #N/A を返します。";
             Text[ chinese_traditional ] = "不存在。傳回一個錯誤數值 #NV 。";
@@ -12292,6 +12689,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Mevcut deil. #N/A hata mesajn verir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "No disponible. Torna el valor d'error #N/A.";
+            Text[ thai ] = "ใช้ไม่ได้ ส่งกลับค่า #N/A ผิดพลาด";
         };
         ExtraData =
         {
@@ -12331,6 +12729,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Deerin veri tipini belirler.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Defineix el tipus de dades d'un valor.";
+            Text[ thai ] = "กำหนดชนิดข้อมูลของค่า";
         };
         ExtraData =
         {
@@ -12366,6 +12765,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Deer";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "valor";
+            Text[ thai ] = "ค่า";
         };
         String 3 // Description of Parameter 1
         {
@@ -12395,6 +12795,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Veri tipi belirlenecek deer.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor del qual s'ha de determinar el tipus de dades.";
+            Text[ thai ] = "ค่าสำหรับชนิดของข้อมูลที่ถูกกำหนด";
         };
     };
      // -=*# Resource for function CELL/ZELLE #*=-
@@ -12417,13 +12818,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ polish ] = "Ustala adres, format lub zawarto komrki.";
             Text[ portuguese_brazilian ] = "Determines information about address, formatting or contents of a cell.";
             Text[ japanese ] = "セルの書式設定、位置、内容に関する情報を返します。";
-            Text[ korean ] = "주소, 서식 지정 또는 셀 내용에 대한 정보를 조사합니다.";
+            Text[ korean ] = "주소, 서식 설정 또는 셀 내용에 대한 정보를 확인합니다.";
             Text[ chinese_simplified ] = "求得一个单元格的地址,格式和内容。";
             Text[ chinese_traditional ] = "得出一個儲存格的地址,格式和內容。";
             Text[ turkish ] = "Determines information about address, formatting or contents of a cell.";
             Text[ arabic ] = "Determines information about address, formatting or contents of a cell.";
-            Text[ catalan ] = "Determina la informaci sobre l'adrea, el formatatge o el contingut d'una cella.";
+            Text[ catalan ] = "Determina la informaci sobre l'adrea, el formatatge o el contingut d'una cel.la.";
             Text[ finnish ] = "Mritt osoitetta, muotoilua tai solun sislt koskevat tiedot.";
+            Text[ thai ] = "กำหนดข้อมูลเกี่ยวกับที่อยู่, การจัดรูปแบบหรือเนื้อหาของเซลล์";
         };
         ExtraData =
         {
@@ -12437,7 +12839,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ english ] = "info_type" ;
             Text[ english_us ] = "info_type";
             Text[ portuguese ] = "Tipo_info";
-            Text[ russian ] = "_";
+            Text[ russian ] = " ";
             Text[ greek ] = "_";
             Text[ dutch ] = "infotype";
             Text[ french ] = "Type_info";
@@ -12455,6 +12857,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ arabic ] = "info_type";
             Text[ catalan ] = "info_type";
             Text[ finnish ] = "info_type";
+            Text[ thai ] = "ข้อมูล_ชนิด";
         };
         String 3 // Description of Parameter 1
         {
@@ -12462,7 +12865,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ english ] = "This text specifies the type of information." ;
             Text[ english_us ] = "String that specifies the type of information.";
             Text[ portuguese ] = "Cadeia de caracteres que determina o tipo de informao.";
-            Text[ russian ] = " ,   .";
+            Text[ russian ] = ",   .";
             Text[ greek ] = ",       ";
             Text[ dutch ] = "Tekenreeks die bepalend is voor het soort gegevens.";
             Text[ french ] = "Chane de caractres dterminant le type d'information.";
@@ -12473,13 +12876,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ polish ] = "Cig znakw definiujcy rodzaj informacji.";
             Text[ portuguese_brazilian ] = "This text specifies the type of information.";
             Text[ japanese ] = "調べたいセル情報の種類を表す文字列値を指定します。";
-            Text[ korean ] = "정보 유형을 결정하는 문자열.";
+            Text[ korean ] = "정보 유형을 결정하는 문자열";
             Text[ chinese_simplified ] = "确定某一选项类型的字串。";
             Text[ chinese_traditional ] = "確定某一選項類型的字串。";
             Text[ turkish ] = "This text specifies the type of information.";
             Text[ arabic ] = "This text specifies the type of information.";
             Text[ catalan ] = "Cadena que indica el tipus d'informaci.";
             Text[ finnish ] = "Merkkijono, joka mritt tietotyypin.";
+            Text[ thai ] = "สายอักขระที่ระบุชนิดของข้อมูล";
         };
         String 4 // Name of Parameter 2
         {
@@ -12505,6 +12909,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ arabic ] = "reference";
             Text[ catalan ] = "Referncia";
             Text[ finnish ] = "Viite";
+            Text[ thai ] = "อ้างอิง";
         };
         String 5 // Description of Parameter 2
         {
@@ -12512,7 +12917,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ english ] = "The position of the cell you want to examine." ;
             Text[ english_us ] = "The position of the cell you want to examine.";
             Text[ portuguese ] = "Posio da clula a ser examinada.";
-            Text[ russian ] = "  .";
+            Text[ russian ] = "  .";
             Text[ greek ] = "       .";
             Text[ dutch ] = "De positie van de cel die u wilt onderzoeken.";
             Text[ french ] = "La position de la cellule  examiner.";
@@ -12528,8 +12933,9 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ chinese_traditional ] = "要檢查的儲存格的位置。";
             Text[ turkish ] = "The position of the cell you want to examine.";
             Text[ arabic ] = "The position of the cell you want to examine.";
-            Text[ catalan ] = "Posici de la cella que voleu examinar.";
+            Text[ catalan ] = "Posici de la cel.la que voleu examinar.";
             Text[ finnish ] = "Tarkasteltavan solun sijainti.";
+            Text[ thai ] = "ตำแหน่งของเซลล์ที่คุณต้องการพิจารณา";
         };
     };
      // -=*# Resource for function AKTUELL #*=-
@@ -12547,22 +12953,23 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ danish ] = "Returnerer formlens aktuelle vrdi p denne funktions position." ;
             Text [ french ] = "Dtermine la valeur courante de la formule  la position de cette fonction." ;
             Text [ swedish ] = "Berknar det aktuella vrdet av en formel vid positionen dr funktionen str." ;
-            Text [ dutch ] = "Berekent de actuele waarde van de formule op de plaats waar deze functie zich bevindt." ;
+            Text [ dutch ] = "Berekent de huidige waarde van de formule op de plaats waar deze functie zich bevindt." ;
             Text [ spanish ] = "Devuelve el valor actual de la frmula en la posicin en la est esta funcin." ;
             Text [ english_us ] = "Calculates the current value of the formula at the present location. " ;
             Text[ chinese_simplified ] = "计算函数公式所在位置的现值。";
-            Text[ russian ] = "      .";
+            Text[ russian ] = "     .";
             Text[ polish ] = "Wyznacza aktualn warto formuy przy aktualnej pozycji funkcji.";
             Text[ japanese ] = "この位置のこの関数での数式の数値を返します。";
-            Text[ language_user1 ] = "Fehler im Deutschen: Posktion";
+            Text[ language_user1 ] = "Fehl; Fehler im Deutschen: Posktion";
             Text[ chinese_traditional ] = "計算函數公式所在位置的現值。";
             Text[ arabic ] = "      .";
-            Text[ dutch ] = "Berekent de actuele waarde van de formule op de plaats waar deze functie zich bevindt.";
+            Text[ dutch ] = "Berekent de huidige waarde van de formule op de plaats waar deze functie zich bevindt.";
             Text[ chinese_simplified ] = "计算函数公式所在位置的现值。";
             Text[ greek ] = "          .";
-            Text[ korean ] = "현재의 위치에 대한 수식의 현재 값을 계산";
+            Text[ korean ] = "현재의 위치에 대한 수식의 현재값을 계산합니다.";
             Text[ turkish ] = "Formuln gncel deerini, bu fonksiyonun bulunduu konumda hesaplar.";
             Text[ catalan ] = "Calcula el valor actual de la frmula a la ubicaci actual. ";
+            Text[ thai ] = "คำนวณค่าปัจจุบันของสูตร ณ ที่ตั้งปัจจุบัน ";
         };
         ExtraData =
         {
@@ -12582,7 +12989,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Restituisce il valore logico FALSO." ;
             Text [ portuguese_brazilian ] = "Setzt den Wahrheitswert FALSCH." ;
             Text [ portuguese ] = "Devolve o valor lgico FALSO." ;
-            Text [ finnish ] = "Mritt loogisen arvon arvoksi UNTRUE." ;
+            Text [ finnish ] = "Mritt loogisen arvon arvoksi EPTOSI." ;
             Text [ danish ] = "Returnerer den logiske vrdi FALSK." ;
             Text [ french ] = "Renvoie la valeur logique FAUX." ;
             Text [ swedish ] = "Returnerar det logiska vrdet FALSKT." ;
@@ -12590,7 +12997,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Devuelve el valor lgico FALSO." ;
             Text [ english_us ] = "Defines the logical value as FALSE." ;
             Text[ chinese_simplified ] = "设定逻辑值 FALSE 。";
-            Text[ russian ] = "   .";
+            Text[ russian ] = "   .";
             Text[ polish ] = "Zwraca warto logiczn FASZ.";
             Text[ japanese ] = "論理値 FALSE を返します。";
             Text[ chinese_traditional ] = "設定邏輯值 FALSE 。";
@@ -12598,10 +13005,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Geeft de logische waarde ONWAAR.";
             Text[ chinese_simplified ] = "设定逻辑值 FALSE 。";
             Text[ greek ] = "     (FALSE).";
-            Text[ korean ] = "논리 값을 FALSE로 정의";
+            Text[ korean ] = "논리 값을 FALSE로 정의합니다.";
             Text[ turkish ] = "Mantksal deeri YANLI olarak tanmlar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Defineix el valor lgic com a FALSE.";
+            Text[ thai ] = "ระบุค่าทางตรรกะเป็น เท็จ";
         };
         ExtraData =
         {
@@ -12629,7 +13037,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Invierte el valor lgico del argumento." ;
             Text [ english_us ] = "Reverses the value of the argument." ;
             Text[ chinese_simplified ] = "对参数值求反。";
-            Text[ russian ] = "     .";
+            Text[ russian ] = "   .";
             Text[ polish ] = "Odwraca warto argumentu.";
             Text[ japanese ] = "引数が TRUE のとき FALSE を、FALSE のとき TRUE を返します。";
             Text[ chinese_traditional ] = "對參數值求反。";
@@ -12641,6 +13049,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Deikenin deerini tersine evirir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Inverteix el valor de l'argument.";
+            Text[ thai ] = "สงวนค่าของอาร์กิวเม้นท์";
         };
         ExtraData =
         {
@@ -12661,7 +13070,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ french ] = "Valeur_logique" ;
             Text [ swedish ] = "logiskt vrde" ;
             Text [ dutch ] = "Logische waarde" ;
-            Text [ spanish ] = "valor_lgico" ;
+            Text [ spanish ] = "Valor lgico" ;
             Text [ english_us ] = "Logical value" ;
             Text[ chinese_simplified ] = "logical value";
             Text[ russian ] = " ";
@@ -12676,6 +13085,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Mantksal deer";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor lgic";
+            Text[ thai ] = "ค่าทางตรรกะ";
         };
         String 3 // Description of Parameter 1
         {
@@ -12685,7 +13095,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Valore o espressione che pu dare come risultato VERO o FALSO." ;
             Text [ portuguese_brazilian ] = "Ein Ausdruck, der WAHR oder FALSCH annehmen kann." ;
             Text [ portuguese ] = " um valor ou uma expresso que pode ser avaliado como VERDADEIRO ou FALSO." ;
-            Text [ finnish ] = "Lauseke, jonka arvo voi olla TRUE tai UNTRUE." ;
+            Text [ finnish ] = "Lauseke, jonka arvo voi olla TOSI tai EPTOSI." ;
             Text [ danish ] = "Et udtryk som kan evalueres som SAND eller FALSK." ;
             Text [ french ] = "Une expression qui peut prendre la valeur VRAI ou FAUX." ;
             Text [ swedish ] = "Ett uttryck som kan vara SANT eller FALSKT." ;
@@ -12693,7 +13103,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "es un valor o expresin que se puede evaluar como VERDADERO o FALSO." ;
             Text [ english_us ] = "An expression that can be either TRUE or FALSE." ;
             Text[ chinese_simplified ] = "一个能够计算出 TRUE 或 FALSE 的表达式。";
-            Text[ russian ] = ",       .";
+            Text[ russian ] = ",       .";
             Text[ polish ] = "Wyraenie, ktre moe przyj warto PRAWDA lub FASZ.";
             Text[ japanese ] = "論理値あるいは結果が TRUE または FALSE になる論理式。";
             Text[ chinese_traditional ] = "一個能夠計算出 TRUE 或 FALSE 的表達式。";
@@ -12705,6 +13115,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "DORU ya da YANLI olabilen bir terim.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Expressi que tant pot ser TRUE com FALSE.";
+            Text[ thai ] = "นิพจน์ที่สามารถเป็นไม่ จริง ก็ เท็จ";
         };
     };
      // -=*# Resource for function WAHR #*=-
@@ -12718,7 +13129,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Restituisce il valore logico VERO." ;
             Text [ portuguese_brazilian ] = "Setzt den Wahrheitswert WAHR." ;
             Text [ portuguese ] = "Devolve o valor lgico VERDADEIRO." ;
-            Text [ finnish ] = "Palauttaa loogisen arvon TRUE." ;
+            Text [ finnish ] = "Palauttaa loogisen arvon TOSI." ;
             Text [ danish ] = "Returnerer den logiske vrdi SAND." ;
             Text [ french ] = "Renvoie la valeur logique VRAI." ;
             Text [ swedish ] = "Returnerar det logiska vrdet SANT." ;
@@ -12726,7 +13137,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Devuelve el valor lgico VERDADERO." ;
             Text [ english_us ] = "Returns the logical value TRUE." ;
             Text[ chinese_simplified ] = "设定逻辑值 TRUE 。";
-            Text[ russian ] = "   .";
+            Text[ russian ] = "   .";
             Text[ polish ] = "Zwraca warto logiczn PRAWDA.";
             Text[ japanese ] = "論理値 TRUE を返します。";
             Text[ chinese_traditional ] = "返回邏輯數值 TRUE 。";
@@ -12738,6 +13149,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "DORU mantksal deerini verir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna el valor lgic TRUE.";
+            Text[ thai ] = "ส่งกลับค่าทางตรรกะ จริง";
         };
         ExtraData =
         {
@@ -12766,7 +13178,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Especifica una prueba lgica que se desea efectuar." ;
             Text [ english_us ] = "Specifies a logical test to be performed." ;
             Text[ chinese_simplified ] = "指定一个要执行的逻辑值检查。";
-            Text[ russian ] = "  ,   .";
+            Text[ russian ] = "  ,   .";
             Text[ polish ] = "Definiuje test logiczny, ktry ma zosta wykonany.";
             Text[ japanese ] = "論理式の結果に応じて、指定した値を返します。";
             Text[ chinese_traditional ] = "執行邏輯值檢查。";
@@ -12778,6 +13190,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Yaplacak bir mantksal denetim belirtir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Indica una verificaci lgica que s'ha de realitzar.";
+            Text[ thai ] = "ระบุการทดสอบทางตรรกะที่จะถูกแสดง";
         };
         ExtraData =
         {
@@ -12799,10 +13212,10 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ french ] = "Test" ;
             Text [ swedish ] = "test" ;
             Text [ dutch ] = "Test" ;
-            Text [ spanish ] = "Prueba_lgica" ;
+            Text [ spanish ] = "Prueba" ;
             Text [ english_us ] = "Test" ;
             Text[ chinese_simplified ] = "logical_test";
-            Text[ russian ] = "_";
+            Text[ russian ] = "";
             Text[ polish ] = "test_logiczny";
             Text[ japanese ] = "論理式";
             Text[ chinese_traditional ] = "logical_test";
@@ -12814,6 +13227,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Denetim";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Verificaci";
+            Text[ thai ] = "ทดสอบ";
         };
         String 3 // Description of Parameter 1
         {
@@ -12823,7 +13237,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Valore o espressione qualsiasi che pu dare come risultato VERO o FALSO." ;
             Text [ portuguese_brazilian ] = "Ein beliebiger Wert oder Ausdruck, der WAHR oder FALSCH sein kann." ;
             Text [ portuguese ] = " qualquer valor ou expresso que pode ser  VERDADEIRO ou FALSO." ;
-            Text [ finnish ] = "Arvo tai lauseke, joka voi olla joko TRUE tai UNTRUE." ;
+            Text [ finnish ] = "Arvo tai lauseke, joka voi olla joko TOSI tai EPTOSI." ;
             Text [ danish ] = "En vilkrlig vrdi eller et vilkrligt udtryk som kan vre SAND eller FALSK." ;
             Text [ french ] = "Toute valeur ou expression dont le rsultat peut tre VRAI ou FAUX." ;
             Text [ swedish ] = "Ett valfritt vrde eller uttryck som kan berknas till SANT eller FALSKT." ;
@@ -12843,6 +13257,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "DORU ya da YANLI olabilecek herhangi bir deer ya da terim.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Qualsevol valor o expressi que tant pot ser TRUE com FALSE.";
+            Text[ thai ] = "ค่าหรือนิพจน์ใด ๆ ที่ไม่ จริงก็ เท็จ";
         };
         String 4 // Name of Parameter 2
         {
@@ -12860,7 +13275,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Valor_si_verdadero" ;
             Text [ english_us ] = "Then_value" ;
             Text[ chinese_simplified ] = "value_if_true";
-            Text[ russian ] = "__";
+            Text[ russian ] = " ";
             Text[ polish ] = "warto_jeeli_prawda";
             Text[ japanese ] = "TRUE の場合";
             Text[ chinese_traditional ] = "value_if_true";
@@ -12872,6 +13287,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "O halde_deeri";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Then_value";
+            Text[ thai ] = "ฉะนั้น_ค่า";
         };
         String 5 // Description of Parameter 2
         {
@@ -12882,7 +13298,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Valore che viene restituito se Test  VERO." ;
             Text [ portuguese_brazilian ] = "Das Resultat der Funktion, wenn die Wahrheitspr?ung WAHR ergibt." ;
             Text [ portuguese ] = " o valor devolvido se teste_lgico for VERDADEIRO." ;
-            Text [ finnish ] = "Funktion tulos, jos loogisen testin tulos on TRUE." ;
+            Text [ finnish ] = "Funktion tulos, jos loogisen testin tulos on TOSI." ;
             Text [ danish ] = "Funktionens resultat hvis logisk_test er SAND." ;
             Text [ french ] = "La valeur renvoye si le test logique est VRAI." ;
             Text [ swedish ] = "Resultatet av funktionen om det logiska testet r SANT." ;
@@ -12890,7 +13306,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Es el valor que se devolver si prueba_lgica es VERDADERO." ;
             Text [ english_us ] = "The result of the function if the logical test returns a TRUE." ;
             Text[ chinese_simplified ] = "如果逻辑测试结果为 TRUE ,则反馈函数值。";
-            Text[ russian ] = ",  ,  _   .";
+            Text[ russian ] = ",  ,     .";
             Text[ polish ] = "Wynik funkcji, jeli test_logiczny wyznaczy warto PRAWDA.";
             Text[ japanese ] = "論理式の結果が TRUE のときに返す値。";
             Text[ chinese_traditional ] = "如果邏輯測試結果為 TRUE ﹐則傳回函數值。";
@@ -12902,6 +13318,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Mantksal denetim DORU sonucuna ulatnda fonksiyonun sonucu.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Resultat de la funci si la verificaci lgica torna un TRUE.";
+            Text[ thai ] = "ผลลัพธ์ของฟังก์ชั่นถ้าการทดสอบทางตรรกะส่งกลับ จริง";
         };
         String 6 // Name of Parameter 3
         {
@@ -12919,7 +13336,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Valor_si_falso" ;
             Text [ english_us ] = "Otherwise_value" ;
             Text[ chinese_simplified ] = "value_if_false";
-            Text[ russian ] = "__";
+            Text[ russian ] = " ";
             Text[ polish ] = "warto_jeeli_fasz";
             Text[ japanese ] = "FALSE の場合";
             Text[ chinese_traditional ] = "value_if_false";
@@ -12931,6 +13348,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Yoksa_deeri";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Otherwise_value";
+            Text[ thai ] = "มิฉะนั้น_ค่า";
         };
         String 7 // Description of Parameter 3
         {
@@ -12941,7 +13359,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Valore che viene restituito se Test  FALSO." ;
             Text [ portuguese_brazilian ] = "Das Resultat der Funktion, wenn die Wahrheitspr?ung FALSCH ergibt." ;
             Text [ portuguese ] = " o valor devolvido se teste_lgico for FALSO" ;
-            Text [ finnish ] = "Funktion tulos, jos loogisen testin tulos on UNTRUE." ;
+            Text [ finnish ] = "Funktion tulos, jos loogisen testin tulos on EPTOSI." ;
             Text [ danish ] = "Funktionens resultat hvis logisk_test er FALSK." ;
             Text [ french ] = "La valeur renvoye si le test logique est FAUX." ;
             Text [ swedish ] = "Resultatet av funktionen om det logiska testet r FALSKT." ;
@@ -12949,7 +13367,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Es el valor que se devolver si prueba_lgica es FALSO." ;
             Text [ english_us ] = "The result of the function if the logical test returns FALSE." ;
             Text[ chinese_simplified ] = "如果逻辑测试结果为 FALSE ,则反馈函数值。";
-            Text[ russian ] = ",  ,  _   .";
+            Text[ russian ] = ",  ,     .";
             Text[ polish ] = "Wynik funkcji, jeli test_logiczny wyznaczy warto FASZ.";
             Text[ japanese ] = "論理式の結果が FALSE のときに返す値。";
             Text[ chinese_traditional ] = "如果邏輯測試結果為 FALSE ﹐則傳回函數值。";
@@ -12961,6 +13379,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Mantksal denetim YANLI sonucuna ulatnda fonksiyonun sonucu.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Resultat de la funci si la verificaci lgica torna FALSE.";
+            Text[ thai ] = "ผลลัพธ์ของฟังก์ชั่นถ้าการทดสอบทางตรรกะส่งกลับ เท็จ";
         };
     };
      // -=*# Resource for function ODER #*=-
@@ -12974,7 +13393,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Restituisce VERO se almeno un argomento  VERO." ;
             Text [ portuguese_brazilian ] = "Setzt WAHR, wenn ein Argument WAHR ist." ;
             Text [ portuguese ] = "Devolve VERDADEIRO, se algum dos argumentos for VERDADEIRO." ;
-            Text [ finnish ] = "Palauttaa arvon TRUE, jos kaikki argumentit ovat tosia." ;
+            Text [ finnish ] = "Palauttaa arvon TOSI, jos kaikki argumentit ovat tosia." ;
             Text [ danish ] = "Returnerer SAND, hvis et argument er SAND." ;
             Text [ french ] = "Renvoie VRAI si un argument est VRAI." ;
             Text [ swedish ] = "Returnerar SANT om ett argument r SANT." ;
@@ -12994,6 +13413,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Deiken DORU ise DORU sonucunu verir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna TRUE si un argument s TRUE.";
+            Text[ thai ] = "ส่งกลับ จริง ถ้าอาร์กิวเม้นท์เป็น จริง";
         };
         ExtraData =
         {
@@ -13009,12 +13429,12 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Valore logico " ;
             Text [ portuguese_brazilian ] = "Wahrheitswert " ;
             Text [ portuguese ] = "Valor_lgico " ;
-            Text [ finnish ] = "Looginen arvo" ;
+            Text [ finnish ] = "Looginen arvo " ;
             Text [ danish ] = "Logisk vrdi " ;
             Text [ french ] = "Valeur_logique  " ;
             Text [ swedish ] = "Logiskt vrde  " ;
-            Text [ dutch ] = "Logische waarde  " ;
-            Text [ spanish ] = "valor_lgico " ;
+            Text [ dutch ] = "Logische waarde" ;
+            Text [ spanish ] = "Valor lgico " ;
             Text [ english_us ] = "Logical value " ;
             Text[ chinese_simplified ] = "logical value ";
             Text[ russian ] = "   ";
@@ -13022,13 +13442,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ japanese ] = "論理値 ";
             Text[ chinese_traditional ] = "Logical Value ";
             Text[ arabic ] = "Logical Value ";
-            Text[ dutch ] = "Logische waarde  ";
+            Text[ dutch ] = "Logische waarde";
             Text[ chinese_simplified ] = "logical value ";
             Text[ greek ] = "  ";
             Text[ korean ] = "논리 값";
             Text[ turkish ] = "Mantksal deer ";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor lgic ";
+            Text[ thai ] = "ค่าทางตรรกะ ";
         };
         String 3 // Description of Parameter 1
         {
@@ -13039,7 +13460,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Valore logico 1; Valore logico 2;... sono da 1 a 30 condizioni da verificare che possono avere il valore VERO o FALSO." ;
             Text [ portuguese_brazilian ] = "Wahrheitswert 1;Wahrheitswert 2;... sind 1 bis 30 Bedingungen, die ?berpr?t werden sollen und jeweils entweder WAHR oder FALSCH liefern." ;
             Text [ portuguese ] = " 1 at 30 condies a testar como VERDADEIRA ou FALSA." ;
-            Text [ finnish ] = "Looginen arvo 1, looginen arvo 2 ja niin edelleen ovat 1 - 30 ehtoa, jotka testataan ja jotka palauttavat joko arvon TRUE tai UNTRUE." ;
+            Text [ finnish ] = "Looginen arvo 1, looginen arvo 2 ja niin edelleen ovat 1 - 30 ehtoa, jotka testataan ja jotka palauttavat joko arvon TOSI tai EPTOSI." ;
             Text [ danish ] = "Logisk 1; logisk 2; ... er 1 til 30 betingelser, der skal testes og hver kan vre enten SAND eller FALSK." ;
             Text [ french ] = "Valeur_logique 1, valeur_logique 2, ... sont de 1  30 conditions que vous souhaitez tester, et qui peuvent tre soit VRAI, soit FAUX." ;
             Text [ swedish ] = "logisk1; logisk 2;... r 1 till 30 villkor som skall testas och som kan returnera antingen SANT eller FALSKT." ;
@@ -13059,6 +13480,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Mantksal deer 1;mantksal deer 2;... Denetlenmeleri istenen ve DORU ya da YANLI sonucunu veren 1 - 30 aras kouldur.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor lgic 1, valor lgic 2,... sn entre 1 i 30 condicions que s'han de verificar i que tornen TRUE o b FALSE.";
+            Text[ thai ] = "ค่าทางตรรกะ 1, ค่าทางตรรกะ 2,... เป็นเงื่อนไขตั้งแต่ 1 ถึง 30 จะถูกทดสอบและส่งกลับไม่จริงก็เท็จ";
         };
     };
      // -=*# Resource for function UND #*=-
@@ -13072,7 +13494,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Restituisce VERO solo se tutti gli argomenti hanno valore VERO." ;
             Text [ portuguese_brazilian ] = "Setzt WAHR, wenn alle Argumente WAHR sind." ;
             Text [ portuguese ] = "Devolver VERDADEIRO, se todos os argumentos forem VERDADEIROS" ;
-            Text [ finnish ] = "Palauttaa arvon TRUE, jos kaikki argumentit ovat tosia." ;
+            Text [ finnish ] = "Palauttaa arvon TOSI, jos kaikki argumentit ovat tosia." ;
             Text [ danish ] = "Returnerer SAND, hvis alle argumenter er SAND." ;
             Text [ french ] = "Renvoie VRAI si tous les arguments sont VRAI." ;
             Text [ swedish ] = "Returnerar SANT om alla argument r lika med SANT.." ;
@@ -13092,6 +13514,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Tm deikenler DORU ise DORU verir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna TRUE si tots els arguments sn TRUE.";
+            Text[ thai ] = "ส่งกลับ จริง ถ้าอาร์กิวเม้นท์ทั้งหมดเป็นจริง";
         };
         ExtraData =
         {
@@ -13107,12 +13530,12 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Valore logico " ;
             Text [ portuguese_brazilian ] = "Wahrheitswert " ;
             Text [ portuguese ] = "Valor lgico " ;
-            Text [ finnish ] = "Looginen arvo" ;
+            Text [ finnish ] = "Looginen arvo " ;
             Text [ danish ] = "Logisk vrdi " ;
             Text [ french ] = "Valeur logique  " ;
             Text [ swedish ] = "logiskt vrde   " ;
-            Text [ dutch ] = "Logische waarde  " ;
-            Text [ spanish ] = "Valor_lgico  " ;
+            Text [ dutch ] = "Logische waarde" ;
+            Text [ spanish ] = "Valor lgico  " ;
             Text [ english_us ] = "Logical value " ;
             Text[ chinese_simplified ] = "logical value ";
             Text[ russian ] = "  ";
@@ -13120,13 +13543,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ japanese ] = "論理値 ";
             Text[ chinese_traditional ] = "Logical Value ";
             Text[ arabic ] = "Logical Value ";
-            Text[ dutch ] = "Logische waarde  ";
+            Text[ dutch ] = "Logische waarde";
             Text[ chinese_simplified ] = "logical value ";
             Text[ greek ] = "  ";
             Text[ korean ] = "논리 값";
             Text[ turkish ] = "Mantksal deer ";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor lgic ";
+            Text[ thai ] = "ค่าทางตรรกะ ";
         };
         String 3 // Description of Parameter 1
         {
@@ -13137,11 +13561,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Valore logico 1; Valore logico 2;... sono da 1 a 30 condizioni da verificare che possono avere valore VERO o FALSO." ;
             Text [ portuguese_brazilian ] = "Wahrheitswert 1;Wahrheitswert 2;... sind 1 bis 30 Bedingungen, die ?berpr?t werden sollen und jeweils entweder WAHR oder FALSCH liefern." ;
             Text [ portuguese ] = "Valor lgico 1;Valor lgico 2;...so 1 a 30 condies a ser verificadas e a devolver como VERDADEIRO ou FALSO." ;
-            Text [ finnish ] = "Looginen arvo 1, looginen arvo 2 ja niin edelleen ovat 1 - 30 ehtoa, jotka testataan ja joista jokainen palauttaa joko arvon TRUE tai UNTRUE." ;
+            Text [ finnish ] = "Looginen arvo 1, looginen arvo 2 ja niin edelleen ovat 1 - 30 ehtoa, jotka testataan ja joista jokainen palauttaa joko arvon TOSI tai EPTOSI." ;
             Text [ danish ] = "Logisk 1; logisk 2; ... er 1 til 30 betingelser, der skal testes og hver kan vre enten SAND eller FALSK." ;
             Text [ french ] = "Valeur logique 1, valeur logique 2, ... reprsentent 1  30 conditions qui doivent tre testes et qui renvoient soit VRAI, soit FAUX." ;
             Text [ swedish ] = "Logisk1; logisk2;... r de 1 till 30 villkor som skall kontrolleras och som vardera returnerar antingen SANN eller FALSK." ;
-            Text [ dutch ] = "Logisch 1;Logisch 2;... zijn 1 tot 30 voorwaarden die moeten worden gecontroleerd en die ofwel WAAR of FOUT opleveren." ;
+            Text [ dutch ] = "Logisch 1;Logisch 2;... zijn 1 tot 30 voorwaarden die moeten worden gecontroleerd en die ofwel WAAR of ONWAAR opleveren." ;
             Text [ spanish ] = "Valor lgico 1; Valor lgico 2;...son de 1 a 30 condiciones que desea comprobar y que pueden ser VERDADERO o FALSO." ;
             Text [ english_us ] = "Logical value 1, logical value 2;...are 1 to 30 conditions to be tested and each returns either TRUE or FALSE." ;
             Text[ chinese_simplified ] = "逻辑值 1;逻辑值 2;... 是 1 至 30 个待检查的条件值,\n结果为 TRUE 或 FALSE 。";
@@ -13150,13 +13574,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ japanese ] = "論理値 1;論理値 2;...は TRUE か FALSE かを評価する1から30個までの論理値。";
             Text[ chinese_traditional ] = "邏輯值 1;邏輯值 2;... 是 1 至 30 個待檢查的條件值﹐結果為 TRUE 或 FALSE 。";
             Text[ arabic ] = "logical1;logical 2;...  1  30        TRUE  FALSE.";
-            Text[ dutch ] = "Logisch 1;Logisch 2;... zijn 1 tot 30 voorwaarden die moeten worden gecontroleerd en die ofwel WAAR of FOUT opleveren.";
+            Text[ dutch ] = "Logisch 1;Logisch 2;... zijn 1 tot 30 voorwaarden die moeten worden gecontroleerd en die ofwel WAAR of ONWAAR opleveren.";
             Text[ chinese_simplified ] = "逻辑值 1;逻辑值 2;... 是 1 至 30 个待检查的条件值,\n结果为 TRUE 或 FALSE 。";
             Text[ greek ] = "  1,   2;...  1  30          TRUE ()  FALSE ().";
             Text[ korean ] = "논리 값 1, 논리 값 2;...는 테스트되어야 하는 1에서 30까지의 조건이며, TRUE 또는 FALSE를 반환합니다.";
             Text[ turkish ] = "Mantksal deer 1;Mantksal deer 2;... kontrol edilmesi istenen, DORU ya da YANLI veren 1 - 30 aras kouldur.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor lgic 1, valor lgic 2,... sn entre 1 i 30 condicions que s'han de verificar i cada una de les quals tornen TRUE o FALSE.";
+            Text[ thai ] = "ค่าทางตรรกะ 1, ค่าทางตรรกะ 2;...เป็นเงื่อนไขตั้งแต่ 1 ถึง 30 จะถูกทดสอบและแต่ละเงื่อนไขจะส่งกลับไม่จริงก็เท็จ";
         };
     };
      // -=*# Resource for function ABS #*=-
@@ -13178,7 +13603,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Valor absoluto de un nmero." ;
             Text [ english_us ] = "Absolute value of a number." ;
             Text[ chinese_simplified ] = "一个数字的绝对值。";
-            Text[ russian ] = "   .";
+            Text[ russian ] = "     (  ).";
             Text[ polish ] = "Oblicza warto bezwzgldn liczby.";
             Text[ japanese ] = "数値の絶対値を返します。";
             Text[ chinese_traditional ] = "一個數字的絕對值。";
@@ -13190,6 +13615,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Bir saynn mutlak deeri.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor absolut d'un nombre.";
+            Text[ thai ] = "ค่าสัมบูรณ์ของตัวเลข";
         };
         ExtraData =
         {
@@ -13225,6 +13651,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -13242,7 +13669,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "nmero real cuyo valor absoluto se desea obtener." ;
             Text [ english_us ] = "The number whose absolute value is to be returned." ;
             Text[ chinese_simplified ] = "要计算其绝对值的数字。";
-            Text[ russian ] = ",     .";
+            Text[ russian ] = ",     .";
             Text[ polish ] = "Liczba, ktrej warto bezwzgldna ma zosta obliczona.";
             Text[ japanese ] = "絶対値を求める実数。";
             Text[ chinese_traditional ] = "要計算其絕對值的數字。";
@@ -13254,6 +13681,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Mutlak deeri hesaplanan say.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre el valor absolut del qual s'ha de tornar.";
+            Text[ thai ] = "ตัวเลขของค่าสัมบูรณ์ที่ถูกส่งกลับ";
         };
     };
      // -=*# Resource for function POTENZ #*=-
@@ -13267,7 +13695,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Restituisce il risultato di un numero elevato alla potenza indicata." ;
             Text [ portuguese_brazilian ] = "Potenziert eine Zahl mit einer anderen." ;
             Text [ portuguese ] = "Devolve o valor de um nmero elevado a uma potncia." ;
-            Text [ finnish ] = "Korottaa luvun potenssiin (joka mrytyy toisen luvun perusteella)." ;
+            Text [ finnish ] = "Korottaa luvun potenssiin, joka mrytyy toisen luvun perusteella." ;
             Text [ danish ] = "Beregner resultatet af et tal oplftet til en potens." ;
             Text [ french ] = "Renvoie la valeur du nombre lev  une puissance." ;
             Text [ swedish ] = "Resultatet av ett tal upphjt till en exponent." ;
@@ -13275,7 +13703,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Devuelve el resultado de elevar el argumento nmero a una potencia." ;
             Text [ english_us ] = "Raises a number to the power of another." ;
             Text[ chinese_simplified ] = "数字的乘幂。";
-            Text[ russian ] = "    .";
+            Text[ russian ] = "   .";
             Text[ polish ] = "Podaje warto liczby podniesionej do potgi.";
             Text[ japanese ] = "数値のべき乗を返します。";
             Text[ chinese_traditional ] = "數字的乘冪。";
@@ -13287,6 +13715,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Sayy baka bir saynn kuvvetine karr.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Eleva un nombre a la potncia d'un altre.";
+            Text[ thai ] = "ยกกำลังตัวเลขให้กับตัวเลขอื่น";
         };
         ExtraData =
         {
@@ -13307,7 +13736,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ french ] = "Base" ;
             Text [ swedish ] = "bas" ;
             Text [ dutch ] = "Basis" ;
-            Text [ spanish ] = "nmero" ;
+            Text [ spanish ] = "Base" ;
             Text [ english_us ] = "Base" ;
             Text[ chinese_simplified ] = "Base";
             Text[ russian ] = "";
@@ -13318,10 +13747,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Basis";
             Text[ chinese_simplified ] = "Base";
             Text[ greek ] = "";
-            Text[ korean ] = "기본";
+            Text[ korean ] = "Base";
             Text[ turkish ] = "Taban";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Base";
+            Text[ thai ] = "ฐาน";
         };
         String 3 // Description of Parameter 1
         {
@@ -13351,6 +13781,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Kuvveti alnacak say.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre que s'ha d'elevar a la potncia d'un altre.";
+            Text[ thai ] = "ตัวเลขที่เป็นตัวถูกยกกำลังตัวเลขอื่น";
         };
         String 4 // Name of Parameter 2
         {
@@ -13376,10 +13807,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Macht";
             Text[ chinese_simplified ] = "Power";
             Text[ greek ] = "";
-            Text[ korean ] = "거듭제곱";
+            Text[ korean ] = "지수";
             Text[ turkish ] = "Kuvvet";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Potncia";
+            Text[ thai ] = "ยกกำลัง";
         };
         String 5 // Description of Parameter 2
         {
@@ -13397,7 +13829,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "es el exponente al que desea elevar el nmero base." ;
             Text [ english_us ] = "The power by which the number is to be raised." ;
             Text[ chinese_simplified ] = "指数,底数按该指数次幂乘方。";
-            Text[ russian ] = " ,    .";
+            Text[ russian ] = " ,    .";
             Text[ polish ] = "Wykadnik potgi.";
             Text[ japanese ] = "数値を底とするべき乗の指数。";
             Text[ chinese_traditional ] = "指數﹐底數按該指數次冪乘方。";
@@ -13409,6 +13841,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Saynn kuvvetinin alnaca s";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Potncia a qu s'ha d'elevar el nombre.";
+            Text[ thai ] = "ยกกำลังโดยตัวเลขยกกำลังนั้น";
         };
     };
      // -=*# Resource for function ANZAHLLEEREZELLEN #*=-
@@ -13430,7 +13863,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Cuenta el nmero de celdas vacas dentro de un rea." ;
             Text [ english_us ] = "Counts the blank cells in a specified range." ;
             Text[ chinese_simplified ] = "计算一个区域中空白单元格的数目。";
-            Text[ russian ] = "     .";
+            Text[ russian ] = "     .";
             Text[ polish ] = "Liczy puste komrki w wyznaczonym obszarze.";
             Text[ japanese ] = "指定範囲の空白セルの数を数えます。";
             Text[ chinese_traditional ] = "計算一個區域中空白儲存格的數目。";
@@ -13438,10 +13871,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Telt het aantal cellen in een bereik.";
             Text[ chinese_simplified ] = "计算一个区域中空白单元格的数目。";
             Text[ greek ] = "     .";
-            Text[ korean ] = "영역에서 빈 셀 갯수 세기";
+            Text[ korean ] = "범위에서 빈 셀 갯수 세기";
             Text[ turkish ] = "Belirli bir aralktaki bo hcreleri sayar.";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Compta les celles en blanc d'una rea indicada.";
+            Text[ catalan ] = "Compta les cel.les en blanc d'una rea indicada.";
+            Text[ thai ] = "นับเซลล์ที่ว่างในช่วงที่ระบุ";
         };
         ExtraData =
         {
@@ -13473,10 +13907,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Bereik";
             Text[ chinese_simplified ] = "range";
             Text[ greek ] = "";
-            Text[ korean ] = "영역";
+            Text[ korean ] = "범위";
             Text[ turkish ] = "Aralk";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "rea";
+            Text[ thai ] = "ช่วง";
         };
         String 3 // Description of Parameter 1
         {
@@ -13502,10 +13937,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Bereik waarin lege cellen worden geteld.";
             Text[ chinese_simplified ] = "要计算其中空白单元格数目的区域。";
             Text[ greek ] = "      .";
-            Text[ korean ] = "빈 셀이 계수되는 영역";
+            Text[ korean ] = "빈 셀이 계수되는 범위";
             Text[ turkish ] = "Bo hcrelerin sayld aralk.";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "rea les celles buides de la qual s'han de comptar.";
+            Text[ catalan ] = "rea les cel.les buides de la qual s'han de comptar.";
+            Text[ thai ] = "ช่วงในเซลล์ที่ว่างที่ถูกนับ";
         };
     };
      // -=*# Resource for function PI #*=-
@@ -13527,7 +13963,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Devuelve el valor del nmero Pi." ;
             Text [ english_us ] = "Returns the value of the number Pi." ;
             Text[ chinese_simplified ] = "求出数学常数 π。";
-            Text[ russian ] = "   .";
+            Text[ russian ] = "    (3.14).";
             Text[ polish ] = "Podaje warto liczby Pi.";
             Text[ japanese ] = "円周率 π を返します。";
             Text[ chinese_traditional ] = "求出數學常數 π。";
@@ -13539,6 +13975,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Pi saysnn deerini verir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna el valor del nombre pi.";
+            Text[ thai ] = "ส่งกลับค่าของตัวเลข Pi.";
         };
         ExtraData =
         {
@@ -13562,22 +13999,23 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ danish ] = "Lgger argumenterne sammen." ;
             Text [ french ] = "Calcule la somme des arguments." ;
             Text [ swedish ] = "Summerar argumenten." ;
-            Text [ dutch ] = "Geeft als resultaat de som der argumenten." ;
+            Text [ dutch ] = "Geeft als resultaat de som van de argumenten." ;
             Text [ spanish ] = "Devuelve la suma de los argumentos." ;
             Text [ english_us ] = "Returns the sum of all arguments." ;
             Text[ chinese_simplified ] = "元素汇总求和。";
-            Text[ russian ] = "   .";
+            Text[ russian ] = "   .";
             Text[ polish ] = "Sumuje argumenty.";
             Text[ japanese ] = "引数の合計を返します。";
             Text[ chinese_traditional ] = "元素匯總求和。";
             Text[ arabic ] = " .";
-            Text[ dutch ] = "Geeft als resultaat de som der argumenten.";
+            Text[ dutch ] = "Geeft als resultaat de som van de argumenten.";
             Text[ chinese_simplified ] = "元素汇总求和。";
             Text[ greek ] = "  .";
             Text[ korean ] = "독립 변수를 합산합니다.";
             Text[ turkish ] = "Deikenlerin toplamn verir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna la suma de tots els arguments.";
+            Text[ thai ] = "ส่งกลับผลรวมของอาร์กิวเม้นท์ทั้งหมด";
         };
         ExtraData =
         {
@@ -13593,26 +14031,27 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Numero " ;
             Text [ portuguese_brazilian ] = "Zahl " ;
             Text [ portuguese ] = "Nmero " ;
-            Text [ finnish ] = "luku" ;
+            Text [ finnish ] = "luku " ;
             Text [ danish ] = "Tal " ;
             Text [ french ] = "Nombre  " ;
             Text [ swedish ] = "tal  " ;
-            Text [ dutch ] = "Getal  " ;
+            Text [ dutch ] = "Getal" ;
             Text [ spanish ] = "nmero " ;
             Text [ english_us ] = "number " ;
             Text[ chinese_simplified ] = "number ";
-            Text[ russian ] = "  ";
+            Text[ russian ] = " ";
             Text[ polish ] = "Liczba  ";
             Text[ japanese ] = "数値 ";
             Text[ chinese_traditional ] = "number ";
             Text[ arabic ] = " ";
-            Text[ dutch ] = "Getal  ";
+            Text[ dutch ] = "Getal";
             Text[ chinese_simplified ] = "number ";
             Text[ greek ] = " ";
             Text[ korean ] = "값";
             Text[ turkish ] = "Say ";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "nombre ";
+            Text[ thai ] = "ตัวเลข ";
         };
         String 3 // Description of Parameter 1
         {
@@ -13642,6 +14081,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Say 1; say 2;... Toplam hesaplanacak 1 - 30 aras deikendir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre 1, nombre 2, ... sn entre 1 i 30 arguments el total dels quals s'ha de calcular.";
+            Text[ thai ] = "เลข 1, เลข 2, ... อยู่ในอาร์กิวเม้นท์ตั้งแต่ 1 ถึง 30 ของการคำนวณผลรวมทั้งหมด";
         };
     };
      // -=*# Resource for function QUADRATESUMME #*=-
@@ -13675,6 +14115,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Deikenlerin karelerini toplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna la suma dels quadrats dels arguments.";
+            Text[ thai ] = "ส่งกลับผลรวมกำลังสองของอาร์กิวเม้นท์";
         };
         ExtraData =
         {
@@ -13690,26 +14131,27 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Numero " ;
             Text [ portuguese_brazilian ] = "Zahl " ;
             Text [ portuguese ] = "Nmero " ;
-            Text [ finnish ] = "luku" ;
+            Text [ finnish ] = "luku " ;
             Text [ danish ] = "Tal " ;
             Text [ french ] = "Nombre  " ;
             Text [ swedish ] = "tal  " ;
-            Text [ dutch ] = "Getal  " ;
+            Text [ dutch ] = "Getal" ;
             Text [ spanish ] = "nmero " ;
             Text [ english_us ] = "number " ;
             Text[ chinese_simplified ] = "number ";
-            Text[ russian ] = "  ";
+            Text[ russian ] = " ";
             Text[ polish ] = "Liczba  ";
             Text[ japanese ] = "数値 ";
             Text[ chinese_traditional ] = "number ";
             Text[ arabic ] = " ";
-            Text[ dutch ] = "Getal  ";
+            Text[ dutch ] = "Getal";
             Text[ chinese_simplified ] = "number ";
             Text[ greek ] = " ";
             Text[ korean ] = "값";
             Text[ turkish ] = "Say ";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "nombre ";
+            Text[ thai ] = "ตัวเลข ";
         };
         String 3 // Description of Parameter 1
         {
@@ -13739,6 +14181,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Say 1; say 2;... Karelerinin toplam  alnacak 1 - 30 aras deikendir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre 1, nombre 2,... sn entre 1 i 30 arguments la suma dels quadrats dels quals s'ha de calcular.";
+            Text[ thai ] = "เลข 1, เลข 2,... อยู่ในอาร์กิวเม้นท์ตั้งแต่ 1 ถึง 30 สำหรับผลรวมของกำลังสองที่ถูกคำนวณ";
         };
     };
      // -=*# Resource for function PRODUKT #*=-
@@ -13772,6 +14215,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Deikenleri arpar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Multiplica els arguments.";
+            Text[ thai ] = "ตัวคูณอาร์กิวเม้นท์";
         };
         ExtraData =
         {
@@ -13787,11 +14231,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Numero " ;
             Text [ portuguese_brazilian ] = "Zahl " ;
             Text [ portuguese ] = "Nmero " ;
-            Text [ finnish ] = "Luku" ;
+            Text [ finnish ] = "Luku " ;
             Text [ danish ] = "Tal " ;
             Text [ french ] = "Nombre  " ;
             Text [ swedish ] = "tal  " ;
-            Text [ dutch ] = "Getal  " ;
+            Text [ dutch ] = "Getal" ;
             Text [ spanish ] = "nmero " ;
             Text [ english_us ] = "Number " ;
             Text[ chinese_simplified ] = "number ";
@@ -13800,13 +14244,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ japanese ] = "数値 ";
             Text[ chinese_traditional ] = "number ";
             Text[ arabic ] = " ";
-            Text[ dutch ] = "Getal  ";
+            Text[ dutch ] = "Getal";
             Text[ chinese_simplified ] = "number ";
             Text[ greek ] = " ";
             Text[ korean ] = "값";
             Text[ turkish ] = "Say ";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre ";
+            Text[ thai ] = "ตัวเลข ";
         };
         String 3 // Description of Parameter 1
         {
@@ -13836,6 +14281,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Say 1; say 2;... arpmlar alnmak istenen 1 - 30 aras deikendir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre 1, nombre 2, ... sn entre 1 i 30 arguments que s'han de multiplicar i tornar un resultat.";
+            Text[ thai ] = "เลข 1, เลข 2, ... อยู่ในอาร์กิวเม้นท์ตั้งแต่ 1 ถึง 30 ที่ถูกคูณและส่งกลับผลลัพธ์";
         };
     };
      // -=*# Resource for function SUMMEWENN #*=-
@@ -13870,6 +14316,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Koullara uyan deikenlerin toplamn alr.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Suma els arguments que compleixen les condicions.";
+            Text[ thai ] = "อาร์กิวเม้นท์ทั้งหมดที่พบเงื่อนไข";
         };
         ExtraData =
         {
@@ -13901,10 +14348,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Bereik";
             Text[ chinese_simplified ] = "range";
             Text[ greek ] = "";
-            Text[ korean ] = "영역";
+            Text[ korean ] = "범위";
             Text[ turkish ] = "Aralk";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "rea";
+            Text[ thai ] = "ช่วง";
         };
         String 3 // Description of Parameter 1
         {
@@ -13930,10 +14378,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Bereik waarop de criteria worden toegepast.";
             Text[ chinese_simplified ] = "采用搜寻条件的单元格区域。";
             Text[ greek ] = "       .";
-            Text[ korean ] = "기준이 적용될 영역";
+            Text[ korean ] = "기준이 적용될 범위";
             Text[ turkish ] = "ltlerin uygulanaca aralk.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "rea que s'ha d'avaluar pels criteris donats.";
+            Text[ thai ] = "ช่วงที่ถูกประเมินค่าโดยเกณฑ์ที่ให้มา";
         };
         String 4 // Name of Parameter 2
         {
@@ -13951,7 +14400,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "criterios" ;
             Text [ english_us ] = "criteria" ;
             Text[ chinese_simplified ] = "criteria";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "Kryteria";
             Text[ japanese ] = "条件";
             Text[ chinese_traditional ] = "criteria";
@@ -13963,6 +14412,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "ltler";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "criteris";
+            Text[ thai ] = "เกณฑ์";
         };
         String 5 // Description of Parameter 2
         {
@@ -13988,10 +14438,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Cellenbereik waarin de zoekcriteria worden aangegeven.";
             Text[ chinese_simplified ] = "指定的条件。";
             Text[ greek ] = " ,      .";
-            Text[ korean ] = "검색 기준이 주어진 셀 영역.";
+            Text[ korean ] = "검색 기준이 지정된 셀 범위";
             Text[ turkish ] = "Arama ltlerinin belirtildii hcre aral.";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "rea de celles en qu es donen els criteris de cerca.";
+            Text[ catalan ] = "rea de cel.les en qu es donen els criteris de cerca.";
+            Text[ thai ] = "ช่วงเซลล์ในเกณฑ์การค้นหาที่ให้มา";
         };
         String 6 // Name of Parameter 3
         {
@@ -14005,22 +14456,23 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ danish ] = "Sum_omrde" ;
             Text [ french ] = "Plage_somme" ;
             Text [ swedish ] = "summaomrde" ;
-            Text [ dutch ] = "Som-bereik" ;
+            Text [ dutch ] = "Bereik som" ;
             Text [ spanish ] = "rea de suma" ;
             Text [ english_us ] = "sum_range" ;
             Text[ chinese_simplified ] = "sum_range";
-            Text[ russian ] = "_";
+            Text[ russian ] = " ";
             Text[ polish ] = "Zakres sumowania";
             Text[ japanese ] = "合計範囲";
             Text[ chinese_traditional ] = "sum_range";
             Text[ arabic ] = "Sum_range";
-            Text[ dutch ] = "Som-bereik";
+            Text[ dutch ] = "Bereik som";
             Text[ chinese_simplified ] = "sum_range";
             Text[ greek ] = "Sum_range";
-            Text[ korean ] = "합계_범위";
+            Text[ korean ] = "합계 범위";
             Text[ turkish ] = "Toplam aral";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "sum_range";
+            Text[ thai ] = "ผลรวม_ช่วง";
         };
         String 7 // Description of Parameter 3
         {
@@ -14046,10 +14498,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Bereik waarvan de waarden worden opgeteld.";
             Text[ chinese_simplified ] = "需要求和的单元格区域。";
             Text[ greek ] = "      .";
-            Text[ korean ] = "값이 합계되는 범위.";
+            Text[ korean ] = "값이 합계되는 범위";
             Text[ turkish ] = "Toplanacak deerlerin bulunduu aralk.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "rea des de la qual s'han de sumar els valors.";
+            Text[ thai ] = "ช่วงจากค่าที่ถูกรวมทั้งหมด";
         };
     };
      // -=*# Resource for function ZHLENWENN #*=-
@@ -14084,6 +14537,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Koullara uyan deikenleri sayar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Compta els arguments que compleixen les condicions indicades.";
+            Text[ thai ] = "นับอาร์กิวเม้นท์ที่พบเงื่อนไขของเซต";
         };
         ExtraData =
         {
@@ -14115,10 +14569,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Bereik";
             Text[ chinese_simplified ] = "range";
             Text[ greek ] = "";
-            Text[ korean ] = "영역";
+            Text[ korean ] = "범위";
             Text[ turkish ] = "Aralk";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "rea";
+            Text[ thai ] = "ช่วง";
         };
         String 3 // Description of Parameter 1
         {
@@ -14144,10 +14599,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Bereik waarop de criteria worden toegepast.";
             Text[ chinese_simplified ] = "采用搜寻条件的单元格区域。";
             Text[ greek ] = "       .";
-            Text[ korean ] = "기준이 적용되는 영역.";
+            Text[ korean ] = "기준이 적용되는 범위 ";
             Text[ turkish ] = "ltlerin uyguland aralk.";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "rea de celles en qu s'han d'aplicar els criteris.";
+            Text[ catalan ] = "rea de cel.les en qu s'han d'aplicar els criteris.";
+            Text[ thai ] = "ช่วงของเซลล์ในเกณฑ์ที่ถูกใช้";
         };
         String 4 // Name of Parameter 2
         {
@@ -14165,7 +14621,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Criterios" ;
             Text [ english_us ] = "criteria" ;
             Text[ chinese_simplified ] = "criteria";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "Kryteria";
             Text[ japanese ] = "条件";
             Text[ chinese_traditional ] = "criteria";
@@ -14177,6 +14633,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "ltler";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "criteris";
+            Text[ thai ] = "เกณฑ์";
         };
         String 5 // Description of Parameter 2
         {
@@ -14202,10 +14659,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Cellenbereik waarin de zoekcriteria zijn aangegeven.";
             Text[ chinese_simplified ] = "指定采用搜寻条件的单元格区域。";
             Text[ greek ] = " ,      .";
-            Text[ korean ] = "검색 기준이 정해져 있는 셀 영역";
+            Text[ korean ] = "검색 기준이 정해져 있는 셀 범위 ";
             Text[ turkish ] = "Arama ltlerinin belirtildii hcre aral.";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "L'rea de celles en qu s'indiquen els criteris.";
+            Text[ catalan ] = "L'rea de cel.les en qu s'indiquen els criteris.";
+            Text[ thai ] = "ช่วงเซลล์ในเกณฑ์การค้นหาที่ให้มา";
         };
     };
      // -=*# Resource for function WURZEL #*=-
@@ -14240,6 +14698,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Saynn karekkn verir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna l'arrel quadrada d'un nombre.";
+            Text[ thai ] = "ส่งกลับรากที่สองของตัวเลข";
         };
         ExtraData =
         {
@@ -14275,6 +14734,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -14305,6 +14765,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Karekk hesaplanmak istenen pozitif deer.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Un valor positiu per a qu s'ha de calcular l'arrel quadrada.";
+            Text[ thai ] = "ค่าบวกสำหรับรากที่สองที่ถูกคำนวณ";
         };
     };
      // -=*# Resource for function ZUFALLSZAHL #*=-
@@ -14338,6 +14799,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "0 ile 1 arasnda bulunan bir rasgele say verir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna un nombre aleatori entre 0 i 1.";
+            Text[ thai ] = "ส่งกลับตัวเลขสุ่มระหว่าง 0 และ 1";
         };
         ExtraData =
         {
@@ -14357,7 +14819,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Restituisce VERO se il valore  un numero pari." ;
             Text [ portuguese_brazilian ] = "Liefert WAHR, wenn der Wert eine gerade Zahl ist." ;
             Text [ portuguese ] = "Devolve VERDADEIRO, se o valor  um nmero par." ;
-            Text [ finnish ] = "Palauttaa arvon TRUE, jos arvo on parillinen kokonaisluku." ;
+            Text [ finnish ] = "Palauttaa arvon TOSI, jos arvo on parillinen kokonaisluku." ;
             Text [ danish ] = "Returnerer SAND, hvis vrdien er et lige tal." ;
             Text [ french ] = "Renvoie VRAI si la valeur est un nombre pair." ;
             Text [ swedish ] = "Returnerar SANT om vrdet r ett jmnt tal." ;
@@ -14365,7 +14827,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Devuelve VERDADERO si el valor es un nmero par." ;
             Text [ english_us ] = "Returns TRUE if value is an even integer." ;
             Text[ chinese_simplified ] = "如果数值是一个偶数,那就反馈 TRUE 。";
-            Text[ russian ] = " ,     .";
+            Text[ russian ] = " ,      .";
             Text[ polish ] = "Zwraca warto PRAWDA, jeli liczba jest parzysta.";
             Text[ japanese ] = "値が偶数の場合、TRUE を返します。";
             Text[ chinese_traditional ] = "如果數值是一個偶數﹐那就傳回 TRUE 。";
@@ -14377,6 +14839,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Deer bir ift say ise sonu DORU olur.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna TRUE si el valor s un enter parell.";
+            Text[ thai ] = "ส่งกลับ จริง ถ้าค่าเป็นจำนวนเต็มอย่างเดียว";
         };
         ExtraData =
         {
@@ -14412,6 +14875,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Deer";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "valor";
+            Text[ thai ] = "ค่า";
         };
         String 3 // Description of Parameter 1
         {
@@ -14422,7 +14886,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Il valore da analizzare" ;
             Text [ portuguese_brazilian ] = "Der Wert, der gepr?t werden soll." ;
             Text [ portuguese ] = " o valor a ser testado." ;
-            Text [ finnish ] = "Testattava arvo." ;
+            Text [ finnish ] = "Testattava arvo" ;
             Text [ danish ] = "Den vrdi som skal testes." ;
             Text [ french ] = "La valeur  examiner." ;
             Text [ swedish ] = "Vrdet som skall testas." ;
@@ -14442,6 +14906,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Denetlenecek deer.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor que s'ha de verificar.";
+            Text[ thai ] = "ค่าถูกทดสอบ";
         };
     };
      // -=*# Resource for function ISTUNGERADE #*=-
@@ -14455,7 +14920,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Restituisce VERO se il valore  un numero dispari" ;
             Text [ portuguese_brazilian ] = "Liefert WAHR, wenn der Wert eine ungerade Zahl ist." ;
             Text [ portuguese ] = "Devolve VERDADEIRO, se o valor  um nmero inteiro mpar." ;
-            Text [ finnish ] = "Palauttaa arvon TRUE, jos arvo on pariton kokonaisluku." ;
+            Text [ finnish ] = "Palauttaa arvon TOSI, jos arvo on pariton kokonaisluku." ;
             Text [ danish ] = "Returnerer SAND, hvis vrdien er et ulige tal." ;
             Text [ french ] = "Renvoie VRAI si la valeur est un nombre impair." ;
             Text [ swedish ] = "Returnerar SANT om vrdet r ett udda tal." ;
@@ -14463,7 +14928,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Devuelve VERDADERO si el valor es un nmero impar." ;
             Text [ english_us ] = "Returns TRUE if value is an odd integer." ;
             Text[ chinese_simplified ] = "如果这个数值是奇整数,那就反馈 TRUE。";
-            Text[ russian ] = " ,     .";
+            Text[ russian ] = " ,      .";
             Text[ polish ] = "Zwraca warto PRAWDA, jeli warto jest liczb nieparzyst.";
             Text[ japanese ] = "値が奇数の場合、TRUE を返します。";
             Text[ chinese_traditional ] = "如果這個數值是奇整數﹐那就傳回 TRUE。";
@@ -14475,6 +14940,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Deer bir tek say ise sonu DORU olur.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna TRUE si el valor s un enter senar.";
+            Text[ thai ] = "ส่งกลับ จริง ถ้าค่าเป็นจำนวนเต็มคี่";
         };
         ExtraData =
         {
@@ -14510,6 +14976,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Deer";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "valor";
+            Text[ thai ] = "ค่า";
         };
         String 3 // Description of Parameter 1
         {
@@ -14520,7 +14987,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Il valore da controllare" ;
             Text [ portuguese_brazilian ] = "Der Wert, der gepr?t werden soll." ;
             Text [ portuguese ] = " o valor a ser testado." ;
-            Text [ finnish ] = "Testattava arvo." ;
+            Text [ finnish ] = "Testattava arvo" ;
             Text [ danish ] = "Den vrdi som skal testes." ;
             Text [ french ] = "La valeur  examiner." ;
             Text [ swedish ] = "Vrdet som skall testas." ;
@@ -14540,6 +15007,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Denetlenecek deer.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor que s'ha de verificar.";
+            Text[ thai ] = "ค่าถูกทดสอบ";
         };
     };
      // -=*# Resource for function KOMBINATIONEN #*=-
@@ -14553,7 +15021,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Restituisce il numero delle combinazioni di elementi senza ripetizione." ;
             Text [ portuguese_brazilian ] = "Berechnet die Anzahl der Kombinationen von Elementen ohne Wiederholung." ;
             Text [ portuguese ] = "Devolve o nmero de combinaes de determinado nmero de elementos, sem repeties." ;
-            Text [ finnish ] = "Laskee osien yhdistelmien mrn (ilman toistoja)." ;
+            Text [ finnish ] = "Laskee osien yhdistelmien mrn ilman toistoja." ;
             Text [ danish ] = "Beregner antallet af kombinationer for elementer uden gentagelse." ;
             Text [ french ] = "Renvoie le nombre de combinaisons que l'on peut former avec les lments, sans rptition." ;
             Text [ swedish ] = "Berknar antalet kombinationer av element utan upprepning." ;
@@ -14561,7 +15029,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Devuelve el nmero de combinaciones para un nmero determinado de objetos." ;
             Text [ english_us ] = "Calculates the number of combinations for elements without repetition." ;
             Text[ chinese_simplified ] = "元素的所有可能的组合数目(不重复计算)。";
-            Text[ russian ] = "       ( ).";
+            Text[ russian ] = "       ( ).";
             Text[ polish ] = "Zwraca liczb kombinacji w podanej liczbie elementw bez powtarzania.";
             Text[ japanese ] = "n 個のものから r 個をとる組合せの総数を返します。";
             Text[ chinese_traditional ] = "元素的所有可能的組合數目(不重複計算)。";
@@ -14573,6 +15041,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Yinelenmeyen e kombinasyonlarnn saysn hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Calcula el nombre de combinacions per als elements sense repetici.";
+            Text[ thai ] = "คำนวณจำนวนของการรวมกันสำหรับองค์ประกอบที่ไม่มีการทำซ้ำ";
         };
         ExtraData =
         {
@@ -14596,7 +15065,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Cantidad_1" ;
             Text [ english_us ] = "number_1" ;
             Text[ chinese_simplified ] = "number_1";
-            Text[ russian ] = "_1";
+            Text[ russian ] = " 1";
             Text[ polish ] = "Liczba_1";
             Text[ japanese ] = "n";
             Text[ chinese_traditional ] = "number_1";
@@ -14608,6 +15077,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Adet says_1";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "number_1";
+            Text[ thai ] = "เลข_1";
         };
         String 3 // Description of Parameter 1
         {
@@ -14617,7 +15087,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Numero degli elementi." ;
             Text [ portuguese_brazilian ] = "Gesamtanzahl der Elemente." ;
             Text [ portuguese ] = " a quantidade total de elementos." ;
-            Text [ finnish ] = "Elementtien kokonaismr." ;
+            Text [ finnish ] = "Elementtien kokonaismr" ;
             Text [ danish ] = "Det samlede antal elementer." ;
             Text [ french ] = "Le nombre total d'lments." ;
             Text [ swedish ] = "Det totala antalet element." ;
@@ -14625,7 +15095,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Es el nmero de objetos." ;
             Text [ english_us ] = "The total number of elements." ;
             Text[ chinese_simplified ] = "元素的总数。";
-            Text[ russian ] = "  .";
+            Text[ russian ] = "  .";
             Text[ polish ] = "Oglna liczba elementw.";
             Text[ japanese ] = "要素の総数。";
             Text[ chinese_traditional ] = "元素的總數。";
@@ -14637,6 +15107,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Toplam e says.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre total d'elements.";
+            Text[ thai ] = "รวมจำนวนองค์ประกอบทั้งหมด";
         };
         String 4 // Name of Parameter 2
         {
@@ -14654,7 +15125,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Cantidad_2" ;
             Text [ english_us ] = "number_2" ;
             Text[ chinese_simplified ] = "number_2";
-            Text[ russian ] = "_2";
+            Text[ russian ] = " 2";
             Text[ polish ] = "Liczba_2";
             Text[ japanese ] = "r";
             Text[ chinese_traditional ] = "number_2";
@@ -14666,6 +15137,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Adet says_2";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "number_2";
+            Text[ thai ] = "เลข_2";
         };
         String 5 // Description of Parameter 2
         {
@@ -14675,7 +15147,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Numero degli oggetti in ciascuna combinazione." ;
             Text [ portuguese_brazilian ] = "Auswahlanzahl aus den Elementen." ;
             Text [ portuguese ] = " o nmero de elementos em cada combinao." ;
-            Text [ finnish ] = "Valittujen elementtien mr." ;
+            Text [ finnish ] = "Valittujen elementtien mr" ;
             Text [ danish ] = "Antallet af elementer i hver kombination." ;
             Text [ french ] = "Le nombre d'lments dans chaque combinaison." ;
             Text [ swedish ] = "Urvalsantal frn elementen." ;
@@ -14695,6 +15167,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Seilen e says.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre d'elements seleccionats.";
+            Text[ thai ] = "จำนวนองค์ประกอบที่เลือก";
         };
     };
      // -=*# Resource for function KOMBINATIONEN2 #*=-
@@ -14708,7 +15181,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Restituisce il numero delle combinazioni di elementi con ripetizione." ;
             Text [ portuguese_brazilian ] = "Berechnet die Anzahl der Kombinationen von Elementen mit Wiederholung." ;
             Text [ portuguese ] = "Devolve o nmero de combinaes de determinado nmero de objectos, com repetio." ;
-            Text [ finnish ] = "Laskee osien yhdistelmien mrn (mukaan lukien toistot)." ;
+            Text [ finnish ] = "Laskee osien yhdistelmien mrn toistot mukaan lukien." ;
             Text [ danish ] = "Beregner antallet af kombinationer for elementer med gentagelse." ;
             Text [ french ] = "Renvoie le nombre de combinaisons que l'on peut former avec les lments, avec rptition." ;
             Text [ swedish ] = "Berknar antalet kombinationer av element med upprepning." ;
@@ -14716,7 +15189,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Devuelve el nmero de combinaciones de elementos incluyendo las repeticiones." ;
             Text [ english_us ] = "Calculates the number of combinations of elements including repetition." ;
             Text[ chinese_simplified ] = "元素的所有可能的组合数目(重复计算)。";
-            Text[ russian ] = "       ( ).";
+            Text[ russian ] = "       ( ).";
             Text[ polish ] = "Oblicza liczb kombinacji elementw cznie z powtrk.";
             Text[ japanese ] = "n 個のものから r 個をとる重複組合せの総数を返します。";
             Text[ chinese_traditional ] = "元素的所有可能的組合數目(重複計算)。";
@@ -14728,6 +15201,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Yinelenen e kombinasyonlarnn saysn hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Calcula el nombre de combinacions d'elements incloent-hi la repetici.";
+            Text[ thai ] = "คำนวณจำนวนการรวมองค์ประกอบรวมทั้งการทำซ้ำ";
         };
         ExtraData =
         {
@@ -14751,7 +15225,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Cantidad_1" ;
             Text [ english_us ] = "number_1" ;
             Text[ chinese_simplified ] = "number_1";
-            Text[ russian ] = "_1";
+            Text[ russian ] = " 1";
             Text[ polish ] = "Liczba_1";
             Text[ japanese ] = "n";
             Text[ chinese_traditional ] = "number_1";
@@ -14763,6 +15237,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Adet says_1";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "number_1";
+            Text[ thai ] = "เลข_1";
         };
         String 3 // Description of Parameter 1
         {
@@ -14772,26 +15247,27 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Numero totale degli elementi" ;
             Text [ portuguese_brazilian ] = "Gesamtanzahl der Elemente." ;
             Text [ portuguese ] = " a quantidade total de elementos." ;
-            Text [ finnish ] = "Elementtien kokonaismr." ;
+            Text [ finnish ] = "Elementtien kokonaismr" ;
             Text [ danish ] = "Det samlede antal elementer." ;
             Text [ french ] = "Le nombre total d'lments." ;
             Text [ swedish ] = "Det totala antalet element." ;
-            Text [ dutch ] = "Het totale aantal elementen." ;
+            Text [ dutch ] = "Totaal aantal elementen." ;
             Text [ spanish ] = "Es el nmero total de objetos." ;
             Text [ english_us ] = "The total number of elements." ;
             Text[ chinese_simplified ] = "元素的总数。";
-            Text[ russian ] = "  .";
+            Text[ russian ] = "  .";
             Text[ polish ] = "Oglna liczba elementw.";
             Text[ japanese ] = "要素の総数。";
             Text[ chinese_traditional ] = "元素的總數。";
             Text[ arabic ] = "  .";
-            Text[ dutch ] = "Het totale aantal elementen.";
+            Text[ dutch ] = "Totaal aantal elementen.";
             Text[ chinese_simplified ] = "元素的总数。";
             Text[ greek ] = "  .";
             Text[ korean ] = "요소의 전체 값";
             Text[ turkish ] = "Toplam e says.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre total d'elements.";
+            Text[ thai ] = "รวมจำนวนองค์ประกอบทั้งหมด";
         };
         String 4 // Name of Parameter 2
         {
@@ -14809,7 +15285,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Cantidad_2" ;
             Text [ english_us ] = "number_2" ;
             Text[ chinese_simplified ] = "number_2";
-            Text[ russian ] = "_2";
+            Text[ russian ] = " 2";
             Text[ polish ] = "Liczba_2";
             Text[ japanese ] = "r";
             Text[ chinese_traditional ] = "number_2";
@@ -14821,6 +15297,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Adet says_2";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "number_2";
+            Text[ thai ] = "เลข_2";
         };
         String 5 // Description of Parameter 2
         {
@@ -14830,7 +15307,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Quantit scelta di elementi" ;
             Text [ portuguese_brazilian ] = "Auswahlanzahl aus den Elementen." ;
             Text [ portuguese ] = " o nmero de elementos em cada combinao." ;
-            Text [ finnish ] = "Valittujen elementtien mr." ;
+            Text [ finnish ] = "Valittujen elementtien mr" ;
             Text [ danish ] = "Antallet af elementer i hver kombination." ;
             Text [ french ] = "Le nombre d'lments dans chaque combinaison." ;
             Text [ swedish ] = "Urvalsantal frn elementen." ;
@@ -14838,7 +15315,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Es el nmero de objetos en cada combinacin." ;
             Text [ english_us ] = "The number of elements selected." ;
             Text[ chinese_simplified ] = "每一组合中元素的数目。";
-            Text[ russian ] = "     .";
+            Text[ russian ] = "  .";
             Text[ polish ] = "Liczba elementw do wyboru.";
             Text[ japanese ] = "1組の組合せに含まれる要素の数。";
             Text[ chinese_traditional ] = "每一組合中元素的數目。";
@@ -14850,6 +15327,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Seilen e says.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre d'elements seleccionats.";
+            Text[ thai ] = "จำนวนองค์ประกอบที่เลือก";
         };
     };
      // -=*# Resource for function ARCCOS #*=-
@@ -14869,10 +15347,10 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ french ] = "Renvoie l'arc cosinus d'un nombre." ;
             Text [ swedish ] = "Berknar arcus cosinus fr ett tal." ;
             Text [ dutch ] = "Geeft de boogcosinus van een getal." ;
-            Text [ spanish ] = "Devuelve el arco coseno de un nmero." ;
+            Text [ spanish ] = "Devuelve el arcocoseno de un nmero." ;
             Text [ english_us ] = "Returns the arccosine of a number." ;
             Text[ chinese_simplified ] = "计算一个数的反余弦值。";
-            Text[ russian ] = "  .";
+            Text[ russian ] = "  .";
             Text[ polish ] = "Wyznacza arcus cosinus liczby.";
             Text[ japanese ] = "数値のアークコサインを返します。";
             Text[ chinese_traditional ] = "計算一個數的反余弦值。";
@@ -14884,6 +15362,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Bir saynn arksinsn verir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna l'arccosinus d'un nombre.";
+            Text[ thai ] = "ส่งกลับตัวเลข arccosine ";
         };
         ExtraData =
         {
@@ -14919,6 +15398,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -14934,10 +15414,10 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ french ] = "Une valeur entre -1 et 1 dont l'arc cosinus doit tre calcul." ;
             Text [ swedish ] = "Ett vrde mellan 1 och 1 vars arcus cosinus skall berknas." ;
             Text [ dutch ] = "Een waarde tussen -1 en 1, waarvan de boogcosinus moet worden berekend." ;
-            Text [ spanish ] = "valor entre -1 y 1, cuyo arcocoseno se desea calcular." ;
+            Text [ spanish ] = "El valor entre -1 y 1 cuyo arcocoseno se desea calcular." ;
             Text [ english_us ] = "A value between -1 and 1 for which the arccosine is to be returned." ;
             Text[ chinese_simplified ] = "一个要计算其反余弦值的在 -1 和 1 之间的数值。";
-            Text[ russian ] = "  -1  1,    .";
+            Text[ russian ] = "  -1  1,    .";
             Text[ polish ] = "Warto z przedziau od -1 do 1, dla ktrej ma zosta obliczony arcus cosinus.";
             Text[ japanese ] = "アークコサインを求める-1から1までの数値。";
             Text[ chinese_traditional ] = "一個要計算其反余弦值的在 -1 和 1 之間的數值。";
@@ -14949,6 +15429,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Arksins hesaplanacak -1 ile 1 aras deer.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Un valor entre -1 i 1 l'arccosinus del qual s'ha de tornar.";
+            Text[ thai ] = "ค่าระหว่าง -1 และ 1 สำหรับส่งกลับ arccosine ";
         };
     };
      // -=*# Resource for function ARCSIN #*=-
@@ -14968,10 +15449,10 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ french ] = "Renvoie l'arc sinus d'un nombre." ;
             Text [ swedish ] = "Berknar arcus sinus fr ett tal." ;
             Text [ dutch ] = "Berekent de boogsinus van een getal." ;
-            Text [ spanish ] = "Devuelve el arco seno de un nmero." ;
+            Text [ spanish ] = "Devuelve el arcoseno de un nmero." ;
             Text [ english_us ] = "Returns the arcsine of a number." ;
             Text[ chinese_simplified ] = "计算一个数的反正弦值。";
-            Text[ russian ] = "  .";
+            Text[ russian ] = "  .";
             Text[ polish ] = "Oblicza arcus sinus liczby.";
             Text[ japanese ] = "数値のアークサインを返します。";
             Text[ chinese_traditional ] = "計算一個數的反正弦值。";
@@ -14983,6 +15464,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Bir saynn arksinsn hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna l'arcsinus d'un nombre.";
+            Text[ thai ] = "ส่งกลับตัวเลข arcsine ";
         };
         ExtraData =
         {
@@ -15018,6 +15500,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -15033,10 +15516,10 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ french ] = "Une valeur entre -1 et 1 dont l'arc sinus doit tre calcul." ;
             Text [ swedish ] = "Ett vrde mellan 1 och 1 vars inversa sinus skall berknas." ;
             Text [ dutch ] = "Een waarde tussen -1 en 1, waarvan de boogsinus moet worden berekend." ;
-            Text [ spanish ] = "es el valor entre -1 y 1, cuyo arco seno se desea calcular." ;
+            Text [ spanish ] = "es el valor entre -1 y 1, cuyo arcoseno se desea calcular." ;
             Text [ english_us ] = "A value between -1 and 1 for which the arcsine is to be returned." ;
             Text[ chinese_simplified ] = "一个要计算其反正弦值的在 -1 和 1 之间的数值。";
-            Text[ russian ] = "  -1  1,    .";
+            Text[ russian ] = "  -1  1,    .";
             Text[ polish ] = "Warto z przedziau od -1 do 1, dla ktrej ma zosta obliczony arcus sinus.";
             Text[ japanese ] = "アークサインを求める-1から1までの数値。";
             Text[ chinese_traditional ] = "一個要計算其反正弦值的在 -1 和 1 之間的數值。";
@@ -15048,6 +15531,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Arksins hesaplanacak -1 ile 1 aras deer.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Un valor entre -1 i 1 l'arcsinus del qual s'ha de tornar.";
+            Text[ thai ] = "ค่าระหว่าง -1 และ 1 สำหรับส่งกลับ arcsine ";
         };
     };
      // -=*# Resource for function ARCCOSHYP #*=-
@@ -15070,7 +15554,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Devuelve el coseno hiperblico inverso de un nmero." ;
             Text [ english_us ] = "Returns the inverse hyperbolic cosine of a number." ;
             Text[ chinese_simplified ] = "计算一个数的反双曲线余弦值。";
-            Text[ russian ] = "   .";
+            Text[ russian ] = "   .";
             Text[ polish ] = "Oblicza arcus cosinus hiperboliczny liczby.";
             Text[ japanese ] = "数値の双曲線逆余弦(ハイパーボリックコサインの逆関数)を返します。";
             Text[ chinese_traditional ] = "計算一個數的反雙曲線余弦值。";
@@ -15082,6 +15566,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Bir saynn ters hiperbolik kosinsn verir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna el cosinus hiperblic invers d'un nombre.";
+            Text[ thai ] = "ส่งกลับอินเวิร์สตัวเลข cosine แบบไฮเปอร์โบลา";
         };
         ExtraData =
         {
@@ -15117,6 +15602,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -15132,22 +15618,23 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ danish ] = "En vrdi strre eller lig med 1, som den inverse hyperbolske cosinus skal beregnes for." ;
             Text [ french ] = "Une valeur suprieure ou gale  1 dont le cosinus hyperbolique inverse doit tre calcul." ;
             Text [ swedish ] = "Ett vrde strre eller lika med 1, fr vilket inverterad hyperbolisk cosinus skall berknas." ;
-            Text [ dutch ] = "Een waarde groter of gelijk aan 1, waarvan de inverse cosinus hyperbolecus moet worden berekend." ;
+            Text [ dutch ] = "Een waarde groter of gelijk aan 1, waarvan de inverse cosinus hyperbolicus moet worden berekend." ;
             Text [ spanish ] = "es el valor mayor o igual a 1,cuyo coseno hiperblico inverso se desea calcular." ;
             Text [ english_us ] = "A value greater than or equal to 1 for which the hyperbolic cosine is to be returned." ;
             Text[ chinese_simplified ] = "一个要计算其反双曲余弦值的大于或等于 1 的数值。";
-            Text[ russian ] = ",     1,     .";
+            Text[ russian ] = ",    1,     .";
             Text[ polish ] = "Dowolna liczba rzeczywista rwna lub wiksza od 1, dla ktrej ma zosta obliczony arcus cosinus hiperboliczny.";
             Text[ japanese ] = "ハイパーボリックコサインの逆関数を求める1以上の数値。";
             Text[ chinese_traditional ] = "一個要計算其反雙曲余弦值的大於或等於 1 的數值。";
             Text[ arabic ] = "       1.";
-            Text[ dutch ] = "Een waarde groter of gelijk aan 1, waarvan de inverse cosinus hyperbolecus moet worden berekend.";
+            Text[ dutch ] = "Een waarde groter of gelijk aan 1, waarvan de inverse cosinus hyperbolicus moet worden berekend.";
             Text[ chinese_simplified ] = "一个要计算其反双曲余弦值的大于或等于 1 的数值。";
             Text[ greek ] = "      1,       .";
             Text[ korean ] = "면적 코사인이 계산되어야 하는 1과 같거나 1보다 큰 값.";
             Text[ turkish ] = "Hiperbolik kosins hesaplanacak 1'den byk ya da eit deer.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Un valor ms gran que o igual a 1 el cosinus hiperblic del qual s'ha de tornar.";
+            Text[ thai ] = "ค่ามากกว่าหรือเท่ากับ 1 สำหรับส่งกลับ cosine แบบไฮเปอร์โบลา";
         };
     };
      // -=*# Resource for function ARCSINHYP #*=-
@@ -15170,7 +15657,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Devuelve el seno hiperblico inverso de un nmero." ;
             Text [ english_us ] = "Returns the inverse hyperbolic sine of a number." ;
             Text[ chinese_simplified ] = "计算一个数的反双曲正弦值。";
-            Text[ russian ] = "   .";
+            Text[ russian ] = "   .";
             Text[ polish ] = "Oblicza arcus sinus hiperboliczny liczby.";
             Text[ japanese ] = "数値の双曲線逆正弦(ハイパーボリックサインの逆関数)を返します。";
             Text[ chinese_traditional ] = "計算一個數的反雙曲正弦值。";
@@ -15182,6 +15669,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Bir saynn (ters hiperbolik sinsn) verir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna el sinus hiperblic invers d'un nombre.";
+            Text[ thai ] = "ส่งกลับอินเวิร์สตัวเลข sine แบบไฮเปอร์โบลา";
         };
         ExtraData =
         {
@@ -15217,6 +15705,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -15235,7 +15724,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "es el valor cuyo seno hiperblico inverso se desea calcular." ;
             Text [ english_us ] = "The value for which the inverse hyperbolic sine is to be returned." ;
             Text[ chinese_simplified ] = "一个要计算其反双曲正弦值的数值。";
-            Text[ russian ] = ",     .";
+            Text[ russian ] = ",     .";
             Text[ polish ] = "Warto, dla ktrej ma zosta obliczony arcus sinus hiperboliczny.";
             Text[ japanese ] = "双曲線逆正弦を求める数値。";
             Text[ chinese_traditional ] = "一個要計算其反雙曲正弦值的數值。";
@@ -15247,6 +15736,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Ters hiperbolik sins hesaplanacak deer.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor el sinus hiperblic invers del qual s'ha de tornar.";
+            Text[ thai ] = "ค่าสำหรับส่งกลับอินเวิร์ส์ sine แบบไฮเปอร์โบลา";
         };
     };
      // -=*# Resource for function ARCCOT #*=-
@@ -15269,7 +15759,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Devuelve el arco cotangente de un nmero." ;
             Text [ english_us ] = "Returns the inverse cotangent of a number." ;
             Text[ chinese_simplified ] = "计算一个数的反余切值。";
-            Text[ russian ] = "  .";
+            Text[ russian ] = "  .";
             Text[ polish ] = "Oblicza arcus cotangens kta.";
             Text[ japanese ] = "数値のアークコタンジェントを返します。";
             Text[ chinese_traditional ] = "計算一個數的反余切值。";
@@ -15281,6 +15771,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Bir saynn ters kotanjantn verir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna la cotangent inversa d'un nombre.";
+            Text[ thai ] = "ส่งกลับอินเวิร์สตัวเลข cotangent ";
         };
         ExtraData =
         {
@@ -15316,6 +15807,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -15346,6 +15838,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Ters kotanjant hesaplanacak deer.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor la cotangent inversa del qual s'ha de tornar.";
+            Text[ thai ] = "ค่าสำหรับส่งกลับอินเวิร์ส cotangent ";
         };
     };
      // -=*# Resource for function ARCTAN #*=-
@@ -15368,7 +15861,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Devuelve el arco tangente de un nmero." ;
             Text [ english_us ] = "Returns the arctangent of a number." ;
             Text[ chinese_simplified ] = "计算一个数的反正切值。";
-            Text[ russian ] = "  .";
+            Text[ russian ] = "  .";
             Text[ polish ] = "Wyznacza arcus tangens liczby.";
             Text[ japanese ] = "数値のアークタンジェントを返します。";
             Text[ chinese_traditional ] = "計算一個數的反正切值。";
@@ -15380,6 +15873,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Bir saynn arktanjantn verir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna l'arctangent d'un nombre.";
+            Text[ thai ] = "ส่งกลับตัวเลข arctangent ";
         };
         ExtraData =
         {
@@ -15415,6 +15909,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -15433,7 +15928,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "es el valor cuyo arco tangente se desea calcular." ;
             Text [ english_us ] = "The value for which the arctangent is to be returned." ;
             Text[ chinese_simplified ] = "要计算其反正切值的数值。";
-            Text[ russian ] = ",   .";
+            Text[ russian ] = ",   .";
             Text[ polish ] = "Warto, dla ktrej ma zosta obliczony arcus tangens.";
             Text[ japanese ] = "アークタンジェントを求める数値。";
             Text[ chinese_traditional ] = "要計算其反正切值的數值。";
@@ -15445,6 +15940,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Arktanjant hesaplanacak deer.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor l'arctangent del qual s'ha de tornar.";
+            Text[ thai ] = "ค่าสำหรับส่งกลับ arctangent ";
         };
     };
      // -=*# Resource for function ARCCOTHYP #*=-
@@ -15479,6 +15975,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Bir saynn (ters hiperbolik kotanjantn) verir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna la cotangent hiperblica inversa d'un nombre.";
+            Text[ thai ] = "ส่งกลับอินเวิร์สตัวเลขของ cotangent แบบไฮเปอร์โบลา";
         };
         ExtraData =
         {
@@ -15514,6 +16011,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -15533,7 +16031,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "es el valor menor que -1 o mayor que 1, cuyas cotangentes hiperblicas inversas se desea calcular." ;
             Text [ english_us ] = "A value smaller than -1 or greater than 1 for which the inverse hyperbolic cotangent is to be returned." ;
             Text[ chinese_simplified ] = "一个要计算其反双曲余切值小于 -1 和大于 1 之间的数值。";
-            Text[ russian ] = ",   -1   1,     .";
+            Text[ russian ] = ",  -1   1,     .";
             Text[ polish ] = "Warto rwna lub wiksza od 1, dla ktrejma zosta obliczony arcus cotangens hiperboliczny.";
             Text[ japanese ] = "双曲線逆コタンジェントを求める、-1より小さい数値、または1より大きい数値。";
             Text[ chinese_traditional ] = "一個要計算其反雙曲余切值小於 -1 和大於 1 之間的數值。";
@@ -15545,6 +16043,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Ters hiperbolik kotanjant hesaplanacak -1'den kk ya da 1'den byk deer.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Un valor ms petit que -1 o ms gran que 1 la cotangent hiperblica inversa del qual s'ha de tornar.";
+            Text[ thai ] = "ค่าน้อยกว่า -1 หรือมากกว่า 1 สำหรับการส่งกลับอินเวิร์ส cotangent แบบไฮเปอร์โบลา";
         };
     };
      // -=*# Resource for function ARCTANHYP #*=-
@@ -15567,7 +16066,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Devuelve la tangente de rea (tangente hiperblica inversa) de un nmero." ;
             Text [ english_us ] = "Returns the inverse hyperbolic tangent of a number." ;
             Text[ chinese_simplified ] = "计算一个数的反双曲正切值。";
-            Text[ russian ] = "   .";
+            Text[ russian ] = "   .";
             Text[ polish ] = "Oblicza arcus tangens hiperboliczny liczby.";
             Text[ japanese ] = "数値の双曲線逆正接(ハイパーボリックタンジェントの逆関数)を返します。";
             Text[ chinese_traditional ] = "計算一個數的反雙曲正切值。";
@@ -15579,6 +16078,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Saynn ters hiperbolik tanjantn hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna la tangent hiperblica inversa d'un nombre.";
+            Text[ thai ] = "ส่งกลับอินเวิร์สตัวเลขของ tangent แบบไฮเปอร์โบลา";
         };
         ExtraData =
         {
@@ -15614,6 +16114,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -15644,6 +16145,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Ters hiperbolik tanjant hesaplanacak -1 ile 1 aras deer.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Un valor entre -1 i 1 la tangent hiperblica inversa del qual s'ha de tornar.";
+            Text[ thai ] = "ค่าระหว่าง -1 และ 1 สำหรับการส่งกลับอินเวิร์สของ tangent แบบไฮเปอร์โบลา";
         };
     };
      // -=*# Resource for function COS #*=-
@@ -15678,6 +16180,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Bir saynn kosinsn verir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna el cosinus d'un nombre.";
+            Text[ thai ] = "ส่งกลับตัเลข cosine ";
         };
         ExtraData =
         {
@@ -15713,6 +16216,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -15743,6 +16247,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Kosins deeri hesaplanacak radyan cinsinden a.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Angle en radians el cosinus del qual s'ha de tornar.";
+            Text[ thai ] = "มุมในส่วนของวงกลมที่มีความกว้างเท่ากับรัศมีสำหรับส่งกลับ cosine ";
         };
     };
      // -=*# Resource for function SIN #*=-
@@ -15765,7 +16270,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Devuelve el seno de un ngulo determinado." ;
             Text [ english_us ] = "Returns the sine of a number." ;
             Text[ chinese_simplified ] = "计算给定角度的正弦值。";
-            Text[ russian ] = "  .";
+            Text[ russian ] = "   .";
             Text[ polish ] = "Oblicza sinus podanego kta.";
             Text[ japanese ] = "指定した角度のサインを返します。";
             Text[ chinese_traditional ] = "計算輸入角度的正弦值。";
@@ -15777,6 +16282,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Saynn sinsn verir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna el sinus d'un nombre.";
+            Text[ thai ] = "ส่งกลับตัวเลข sine ";
         };
         ExtraData =
         {
@@ -15812,6 +16318,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -15842,6 +16349,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Sins hesaplanacak radyan cinsinden a.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Angle en radians el sinus del qual s'ha de calcular.";
+            Text[ thai ] = "มุมในส่วนของวงกลมที่มีความกว้างเท่ากับรัศมีสำหรับคำนวณ sine ";
         };
     };
      // -=*# Resource for function COT #*=-
@@ -15876,6 +16384,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Bir saynn kotanjantn hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna la cotangent d'un nombre.";
+            Text[ thai ] = "ส่งกลับตัวเลข cotangent ";
         };
         ExtraData =
         {
@@ -15911,6 +16420,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -15941,6 +16451,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Kotanjant deeri hesaplanacak radyan cinsinden a.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Angle en radians el valor de la cotangent del qual s'ha de tornar.";
+            Text[ thai ] = "มุมในส่วนของวงกลมที่มีความกว้างเท่ากับรัศมีของค่า cotangent ที่ถูกส่งกลับ";
         };
     };
      // -=*# Resource for function TAN #*=-
@@ -15975,6 +16486,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Saynn tanjantn verir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna la tangent d'un nombre.";
+            Text[ thai ] = "ส่งกลับตัวเลข tangent ";
         };
         ExtraData =
         {
@@ -16010,6 +16522,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -16040,6 +16553,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Tanjant hesaplanacak radyan cinsinden a.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Angle en radians la tangent del qual s'ha de calcular.";
+            Text[ thai ] = "มุมในส่วนของวงกลมที่มีความกว้างเท่ากับรัศมีสำหรับคำนวณ tangent ";
         };
     };
      // -=*# Resource for function COSHYP #*=-
@@ -16062,7 +16576,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Devuelve el coseno hiperblico de un nmero." ;
             Text [ english_us ] = "Returns the hyperbolic cosine of a number." ;
             Text[ chinese_simplified ] = "计算一个数的双曲余弦值。";
-            Text[ russian ] = "   .";
+            Text[ russian ] = "   .";
             Text[ polish ] = "Oblicza cosinus hiperboliczny liczby.";
             Text[ japanese ] = "数値の双曲線余弦(ハイパーボリックコサイン)を返します。";
             Text[ chinese_traditional ] = "計算一個數的雙曲余弦值。";
@@ -16074,6 +16588,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Bir saynn hiperbolik kosinsn hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna el cosinus hiperblic d'un nombre.";
+            Text[ thai ] = "ส่งกลับตัวเลข cosine แบบไฮเปอร์โบลา";
         };
         ExtraData =
         {
@@ -16109,6 +16624,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -16139,6 +16655,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Hiperbolik kosins hesaplanacak say.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor el cosinus hiperblic del qual s'ha de tornar.";
+            Text[ thai ] = "ค่าสำหรับส่งกลับ cosine แบบไฮเปอร์โบลา";
         };
     };
      // -=*# Resource for function SINHYP #*=-
@@ -16173,6 +16690,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Saynn hiperbolik sinsn hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna el sinus hiperblic d'un nombre.";
+            Text[ thai ] = "ส่งกลับตัวเลข sine แบบไฮเปอร์โบลา";
         };
         ExtraData =
         {
@@ -16208,6 +16726,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -16238,6 +16757,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Hiperbolik sins hesaplanmak istenen deer.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor el sinus hiperblic del qual s'ha de calcular.";
+            Text[ thai ] = "ค่าสำหรับคำนวณ sine แบบไฮเปอร์โบลา";
         };
     };
      // -=*# Resource for function COTHYP #*=-
@@ -16260,7 +16780,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Devuelve la cotangente hiperblica de un nmero." ;
             Text [ english_us ] = "Returns the hyperbolic cotangent of a number." ;
             Text[ chinese_simplified ] = "计算一个数的双曲余切值。";
-            Text[ russian ] = "   .";
+            Text[ russian ] = "   .";
             Text[ polish ] = "Oblicza cotangens hyperboliczny liczby.";
             Text[ japanese ] = "数値のハイパーボリックコタンジェントを返します。";
             Text[ chinese_traditional ] = "計算一個數的雙曲余切值。";
@@ -16272,6 +16792,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Bir saynn hiperbolik kotanjantn verir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna la cotangent hiperblica d'un nombre.";
+            Text[ thai ] = "ส่งกลับตัวเลข cotangent แบบไฮเปอร์โบลา";
         };
         ExtraData =
         {
@@ -16307,6 +16828,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -16325,7 +16847,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Es el valor diferente de 0 cuya cotangente hiperblica se desea calcular." ;
             Text [ english_us ] = "A value not equal to 0 for which the hyperbolic cotangent is to be returned." ;
             Text[ chinese_simplified ] = "要计算其双曲余切值的不等于零的数值。";
-            Text[ russian ] = ",   ,     .";
+            Text[ russian ] = ",   ,     .";
             Text[ polish ] = "Warto rna od zera, dla ktrej ma zosta obliczony cotangens hyperboliczny.";
             Text[ japanese ] = "ハイパーボリックコタンジェントを求める0でない数値。";
             Text[ chinese_traditional ] = "要計算其雙曲余切值的不等於零的數值。";
@@ -16337,6 +16859,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Hiperbolik kotanjant hesaplanacak sfra eit olmayan deer.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Un valor no igual a 0 la cotangent hiperblica del qual s'ha de tornar.";
+            Text[ thai ] = "ค่าไม่เท่ากับ 0 สำหรับส่งกลับ cotangent แบบไฮเปอร์โบลา";
         };
     };
      // -=*# Resource for function TANHYP #*=-
@@ -16359,7 +16882,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Devuelve la tangente hiperblica de un nmero." ;
             Text [ english_us ] = "Returns the hyperbolic tangent of a number." ;
             Text[ chinese_simplified ] = "计算一个数的双曲正切值。";
-            Text[ russian ] = "   .";
+            Text[ russian ] = "   .";
             Text[ polish ] = "Oblicza tangens hiperboliczny liczby.";
             Text[ japanese ] = "数値の双曲線正接(ハイパーボリックタンジェント)を返します。";
             Text[ chinese_traditional ] = "計算一個數的雙曲正切值。";
@@ -16371,6 +16894,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Saynn hiperbolik tanjantn hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna la tangent hiperblica d'un nombre.";
+            Text[ thai ] = "ส่งกลับตัวเลข tangent แบบไฮเปอร์โบลา";
         };
         ExtraData =
         {
@@ -16406,6 +16930,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -16436,6 +16961,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Hiperbolik tanjant hesaplanacak deer.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor la tangent hiperblica del qual s'ha de calcular.";
+            Text[ thai ] = "ค่าสำหรับคำนวณ tangent แบบไฮเปอร์โบลา";
         };
     };
      // -=*# Resource for function ARCTAN2 #*=-
@@ -16458,7 +16984,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Devuelve el arco tangente de las coordenadas especificadas." ;
             Text [ english_us ] = "Returns the arctangent for the specified coordinates." ;
             Text[ chinese_simplified ] = "计算给定坐标值的点的反正切值。";
-            Text[ russian ] = "     .";
+            Text[ russian ] = "     .";
             Text[ polish ] = "Oblicza arcus tangens na podstawie wsprzdnych x i y.";
             Text[ japanese ] = "指定された x-y座標のアークタンジェントを返します。";
             Text[ chinese_traditional ] = "計算給定座標值的點的反正切值。";
@@ -16470,6 +16996,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Belirtilen koordinatlarn arktanjantn verir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna l'arctangent per a les coordenades indicades.";
+            Text[ thai ] = "ส่งกลับ arctangent สำหรับพิกัดที่ระบุ";
         };
         ExtraData =
         {
@@ -16493,7 +17020,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Nmero_x" ;
             Text [ english_us ] = "number_x" ;
             Text[ chinese_simplified ] = "number_x";
-            Text[ russian ] = "_x";
+            Text[ russian ] = " X";
             Text[ polish ] = "Liczba_x";
             Text[ japanese ] = "x座標";
             Text[ chinese_traditional ] = "number_x";
@@ -16505,6 +17032,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Say_x";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "number_x";
+            Text[ thai ] = "เลข_x";
         };
         String 3 // Description of Parameter 1
         {
@@ -16535,6 +17063,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "X koordinatnn deeri.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor de la coordenada x.";
+            Text[ thai ] = "ค่าสำหรับพิกัด x ";
         };
         String 4 // Name of Parameter 2
         {
@@ -16552,7 +17081,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Nmero_y" ;
             Text [ english_us ] = "number_y" ;
             Text[ chinese_simplified ] = "number_y";
-            Text[ russian ] = "_y";
+            Text[ russian ] = " Y";
             Text[ polish ] = "Liczba_y";
             Text[ japanese ] = "y座標";
             Text[ chinese_traditional ] = "number_y";
@@ -16564,6 +17093,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Say_y";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "number_y";
+            Text[ thai ] = "เลข_y";
         };
         String 5 // Description of Parameter 2
         {
@@ -16594,6 +17124,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Y koordinatnn deeri.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor de la coordenada y.";
+            Text[ thai ] = "ค่าสำหรับพิกัด y ";
         };
     };
      // -=*# Resource for function DEG #*=-
@@ -16628,6 +17159,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Radyan dereceye dntrr";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Converteix un radian en graus.";
+            Text[ thai ] = "แปลงส่วนของวงกลมที่มีความกว้างเท่ากับรัศมีเป็นองศา";
         };
         ExtraData =
         {
@@ -16663,6 +17195,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -16693,6 +17226,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Radyan iindeki a.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Angle en radians";
+            Text[ thai ] = "มุมในส่วนของวงกลมที่มีความกว้างเท่ากับรัศมี";
         };
     };
      // -=*# Resource for function RAD #*=-
@@ -16727,6 +17261,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Dereceyi radyana dntrr.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Converteix graus en radians.";
+            Text[ thai ] = "แปลงองศาเป็นส่วนของวงกลมที่มีความกว้างเท่ากับรัศมี";
         };
         ExtraData =
         {
@@ -16762,6 +17297,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -16771,7 +17307,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "L'angolo in gradi." ;
             Text [ portuguese_brazilian ] = "Der Winkel in Grad." ;
             Text [ portuguese ] = " o ngulo em graus que se deseja converter." ;
-            Text [ finnish ] = "Kulma asteina." ;
+            Text [ finnish ] = "Kulma asteina" ;
             Text [ danish ] = "Vinklen i grader." ;
             Text [ french ] = "L'angle en degrs." ;
             Text [ swedish ] = "Vinkeln i grader." ;
@@ -16791,6 +17327,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Derece biriminden a.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Angle en graus.";
+            Text[ thai ] = "มุมในองศา";
         };
     };
      // -=*# Resource for function EXP #*=-
@@ -16825,6 +17362,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Say e tabannn ssn alr.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Calcula l'exponent per a la base e.";
+            Text[ thai ] = "คำนวณเลขยกกำลังสำหรับฐาน e";
         };
         ExtraData =
         {
@@ -16860,6 +17398,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -16877,7 +17416,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Es el exponente aplicado a la base 'e'." ;
             Text [ english_us ] = "The exponent applied to base e." ;
             Text[ chinese_simplified ] = "底数为 e 的指数。";
-            Text[ russian ] = ",       e.";
+            Text[ russian ] = ",    .";
             Text[ polish ] = "Wykadnik potgi o podstawie e.";
             Text[ japanese ] = "e を底とするべき乗の指数。";
             Text[ chinese_traditional ] = "底數為 e 的指數。";
@@ -16889,6 +17428,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Say e tabanna uygulanan s.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Exponent aplicat a la base e.";
+            Text[ thai ] = "เลขยกกำลังประยุกต์ใช้กับฐาน e";
         };
     };
      // -=*# Resource for function LOG #*=-
@@ -16923,6 +17463,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Herhangi bir tabandaki logaritmay hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Calcula el logaritme en qualsevol base indicada.";
+            Text[ thai ] = "คำนวณลอการิธึมไปยังฐานใด ๆ ที่ระบุ";
         };
         ExtraData =
         {
@@ -16958,6 +17499,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -16988,6 +17530,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Logaritmas hesaplanan 0'dan byk deer.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Un valor ms gran que 0 el logaritme del qual s'ha de calcular.";
+            Text[ thai ] = "ค่ามากกว่า 0 สำหรับอัลกอริธึมที่ใช้ในการคำนวณ";
         };
         String 4 // Name of Parameter 2
         {
@@ -17013,10 +17556,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Basis";
             Text[ chinese_simplified ] = "Base";
             Text[ greek ] = "";
-            Text[ korean ] = "기본";
+            Text[ korean ] = "Base";
             Text[ turkish ] = "Taban";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Base anual";
+            Text[ catalan ] = "Base";
+            Text[ thai ] = "ฐาน";
         };
         String 5 // Description of Parameter 2
         {
@@ -17027,7 +17571,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Base del logaritmo." ;
             Text [ portuguese_brazilian ] = "Die Basis f? die Logarithmusberechnung." ;
             Text [ portuguese ] = " a base para o clculo do logaritmo." ;
-            Text [ finnish ] = "Logaritmin kantaluku." ;
+            Text [ finnish ] = "Logaritmin kantaluku" ;
             Text [ danish ] = "Logaritmens grundtal." ;
             Text [ french ] = "La base pour le calcul du logarithme." ;
             Text [ swedish ] = "Basen fr logaritmberkningen." ;
@@ -17047,6 +17591,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Logaritma hesabnn taban.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Base del logaritme.";
+            Text[ thai ] = "ฐานของอัลกอริธึม";
         };
     };
      // -=*# Resource for function LN #*=-
@@ -17081,6 +17626,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Saynn doal logaritmasn hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Calcula el logaritme natural d'un nombre.";
+            Text[ thai ] = "คำนวณตัวเลขลอการิธึมธรรมชาติ";
         };
         ExtraData =
         {
@@ -17116,6 +17662,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -17146,6 +17693,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Doal logaritmas hesaplanan 0'dan byk deer.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Un valor ms gran que 0 el logaritme natural del qual s'ha de calcular.";
+            Text[ thai ] = "ค่ามากกว่า 0 สำหรับคำนวณลอการิธึมธรรมชาติ";
         };
     };
      // -=*# Resource for function LOG10 #*=-
@@ -17180,6 +17728,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Bir saynn 10 tabannda logaritmasn hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Calcula el logaritme en base 10 d'un nombre.";
+            Text[ thai ] = "คำนวณตัวเลขลอการิธึมฐาน10 ";
         };
         ExtraData =
         {
@@ -17215,6 +17764,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -17245,6 +17795,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Logaritmas hesaplanan 0'dan byk deer.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Un valor ms gran que 0 el logaritme del qual s'ha de calcular.";
+            Text[ thai ] = "ค่ามากกว่า 0 สำหรับลอการิธึมที่ใช้ในการคำนวณ";
         };
     };
      // -=*# Resource for function FAKULTT #*=-
@@ -17279,6 +17830,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Saynn arpmn verir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Calcula el factorial d'un nombre.";
+            Text[ thai ] = "คำนวณตัวเลขแฟคตอเรียล";
         };
         ExtraData =
         {
@@ -17314,6 +17866,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -17344,6 +17897,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "arpm hesaplanan say.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre el factorial del qual s'ha de calcular.";
+            Text[ thai ] = "ตัวเลขสำหรับคำนวณแฟคตอเรียล";
         };
     };
      // -=*# Resource for function REST #*=-
@@ -17377,6 +17931,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Blm ileminden kalan hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Calcula la resta d'una divisi.";
+            Text[ thai ] = "คำนวณเศษของการหาร";
         };
         ExtraData =
         {
@@ -17412,6 +17967,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Kar pay";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Dividend";
+            Text[ thai ] = "ตัวตั้งหาร";
         };
         String 3 // Description of Parameter 1
         {
@@ -17421,7 +17977,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Numero che viene diviso." ;
             Text [ portuguese_brazilian ] = "Die Zahl, die geteilt wird." ;
             Text [ portuguese ] = " o nmero a ser dividido." ;
-            Text [ finnish ] = "Jaettava luku." ;
+            Text [ finnish ] = "Jaettava luku" ;
             Text [ danish ] = "Det tal som skal divideres." ;
             Text [ french ] = "Le nombre  diviser." ;
             Text [ swedish ] = "Talet som divideras." ;
@@ -17429,7 +17985,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "es el nmero que desea dividir y para el cual desea encontrar el residuo." ;
             Text [ english_us ] = "The number to be divided." ;
             Text[ chinese_simplified ] = "被除数。";
-            Text[ russian ] = ",  ,      .";
+            Text[ russian ] = ".";
             Text[ polish ] = "Liczba, ktra zostanie podzielona.";
             Text[ japanese ] = "割られる数";
             Text[ chinese_traditional ] = "被除數。";
@@ -17441,6 +17997,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Blnen say.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre que s'ha de dividir.";
+            Text[ thai ] = "ตัวเลขที่ถูกหาร";
         };
         String 4 // Name of Parameter 2
         {
@@ -17466,10 +18023,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Deler";
             Text[ chinese_simplified ] = "Divisor";
             Text[ greek ] = "";
-            Text[ korean ] = "제수";
+            Text[ korean ] = "젯수";
             Text[ turkish ] = "Blen";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Divisor";
+            Text[ thai ] = "ตัวหาร";
         };
         String 5 // Description of Parameter 2
         {
@@ -17499,6 +18057,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Blen say.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre pel qual es divideix el dividend.";
+            Text[ thai ] = "ตัวเลขหารจำนวนที่ถูกหาร";
         };
     };
      // -=*# Resource for function VORZEICHEN #*=-
@@ -17513,7 +18072,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Restituisce il segno di un numero." ;
             Text [ portuguese_brazilian ] = "Liefert das Vorzeichen einer Zahl." ;
             Text [ portuguese ] = "Determina o sinal de um nmero." ;
-            Text [ finnish ] = "Palauttaa luvun etumerkin (plus/miinus)." ;
+            Text [ finnish ] = "Palauttaa luvun etumerkin." ;
             Text [ danish ] = "Returnerer et tals fortegn." ;
             Text [ french ] = "Donne le signe d'un nombre." ;
             Text [ swedish ] = "Returnerar tecknet fr ett tal." ;
@@ -17533,6 +18092,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Saynn iaretini verir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna el signe algebraic d'un nombre.";
+            Text[ thai ] = "ส่งกลับตัวเลขเครื่องหมายพีชคณิต";
         };
         ExtraData =
         {
@@ -17568,6 +18128,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -17577,7 +18138,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Un numero reale qualsiasi." ;
             Text [ portuguese_brazilian ] = "Die Zahl, deren Vorzeichen bestimmt wird." ;
             Text [ portuguese ] = " qualquer nmero real." ;
-            Text [ finnish ] = "Luku, jonka etumerkki (plus/miinus) mritetn." ;
+            Text [ finnish ] = "Luku, jonka etumerkki mritetn." ;
             Text [ danish ] = "Det tal hvis fortegn skal bestemmes." ;
             Text [ french ] = "Le nombre rel dont vous souhaitez dterminer le signe." ;
             Text [ swedish ] = "Talet vars tecken bestms." ;
@@ -17597,6 +18158,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "areti belirlenen say.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre el signe algebraic del qual s'ha de determinar.";
+            Text[ thai ] = "ตัวเลขสำหรับกำหนดเครื่องหมายพีชคณิต";
         };
     };
      // -=*# Resource for function TEILERGEBNIS #*=-
@@ -17618,7 +18180,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Devuelve un subtotal en una hoja de clculo." ;
             Text [ english_us ] = "Calculates subtotals in a spreadsheet." ;
             Text[ chinese_simplified ] = "计算数据单或数据库中的分类汇总。";
-            Text[ russian ] = "          .";
+            Text[ russian ] = "     .";
             Text[ polish ] = "Funkcja do obliczania sum porednich w arkuszach kalkulacyjnych.";
             Text[ japanese ] = "表またはリストの集計値を返します。";
             Text[ chinese_traditional ] = "計算資料單或資料庫中的小計。";
@@ -17630,6 +18192,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Tablolarda ara toplam hesaplama fonksiyonu.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Calcula els subtotals d'un full de clcul.";
+            Text[ thai ] = "คำนวณผลรวมย่อยในกระดาษคำนวณ";
         };
         ExtraData =
         {
@@ -17653,7 +18216,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "nm_funcin" ;
             Text [ english_us ] = "Function" ;
             Text[ chinese_simplified ] = "function";
-            Text[ russian ] = "_";
+            Text[ russian ] = "";
             Text[ polish ] = "Funkcja";
             Text[ japanese ] = "関数";
             Text[ chinese_traditional ] = "function";
@@ -17665,6 +18228,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Fonksiyon";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Funci";
+            Text[ thai ] = "ฟังก์ชั่น";
         };
         String 3 // Description of Parameter 1
         {
@@ -17675,7 +18239,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Numero che corrisponde a un indice delle funzioni possibili: somma, max..." ;
             Text [ portuguese_brazilian ] = "Funktionsindex. Ist ein Index auf die m?lichen Funktion Summe, Max, ..." ;
             Text [ portuguese ] = " um nmero de 1 a 11 que determina qual a funo a ser usada para o clculo dos subtotais de uma lista." ;
-            Text [ finnish ] = "Funktiohakemisto. Kytettviss olevien funktioiden hakemisto (summa, enimmisarvo...)" ;
+            Text [ finnish ] = "Funktiohakemisto. Kytettviss olevien funktioiden hakemisto, esimerkiksi summa tai enimmisarvo." ;
             Text [ danish ] = "Funktionsindeks. Et indeks for den mulige funktion sum, maks, ..." ;
             Text [ french ] = "Un nombre compris entre 1 et 11 indiquant quelle fonction utiliser pour calculer les sous-totaux d'une liste." ;
             Text [ swedish ] = "Funktionsindex. r ett index fr den mjliga funktionen summa, max." ;
@@ -17683,7 +18247,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "es un nmero que indica qu funcin debe ser utilizada." ;
             Text [ english_us ] = "Function index. Is an index of the possible functions Total, Max, ..." ;
             Text[ chinese_simplified ] = "函数索引,用于指定使用的函数,如 Sum, Max 等。";
-            Text[ russian ] = ",  ,         .";
+            Text[ russian ] = " .     Total, Max....";
             Text[ polish ] = "Indeks funkcji okrelajcy moliwe funkcje.";
             Text[ japanese ] = "関数インデックス。使用する関数のインデックス。";
             Text[ chinese_traditional ] = "函數參照。用於指定使用的函數,如 SUM,MAX 等。";
@@ -17695,6 +18259,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Fonksiyon dizini. Muhtemel fonksiyonlar Sum, Max ile ilgili bir dizindir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "ndex de funcions. s un ndex de les funcions possibles Total, Max, ...";
+            Text[ thai ] = "ดัชนีฟังก์ชั่น เป็นดัชนีของฟังก์ชั่นที่เป็นไปได้ รวมทั้งหมด, มากที่สุด, ...";
         };
         String 4 // Name of Parameter 2
         {
@@ -17704,26 +18269,27 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Intervallo " ;
             Text [ portuguese_brazilian ] = "Bereich " ;
             Text [ portuguese ] = "Intervalo " ;
-            Text [ finnish ] = "alue" ;
+            Text [ finnish ] = "alue " ;
             Text [ danish ] = "Omrde " ;
             Text [ french ] = "Plage " ;
             Text [ swedish ] = "omrde  " ;
-            Text [ dutch ] = "Bereik  " ;
+            Text [ dutch ] = "Bereik" ;
             Text [ spanish ] = "ref1 " ;
             Text [ english_us ] = "range " ;
             Text[ chinese_simplified ] = "Range ";
-            Text[ russian ] = "  ";
+            Text[ russian ] = "";
             Text[ polish ] = "Zakres  ";
             Text[ japanese ] = "範囲 ";
             Text[ chinese_traditional ] = "Range ";
             Text[ arabic ] = "Range ";
-            Text[ dutch ] = "Bereik  ";
+            Text[ dutch ] = "Bereik";
             Text[ chinese_simplified ] = "Range ";
             Text[ greek ] = " ";
             Text[ korean ] = "범위 ";
             Text[ turkish ] = "Aralk ";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "rea ";
+            Text[ thai ] = "ช่วง ";
         };
         String 5 // Description of Parameter 2
         {
@@ -17750,10 +18316,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Het cellenbereik waarover u een berekening wilt maken.";
             Text[ chinese_simplified ] = "用来计算分类汇总的单元格区域。";
             Text[ greek ] = " ,       .";
-            Text[ korean ] = "셀로 간주되는 영역.";
+            Text[ korean ] = "셀이 고려되는 범위";
             Text[ turkish ] = "Hcreleri dikkate alnacak aralk.";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Celles de l'rea que s'han de considerar.";
+            Text[ catalan ] = "Cel.les de l'rea que s'han de considerar.";
+            Text[ thai ] = "เซลล์ของช่วงที่คำนึงถึง";
         };
     };
      // -=*# Resource for function GANZZAHL #*=-
@@ -17772,22 +18339,23 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ danish ] = "Runder et tal ned til nrmeste mindre heltal." ;
             Text [ french ] = "Arrondit un nombre au nombre entier infrieur le plus proche." ;
             Text [ swedish ] = "Avrundar ett tal nedt till nrmaste mindre heltal." ;
-            Text [ dutch ] = "Rondt een getal naar beneden af op het dichtsbijzijnde gehele getal." ;
+            Text [ dutch ] = "Rondt een getal naar beneden af op het dichtstbijzijnde gehele getal." ;
             Text [ spanish ] = "Redondea un nmero hasta el entero inferior ms prximo." ;
             Text [ english_us ] = "Rounds a number down to the nearest integer." ;
             Text[ chinese_simplified ] = "将一个数舍入为最接近的(数值减小)整数。";
             Text[ russian ] = "     .";
             Text[ polish ] = "Zaokrgla liczb w d do najbliszej liczby cakowitej.";
-            Text[ japanese ] = "小数点以下を切り捨てて整数を返します。";
+            Text[ japanese ] = "数値は、整数に丸める数値です。";
             Text[ chinese_traditional ] = "將一個數舍入為最接近的(數值減小)整數。";
             Text[ arabic ] = "      .";
-            Text[ dutch ] = "Rondt een getal naar beneden af op het dichtsbijzijnde gehele getal.";
+            Text[ dutch ] = "Rondt een getal naar beneden af op het dichtstbijzijnde gehele getal.";
             Text[ chinese_simplified ] = "将一个数舍入为最接近的(数值减小)整数。";
             Text[ greek ] = "          .";
             Text[ korean ] = "가장 가까운 정수로 반버림";
             Text[ turkish ] = "Sayy, bir alt tamsayya yuvarlar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Arrodoneix un nombre a l'enter inferior ms prxim.";
+            Text[ thai ] = "ปัดเศษตัวเลขลงเป็นจำนวนเต็มที่ใกล้ที่สุด";
         };
         ExtraData =
         {
@@ -17823,6 +18391,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -17842,7 +18411,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ chinese_simplified ] = "要被舍入的数。";
             Text[ russian ] = " .";
             Text[ polish ] = "Liczba do zaokrglenia.";
-            Text[ japanese ] = "切り捨ての対象となる数値。";
+            Text[ japanese ] = "整数に丸める数値。";
             Text[ chinese_traditional ] = "要被舍入的數字。";
             Text[ arabic ] = "   .";
             Text[ dutch ] = "Het getal dat wordt afgerond.";
@@ -17852,6 +18421,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Aa yuvarlanan say.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre que s'ha d'arrodonir a la baixa.";
+            Text[ thai ] = "ตัวเลขที่ถูกปัดเศษลง";
         };
     };
      // -=*# Resource for function KRZEN #*=-
@@ -17869,22 +18439,23 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ danish ] = "Afkorter et tals decimaler." ;
             Text [ french ] = "Rduit le nombre de dcimales d'un nombre." ;
             Text [ swedish ] = "Kortar av ett tals decimaler." ;
-            Text [ dutch ] = "Beperkt het aantal cijfers achter de komma." ;
+            Text [ dutch ] = "Beperkt het aantal decimalen." ;
             Text [ spanish ] = "Trunca un nmero a un entero." ;
             Text [ english_us ] = "Truncates the decimal places of a number." ;
             Text[ chinese_simplified ] = "去除数字的小数点位数。";
-            Text[ russian ] = "   .     .";
+            Text[ russian ] = "   .";
             Text[ polish ] = "Obcina w liczbie miejsca po przecinku ";
             Text[ japanese ] = "数値の任意の小数位を切り捨てます。";
             Text[ chinese_traditional ] = "去除數字的小數點位數。";
             Text[ arabic ] = "    .";
-            Text[ dutch ] = "Beperkt het aantal cijfers achter de komma.";
+            Text[ dutch ] = "Beperkt het aantal decimalen.";
             Text[ chinese_simplified ] = "去除数字的小数点位数。";
             Text[ greek ] = "     .";
-            Text[ korean ] = "숫자의 소수점 이하를 절삭";
+            Text[ korean ] = "숫자의 소수점 이하 자릿수를 자릅니다.";
             Text[ turkish ] = "Saynn, ondalk hanelerini keser.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Trunca els llocs decimals d'un nombre.";
+            Text[ thai ] = "ตัดจุดทศนิยมของตัวเลข";
         };
         ExtraData =
         {
@@ -17920,6 +18491,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -17929,12 +18501,12 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Numero di cui si vuole eliminare la parte decimale." ;
             Text [ portuguese_brazilian ] = "Die Zahl, deren Nachkommastellen abgeschnitten werden." ;
             Text [ portuguese ] = " o nmero cuja casa decimal deseja truncar." ;
-            Text [ finnish ] = "Katkaistava luku." ;
+            Text [ finnish ] = "Katkaistava luku" ;
             Text [ danish ] = "Det tal hvis decimaler skal afkortes." ;
             Text [ french ] = "Reprsente le nombre dont les dcimales sont  rduire." ;
             Text [ swedish ] = "Det tal vars decimaler skall avkortas." ;
             Text [ dutch ] = "Het getal waarvan de decimalen worden afgekapt." ;
-            Text [ spanish ] = "es el nmero al que se le eliminan los decimales." ;
+            Text [ spanish ] = "Representa el nmero al que se le borran los decimales." ;
             Text [ english_us ] = "The number to be truncated." ;
             Text[ chinese_simplified ] = "要除去小数点位数的数字。";
             Text[ russian ] = " .";
@@ -17949,6 +18521,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Ondalk haneleri kesilecek say.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre que s'ha de truncar.";
+            Text[ thai ] = "ตัวเลขที่ถูกตัด";
         };
         String 4 // Name of Parameter 2
         {
@@ -17978,6 +18551,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Hane says";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "compta";
+            Text[ thai ] = "นับ";
         };
         String 5 // Description of Parameter 2
         {
@@ -17995,7 +18569,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "el nmero de decimales que no se debe truncar." ;
             Text [ english_us ] = "The number of places after the decimal point that are not to be truncated." ;
             Text[ chinese_simplified ] = "要保留的小数点位数。";
-            Text[ russian ] = ",   .";
+            Text[ russian ] = "  .";
             Text[ polish ] = "Liczba miejsc po przecinku, ktre nie zostan obcite.";
             Text[ japanese ] = "切り捨てを行った後の桁数。";
             Text[ chinese_traditional ] = "要保留的小數點位數。";
@@ -18007,6 +18581,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Kesilmeyen ondalk hanelerin says.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre de llocs desprs del punt decimal que no s'ha de truncar.";
+            Text[ thai ] = "ตำแหน่งตัวเลขหลังจุดทศนิยมที่ไม่ถูกตัด";
         };
     };
      // -=*# Resource for function RUNDEN #*=-
@@ -18028,7 +18603,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Redondea un nmero al nmero de decimales especificado." ;
             Text [ english_us ] = "Rounds a number to a predefined accuracy." ;
             Text[ chinese_simplified ] = "按指定位数向上(沿绝对值增大的方向)舍入数字。";
-            Text[ russian ] = "       .";
+            Text[ russian ] = "    .";
             Text[ polish ] = "Zaokrgla liczb do okrelonej iloci cyfr.";
             Text[ japanese ] = "数値を四捨五入して指定の桁数にします。";
             Text[ chinese_traditional ] = "按指定位數向上(沿絕對值增大的方向)舍入數字。";
@@ -18040,6 +18615,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Sayy nceden belirlenen bir dorulukta yuvarlar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Arrodoneix un nombre a una precisi predefinida.";
+            Text[ thai ] = "ปัดเศษตัวเลขเพื่อความเที่ยงตรงที่กำหนดไว้ล่วงหน้า";
         };
         ExtraData =
         {
@@ -18075,6 +18651,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -18104,6 +18681,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Yuvarlanacak say.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre que s'ha d'arrodonir.";
+            Text[ thai ] = "ตัวเลขที่ถูกปัดเศษ";
         };
         String 4 // Name of Parameter 2
         {
@@ -18121,7 +18699,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "nm_decimales" ;
             Text [ english_us ] = "count" ;
             Text[ chinese_simplified ] = "count";
-            Text[ russian ] = "_";
+            Text[ russian ] = "";
             Text[ polish ] = "liczba_cyfr";
             Text[ japanese ] = "桁数";
             Text[ chinese_traditional ] = "count";
@@ -18133,6 +18711,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "compta";
+            Text[ thai ] = "นับ";
         };
         String 5 // Description of Parameter 2
         {
@@ -18142,7 +18721,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Specifica il numero di cifre a cui si desidera arrotondare il numero." ;
             Text [ portuguese_brazilian ] = "Die Anzahl der Stellen, auf die gerundet werden soll." ;
             Text [ portuguese ] = "determina a quantidade de dgitos para a qual se deseja arredondar." ;
-            Text [ finnish ] = "Pyristystarkkuus (desimaaleja)." ;
+            Text [ finnish ] = "Desimaalien pyristystarkkuus" ;
             Text [ danish ] = "Det antal decimaler tallet skal rundes til." ;
             Text [ french ] = "Le nombre de chiffres auquel vous voulez arrondir le nombre." ;
             Text [ swedish ] = "Antalet decimaler som talet skall avrundas till." ;
@@ -18162,6 +18741,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Yuvarlanacak rakam says.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre de llocs decimals a qu s'ha d'arrodonir un nombre.";
+            Text[ thai ] = "จำนวนตำแหน่งที่จะปัดเศษ";
         };
     };
      // -=*# Resource for function AUFRUNDEN #*=-
@@ -18191,10 +18771,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Rondt een getal naar boven af op het opgegeven aantal decimalen.";
             Text[ chinese_simplified ] = "按指定位数来舍入数字。";
             Text[ greek ] = "         .";
-            Text[ korean ] = "지정된 자리수로 반올림.";
+            Text[ korean ] = "지정된 자리수로 반올림합니다.";
             Text[ turkish ] = "Sayy nceden belirlenen bir dorulukla yukar yuvarlar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Arrodoneix un nombre a l'ala a una precisi predefinida.";
+            Text[ thai ] = "ปัดเศษตัวเลขขึ้นเพื่อความเที่ยงตรงที่กำหนดไว้ล่วงหน้า";
         };
         ExtraData =
         {
@@ -18230,6 +18811,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -18259,6 +18841,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Yukar yuvarlanacak say.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre que s'ha d'arrodonir a l'ala.";
+            Text[ thai ] = "ตัวเลขที่ปัดเศษขึ้น";
         };
         String 4 // Name of Parameter 2
         {
@@ -18276,7 +18859,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "nm_decimales" ;
             Text [ english_us ] = "count" ;
             Text[ chinese_simplified ] = "count";
-            Text[ russian ] = "_";
+            Text[ russian ] = "";
             Text[ polish ] = "liczba_cyfr";
             Text[ japanese ] = "桁数";
             Text[ chinese_traditional ] = "count";
@@ -18288,6 +18871,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Hane says";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "compta";
+            Text[ thai ] = "นับ";
         };
         String 5 // Description of Parameter 2
         {
@@ -18297,7 +18881,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Numero di cifre che si desidera arrotondare." ;
             Text [ portuguese_brazilian ] = "Die Anzahl der Stellen, auf die aufgerundet werden soll." ;
             Text [ portuguese ] = "determina a quantidade de dgitos para a qual se deseja arredondar." ;
-            Text [ finnish ] = "Pyristystarkkuus (desimaaleja)." ;
+            Text [ finnish ] = "Desimaalien pyristystarkkuus" ;
             Text [ danish ] = "Det antal decimaler tallet skal rundes op til." ;
             Text [ french ] = "Le nombre de chiffres  prendre en compte pour arrondir l'argument nombre." ;
             Text [ swedish ] = "Antalet decimaler som talet skall avrundas till uppt." ;
@@ -18317,6 +18901,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Yukar yuvarlanacak rakam says.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre de llocs decimals a qu s'ha d'arrodonir un nombre.";
+            Text[ thai ] = "จำนวนตำแหน่งที่จะปัดเศษตัวเลข";
         };
     };
      // -=*# Resource for function ABRUNDEN #*=-
@@ -18338,7 +18923,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Redondea un nmero hacia abajo, en direccin hacia cero." ;
             Text [ english_us ] = "Rounds a number down to a predefined accuracy." ;
             Text[ chinese_simplified ] = "按指定位数向下(沿绝对值减小的方向)舍入数字。";
-            Text[ russian ] = "        .";
+            Text[ russian ] = "      .";
             Text[ polish ] = "Zaokrgla liczb do okrelonej iloci cyfr.";
             Text[ japanese ] = "数値を切り捨てて指定の桁数にします。";
             Text[ chinese_traditional ] = "按指定位數向下(沿絕對值減小的方向)舍入數字。";
@@ -18346,10 +18931,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Rondt een getal naar beneden af op het opgegeven aantal decimalen.";
             Text[ chinese_simplified ] = "按指定位数向下(沿绝对值减小的方向)舍入数字。";
             Text[ greek ] = "         .";
-            Text[ korean ] = "지정된 자릿수로 반버림";
+            Text[ korean ] = "지정된 자릿수로 반내림합니다.";
             Text[ turkish ] = "Sayy nceden belirlenen bir dorulukla aa yuvarlar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Arrodoneix un nombre a la baixa a una precisi predefinida.";
+            Text[ thai ] = "ปัดเศษลงเพื่อความเที่ยงตรงที่กำหนดไว้ล่วงหน้า";
         };
         ExtraData =
         {
@@ -18385,6 +18971,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -18414,6 +19001,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Aa yuvarlanacak say.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre que s'ha d'arrodonir a la baixa.";
+            Text[ thai ] = "ตัวเลขที่ปัดเศษลง";
         };
         String 4 // Name of Parameter 2
         {
@@ -18431,7 +19019,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "nm_decimales" ;
             Text [ english_us ] = "count" ;
             Text[ chinese_simplified ] = "count";
-            Text[ russian ] = "_";
+            Text[ russian ] = "";
             Text[ polish ] = "liczba_cyfr";
             Text[ japanese ] = "桁数";
             Text[ chinese_traditional ] = "count";
@@ -18443,6 +19031,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Hane says";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "compta";
+            Text[ thai ] = "นับ";
         };
         String 5 // Description of Parameter 2
         {
@@ -18452,7 +19041,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Numero di cifre che si desidera arrotondare." ;
             Text [ portuguese_brazilian ] = "Die Anzahl der Stellen, auf die abgerundet werden soll." ;
             Text [ portuguese ] = "determina a quantidade de dgitos para a qual se deseja arredondar." ;
-            Text [ finnish ] = "Alaspin pyristettvn luvun pyristystarkkuus (desimaaleja)." ;
+            Text [ finnish ] = "Alaspin pyristettvn luvun desimaalien pyristystarkkuus." ;
             Text [ danish ] = "Det antal decimaler tallet skal rundes ned til." ;
             Text [ french ] = "Le nombre de chiffres  prendre en compte pour arrondir l'argument nombre." ;
             Text [ swedish ] = "Antalet decimaler som talet skall avrundas till." ;
@@ -18472,6 +19061,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Aa yuvarlanacak rakam says.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre de llocs decimals a qu s'ha d'arrodonir un nombre a la baixa.";
+            Text[ thai ] = "จำนวนตำแหน่งตัวเลขที่ปัดเศษลง";
         };
     };
      // -=*# Resource for function GERADE #*=-
@@ -18490,7 +19080,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ danish ] = "Runder et tal op til nrmeste lige heltal." ;
             Text [ french ] = "Arrondi un nombre au nombre entier pair le plus proche en s'loignant de zro." ;
             Text [ swedish ] = "Avrundar ett tal uppt till nrmaste jmna heltal." ;
-            Text [ dutch ] = "Rondt een getal naar boven af op het dichtsbijzijnde even gehele getal." ;
+            Text [ dutch ] = "Rondt een getal naar boven af op het dichtstbijzijnde even gehele getal." ;
             Text [ spanish ] = "Devuelve un nmero redondeado hasta el nmero entero par ms prximo." ;
             Text [ english_us ] = "Rounds a number up to the nearest even integer." ;
             Text[ chinese_simplified ] = "将一个数字沿绝对值增大方向舍入成一个最接近的偶数。";
@@ -18499,13 +19089,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ japanese ] = "数値を偶数に切り上げます。";
             Text[ chinese_traditional ] = "將一個數字向上舍入成一個最接近的偶數。";
             Text[ arabic ] = "       .";
-            Text[ dutch ] = "Rondt een getal naar boven af op het dichtsbijzijnde even gehele getal.";
+            Text[ dutch ] = "Rondt een getal naar boven af op het dichtstbijzijnde even gehele getal.";
             Text[ chinese_simplified ] = "将一个数字沿绝对值增大方向舍入成一个最接近的偶数。";
             Text[ greek ] = "           .";
             Text[ korean ] = "가장 가까운 짝수 정수로 반올림";
             Text[ turkish ] = "Sayy bir st ift tamsayya yuvarlar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Arrodoneix un nombre a l'enter parell superior ms prxim.";
+            Text[ thai ] = "ปัดเศษตัวเลขขึ้นเป็นจำนวนเต็มคู่ที่ใกล้ที่สุด";
         };
         ExtraData =
         {
@@ -18541,6 +19132,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -18570,6 +19162,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Yuvarlanan say.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre que s'ha d'arrodonir a l'ala.";
+            Text[ thai ] = "ตัวเลขที่ปัดเศษขึ้น";
         };
     };
      // -=*# Resource for function UNGERADE #*=-
@@ -18588,7 +19181,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ danish ] = "Runder et tal op til nrmeste ulige heltal." ;
             Text [ french ] = "Arrondi un nombre au nombre entier impair le plus proche en s'loignant de zro." ;
             Text [ swedish ] = "Avrundar ett tal uppt till nrmaste udda heltal." ;
-            Text [ dutch ] = "Rondt een getal naar boven af op het dichtsbijzijnde oneven gehele getal." ;
+            Text [ dutch ] = "Rondt een getal naar boven af op het dichtstbijzijnde oneven gehele getal." ;
             Text [ spanish ] = "Redondea un nmero hasta el prximo entero impar." ;
             Text [ english_us ] = "Rounds a number up to the nearest odd integer." ;
             Text[ chinese_simplified ] = "将一个数向上舍入成最接近的一个奇整数。";
@@ -18597,13 +19190,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ japanese ] = "数値を奇数に切り上げます。";
             Text[ chinese_traditional ] = "將一個數向上舍入成最接近的一個奇整數。";
             Text[ arabic ] = "       .";
-            Text[ dutch ] = "Rondt een getal naar boven af op het dichtsbijzijnde oneven gehele getal.";
+            Text[ dutch ] = "Rondt een getal naar boven af op het dichtstbijzijnde oneven gehele getal.";
             Text[ chinese_simplified ] = "将一个数向上舍入成最接近的一个奇整数。";
             Text[ greek ] = "           .";
             Text[ korean ] = "가장 가까운 홀수 정수로 반올림";
             Text[ turkish ] = "Sayy bir st tek tamsayya yuvarlar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Arrodoneix un nombre a l'enter senar superior ms prxim.";
+            Text[ thai ] = "ปัดเศษตัวเลขขึ้นเป็นจำนวนเต็มคี่ที่ใกล้ที่สุด";
         };
         ExtraData =
         {
@@ -18639,6 +19233,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -18668,6 +19263,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Bir st sayya yuvarlanan say.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre que s'ha d'arrodonir a l'ala.";
+            Text[ thai ] = "ตัวเลขที่ปัดเศษขึ้น";
         };
     };
      // -=*# Resource for function OBERGRENZE #*=-
@@ -18690,7 +19286,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Redondea un nmero al prximo mltiplo del argumento cifra_significativa, en direccin contraria a cero." ;
             Text [ english_us ] = "Rounds a number up to the nearest multiple of significance." ;
             Text[ chinese_simplified ] = "将一个数字舍入成最接近的整数或其基数的最小倍数。";
-            Text[ russian ] = "       .";
+            Text[ russian ] = "     .";
             Text[ polish ] = "Podaje warto liczby zaokrglonej do podanej wielokrotnoci.";
             Text[ japanese ] = "数値を挟む基準値の倍数のうち、大きい方の値を返します。";
             Text[ chinese_traditional ] = "將一個數字舍入成最接近的整數或其基數的最小倍數。";
@@ -18702,6 +19298,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Bir sayy, admn bir sonraki katna yuvarlar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Arrodoneix un nombre al mltiple significatiu superior ms prxim.";
+            Text[ thai ] = "ปัดเศษตัวเลขขึ้นผลคูณที่ใกล้ที่สุดของเลขนัยสำคัญ";
         };
         ExtraData =
         {
@@ -18737,6 +19334,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -18766,6 +19364,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Yukar yuvarlanacak say.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre que s'ha d'arrodonir a l'ala.";
+            Text[ thai ] = "ตัวเลขที่ปัดเศษขึ้น";
         };
         String 4 // Name of Parameter 2
         {
@@ -18791,10 +19390,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Stapgrootte";
             Text[ chinese_simplified ] = "significance";
             Text[ greek ] = "";
-            Text[ korean ] = "증가";
+            Text[ korean ] = "significance";
             Text[ turkish ] = "Adm";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Importncia";
+            Text[ thai ] = "เลขนัยสำคัญ";
         };
         String 5 // Description of Parameter 2
         {
@@ -18824,6 +19424,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Deerin, katlarndan birine yuvarland say.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre al mltiple del qual s'arrodoneix el valor.";
+            Text[ thai ] = "ตัวเลขผลคูณที่ถูกปัดเศษ";
         };
         String 6 // Name of Parameter 3
         {
@@ -18852,6 +19453,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Mode";
             Text[ finnish ] = "Tila";
+            Text[ thai ] = "โหมด";
         };
         String 7 // Description of Parameter 3
         {
@@ -18875,11 +19477,12 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Als aangegeven en niet gelijk aan nul, dan wordt bij een negatief getal en stapgrootte naar boven afgerond..";
             Text[ chinese_simplified ] = "如果设定不等于零,在负数和负基数的情况下沿\n绝对值增大的方向舍入。";
             Text[ greek ] = "      ,             ? ";
-            Text[ korean ] = "설정되어 있고,  0이 아닐 경우 음수와 유효숫자의 경우  값에 따라 반올림됩니다.";
+            Text[ korean ] = "설정되어 있고, 0이 아닐 경우 음수와 유효숫자의 경우 값에 따라 반올림됩니다.";
             Text[ turkish ] = "Belirtildiinde ve sfra eit olmadnda, negatif saylar ve admlar iin meblaa gre yukar yuvarlama yaplr.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Si s'indica, i no s igual a zero, s'arrodoneix cap amunt segons la quantitat quan s un valor negatiu significatiu";
             Text[ finnish ] = "Jos arvo mritetn eik se ole nolla, negatiivinen luku pyristetn ylspin ensimmiseen merkittvn lukuun.";
+            Text[ thai ] = "ถ้าให้มาและไม่เท่ากับศูนย์ให้ปัดเศษขึ้นตามจำนวนลบและเลขนัยสำคัญ";
         };
     };
      // -=*# Resource for function UNTERGRENZE #*=-
@@ -18902,7 +19505,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Redondea un nmero al prximo mltiplo del argumento cifra_significativa, en direccin hacia cero." ;
             Text [ english_us ] = "Rounds number down to the nearest multiple of significance." ;
             Text[ chinese_simplified ] = "将一个数字去尾舍入成最接近的基数的倍数。";
-            Text[ russian ] = "       .";
+            Text[ russian ] = "     .";
             Text[ polish ] = "Podaje warto liczby zaokrglonej do podanej wielokrotnoci.";
             Text[ japanese ] = "数値を挟む基準値の倍数のうち、小さい方の値を返します。";
             Text[ chinese_traditional ] = "將一個數字舍入成最接近的基數的倍數。";
@@ -18914,6 +19517,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Sayy, admn bir alt katna yuvarlar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Arrodoneix un nombre al mltiple significatiu inferior ms prxim.";
+            Text[ thai ] = "ปัดเศษตัวเลขลงให้ใกล้ผลคูณของเลขนัยสำคัญที่สุด";
         };
         ExtraData =
         {
@@ -18949,6 +19553,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -18978,6 +19583,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Aa yuvarlanan say.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre que s'ha d'arrodonir a la baixa.";
+            Text[ thai ] = "ตัวเลขที่ปัดเศษลง";
         };
         String 4 // Name of Parameter 2
         {
@@ -19003,10 +19609,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Stapgrootte";
             Text[ chinese_simplified ] = "significance";
             Text[ greek ] = "";
-            Text[ korean ] = "단계 크기";
+            Text[ korean ] = "Significance";
             Text[ turkish ] = "Adm";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Importncia";
+            Text[ thai ] = "เลขนัยสำคัญ";
         };
         String 5 // Description of Parameter 2
         {
@@ -19016,7 +19623,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Multiplo per il quale si desidera arrotondare." ;
             Text [ portuguese_brazilian ] = "Die Zahl, auf deren Vielfaches der Wert abgerundet wird." ;
             Text [ portuguese ] = " o mltiplo do valor que deseja arredondar." ;
-            Text [ finnish ] = "Luku, jonka monikertaan arvo pyristetn (alaspin)." ;
+            Text [ finnish ] = "Luku, jonka monikertaan arvo pyristetn alaspin." ;
             Text [ danish ] = "Det multiplum der skal rundes ned til." ;
             Text [ french ] = "Le multiple auquel vous souhaitez arrondir." ;
             Text [ swedish ] = "Det tal till vars multipel vrdet avrundas nert." ;
@@ -19036,6 +19643,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Deerin, bir alt katna yuvarland say.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre al mltiple del qual s'arrodoneix el valor a la baixa.";
+            Text[ thai ] = "ตัวเลขของผลคูณที่ปัดเศษลง";
         };
         String 6 // Name of Parameter 3
         {
@@ -19064,6 +19672,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Mode";
             Text[ finnish ] = "Tila";
+            Text[ thai ] = "โหมด";
         };
         String 7 // Description of Parameter 3
         {
@@ -19077,14 +19686,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Se il modo definito  diverso da zero, in caso di numero e peso negativi, l'arrotondamento avviene ad un valore assoluto." ;
             Text [ spanish ] = "Si el modo no est definido como cero, un nmero negativo con un significado negativo se redondea hasta conseguir un valor absoluto." ;
             Text [ french ] = "Si le mode dfini est diffrent de zero, un nombre ngatif avec une prcision ngative sera arrondi  un nombre absolu." ;
-            Text [ dutch ] = "Indfien aangegeven en niet gelijk aan nul dan wordt bij een negatief getal en bij negatieve stapgrootte afgerond." ;
+            Text [ dutch ] = "Indien aangegeven en niet gelijk aan nul, wordt bij een negatief getal en bij negatieve stapgrootte afgerond." ;
             Text[ chinese_simplified ] = "如果设定不等于零,在负数和负基数的情况下沿\n绝对值减小的方向去尾舍入。";
             Text[ russian ] = "      ,             .";
             Text[ polish ] = "Jeli tryb nie jest zerem, zaokrgla si w przypadku liczby ujemnej i ujemnej wanocido wartoci absolutnej.";
             Text[ japanese ] = "対象が負の数の時、ここに0以外の数値を指定すると、数値を挟む基準値の倍数のうち、大きい方の値を返します。";
             Text[ chinese_traditional ] = "如果設定不等於零﹐在負數和負基數的情況下沿絕對值減小的方向去尾舍入。";
             Text[ arabic ] = "       ѡ       ɡ     .";
-            Text[ dutch ] = "Indfien aangegeven en niet gelijk aan nul dan wordt bij een negatief getal en bij negatieve stapgrootte afgerond.";
+            Text[ dutch ] = "Indien aangegeven en niet gelijk aan nul, wordt bij een negatief getal en bij negatieve stapgrootte afgerond.";
             Text[ chinese_simplified ] = "如果设定不等于零,在负数和负基数的情况下沿\n绝对值减小的方向去尾舍入。";
             Text[ greek ] = "      ,               ";
             Text[ korean ] = "정해져 있고 0이 아니면, 음수와 단계 크기의 경우 값에 따라 반버림됩니다.";
@@ -19092,6 +19701,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Si s'indica, i no s igual a zero, s'arrodoneix cap avall segons la quantitat quan s un valor negatiu significatiu";
             Text[ finnish ] = "Jos arvo mritetn eik se ole nolla, negatiivinen luku pyristetn alaspin ensimmiseen merkittvn lukuun.";
+            Text[ thai ] = "ถ้าให้มาและไม่เท่ากับศูนย์ให้ปัดเศษลงตามจำนวนลบและเลขนัยสำคัญ";
         };
     };
      // -=*# Resource for function GGT #*=-
@@ -19111,10 +19721,10 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ french ] = "Renvoie le plus grand commun diviseur." ;
             Text [ swedish ] = "Strsta gemensamma divisor." ;
             Text [ dutch ] = "Grootste gemene deler." ;
-            Text [ spanish ] = "Mximo comn divisor." ;
+            Text [ spanish ] = "Mximo comn divisor" ;
             Text [ english_us ] = "Greatest Common Divisor" ;
             Text[ chinese_simplified ] = "最大公约数。";
-            Text[ russian ] = "  .";
+            Text[ russian ] = "       .";
             Text[ polish ] = "Najwikszy wsplny dzielnik.";
             Text[ japanese ] = "最大公約数を返します。";
             Text[ chinese_traditional ] = "最大公約數。";
@@ -19126,6 +19736,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "En byk ortak blen.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Mxim com divisor";
+            Text[ thai ] = "ตัวหารร่วมมาก";
         };
         ExtraData =
         {
@@ -19141,26 +19752,27 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Numero intero " ;
             Text [ portuguese_brazilian ] = "Ganzzahl " ;
             Text [ portuguese ] = "Nmero inteiro " ;
-            Text [ finnish ] = "Muuttuja " ;
+            Text [ finnish ] = "Kokonaiskuku " ;
             Text [ danish ] = "Heltal " ;
             Text [ french ] = "Nombre entier  " ;
             Text [ swedish ] = "heltal  " ;
-            Text [ dutch ] = "Integer  " ;
+            Text [ dutch ] = "Integer" ;
             Text [ spanish ] = "Nmero  " ;
             Text [ english_us ] = "Integer " ;
             Text[ chinese_simplified ] = "Integer ";
-            Text[ russian ] = "   ";
+            Text[ russian ] = "";
             Text[ polish ] = "Liczba cakowita  ";
             Text[ japanese ] = "整数 ";
             Text[ chinese_traditional ] = "Integer ";
             Text[ arabic ] = "Integer ";
-            Text[ dutch ] = "Integer  ";
+            Text[ dutch ] = "Integer";
             Text[ chinese_simplified ] = "Integer ";
             Text[ greek ] = " ";
             Text[ korean ] = "정값";
             Text[ turkish ] = "Tamsay ";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Enter ";
+            Text[ thai ] = "จำนวนเต็ม ";
         };
         String 3 // Description of Parameter 1
         {
@@ -19171,7 +19783,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Valori interi per i quali calcolare il massimo comune divisore" ;
             Text [ portuguese_brazilian ] = "Ganzzahl 1;Ganzzahl 2,... sind ganze Zahlen, deren gr?ter gemeinsamer Teiler berechnet wird." ;
             Text [ portuguese ] = "1; 2,... so nmeros inteiros para os quais ser calculado o mximo divisor comum." ;
-            Text [ finnish ] = "Muuttuja 1, muuttuja 2 ja niin edelleen ovat muuttujia, joiden suurin yhteinen jakaja lasketaan." ;
+            Text [ finnish ] = "Kokonaisluku 1, kokonaisluku 2 ja niin edelleen ovat kokonaislukuja, joiden suurin yhteinen jakaja lasketaan." ;
             Text [ danish ] = "Heltal 1; heltal 2,... er hele tal, for hvilke den strste fllesnvner skal beregnes." ;
             Text [ french ] = "Nombre entier 1, nombre entier 2, ... sont les nombres entiers dont le plus grand commun diviseur doit tre calcul." ;
             Text [ swedish ] = "heltal 1; heltal 2,... r heltal vars strsta gemensamma nmnare berknas." ;
@@ -19191,6 +19803,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Tamsay 1;Tamsay  2,... en byk ortak blenleri hesaplanan tamsaylardr.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Enter 1; enter 2,... sn enters el mxim com divisor dels quals s'ha de calcular";
+            Text[ thai ] = "จำนวนเต็ม 1; จำนวนเต็ม 2,... เป็นจำนวนเต็มสำหรับคำนวณตัวหารร่วมมาก";
         };
     };
      // -=*# Resource for function KGV #*=-
@@ -19212,7 +19825,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Mnimo comn mltiplo." ;
             Text [ english_us ] = "Lowest common multiple" ;
             Text[ chinese_simplified ] = "最小公倍数。";
-            Text[ russian ] = "  .";
+            Text[ russian ] = "   .";
             Text[ polish ] = "Najmniejsza wsplna wielokrotno.";
             Text[ japanese ] = "最小公倍数を返します。";
             Text[ chinese_traditional ] = "最小公倍數。";
@@ -19220,10 +19833,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "Kleinste gemene veelvoud.";
             Text[ chinese_simplified ] = "最小公倍数。";
             Text[ greek ] = "  ";
-            Text[ korean ] = "최소 공 배수";
+            Text[ korean ] = "최소 공배수";
             Text[ turkish ] = "En kk ortak kat.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Mnim com mltiple";
+            Text[ thai ] = "ตัวคูณร่วมน้อย";
         };
         ExtraData =
         {
@@ -19239,26 +19853,27 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Numero intero " ;
             Text [ portuguese_brazilian ] = "Ganzzahl " ;
             Text [ portuguese ] = "Nmero inteiro " ;
-            Text [ finnish ] = "Muuttuja " ;
+            Text [ finnish ] = "Kokonaisluku " ;
             Text [ danish ] = "Heltal " ;
             Text [ french ] = "Nombre entier " ;
             Text [ swedish ] = "Heltal  " ;
-            Text [ dutch ] = "Integer  " ;
+            Text [ dutch ] = "Integer" ;
             Text [ spanish ] = "Nmero  " ;
             Text [ english_us ] = "Integer " ;
             Text[ chinese_simplified ] = "Integer ";
-            Text[ russian ] = "   ";
+            Text[ russian ] = "";
             Text[ polish ] = "Liczba cakowita  ";
             Text[ japanese ] = "整数 ";
             Text[ chinese_traditional ] = "Integer ";
             Text[ arabic ] = "Integer ";
-            Text[ dutch ] = "Integer  ";
+            Text[ dutch ] = "Integer";
             Text[ chinese_simplified ] = "Integer ";
             Text[ greek ] = " ";
             Text[ korean ] = "정값";
             Text[ turkish ] = "Tamsay ";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Enter ";
+            Text[ thai ] = "จำนวนเต็ม ";
         };
         String 3 // Description of Parameter 1
         {
@@ -19268,7 +19883,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Numeri interi per i quali calcolare il minimo comune multiplo" ;
             Text [ portuguese_brazilian ] = "Ganzzahl 1;Ganzzahl 2,... sind ganze Zahlen, deren kleinstes gemeinsames Vielfaches berechnet wird." ;
             Text [ portuguese ] = "1; 2,... so nmeros inteiros para os quais ser calculado o mnimo mltiplo comum." ;
-            Text [ finnish ] = "Muuttuja 1, muuttuja 2 ja niin edelleen ovat muuttujia, joiden pienin yhteinen monikerta lasketaan." ;
+            Text [ finnish ] = "Kokonaisluku 1, Kokonaisluku 2 ja niin edelleen ovat kokonaislukuja, joiden pienin yhteinen monikerta lasketaan." ;
             Text [ danish ] = "Heltal 1; heltal 2,... er hele tal, for hvilke det mindste flles multiplum skal beregnes." ;
             Text [ french ] = "Nombre entier 1, nombre entier 2, ... sont les nombres entiers dont le plus petit commun diviseur doit tre calcul" ;
             Text [ swedish ] = "heltal 1;heltal 2,... r heltal vars minsta gemensamma multipel berknas." ;
@@ -19288,6 +19903,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Tamsay 1;Tamsay  2,... en kk ortak katlar hesaplanan tamsaylardr.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Enter 1; enter 2,... sn enters el m?nim com mltiple dels quals s'ha de calcular";
+            Text[ thai ] = "จำนวนเต็ม 1; จำนวนเต็ม 2,... เป็นจำนวนเต็มของตัวคูณร่วมน้อยที่ใช้ในการคำนวณ";
         };
     };
      // -=*# Resource for function MTRANS #*=-
@@ -19301,7 +19917,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Trasposizione di matrice. Scambia righe e colonne della matrice." ;
             Text [ portuguese_brazilian ] = "Matrixtransponierung. Vertauscht Zeilen und Spalten einer Matrix." ;
             Text [ portuguese ] = "Devolve a matriz inversa, transpondo as linhas e colunas da matriz especiificada." ;
-            Text [ finnish ] = "Matriisin transpositio. Vaihtaa matriisien rivien ja sarakkeiden paikat." ;
+            Text [ finnish ] = "Taulukon transpositio. Vaihtaa taulukoiden rivien ja sarakkeiden paikat." ;
             Text [ danish ] = "Matrixtransponering. Bytter om p rkker og kolonner i en matrix." ;
             Text [ french ] = "Donne la transpose d'une matrice en transposant lignes et colonnes." ;
             Text [ swedish ] = "Matristransponering. Byter rader och kolumner i en matris." ;
@@ -19321,6 +19937,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Matris transpozisyonu. Bir matrisin satr ve stunlarn birbirleri ile deitirir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Transposici de matrius. Intercanvia les files i les columnes d'una matriu.";
+            Text[ thai ] = "การทรานสโพสแถวลำดับ เปลี่ยนแถวและคอลัมน์ของแถวลำดับ";
         };
         ExtraData =
         {
@@ -19336,15 +19953,15 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Matrice" ;
             Text [ portuguese_brazilian ] = "Matrix" ;
             Text [ portuguese ] = "Matriz" ;
-            Text [ finnish ] = "matriisi" ;
+            Text [ finnish ] = "taulukko" ;
             Text [ danish ] = "Matrix" ;
             Text [ french ] = "Matrice" ;
             Text [ swedish ] = "matris" ;
             Text [ dutch ] = "Matrix" ;
-            Text [ spanish ] = "matriz" ;
+            Text [ spanish ] = "Matriz" ;
             Text [ english_us ] = "array" ;
             Text[ chinese_simplified ] = "Array";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "Macierz";
             Text[ japanese ] = "行列";
             Text[ chinese_traditional ] = "Array";
@@ -19356,6 +19973,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Matris";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "matriu";
+            Text[ thai ] = "แถวลำดับ";
         };
         String 3 // Description of Parameter 1
         {
@@ -19365,7 +19983,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "La matrice  le cui righe e colonne vanno scambiate." ;
             Text [ portuguese_brazilian ] = "Die Matrix, deren Zeilen und Spalten vertauscht werden." ;
             Text [ portuguese ] = " a matriz cujas linhas e colunas deseja transpor." ;
-            Text [ finnish ] = "Matriisi, jonka rivit ja sarakkeet on transponoitu." ;
+            Text [ finnish ] = "Taulukko, jonka rivit ja sarakkeet on transponoitu." ;
             Text [ danish ] = "Den matrix som skal transponeres." ;
             Text [ french ] = "La matrice dont les lignes et les colonnes vont tre transposes." ;
             Text [ swedish ] = "Matrisen vars rader och kolumner byter plats." ;
@@ -19373,7 +19991,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "es la matriz cuyas filas y columnas desea transponer." ;
             Text [ english_us ] = "The array in which the rows and columns have been transposed." ;
             Text[ chinese_simplified ] = "其列和行需要进行转置的矩阵。";
-            Text[ russian ] = ",     .";
+            Text[ russian ] = ",     .";
             Text[ polish ] = "Macierz, ktrej wiersze i kolumny zostay zamienione.";
             Text[ japanese ] = "行と列を入れ替える行列。";
             Text[ chinese_traditional ] = "其列欄需要進行轉置的矩陣。";
@@ -19385,6 +20003,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Satr ve stunlar birbirleri ile deitirilen matris.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Matriu les files i columnes de la qual s'han transposat.";
+            Text[ thai ] = "แถวลำดับในแถวและคอลัมน์ที่ถูกทรานสโพส";
         };
     };
      // -=*# Resource for function MMULT #*=-
@@ -19398,7 +20017,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Restituisce il prodotto di due matrici." ;
             Text [ portuguese_brazilian ] = "Matrixmultiplikation. Bildet das Produkt zweier Matrizen." ;
             Text [ portuguese ] = "Devolve o produto matricial de duas matrizes." ;
-            Text [ finnish ] = "Matriisien tulo. Kertoo kahden matriisin arvot." ;
+            Text [ finnish ] = "Taulukoiden tulo. Kertoo kahden taulukon arvot." ;
             Text [ danish ] = "Beregner produktet af to matrixer." ;
             Text [ french ] = "Calcule le produit de deux matrices." ;
             Text [ swedish ] = "Matrismultiplikation. Bildar produkten av tv matriser." ;
@@ -19406,7 +20025,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Devuelve la matriz producto de dos matrices." ;
             Text [ english_us ] = "Array multiplication. Returns the product of two arrays." ;
             Text[ chinese_simplified ] = "矩阵乘积。计算两个矩阵的乘积。";
-            Text[ russian ] = "  .";
+            Text[ russian ] = "   .";
             Text[ polish ] = "Mnoenie macierzy. Jest iloczynem dwch tablic.";
             Text[ japanese ] = "2つの行列の積を返します。";
             Text[ chinese_traditional ] = "矩陣乘積。計算兩個矩陣的乘積。";
@@ -19418,6 +20037,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Matris arpm. ki matrisin arpm sonucunu verir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Multiplicaci de matrius. Torna el producte de dues matrius.";
+            Text[ thai ] = "การคูณแถวลำดับ ส่งกลับผลลัพธ์ของสองแถวลำดับ";
         };
         ExtraData =
         {
@@ -19433,15 +20053,15 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Matrice 1" ;
             Text [ portuguese_brazilian ] = "Matrix" ;
             Text [ portuguese ] = "Matriz 1" ;
-            Text [ finnish ] = "matriisi" ;
+            Text [ finnish ] = "taulukko" ;
             Text [ danish ] = "Matrix" ;
             Text [ french ] = "Matrice" ;
             Text [ swedish ] = "matris" ;
             Text [ dutch ] = "Matrix" ;
-            Text [ spanish ] = "matriz" ;
+            Text [ spanish ] = "Matriz" ;
             Text [ english_us ] = "array" ;
             Text[ chinese_simplified ] = "Array";
-            Text[ russian ] = " 1";
+            Text[ russian ] = "";
             Text[ polish ] = "Macierz";
             Text[ japanese ] = "行列 1";
             Text[ chinese_traditional ] = "Array";
@@ -19453,6 +20073,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Matris";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "matriu";
+            Text[ thai ] = "แถวลำดับ";
         };
         String 3 // Description of Parameter 1
         {
@@ -19463,7 +20084,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "La prima matrice che si desidera moltiplicare." ;
             Text [ portuguese_brazilian ] = "Die erste Matrix f? das Matrixprodukt." ;
             Text [ portuguese ] = " a primeira matriz para obter o produto matricial." ;
-            Text [ finnish ] = "Matriisitulon ensimminen matriisi." ;
+            Text [ finnish ] = "Taulukkotulon ensimminen taulukko" ;
             Text [ danish ] = "Den frste matrix som skal indg i produktet." ;
             Text [ french ] = "Matrice1 pour le produit des deux matrices." ;
             Text [ swedish ] = "Den frsta matrisen fr matrisprodukten." ;
@@ -19483,6 +20104,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Matris arpm iin birinci matris.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Primera matriu per al producte de la matriu.";
+            Text[ thai ] = "แถวลำดับแรกสำหรับผลลัพธ์ของแถวลำดับ";
         };
         String 4 // Name of Parameter 2
         {
@@ -19492,15 +20114,15 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Matrice 2" ;
             Text [ portuguese_brazilian ] = "Matrix" ;
             Text [ portuguese ] = "Matriz 2" ;
-            Text [ finnish ] = "matriisi" ;
+            Text [ finnish ] = "taulukko" ;
             Text [ danish ] = "Matrix" ;
             Text [ french ] = "Matrice" ;
             Text [ swedish ] = "matris" ;
             Text [ dutch ] = "Matrix" ;
-            Text [ spanish ] = "matriz" ;
+            Text [ spanish ] = "Matriz" ;
             Text [ english_us ] = "array" ;
             Text[ chinese_simplified ] = "Array";
-            Text[ russian ] = " 2";
+            Text[ russian ] = "";
             Text[ polish ] = "Macierz";
             Text[ japanese ] = "行列 2";
             Text[ chinese_traditional ] = "Array";
@@ -19512,6 +20134,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Matris";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "matriu";
+            Text[ thai ] = "แถวลำดับ";
         };
         String 5 // Description of Parameter 2
         {
@@ -19521,11 +20144,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "La seconda matrice con lo stesso numero di righe pari al numero di colonne della prima matrice." ;
             Text [ portuguese_brazilian ] = "Die zweite Matrix mit der gleichen Anzahl von Zeilen, wie die erste Matrix Spalten hat." ;
             Text [ portuguese ] = " a segunda matriz com um nmero de linhas igual ao nmero de colunas da primeira matriz." ;
-            Text [ finnish ] = "Toinen matriisi, jossa on yht monta rivi kuin ensimmisess matriisissa on sarakkeita." ;
+            Text [ finnish ] = "Toinen taulukko, jossa on yht monta rivi kuin ensimmisess taulukossa on sarakkeita." ;
             Text [ danish ] = "Den anden matrix med samme antal rkker som den frste matrix har kolonner." ;
             Text [ french ] = "Matrice2 pour le produit des deux matrices. Elle comporte autant de lignes que matrice1 a de colonnes." ;
             Text [ swedish ] = "Den andra matrisen med samma antal rader som den frsta matrisen har kolumner." ;
-            Text [ dutch ] = "De tweede matrix met hetzelde aantal rijen als de eerste matrix kolommen heeft." ;
+            Text [ dutch ] = "De tweede matrix met hetzelfde aantal rijen als de eerste matrix kolommen heeft." ;
             Text [ spanish ] = "Es la segunda matriz con el mismo nmero de filas y columnas que la primera." ;
             Text [ english_us ] = "The second array having the same number of rows as the first array has columns." ;
             Text[ chinese_simplified ] = "第二个矩阵的行数和第一个矩阵和列数相等。";
@@ -19534,13 +20157,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ japanese ] = "行列乗算する2つめの行列。行列1の列数=行列2の行数。";
             Text[ chinese_traditional ] = "第二個矩陣的列數和第一個矩陣和欄數相等。";
             Text[ arabic ] = "            .";
-            Text[ dutch ] = "De tweede matrix met hetzelde aantal rijen als de eerste matrix kolommen heeft.";
+            Text[ dutch ] = "De tweede matrix met hetzelfde aantal rijen als de eerste matrix kolommen heeft.";
             Text[ chinese_simplified ] = "第二个矩阵的行数和第一个矩阵和列数相等。";
             Text[ greek ] = "             .";
             Text[ korean ] = "첫번째 행렬의 열 수와 동일한 행 수를 가진 두번째 행렬입니다.";
             Text[ turkish ] = "Birinci matrisin stun saysna eit satr says olan ikinci matris.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "La segona matriu que t tantes files com columnes t la primera matriu.";
+            Text[ thai ] = "แถวลำดับที่สองมีจำนวนแถวเหมือนกับแถวลำดับแรกมีคอลัมน์";
         };
     };
      // -=*# Resource for function MDET #*=-
@@ -19554,7 +20178,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Restituisce il determinante di una matrice." ;
             Text [ portuguese_brazilian ] = "Bestimmt die Matrixdeterminante." ;
             Text [ portuguese ] = "Devolve o determinante de uma matriz." ;
-            Text [ finnish ] = "Palauttaa matriisin determinantin." ;
+            Text [ finnish ] = "Palauttaa taulukon determinantin." ;
             Text [ danish ] = "Beregner determinanten for en matrix." ;
             Text [ french ] = "Renvoie le dterminant d'une matrice." ;
             Text [ swedish ] = "Bestmmer matrisdeterminanten." ;
@@ -19562,7 +20186,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Devuelve la matriz determinante." ;
             Text [ english_us ] = "Returns the array determinant." ;
             Text[ chinese_simplified ] = "确定矩阵行列式的值。";
-            Text[ russian ] = "  .";
+            Text[ russian ] = "  .";
             Text[ polish ] = "Okrela wyznacznik macierzy.";
             Text[ japanese ] = "行列式の解を返します。";
             Text[ chinese_traditional ] = "確定一個數組的矩陣行列式的值。";
@@ -19574,6 +20198,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Matris determinantn belirler.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna el determinant de la matriu.";
+            Text[ thai ] = "ส่งกลับค่าดีเทอร์มิแน้นท์ของแถวลำดับ";
         };
         ExtraData =
         {
@@ -19589,7 +20214,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Matrice" ;
             Text [ portuguese_brazilian ] = "Matrix" ;
             Text [ portuguese ] = "Matriz" ;
-            Text [ finnish ] = "matriisi" ;
+            Text [ finnish ] = "taulukko" ;
             Text [ danish ] = "Matrix" ;
             Text [ french ] = "Matrice" ;
             Text [ swedish ] = "matris" ;
@@ -19609,6 +20234,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Matris";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "matriu";
+            Text[ thai ] = "แถวลำดับ";
         };
         String 3 // Description of Parameter 1
         {
@@ -19618,7 +20244,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Matrice della quale si vuole calcolare il determinante." ;
             Text [ portuguese_brazilian ] = "Die Matrix, deren Determinante bestimmt wird." ;
             Text [ portuguese ] = " uma matriz numrica com um nmero igual de linhas e colunas." ;
-            Text [ finnish ] = "Matriisi, jonka determinantti lasketaan." ;
+            Text [ finnish ] = "Taulukko, jonka determinantti lasketaan." ;
             Text [ danish ] = "Den matrix determinanten skal bestemmes for." ;
             Text [ french ] = "La matrice dont vous souhaitez calculer le dterminant." ;
             Text [ swedish ] = "Matris vars determinant bestms." ;
@@ -19638,6 +20264,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Determinant belirlenen matris.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Matriu el determinant de la qual s'ha de determinar.";
+            Text[ thai ] = "แถวลำดับสำหรับกำหนดค่าดีเทอร์มิแน้นท์";
         };
     };
      // -=*# Resource for function MINV #*=-
@@ -19651,7 +20278,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Restituisce l'inversa di una matrice." ;
             Text [ portuguese_brazilian ] = "Bestimmt die Inverse einer Matrix." ;
             Text [ portuguese ] = "Devolve a matriz inversa da matriz especificada." ;
-            Text [ finnish ] = "Palauttaa matriisin knteisarvon." ;
+            Text [ finnish ] = "Palauttaa taulukon knteisarvon." ;
             Text [ danish ] = "Beregner den inverse matrix." ;
             Text [ french ] = "Donne l'inverse d'une matrice." ;
             Text [ swedish ] = "Bestmmer inversen fr en matris." ;
@@ -19659,7 +20286,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Devuelve la inversa de una matriz." ;
             Text [ english_us ] = "Returns the inverse of an array." ;
             Text[ chinese_simplified ] = "求一个矩阵的逆矩阵。";
-            Text[ russian ] = "    .";
+            Text[ russian ] = "     .";
             Text[ polish ] = "Wyznacza odwrotno macierzy.";
             Text[ japanese ] = "行列の逆行列を返します。";
             Text[ chinese_traditional ] = "求一個矩陣的逆矩陣。";
@@ -19671,6 +20298,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Matrisin tersini verir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna la inversa d'una matriu.";
+            Text[ thai ] = "ส่งกลับอินเวิร์สของแถวลำดับ";
         };
         ExtraData =
         {
@@ -19686,7 +20314,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Matrice" ;
             Text [ portuguese_brazilian ] = "Matrix" ;
             Text [ portuguese ] = "Matriz" ;
-            Text [ finnish ] = "matriisi" ;
+            Text [ finnish ] = "taulukko" ;
             Text [ danish ] = "Matrix" ;
             Text [ french ] = "Matrice" ;
             Text [ swedish ] = "matris" ;
@@ -19706,6 +20334,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Matris";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "matriu";
+            Text[ thai ] = "แถวลำดับ";
         };
         String 3 // Description of Parameter 1
         {
@@ -19715,7 +20344,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Matrice da invertire." ;
             Text [ portuguese_brazilian ] = "Die Matrix, die invertiert wird." ;
             Text [ portuguese ] = " a matriz que ser invertida." ;
-            Text [ finnish ] = "Knnettv matriisi." ;
+            Text [ finnish ] = "Knnettv taulukko" ;
             Text [ danish ] = "Den matrix som skal inverteres." ;
             Text [ french ] = "La matrice  inverser." ;
             Text [ swedish ] = "Matrisen som inverteras." ;
@@ -19735,6 +20364,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Tersine evirilen matris.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Matriu que s'ha d'invertir.";
+            Text[ thai ] = "สลับแถวลำดับ";
         };
     };
      // -=*# Resource for function EINHEITSMATRIX #*=-
@@ -19749,7 +20379,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Determina la matrice quadrata unitaria di una certa dimensione." ;
             Text [ portuguese_brazilian ] = "Bestimmt die quadratische Einheitsmatrix einer bestimmten Gr?e." ;
             Text [ portuguese ] = "Devolve a matriz quadrada unitria de uma dada dimenso." ;
-            Text [ finnish ] = "Palauttaa tietynkokoisen yhtenisen nelimatriisin." ;
+            Text [ finnish ] = "Palauttaa tietynkokoisen yhtenisen nelitaulukon." ;
             Text [ danish ] = "Returnerer den kvadratiske enhedsmatrix for en bestemt strrelse." ;
             Text [ french ] = "Renvoie la matrice unitaire carre pour une dimension spcifie." ;
             Text [ swedish ] = "Bestmmer den kvadratiska enhetsmatrisen fr en bestmd storlek." ;
@@ -19757,7 +20387,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Devuelve la matriz unitaria (con el mismo nmero de filas y columnas) de un tamao determinado." ;
             Text [ english_us ] = "Returns the unitary square array of a certain size." ;
             Text[ chinese_simplified ] = "确定一个给定行列数的正方单元矩阵。";
-            Text[ russian ] = "     .";
+            Text[ russian ] = "     .";
             Text[ polish ] = "Okrela kwadratow macierz unitarn pewnego rozmiaru.";
             Text[ japanese ] = "指定した次元の単位行列を返します。";
             Text[ chinese_traditional ] = "確定一個輸入欄列數的正方單元矩陣。";
@@ -19769,6 +20399,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Belirli bir bykln niter kare matrisini verir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna la matriu quadrada unitria d'una certa mida.";
+            Text[ thai ] = "ส่งกลับขนาดที่แน่นอนของแถวลำดับจตุรัสเดียว";
         };
         ExtraData =
         {
@@ -19804,6 +20435,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Boyut";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Dimensions";
+            Text[ thai ] = "มิติ";
         };
         String 3 // Description of Parameter 1
         {
@@ -19814,12 +20446,12 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Le dimensioni della matrice unitaria" ;
             Text [ portuguese_brazilian ] = "Die Gr?e der Einheitsmatrix." ;
             Text [ portuguese ] = " o tamanho da matriz unitria." ;
-            Text [ finnish ] = "Yhtenisen matriisin koko." ;
+            Text [ finnish ] = "Yhtenisen taulukon koko" ;
             Text [ danish ] = "Enhedsmatrixens strrelse." ;
             Text [ french ] = "La dimension de la matrice unitaire." ;
             Text [ swedish ] = "Storleken p enhetsmatrisen." ;
             Text [ dutch ] = "De grootte van de eenheidsmatrix." ;
-            Text [ spanish ] = "Es el tamao de la matriz unitaria." ;
+            Text [ spanish ] = "Tamao de la matriz unitaria." ;
             Text [ english_us ] = "The size of the unitary array." ;
             Text[ chinese_simplified ] = "指定单元矩阵的大小。";
             Text[ russian ] = "  .";
@@ -19834,6 +20466,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "niter matris bykl.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Mida de la matriu unitria.";
+            Text[ thai ] = "ขนาดของแถวลำดับเดียว";
         };
     };
      // -=*# Resource for function SUMMENPRODUKT #*=-
@@ -19847,7 +20480,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Restitusce la somma dei prodotti degli argomenti delle matrici (prodotto scalare)." ;
             Text [ portuguese_brazilian ] = "(Skalarprodukt) Summiert die Produkte der Argumente von Matrizen." ;
             Text [ portuguese ] = "Devolve a soma dos produtos dos componentes das matrizes correspondentes." ;
-            Text [ finnish ] = "(Sistulot) Palauttaa matriisiargumenttien tulosten summan." ;
+            Text [ finnish ] = "(Sistulot) Palauttaa taulukkoargumenttien tulosten summan." ;
             Text [ danish ] = "(Skalarprodukt) Beregner summeren af produkter af argumenter i matrixer." ;
             Text [ french ] = "Renvoie la somme des produits des lments correspondants des matrices." ;
             Text [ swedish ] = "(Skalrprodukt) Summerar produkterna av argument frn matriser." ;
@@ -19855,7 +20488,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Devuelve la suma de los productos de los argumentos de las matrices suministradas." ;
             Text [ english_us ] = "(Inner products) Returns the sum of the products of array arguments." ;
             Text[ chinese_simplified ] = "将数组间对应的元素相乘,然后将乘积相加。";
-            Text[ russian ] = "    .";
+            Text[ russian ] = "        .";
             Text[ polish ] = "Oblicza sum iloczynw odpowiadajcych sobie skadnikw tablic.";
             Text[ japanese ] = "引数として指定した配列の対応する要素間の積をまず計算し、さらにその和を返します。";
             Text[ chinese_traditional ] = "將數組間對應的元素相乘﹐然後將乘積相加。";
@@ -19867,6 +20500,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Matris deikenlerinin arpmlarn toplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "(Productes interiors) Torna la suma dels productes dels arguments de la matriu.";
+            Text[ thai ] = "(ผลลัพธ์ภายใน) ส่งกลับผลรวมของผลลัพธ์ของอาร์กิวเม้นท์ของแถวลำดับ";
         };
         ExtraData =
         {
@@ -19882,11 +20516,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Matrice " ;
             Text [ portuguese_brazilian ] = "Matrix " ;
             Text [ portuguese ] = "Matriz " ;
-            Text [ finnish ] = "Matriisi" ;
+            Text [ finnish ] = "Taulukko " ;
             Text [ danish ] = "Matrix " ;
             Text [ french ] = "Matrice  " ;
             Text [ swedish ] = "matris  " ;
-            Text [ dutch ] = "Matrix  " ;
+            Text [ dutch ] = "Matrix" ;
             Text [ spanish ] = "matriz " ;
             Text [ english_us ] = "Array " ;
             Text[ chinese_simplified ] = "Array ";
@@ -19895,13 +20529,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ japanese ] = "行列";
             Text[ chinese_traditional ] = "Array ";
             Text[ arabic ] = "Array ";
-            Text[ dutch ] = "Matrix  ";
+            Text[ dutch ] = "Matrix";
             Text[ chinese_simplified ] = "Array ";
             Text[ greek ] = " ";
             Text[ korean ] = "행렬 ";
             Text[ turkish ] = "Matris ";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Matriu ";
+            Text[ thai ] = "แถวลำดับ ";
         };
         String 3 // Description of Parameter 1
         {
@@ -19911,7 +20546,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Sono da 2 a 30 matrici di cui si desidera moltiplicare gli elementi." ;
             Text [ portuguese_brazilian ] = "Matrix 1; Matrix 2,... sind bis zu 30 Matrizen, deren Argumente multipliziert werden." ;
             Text [ portuguese ] = "Matriz1, matriz2,...  so matrizes at 30, cujos componentes se desejam multiplicar e depois somar." ;
-            Text [ finnish ] = "Matriisi 1, matriisi 2 ja niin edelleen ovat 1 - 30 matriisia, joiden argumentit kerrotaan." ;
+            Text [ finnish ] = "Taulukko 1, taulukko 2 ja niin edelleen ovat 1 - 30 taulukkoa, joiden argumentit kerrotaan." ;
             Text [ danish ] = "Matrix 1; matrix 2,... er op til 30 matrixer, hvis argumenter skal ganges." ;
             Text [ french ] = "Matrice 1, matrice 2, ... sont jusqu' 30 matrices dont vous souhaitez multiplier les lments." ;
             Text [ swedish ] = "matris 1; matris 2;... r upp till 30 matriser vars argument multipliceras." ;
@@ -19931,6 +20566,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Matris 1; matris 2,... Deikenleri arplan ve saylar 30'u bulan matrislerdir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Matriu 1, matriu 2,... sn fins a 30 matrius els arguments de les quals s'han de multiplicar.";
+            Text[ thai ] = "แถวลำดับ 1, แถวลำดับ 2, ... อยู่ในแถวลำดับมากถึง 30  ของอาร์กิวเม้นท์ที่ถูกคูณ";
         };
     };
      // -=*# Resource for function SUMMEX2MY2 #*=-
@@ -19944,7 +20580,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Restituisce la somma delle differenze dei quadrati di due matrici." ;
             Text [ portuguese_brazilian ] = "Summiert die Differenzen der Quadrate zweier Matrizen." ;
             Text [ portuguese ] = "Soma as diferenas dos quadrados de duas matrizes." ;
-            Text [ finnish ] = "Palauttaa kahden matriisin neliiden erotuksen." ;
+            Text [ finnish ] = "Palauttaa kahden taulukon neliiden erotuksen." ;
             Text [ danish ] = "Beregner summen af differenser i kvadrater mellem tilsvarende vrdier i to matrixer." ;
             Text [ french ] = "Renvoie la somme de la diffrence des carrs des valeurs correspondantes de deux matrices" ;
             Text [ swedish ] = "Summerar kvadraternas differenser fr tv matriser." ;
@@ -19952,7 +20588,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Devuelve la sumatoria de la diferencia de cuadrados de dos matrices." ;
             Text [ english_us ] = "Returns the sum of the difference of squares of two arrays." ;
             Text[ chinese_simplified ] = "两个数组中对应数值的平方差之和。";
-            Text[ russian ] = "        .";
+            Text[ russian ] = "       .";
             Text[ polish ] = "Sumuje rnic kwadratw dwch macierzy.";
             Text[ japanese ] = "2つの行列で対応する要素の平方差を合計します。";
             Text[ chinese_traditional ] = "兩個數組中對應數值的平方差之和。";
@@ -19964,6 +20600,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "ki matrisin karelerinin farklarn toplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna la suma de la diferncia dels quadrats de dues matrius.";
+            Text[ thai ] = "ส่งกลับผลรวมของผลต่างของกำลังสองของสองแถวลำดับ";
         };
         ExtraData =
         {
@@ -19979,7 +20616,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Matrice X" ;
             Text [ portuguese_brazilian ] = "Matrix X" ;
             Text [ portuguese ] = "Matriz_X" ;
-            Text [ finnish ] = "matriisi_x" ;
+            Text [ finnish ] = "taulukko_x" ;
             Text [ danish ] = "Matrix_X" ;
             Text [ french ] = "Matrice_X" ;
             Text [ swedish ] = "matris_x" ;
@@ -19987,7 +20624,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Matriz_X" ;
             Text [ english_us ] = "array_x" ;
             Text[ chinese_simplified ] = "array_X";
-            Text[ russian ] = "_X";
+            Text[ russian ] = " X";
             Text[ polish ] = "macierz_X";
             Text[ japanese ] = "行列 X";
             Text[ chinese_traditional ] = "array_x";
@@ -19999,6 +20636,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Matris_X";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "array_x";
+            Text[ thai ] = "แถวลำดับ_x";
         };
         String 3 // Description of Parameter 1
         {
@@ -20008,7 +20646,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Prima matrice di cui si deve aggiungere l'elemento al quadrato." ;
             Text [ portuguese_brazilian ] = "Erste Matrix, deren Argumente quadriert summiert werden." ;
             Text [ portuguese ] = " a primeira matriz ou intervalo de valores." ;
-            Text [ finnish ] = "Ensimminen matriisi, jonka argumenttien nelit lasketaan yhteen." ;
+            Text [ finnish ] = "Ensimminen taulukko, jonka argumenttien nelit lasketaan yhteen." ;
             Text [ danish ] = "Frste matrix hvis kvadrerede argumenter summeres." ;
             Text [ french ] = "La premire matrice dont les carrs des lments vont tre additionns" ;
             Text [ swedish ] = "Frsta matrisen vars argument skall summeras kvadrerade." ;
@@ -20028,6 +20666,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "erdii deikenlerin karelerinin topland birinci matris.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Primera matriu en qu es totalitzen els quadrats dels arguments.";
+            Text[ thai ] = "แถวลำดับแรกที่รวมกำลังสองของอาร์กิวเม้นท์ทั้งหมด";
         };
         String 4 // Name of Parameter 2
         {
@@ -20037,7 +20676,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Matrice Y" ;
             Text [ portuguese_brazilian ] = "Matrix Y" ;
             Text [ portuguese ] = "Matriz_Y" ;
-            Text [ finnish ] = "matriisi_y" ;
+            Text [ finnish ] = "taulukko_y" ;
             Text [ danish ] = "Matrix_Y" ;
             Text [ french ] = "Matrice_Y" ;
             Text [ swedish ] = "matris_y" ;
@@ -20045,7 +20684,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Matriz_Y" ;
             Text [ english_us ] = "array_y" ;
             Text[ chinese_simplified ] = "array_Y";
-            Text[ russian ] = "_Y";
+            Text[ russian ] = " Y";
             Text[ polish ] = "macierz_Y";
             Text[ japanese ] = "行列 Y";
             Text[ chinese_traditional ] = "array_y";
@@ -20057,6 +20696,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Matris_Y";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "array_y";
+            Text[ thai ] = "แถวลำดับ_y";
         };
         String 5 // Description of Parameter 2
         {
@@ -20066,7 +20706,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Seconda matrice di cui si deve sottrarre l'elemento al quadrato." ;
             Text [ portuguese_brazilian ] = "Zweite Matrix, deren Argumente quadriert abgezogen werden." ;
             Text [ portuguese ] = " a segunda matriz ou intervalo de valores." ;
-            Text [ finnish ] = "Toinen matriisi, jonka argumenttien nelit vhennetn toisistaan." ;
+            Text [ finnish ] = "Toinen taulukko, jonka argumenttien nelit vhennetn toisistaan." ;
             Text [ danish ] = "Anden matrix hvis kvadrerede argumenter trkkes fra." ;
             Text [ french ] = "La seconde matrice dont les carrs des lments vont tre soustraits." ;
             Text [ swedish ] = "Andra matrisen vars argument dras ifrn kvadrerade." ;
@@ -20086,6 +20726,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "erdii deikenlerin karelerinin kartld ikinci matris.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "La segona matriu en qu s'ha de restar el quadrat dels arguments.";
+            Text[ thai ] = "แถวลำดับที่สองที่ลบกำลังสองของอาร์กิวเม้นท์";
         };
     };
      // -=*# Resource for function SUMMEX2PY2 #*=-
@@ -20099,7 +20740,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Restituisce la somma della somma dei quadrati dei valori di due matrici." ;
             Text [ portuguese_brazilian ] = "Summiert die Quadratesummen zweier Matrizen." ;
             Text [ portuguese ] = "Devolve as somas dos quadrados de duas matrizes." ;
-            Text [ finnish ] = "Palauttaa kahden matriisin neliiden yhteenlasketut summat." ;
+            Text [ finnish ] = "Palauttaa kahden taulukon neliiden yhteenlasketut summat." ;
             Text [ danish ] = "Beregner summen af summen af kvadrater af tilsvarende vrdier i to matrixer." ;
             Text [ french ] = "Additionne les sommes des carrs de deux matrices." ;
             Text [ swedish ] = "Summerar kvadratsummorna av tv matriser." ;
@@ -20107,7 +20748,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Devuelve la sumatoria de la suma de los cuadrados de dos matrices." ;
             Text [ english_us ] = "Returns the total of the square sum of two arrays." ;
             Text[ chinese_simplified ] = "两个数组中对应数值的平方和之和。";
-            Text[ russian ] = "       .";
+            Text[ russian ] = "       .";
             Text[ polish ] = "Sumuje sumy kwadratw dwch tablic.";
             Text[ japanese ] = "2つの行列で対応する要素の平方和を合計します。";
             Text[ chinese_traditional ] = "兩個數組中對應數值的平方和之和。";
@@ -20119,6 +20760,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "ki matrisin karelerinin toplamn alr.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna el total de la suma dels quadrats de dues matrius.";
+            Text[ thai ] = "ส่งกลับผลรวมทั้งหมดของผลรวมกำลังสองของสองแถวลำดับ";
         };
         ExtraData =
         {
@@ -20134,7 +20776,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Matrice X" ;
             Text [ portuguese_brazilian ] = "Matrix X" ;
             Text [ portuguese ] = "Matriz_X" ;
-            Text [ finnish ] = "matriisi_x" ;
+            Text [ finnish ] = "taulukko_x" ;
             Text [ danish ] = "Matrix_X" ;
             Text [ french ] = "Matrice_X" ;
             Text [ swedish ] = "matris_x" ;
@@ -20142,7 +20784,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Matriz_X" ;
             Text [ english_us ] = "array_x" ;
             Text[ chinese_simplified ] = "array_X";
-            Text[ russian ] = "_X";
+            Text[ russian ] = " X";
             Text[ polish ] = "macierz_X";
             Text[ japanese ] = "行列 X";
             Text[ chinese_traditional ] = "array_x";
@@ -20154,6 +20796,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Matris_X";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "array_x";
+            Text[ thai ] = "แถวลำดับ_x";
         };
         String 3 // Description of Parameter 1
         {
@@ -20163,7 +20806,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Prima matrice di cui si deve aggiundere l'elemento al quadrato." ;
             Text [ portuguese_brazilian ] = "Erste Matrix, deren Argumente quadriert summiert werden." ;
             Text [ portuguese ] = " a primeira matriz ou intervalo de valores." ;
-            Text [ finnish ] = "Ensimminen matriisi, jonka argumenttien nelit lasketaan yhteen." ;
+            Text [ finnish ] = "Ensimminen taulukko, jonka argumenttien nelit lasketaan yhteen." ;
             Text [ danish ] = "Frste matrix hvis kvadrerede argumenter summeres." ;
             Text [ french ] = "La premire matrice dont les carrs des lments vont tre additionns." ;
             Text [ swedish ] = "Frsta matrisen vars argument summeras kvadrerade." ;
@@ -20179,10 +20822,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ dutch ] = "De eerste matrix waarvan de argumenten in het kwadraat worden opgeteld.";
             Text[ chinese_simplified ] = "第一个数据组。";
             Text[ greek ] = " ,        .";
-            Text[ korean ] = "독립 변수의 제곱이 합산될  첫번째 행렬입니다.";
+            Text[ korean ] = "독립 변수의 제곱이 합산될 첫번째 행렬입니다.";
             Text[ turkish ] = "erdii deikenlerin karelerinin topland birinci matris.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Primera matriu en qu es totalitzen els quadrats dels arguments.";
+            Text[ thai ] = "แถวลำดับแรกที่รวมกำลังสองของอาร์กิวเม้นท์";
         };
         String 4 // Name of Parameter 2
         {
@@ -20192,7 +20836,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Matrice Y" ;
             Text [ portuguese_brazilian ] = "Matrix Y" ;
             Text [ portuguese ] = "Matriz _Y" ;
-            Text [ finnish ] = "matriisi_y" ;
+            Text [ finnish ] = "taulukko_y" ;
             Text [ danish ] = "Matrix_Y" ;
             Text [ french ] = "Matrice_Y" ;
             Text [ swedish ] = "matris_y" ;
@@ -20200,7 +20844,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Matriz_Y" ;
             Text [ english_us ] = "array_y" ;
             Text[ chinese_simplified ] = "array_Y";
-            Text[ russian ] = "_Y";
+            Text[ russian ] = " Y";
             Text[ polish ] = "macierz_Y";
             Text[ japanese ] = "行列 Y";
             Text[ chinese_traditional ] = "array_y";
@@ -20212,6 +20856,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Matris_Y";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "array_y";
+            Text[ thai ] = "แถวลำดับ_y";
         };
         String 5 // Description of Parameter 2
         {
@@ -20221,7 +20866,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Seconda matrice di cui si deve sottrarre l'elemento al quadrato." ;
             Text [ portuguese_brazilian ] = "Zweite Matrix, deren Argumente quadriert summiert werden." ;
             Text [ portuguese ] = " a segunda matriz ou intervalo de valores." ;
-            Text [ finnish ] = "Toinen matriisi, jonka argumenttien nelit lasketaan yhteen." ;
+            Text [ finnish ] = "Toinen taulukko, jonka argumenttien nelit lasketaan yhteen." ;
             Text [ danish ] = "Anden matrix hvis kvadrerede argumenter summeres." ;
             Text [ french ] = "La seconde matrice dont les carrs des lments vont tre additionns" ;
             Text [ swedish ] = "Andra matrisen vars argument summeras kvadrerade" ;
@@ -20241,6 +20886,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "erdii deikenlerin karelerinin topland ikinci matris.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "La segona matriu en qu s'ha de sumar el quadrat dels arguments.";
+            Text[ thai ] = "แถวลำดับที่สองที่รวมกำลังสองของอาร์กิวเม้นท์";
         };
     };
      // -=*# Resource for function SUMMEXMY2 #*=-
@@ -20254,7 +20900,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Restituisce la somma dei quadrati delle differenze di due matrici." ;
             Text [ portuguese_brazilian ] = "Summiert die Quadrate der Differenzen zweier Matrizen." ;
             Text [ portuguese ] = "Soma os quadrados das diferenas obtidas em duas matrizes." ;
-            Text [ finnish ] = "Palauttaa kahden matriisin neliiden erotusten summan." ;
+            Text [ finnish ] = "Palauttaa kahden taulukon neliiden erotusten summan." ;
             Text [ danish ] = "Beregner summen af kvadrater af differenser mellem tilsvarende vrdier i to matrixer." ;
             Text [ french ] = "Renvoie la somme des carrs des diffrences entre deux matrices." ;
             Text [ swedish ] = "Summerar kvadraterna av tv matrisers differenser." ;
@@ -20262,7 +20908,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Devuelve la sumatoria del cuadrado de la diferencia entre dos matrices." ;
             Text [ english_us ] = "Returns the sum of squares of differences of two arrays." ;
             Text[ chinese_simplified ] = "两个数组中对应数值之差的平方和。";
-            Text[ russian ] = "        .";
+            Text[ russian ] = "     .";
             Text[ polish ] = "Oblicza sum kwadratw odpowiadajcych sobie wartoci dwch tablic.";
             Text[ japanese ] = "2つの行列で対応する要素の差を二乗した上で、その合計を返します。";
             Text[ chinese_traditional ] = "兩個數組中對應數值之差的平方和。";
@@ -20274,6 +20920,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "ki matrisin farklarnn karelerini toplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna la suma dels quadrats de les diferncies de dues matrius.";
+            Text[ thai ] = "ส่งกลับผลรวมของกำลังของผลต่างของสองแถวลำดับ";
         };
         ExtraData =
         {
@@ -20289,7 +20936,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Matrice X" ;
             Text [ portuguese_brazilian ] = "Matrix X" ;
             Text [ portuguese ] = "Matriz_X" ;
-            Text [ finnish ] = "matriisi_x" ;
+            Text [ finnish ] = "taulukko_x" ;
             Text [ danish ] = "Matrix_X" ;
             Text [ french ] = "Matrice_X" ;
             Text [ swedish ] = "matris_x" ;
@@ -20297,7 +20944,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Matriz_X" ;
             Text [ english_us ] = "array_x" ;
             Text[ chinese_simplified ] = "array_X";
-            Text[ russian ] = "_X";
+            Text[ russian ] = " X";
             Text[ polish ] = "macierz_X";
             Text[ japanese ] = "行列 X";
             Text[ chinese_traditional ] = "array_x";
@@ -20309,6 +20956,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Matris_X";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "array_x";
+            Text[ thai ] = "แถวลำดับ_x";
         };
         String 3 // Description of Parameter 1
         {
@@ -20318,7 +20966,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Prima matrice per il calcolo delle differenze tra gli elementi." ;
             Text [ portuguese_brazilian ] = "Erste Matrix zur Bildung der Argumentdifferenzen." ;
             Text [ portuguese ] = " a primeira matriz ou intervalo de valores." ;
-            Text [ finnish ] = "Ensimminen matriisi argumenttien erojen tutkimista varten." ;
+            Text [ finnish ] = "Ensimminen taulukko argumenttien erojen tutkimista varten." ;
             Text [ danish ] = "Den frste matrix til dannelse af argumentdifferenser." ;
             Text [ french ] = "La premire matrice pour le calcul des diffrences entre les lments." ;
             Text [ swedish ] = "Frsta matrisen fr bildning av argumentdifferenserna." ;
@@ -20338,6 +20986,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Deiken farklarnn oluturulmas iin birinci matris.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Primera matriu per formar les diferncies d'arguments.";
+            Text[ thai ] = "แถวลำดับแรกสำหรับการจัดผลต่างของอาร์กิวเม้นท์";
         };
         String 4 // Name of Parameter 2
         {
@@ -20347,7 +20996,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Matrice Y" ;
             Text [ portuguese_brazilian ] = "Matrix Y" ;
             Text [ portuguese ] = "Matriz_Y" ;
-            Text [ finnish ] = "matriisi_y" ;
+            Text [ finnish ] = "taulukko_y" ;
             Text [ danish ] = "Matrix_Y" ;
             Text [ french ] = "Matrice_Y" ;
             Text [ swedish ] = "matris_y" ;
@@ -20355,7 +21004,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ spanish ] = "Matriz_Y" ;
             Text [ english_us ] = "array_y" ;
             Text[ chinese_simplified ] = "array_Y";
-            Text[ russian ] = "_Y";
+            Text[ russian ] = " Y";
             Text[ polish ] = "macierz_Y";
             Text[ japanese ] = "行列 Y";
             Text[ chinese_traditional ] = "array_y";
@@ -20367,6 +21016,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Matris_Y";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "array_y";
+            Text[ thai ] = "แถวลำดับ_y";
         };
         String 5 // Description of Parameter 2
         {
@@ -20376,7 +21026,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ italian ] = "Seconda matrice per il calcolo delle differenze tra gli argomenti." ;
             Text [ portuguese_brazilian ] = "Zweite Matrix zur Bildung der Argumentdifferenzen." ;
             Text [ portuguese ] = " a segunda matriz ou intervalo de valores." ;
-            Text [ finnish ] = "Toinen matriisi argumenttien erojen tutkimista varten." ;
+            Text [ finnish ] = "Toinen taulukko argumenttien erojen tutkimista varten." ;
             Text [ danish ] = "Den anden matrix til dannelse af argumentdifferenser." ;
             Text [ french ] = "La seconde matrice pour le calcul des diffrences entre les lments." ;
             Text [ swedish ] = "Andra matrisen fr bildning av argumentdifferenserna." ;
@@ -20396,6 +21046,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text[ turkish ] = "Deiken farklarnn oluturulmas iin birinci matris.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "La segona matriu per formar les diferncies de l'argument.";
+            Text[ thai ] = "แถวลำดับที่สองสำหรับการจัดผลต่างของอาร์กิวเม้นท์";
         };
     };
 };
@@ -20415,7 +21066,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Restituisce una distribuzione di frequenza sotto forma di matrice verticale." ;
             Text [ portuguese_brazilian ] = "Erstellt eine H?ufigkeitsverteilung als Spaltenmatrix." ;
             Text [ portuguese ] = "Devolve uma distribuio de frequncia como matriz vertical." ;
-            Text [ finnish ] = "Palauttaa frekvenssijakauman pystymatriisina." ;
+            Text [ finnish ] = "Palauttaa frekvenssijakauman pystytaulukkona." ;
             Text [ danish ] = "Returnerer en frekvensfordeling som lodret matrix." ;
             Text [ french ] = "Renvoie une distribution frquentielle sous forme de matrice verticale." ;
             Text [ swedish ] = "Returnerar en frekvensfrdelning som en kolumnmatris." ;
@@ -20423,7 +21074,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve una distribucin de frecuencia como una matriz vertical." ;
             Text [ english_us ] = "Returns a frequency distribution as a vertical array." ;
             Text[ chinese_simplified ] = "计算一个频率分布,以列矩阵方式显示结果。";
-            Text[ russian ] = "      .";
+            Text[ russian ] = "      .";
             Text[ polish ] = "Wyznacza rozkad czstoci w postaci pionowej tablicy.";
             Text[ japanese ] = "データの頻度分布を1列の行列で返します。";
             Text[ chinese_traditional ] = "計算一個頻率分佈﹐以數據列形式顯示結果。";
@@ -20435,6 +21086,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Stun matrisi eklinde bir sklk datm oluturur.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna una distribuci de freq??ncies com a matriu vertical.";
+            Text[ thai ] = "ส่งกลับการแจกแจงความถี่เป็นแถวลำดับแนวตั้ง";
         };
         ExtraData =
         {
@@ -20458,7 +21110,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "datos" ;
             Text [ english_us ] = "data" ;
             Text[ chinese_simplified ] = "data_array";
-            Text[ russian ] = "_";
+            Text[ russian ] = "";
             Text[ polish ] = "tablica_dane";
             Text[ japanese ] = "データ範囲";
             Text[ chinese_traditional ] = "data_array";
@@ -20470,6 +21122,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Veriler";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "dades";
+            Text[ thai ] = "ข้อมูล";
         };
         String 3 // Description of Parameter 1
         {
@@ -20479,7 +21132,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Matrice dei dati." ;
             Text [ portuguese_brazilian ] = "Die Matrix der Daten." ;
             Text [ portuguese ] = " uma matriz ou  referncia a um conjunto de valores, dos quais deseja contar as frequncias.." ;
-            Text [ finnish ] = "Tietomatriisi." ;
+            Text [ finnish ] = "Tietotaulukko" ;
             Text [ danish ] = "Den matrix af data som hyppigheden skal beregnes af." ;
             Text [ french ] = "La matrice des donnes." ;
             Text [ swedish ] = "Matris med data som frekvensen skall berknas fr." ;
@@ -20487,7 +21140,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es una matriz de, o una referencia a, un conjunto de valores cuyas frecuencias desea contar." ;
             Text [ english_us ] = "The array of the data." ;
             Text[ chinese_simplified ] = "要计算其频率分布的数据矩阵。";
-            Text[ russian ] = "     ,    .";
+            Text[ russian ] = " .";
             Text[ polish ] = "Macierz danych.";
             Text[ japanese ] = "検査の対象となる範囲。";
             Text[ chinese_traditional ] = "要計算其頻率分佈的數據組。";
@@ -20499,6 +21152,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Veri matrisi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Matriu de les dades.";
+            Text[ thai ] = "แถวลำดับของข้อมูล";
         };
         String 4 // Name of Parameter 2
         {
@@ -20516,7 +21170,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "grupos" ;
             Text [ english_us ] = "classes" ;
             Text[ chinese_simplified ] = "group_array";
-            Text[ russian ] = "_";
+            Text[ russian ] = "";
             Text[ polish ] = "Klasy";
             Text[ japanese ] = "区間";
             Text[ chinese_traditional ] = "group_array";
@@ -20528,6 +21182,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Snf";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "classes";
+            Text[ thai ] = "คลาส";
         };
         String 5 // Description of Parameter 2
         {
@@ -20537,7 +21192,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "La matrice per formare classi di valori" ;
             Text [ portuguese_brazilian ] = "Die Matrix zur Klassenbildung." ;
             Text [ portuguese ] = " uma matriz ou referncia a intervalos de dados nos quais deseja agrupar os valores da matriz_dados." ;
-            Text [ finnish ] = "Luokkien muodostusmatriisit." ;
+            Text [ finnish ] = "Luokkien muodostustaulukot" ;
             Text [ danish ] = "Den matrix hvor vrdierne fra datamatrix skal grupperes." ;
             Text [ french ] = "La matrice pour la formation de classes." ;
             Text [ swedish ] = "Matrisen fr klassificering" ;
@@ -20545,7 +21200,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es una matriz de, o una referencia a, intervalos dentro de los cuales se desea agrupar los valores del argumento datos." ;
             Text [ english_us ] = "The array for forming classes." ;
             Text[ chinese_simplified ] = "用于构成频率计算分段点的数据矩阵。";
-            Text[ russian ] = "    ,       .";
+            Text[ russian ] = "   .";
             Text[ polish ] = "Macierz dla tworzenia klas.";
             Text[ japanese ] = "データを区切る間隔。";
             Text[ chinese_traditional ] = "用於構成頻率計算分段點的數據組。";
@@ -20557,6 +21212,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Snf oluturma matrisi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Matriu per formar les classes.";
+            Text[ thai ] = "แถวลำดับสำหรับการจัดคลาส";
         };
     };
      // -=*# Resource for function RGP #*=-
@@ -20571,7 +21227,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Restituisce i parametri della regressione lineare sotto forma di matrice." ;
             Text [ portuguese_brazilian ] = "Berechnet Kenngr?en der linearen Regression als Matrix." ;
             Text [ portuguese ] = "Devolve os parmetros de uma tendncia linear." ;
-            Text [ finnish ] = "Laskee lineaarisen regression parametrit matriisina." ;
+            Text [ finnish ] = "Laskee lineaarisen regression parametrit taulukkona." ;
             Text [ danish ] = "Bruger de mindste kvadraters metode til at beregne den lige linje, som svarer bedst til dataene, og returnerer en tilsvarende matrix." ;
             Text [ french ] = "Renvoie les paramtres de la rgression linaire sous forme de matrice." ;
             Text [ swedish ] = "Berknar parametrarna fr den linjra regressionen som matris." ;
@@ -20587,10 +21243,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Berekent de parameters van een lineaire trend als matrix.";
             Text[ chinese_simplified ] = "计算线性回归的数组型系数。";
             Text[ greek ] = "       .";
-            Text[ korean ] = "선형 회귀의 파라미터를  행렬로 계산합니다.";
+            Text[ korean ] = "선형 회귀의 매개 변수를 행렬로 계산합니다.";
             Text[ turkish ] = "Dorusal regresyonun parametrelerini matris olarak hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Calcula els parmetres de la regressi lineal com a una matriu.";
+            Text[ thai ] = "คำนวณพารามิเตอร์ของการถดถอยแบบเส้นตรงเป็นแถวลำดับ";
         };
         ExtraData =
         {
@@ -20614,7 +21271,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Datos_Y" ;
             Text [ english_us ] = "data_Y" ;
             Text[ chinese_simplified ] = "data_Y";
-            Text[ russian ] = "__Y";
+            Text[ russian ] = " Y";
             Text[ polish ] = "Dane_Y";
             Text[ japanese ] = "既知の Y";
             Text[ chinese_traditional ] = "data_Y";
@@ -20626,6 +21283,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Veri_Y";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "data_Y";
+            Text[ thai ] = "ข้อมูล_Y";
         };
         String 3 // Description of Parameter 1
         {
@@ -20635,7 +21293,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Matrice dei valori Y." ;
             Text [ portuguese_brazilian ] = "Die Matrix der Y-Daten." ;
             Text [ portuguese ] = " o conjunto de valores j conhecidos na relao y = mx + b." ;
-            Text [ finnish ] = "Tietomatriisi Y." ;
+            Text [ finnish ] = "Tietotaulukko Y" ;
             Text [ danish ] = "Matrixen med Y-data." ;
             Text [ french ] = "La matrice des donnes Y." ;
             Text [ swedish ] = "Matrisen med y-data." ;
@@ -20655,6 +21313,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Y verileri matrisi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Matriu de dades Y.";
+            Text[ thai ] = "แถวลำดับข้อมูล Y ";
         };
         String 4 // Name of Parameter 2
         {
@@ -20672,7 +21331,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Datos_X" ;
             Text [ english_us ] = "data_X" ;
             Text[ chinese_simplified ] = "data_X";
-            Text[ russian ] = "__X";
+            Text[ russian ] = " ";
             Text[ polish ] = "Dane_X";
             Text[ japanese ] = "既知の X";
             Text[ chinese_traditional ] = "data_X";
@@ -20684,6 +21343,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Veri_X";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "data_X";
+            Text[ thai ] = "ข้อมูล_X";
         };
         String 5 // Description of Parameter 2
         {
@@ -20693,7 +21353,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Matrice dei dati X" ;
             Text [ portuguese_brazilian ] = "Die Matrix der X-Daten." ;
             Text [ portuguese ] = " um conjunto facultativo de valores de x  j conhecidos na relao y = mx + b." ;
-            Text [ finnish ] = "Tietomatriisi X." ;
+            Text [ finnish ] = "Tietotaulukko X" ;
             Text [ danish ] = "Matrixen med X-data." ;
             Text [ french ] = "La matrice des donnes X." ;
             Text [ swedish ] = "Matrisen med x-data." ;
@@ -20713,6 +21373,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "X  verileri matrisi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Matriu de dades X.";
+            Text[ thai ] = "แถวลำดับข้อมูล X ";
         };
         String 6 // Name of Parameter 3
         {
@@ -20730,7 +21391,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "tipo_lineal" ;
             Text [ english_us ] = "Linear_type" ;
             Text[ chinese_simplified ] = "Linear_type";
-            Text[ russian ] = "_";
+            Text[ russian ] = " ";
             Text[ polish ] = "Typ_prostej";
             Text[ japanese ] = "線形";
             Text[ chinese_traditional ] = "Linear_type";
@@ -20742,6 +21403,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Doru_tr";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Linear_type";
+            Text[ thai ] = "เส้นตรง_ชนิด";
         };
         String 7 // Description of Parameter 3
         {
@@ -20759,7 +21421,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Si el tipo = 0 las lneas rectas se calcularn mediante el punto cero, sino como lneas de regresin." ;
             Text [ english_us ] = "If type = 0 the linears will be calculated through the zero point, or else moved linears." ;
             Text[ chinese_simplified ] = "如果type=0,那么直线经过零点。";
-            Text[ russian ] = " ,  ,  ,   b   0.";
+            Text[ russian ] = "  = 0,      ,  - .";
             Text[ polish ] = "Warto logiczna okrelajca, czy dla staej b ma zosta wymuszona warto 0.";
             Text[ japanese ] = "定数 = 0 にすると値が0に設定され、そうでない場合は値が調整されます。";
             Text[ chinese_traditional ] = "如果const=0﹐表示直線經過零點。";
@@ -20767,10 +21429,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Indien type=0 dan worden de lijnen door het nulpunt berekend; verschoven lijnen zijn ook mogelijk.";
             Text[ chinese_simplified ] = "如果type=0,那么直线经过零点。";
             Text[ greek ] = "  =0,          ,    .";
-            Text[ korean ] = "유형=0이면, 0점을 통과하는 직선들이 계산되며  그렇지 않을 경우 이동된 직선들도 계산됩니다.";
+            Text[ korean ] = "유형=0이면, 0점을 통과하는 직선들이 계산되며 그렇지 않을 경우 이동된 직선도 계산됩니다.";
             Text[ turkish ] = "Tr=0 olursa dorular, sfr noktas zerinden hesaplanr. Dier durumlarda tanm dorular da hesaplanr.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Si el tipus = 0, les lineals es calcularan a travs del punt zero, o si no les lineals mogudes. ";
+            Text[ thai ] = "ถ้าชนิด = 0 เส้นตรงจะถูกคำนวณผ่านจุดศูนย์, หรือถ้าเป็นอย่างอื่นให้ย้ายเส้นตรง";
         };
         String 8 // Name of Parameter 4
         {
@@ -20789,7 +21452,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "estadstica" ;
             Text [ english_us ] = "stats" ;
             Text[ chinese_simplified ] = "stats";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "Parametry";
             Text[ japanese ] = "補正";
             Text[ chinese_traditional ] = "stats";
@@ -20801,6 +21464,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Parametreler";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "estadstiques";
+            Text[ thai ] = "สถิติ";
         };
         String 9 // Description of Parameter 4
         {
@@ -20819,7 +21483,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es un valor lgico que especifica si se han de devolver estadsticas de regresin adicionales." ;
             Text [ english_us ] = "If parameter = 0 then only the regression coefficient will be calculated, otherwise other values as well." ;
             Text[ chinese_simplified ] = "如果 stats=0 ,只计算回归系数,否则同时计算其他附加数值。";
-            Text[ russian ] = "   ,     ,      .";
+            Text[ russian ] = "  = 0,     ,    .";
             Text[ polish ] = "Jeli parametry wynosz 0, obliczane bd tylko wspczynniki regresji, w innych przypadkach rwnie pozostae wartoci.";
             Text[ japanese ] = "補正 = 0 にすると回帰直線の補正項だけを追加情報として返し、そうでない場合はその他の値も返します。";
             Text[ chinese_traditional ] = "如果 stats=0 ﹐只計算回歸相關係數﹐否則同時計算其他附加數值。";
@@ -20827,10 +21491,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Indien parameter=0 dan worden alleen de regressiecofficinten berekend; ook andere waarden zijn mogelijk.";
             Text[ chinese_simplified ] = "如果 stats=0 ,只计算回归系数,否则同时计算其他附加数值。";
             Text[ greek ] = "   = 0 ,         ,      .";
-            Text[ korean ] = "파라미터=0이면 회귀 계수만 계산되며  그렇지 않을 경우  다른 값들도 계산됩니다.";
+            Text[ korean ] = "매개 변수=0이면 회귀 계수만 계산되며 그렇지 않을 경우에는 다른 값도 계산됩니다.";
             Text[ turkish ] = "Parametreler=0 olursa yalnzca regresyon katsaylar hesaplanr. Dier durumlarda dier deerler de hesaplanr.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Si el parmetre = 0 noms es calcular el coeficient de regressi; altrament, tamb altres valors.";
+            Text[ thai ] = "ถ้าพารามิเตอร์ = 0 ให้คำนวณสัมประสิทธิ์การถดถอยอย่างเดียว, ค่าอื่น ๆ ก็เหมือนกัน";
         };
     };
      // -=*# Resource for function RKP #*=-
@@ -20845,7 +21510,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Restituisce i parametri della regressione esponenziale sotto forma di matrice." ;
             Text [ portuguese_brazilian ] = "Berechnet Kenngr?en der exponentiellen Regression als Matrix." ;
             Text [ portuguese ] = "Calcula os parmetros da curva de regresso exponencial na forma de matriz." ;
-            Text [ finnish ] = "Laskee eksponentiaalisen regressiokyrn parametrit matriisina." ;
+            Text [ finnish ] = "Laskee eksponentiaalisen regressiokyrn parametrit taulukkona." ;
             Text [ danish ] = "Bruger regressionsanalyse til at beregne en eksponentialkurve, som svarer bedst til dataene, og returnerer en tilsvarende matrix." ;
             Text [ french ] = "Renvoie les paramtres de la rgression exponentielle sous forme de matrice." ;
             Text [ swedish ] = "Berknar parametrar fr den exponentiella regressionen som matris." ;
@@ -20853,7 +21518,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve los parmetros de una curva de tendencia exponencial." ;
             Text [ english_us ] = "Calculates the parameters of the exponential regression curve as an array." ;
             Text[ chinese_simplified ] = "计算描述指数回归曲线的数组。";
-            Text[ russian ] = "      .";
+            Text[ russian ] = "     (y=b*m^x)   .";
             Text[ polish ] = "Wyznacza parametry regresji wykadniczej jako macierz.";
             Text[ japanese ] = "指数トレンドのパラメータを返します。";
             Text[ chinese_traditional ] = "計算描述指數迴歸曲線的數組。";
@@ -20861,10 +21526,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Berekent de parameters van een exponentile trend als matrix.";
             Text[ chinese_simplified ] = "计算描述指数回归曲线的数组。";
             Text[ greek ] = "       .";
-            Text[ korean ] = "지수 회귀의 파라미터를 행렬로 계산합니다.";
+            Text[ korean ] = "지수 회귀의 매개 변수를 행렬로 계산합니다.";
             Text[ turkish ] = "stel regresyonun parametrelerini matris olarak hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Calcula els parmetres de la corba de regressi exponencial com a una matriu.";
+            Text[ thai ] = "คำนวณพารามิเตอร์ของเส้นโค้งการถดถอยแบบเอ็กซ์โปเนนเชียลเป็นแถวลำดับ";
         };
         ExtraData =
         {
@@ -20888,7 +21554,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Datos_Y" ;
             Text [ english_us ] = "data_Y" ;
             Text[ chinese_simplified ] = "data_Y";
-            Text[ russian ] = "__Y";
+            Text[ russian ] = " Y";
             Text[ polish ] = "Dane_Y";
             Text[ japanese ] = "既知の Y";
             Text[ chinese_traditional ] = "data_Y";
@@ -20900,6 +21566,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Veri_Y";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "data_Y";
+            Text[ thai ] = "ข้อมูล_Y";
         };
         String 3 // Description of Parameter 1
         {
@@ -20909,7 +21576,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "La matrice dei dati Y." ;
             Text [ portuguese_brazilian ] = "Die Matrix der Y-Daten." ;
             Text [ portuguese ] = " o conjunto dos valores y." ;
-            Text [ finnish ] = "Tietomatriisi Y." ;
+            Text [ finnish ] = "Tietotaulukko Y" ;
             Text [ danish ] = "Matrixen med Y-data." ;
             Text [ french ] = "La matrice des donnes Y." ;
             Text [ swedish ] = "Matrisen med y-data." ;
@@ -20929,6 +21596,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Y verileri matrisi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Matriu de dades Y.";
+            Text[ thai ] = "แถวลำดับข้อมูล Y ";
         };
         String 4 // Name of Parameter 2
         {
@@ -20946,7 +21614,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Datos_X" ;
             Text [ english_us ] = "data_X" ;
             Text[ chinese_simplified ] = "data_X";
-            Text[ russian ] = "__X";
+            Text[ russian ] = " ";
             Text[ polish ] = "Dane_X";
             Text[ japanese ] = "既知の X";
             Text[ chinese_traditional ] = "data_X";
@@ -20958,6 +21626,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Veri_X";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "data_X";
+            Text[ thai ] = "ข้อมูล_X";
         };
         String 5 // Description of Parameter 2
         {
@@ -20967,7 +21636,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "La matrice dei dati X." ;
             Text [ portuguese_brazilian ] = "Die Matrix der X-Daten." ;
             Text [ portuguese ] = " um conjunto facultativo de valores x." ;
-            Text [ finnish ] = "Tietomatriisi X." ;
+            Text [ finnish ] = "Tietotaulukko X" ;
             Text [ danish ] = "Matrixen med X-data." ;
             Text [ french ] = "La matrice des donnes X." ;
             Text [ swedish ] = "Matrisen med x-data." ;
@@ -20987,6 +21656,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "X verileri matrisi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Matriu de dades X.";
+            Text[ thai ] = "แถวลำดับข้อมูล X ";
         };
         String 6 // Name of Parameter 3
         {
@@ -20996,7 +21666,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Tipo funzione" ;
             Text [ portuguese_brazilian ] = "Art der Funktion" ;
             Text [ portuguese ] = "Tipo_de_funo" ;
-            Text [ finnish ] = "Toiminnon_tyyppi" ;
+            Text [ finnish ] = "Funktion_tyyppi" ;
             Text [ danish ] = "Konstant" ;
             Text [ french ] = "Type_de_fonction" ;
             Text [ swedish ] = "typ_av_funktion" ;
@@ -21004,7 +21674,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Tipo_de_funcin" ;
             Text [ english_us ] = "Function_type" ;
             Text[ chinese_simplified ] = "Function_type";
-            Text[ russian ] = "_";
+            Text[ russian ] = " ";
             Text[ polish ] = "Typ_funkcji";
             Text[ japanese ] = "計算方式";
             Text[ chinese_traditional ] = "Function_type";
@@ -21016,6 +21686,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Fonksiyon_tr";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Function_type";
+            Text[ thai ] = "ฟังก์ชั่น_ชนิด";
         };
         String 7 // Description of Parameter 3
         {
@@ -21029,22 +21700,23 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ danish ] = "Er Konstant=0 beregnes funktionerer af formen y=m^x ellers ogs funktioner af formen y=b*m^x." ;
             Text [ french ] = "Si Type = 0, ce sont des fonctions de relation y=m^x qui seront calcules, sinon des fonctions y=b*m^x." ;
             Text [ swedish ] = "Om typ=0, s berknas funktioner med formen y=m^x, annars ven funktioner y=b*m^x." ;
-            Text [ dutch ] = "Indien type=0 dan worden de functies van de vorm y=m^x berekend, anders ook functies y=b*m^x. " ;
+            Text [ dutch ] = "Indien Type=0, worden functies berekend waarbij y=m^x. Ook functies waarbij y=b*m^x." ;
             Text [ spanish ] = "es un valor lgico que especifica si la constante b debe ser igual a 1." ;
             Text [ english_us ] = "If type = 0 then the functions will be calculated in the form of y=m^x, or also functions y=b*m^x." ;
             Text[ chinese_simplified ] = "是一个逻辑值。如果数值为零,就按照公式 y=m^x \n计算,否则就按照 y=b*m^x 计算。";
-            Text[ russian ] = "   ,      y=m^x,        y=b*m^x.";
+            Text[ russian ] = "  = 0,      y=m^x,    -   y=b*m^x.";
             Text[ polish ] = "Jeli typ wynosi 0, obliczane bd funkcje postaci y=m^x, w pozostaych przypadkach rwnie funkcje y=b*m^x.";
             Text[ japanese ] = "計算方式 = 0 の場合は Y=m^x で、そうでない場合は Y=b*m^x で計算されます。";
             Text[ chinese_traditional ] = "是一個邏輯值。如果數值為零﹐就按照公式 y=m^x 計算﹐\n否則就按照 y=b*m^x 計算。";
             Text[ arabic ] = " :  b     = TRUE Const  b  1   Const = FALSE  .";
-            Text[ dutch ] = "Indien type=0 dan worden de functies van de vorm y=m^x berekend, anders ook functies y=b*m^x. ";
+            Text[ dutch ] = "Indien Type=0, worden functies berekend waarbij y=m^x. Ook functies waarbij y=b*m^x.";
             Text[ chinese_simplified ] = "是一个逻辑值。如果数值为零,就按照公式 y=m^x \n计算,否则就按照 y=b*m^x 计算。";
             Text[ greek ] = "  =0,      y=m^x,   y=b*m^x.";
             Text[ korean ] = "유형=0이면, 양식의 함수 y=m^x가 계산되며 그렇지 않을 경우 함수 y=b*m^x도 계산됩니다.";
             Text[ turkish ] = "Tr=0 olursa y=m^x biiminde fonksiyonlar hesaplanr. Dier durumlarda y=b*m^x eklinde fonksiyonlar da hesaplanr.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Si el tipus = 0, les funcions es calcularan en la forma y=m^x, o tamb y=b*m^x.";
+            Text[ thai ] = "ถ้าชนิด = 0 จากนั้นให้คำนวณฟังก์ชั่นในรูปแบบของ y=m^x, หรือฟังก์ชั่น y=b*m^x ด้วย";
         };
         String 8 // Name of Parameter 4
         {
@@ -21063,7 +21735,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "estadstica" ;
             Text [ english_us ] = "stats" ;
             Text[ chinese_simplified ] = "stats";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "Parametry";
             Text[ japanese ] = "補正";
             Text[ chinese_traditional ] = "stats";
@@ -21075,6 +21747,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Parametreler";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "estadstiques";
+            Text[ thai ] = "สถิติ";
         };
         String 9 // Description of Parameter 4
         {
@@ -21089,22 +21762,23 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ danish ] = "Er Statistik=0 beregnes kun regressionskoefficienten, ellers returneres ogs andre vrdier." ;
             Text [ french ] = "Si paramtres = 0, seuls les coefficients de rgression seront calculs ; sinon d'autres valeurs." ;
             Text [ swedish ] = "om statistik=0 s berknas bara regressionskoefficienterna, annars berknas ytterligare vrden." ;
-            Text [ dutch ] = "Indien parameter=0 worden alleen de regressiecfficienten berekend; andere waarden zijn ook mogelijk." ;
+            Text [ dutch ] = "Indien parameter=0 worden alleen de regressiecofficinten berekend; andere waarden zijn ook mogelijk." ;
             Text [ spanish ] = "es un valor lgico que especifica si se debern devolver estadsticas de regresin adicionales." ;
             Text [ english_us ] = "If parameter = 0 then only the regression coefficient will be calculated, otherwise other values as well." ;
             Text[ chinese_simplified ] = "是一个逻辑值。如果数值为零,就只计算回归相关系数,\n否则还计算其他附加数值。";
-            Text[ russian ] = "   ,     ,       .";
+            Text[ russian ] = "  = 0,     ,    .";
             Text[ polish ] = "Jeli parametry wynosz 0, obliczane bd tylko wspczynniki regresji, w innych przypadkach rwnie pozostae wartoci.";
             Text[ japanese ] = "補正 = 0 にすると回帰指数曲線の補正項だけを追加情報として返し、そうでない場合はほかの値も返します。";
             Text[ chinese_traditional ] = "是一個邏輯值。如果數值為零﹐就只計算回歸相關係數﹐\n否則還計算其他附加數值。";
             Text[ arabic ] = " :     TRUE =   m  b = FALSE  .";
-            Text[ dutch ] = "Indien parameter=0 worden alleen de regressiecfficienten berekend; andere waarden zijn ook mogelijk.";
+            Text[ dutch ] = "Indien parameter=0 worden alleen de regressiecofficinten berekend; andere waarden zijn ook mogelijk.";
             Text[ chinese_simplified ] = "是一个逻辑值。如果数值为零,就只计算回归相关系数,\n否则还计算其他附加数值。";
             Text[ greek ] = "   = 0 ,         ,      .";
-            Text[ korean ] = "파라미터=0이면 회귀 계수만 계산되며 그렇지 않을 경우 다른 값도 계산됩니다.";
+            Text[ korean ] = "매개 변수=0이면 회귀 계수만 계산되며 그렇지 않을 경우에는 다른 값도 계산됩니다.";
             Text[ turkish ] = "Parametreler=0 olursa, yalnzca regresyon katsaylar hesaplanr. Dier durumlarda dier deerler de hesaplanr.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Si el parmetre = 0 noms es calcular el coeficient de regressi; altrament, tamb altres valors.";
+            Text[ thai ] = "ถ้าพารามิเตอร์ = 0 จากนั้นให้คำนวณค่าสัมประสิทธิ์แบบถดถอยเท่านั้น, ค่าอื่น ๆ ก็เหมือนกัน";
         };
     };
      // -=*# Resource for function TREND #*=-
@@ -21126,7 +21800,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve valores que resultan de una tendencia lineal." ;
             Text [ english_us ] = "Calculates points along a regression line." ;
             Text[ chinese_simplified ] = "计算回归直线上的一组纵坐标值。";
-            Text[ russian ] = "      .";
+            Text[ russian ] = "    .";
             Text[ polish ] = "Wyznacza warto przy zaoeniu trendu liniowego.";
             Text[ japanese ] = "回帰直線の座標を計算します。";
             Text[ chinese_traditional ] = "計算回歸直線上的一組縱座標值。";
@@ -21138,6 +21812,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Regresyon dorusu zerinde nokta hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Calcula els punts al llarg d'una lnia de regressi.";
+            Text[ thai ] = "คำนวณจุดตามเส้นถดถอย";
         };
         ExtraData =
         {
@@ -21161,7 +21836,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Datos_Y" ;
             Text [ english_us ] = "data_Y" ;
             Text[ chinese_simplified ] = "data_Y";
-            Text[ russian ] = "__Y";
+            Text[ russian ] = " Y";
             Text[ polish ] = "Dane_Y";
             Text[ japanese ] = "既知の Y";
             Text[ chinese_traditional ] = "data_Y";
@@ -21173,6 +21848,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Veri_Y";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "data_Y";
+            Text[ thai ] = "ข้อมูล_Y";
         };
         String 3 // Description of Parameter 1
         {
@@ -21182,7 +21858,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Matrice dei dati Y." ;
             Text [ portuguese_brazilian ] = "Die Matrix der Y-Daten." ;
             Text [ portuguese ] = " o conjunto de valores j conhecidos na relao y = mx + b." ;
-            Text [ finnish ] = "Tietomatriisi Y." ;
+            Text [ finnish ] = "Tietotaulukko Y" ;
             Text [ danish ] = "Matrixen med Y-data." ;
             Text [ french ] = "La matrice des donnes Y." ;
             Text [ swedish ] = "Matrisen med y-data." ;
@@ -21202,6 +21878,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Y verileri matrisi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Matriu de dades Y.";
+            Text[ thai ] = "แถวลำดับข้อมูล Y ";
         };
         String 4 // Name of Parameter 2
         {
@@ -21219,7 +21896,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Datos_X" ;
             Text [ english_us ] = "data_X" ;
             Text[ chinese_simplified ] = "data_X";
-            Text[ russian ] = "__X";
+            Text[ russian ] = " ";
             Text[ polish ] = "Dane_X";
             Text[ japanese ] = "既知の X";
             Text[ chinese_traditional ] = "data_X";
@@ -21231,6 +21908,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Veri_X";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "data_X";
+            Text[ thai ] = "ข้อมูล_X";
         };
         String 5 // Description of Parameter 2
         {
@@ -21240,7 +21918,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Matrice dei dati X come base per la regressione." ;
             Text [ portuguese_brazilian ] = "Die Matrix der X-Daten als Grundlage zur Regression." ;
             Text [ portuguese ] = " um conjunto facultativo de valores x  j conhecidos na relao y = mx + b." ;
-            Text [ finnish ] = "Regression perustiedot sisltv tietomatriisi X." ;
+            Text [ finnish ] = "Regression perustiedot sisltv tietotaulukko X" ;
             Text [ danish ] = "Matrixen med X-data som er grundlag for regressionsberegningen." ;
             Text [ french ] = "La matrice des donnes X comme base pour la rgression." ;
             Text [ swedish ] = "Matrisen med x-data som ligger till grund fr regressionen." ;
@@ -21260,6 +21938,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Regresyon temeli olarak X verileri matrisi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Matriu de dades X com a la base per a la regressi.";
+            Text[ thai ] = "แถวลำดับข้อมูล X เป็นฐานสำหรับการถดถอย";
         };
         String 6 // Name of Parameter 3
         {
@@ -21277,7 +21956,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Nuevos_datos_X" ;
             Text [ english_us ] = "new data_X" ;
             Text[ chinese_simplified ] = "new data_X";
-            Text[ russian ] = "__X";
+            Text[ russian ] = "  ";
             Text[ polish ] = "Nowe_dane_X";
             Text[ japanese ] = "新しい X";
             Text[ chinese_traditional ] = "new data_X";
@@ -21289,6 +21968,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Yeni_veri_X";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "new data_X";
+            Text[ thai ] = "ข้อมูล_X ใหม่";
         };
         String 7 // Description of Parameter 3
         {
@@ -21298,7 +21978,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Matrice dei dati X per il ricalcolo dei valori." ;
             Text [ portuguese_brazilian ] = "Die Matrix der X-Daten zur Neuberechnung von Werten." ;
             Text [ portuguese ] = "so novos valores de x para os quais deseja que TENDNCIA devolva valores de y correspondentes." ;
-            Text [ finnish ] = "Arvojen uudelleenlaskennan tietomatriisi X." ;
+            Text [ finnish ] = "Arvojen uudelleenlaskennan tietotaulukko X" ;
             Text [ danish ] = "Matrixen med X-data som nye vrdier skal beregnes for." ;
             Text [ french ] = "La matrice des donnes X pour le nouveau calcul des valeurs." ;
             Text [ swedish ] = "Matrisen av x-data fr ny berkning av vrden." ;
@@ -21306,7 +21986,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "son nuevos valores de x para los cuales se desea que TENDENCIA devuelva los valores de y correspondientes." ;
             Text [ english_us ] = "The array of X data for recalculating the values." ;
             Text[ chinese_simplified ] = "用于计算新数值的 X-数据组。";
-            Text[ russian ] = "   x,       y.";
+            Text[ russian ] = "    .";
             Text[ polish ] = "Macierz danych X dla ponownego obliczenia wartoci.";
             Text[ japanese ] = "対応する Y の値を計算する新しい x の値の行列。";
             Text[ chinese_traditional ] = "用來計算新數值的 X-數據組。";
@@ -21318,6 +21998,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Deerlerin yeniden hesaplanmas iin X verileri matrisi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Matriu de dades X per tornar a calcular els valors.";
+            Text[ thai ] = "แถวลำดับของข้อมูล X สำหรับคำนวณค่าซ้ำ";
         };
         String 8 // Name of Parameter 4
         {
@@ -21335,7 +22016,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "tipo_lineal" ;
             Text [ english_us ] = "Linear_type" ;
             Text[ chinese_simplified ] = "Linear_type";
-            Text[ russian ] = "_";
+            Text[ russian ] = " ";
             Text[ polish ] = "Typ_prostej";
             Text[ japanese ] = "線形";
             Text[ chinese_traditional ] = "Linear_type";
@@ -21347,6 +22028,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Doru_tr";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Linear_type";
+            Text[ thai ] = "เส้นตรง_ชนิด";
         };
         String 9 // Description of Parameter 4
         {
@@ -21364,7 +22046,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Si el tipo = 0 las lneas rectas se calcularn mediante el punto cero, sino como lneas de regresin." ;
             Text [ english_us ] = "If type = 0 the linears will be calculated through the zero point, or else moved linears." ;
             Text[ chinese_simplified ] = "如果 type=0,那么直线当作经过零点计算。";
-            Text[ russian ] = " ,  ,  ,   b   0.";
+            Text[ russian ] = "  = 0,      ,  - .";
             Text[ polish ] = "Warto logiczna okrelajca, czy wymusi 0 dla staej b.";
             Text[ japanese ] = "定数 = 0 にすると0に設定され、そうでない場合は調整されます。";
             Text[ chinese_traditional ] = "如果 const=0 ﹐要計算的直線經過零點。";
@@ -21372,10 +22054,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Indien type=0 dan worden de lijnen door het nulpunt berekend. Ook verschoven lijnen zijn mogelijk.";
             Text[ chinese_simplified ] = "如果 type=0,那么直线当作经过零点计算。";
             Text[ greek ] = "  =0,          ,    .";
-            Text[ korean ] = "유형=0이면, 0점을 통과하는 직선들이 계산되며 그렇지 않을 경우 이동된 직선들도 계산됩니다.";
+            Text[ korean ] = "유형=0이면, 0점을 통과하는 직선이 계산되며 그렇지 않을 경우 이동된 직선도 계산됩니다.";
             Text[ turkish ] = "Tr=0 olursa dorular, sfr noktas zerinden hesaplanr. Dier durumlarda tanm dorular da hesaplanr.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Si el tipus = 0, les lineals es calcularan a travs del punt zero, o si no les lineals mogudes. ";
+            Text[ thai ] = "ถ้าชนิด = 0 เส้นตรงจะถูกคำนวณผ่านจุดศูนย์, หรือถ้าเป็นอย่างอื่นให้ย้ายเส้นตรง";
         };
     };
      // -=*# Resource for function VARIATION #*=-
@@ -21397,7 +22080,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve los valores a lo largo de una curva exponencial." ;
             Text [ english_us ] = "Calculates points on the exponential regression function." ;
             Text[ chinese_simplified ] = "计算指数回归函数值。";
-            Text[ russian ] = "      .";
+            Text[ russian ] = "   .";
             Text[ polish ] = "Wyznacza warto przy zaoeniu trendu wykadniczego.";
             Text[ japanese ] = "指数曲線上の値を返します。";
             Text[ chinese_traditional ] = "計算指數回歸函數值。";
@@ -21409,6 +22092,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "stel regresyon fonksiyonu zerinde nokta hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Calcula els punts de la funci de regressi exponencial.";
+            Text[ thai ] = "คำนวณจุดบนฟังก์ชั่นการถดถอยแบบเอ็กซ์โปเนนเชียล";
         };
         ExtraData =
         {
@@ -21432,7 +22116,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Datos_Y" ;
             Text [ english_us ] = "data_Y" ;
             Text[ chinese_simplified ] = "data_Y";
-            Text[ russian ] = "__y";
+            Text[ russian ] = " Y";
             Text[ polish ] = "Dane_Y";
             Text[ japanese ] = "既知の Y";
             Text[ chinese_traditional ] = "data_Y";
@@ -21444,6 +22128,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Veri_Y";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "data_Y";
+            Text[ thai ] = "ข้อมูล_Y";
         };
         String 3 // Description of Parameter 1
         {
@@ -21453,7 +22138,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "La matrice dei valori Y." ;
             Text [ portuguese_brazilian ] = "Die Matrix der Y-Daten." ;
             Text [ portuguese ] = " o conjunto de valores y na relao y = b*m^x." ;
-            Text [ finnish ] = "Tietomatriisi Y." ;
+            Text [ finnish ] = "Tietotaulukko Y" ;
             Text [ danish ] = "Matrixen med Y-data." ;
             Text [ french ] = "La matrice des donnes Y." ;
             Text [ swedish ] = "Matrisen med y-vrden." ;
@@ -21473,6 +22158,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Y verileri matrisi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Matriu de dades Y.";
+            Text[ thai ] = "แถวลำดับข้อมูล Y ";
         };
         String 4 // Name of Parameter 2
         {
@@ -21490,7 +22176,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Datos_X" ;
             Text [ english_us ] = "data_X" ;
             Text[ chinese_simplified ] = "data_X";
-            Text[ russian ] = "__x";
+            Text[ russian ] = " ";
             Text[ polish ] = "Dane_X";
             Text[ japanese ] = "既知の X";
             Text[ chinese_traditional ] = "data_X";
@@ -21502,6 +22188,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Veri_X";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "data_X";
+            Text[ thai ] = "ข้อมูล_X";
         };
         String 5 // Description of Parameter 2
         {
@@ -21511,7 +22198,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "La matrice dei dati X come base per la regressione." ;
             Text [ portuguese_brazilian ] = "Die Matrix der X-Daten als Grundlage zur Regression." ;
             Text [ portuguese ] = " um conjunto opcional de valores x  na relao y = b*m^x." ;
-            Text [ finnish ] = "Regression perustiedot sisltv tietomatriisi X." ;
+            Text [ finnish ] = "Regression perustiedot sisltv tietotaulukko X." ;
             Text [ danish ] = "Matrixen med X-data som er grundlag for regressionsberegningen." ;
             Text [ french ] = "La matrice des donnes X comme base pour la rgression." ;
             Text [ swedish ] = "Matrisen med x-data som grund fr regressionen." ;
@@ -21531,6 +22218,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Regresyon baz olarak X veri matrisi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Matriu de dades X com a la base per a la regressi.";
+            Text[ thai ] = "แถวลำดับข้อมูล X เป็นฐานสำหรับการถดถอย";
         };
         String 6 // Name of Parameter 3
         {
@@ -21548,7 +22236,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Nuevos_Datos_X" ;
             Text [ english_us ] = "new_data_X" ;
             Text[ chinese_simplified ] = "new_data_X";
-            Text[ russian ] = "__x";
+            Text[ russian ] = "  ";
             Text[ polish ] = "Nowe_dane_X";
             Text[ japanese ] = "新しい X";
             Text[ chinese_traditional ] = "new_data_X";
@@ -21560,6 +22248,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Yeni_veri_X";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "new_data_X";
+            Text[ thai ] = "ใหม่_ข้อมูล_X";
         };
         String 7 // Description of Parameter 3
         {
@@ -21569,7 +22258,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "La matrice dei dati X per un ricalcolo dei valori." ;
             Text [ portuguese_brazilian ] = "Die Matrix der X-Daten zur Neuberechnung von Werten." ;
             Text [ portuguese ] = "so novas variveis x para as quais deseja que CRESCIMENTO fornea os valores y correspondentes." ;
-            Text [ finnish ] = "Arvojen uudelleenlaskennan tietomatriisi X." ;
+            Text [ finnish ] = "Arvojen uudelleenlaskennan tietotaulukko X" ;
             Text [ danish ] = "Matrixen med X-data som nye vrdier skal beregnes for." ;
             Text [ french ] = "La matrice des donnes X pour le nouveau calcul des valeurs." ;
             Text [ swedish ] = "Matrisen av x-data fr omberkning av vrden." ;
@@ -21577,7 +22266,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "son nuevos valores de x nuevos para los cuales se desea que CRECIMIENTO devuelva los valores de y correspondientes." ;
             Text [ english_us ] = "The array of X data for recalculating the values." ;
             Text[ chinese_simplified ] = "用于重新预测指数趋势值的新的 X 数据组。";
-            Text[ russian ] = "  x,       y.";
+            Text[ russian ] = "    .";
             Text[ polish ] = "Macierz danych X dla ponownego obliczania wartoci.";
             Text[ japanese ] = "対応する Y の値を計算する新しい x の値の行列。";
             Text[ chinese_traditional ] = "用來預測指數趨勢值的新的 X - 數據組。";
@@ -21589,6 +22278,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Deerlerin yeniden hesaplanmas iin X veri matrisi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Matriu de dades X per tornar a calcular els valors.";
+            Text[ thai ] = "แถวลำดับของข้อมูล X สำหรับคำนวณค่าซ้ำ";
         };
         String 8 // Name of Parameter 4
         {
@@ -21598,7 +22288,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Tipo funzione" ;
             Text [ portuguese_brazilian ] = "Art der Funktion" ;
             Text [ portuguese ] = "Tipo_de_funo" ;
-            Text [ finnish ] = "Toiminnon_tyyppi" ;
+            Text [ finnish ] = "Funktion_tyyppi" ;
             Text [ danish ] = "Konstant" ;
             Text [ french ] = "Type_de_fonction" ;
             Text [ swedish ] = "typ_av_funktion" ;
@@ -21606,7 +22296,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Tipo_de_funcin" ;
             Text [ english_us ] = "Function_type" ;
             Text[ chinese_simplified ] = "Function_type";
-            Text[ russian ] = "_";
+            Text[ russian ] = " ";
             Text[ polish ] = "Typ_funkcji";
             Text[ japanese ] = "計算方式";
             Text[ chinese_traditional ] = "Function_type";
@@ -21618,6 +22308,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Fonksiyon_tr";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Function_type";
+            Text[ thai ] = "ฟังก์ชั่น_ชนิด";
         };
         String 9 // Description of Parameter 4
         {
@@ -21635,7 +22326,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es un valor lgico que especifica si la constante b debe ser igual a 1." ;
             Text [ english_us ] = "If type = 0 then the functions will be calculated in the form of y=m^x, or also functions y=b*m^x." ;
             Text[ chinese_simplified ] = "如果 type=0 ,函数就按照公式 y=m^x 计算,\n否则便按照公式 y=b*m^x 计算。";
-            Text[ russian ] = " ,    0,      y=m^x,    -   y=b*m^x.";
+            Text[ russian ] = "  = 0,      y=m^x,    -   y=b*m^x.";
             Text[ polish ] = "Jeli typ wynosi 0, bd obliczane funkcje rodzaju y=m^x, w pozostaych wypadkach rwnie funkcje y=b*m^x.";
             Text[ japanese ] = "計算方式 = 0 の場合は Y=m^xで、そうでない場合は Y=b*m^xで計算されます。";
             Text[ chinese_traditional ] = "如果 const=0 ﹐那麼函數就按照公式 y=m^x 計算﹐否則就按照 y=b*m^x 計算。";
@@ -21647,6 +22338,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Art=0 ise y=m^x biimindeki fonksiyonlar  hesaplanr, dier hallerde y=b*m^x fonksiyonlar da hesaplanr.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Si el tipus = 0, les funcions es calcularan en la forma y=m^x, o tamb y=b*m^x.";
+            Text[ thai ] = "ถ้าชนิด = 0 จากนั้นให้คำนวณฟังก์ชั่นในรูปแบบของ y=m^x, หรือฟังก์ชั่น y=b*m^x ด้วย";
         };
     };
      // -=*# Resource for function ANZAHL #*=-
@@ -21669,7 +22361,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Cuenta los nmeros que hay en la lista de argumentos." ;
             Text [ english_us ] = "Counts how many numbers are in the list of arguments." ;
             Text[ chinese_simplified ] = "计算数字项的个数。";
-            Text[ russian ] = ",      .";
+            Text[ russian ] = ",       .";
             Text[ polish ] = "Oblicza, ile liczb zawiera lista argumentw.";
             Text[ japanese ] = "引数リスト含まれる数値データの個数を返します。";
             Text[ chinese_traditional ] = "計算數字項的個數。";
@@ -21681,6 +22373,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Deiken listesinin ierdii say miktarn belirler.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Compta quants nombres hi ha a la llista d'arguments.";
+            Text[ thai ] = "นับจำนวนตัวเลขที่อยู่ในรายการของอาร์กิวเม้นท์";
         };
         ExtraData =
         {
@@ -21696,26 +22389,27 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Valore " ;
             Text [ portuguese_brazilian ] = "Wert " ;
             Text [ portuguese ] = "Valor " ;
-            Text [ finnish ] = "arvo" ;
+            Text [ finnish ] = "arvo " ;
             Text [ danish ] = "Vrdi " ;
             Text [ french ] = "Valeur  " ;
             Text [ swedish ] = "vrde   " ;
-            Text [ dutch ] = "Waarde  " ;
+            Text [ dutch ] = "Waarde" ;
             Text [ spanish ] = "valor " ;
             Text [ english_us ] = "value " ;
             Text[ chinese_simplified ] = "value ";
-            Text[ russian ] = "  ";
+            Text[ russian ] = " ";
             Text[ polish ] = "Warto ";
             Text[ japanese ] = "値 ";
             Text[ chinese_traditional ] = "value ";
             Text[ arabic ] = " ";
-            Text[ dutch ] = "Waarde  ";
+            Text[ dutch ] = "Waarde";
             Text[ chinese_simplified ] = "value ";
             Text[ greek ] = " ";
             Text[ korean ] = "값 ";
             Text[ turkish ] = "Deer ";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "valor ";
+            Text[ thai ] = "ค่า ";
         };
         String 3 // Description of Parameter 1
         {
@@ -21734,7 +22428,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Ref 1; ref 2; ...son entre 1 y 30 argumentos que pueden contener o hacer referencia a distintos tipos de datos, pero slo se cuentan los nmeros." ;
             Text [ english_us ] = "Value 1, value 2, ... are 1 to 30 arguments containing different data types but where only numbers are counted." ;
             Text[ chinese_simplified ] = "数值1; 数值 2;... 是 1 至 30个含有各种类型数据的\n参数,但只计数数字类型的数据。";
-            Text[ russian ] = " 1;  2;...  1  30 ,         ,      .";
+            Text[ russian ] = " 1;  2;...  1  30   ,      .";
             Text[ polish ] = "Od 1 do 30 argumentw, ktre mog odnosi si do argumentw rnych typw danych, przy czym zliczane bd tylko liczby.";
             Text[ japanese ] = "値 1;値 2;...は30個までのセル範囲。";
             Text[ chinese_traditional ] = "數值1; 數值 2;... 是 1 至 30個含有各種類型資料的參數﹐\n但只計數數字類型的資料。";
@@ -21746,6 +22440,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Deer 1; deer 2;... Deiik veri tipleri ieren ancak yalnzca saylarn sayld 1 - 30 aras deikendir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor 1, valor 2, ... sn entre 1 i 30 arguments que contenen tipus de dades diferents per on noms es compten els nombres.";
+            Text[ thai ] = "ค่า 1, ค่า 2, ... อยู่ในอาร์กิวเม้นท์ 1 ถึง 30 มีชนิดข้อมูลต่างกันแต่ตัวเลขเท่านั้นที่ถูกนับ";
         };
     };
      // -=*# Resource for function ANZAHL2 #*=-
@@ -21780,6 +22475,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Deiken listesinin ierdii deer saysn belirler.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Compta quants valors hi ha a la llista d'arguments.";
+            Text[ thai ] = "นับจำนวนค่าในรายการของอาร์กิวเม้นท์";
         };
         ExtraData =
         {
@@ -21795,26 +22491,27 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Valore " ;
             Text [ portuguese_brazilian ] = "Wert " ;
             Text [ portuguese ] = "Valor " ;
-            Text [ finnish ] = "arvo" ;
+            Text [ finnish ] = "arvo " ;
             Text [ danish ] = "Vrdi " ;
             Text [ french ] = "Valeur  " ;
             Text [ swedish ] = "vrde  " ;
-            Text [ dutch ] = "Waarde  " ;
+            Text [ dutch ] = "Waarde" ;
             Text [ spanish ] = "valor " ;
             Text [ english_us ] = "value " ;
             Text[ chinese_simplified ] = "value ";
-            Text[ russian ] = "  ";
+            Text[ russian ] = " ";
             Text[ polish ] = "Warto  ";
             Text[ japanese ] = "値 ";
             Text[ chinese_traditional ] = "value ";
             Text[ arabic ] = " ";
-            Text[ dutch ] = "Waarde  ";
+            Text[ dutch ] = "Waarde";
             Text[ chinese_simplified ] = "value ";
             Text[ greek ] = " ";
             Text[ korean ] = "값 ";
             Text[ turkish ] = "Deer ";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "valor ";
+            Text[ thai ] = "ค่า ";
         };
         String 3 // Description of Parameter 1
         {
@@ -21845,6 +22542,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Deer 1; deer 2;... Saylacak deerler temsil eden 1 -  30 aras deikendir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor 1, valor 2, ... sn entre 1 i 30 arguments que representen els valors que s'han de comptar.";
+            Text[ thai ] = "ค่า 1, ค่า 2, ... อยู่ในอาร์กิวเม้นท์ 1 ถึง 30 แสดงถึงค่าที่ถูกนับ";
         };
     };
      // -=*# Resource for function MAX #*=-
@@ -21859,7 +22557,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Restituisce il valore massimo di un elenco di argomenti." ;
             Text [ portuguese_brazilian ] = "Liefert die gr?te Zahl einer Argumentliste." ;
             Text [ portuguese ] = "Devolve o valor mximo numa lista de argumentos." ;
-            Text [ finnish ] = "Palauttaa argumenttiluettelon enimmisarvon." ;
+            Text [ finnish ] = "Palauttaa argumenttiluettelon suurimman arvon." ;
             Text [ danish ] = "Beregner den strste vrdi p en liste med argumenter." ;
             Text [ french ] = "Renvoie le plus grand nombre de la liste d'arguments." ;
             Text [ swedish ] = "Returnerar det strsta talet i en lista med argument." ;
@@ -21867,7 +22565,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve el valor mximo de una lista de argumentos." ;
             Text [ english_us ] = "Returns the maximum value in a list of arguments." ;
             Text[ chinese_simplified ] = "数据组中的最大数值。";
-            Text[ russian ] = "    .";
+            Text[ russian ] = "     .";
             Text[ polish ] = "Wyznacza maksymaln warto listy argumentw.";
             Text[ japanese ] = "引数リストの中の最大値を返します。";
             Text[ chinese_traditional ] = "數據組中的最大數值。";
@@ -21879,6 +22577,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Deiken listesinin en byk saysn verir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna el valor mxim d'una llista d'arguments.";
+            Text[ thai ] = "ส่งกลับค่ามากที่สุดในรายการของอาร์กิวเม้นท์";
         };
         ExtraData =
         {
@@ -21894,26 +22593,27 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Numero " ;
             Text [ portuguese_brazilian ] = "Zahl " ;
             Text [ portuguese ] = "Nm1; nm2;... " ;
-            Text [ finnish ] = "luku" ;
+            Text [ finnish ] = "luku " ;
             Text [ danish ] = "Tal " ;
             Text [ french ] = "Nombre  " ;
             Text [ swedish ] = "tal  " ;
-            Text [ dutch ] = "Getal  " ;
+            Text [ dutch ] = "Getal" ;
             Text [ spanish ] = "nmero " ;
             Text [ english_us ] = "number " ;
             Text[ chinese_simplified ] = "number ";
-            Text[ russian ] = "  ";
+            Text[ russian ] = " ";
             Text[ polish ] = "Liczba  ";
             Text[ japanese ] = "数値 ";
             Text[ chinese_traditional ] = "number ";
             Text[ arabic ] = " ";
-            Text[ dutch ] = "Getal  ";
+            Text[ dutch ] = "Getal";
             Text[ chinese_simplified ] = "number ";
             Text[ greek ] = " ";
             Text[ korean ] = "값";
             Text[ turkish ] = "Say ";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "nombre ";
+            Text[ thai ] = "ตัวเลข ";
         };
         String 3 // Description of Parameter 1
         {
@@ -21932,7 +22632,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Nmero 1; nmero 2;...son entre 1 y 30 nmeros para los que se desea encontrar el valor mximo." ;
             Text [ english_us ] = "Number 1, number 2, ... are 1 to 30 numerical arguments for which the largest number is to be determined." ;
             Text[ chinese_simplified ] = "数字 1; 数字 2;... 是 1 至 30 个要找出其最大数值的数据。";
-            Text[ russian ] = " 1;  2;...  1  30  ,     .";
+            Text[ russian ] = " 1,  2,...  1  30 ,    .";
             Text[ polish ] = "Od 1 do 30 numerycznych argumentw, dla ktrych ma zosta okrelona maksymalna warto.";
             Text[ japanese ] = "数値 1;数値 2;...は対象となる30個までの数値。";
             Text[ chinese_traditional ] = "數字 1; 數字 2;... 是 1 至 30 個要找出其最大數值的數據。";
@@ -21944,6 +22644,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Say 1; say 2;... En byk saylar belirlenecek 1 - 30 aras nmerik deikendir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre 1, nombre 2, ... sn entre 1 i 30 arguments numrics el nombre ms gran dels quals s'ha de determinar.";
+            Text[ thai ] = "เลข 1, เลข 2, ... อยู่ในอาร์กิวเม้นท์ที่เป็นตัวเลข 1 ถึง 30  สำหรับกำหนดตัวเลขที่มากที่สุด";
         };
     };
      // -=*# Resource for function MAXA #*=-
@@ -21963,7 +22664,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ spanish ] = "Devuelve el valor mximo de una lista de argumentos. El texto se valorar como cero.";
             Text[ english_us ] = "Returns the maximum value in a list of arguments. Text is evaluated as Zero.";
             Text[ chinese_simplified ] = "找出一个参数列单中的最大数值。文字是被当作零。";
-            Text[ russian ] = "     .    .";
+            Text[ russian ] = "     .    0.";
             Text[ polish ] = "Wyznacza najwiksz warto listy argumentw. Warto funkcji dla tekstu jest rwna zero.";
             Text[ japanese ] = "引数リストの中の最大値を返します。文字列は0とみなされます。";
             Text[ chinese_traditional ] = "找出一個參數清單中的最大數值。文字是被當作零。";
@@ -21976,6 +22677,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna el valor mxim d'una llista d'arguments. El text s'avalua com a zero.";
             Text[ finnish ] = "Palauttaa argumenttiluettelon suurimman arvon. Tekstin arvoksi lasketaan nolla.";
+            Text[ thai ] = "ส่งกลับค่ามากที่สุดในรายการของอาร์กิวเม้นท์ ข้อความถูกประเมินค่าเป็นศูนย์";
         };
         ExtraData =
         {
@@ -21993,23 +22695,24 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ danish ] = "Vrdi ";
             Text[ french ] = "Valeur  ";
             Text[ swedish ] = "vrde  ";
-            Text[ dutch ] = "waarde  ";
+            Text[ dutch ] = "waarde";
             Text[ spanish ] = "Valor ";
             Text[ english_us ] = "value ";
             Text[ chinese_simplified ] = "value ";
-            Text[ russian ] = "  ";
+            Text[ russian ] = " ";
             Text[ polish ] = "Warto  ";
             Text[ japanese ] = "値 ";
             Text[ chinese_traditional ] = "value ";
             Text[ arabic ] = " ";
-            Text[ dutch ] = "waarde  ";
+            Text[ dutch ] = "waarde";
             Text[ chinese_simplified ] = "value ";
             Text[ greek ] = " ";
             Text[ korean ] = "값";
             Text[ turkish ] = "Deer";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Valor ";
-            Text[ finnish ] = "arvo";
+            Text[ catalan ] = "valor ";
+            Text[ finnish ] = "arvo ";
+            Text[ thai ] = "ค่า ";
         };
         String 3 // Description of Parameter 1
         {
@@ -22037,7 +22740,8 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Deer 1; deer 2;... En byk deerleri belirlenecek olan 1 - 30 aras deikendir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor 1, valor 2, ... sn entre 1 i 30 arguments el valor ms gran dels quals s'ha de determinar.";
-            Text[ finnish ] = "Arvo 1, arvo 2,    ovat 1 - 30 argumenttia, joista selvitetn suurin arvo.";
+            Text[ finnish ] = "Arvo 1, arvo 2 jne. ovat 1 - 30 argumenttia, joista selvitetn suurin arvo.";
+            Text[ thai ] = "ค่า 1, ค่า 2,    อยู่ในอาร์กิวเม้นท์ 1 ถึง 30 ของค่ามากที่สุดที่ถูกกำหนด";
         };
     };
      // -=*# Resource for function MIN #*=-
@@ -22059,7 +22763,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve el valor mnimo de una lista de argumentos." ;
             Text [ english_us ] = "Returns the minimum value in a list of arguments." ;
             Text[ chinese_simplified ] = "确定参数表中的最小值。";
-            Text[ russian ] = "    .";
+            Text[ russian ] = "     .";
             Text[ polish ] = "Wyznacza minimaln warto w licie argumentw.";
             Text[ japanese ] = "引数リストの中の最小値を返します。";
             Text[ chinese_traditional ] = "確定參數表中的最小值。";
@@ -22071,6 +22775,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Deiken listesinin en kk saysn verir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna el valor mnim d'una llista d'arguments.";
+            Text[ thai ] = "ส่งกลับค่าน้อยที่สุดในรายการของอาร์กิวเม้นท์";
         };
         ExtraData =
         {
@@ -22086,26 +22791,27 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Numero " ;
             Text [ portuguese_brazilian ] = "Zahl " ;
             Text [ portuguese ] = "Nm1; nm2;... " ;
-            Text [ finnish ] = "luku" ;
+            Text [ finnish ] = "luku " ;
             Text [ danish ] = "Tal " ;
             Text [ french ] = "Nombre  " ;
             Text [ swedish ] = "tal  " ;
-            Text [ dutch ] = "Getal  " ;
+            Text [ dutch ] = "Getal" ;
             Text [ spanish ] = "nmero " ;
             Text [ english_us ] = "number " ;
             Text[ chinese_simplified ] = "number ";
-            Text[ russian ] = "  ";
+            Text[ russian ] = " ";
             Text[ polish ] = "Liczba  ";
             Text[ japanese ] = "数値 ";
             Text[ chinese_traditional ] = "number ";
             Text[ arabic ] = " ";
-            Text[ dutch ] = "Getal  ";
+            Text[ dutch ] = "Getal";
             Text[ chinese_simplified ] = "number ";
             Text[ greek ] = " ";
             Text[ korean ] = "값";
             Text[ turkish ] = "Say ";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "nombre ";
+            Text[ thai ] = "ตัวเลข ";
         };
         String 3 // Description of Parameter 1
         {
@@ -22123,7 +22829,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Nmero 1; nmero 2;...son entre 1 a 30 nmeros cuyos valores mnimos desea encontrar." ;
             Text [ english_us ] = "Number 1, number 2, ... are 1 to 30 numerical arguments for which the smallest number is to be determined." ;
             Text[ chinese_simplified ] = "数字 1; 数字 2;... 是 1 至 30 个要确定其最小值的参数。";
-            Text[ russian ] = " 1;  2;...  1  30  ,     .";
+            Text[ russian ] = " 1,  2,...  1  30 ,    .";
             Text[ polish ] = "Od 1 do 30 liczb, wrd ktrych nastpi wyszukanie liczby najmniejszej.";
             Text[ japanese ] = "数値 1;数値 2;...は対象となる30個までの数値。";
             Text[ chinese_traditional ] = "數字 1; 數字 2;... 是 1 至 30 個要確定其最小值的參數。";
@@ -22135,6 +22841,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Say 1; say 2;... En kk saylar belirlenecek 1 - 30 aras nmerik deikendir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre 1, nombre 2, ... sn entre 1 i 30 arguments numrics el nombre ms petit dels quals s'ha de determinar.";
+            Text[ thai ] = "เลข 1, เลข 2, ... อยู่ในอาร์กิวเม้นท์แบบตัวเลข 1 ถึง 30  สำหรับกำหนดตัวเลขที่น้อยที่สุด";
         };
     };
      // -=*# Resource for function MINA #*=-
@@ -22154,7 +22861,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ spanish ] = "Devuelve el valor mnimo de una lista de argumentos. El texto se valorar como cero.";
             Text[ english_us ] = "Returns the smallest value in a list of arguments. Text is evaluated as zero.";
             Text[ chinese_simplified ] = "找出一个参数列单中的最小数值。文字是被当作零。";
-            Text[ russian ] = "     .    .";
+            Text[ russian ] = "     .    0.";
             Text[ polish ] = "Wyznacza minimaln warto listy argumentw. Warto funkcji dla tekstu jest rwna zero.";
             Text[ japanese ] = "引数リストの中の最小値を返します。文字列は0とみなされます。";
             Text[ chinese_traditional ] = "找出一個參數清單中的最小數值。文字是被當作零。";
@@ -22167,6 +22874,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna el valor ms petit d'una llista d'arguments. El text s'avalua com a zero.";
             Text[ finnish ] = "Palauttaa argumenttiluettelon pienimmn arvon. Tekstin arvoksi lasketaan nolla.";
+            Text[ thai ] = "ส่งกลับค่าน้อยที่สุดในรายการของอาร์กิวเม้นท์ ข้อความถูกประเมินค่าเป็นศูนย์";
         };
         ExtraData =
         {
@@ -22184,23 +22892,24 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ danish ] = "Vrdi ";
             Text[ french ] = "Valeur  ";
             Text[ swedish ] = "vrde ";
-            Text[ dutch ] = "waarde  ";
+            Text[ dutch ] = "waarde";
             Text[ spanish ] = "Valor ";
             Text[ english_us ] = "value ";
             Text[ chinese_simplified ] = "value ";
-            Text[ russian ] = "  ";
+            Text[ russian ] = "";
             Text[ polish ] = "Warto  ";
             Text[ japanese ] = "値 ";
             Text[ chinese_traditional ] = "value ";
             Text[ arabic ] = " ";
-            Text[ dutch ] = "waarde  ";
+            Text[ dutch ] = "waarde";
             Text[ chinese_simplified ] = "value ";
             Text[ greek ] = " ";
             Text[ korean ] = "값 ";
             Text[ turkish ] = "Deer ";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Valor ";
-            Text[ finnish ] = "arvo";
+            Text[ catalan ] = "valor ";
+            Text[ finnish ] = "arvo ";
+            Text[ thai ] = "ค่า ";
         };
         String 3 // Description of Parameter 1
         {
@@ -22229,6 +22938,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor 1; valor 2; ... sn entre 1 i 30 arguments el valor ms petit dels quals s'ha de determinar.";
             Text[ finnish ] = "Arvo 1; arvo 2;... ovat 1 - 30 argumenttia, joista selvitetn pienin luku.";
+            Text[ thai ] = "ค่า 1; ค่า 2;... อยู่ในอาร์กิวเม้นท์ 1 ถึง ของตัวเลขที่น้อยที่สุดที่ถูกกำหนด";
         };
     };
      // -=*# Resource for function VARIANZ #*=-
@@ -22247,7 +22957,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ french ] = "Calcule la variance en se basant sur un chantillon." ;
             Text [ swedish ] = "Berknar variansen baserat p ett stickprov." ;
             Text [ dutch ] = "Berekent de variantie op basis van een steekproef." ;
-            Text [ spanish ] = "Calcula la varianza de una muestra." ;
+            Text [ spanish ] = "Calcula la variancia sobre una muestra." ;
             Text [ english_us ] = "Calculates the variance based on a sample." ;
             Text[ chinese_simplified ] = "估算一个抽样的方差。";
             Text[ russian ] = "   .";
@@ -22262,6 +22972,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "rnee dayanarak varyans hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Calcula la varincia basada en una mostra.";
+            Text[ thai ] = "คำนวณการแปรผันบนพื้นฐานกลุ่มตัวอย่าง";
         };
         ExtraData =
         {
@@ -22277,26 +22988,27 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Numero " ;
             Text [ portuguese_brazilian ] = "Zahl " ;
             Text [ portuguese ] = "Nmero " ;
-            Text [ finnish ] = "luku" ;
+            Text [ finnish ] = "luku " ;
             Text [ danish ] = "Tal " ;
             Text [ french ] = "Nombre  " ;
             Text [ swedish ] = "tal  " ;
-            Text [ dutch ] = "Getal  " ;
+            Text [ dutch ] = "Getal" ;
             Text [ spanish ] = "nmero " ;
             Text [ english_us ] = "number " ;
             Text[ chinese_simplified ] = "number ";
-            Text[ russian ] = "  ";
+            Text[ russian ] = " ";
             Text[ polish ] = "Liczba  ";
             Text[ japanese ] = "数値 ";
             Text[ chinese_traditional ] = "number ";
             Text[ arabic ] = " ";
-            Text[ dutch ] = "Getal  ";
+            Text[ dutch ] = "Getal";
             Text[ chinese_simplified ] = "number ";
             Text[ greek ] = " ";
             Text[ korean ] = "값";
             Text[ turkish ] = "Say ";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "nombre ";
+            Text[ thai ] = "ตัวเลข ";
         };
         String 3 // Description of Parameter 1
         {
@@ -22314,7 +23026,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Nmero 1; nmero 2;...son de 1 a 30 argumentos numricos que se corresponden con una muestra de poblacin." ;
             Text [ english_us ] = "Number 1, number 2, ... are 1 to 30 numerical arguments which portray a sample of a population." ;
             Text[ chinese_simplified ] = "数字1;数字2;是1至30个表示一个抽样的数字元素。";
-            Text[ russian ] = "1, 2, ...  1  30  ,     .";
+            Text[ russian ] = " 1,  2, ...  1  30  ,    .";
             Text[ polish ] = "Od 1 do 30 numerycznych argumentw, ktre przedstawiaj prbk, odpowiadajc populacji.";
             Text[ japanese ] = "数値 1;数値 2;...は母集団の30個までの標本データ。";
             Text[ chinese_traditional ] = "數字 1﹔數字 2﹔是 1 至 30 個表示一個抽樣的數字元素。";
@@ -22326,6 +23038,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Say 1; say 2;... Poplasyondan alnm bir rnei temsil eden 1 - 30 aras nmerik deikendir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre 1, nombre 2, ... sn entre 1 i 30 arguments numrics que representen una mostra d'una poblaci.";
+            Text[ thai ] = "เลข 1, เลข 2, ... อยู่ในอาร์กิวเม้นท์แบบตัวเลข 1 ถึง 30  ที่อธิบายกลุ่มตัวอย่างของประชากร";
         };
     };
      // -=*# Resource for function VARIANZ #*=-
@@ -22342,10 +23055,10 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ french ] = "Estime la variance d'une population  partir d'un chantillon. La valeur 0 est attribue au texte.";
             Text[ swedish ] = "Berknar variansen baserat p ett stickprov. Text vrderas till noll.";
             Text[ dutch ] = "Berekent de variantie op basis van een steekproef. Tekst heeft de waarde 0.";
-            Text[ spanish ] = "Calcula la varianza a partir de una muestra. El texto se valorar como cero.";
+            Text[ spanish ] = "Calcula la variancia a partir de una muestra. El texto se valorar como cero.";
             Text[ english_us ] = "Returns the variance based on a sample. Text is evaluated as zero.";
             Text[ chinese_simplified ] = "估算抽样的方差,文字被定值为零。";
-            Text[ russian ] = "   .   0.";
+            Text[ russian ] = "   .    0.";
             Text[ polish ] = "Oblicza wariancj, bazujc na prbce. Warto funkcji dla tekstu jest rwna zero.";
             Text[ japanese ] = "不偏分散を返します。文字列データは 0 とみなされます。";
             Text[ chinese_traditional ] = "估算抽樣的方差﹐文字被定值為零。";
@@ -22358,6 +23071,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna la varincia basada en una mostra. El text s'avalua com a zero.";
             Text[ finnish ] = "Palauttaa otokseen perustuvan varianssin. Tekstin arvoksi lasketaan nolla.";
+            Text[ thai ] = "ส่งกลับการแปรผันบนพื้นฐานกลุ่มตัวอย่าง ข้อความถูกประเมินค่าเป็นศูนย์";
         };
         ExtraData =
         {
@@ -22375,23 +23089,24 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ danish ] = "Vrdi ";
             Text[ french ] = "Valeur  ";
             Text[ swedish ] = "vrde  ";
-            Text[ dutch ] = "waarde  ";
+            Text[ dutch ] = "waarde";
             Text[ spanish ] = "Valor ";
             Text[ english_us ] = "value ";
             Text[ chinese_simplified ] = "value ";
-            Text[ russian ] = "  ";
+            Text[ russian ] = " ";
             Text[ polish ] = "Warto  ";
             Text[ japanese ] = "値 ";
             Text[ chinese_traditional ] = "value ";
             Text[ arabic ] = " ";
-            Text[ dutch ] = "waarde  ";
+            Text[ dutch ] = "waarde";
             Text[ chinese_simplified ] = "value ";
             Text[ greek ] = " ";
             Text[ korean ] = "값";
             Text[ turkish ] = "Deer ";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Valor ";
-            Text[ finnish ] = "arvo";
+            Text[ catalan ] = "valor ";
+            Text[ finnish ] = "arvo ";
+            Text[ thai ] = "ค่า ";
         };
         String 3 // Description of Parameter 1
         {
@@ -22407,7 +23122,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ spanish ] = "Valor 1; Valor 2;... son entre 1 y 30 argumentos que se corresponden con una muestra de poblacin.";
             Text[ english_us ] = "Value 1; value 2;.. .are 1 to 30 arguments representing a sample taken from a basic total population.";
             Text[ chinese_simplified ] = "数值1;数值2;...是1至30个表达一个抽样的元素。";
-            Text[ russian ] = " 1 , 2,...  1  30  ,     .";
+            Text[ russian ] = " 1 , 2,...  1  30  ,  ,    .";
             Text[ polish ] = "Od 1 do 30 argumentw, ktre odpowiadaj prbce populacji.";
             Text[ japanese ] = "値 1;値 2;...は母集団の30個までの標本データ。";
             Text[ chinese_traditional ] = "數值1﹔數值2﹔...是 1 至 30個表達一個抽樣的元素。";
@@ -22419,7 +23134,8 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Deer 1; deer 2;... Poplasyondan alnan bir rnei temsil eden 1 - 30 aras deikendir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor 1; valor 2;... sn entre 1 i 30 arguments que representen una mostra presa d'una poblaci total bsica.";
-            Text[ finnish ] = "Arvo 1; arvo 2;... ovat 1 - 30 argumenttia, jotka esittvt peruskokonaispopulaatiosta otettua otosta.";
+            Text[ finnish ] = "Arvo 1; arvo 2;.. .ovat 1 - 30 argumenttia, jotka esittvt peruskokonaispopulaatiosta otettua otosta.";
+            Text[ thai ] = "ค่า 1; ค่า 2;.. .อยู่ในอาร์กิวเม้นท์ 1 ถึง 30 แสดงถึงกลุ่มตัวอย่างที่เอาออกจากผลรวมพื้นฐานของประชากร";
         };
     };
      // -=*# Resource for function VARIANZEN #*=-
@@ -22438,10 +23154,10 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ french ] = "Calcule la variance en se basant sur la population." ;
             Text [ swedish ] = "Berknar variansen baserat p populationen." ;
             Text [ dutch ] = "Berekent de variantie op basis van de volledige populatie." ;
-            Text [ spanish ] = "Calcula la varianza de la poblacin total." ;
+            Text [ spanish ] = "Calcula la variancia de la poblacin total." ;
             Text [ english_us ] = "Calculates variance based on the entire population." ;
             Text[ chinese_simplified ] = "计算抽样总体的方差。";
-            Text[ russian ] = " ,    .";
+            Text[ russian ] = " ,    .";
             Text[ polish ] = "Oblicza wariancj, bazujc na populacji.";
             Text[ japanese ] = "分散を返します。";
             Text[ chinese_traditional ] = "計算抽樣總體的方差。";
@@ -22453,6 +23169,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Poplasyona dayanarak varyans hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Calcula la varincia basada en tota la poblaci.";
+            Text[ thai ] = "คำนวณการแปรผันบนพื้นฐานทั้งประชากร";
         };
         ExtraData =
         {
@@ -22468,26 +23185,27 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Numero " ;
             Text [ portuguese_brazilian ] = "Zahl " ;
             Text [ portuguese ] = "Nmero " ;
-            Text [ finnish ] = "luku" ;
+            Text [ finnish ] = "luku " ;
             Text [ danish ] = "Tal " ;
             Text [ french ] = "Nombre  " ;
             Text [ swedish ] = "tal  " ;
-            Text [ dutch ] = "Getal  " ;
+            Text [ dutch ] = "Getal" ;
             Text [ spanish ] = "nmero " ;
             Text [ english_us ] = "number " ;
             Text[ chinese_simplified ] = "number ";
-            Text[ russian ] = "  ";
+            Text[ russian ] = " ";
             Text[ polish ] = "Liczba  ";
             Text[ japanese ] = "数値 ";
             Text[ chinese_traditional ] = "number ";
             Text[ arabic ] = " ";
-            Text[ dutch ] = "Getal  ";
+            Text[ dutch ] = "Getal";
             Text[ chinese_simplified ] = "number ";
             Text[ greek ] = " ";
             Text[ korean ] = "값";
             Text[ turkish ] = "Say ";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "nombre ";
+            Text[ thai ] = "ตัวเลข ";
         };
         String 3 // Description of Parameter 1
         {
@@ -22507,7 +23225,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Nmero 1; nmero 2;...son de 1 a 30 argumentos numricos que se corresponden con una poblacin." ;
             Text [ english_us ] = "Number 1, number 2, ... are 1 to 30 numerical arguments which represent a population." ;
             Text[ chinese_simplified ] = "数字1;数字2;是1至30个表示一个抽样的数字元素。";
-            Text[ russian ] = "1, 2, ...  1  30  ,   .";
+            Text[ russian ] = "1, 2, ...  1  30  ,  .";
             Text[ polish ] = "Od 1 do 30 numerycznych argumentw, ktre odpowiadaj populacji.";
             Text[ japanese ] = "数値 1;数値 2;...は母集団の30個までの標本データ。";
             Text[ chinese_traditional ] = "數字 1﹔數字 2﹔是 1 至 30 個表示一個抽樣的數字元素。";
@@ -22519,6 +23237,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Say 1; say 2;... Bir poplasyonu temsil eden 1 - 30 aras nmerik deikendir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre 1, nombre 2, ... sn entre 1 i 30 arguments numrics que representen una poblaci.";
+            Text[ thai ] = "เลข 1, เลข 2, ... อยู่ในอาร์กิวเม้นท์แบบตัวเลข 1 ถึง 30 ที่แสดงถึงประชากร";
         };
     };
      // -=*# Resource for function VARIANZENA #*=-
@@ -22535,10 +23254,10 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ french ] = "Calcule la variance d'une population  partir de la population entire. La valeur 0 est attribue au texte.";
             Text[ swedish ] = "Berknar variansen baserat p populationen. Text vrderas till noll.";
             Text[ dutch ] = "Berekent de variantie op basis van een steekproef onder een populatie. Aan tekst wordt de waarde 0 toegewezen.";
-            Text[ spanish ] = "Calcula la varianza a partir de la poblacin total. El texto se valorar como cero.";
+            Text[ spanish ] = "Calcula la variancia a partir de la poblacin total. El texto se valorar como cero.";
             Text[ english_us ] = "Returns the variance based on the entire population. Text is evaluated as zero.";
             Text[ chinese_simplified ] = "计算抽样总体的方差。文字被定值为零。";
-            Text[ russian ] = "    .   0.";
+            Text[ russian ] = " ,    .    0. ";
             Text[ polish ] = "Oblicza wariancj, bazujc na populacji. Warto funkcji dla tekstu jest rwna zero.";
             Text[ japanese ] = "分散を返します。文字列データは 0 とみなされます。";
             Text[ chinese_traditional ] = "計算抽樣總體的方差。文字被定值為零。";
@@ -22551,6 +23270,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna la varincia basada en tota la poblaci. El text s'avalua com a zero.";
             Text[ finnish ] = "Palauttaa koko populaatioon perustuvan varianssin. Tekstin arvoksi lasketaan nolla.";
+            Text[ thai ] = "ส่งกลับการแปรผันบนพื้นฐานของทั้งประชากร ข้อความถูกประเมินค่าเป็นศูนย์";
         };
         ExtraData =
         {
@@ -22568,23 +23288,24 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ danish ] = "Vrdi ";
             Text[ french ] = "Valeur  ";
             Text[ swedish ] = "vrde ";
-            Text[ dutch ] = "waarde  ";
+            Text[ dutch ] = "waarde";
             Text[ spanish ] = "Valor ";
             Text[ english_us ] = "value ";
             Text[ chinese_simplified ] = "value ";
-            Text[ russian ] = "  ";
+            Text[ russian ] = " ";
             Text[ polish ] = "Warto ";
             Text[ japanese ] = "値 ";
             Text[ chinese_traditional ] = "value ";
             Text[ arabic ] = " ";
-            Text[ dutch ] = "waarde  ";
+            Text[ dutch ] = "waarde";
             Text[ chinese_simplified ] = "value ";
             Text[ greek ] = " ";
             Text[ korean ] = "값";
             Text[ turkish ] = "Deer ";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Valor ";
-            Text[ finnish ] = "arvo";
+            Text[ catalan ] = "valor ";
+            Text[ finnish ] = "arvo ";
+            Text[ thai ] = "ค่า ";
         };
         String 3 // Description of Parameter 1
         {
@@ -22600,7 +23321,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ spanish ] = "Valor 1; Valor 2;... son entre 1 y 30 argumentos que se corresponden con una poblacin.";
             Text[ english_us ] = "Value 1; value 2;... are 1 to 30 arguments representing a population.";
             Text[ chinese_simplified ] = "数值1;数值2;... 是 1 至 30个表示抽样总体的数字元素。";
-            Text[ russian ] = " 1,  2, ... 1  30  ,   .";
+            Text[ russian ] = " 1,  2, ... 1  30  ,  .";
             Text[ polish ] = "Od 1 do 30 argumentw, ktre reprezentuj populacj.";
             Text[ japanese ] = "数値 1;数値 2;...は母集団全体に対応する1から30個までの引数。";
             Text[ chinese_traditional ] = "數值1﹔數值2﹔... 是 1 至 30個表示抽樣總體的數字元素。";
@@ -22613,6 +23334,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor 1; valor 2;... sn entre 1 i 30 arguments que representen una poblaci.";
             Text[ finnish ] = "Arvo 1; arvo 2;... ovat 1 - 30 argumenttia, jotka esittvt populaatiota.";
+            Text[ thai ] = "ค่า 1; ค่า 2;... อยู่ในอาร์กิวเม้นท์ 1 ถึง 30 แสดงถึงประชากร";
         };
     };
      // -=*# Resource for function STABW #*=-
@@ -22646,6 +23368,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "rnee dayanarak standart sapmay hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Calcula la desviaci estndard basada en una mostra.";
+            Text[ thai ] = "คำนวณส่วนเบี่ยงเบนมาตรฐานบนพื้นฐานกลุ่มตัวอย่าง";
         };
         ExtraData =
         {
@@ -22661,26 +23384,27 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Numero " ;
             Text [ portuguese_brazilian ] = "Zahl " ;
             Text [ portuguese ] = "Nmero " ;
-            Text [ finnish ] = "luku" ;
+            Text [ finnish ] = "luku " ;
             Text [ danish ] = "Tal " ;
             Text [ french ] = "Nombre  " ;
             Text [ swedish ] = "tal  " ;
-            Text [ dutch ] = "Getal  " ;
+            Text [ dutch ] = "Getal" ;
             Text [ spanish ] = "nmero " ;
             Text [ english_us ] = "number " ;
             Text[ chinese_simplified ] = "number ";
-            Text[ russian ] = "  ";
+            Text[ russian ] = " ";
             Text[ polish ] = "Liczba  ";
             Text[ japanese ] = "数値 ";
             Text[ chinese_traditional ] = "number ";
             Text[ arabic ] = " ";
-            Text[ dutch ] = "Getal  ";
+            Text[ dutch ] = "Getal";
             Text[ chinese_simplified ] = "number ";
             Text[ greek ] = " ";
             Text[ korean ] = "값";
             Text[ turkish ] = "Say ";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "nombre ";
+            Text[ thai ] = "ตัวเลข ";
         };
         String 3 // Description of Parameter 1
         {
@@ -22698,7 +23422,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Nmero 1; nmero 2;...son de 1 a 30 argumentos numricos que corresponden a una muestra de poblacin." ;
             Text [ english_us ] = "Number 1, number 2, ... are 1 to 30 numerical arguments which portray a sample of a population." ;
             Text[ chinese_simplified ] = "数字 1;数字 2;是 1 至 30 个表示抽样的数字元素。";
-            Text[ russian ] = "1, 2, ...  1  30  ,     .";
+            Text[ russian ] = "1, 2, ...  1  30  ,  .";
             Text[ polish ] = "Od 1 do 30 numerycznych argumentw, ktre przedstawiaj prbk, odpowiadajc populacji.";
             Text[ japanese ] = "数値 1;数値 2;...は母集団の30個までの標本データ。";
             Text[ chinese_traditional ] = "數字 1﹔數字 2﹔是 1 至 30 個表示抽樣的數字元素。";
@@ -22710,6 +23434,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Say 1; say 2;... Poplasyondan alnm bir rnei temsil eden 1 - 30 aras nmerik deikendir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre 1, nombre 2, ... sn entre 1 i 30 arguments numrics que representen una mostra d'una poblaci.";
+            Text[ thai ] = "เลข 1, เลข 2, ... อยู่ในอาร์กิวเม้นท์แบบตัวเลข 1 ถึง 30  ที่อธิบายกลุ่มตัวอย่างของประชากร";
         };
     };
      // -=*# Resource for function STABWA #*=-
@@ -22742,6 +23467,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna la desviaci estndard basada en una mostra. El text s'avalua com a zero.";
             Text[ finnish ] = "Palauttaa otokseen perustuvan keskihajonnan. Tekstin arvoksi lasketaan nolla.";
+            Text[ thai ] = "ส่งกลับส่วนเบี่ยงเบนมาตรฐานบนพื้นฐานกลุ่มตัวอย่าง ข้อความถูกประเมินค่าเป็นศูนย์";
         };
         ExtraData =
         {
@@ -22759,23 +23485,24 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ danish ] = "Vrdi ";
             Text[ french ] = "Valeur  ";
             Text[ swedish ] = "vrde  ";
-            Text[ dutch ] = "waarde  ";
+            Text[ dutch ] = "waarde";
             Text[ spanish ] = "Valor ";
             Text[ english_us ] = "value ";
             Text[ chinese_simplified ] = "value ";
-            Text[ russian ] = "  ";
+            Text[ russian ] = " ";
             Text[ polish ] = "Warto  ";
             Text[ japanese ] = "値 ";
             Text[ chinese_traditional ] = "value ";
             Text[ arabic ] = " ";
-            Text[ dutch ] = "waarde  ";
+            Text[ dutch ] = "waarde";
             Text[ chinese_simplified ] = "value ";
             Text[ greek ] = " ";
             Text[ korean ] = "값 ";
             Text[ turkish ] = "Deer ";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Valor ";
-            Text[ finnish ] = "arvo";
+            Text[ catalan ] = "valor ";
+            Text[ finnish ] = "arvo ";
+            Text[ thai ] = "ค่า ";
         };
         String 3 // Description of Parameter 1
         {
@@ -22791,7 +23518,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ spanish ] = "Valor 1; Valor 2;... son entre 1 y 30 argumentos que se corresponden con una muestra de poblacin.";
             Text[ english_us ] = "Value 1; value 2;.. .are 1 to 30 arguments representing a sample taken from a basic total population.";
             Text[ chinese_simplified ] = "数值1;数值2;...是1至30个表示一个抽样的数值。";
-            Text[ russian ] = " 1 , 2,...  1  30  ,     .";
+            Text[ russian ] = " 1 , 2,...  1  30  ,  ,    .";
             Text[ polish ] = "Od 1 do 30 argumentw, ktre odpowiadaj prbce populacji.";
             Text[ japanese ] = "値 1;値 2;...は母集団の30個までの標本データ。";
             Text[ chinese_traditional ] = "數值1﹔數值2﹔...是 1 至 30 個表示一個抽樣的數值。";
@@ -22803,7 +23530,8 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Deer 1; Deer 2;... Bir poplasyondan alnan bir rnei temsil eden 1 - 30 aras deikendir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor 1; valor 2;... sn entre 1 i 30 arguments que representen una mostra presa d'una poblaci total bsica.";
-            Text[ finnish ] = "Arvo 1; arvo 2;... ovat 1 - 30 argumenttia, jotka esittvt peruskokonaispopulaatiosta otettua otosta.";
+            Text[ finnish ] = "Arvo 1; arvo 2;.. .ovat 1 - 30 argumenttia, jotka esittvt peruskokonaispopulaatiosta otettua otosta.";
+            Text[ thai ] = "ค่า 1; ค่า 2;.. .อยู่ในอาร์กิวเม้นท์ 1 ถึง 30 แสดงถึงกลุ่มตัวอย่างที่เอาออกจากผลรวมพื้นฐานของประชากร";
         };
     };
      // -=*# Resource for function STABWN #*=-
@@ -22825,7 +23553,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Calcula la desviacin predeterminada de la poblacin total determinada por los argumentos." ;
             Text [ english_us ] = "Calculates the standard deviation based on the entire population." ;
             Text[ chinese_simplified ] = "计算一个样本总体的标准偏差。";
-            Text[ russian ] = "  ,    .";
+            Text[ russian ] = "  ,    .";
             Text[ polish ] = "Oblicza odchylenie standardowe, bazujc na populacji.";
             Text[ japanese ] = "引数を母集団全体であると見なして、母集団の標準偏差を返します。";
             Text[ chinese_traditional ] = "計算一個樣本總體的標準偏差。";
@@ -22837,6 +23565,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Poplasyona dayanarak standart sapmay hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Calcula la desviaci estndard basada en tota la poblaci.";
+            Text[ thai ] = "คำนวณส่วนเบี่ยงเบนมาตรฐานบนพื้นฐานทั้งประชากร";
         };
         ExtraData =
         {
@@ -22852,26 +23581,27 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Numero " ;
             Text [ portuguese_brazilian ] = "Zahl " ;
             Text [ portuguese ] = "Nmero " ;
-            Text [ finnish ] = "luku" ;
+            Text [ finnish ] = "luku " ;
             Text [ danish ] = "Tal " ;
             Text [ french ] = "Nombre  " ;
             Text [ swedish ] = "tal  " ;
-            Text [ dutch ] = "Getal  " ;
+            Text [ dutch ] = "Getal" ;
             Text [ spanish ] = "nmero " ;
             Text [ english_us ] = "number " ;
             Text[ chinese_simplified ] = "number ";
-            Text[ russian ] = "  ";
+            Text[ russian ] = " ";
             Text[ polish ] = "Liczba  ";
             Text[ japanese ] = "数値 ";
             Text[ chinese_traditional ] = "number ";
             Text[ arabic ] = " ";
-            Text[ dutch ] = "Getal  ";
+            Text[ dutch ] = "Getal";
             Text[ chinese_simplified ] = "number ";
             Text[ greek ] = " ";
             Text[ korean ] = "값";
             Text[ turkish ] = "Say ";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "nombre ";
+            Text[ thai ] = "ตัวเลข ";
         };
         String 3 // Description of Parameter 1
         {
@@ -22891,7 +23621,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Nmero 1; nmero 2;...son de 1 a 30 argumentos numricos que corresponden a la poblacin." ;
             Text [ english_us ] = "Number 1, number 2, ... are 1 to 30 numerical arguments which portray a sample of a population." ;
             Text[ chinese_simplified ] = "数字1;数字2;是1到30个表示和样本总体相对应的数字元素。";
-            Text[ russian ] = "1, 2, ...  1  30  ,   .";
+            Text[ russian ] = "1, 2, ...  1  30  ,  .";
             Text[ polish ] = "Od 1 do 30 numerycznych argumentw, reprezentujcych populacj.";
             Text[ japanese ] = "数値 1;数値 2;...は母集団全体に対応する1から30個までの引数。";
             Text[ chinese_traditional ] = "數字 1﹔數字 2﹔是1 到 30 個表示和樣本總體相對應的數字元素。";
@@ -22903,6 +23633,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Say 1; say 2;... Poplasyonu temsil eden 1 - 30 aras nmerik deikendir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre 1, nombre 2, ... sn entre 1 i 30 arguments numrics que representen una mostra d'una poblaci.";
+            Text[ thai ] = "เลข 1, เลข 2, ... อยู่ในอาร์กิวเม้นท์แบบตัวเลข 1 ถึง 30  ที่อธิบายกลุ่มตัวอย่างของประชากร";
         };
     };
      // -=*# Resource for function STABWNA #*=-
@@ -22922,7 +23653,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ spanish ] = "Calcula la desviacin predeterminada a partir de la poblacin total. El texto se valorar como cero.";
             Text[ english_us ] = "Returns the standard deviation based on the entire population. Text is evaluated as zero.";
             Text[ chinese_simplified ] = "估算一个抽样的标准偏差。文字当作零。";
-            Text[ russian ] = "  ,    .    0.";
+            Text[ russian ] = "  ,    .    0.";
             Text[ polish ] = "Oblicza odchylenie standardowe, bazujc na populacji. Warto funkcji dla tekstu jest rwna zero.";
             Text[ japanese ] = "引数を母集団全体であると見なして、母集団の標準偏差を返します。文字列はゼロと見なします。";
             Text[ chinese_traditional ] = "估算一個抽樣的標準偏差。文字當作零。";
@@ -22935,6 +23666,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna la desviaci estndard basada en tota la poblaci. El text s'avalua com a zero.";
             Text[ finnish ] = "Palauttaa koko populaatioon perustuvan keskihajonnan. Tekstin arvoksi lasketaan nolla.";
+            Text[ thai ] = "ส่งกลับส่วนเบี่ยงเบนมาตรฐานบนพื้นฐานทั้งประชากร ข้อความถูกประเมินค่าเป็นศูนย์";
         };
         ExtraData =
         {
@@ -22952,23 +23684,24 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ danish ] = "Vrdi ";
             Text[ french ] = "Valeur  ";
             Text[ swedish ] = "vrde  ";
-            Text[ dutch ] = "waarde  ";
+            Text[ dutch ] = "waarde";
             Text[ spanish ] = "Valor ";
             Text[ english_us ] = "value ";
             Text[ chinese_simplified ] = "value ";
-            Text[ russian ] = "  ";
+            Text[ russian ] = " ";
             Text[ polish ] = "Warto  ";
             Text[ japanese ] = "数値 ";
             Text[ chinese_traditional ] = "value ";
             Text[ arabic ] = " ";
-            Text[ dutch ] = "waarde  ";
+            Text[ dutch ] = "waarde";
             Text[ chinese_simplified ] = "value ";
             Text[ greek ] = " ";
             Text[ korean ] = "값 ";
             Text[ turkish ] = "Deer ";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Valor ";
-            Text[ finnish ] = "arvo";
+            Text[ catalan ] = "valor ";
+            Text[ finnish ] = "arvo ";
+            Text[ thai ] = "ค่า ";
         };
         String 3 // Description of Parameter 1
         {
@@ -22984,7 +23717,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ spanish ] = "Valor 1; Valor 2;... son entre 1 y 30 argumentos que se corresponden con una poblacin.";
             Text[ english_us ] = "Value 1; value 2;... are 1 to 30 arguments corresponding to a population.";
             Text[ chinese_simplified ] = "数值1;数值2;...是 1 至 30个表示样本总体的数值。";
-            Text[ russian ] = " 1,  2, ... 1  30  ,   .";
+            Text[ russian ] = " 1,  2, ... 1  30  ,  .";
             Text[ polish ] = "Od 1 do 30 argumentw, ktre reprezentuj populacj.";
             Text[ japanese ] = "数値 1;数値 2;...は母集団全体に対応する1から30個までの引数。";
             Text[ chinese_traditional ] = "數值1﹔數值2﹔...是 1 至 30個表示樣本總體的數值。";
@@ -22997,6 +23730,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor 1; valor 2;... sn entre 1 i 30 arguments que corresponen a una poblaci.";
             Text[ finnish ] = "Arvo 1; arvo 2;... ovat 1 - 30 argumenttia, jotka vastaavat populaatiota.";
+            Text[ thai ] = "ค่า 1; ค่า 2;... อยู่ในอาร์กิวเม้นท์ 1 ถึง 30 สอดคล้องกับประชากร";
         };
     };
      // -=*# Resource for function MITTELWERT #*=-
@@ -23018,7 +23752,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve el promedio de los argumentos." ;
             Text [ english_us ] = "Returns the average of a sample." ;
             Text[ chinese_simplified ] = "一次抽样的平均值。";
-            Text[ russian ] = "  ()  .";
+            Text[ russian ] = "   .";
             Text[ polish ] = "Oblicza redni argumentu w prbce.";
             Text[ japanese ] = "データの算術平均値を返します。";
             Text[ chinese_traditional ] = "一次抽樣的平均值。";
@@ -23026,10 +23760,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Berekent de gemiddelde waarde van een steekproef";
             Text[ chinese_simplified ] = "一次抽样的平均值。";
             Text[ greek ] = "     .";
-            Text[ korean ] = "표본의 평균값을 계산합니다";
+            Text[ korean ] = "표본의 평균값을 계산합니다.";
             Text[ turkish ] = "rnein ortalamasn hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna la mitjana d'una mostra.";
+            Text[ thai ] = "ส่งกลับค่าเฉลี่ยของกลุ่มตัวอย่าง";
         };
         ExtraData =
         {
@@ -23045,26 +23780,27 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Numero " ;
             Text [ portuguese_brazilian ] = "Zahl " ;
             Text [ portuguese ] = "Nmero " ;
-            Text [ finnish ] = "luku" ;
+            Text [ finnish ] = "luku " ;
             Text [ danish ] = "Tal " ;
             Text [ french ] = "Nombre  " ;
             Text [ swedish ] = "tal  " ;
-            Text [ dutch ] = "Getal  " ;
+            Text [ dutch ] = "Getal" ;
             Text [ spanish ] = "nmero " ;
             Text [ english_us ] = "number " ;
             Text[ chinese_simplified ] = "number ";
-            Text[ russian ] = "  ";
+            Text[ russian ] = " ";
             Text[ polish ] = "Liczba  ";
             Text[ japanese ] = "数値 ";
             Text[ chinese_traditional ] = "number ";
             Text[ arabic ] = " ";
-            Text[ dutch ] = "Getal  ";
+            Text[ dutch ] = "Getal";
             Text[ chinese_simplified ] = "number ";
             Text[ greek ] = " ";
             Text[ korean ] = "값";
             Text[ turkish ] = "Say ";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "nombre ";
+            Text[ thai ] = "ตัวเลข ";
         };
         String 3 // Description of Parameter 1
         {
@@ -23082,7 +23818,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Nmero 1; Nmero2; ...son de 1 a 30 argumentos numricos de una muestra cuyo promedio se desea obtener." ;
             Text [ english_us ] = "Number 1, number 2;...are 1 to 30 numeric arguments representing a population sample." ;
             Text[ chinese_simplified ] = "数字1; 数字2;... 是 1 至 30个数字自变量, 它们表示\n要计算其平均值的一个抽样。";
-            Text[ russian ] = " 1;  2;...  1  30 ,     ,    .";
+            Text[ russian ] = " 1;  2;...  1  30 ,      .";
             Text[ polish ] = "Od 1 do 30 numerycznych argumentw, ktre przedstawiaj prbk, odpowiadajc populacji.";
             Text[ japanese ] = "数値 1;数値 2;...は算術平均値を求める30個までの引数。";
             Text[ chinese_traditional ] = "數字1; 數字2;... 是 1 至 30個數字自變量, 它們表示要計算其平均值的一個抽樣。";
@@ -23094,6 +23830,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Say 1; say 2;... Bir poplasyondan alnm rnei temsil eden 1 - 30 aras nmerik deikendir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre 1, nombre 2;... sn entre 1 i 30 arguments numrics que representen una mostra d'una poblaci.";
+            Text[ thai ] = "เลข 1, เลข 2;...อยู่ในอาร์กิวเม้นท์แบบตัวเลข 1 ถึง 30 แสดงถึงกลุ่มตัวอย่างของประชากร";
         };
     };
      // -=*# Resource for function MITTELWERTA #*=-
@@ -23113,7 +23850,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ spanish ] = "Calcula la media de una muestra. El texto se valorar como cero.";
             Text[ english_us ] = "Returns the average value for a sample. Text is evaluated as zero.";
             Text[ chinese_simplified ] = "计算一个抽样的平均值。文字当作零。";
-            Text[ russian ] = "   .    .";
+            Text[ russian ] = "   .    0.";
             Text[ polish ] = "Wyznacza redni prbki. Warto funkcji dla tekstu jest rwna zero.";
             Text[ japanese ] = "データの算術平均値を返します。文字列は 0 と見なされます。";
             Text[ chinese_traditional ] = "計算一個抽樣的平均值。文字當作零。";
@@ -23121,11 +23858,12 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Berekent de gemiddelde waarde van een steekproef. Aan tekst wordt de waarde 0 toegewezen.";
             Text[ chinese_simplified ] = "计算一个抽样的平均值。文字当作零。";
             Text[ greek ] = "     .     .";
-            Text[ korean ] = "표본의 평균 값을 계산. 텍스트는 0으로 평가됩니다.";
+            Text[ korean ] = "표본의 평균값을 계산. 텍스트는 0으로 평가됩니다.";
             Text[ turkish ] = "Bir rnein ortalamasn verir. Metin sfr olarak deerlendirilir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna el valor mitj d'una mostra. El text s'avalua com a zero.";
             Text[ finnish ] = "Palauttaa otoksen keskiarvon. Tekstin arvoksi lasketaan nolla.";
+            Text[ thai ] = "ส่งกลับค่าเฉลี่ยสำหรับกลุ่มตัวอย่าง ข้อความถูกประเมินค่าเป็นศูนย์";
         };
         ExtraData =
         {
@@ -23143,23 +23881,24 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ danish ] = "Vrdi ";
             Text[ french ] = "Valeur  ";
             Text[ swedish ] = "vrde  ";
-            Text[ dutch ] = "waarde  ";
+            Text[ dutch ] = "waarde";
             Text[ spanish ] = "Valor ";
             Text[ english_us ] = "value ";
             Text[ chinese_simplified ] = "value ";
-            Text[ russian ] = "  ";
+            Text[ russian ] = " ";
             Text[ polish ] = "Warto  ";
             Text[ japanese ] = "値 ";
             Text[ chinese_traditional ] = "value ";
             Text[ arabic ] = " ";
-            Text[ dutch ] = "waarde  ";
+            Text[ dutch ] = "waarde";
             Text[ chinese_simplified ] = "value ";
             Text[ greek ] = " ";
             Text[ korean ] = "값";
             Text[ turkish ] = "Deer ";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Valor ";
-            Text[ finnish ] = "arvo";
+            Text[ catalan ] = "valor ";
+            Text[ finnish ] = "arvo ";
+            Text[ thai ] = "ค่า ";
         };
         String 3 // Description of Parameter 1
         {
@@ -23176,7 +23915,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ english_us ] = "Value 1; value 2;.. .are 1 to 30 arguments representing a sample taken from a basic total population.";
             Text[ chinese_simplified ] = "数值1;数值2;...是1至30个要计算其抽样平均值的元素。";
             Text[ language_user1 ] = " ";
-            Text[ russian ] = " 1 , 2,...  1  30  ,     .";
+            Text[ russian ] = " 1 , 2,...  1  30  ,  ,    .";
             Text[ polish ] = "Od 1 do 30 argumentw, ktre reprezentuj prbk.";
             Text[ japanese ] = "値 1;値 2;...は算術平均値を求める30個までの引数。";
             Text[ chinese_traditional ] = "數值1﹔數值2﹔...是 1 至 30個要計算其抽樣平均值的元素。";
@@ -23187,7 +23926,8 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ korean ] = "값1; 값2;...는 모집단에서 추출한 표본을 나타내는 1에서 30까지의 독립 변수입니다.";
             Text[ turkish ] = "Deer 1; Deer 2;... Bir poplasyondan alnan bir rnei temsil eden 1 - 30 aras deikendir.";
             Text[ catalan ] = "Valor 1; valor 2;... sn entre 1 i 30 arguments que representen una mostra presa d'una poblaci total bsica.";
-            Text[ finnish ] = "Arvo 1; arvo 2;... ovat 1 - 30 argumenttia, jotka esittvt peruskokonaispopulaatiosta otettua otosta.";
+            Text[ finnish ] = "Arvo 1; arvo 2;.. .ovat 1 - 30 argumenttia, jotka esittvt peruskokonaispopulaatiosta otettua otosta.";
+            Text[ thai ] = "ค่า 1; ค่า 2;.. .อยู่ในอาร์กิวเม้นท์ 1 ถึง 30 แสดงถึงตัวอย่างที่เอาออกจากผลรวมพื้นฐานของประชากร";
         };
     };
      // -=*# Resource for function SUMQUADABW #*=-
@@ -23201,7 +23941,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Calcola la somma dei quadrati delle deviazioni della media relativa ad un esempio." ;
             Text [ portuguese_brazilian ] = "Berechnet die Summe quadratischen Abweichung einer Stichprobe vom Mittelwert." ;
             Text [ portuguese ] = "Devolve a soma dos quadrados dos desvios em relao a um dado exemplo." ;
-            Text [ finnish ] = "Palauttaa vliarvo-otoksen poikkeamien neliiden summan." ;
+            Text [ finnish ] = "Palauttaa otoksen keskiarvosta poikkeamien neliiden summan." ;
             Text [ danish ] = "Beregner summen af datapunkternes kvadrerede afvigelser fra middelvrdien." ;
             Text [ french ] = "Renvoie la somme des carts carrs d'un chantillon de la moyenne." ;
             Text [ swedish ] = "Berknar summan av den kvadratiska avvikelsen  frn medelvrdet hos ett stickprov." ;
@@ -23217,10 +23957,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Berekent de som van de deviaties in het kwadraat in een steekproef.";
             Text[ chinese_simplified ] = "计算抽样与平均值的偏差的平方和。";
             Text[ greek ] = "            .";
-            Text[ korean ] = "평균값의 표본의 제곱 편차의 합을 계산합니다";
+            Text[ korean ] = "평균값의 표본의 제곱 편차의 합을 계산합니다.";
             Text[ turkish ] = "rnein, ortalamadan sapma deeri karesinin toplamn hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna la suma dels quadrats de les desviacions d'una mostra des del valor mitj.";
+            Text[ thai ] = "ส่งกลับผลรวมของกำลังสองของการเบี่ยงเบนของกลุ่มตัวอย่างจากค่าเฉลี่ย";
         };
         ExtraData =
         {
@@ -23236,26 +23977,27 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Numero " ;
             Text [ portuguese_brazilian ] = "Zahl " ;
             Text [ portuguese ] = "Nmero " ;
-            Text [ finnish ] = "luku" ;
+            Text [ finnish ] = "luku " ;
             Text [ danish ] = "Tal " ;
             Text [ french ] = "Nombre  " ;
             Text [ swedish ] = "tal  " ;
-            Text [ dutch ] = "Getal  " ;
+            Text [ dutch ] = "Getal" ;
             Text [ spanish ] = "nmero " ;
             Text [ english_us ] = "number " ;
             Text[ chinese_simplified ] = "number ";
-            Text[ russian ] = "  ";
+            Text[ russian ] = " ";
             Text[ polish ] = "Liczba ";
             Text[ japanese ] = "数値 ";
             Text[ chinese_traditional ] = "number ";
             Text[ arabic ] = " ";
-            Text[ dutch ] = "Getal  ";
+            Text[ dutch ] = "Getal";
             Text[ chinese_simplified ] = "number ";
             Text[ greek ] = " ";
             Text[ korean ] = "값";
             Text[ turkish ] = "Say ";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "nombre ";
+            Text[ thai ] = "ตัวเลข ";
         };
         String 3 // Description of Parameter 1
         {
@@ -23273,7 +24015,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Nmero 1; nmero 2;...son de 1 a 30 argumentos numricos cuya suma de las desviaciones cuadradas se desea calcular." ;
             Text [ english_us ] = "Number 1, number 2, ... are 1 to 30 numerical arguments which portray a sample." ;
             Text[ chinese_simplified ] = "数字1; 数字 2;... 是 1 至 30 个表示抽样的数字元素。";
-            Text[ russian ] = " 1;  2;...  1  30  ,      .";
+            Text[ russian ] = " 1;  2;...  1  30  ,  .";
             Text[ polish ] = "Od 1 do 30 numerycznych argumentw reprezentujcych prbk.";
             Text[ japanese ] = "数 1;数値 2;...は偏差の平方和を求める1から30個までの引数。";
             Text[ chinese_traditional ] = "數字1; 數字 2;... 是 1 至 30 個表示抽樣的數字元素。";
@@ -23285,6 +24027,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Say 1; say 2;... Bir rnei temsil eden 1- 30 aras nmerik deikendir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre 1, nombre 2, ... sn entre 1 i 30 arguments numrics que representen una mostra.";
+            Text[ thai ] = "เลข 1, เลข 2, ... อยู่ในอาร์กิวเม้นท์แบบตัวเลข 1 ถึง 30  ที่อธิบายกลุ่มตัวอย่าง";
         };
     };
      // -=*# Resource for function MITTELABW #*=-
@@ -23306,7 +24049,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve el promedio de las desviaciones absolutas de la media de los puntos de datos." ;
             Text [ english_us ] = "Returns the average of the absolute deviations of a sample from the mean." ;
             Text[ chinese_simplified ] = "计算一个抽样与平均值的绝对平均偏差。";
-            Text[ russian ] = "        .";
+            Text[ russian ] = "    .     .";
             Text[ polish ] = "Oblicza odchylenie rednie (rednia z odchyle bezwzgldnych) punktw danych od ich wartoci redniej.";
             Text[ japanese ] = "データの平均偏差を返します。";
             Text[ chinese_traditional ] = "計算一個抽樣與平均值的絕對平均偏差。";
@@ -23314,10 +24057,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Berekent de gemiddelde absolute deviatie van een steekproef ten opzichte van de gemiddelde waarde.";
             Text[ chinese_simplified ] = "计算一个抽样与平均值的绝对平均偏差。";
             Text[ greek ] = "          .";
-            Text[ korean ] = "평균값으로부터 샘플의 평균 절대 편차를 계산합니다";
+            Text[ korean ] = "평균값으로부터 샘플의 평균 절대 편차를 계산합니다.";
             Text[ turkish ] = "rnein, ortalama deerden mutlak sapmasnn ortalamasn hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna la mitjana de les desviacions absolutes d'una mostra des de la mitja.";
+            Text[ thai ] = "ส่งกลับค่าเฉลี่ยของค่าสัมบูรณ์ของส่วนเบี่ยงเบนของกลุ่มตัวอย่างจากค่าเฉลี่ย";
         };
         ExtraData =
         {
@@ -23333,26 +24077,27 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Numero " ;
             Text [ portuguese_brazilian ] = "Zahl " ;
             Text [ portuguese ] = "Nmero " ;
-            Text [ finnish ] = "luku" ;
+            Text [ finnish ] = "luku " ;
             Text [ danish ] = "Tal " ;
             Text [ french ] = "Nombre  " ;
             Text [ swedish ] = "tal  " ;
-            Text [ dutch ] = "Getal  " ;
+            Text [ dutch ] = "Getal" ;
             Text [ spanish ] = "nmero " ;
             Text [ english_us ] = "number " ;
             Text[ chinese_simplified ] = "number ";
-            Text[ russian ] = "  ";
+            Text[ russian ] = " ";
             Text[ polish ] = "Liczba  ";
             Text[ japanese ] = "数値 ";
             Text[ chinese_traditional ] = "number ";
             Text[ arabic ] = " ";
-            Text[ dutch ] = "Getal  ";
+            Text[ dutch ] = "Getal";
             Text[ chinese_simplified ] = "number ";
             Text[ greek ] = " ";
             Text[ korean ] = "값 ";
             Text[ turkish ] = "Say ";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "nombre ";
+            Text[ thai ] = "ตัวเลข ";
         };
         String 3 // Description of Parameter 1
         {
@@ -23366,22 +24111,23 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ danish ] = "Tal 1; tal 2; ... er 1 til 30 numeriske argumenter, som udgr en stikprve." ;
             Text [ french ] = "Nombre 1, nombre 2, ... sont de 1  30 arguments numriques reprsentant un chantillon." ;
             Text [ swedish ] = "tal 1; tal 2;... r 1 till 30 numeriska argument som utgr ett stickprov." ;
-            Text [ dutch ] = "Getal 1; Getal 2;... zijn maximaal 30 numerieke argumenten die een steekproef weegeven." ;
+            Text [ dutch ] = "Getal 1; Getal 2;... zijn maximaal 30 numerieke argumenten die een steekproef weergeven." ;
             Text [ spanish ] = "Nmero 1; Nmero2;...son de 1 a 30 argumentos numricos que componen una muestra." ;
             Text [ english_us ] = "Number 1, number 2;...are 1 to 30 numerical arguments representing a sample." ;
             Text[ chinese_simplified ] = "数字1; 数字2;... 是 1 至 30 个数字自变量, 它们表示一个抽样。";
-            Text[ russian ] = " 1;  2;...  1  30  ,      .";
+            Text[ russian ] = " 1;  2;...  1  30  ,  .";
             Text[ polish ] = "Od 1 do 30 numerycznych argumentw, reprezentujcych prbk.";
             Text[ japanese ] = "数値 1;数値 2;...は平均偏差を求める30個までの引数。";
             Text[ chinese_traditional ] = "數字1; 數字2;... 是 1 至 30 個數字自變量, 它們表示一個抽樣。";
             Text[ arabic ] = "Number 1, Number 2;...  1  30    .";
-            Text[ dutch ] = "Getal 1; Getal 2;... zijn maximaal 30 numerieke argumenten die een steekproef weegeven.";
+            Text[ dutch ] = "Getal 1; Getal 2;... zijn maximaal 30 numerieke argumenten die een steekproef weergeven.";
             Text[ chinese_simplified ] = "数字1; 数字2;... 是 1 至 30 个数字自变量, 它们表示一个抽样。";
             Text[ greek ] = " 1, 2, ...  1  30       .";
             Text[ korean ] = "값 1, 값 2;... 는 표본을 나타내는 1에서 30까지의 숫자 독립 변수입니다.";
             Text[ turkish ] = "Say 1; say 2;... Bir rnei temsil eden 1 - 30 aras nmerik deikendir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre 1, nombre 2;...sn entre 1 i 30 arguments numrics que representen una mostra.";
+            Text[ thai ] = "เลข 1, เลข 2;...อยู่ในอาร์กิวเม้นท์แบบตัวเลข 1 ถึง 30 แสดงถึงกลุ่มตัวอย่าง";
         };
     };
      // -=*# Resource for function SCHIEFE #*=-
@@ -23415,6 +24161,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Datmn eriliini hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna el grau d'asimetria d'una distribuci.";
+            Text[ thai ] = "ส่งกลับการลาดเอียงของการแจกแจง";
         };
         ExtraData =
         {
@@ -23430,26 +24177,27 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Numero " ;
             Text [ portuguese_brazilian ] = "Zahl " ;
             Text [ portuguese ] = "Nmero " ;
-            Text [ finnish ] = "luku" ;
+            Text [ finnish ] = "luku " ;
             Text [ danish ] = "Tal " ;
             Text [ french ] = "Nombre  " ;
             Text [ swedish ] = "tal  " ;
-            Text [ dutch ] = "Getal  " ;
+            Text [ dutch ] = "Getal" ;
             Text [ spanish ] = "nmero " ;
             Text [ english_us ] = "number " ;
             Text[ chinese_simplified ] = "number ";
-            Text[ russian ] = "  ";
+            Text[ russian ] = " ";
             Text[ polish ] = "Liczba  ";
             Text[ japanese ] = "数値 ";
             Text[ chinese_traditional ] = "number ";
             Text[ arabic ] = " ";
-            Text[ dutch ] = "Getal  ";
+            Text[ dutch ] = "Getal";
             Text[ chinese_simplified ] = "number ";
             Text[ greek ] = " ";
             Text[ korean ] = "값";
             Text[ turkish ] = "Say ";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "nombre ";
+            Text[ thai ] = "ตัวเลข ";
         };
         String 3 // Description of Parameter 1
         {
@@ -23467,7 +24215,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Nmero 1; nmero 2;...son de 1 a 30 argumentos cuya asimetra desea calcular." ;
             Text [ english_us ] = "Number 1, number 2, ... are 1 to 30 numerical arguments portraying a sample of the distribution." ;
             Text[ chinese_simplified ] = "数字1;数字2;是表示抽样分布的1到30个数字元素。";
-            Text[ russian ] = "1, 2, ...  1  30 ,    .";
+            Text[ russian ] = " 1;  2;...  1  30  ,   .";
             Text[ polish ] = "Od 1 do 30 numerycznych argumentw reprezentujcych prbk rozkadu.";
             Text[ japanese ] = "数値 1;数値 2;...は30個までの分布の標本データ。";
             Text[ chinese_traditional ] = "數字 1﹔數字 2﹔是表示抽樣分佈的 1 到 30 個數字元素。";
@@ -23479,6 +24227,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Say 1; say 2;... Datmn bir rneini temsil eden 1 - 30 aras nmerik deikendir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre 1, nombre 2, ... sn entre 1 i 30 arguments numrics que representen una mostra de la distribuci.";
+            Text[ thai ] = "เลข 1, เลข 2, ... อยู่ในอาร์กิวเม้นท์แบบตัวเลข 1 ถึง 30  อธิบายกลุ่มตัวอย่างของการแจกแจง";
         };
     };
      // -=*# Resource for function KURT #*=-
@@ -23500,7 +24249,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve la curtosis de un conjunto de datos." ;
             Text [ english_us ] = "Returns the kurtosis of a distribution." ;
             Text[ chinese_simplified ] = "计算一个分布的尖锐度。";
-            Text[ russian ] = "   .";
+            Text[ russian ] = "    (   4 ) -  .";
             Text[ polish ] = "Oblicza kurtoz rozkadu.";
             Text[ japanese ] = "引数として指定したデータ分布の尖度を返します。";
             Text[ chinese_traditional ] = "計算一個分佈的尖銳度。";
@@ -23512,6 +24261,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Datmn eriliini (Kurtosis) hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna la curtosi d'una distribuci.";
+            Text[ thai ] = "ส่งกลับความชันของการแจกแจง";
         };
         ExtraData =
         {
@@ -23527,26 +24277,27 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Numero " ;
             Text [ portuguese_brazilian ] = "Zahl " ;
             Text [ portuguese ] = "Nmero " ;
-            Text [ finnish ] = "luku" ;
+            Text [ finnish ] = "luku " ;
             Text [ danish ] = "Tal " ;
             Text [ french ] = "Nombre  " ;
             Text [ swedish ] = "tal   " ;
-            Text [ dutch ] = "Getal  " ;
+            Text [ dutch ] = "Getal" ;
             Text [ spanish ] = "nmero " ;
             Text [ english_us ] = "number " ;
             Text[ chinese_simplified ] = "number ";
-            Text[ russian ] = "  ";
+            Text[ russian ] = "";
             Text[ polish ] = "Liczba  ";
             Text[ japanese ] = "数値 ";
             Text[ chinese_traditional ] = "number ";
             Text[ arabic ] = " ";
-            Text[ dutch ] = "Getal  ";
+            Text[ dutch ] = "Getal";
             Text[ chinese_simplified ] = "number ";
             Text[ greek ] = " ";
             Text[ korean ] = "값";
             Text[ turkish ] = "Say ";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "nombre ";
+            Text[ thai ] = "ตัวเลข ";
         };
         String 3 // Description of Parameter 1
         {
@@ -23564,7 +24315,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Nmero 1; nmero 2;...son de 1 a 30 argumentos cuya curtosis desea calcular." ;
             Text [ english_us ] = "Number 1, number 2, ... are 1 to 30 numerical arguments, representing a sample of the distribution." ;
             Text[ chinese_simplified ] = "数字1; 数字2;... 是 1 至 30个数字元素, 它们表示\n一个抽样的分布。";
-            Text[ russian ] = " 1;  2;...  1  30  ,   ,    .";
+            Text[ russian ] = " 1;  2;...  1  30  ,   .";
             Text[ polish ] = "Od 1 do 30 numerycznych argumentw reprezentujcych prbk rozkadu.";
             Text[ japanese ] = "数値 1;数値 2;...は尖度を計算するための1から30個までの数値。";
             Text[ chinese_traditional ] = "數字1; 數字2;... 是 1 至 30個數字元素, 它們表示一個抽樣的分佈。";
@@ -23576,6 +24327,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Say 1; say 2;... Datmn bir rneini oluturan 1 - 30 aras nmerik deikendir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre 1, nombre 2, ... sn entre 1 i 30 arguments numrics que representen una mostra de la distribuci.";
+            Text[ thai ] = "เลข 1, เลข 2, ... อยู่ในอาร์กิวเม้นท์แบบตัวเลข 1 ถึง 30 , แสดงถึงกลุ่มตัวอย่างของการแจกแจง";
         };
     };
      // -=*# Resource for function GEOMITTEL #*=-
@@ -23597,7 +24349,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve la media geomtrica de una matriz o rea de datos positivos." ;
             Text [ english_us ] = "Returns the geometric mean of a sample." ;
             Text[ chinese_simplified ] = "计算一个抽样的几何平均值。";
-            Text[ russian ] = "   .";
+            Text[ russian ] = "    .";
             Text[ polish ] = "Oblicza redni geometryczn przykadu.";
             Text[ japanese ] = "標本の幾何平均を返します。";
             Text[ chinese_traditional ] = "計算一個抽樣的幾何平均值。";
@@ -23609,6 +24361,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "rnein geometrik ortalamasn hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna la mitja geomtrica d'una mostra.";
+            Text[ thai ] = "ส่งกลับค่าเฉลี่ยทางเรขาคณิตของกลุ่มตัวอย่าง";
         };
         ExtraData =
         {
@@ -23624,26 +24377,27 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Numero " ;
             Text [ portuguese_brazilian ] = "Zahl " ;
             Text [ portuguese ] = "Nmero " ;
-            Text [ finnish ] = "luku" ;
+            Text [ finnish ] = "luku " ;
             Text [ danish ] = "Tal " ;
             Text [ french ] = "Nombre  " ;
             Text [ swedish ] = "tal  " ;
-            Text [ dutch ] = "Getal  " ;
+            Text [ dutch ] = "Getal" ;
             Text [ spanish ] = "nmero " ;
             Text [ english_us ] = "number " ;
             Text[ chinese_simplified ] = "number ";
-            Text[ russian ] = "  ";
+            Text[ russian ] = " ";
             Text[ polish ] = "Liczba  ";
             Text[ japanese ] = "数値 ";
             Text[ chinese_traditional ] = "number ";
             Text[ arabic ] = " ";
-            Text[ dutch ] = "Getal  ";
+            Text[ dutch ] = "Getal";
             Text[ chinese_simplified ] = "number ";
             Text[ greek ] = " ";
             Text[ korean ] = "값";
             Text[ turkish ] = "Say ";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "nombre ";
+            Text[ thai ] = "ตัวเลข ";
         };
         String 3 // Description of Parameter 1
         {
@@ -23661,7 +24415,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Nmero 1; nmero 2;... son de 1 a 30 argumentos cuya media desea calcular." ;
             Text [ english_us ] = "Number 1, number 2, ... are 1 to 30 numerical arguments which portray a sample." ;
             Text[ chinese_simplified ] = "数字 1; 数字 2;... 是 1 至 30 个表示一个抽样的数字参数。";
-            Text[ russian ] = " 1;  2;...  1  30  ,    .";
+            Text[ russian ] = " 1;  2;...  1  30  ,  .";
             Text[ polish ] = "Od 1 do 30 numerycznych argumentw, dla ktrych ma zosta wyznaczona rednia warto geometryczna.";
             Text[ japanese ] = "数値 1;数値 2;...は標本を表す1から30個までの引数。";
             Text[ chinese_traditional ] = "數字 1; 數字 2;... 是 1 至 30表示一個抽樣的數字參數。";
@@ -23673,6 +24427,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Say 1; say 2;... Bir rnei temsil eden 1 - 30 aras nmerik deikendir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre 1, nombre 2, ... sn entre 1 i 30 arguments numrics que representen una mostra.";
+            Text[ thai ] = "เลข 1, เลข 2, ... อยู่ในอาร์กิวเม้นท์แบบตัวเลข 1 ถึง 30  ที่อธิบายกลุ่มตัวอย่าง";
         };
     };
      // -=*# Resource for function HARMITTEL #*=-
@@ -23694,7 +24449,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve la media armnica de un conjunto de datos." ;
             Text [ english_us ] = "Returns the harmonic mean of a sample." ;
             Text[ chinese_simplified ] = "计算一个抽样的调和平均值。";
-            Text[ russian ] = "    .";
+            Text[ russian ] = "   .";
             Text[ polish ] = "Oblicza wyrywczo redni harmoniczn.";
             Text[ japanese ] = "1組の数値の調和平均を返します。";
             Text[ chinese_traditional ] = "計算一個抽樣的調和平均值。";
@@ -23706,6 +24461,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "rnein armonik ortalamasn hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna la mitja harmnica d'una mostra.";
+            Text[ thai ] = "ส่งกลับค่าเฉลี่ยที่ประสานกันของกลุ่มตัวอย่าง";
         };
         ExtraData =
         {
@@ -23721,26 +24477,27 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Numero " ;
             Text [ portuguese_brazilian ] = "Zahl " ;
             Text [ portuguese ] = "Nmero " ;
-            Text [ finnish ] = "luku" ;
+            Text [ finnish ] = "luku " ;
             Text [ danish ] = "Tal " ;
             Text [ french ] = "Nombre  " ;
             Text [ swedish ] = "tal  " ;
-            Text [ dutch ] = "Getal  " ;
+            Text [ dutch ] = "Getal" ;
             Text [ spanish ] = "nmero " ;
             Text [ english_us ] = "number " ;
             Text[ chinese_simplified ] = "number ";
-            Text[ russian ] = "  ";
+            Text[ russian ] = " ";
             Text[ polish ] = "Liczba  ";
             Text[ japanese ] = "数値";
             Text[ chinese_traditional ] = "number ";
             Text[ arabic ] = " ";
-            Text[ dutch ] = "Getal  ";
+            Text[ dutch ] = "Getal";
             Text[ chinese_simplified ] = "number ";
             Text[ greek ] = " ";
             Text[ korean ] = "값";
             Text[ turkish ] = "Say ";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "nombre ";
+            Text[ thai ] = "ตัวเลข ";
         };
         String 3 // Description of Parameter 1
         {
@@ -23758,7 +24515,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Nmero 1; nmero 2;...son de 1 a 30 argumentos numricos cuya media desea calcular." ;
             Text [ english_us ] = "Number 1, number 2, ... are 1 to 30 numerical arguments which portray a sample." ;
             Text[ chinese_simplified ] = "数字 1; 数字 2;... 是 1 至 30 的表示一个抽样的数字元素。";
-            Text[ russian ] = " 1;  2;...  1  30  ,     .";
+            Text[ russian ] = " 1;  2;...  1  30  ,  .";
             Text[ polish ] = "Od 1 do 30 numerycznych argumentw, dla ktrych ma zosta wyznaczona rednia warto geometryczna.";
             Text[ japanese ] = "数値 1;数値 2;...は計算の対象となる1個から30個までの数値。";
             Text[ chinese_traditional ] = "數字 1; 數字 2;... 是 1 至 30 的表示一個抽樣的數字元素。";
@@ -23770,6 +24527,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Say 1; say 2;... Bir rnei temsil eden 1 - 30 aras nmerik deikendir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre 1, nombre 2, ... sn entre 1 i 30 arguments numrics que representen una mostra.";
+            Text[ thai ] = "เลข 1, เลข 2, ... อยู่ในอารืกิวเม้นท์ที่เป็นตัวเลข 1 ถึง 30  ที่อธิบายกลุ่มตัวอย่าง";
         };
     };
      // -=*# Resource for function MODALWERT #*=-
@@ -23792,7 +24550,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve el valor que se repite con ms frecuencia en una matriz o rea de datos." ;
             Text [ english_us ] = "Returns the most common value in a sample." ;
             Text[ chinese_simplified ] = "计算一个抽样中频率最高的数值。";
-            Text[ russian ] = "     .";
+            Text[ russian ] = "    ..";
             Text[ polish ] = "Podaje najczciej wystpujc warto w zbiorze danych.";
             Text[ japanese ] = "データ中の最頻値(モード)を返します。";
             Text[ chinese_traditional ] = "計算一個抽樣中頻率最高的數值。";
@@ -23800,10 +24558,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Berekent de meest voorkomende waarde in een steekproef.";
             Text[ chinese_simplified ] = "计算一个抽样中频率最高的数值。";
             Text[ greek ] = "     .";
-            Text[ korean ] = "표본에서 최빈값 계산";
+            Text[ korean ] = "표본에서 최대 빈도값 계산";
             Text[ turkish ] = "rnek iinde en sk bulunan deeri hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna el valor ms com en una mostra.";
+            Text[ thai ] = "ส่งกลับค่าร่วมมากในกลุ่มตัวอย่าง";
         };
         ExtraData =
         {
@@ -23819,26 +24578,27 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Numero " ;
             Text [ portuguese_brazilian ] = "Zahl " ;
             Text [ portuguese ] = "Nm1; nm2;... " ;
-            Text [ finnish ] = "luku" ;
+            Text [ finnish ] = "luku " ;
             Text [ danish ] = "Tal " ;
             Text [ french ] = "Nombre  " ;
             Text [ swedish ] = "tal  " ;
-            Text [ dutch ] = "Getal  " ;
+            Text [ dutch ] = "Getal" ;
             Text [ spanish ] = "nmero " ;
             Text [ english_us ] = "number " ;
             Text[ chinese_simplified ] = "number ";
-            Text[ russian ] = "  ";
+            Text[ russian ] = " ";
             Text[ polish ] = "Liczba  ";
             Text[ japanese ] = "数値 ";
             Text[ chinese_traditional ] = "number ";
             Text[ arabic ] = " ";
-            Text[ dutch ] = "Getal  ";
+            Text[ dutch ] = "Getal";
             Text[ chinese_simplified ] = "number ";
             Text[ greek ] = " ";
             Text[ korean ] = "값";
             Text[ turkish ] = "Say ";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "nombre ";
+            Text[ thai ] = "ตัวเลข ";
         };
         String 3 // Description of Parameter 1
         {
@@ -23856,7 +24616,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Nmero 1; nmero 2;...son entre 1 y 30 argumentos cuya moda desea calcular." ;
             Text [ english_us ] = "Number 1, number 2, ... are 1 to 30 numerical arguments which portray a sample." ;
             Text[ chinese_simplified ] = "数字 1; 数字 2;... 是 1 至 30 个表示一个抽样的数字元素。";
-            Text[ russian ] = " 1;  2;...  1  30  ,  ,     .";
+            Text[ russian ] = " 1;  2;...  1  30  ,  .";
             Text[ polish ] = "Od 1 do 30 argumentw, wrd ktrych ma zosta znaleziona warto wystpujca najczciej.";
             Text[ japanese ] = "数値 1;数値 2;...は計算するための1から30個での引数。";
             Text[ chinese_traditional ] = "數字 1; 數字 2;... 是 1 至 30 個表示一個抽樣的數字元素。";
@@ -23868,6 +24628,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Say 1; say 2;... Bir rnei temsil eden 1 - 30 aras nmerik deikendir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre 1, nombre 2, ... sn entre 1 i 30 arguments numrics que representen una mostra.";
+            Text[ thai ] = "เลข 1, เลข 2, ... อยู่ในอารืกิวเม้นท์ที่เป็นตัวเลข 1 ถึง 30  ที่อธิบายกลุ่มตัวอย่าง";
         };
     };
      // -=*# Resource for function MEDIAN #*=-
@@ -23889,7 +24650,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve la mediana de los nmeros." ;
             Text [ english_us ] = "Returns the median of a given sample." ;
             Text[ chinese_simplified ] = "计算一个抽样的中位数。";
-            Text[ russian ] = "   .";
+            Text[ russian ] = "   .";
             Text[ polish ] = "Oblicza median podanej prbki.";
             Text[ japanese ] = "データの中央値を返します。";
             Text[ chinese_traditional ] = "計算一個抽樣的中位數。";
@@ -23901,6 +24662,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "rnein ortalamasn hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna la mitja d'una mostra donada.";
+            Text[ thai ] = "ส่งกลับค่ากลางของกลุ่มตัวอย่างที่ให้มา";
         };
         ExtraData =
         {
@@ -23916,26 +24678,27 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Numero " ;
             Text [ portuguese_brazilian ] = "Zahl " ;
             Text [ portuguese ] = "Nm1; nm2;... " ;
-            Text [ finnish ] = "luku" ;
+            Text [ finnish ] = "luku " ;
             Text [ danish ] = "Tal " ;
             Text [ french ] = "Nombre  " ;
             Text [ swedish ] = "tal  " ;
-            Text [ dutch ] = "Getal  " ;
+            Text [ dutch ] = "Getal" ;
             Text [ spanish ] = "nmero " ;
             Text [ english_us ] = "number " ;
             Text[ chinese_simplified ] = "number ";
-            Text[ russian ] = "  ";
+            Text[ russian ] = " ";
             Text[ polish ] = "Liczba  ";
             Text[ japanese ] = "数値 ";
             Text[ chinese_traditional ] = "number ";
             Text[ arabic ] = " ";
-            Text[ dutch ] = "Getal  ";
+            Text[ dutch ] = "Getal";
             Text[ chinese_simplified ] = "number ";
             Text[ greek ] = " ";
             Text[ korean ] = "값";
             Text[ turkish ] = "Say ";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "nombre ";
+            Text[ thai ] = "ตัวเลข ";
         };
         String 3 // Description of Parameter 1
         {
@@ -23953,7 +24716,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Nmero 1; nmero 2;...son entre 1 y 30 nmeros cuya mediana desea obtener." ;
             Text [ english_us ] = "Number 1, number 2, ... are 1 to 30 numerical arguments which portray a sample." ;
             Text[ chinese_simplified ] = "数字 1; 数字 2;... 是 1 至 30 个表示一个抽样的元素。";
-            Text[ russian ] = " 1;  2;...  1  30  ,  ,     .";
+            Text[ russian ] = " 1;  2;...  1  30  ,  .";
             Text[ polish ] = "Od 1 do 30 numerycznych argumentw, ktre okrelaj median.";
             Text[ japanese ] = "数値 1;数値 2;...は対象となる30個までの引数。";
             Text[ chinese_traditional ] = "數字 1; 數字 2;... 是 1 至 30 個表示一個抽樣的元素。";
@@ -23965,6 +24728,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Say 1; say 2;... bir rnei temsil eden 1 - 30 aras nmerik deikendir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre 1, nombre 2, ... sn entre 1 i 30 arguments numrics que representen una mostra.";
+            Text[ thai ] = "เลข 1, เลข 2, ... อยู่ในอารืกิวเม้นท์ที่เป็นตัวเลข 1 ถึง 30  ที่อธิบายกลุ่มตัวอย่าง";
         };
     };
      // -=*# Resource for function QUANTIL #*=-
@@ -23986,7 +24750,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve el k-simo percentil de los valores de un rea." ;
             Text [ english_us ] = "Returns the alpha quantile of a sample." ;
             Text[ chinese_simplified ] = "计算数值区域的 K 百分比数值点。";
-            Text[ russian ] = " k-    .";
+            Text[ russian ] = " - .";
             Text[ polish ] = "Wyznacza k-ty percentyl cigu danych.";
             Text[ japanese ] = "データの中で、百分位で α 番目に位置する値を返します。";
             Text[ chinese_traditional ] = "計算數值區域的 K 百分比數值點。";
@@ -23998,6 +24762,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "rnein alfa kuvantilini hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna el quantil alfa d'una mostra.";
+            Text[ thai ] = "ส่งกลับ  alpha quantile ของกลุ่มตัวอย่าง";
         };
         ExtraData =
         {
@@ -24021,7 +24786,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Datos" ;
             Text [ english_us ] = "data" ;
             Text[ chinese_simplified ] = "array";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "Dane";
             Text[ japanese ] = "データ";
             Text[ chinese_traditional ] = "array";
@@ -24033,6 +24798,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Veri";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "dades";
+            Text[ thai ] = "ข้อมูล";
         };
         String 3 // Description of Parameter 1
         {
@@ -24042,7 +24808,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "La matrice dei dati del campione." ;
             Text [ portuguese_brazilian ] = "Die Matrix der Daten in der Stichprobe." ;
             Text [ portuguese ] = " a matriz ou intervalo de dados que define a posio relativa." ;
-            Text [ finnish ] = "Otoksen tietomatriisi." ;
+            Text [ finnish ] = "Otoksen tietotaulukko" ;
             Text [ danish ] = "Matrix af data i stikprven." ;
             Text [ french ] = "La matrice des donnes de l'chantillon." ;
             Text [ swedish ] = "Matrisen av data i stickprovet." ;
@@ -24050,7 +24816,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es la matriz o rea de datos que define la posicin relativa." ;
             Text [ english_us ] = "The array of the data in the sample." ;
             Text[ chinese_simplified ] = "定义相对位置的数组或数值区域。";
-            Text[ russian ] = "     ,    .";
+            Text[ russian ] = "   .";
             Text[ polish ] = "Macierz danych w prbce.";
             Text[ japanese ] = "データの入力されているセル範囲。";
             Text[ chinese_traditional ] = "定義相對位置的數組或數值區域。";
@@ -24062,6 +24828,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "rnekteki verilerin matrisi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Matriu de les dades de la mostra.";
+            Text[ thai ] = "แถวลำดับของข้อมูลในกลุ่มตัวอย่าง";
         };
         String 4 // Name of Parameter 2
         {
@@ -24079,7 +24846,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "k" ;
             Text [ english_us ] = "Alpha" ;
             Text[ chinese_simplified ] = "Alpha";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "Alfa";
             Text[ japanese ] = "α";
             Text[ chinese_traditional ] = "Alpha";
@@ -24091,6 +24858,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Alfa";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Alfa";
+            Text[ thai ] = "อัลฟ่า";
         };
         String 5 // Description of Parameter 2
         {
@@ -24100,7 +24868,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Il valore percentile nell'intervallo tra 0 e 1." ;
             Text [ portuguese_brazilian ] = "Der Prozentwert des Quantils zwischen 0 und 1." ;
             Text [ portuguese ] = " o valor do percentil entre 0 e 1, inclusive." ;
-            Text [ finnish ] = "kvantiilin (0-1) prosenttiosuus." ;
+            Text [ finnish ] = "Kvantiilin (0-1) prosenttiosuus" ;
             Text [ danish ] = "K er en fraktilvrdi mellem 0 og 1." ;
             Text [ french ] = "La valeur de pourcentage du quantile comprise entre 0 et 1." ;
             Text [ swedish ] = "Procentvrdet fr kvantilen mellan 0 och 1." ;
@@ -24108,7 +24876,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es el valor de percentil, debe estar en el intervalo de 0 a 1, inclusive." ;
             Text [ english_us ] = "The percentage rate of the quantile between 0 and 1." ;
             Text[ chinese_simplified ] = "百分比数值,在 0 到 1 之间,包含 0 和 1。";
-            Text[ russian ] = "     0  1 .";
+            Text[ russian ] = "     0  1.";
             Text[ polish ] = "Warto procentowa kwantylu w zakresie midzy 0 lub 1.";
             Text[ japanese ] = "0~1 の百分位の値。";
             Text[ chinese_traditional ] = "百分比數值﹐在 0 到 1 之間﹐包含 0 和 1。";
@@ -24120,6 +24888,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "0 ile 1 arasndaki kuvantilin yzde deeri.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Taxa del percentatge del quantil entre 0 i 1.";
+            Text[ thai ] = "อัตราเปอร์เซ็นต์ของ quantile ระหว่าง 0 และ 1";
         };
     };
      // -=*# Resource for function QUARTILE #*=-
@@ -24141,7 +24910,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve el cuartil de un conjunto de datos." ;
             Text [ english_us ] = "Returns the quartile of a sample." ;
             Text[ chinese_simplified ] = "计算一个抽样的四分位数。";
-            Text[ russian ] = "   .";
+            Text[ russian ] = "  .";
             Text[ polish ] = "Wyznacza kwartyl zbioru danych.";
             Text[ japanese ] = "1組のデータの四分位数を返します。";
             Text[ chinese_traditional ] = "計算一個抽樣的四分位數。";
@@ -24153,6 +24922,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "rnein kartilini hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna el quartil d'una mostra.";
+            Text[ thai ] = "ส่งกลับค่าควอร์ไทล์ของกลุ่มตัวอย่าง";
         };
         ExtraData =
         {
@@ -24176,7 +24946,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Datos" ;
             Text [ english_us ] = "data" ;
             Text[ chinese_simplified ] = "array";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "Dane";
             Text[ japanese ] = "データ";
             Text[ chinese_traditional ] = "array";
@@ -24188,6 +24958,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Veri";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "dades";
+            Text[ thai ] = "ข้อมูล";
         };
         String 3 // Description of Parameter 1
         {
@@ -24197,7 +24968,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "La matrice dei dati nel campione." ;
             Text [ portuguese_brazilian ] = "Die Matrix der Daten in der Stichprobe." ;
             Text [ portuguese ] = " a matriz ou intervalo de clulas de valores numricos para o qual deseja calcular o valor quartil." ;
-            Text [ finnish ] = "Otoksen tietomatriisi." ;
+            Text [ finnish ] = "Otoksen tietotaulukko" ;
             Text [ danish ] = "Matrix af data i stikprven." ;
             Text [ french ] = "La matrice des donnes de l'chantillon." ;
             Text [ swedish ] = "Matrisen av data i stickprovet." ;
@@ -24205,7 +24976,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es la matriz o rea de celdas de valores numricos cuyo cuartil desea obtener." ;
             Text [ english_us ] = "The array of the data in the sample." ;
             Text[ chinese_simplified ] = "需要求得四分位数值的抽样数组或数字型单元格区域。";
-            Text[ russian ] = "      ,     .";
+            Text[ russian ] = "   .";
             Text[ polish ] = "Macierz danych w prbce.";
             Text[ japanese ] = "データの入力されているセル範囲。";
             Text[ chinese_traditional ] = "需要求得四分位數值的抽樣數組或數字型儲存格區域。";
@@ -24217,6 +24988,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "rnekteki verilerin matrisi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Matriu de les dades de la mostra.";
+            Text[ thai ] = "แถวลำดับของข้อมูลในกลุ่มตัวอย่าง";
         };
         String 4 // Name of Parameter 2
         {
@@ -24231,7 +25003,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ french ] = "Type" ;
             Text [ swedish ] = "typ" ;
             Text [ dutch ] = "Type" ;
-            Text [ spanish ] = "cuartil" ;
+            Text [ spanish ] = "Tipo" ;
             Text [ english_us ] = "Type" ;
             Text[ chinese_simplified ] = "type";
             Text[ russian ] = "";
@@ -24246,6 +25018,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Tip";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Tipus";
+            Text[ thai ] = "ชนิด";
         };
         String 5 // Description of Parameter 2
         {
@@ -24275,6 +25048,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Kartil tipi (0=ASG., 1=%25, 2=%50, 3=%75, 4=AZM.).";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Indica quin valor ha de retornar (0=MIN, 1=25%, 2=50%, 3=75%, 4=MAX).";
+            Text[ thai ] = "ชนิดของค่าควอร์ไทล์ (0 = MIN, 1 = 25%, 2 = 50 %, 3 = 75 %, 4 =MAX).";
         };
     };
      // -=*# Resource for function KGRSSTE #*=-
@@ -24297,7 +25071,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve el k-simo mayor valor de un conjunto de datos." ;
             Text [ english_us ] = "Returns the k-th largest value of a sample." ;
             Text[ chinese_simplified ] = "计算一个抽样中的第 k 个最大值。";
-            Text[ russian ] = " k-     .";
+            Text[ russian ] = " k-   .";
             Text[ polish ] = "Zwraca k-t najwiksz warto ze zbioru danych.";
             Text[ japanese ] = "指定したデータの中で k 番目に大きなデータを返します。";
             Text[ chinese_traditional ] = "計算一個抽樣中的第 k 個最大值。";
@@ -24309,6 +25083,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "rnein k'nc byk deerini hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna el k- valor ms gran d'una mostra.";
+            Text[ thai ] = "ส่งกลับค่ามากที่สุดของ k-th ของกลุ่มตัวอย่าง";
         };
         ExtraData =
         {
@@ -24332,7 +25107,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Datos" ;
             Text [ english_us ] = "data" ;
             Text[ chinese_simplified ] = "data";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "Dane";
             Text[ japanese ] = "データ";
             Text[ chinese_traditional ] = "資料";
@@ -24344,6 +25119,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Veri";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "dades";
+            Text[ thai ] = "ข้อมูล";
         };
         String 3 // Description of Parameter 1
         {
@@ -24353,7 +25129,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "La matrice dei dati del campione." ;
             Text [ portuguese_brazilian ] = "Die Matrix der Daten in der Stichprobe." ;
             Text [ portuguese ] = " a matriz ou intervalo de dados para os quais deseja calcular o maior valor k-simo." ;
-            Text [ finnish ] = "Otoksen tietomatriisi." ;
+            Text [ finnish ] = "Otoksen tietotaulukko" ;
             Text [ danish ] = "Matrix af data i stikprven." ;
             Text [ french ] = "La matrice des donnes de l'chantillon." ;
             Text [ swedish ] = "Matrisen med data i stickprovet." ;
@@ -24361,7 +25137,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es la matriz o rea de datos cuyo k-simo mayor valor desea determinar." ;
             Text [ english_us ] = "The array of the data in the sample." ;
             Text[ chinese_simplified ] = "由抽样组成的数据组或数据区域。";
-            Text[ russian ] = "   ,    k-  .";
+            Text[ russian ] = "   .";
             Text[ polish ] = "Macierz danych w prbce.";
             Text[ japanese ] = "対象となるデータが入力されているセル範囲。";
             Text[ chinese_traditional ] = "由抽樣組成的數據組或數據區域。";
@@ -24373,6 +25149,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "rnekteki verilerin matrisi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Matriu de les dades de la mostra.";
+            Text[ thai ] = "แถวลำดับของข้อมูลในกลุ่มตัวอย่าง";
         };
         String 4 // Name of Parameter 2
         {
@@ -24402,6 +25179,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Derece_C";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Rank_c";
+            Text[ thai ] = "ชั้น_c";
         };
         String 5 // Description of Parameter 2
         {
@@ -24411,7 +25189,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "La posizione del valore." ;
             Text [ portuguese_brazilian ] = "Der Rang des Werts." ;
             Text [ portuguese ] = "representa a posio dos dados a devolver, determinada a partir do maior valor." ;
-            Text [ finnish ] = "Arvon sijoitus." ;
+            Text [ finnish ] = "Arvon sijoitus" ;
             Text [ danish ] = "K er vrdiens position." ;
             Text [ french ] = "Le rang de la valeur." ;
             Text [ swedish ] = "Vrdets rang." ;
@@ -24419,7 +25197,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "representa la posicin del dato a devolver, determinada a partir del mayor de los valores." ;
             Text [ english_us ] = "The ranking of the value." ;
             Text[ chinese_simplified ] = "数值在数据组里的位置。";
-            Text[ russian ] = "     .";
+            Text[ russian ] = " .";
             Text[ polish ] = "Pozycja wartoci.";
             Text[ japanese ] = "大きい方から数えたデータ順位。";
             Text[ chinese_traditional ] = "數值在數據組裡的位置。";
@@ -24431,6 +25209,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Deerin derecesi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Rang del valor.";
+            Text[ thai ] = "จัดค่าอยู่ในชั้น";
         };
     };
      // -=*# Resource for function KKLEINSTE #*=-
@@ -24452,7 +25231,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve el k-simo menor valor de un conjunto de datos." ;
             Text [ english_us ] = "Returns the k-th smallest value of a sample." ;
             Text[ chinese_simplified ] = "计算数据组中的第 k 个最小值。";
-            Text[ russian ] = " k-     .";
+            Text[ russian ] = " k-   .";
             Text[ polish ] = "Podaje k-t najmniejsz warto w zbiorze danych.";
             Text[ japanese ] = "指定したデータの中で k 番目に小さなデータを返します。";
             Text[ chinese_traditional ] = "計算數據組中的第 k 個最小值。";
@@ -24464,6 +25243,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "rnein k'nc kk deerini hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna el k- valor ms petit d'una mostra.";
+            Text[ thai ] = "ส่งกลับค่าน้อยที่สุดของ k-th ของกลุ่มตัวอย่าง";
         };
         ExtraData =
         {
@@ -24499,6 +25279,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Veri";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "dades";
+            Text[ thai ] = "ข้อมูล";
         };
         String 3 // Description of Parameter 1
         {
@@ -24508,7 +25289,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "La matrice dei dati di un campione." ;
             Text [ portuguese_brazilian ] = "Die Matrix der Daten in der Stichprobe." ;
             Text [ portuguese ] = " uma matriz ou intervalo de dados numricos para os quais deseja calcular o menor valor k-simo." ;
-            Text [ finnish ] = "Otoksen tietomatriisi." ;
+            Text [ finnish ] = "Otoksen tietotaulukko" ;
             Text [ danish ] = "Matrix af data i stikprven." ;
             Text [ french ] = "La matrice des donnes de l'chantillon." ;
             Text [ swedish ] = "Matrisen av data i stickprovet." ;
@@ -24528,6 +25309,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "rnekteki verilerin matrisi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Matriu de les dades de la mostra.";
+            Text[ thai ] = "แถวลำดับของข้อมูลในกลุ่มตัวอย่าง";
         };
         String 4 // Name of Parameter 2
         {
@@ -24545,7 +25327,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "rango_k" ;
             Text [ english_us ] = "Rank_c" ;
             Text[ chinese_simplified ] = "rank_c";
-            Text[ russian ] = "_K";
+            Text[ russian ] = "";
             Text[ polish ] = "Rzd_K";
             Text[ japanese ] = "k";
             Text[ chinese_traditional ] = "Rank_c";
@@ -24557,6 +25339,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Derece_C";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Rank_c";
+            Text[ thai ] = "ชั้น_c";
         };
         String 5 // Description of Parameter 2
         {
@@ -24566,7 +25349,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "La posizione del valore." ;
             Text [ portuguese_brazilian ] = "Der Rang des Werts." ;
             Text [ portuguese ] = "representa dentro da matriz ou intervalo de dados, a posio do dado a devolver, calculada a partir do menor dos valores." ;
-            Text [ finnish ] = "Arvon sijoitus." ;
+            Text [ finnish ] = "Arvon sijoitus" ;
             Text [ danish ] = "K er vrdiens position." ;
             Text [ french ] = "Le rang de la valeur." ;
             Text [ swedish ] = "Vrdets rang" ;
@@ -24574,7 +25357,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "representa dentro de la matriz o rea de datos, la posicin del dato a devolver, determinada a partir del menor de los valores." ;
             Text [ english_us ] = "The ranking of the value." ;
             Text[ chinese_simplified ] = "求得的数值在数据组里的位置。";
-            Text[ russian ] = " .";
+            Text[ russian ] = " .";
             Text[ polish ] = "Rzd wartoci.";
             Text[ japanese ] = "小さい方から数えたデータ順位。";
             Text[ chinese_traditional ] = "求得的數值在數據組裡的位置。";
@@ -24586,6 +25369,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Deerin derecesi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Rang del valor.";
+            Text[ thai ] = "จัดค่าอยู่ในชั้น";
         };
     };
      // -=*# Resource for function QUANTILSRANG #*=-
@@ -24609,7 +25393,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve el rea de percentil de un valor en un conjunto de datos." ;
             Text [ english_us ] = "Returns the percentage rank of a value in a sample." ;
             Text[ chinese_simplified ] = "计算一个数值在数据集中的百分比排位。";
-            Text[ russian ] = "     .";
+            Text[ russian ] = "   ()   .";
             Text[ polish ] = "Wyznacza pozycj procentow wartoci w prbce.";
             Text[ japanese ] = "測定値の相対順位の値を返します。";
             Text[ chinese_traditional ] = "計算一個數值在數據集中的百分比排位。";
@@ -24621,6 +25405,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "rnek iinde bir deerin yzde srasn hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna el rang de percentatge d'un valor d'una mostra.";
+            Text[ thai ] = "ส่งกลับช่วงเปอร์เซ็นต์ของค่าในกลุ่มตัวอย่าง";
         };
         ExtraData =
         {
@@ -24644,7 +25429,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Datos" ;
             Text [ english_us ] = "data" ;
             Text[ chinese_simplified ] = "array";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "Dane";
             Text[ japanese ] = "データ";
             Text[ chinese_traditional ] = "array";
@@ -24656,6 +25441,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Veri";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "dades";
+            Text[ thai ] = "ข้อมูล";
         };
         String 3 // Description of Parameter 1
         {
@@ -24665,7 +25451,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "La matrice dei dati nel campione." ;
             Text [ portuguese_brazilian ] = "Die Matrix der Daten in der Stichprobe." ;
             Text [ portuguese ] = " a matriz ou intervalo de dados com valores numricos que define uma posio relativa." ;
-            Text [ finnish ] = "Otoksen tietomatriisi." ;
+            Text [ finnish ] = "Otoksen tietotaulukko" ;
             Text [ danish ] = "Matrix af data i stikprven." ;
             Text [ french ] = "La matrice des donnes de l'chantillon." ;
             Text [ swedish ] = "Matrisen av data i ett stickprov." ;
@@ -24673,7 +25459,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es la matriz o rea de datos con valores numricos que define la posicin relativa." ;
             Text [ english_us ] = "The array of the data in the sample." ;
             Text[ chinese_simplified ] = "数据组。";
-            Text[ russian ] = "      ,   .";
+            Text[ russian ] = "   .";
             Text[ polish ] = "Macierz danych w prbce.";
             Text[ japanese ] = "データの入力されているセル範囲。";
             Text[ chinese_traditional ] = "數據組。";
@@ -24685,6 +25471,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "rnekteki verilerin matrisi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Matriu de les dades de la mostra.";
+            Text[ thai ] = "แถวลำดับของข้อมูลในกลุ่มตัวอย่าง";
         };
         String 4 // Name of Parameter 2
         {
@@ -24714,6 +25501,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Deer";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "valor";
+            Text[ thai ] = "ค่า";
         };
         String 5 // Description of Parameter 2
         {
@@ -24723,7 +25511,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Il valore del quale si desidera conoscere il rango percentuale." ;
             Text [ portuguese_brazilian ] = "Der Wert, dessen prozentualer Rang bestimmt wird." ;
             Text [ portuguese ] = " o valor cuja ordem percentual se deseja calcular." ;
-            Text [ finnish ] = "Arvon, jonka prosenttisijoitus mritetn." ;
+            Text [ finnish ] = "Arvo, jonka prosenttisijoitus mritetn." ;
             Text [ danish ] = "Den vrdi hvis rang skal bestemmes." ;
             Text [ french ] = "La valeur dont vous voulez dterminer le rang en pourcentage." ;
             Text [ swedish ] = "Vrdet vars procentuella rang bestms." ;
@@ -24743,6 +25531,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Yzde sras belirlenecek deer.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor el rang del percentatge del qual s'ha de determinar.";
+            Text[ thai ] = "ค่าสำหรับกำหนดการจัดช่วงเปอร์เซ็นต์";
         };
     };
      // -=*# Resource for function RANG #*=-
@@ -24765,7 +25554,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve el rea de un valor en una muestra." ;
             Text [ english_us ] = "Returns the ranking of a value in a sample." ;
             Text[ chinese_simplified ] = "计算一个数值在一组数值中的排位。";
-            Text[ russian ] = "    .";
+            Text[ russian ] = "    .";
             Text[ polish ] = "Wyznacza pozycj wartoci w prbce.";
             Text[ japanese ] = "標本内の数値の順位を返します。";
             Text[ chinese_traditional ] = "計算一個數值在一組數值中的排位。";
@@ -24777,6 +25566,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "rnek iindeki bir deerin derecesini hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna el rang d'un valor d'una mostra.";
+            Text[ thai ] = "ส่งกลับการจัดค่าอยู่ในชั้นในกลุ่มตัวอย่าง";
         };
         ExtraData =
         {
@@ -24812,6 +25602,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Deer";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "valor";
+            Text[ thai ] = "ค่า";
         };
         String 3 // Description of Parameter 1
         {
@@ -24821,7 +25612,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Il numero di cui si desidera ricercare il rango." ;
             Text [ portuguese_brazilian ] = "Der Wert, dessen Rang bestimmt wird." ;
             Text [ portuguese ] = " o valor do qual deseja determinar a posio." ;
-            Text [ finnish ] = "Arvon, jonka sijoitus mritetn." ;
+            Text [ finnish ] = "Arvo, jonka sijoitus mritetn" ;
             Text [ danish ] = "Den vrdi hvis rang skal bestemmes." ;
             Text [ french ] = "La valeur dont vous voulez dterminer le rang." ;
             Text [ swedish ] = "Vrdet vars rang bestms." ;
@@ -24841,6 +25632,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Derecesi belirlenecek deer.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor el rang del qual s'ha de determinar.";
+            Text[ thai ] = "ค่าสำหรับกำหนดช่วง";
         };
         String 4 // Name of Parameter 2
         {
@@ -24858,7 +25650,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Datos" ;
             Text [ english_us ] = "Data" ;
             Text[ chinese_simplified ] = "ref";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "Dane";
             Text[ japanese ] = "データ";
             Text[ chinese_traditional ] = "ref";
@@ -24870,6 +25662,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Veri";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Dades";
+            Text[ thai ] = "ข้อมูล";
         };
         String 5 // Description of Parameter 2
         {
@@ -24879,7 +25672,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "La matrice di numeri nel campione." ;
             Text [ portuguese_brazilian ] = "Die Matrix der Daten in der Stichprobe." ;
             Text [ portuguese ] = " uma matriz de, ou referncia a, uma lista de nmeros." ;
-            Text [ finnish ] = "Otoksen tietomatriisi." ;
+            Text [ finnish ] = "Otoksen tietotaulukko" ;
             Text [ danish ] = "Matrix af data i stikprven." ;
             Text [ french ] = "La matrice des donnes de l'chantillon." ;
             Text [ swedish ] = "Matrisen av data i stickprovet." ;
@@ -24887,7 +25680,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es una matriz de, o una referencia a, una lista de nmeros." ;
             Text [ english_us ] = "The array of the data in the sample." ;
             Text[ chinese_simplified ] = "包含一组数字的数组或引用。";
-            Text[ russian ] = "      ().";
+            Text[ russian ] = "   .";
             Text[ polish ] = "Macierz danych w prbce.";
             Text[ japanese ] = "データが入力されているセル範囲。";
             Text[ chinese_traditional ] = "包含一組數字的數組或參照。";
@@ -24899,6 +25692,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "rnekteki verilerin matrisi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Matriu de les dades de la mostra.";
+            Text[ thai ] = "แถวลำดับของข้อมูลในกลุ่มตัวอย่าง";
         };
         String 6 // Name of Parameter 3
         {
@@ -24916,7 +25710,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Tipo" ;
             Text [ english_us ] = "Type" ;
             Text[ chinese_simplified ] = "order";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "Typ";
             Text[ japanese ] = "タイプ";
             Text[ chinese_traditional ] = "Order";
@@ -24928,6 +25722,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Tr";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Tipus";
+            Text[ thai ] = "ชนิด";
         };
         String 7 // Description of Parameter 3
         {
@@ -24945,7 +25740,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es un nmero que especifica cmo clasificar el argumento nmero." ;
             Text [ english_us ] = "Sequence order: 0 means ascending, 1 means descending." ;
             Text[ chinese_simplified ] = "指明排位的方式:0 = 按降序排位, 1 = 按升序排位。";
-            Text[ russian ] = ",   : 0    , 1    .";
+            Text[ russian ] = " : 0 -   , 1 -   .";
             Text[ polish ] = "Wyznacza kolejno pozycji liczb: 0 oznacza rosnco, 1 oznacza malejco.";
             Text[ japanese ] = "順位の数え方。0 を指定すると大きい方から、1 を指定すると小さい方から数えた順位。";
             Text[ chinese_traditional ] = "指明排位的方式﹕0 = 按降序排位, 1 = 按升序排位。";
@@ -24957,6 +25752,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Derece sras: 0 artan, 1 ise azalan anlamna gelir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Ordre de la seqncia: 0 significa ascendent, 1 significa descendent.";
+            Text[ thai ] = "เรียงลำดับ: 0 หมายถึงจากน้อยไปมาก, 1 หมายถึงจากมากไปน้อย";
         };
     };
      // -=*# Resource for function GESTUTZTMITTEL #*=-
@@ -24978,7 +25774,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve la media del interior del conjunto de datos." ;
             Text [ english_us ] = "Returns the mean of a sample without including the marginal values." ;
             Text[ chinese_simplified ] = "计算一组数据在除去两端部分数据后的平均值。";
-            Text[ russian ] = "      .";
+            Text[ russian ] = "       .";
             Text[ polish ] = "Wyznacza warto redni z wntrza zbioru danych.";
             Text[ japanese ] = "トリム平均を返します。";
             Text[ chinese_traditional ] = "計算一組數據在除去兩端部份數據後的平均值。";
@@ -24986,10 +25782,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Berekent de gemiddelde waarde van een steekproef zonder de grenswaarden.";
             Text[ chinese_simplified ] = "计算一组数据在除去两端部分数据后的平均值。";
             Text[ greek ] = "         .";
-            Text[ korean ] = "경계값없이 샘플의 평균값을 계산합니다";
+            Text[ korean ] = "경계값 없이 샘플의 평균값을 계산합니다.";
             Text[ turkish ] = "rnein ortalamasn, marj deerler hari hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna la mitja d'una mostra sense incloure els valors marginals.";
+            Text[ thai ] = "ส่งกลับค่าเฉลี่ยของตัวอย่างโดยไม่รวมค่าจำกัด ";
         };
         ExtraData =
         {
@@ -25025,6 +25822,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Veri";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "dades";
+            Text[ thai ] = "ข้อมูล";
         };
         String 3 // Description of Parameter 1
         {
@@ -25034,7 +25832,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Matrice dei dati del campione." ;
             Text [ portuguese_brazilian ] = "Die Matrix der Daten in der Stichprobe." ;
             Text [ portuguese ] = " a matriz ou intervalo de valores cuja mdia deseja calcular." ;
-            Text [ finnish ] = "Otoksen tietomatriisi." ;
+            Text [ finnish ] = "Otoksen tietotaulukko" ;
             Text [ danish ] = "Matrix af data i stikprven." ;
             Text [ french ] = "La matrice des donnes de l'chantillon." ;
             Text [ swedish ] = "Matrisen av data i stickprovet." ;
@@ -25042,7 +25840,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es la matriz o rea de valores que desea acotar y de los cuales se calcular la media." ;
             Text [ english_us ] = "The array of the data in the sample." ;
             Text[ chinese_simplified ] = "要求其平均值的数据组。";
-            Text[ russian ] = "      .";
+            Text[ russian ] = "   .";
             Text[ polish ] = "Macierz danych w prbce.";
             Text[ japanese ] = "計算対象のデータが入力されているセル範囲。";
             Text[ chinese_traditional ] = "要求其平均值的數據組。";
@@ -25054,6 +25852,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "rnekteki verilerin matrisi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Matriu de les dades de la mostra.";
+            Text[ thai ] = "แถวลำดับของข้อมูลในกลุ่มตัวอย่าง";
         };
         String 4 // Name of Parameter 2
         {
@@ -25083,6 +25882,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Alfa";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Alfa";
+            Text[ thai ] = "อัลฟ่า";
         };
         String 5 // Description of Parameter 2
         {
@@ -25101,7 +25901,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es el nmero fraccionario de observaciones que se excluyen del clculo." ;
             Text [ english_us ] = "The percentage of marginal data that is not to be taken into account." ;
             Text[ chinese_simplified ] = "要除去的两端数据点在数据组中占的百分比。";
-            Text[ russian ] = "   ,   .";
+            Text[ russian ] = "  ,   .";
             Text[ polish ] = "Stawka procentowa danych, ktre nie bd uwzgldnione.";
             Text[ japanese ] = "平均値の計算から排除するデータの割合。";
             Text[ chinese_traditional ] = "要除去的兩端數據點在數據組中佔的百分比。";
@@ -25113,6 +25913,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Dikkate alnmayacak marj verilerinin yzde oran.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Percentatge de dades marginals que no s'ha de considerar.";
+            Text[ thai ] = "เปอร์เซ็นต์ของข้อมูลจำกัดที่ไม่ถูกคำนึงถึง";
         };
     };
      // -=*# Resource for function WAHRSCHBEREICH #*=-
@@ -25134,7 +25935,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve la probabilidad de que los valores de un rea se encuentren entre dos lmites." ;
             Text [ english_us ] = "Returns the discreet probability of an interval." ;
             Text[ chinese_simplified ] = "计算一个区域内的概率值之和。";
-            Text[ russian ] = "  ,       .";
+            Text[ russian ] = "  ,      .";
             Text[ polish ] = "Wyznacza prawdopodobiestwo przy cigu wartoci ograniczonych z dou i z gry.";
             Text[ japanese ] = "確率変数が指定の下限と上限との間にあるときの確率を返します。";
             Text[ chinese_traditional ] = "計算一個區域內的概率值之和。";
@@ -25146,6 +25947,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Araln ihtiyatl olaslklarn hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna la probabilitat discreta d'un interval.";
+            Text[ thai ] = "ส่งกลับความน่าจะเป็นที่รอบคอบของช่วง ";
         };
         ExtraData =
         {
@@ -25169,7 +25971,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "intervalo_x" ;
             Text [ english_us ] = "data" ;
             Text[ chinese_simplified ] = "x_range";
-            Text[ russian ] = "_";
+            Text[ russian ] = "";
             Text[ polish ] = "zakres_x";
             Text[ japanese ] = "確率変数";
             Text[ chinese_traditional ] = "x_range";
@@ -25181,6 +25983,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Veri";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "dades";
+            Text[ thai ] = "ข้อมูล";
         };
         String 3 // Description of Parameter 1
         {
@@ -25190,7 +25993,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "La matrice dei dati nel campione." ;
             Text [ portuguese_brazilian ] = "Die Matrix der Daten in der Stichprobe." ;
             Text [ portuguese ] = " o intervalo de valores numricos de x com probabilidades associadas." ;
-            Text [ finnish ] = "Tietomatriisimalli." ;
+            Text [ finnish ] = "Tietotaulukkomalli" ;
             Text [ danish ] = "Matrix af data i stikprven." ;
             Text [ french ] = "La matrice des donnes de l'chantillon." ;
             Text [ swedish ] = "Matrisen av data i ett stickprov." ;
@@ -25198,7 +26001,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es el rea de valores numricos de x con que se asocian las probabilidades." ;
             Text [ english_us ] = "The sample data array." ;
             Text[ chinese_simplified ] = "具有各自相应概率值的 x 数值区域。";
-            Text[ russian ] = "   ,    .";
+            Text[ russian ] = "  .";
             Text[ polish ] = "Macierz danych w prbce.";
             Text[ japanese ] = "確率変数が入力されているセル範囲。";
             Text[ chinese_traditional ] = "具有各自相應概率值的 x 數值區域。";
@@ -25210,6 +26013,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "rnekteki verilerin matrisi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Matriu de dades de mostra.";
+            Text[ thai ] = "แถวลำดับข้อมูลของกลุ่มตัวอย่าง";
         };
         String 4 // Name of Parameter 2
         {
@@ -25227,7 +26031,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "intervalo_probabilidad" ;
             Text [ english_us ] = "probability" ;
             Text[ chinese_simplified ] = "pro_range";
-            Text[ russian ] = "_";
+            Text[ russian ] = "";
             Text[ polish ] = "zakres_prawdop";
             Text[ japanese ] = "確率密度";
             Text[ chinese_traditional ] = "pro_range";
@@ -25239,6 +26043,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Olaslklar";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "probabilitat";
+            Text[ thai ] = "ความน่าจะเป็น";
         };
         String 5 // Description of Parameter 2
         {
@@ -25249,7 +26054,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "La matrice delle probabilit associate." ;
             Text [ portuguese_brazilian ] = "Die Matrix der dazugeh?igen Wahrscheinlichkeiten." ;
             Text [ portuguese ] = " um conjunto de probabilidades associado a valores no intervalo_x." ;
-            Text [ finnish ] = "Todennkisyyksien matriisi." ;
+            Text [ finnish ] = "Todennkisyyksien taulukko" ;
             Text [ danish ] = "De tilhrende sandsynligheders matrix." ;
             Text [ french ] = "La matrice des probabilits associes aux donnes." ;
             Text [ swedish ] = "Matrisen fr de tillhrande sannolikheterna." ;
@@ -25257,7 +26062,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es un conjunto de probabilidades asociado con valores en intervalo_x." ;
             Text [ english_us ] = "The array of the associated probabilities." ;
             Text[ chinese_simplified ] = "与 x_range 中数值相对应的一组概率值。";
-            Text[ russian ] = " ,    _.";
+            Text[ russian ] = "  .";
             Text[ polish ] = "Macierz z nalecymi do niej prawdopodobiestwami.";
             Text[ japanese ] = "確率密度が入力されているセル範囲。";
             Text[ chinese_traditional ] = "與 x_range 中數值相對應的一組概率值。";
@@ -25269,6 +26074,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "lgili olaslklarn matrisi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Matriu de les probabilitats associades.";
+            Text[ thai ] = "แถวลำดับของความน่าจะเป็นที่สัมพันธ์กัน";
         };
         String 6 // Name of Parameter 3
         {
@@ -25278,7 +26084,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Limite inferiore" ;
             Text [ portuguese_brazilian ] = "Anfang" ;
             Text [ portuguese ] = "Limite_inferior" ;
-            Text [ finnish ] = "Aloita" ;
+            Text [ finnish ] = "Alku" ;
             Text [ danish ] = "Nedre_grnse" ;
             Text [ french ] = "Dbut" ;
             Text [ swedish ] = "start" ;
@@ -25286,7 +26092,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "lmite_inf" ;
             Text [ english_us ] = "Start" ;
             Text[ chinese_simplified ] = "lower_limit";
-            Text[ russian ] = "_";
+            Text[ russian ] = "A";
             Text[ polish ] = "dolna_granica";
             Text[ japanese ] = "下限";
             Text[ chinese_traditional ] = "lower_limit";
@@ -25298,6 +26104,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Balang";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Inici";
+            Text[ thai ] = "เริ่มต้น";
         };
         String 7 // Description of Parameter 3
         {
@@ -25315,7 +26122,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es el lmite inferior del valor para el que desea una probabilidad." ;
             Text [ english_us ] = "The start of the value interval whose probabilities is to be totalled." ;
             Text[ chinese_simplified ] = "用于概率求和计算的数值下界。";
-            Text[ russian ] = "  ,    .";
+            Text[ russian ] = "  ,    .";
             Text[ polish ] = "Opcjonalne grne ograniczenie przedziau wartoci, dla ktrego naley obliczy prawdopodobiestwo.";
             Text[ japanese ] = "確率変数の下限。";
             Text[ chinese_traditional ] = "用來概率求和計算的數值下界。";
@@ -25327,6 +26134,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Olaslklar toplanacak deer aralnn balangc.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Inici de l'interval del valor les probabilitats del qual s'han de sumar.";
+            Text[ thai ] = "การเริ่มต้นของช่วงของค่าของความน่าจะเป็นที่ถูกรวมทั้งหมด";
         };
         String 8 // Name of Parameter 4
         {
@@ -25344,7 +26152,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "lmite_sup" ;
             Text [ english_us ] = "End" ;
             Text[ chinese_simplified ] = "upper_limit";
-            Text[ russian ] = "_";
+            Text[ russian ] = "B";
             Text[ polish ] = "grna_granica";
             Text[ japanese ] = "上限";
             Text[ chinese_traditional ] = "upper_limit";
@@ -25356,6 +26164,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Son";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Final";
+            Text[ thai ] = "สิ้นสุด";
         };
         String 9 // Description of Parameter 4
         {
@@ -25373,7 +26182,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es el lmite superior opcional del valor para el que desea una probabilidad." ;
             Text [ english_us ] = "The end of the value interval where the probabilities are to be totalled." ;
             Text[ chinese_simplified ] = "用于概率求和计算的数值可选上界。";
-            Text[ russian ] = "  ,     .";
+            Text[ russian ] = "  ,     .";
             Text[ polish ] = "Opcjonalne dolne ograniczenie przedziau wartoci, dla ktrego naley obliczy prawdopodobiestwo.";
             Text[ japanese ] = "確率変数の上限。";
             Text[ chinese_traditional ] = "用來概率求和計算的數值可選上界。";
@@ -25381,10 +26190,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Het einde van het waarde-interval waarvan de kansen worden berekend.";
             Text[ chinese_simplified ] = "用于概率求和计算的数值可选上界。";
             Text[ greek ] = "     ,          .";
-            Text[ korean ] = "확률이 총계될 값구간의 끝.";
+            Text[ korean ] = "확률이 총계될 값 구간의 끝";
             Text[ turkish ] = "Olaslklar toplanacak deer aralnn sonu.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Final de l'interval del valor on s'han de sumar les probabilitats.";
+            Text[ thai ] = "การสิ้นสุดของช่วงของค่าที่ความน่าจะเป็นที่ถูกรวมทั้งหมด";
         };
     };
      // -=*# Resource for function B #*=-
@@ -25406,7 +26216,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Calcula la probabilidad de un ensayo siguiendo la distribucin binomial." ;
             Text [ english_us ] = "Returns the probabilityof a trial result using binomial distribution." ;
             Text[ chinese_simplified ] = "计算二项式分布的试验结果概率。";
-            Text[ russian ] = "       .";
+            Text[ russian ] = "    .";
             Text[ polish ] = "Oblicza pojedynczy skadnik warto prawdopodobiestwa dla rozkadu dwumianowego.";
             Text[ japanese ] = "二項分布の試行が成功する確率を返します";
             Text[ chinese_traditional ] = "計算二項式分佈的試驗結果概率。";
@@ -25418,6 +26228,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Binom dalm kullanlan bir deney sonucunun olasln hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna la probabilitat d'un resultat d'avaluaci utilitzant la distribuci binomial.";
+            Text[ thai ] = "ส่งกลับความน่าจะเป็นของการใช้ผลลัพธ์ทดลองการแจกแจงแบบทวินาม";
         };
         ExtraData =
         {
@@ -25453,6 +26264,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Deney";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "avaluacions";
+            Text[ thai ] = "ทดลอง";
         };
         String 3 // Description of Parameter 1
         {
@@ -25462,7 +26274,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Numero dei tentativi" ;
             Text [ portuguese_brazilian ] = "Anzahl der Versuche" ;
             Text [ portuguese ] = " o nmero de tentativas independentes." ;
-            Text [ finnish ] = "Koeyritysten mr." ;
+            Text [ finnish ] = "Koeyritysten mr" ;
             Text [ danish ] = "Antallet af forsg" ;
             Text [ french ] = "Nombre de tentatives" ;
             Text [ swedish ] = "Antalet frsk." ;
@@ -25482,6 +26294,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Deney says";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre d'avaluacions.";
+            Text[ thai ] = "จำนวนของการทดลอง";
         };
         String 4 // Name of Parameter 2
         {
@@ -25499,7 +26312,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "prob_xito" ;
             Text [ english_us ] = "SP" ;
             Text[ chinese_simplified ] = "probability_s";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "P";
             Text[ japanese ] = "確率";
             Text[ chinese_traditional ] = "probability_s";
@@ -25511,6 +26324,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Olaslk";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "SP";
+            Text[ thai ] = "SP";
         };
         String 5 // Description of Parameter 2
         {
@@ -25520,11 +26334,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Probabilit singola per una prova" ;
             Text [ portuguese_brazilian ] = "Einzelwahrscheinlichkeit eines Versuchsergebnis" ;
             Text [ portuguese ] = " a probabilidade de sucesso em cada tentativa." ;
-            Text [ finnish ] = "Koetuloksen yksittinen todennkisyys." ;
+            Text [ finnish ] = "Koetuloksen yksittinen todennkisyys" ;
             Text [ danish ] = "Enkeltsandsynligheden for et forsgsresultat." ;
             Text [ french ] = "La probabilit individuelle d'un succs de tentative." ;
             Text [ swedish ] = "Enskild sannolikhet fr ett frsksresultat." ;
-            Text [ dutch ] = "Kans op succes bij een test." ;
+            Text [ dutch ] = "Kans op succes bij test." ;
             Text [ spanish ] = "cada probabilidad de un resultado de ensayo" ;
             Text [ english_us ] = "The individual probability of a trial result." ;
             Text[ chinese_simplified ] = "单个试验的成功概率";
@@ -25533,13 +26347,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ japanese ] = "試行が1回成功する確率。";
             Text[ chinese_traditional ] = "單個試驗的成功概率";
             Text[ arabic ] = "    .";
-            Text[ dutch ] = "Kans op succes bij een test.";
+            Text[ dutch ] = "Kans op succes bij test.";
             Text[ chinese_simplified ] = "单个试验的成功概率";
             Text[ greek ] = "    ";
             Text[ korean ] = "실험결과의 개별 확률";
             Text[ turkish ] = "Deney sonucunun bireysel olasl";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Probabilitat individual d'un resultat d'avaluaci.";
+            Text[ thai ] = "ความน่าจะเป็นเฉพาะของผลลัพธ์ที่ทดลอง";
         };
         String 6 // Name of Parameter 3
         {
@@ -25557,7 +26372,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "lmite_inf" ;
             Text [ english_us ] = "T_1" ;
             Text[ chinese_simplified ] = "T_1";
-            Text[ russian ] = "T_1";
+            Text[ russian ] = "_1";
             Text[ polish ] = "T_1";
             Text[ japanese ] = "下限";
             Text[ chinese_traditional ] = "T_1";
@@ -25569,6 +26384,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "T_1";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "T_1";
+            Text[ thai ] = "T_1";
         };
         String 7 // Description of Parameter 3
         {
@@ -25578,7 +26394,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Limite inferiore del numero di tentativi" ;
             Text [ portuguese_brazilian ] = "Untere Schranke der Versuchsanzahl." ;
             Text [ portuguese ] = " o nmero inferior da possibilidade de tentativas." ;
-            Text [ finnish ] = "Koeyritysten vhimmismr." ;
+            Text [ finnish ] = "Koeyritysten alaraja" ;
             Text [ danish ] = "Nedre grnse for antal forsg." ;
             Text [ french ] = "Limite infrieure du nombre de tentatives." ;
             Text [ swedish ] = "Undre grns fr frsksantal." ;
@@ -25598,6 +26414,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Deney says alt limiti.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Lmit inferior per al nombre d'avaluacions.";
+            Text[ thai ] = "ขีดจำกัดล่างสำหรับจำนวนของการทดลอง";
         };
         String 8 // Name of Parameter 4
         {
@@ -25615,7 +26432,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "lmite_sup" ;
             Text [ english_us ] = "T_2" ;
             Text[ chinese_simplified ] = "T_2";
-            Text[ russian ] = "T_2";
+            Text[ russian ] = "_2";
             Text[ polish ] = "T_2";
             Text[ japanese ] = "上限";
             Text[ chinese_traditional ] = "T_2";
@@ -25627,6 +26444,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "T_2";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "T_2";
+            Text[ thai ] = "T_2";
         };
         String 9 // Description of Parameter 4
         {
@@ -25636,7 +26454,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Limite superiore del numero di tentativi" ;
             Text [ portuguese_brazilian ] = "Obere Schranke der Versuchsanzahl." ;
             Text [ portuguese ] = " o nmero superior da possibilidade de tentativas." ;
-            Text [ finnish ] = "Koeyritysten enimmismr." ;
+            Text [ finnish ] = "Koeyritysten ylraja" ;
             Text [ danish ] = "vre grnse for antal forsg." ;
             Text [ french ] = "Limite suprieure du nombre de tentatives." ;
             Text [ swedish ] = "vre grns fr frsksantal." ;
@@ -25656,6 +26474,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Deney says st limiti.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Lmit superior per al nombre d'avaluacions.";
+            Text[ thai ] = "ขีดจำกัดบนของจำนวนการทดลอง";
         };
     };
      // -=*# Resource for function PHI #*=-
@@ -25669,7 +26488,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Restituisce i valori della funzione di distribuzione per una distribuzione normale standard." ;
             Text [ portuguese_brazilian ] = "Werte der Verteilungsfunktion zur Standardnormalverteilung" ;
             Text [ portuguese ] = "Devolve os valores da funo de distribuio para uma distribuio padro normal." ;
-            Text [ finnish ] = "Normaalijakauman jakaumafunktion arvot." ;
+            Text [ finnish ] = "Normaalijakauman jakaumafunktion arvot" ;
             Text [ danish ] = "Vrdier for standardnormalfordelingen" ;
             Text [ french ] = "Valeurs de la fonction de distribution pour la distribution normale standard." ;
             Text [ swedish ] = "Vrdet av frdelningsfunktionen fr standardnormalfrdelningen." ;
@@ -25677,7 +26496,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve los valores de la funcin de distribucin para una distribucin normal predeterminada" ;
             Text [ english_us ] = "Values of the distribution function for a standard normal distribution." ;
             Text[ chinese_simplified ] = "标准正态分布的分布函数值。";
-            Text[ russian ] = "      .";
+            Text[ russian ] = "       .";
             Text[ polish ] = "Wartoci funkcji gstoci dla standardowego rozkadu normalnego.";
             Text[ japanese ] = "標準正規分布の分布関数の値を返します。";
             Text[ chinese_traditional ] = "標準正態分佈的分佈函數值。";
@@ -25689,6 +26508,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Datm fonksiyonunun, standart normal datm ile ilgili deerleri.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valors de la funci de distribuci per a una distribuci normal estndard.";
+            Text[ thai ] = "ค่าของฟังก์ชั่นการแจกแจงสำหรับการแจกแจงปกติมาตรฐาน";
         };
         ExtraData =
         {
@@ -25724,6 +26544,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -25733,7 +26554,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Il valore per il quale calcolare la distribuzione normale standard." ;
             Text [ portuguese_brazilian ] = "Der Wert, zu dem die Standardnormalverteilung berechnet wird." ;
             Text [ portuguese ] = " o valor para o qual deseja calcular a distribuio padro normal." ;
-            Text [ finnish ] = "Arvo, jonka normaalijakauma (keskiarvo 0, vakiopoikkeama 1) lasketaan." ;
+            Text [ finnish ] = "Arvo, jonka normaalijakauma lasketaan." ;
             Text [ danish ] = "Den vrdi som standardnormalfordelingen skal beregnes for." ;
             Text [ french ] = "La valeur pour laquelle vous voulez calculer la distribution normale standard." ;
             Text [ swedish ] = "Vrdet fr vilket standardnormalfrdelningen berknas." ;
@@ -25753,6 +26574,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Standart normal datm hesaplanacak deer.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor la distribuci normal estndard del qual s'ha de calcular.";
+            Text[ thai ] = "ค่าสำหรับคำนวณการแจกแจงปกติมาตรฐาน";
         };
     };
      // -=*# Resource for function GAUSS #*=-
@@ -25770,7 +26592,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ danish ] = "Integralvrdier for standardnormalfordelingen." ;
             Text [ french ] = "Renvoie les valeurs de l'intgrale de la distribution normale standard." ;
             Text [ swedish ] = "Integralvrdet av standardnormalfrdelningen." ;
-            Text [ dutch ] = "Integrale waarden van de standaardnormale verdeling." ;
+            Text [ dutch ] = "Integrale waarden van de standaard normale verdeling." ;
             Text [ spanish ] = "Devuelve el valor de la integral de la distribucin normal predeterminada." ;
             Text [ english_us ] = "Returns the integral values of the standard normal cumulative distribution." ;
             Text[ chinese_simplified ] = "标准正态分布的积分值。";
@@ -25779,13 +26601,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ japanese ] = "標準正規分布の積分値を返します。";
             Text[ chinese_traditional ] = "標準正態分佈的積分值。";
             Text[ arabic ] = "    .";
-            Text[ dutch ] = "Integrale waarden van de standaardnormale verdeling.";
+            Text[ dutch ] = "Integrale waarden van de standaard normale verdeling.";
             Text[ chinese_simplified ] = "标准正态分布的积分值。";
             Text[ greek ] = "     .";
             Text[ korean ] = "표준 정규 분포의 적분값";
             Text[ turkish ] = "Standart normal sapmann integral deerleri.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna els valors integrals de la distribuci acumulativa normal estndard.";
+            Text[ thai ] = "ส่งกลับค่าอินทิเกรตของการแจกแจงสะสมปกติมาตรฐาน";
         };
         ExtraData =
         {
@@ -25821,6 +26644,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -25838,7 +26662,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es el valor para el cual se desea calcular el valor de la integral de la distribucin normal predeterminada" ;
             Text [ english_us ] = "The value for which the integral value of the standard normal distribution is to be calculated." ;
             Text[ chinese_simplified ] = "用于计算标准正态分布积分值的数值。";
-            Text[ russian ] = ",         .";
+            Text[ russian ] = ",         .";
             Text[ polish ] = "Warto, dla ktrej ma zosta obliczony standardowy rozkad normalny.";
             Text[ japanese ] = "標準正規分布の積分値を求める数値。";
             Text[ chinese_traditional ] = "用於計算標準正態分佈積分值的數值。";
@@ -25850,6 +26674,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Standart normal sapmann integral deeri hesaplanacak deer.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor el valor integral de la distribuci normal estndard del qual s'ha de calcular.";
+            Text[ thai ] = "ค่าสำหรับคำนวณค่าอินทิเกรตของการแจกแจงปกติมาตรฐาน";
         };
     };
      // -=*# Resource for function FISHER #*=-
@@ -25879,10 +26704,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Berekent de Fisher-Transformatie.";
             Text[ chinese_simplified ] = "计算 Fisher 变换。";
             Text[ greek ] = "   Fisher.";
-            Text[ korean ] = "Fisher 변환의 계산";
+            Text[ korean ] = "Fisher 변환을 계산";
             Text[ turkish ] = "Fisher transformasyonunun hesaplanmas";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna la transformaci de Fisher.";
+            Text[ thai ] = "ส่งกลับการสับเปลี่ยนแบบ Fisher ";
         };
         ExtraData =
         {
@@ -25918,6 +26744,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -25927,7 +26754,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = " un valore numerico di cui si desidera la trasformazione." ;
             Text [ portuguese_brazilian ] = "Der Wert, der transformiert wird (-1 < WERT < 1)." ;
             Text [ portuguese ] = " um valor numrico a ser transformado." ;
-            Text [ finnish ] = "Muunnettava arvo (-1 < arvo < 1)." ;
+            Text [ finnish ] = "Muunnettava arvo (-1 < arvo < 1)" ;
             Text [ danish ] = "Vrdien som skal transformeres (-1 < VRDI < 1)." ;
             Text [ french ] = "La valeur pour laquelle vous voulez effectuer la transformation (-1 < VALEUR < 1)." ;
             Text [ swedish ] = "Vrdet som transformeras. (-1 < VRDE < 1)" ;
@@ -25947,6 +26774,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Dntrlecek deer (-1 < DEER < 1).";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor que s'ha de transformar (-1 < VALOR <1).";
+            Text[ thai ] = "ค่าที่ถูกสับเปลี่ยน (-1 < ค่า < 1)";
         };
     };
      // -=*# Resource for function FISHERINV #*=-
@@ -25980,6 +26808,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Ters Fisher transformasyonunun hesaplanmas";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna la inversa de la transformaci de Fisher.";
+            Text[ thai ] = "ส่งกลับอินเวิร์สของการสับเปลี่ยนแบบ Fisher ";
         };
         ExtraData =
         {
@@ -26015,6 +26844,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -26025,11 +26855,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Valore per il quale si desidera eseguire l'inversa della trasformazione." ;
             Text [ portuguese_brazilian ] = "Der Wert, der r?ktransformiert wird." ;
             Text [ portuguese ] = " o valor para o qual se deseja o inverso da transformao." ;
-            Text [ finnish ] = "Takaisin muunnettava arvo." ;
+            Text [ finnish ] = "Takaisin muunnettava arvo" ;
             Text [ danish ] = "Vrdien som den inverse transformation skal udfres p." ;
             Text [ french ] = "La valeur pour laquelle vous voulez effectuer la transformation inverse." ;
             Text [ swedish ] = "Vrdet som tertransformeras." ;
-            Text [ dutch ] = "De waarde waarop inverse rransformatie toegepast wordt." ;
+            Text [ dutch ] = "De waarde waarop inverse transformatie toegepast wordt." ;
             Text [ spanish ] = "es el valor al que se le realizar la transformacin inversa." ;
             Text [ english_us ] = "The value that is to be transformed back." ;
             Text[ chinese_simplified ] = "需要进行逆变换的数值。";
@@ -26038,13 +26868,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ japanese ] = "フィッシャーのz変換値。";
             Text[ chinese_traditional ] = "需要進行逆變換的數值。";
             Text[ arabic ] = "    .";
-            Text[ dutch ] = "De waarde waarop inverse rransformatie toegepast wordt.";
+            Text[ dutch ] = "De waarde waarop inverse transformatie toegepast wordt.";
             Text[ chinese_simplified ] = "需要进行逆变换的数值。";
             Text[ greek ] = "          .";
             Text[ korean ] = "재변형될 값";
             Text[ turkish ] = "Geriye dntrlen deer.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor que s'ha de tornar a transformar.";
+            Text[ thai ] = "ค่าที่ถูกสับเปลี่ยนกลับ";
         };
     };
      // -=*# Resource for function BINOMVERT #*=-
@@ -26058,7 +26889,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Restituisce la distribuzione binomiale." ;
             Text [ portuguese_brazilian ] = "Werte der Binomialverteilung." ;
             Text [ portuguese ] = "Calcula a probabilidade de uma varivel aleatria seguindo a distribuio binomial." ;
-            Text [ finnish ] = "Binomijakauman arvot." ;
+            Text [ finnish ] = "Binomijakauman arvot" ;
             Text [ danish ] = "Vrdier for binomialfordelingen" ;
             Text [ french ] = "Valeurs la distribution binomiale." ;
             Text [ swedish ] = "Binomialfrdelningens vrden." ;
@@ -26066,7 +26897,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve la probabilidad de una variable aleatoria discreta siguiendo una distribucin binomial." ;
             Text [ english_us ] = "Values of the binomial distribution." ;
             Text[ chinese_simplified ] = "二项式分布的概率值。";
-            Text[ russian ] = "    .";
+            Text[ russian ] = "      .";
             Text[ polish ] = "Wyznacza rozkad dwumianowy.";
             Text[ japanese ] = "二項分布の確率を返します。";
             Text[ chinese_traditional ] = "二項式分佈的概率值。";
@@ -26078,6 +26909,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Binom datmnn deerleri.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valors de la distribuci binomial.";
+            Text[ thai ] = "ค่าของการแจกแจงแบบทวินาม";
         };
         ExtraData =
         {
@@ -26112,7 +26944,8 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ korean ] = "X";
             Text[ turkish ] = "X";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Nombre";
+            Text[ catalan ] = "X";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -26122,7 +26955,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Numero dei successi in prove." ;
             Text [ portuguese_brazilian ] = "Die Anzahl der Erfolge in der Versuchsreihe." ;
             Text [ portuguese ] = " o nmero de tentativas bem sucedidas." ;
-            Text [ finnish ] = "Onnistumisten mr koeyrityksiss." ;
+            Text [ finnish ] = "Onnistumisten mr koeyrityksiss" ;
             Text [ danish ] = "Antallet af gunstige udfald af forsgene." ;
             Text [ french ] = "Le nombre de succs dans la srie de tentatives." ;
             Text [ swedish ] = "Antalet framgngar i en rad frsk." ;
@@ -26130,7 +26963,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es el nmero de xitos en los ensayos." ;
             Text [ english_us ] = "The number of successes in a series of trials." ;
             Text[ chinese_simplified ] = "试验系列的成功次数。";
-            Text[ russian ] = "  .";
+            Text[ russian ] = "   .";
             Text[ polish ] = "Liczba sukcesw podczas prb.";
             Text[ japanese ] = "試行回数に含まれる成功の回数。";
             Text[ chinese_traditional ] = "試驗系列的成功次數。";
@@ -26142,6 +26975,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Deney dizisindeki baar says.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre d'xits en una srie d'avaluacions.";
+            Text[ thai ] = "จำนวนความสำเร็จในลำดับของการทดลอง";
         };
         String 4 // Name of Parameter 2
         {
@@ -26171,6 +27005,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Deney";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "avaluacions";
+            Text[ thai ] = "การทดลอง";
         };
         String 5 // Description of Parameter 2
         {
@@ -26180,7 +27015,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Numero di prove indipendenti." ;
             Text [ portuguese_brazilian ] = "Die Gesamtanzahl der Versuche." ;
             Text [ portuguese ] = " o nmero de tentativas independentes." ;
-            Text [ finnish ] = "Koeyritysten kokonaismr." ;
+            Text [ finnish ] = "Koeyritysten kokonaismr" ;
             Text [ danish ] = "Det samlede antal forsg." ;
             Text [ french ] = "Le nombre de tentatives." ;
             Text [ swedish ] = "Det totala antalet frsk." ;
@@ -26188,7 +27023,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es el nmero de ensayos independientes." ;
             Text [ english_us ] = "The total number of trials." ;
             Text[ chinese_simplified ] = "试验总次数。";
-            Text[ russian ] = "  .";
+            Text[ russian ] = "  .";
             Text[ polish ] = "Oglna liczba prb.";
             Text[ japanese ] = "独立試行の回数。";
             Text[ chinese_traditional ] = "試驗總次數。";
@@ -26200,6 +27035,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Toplam deney says.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre total d'avaluacions.";
+            Text[ thai ] = "จำนวนทั้งหมดของการทดลอง";
         };
         String 6 // Name of Parameter 3
         {
@@ -26217,7 +27053,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "prob_xito" ;
             Text [ english_us ] = "SP" ;
             Text[ chinese_simplified ] = "probabiltiy_s";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "prawdopodob_s";
             Text[ japanese ] = "母比率";
             Text[ chinese_traditional ] = "probabiltiy_s";
@@ -26229,6 +27065,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Olaslk";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "SP";
+            Text[ thai ] = "SP";
         };
         String 7 // Description of Parameter 3
         {
@@ -26238,7 +27075,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Probabilit di successo per ciascuna prova." ;
             Text [ portuguese_brazilian ] = "Die Erfolgswahrscheinlichkeit eines Versuchs." ;
             Text [ portuguese ] = " a probabilidade de sucesso em cada tentativa." ;
-            Text [ finnish ] = "Koeyrityksen onnistumistodennkisyys." ;
+            Text [ finnish ] = "Koeyrityksen onnistumistodennkisyys" ;
             Text [ danish ] = "Sandsynligheden for et gunstigt udfald." ;
             Text [ french ] = "La probabilit de succs d'une tentative." ;
             Text [ swedish ] = "Sannolikheten att ett frsk lyckas." ;
@@ -26258,6 +27095,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Deneyin baar olasl.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "La probabilitat d'xit d'una avaluaci.";
+            Text[ thai ] = "ความน่าจะเป็นในความสำเร็จของการทดลอง";
         };
         String 8 // Name of Parameter 4
         {
@@ -26275,7 +27113,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "acumulado" ;
             Text [ english_us ] = "C" ;
             Text[ chinese_simplified ] = "cumulative";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "Skumulowany";
             Text[ japanese ] = "関数形式";
             Text[ chinese_traditional ] = "cumulative";
@@ -26287,6 +27125,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ language_user1 ] = " ";
             Text[ turkish ] = "K";
             Text[ catalan ] = "C";
+            Text[ thai ] = "C";
         };
         String 9 // Description of Parameter 4
         {
@@ -26296,7 +27135,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Se il valore = 0 calcola la probabilit individuale, se = 1 calcola la probabilit cumulativa." ;
             Text [ portuguese_brazilian ] = "Kumuliert. K = 0 berechnet die Einzel-, K = 1 die kumulierte Wahrscheinlichkeit." ;
             Text [ portuguese ] = " um valor lgico que determina a forma da funo. 1 devolve a densidade de probabilidade, 0 devolve a funo cumulativa." ;
-            Text [ finnish ] = "Kumuloitu. C = 0 laskee yksittisen todennkisyyden, C = 1 kumulatiivisen todennkisyyden." ;
+            Text [ finnish ] = "Kumuloitu C = 0 laskee yksittisen todennkisyyden, C = 1 kumulatiivisen todennkisyyden." ;
             Text [ danish ] = "Kumulativ. K = 0 beregner enkeltsandsynligheden, K = 1 den kumulerede sandsynlighed." ;
             Text [ french ] = "Cumulative. C = 0 calcule la probabilit individuelle, C = 1 la probabilit cumulative." ;
             Text [ swedish ] = "Kumulerat. K = 0 berknar den enskilda, K = 1 den kumulerade sannolikheten." ;
@@ -26304,7 +27143,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es un valor lgico que determina la forma de la funcin. 1 devuelve la densidad de probabilidad, 0 devuelve la funcin acumulada." ;
             Text [ english_us ] = "Cumulated. C=0 calculates the individual probability, C=1 the cumulated probability." ;
             Text[ chinese_simplified ] = "逻辑值。K = 0 计算概率密度,K = 1 计算累积概率。";
-            Text[ russian ] = " ,   :    (1)     (0).";
+            Text[ russian ] = ". =0   , =1 - .";
             Text[ polish ] = "Skumulowany. K = 0 oblicza pojedyncze prawdopodobiestwo, K = 1 skumulowane prawdopodobiestwo.";
             Text[ japanese ] = "関数形式 0 は確率密度関数、1 は累積分布関数。";
             Text[ chinese_traditional ] = "邏輯值。K = 0 表示計算概率密度﹐K = 1 表示計算累積概率。";
@@ -26316,6 +27155,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Kmlasyon. K = 0 bireysel, K = 1 ise birikmi olasl hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Acumulat. C=0 calcula la probabilitat individual; C=1, la probabilitat acumulada.";
+            Text[ thai ] = "สะสม C=0 คำนวณความน่าจะเป็นเฉพาะ, C=1 ความน่าจะเป็นแบบสะสม";
         };
     };
      // -=*# Resource for function NEGBINOMVERT #*=-
@@ -26329,7 +27169,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Restituisce la distribuzione binomiale negativa." ;
             Text [ portuguese_brazilian ] = "Werte der negativen Binomialverteilung." ;
             Text [ portuguese ] = "Devolve a distribuio binomial negativa." ;
-            Text [ finnish ] = "Negatiivisen binomijakauman arvot." ;
+            Text [ finnish ] = "Negatiivisen binomijakauman arvot" ;
             Text [ danish ] = "Vrdier for den negative binomialfordeling" ;
             Text [ french ] = "Valeurs de la distribution binomiale ngative." ;
             Text [ swedish ] = "Vrden fr den negativa binomialfrdelningen." ;
@@ -26337,7 +27177,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve la probabilidad de una variable aleatoria discreta siguiendo una distribucin binomial negativa." ;
             Text [ english_us ] = "Values of the negative binomial distribution." ;
             Text[ chinese_simplified ] = "负二项式分布。";
-            Text[ russian ] = "   .";
+            Text[ russian ] = "   .";
             Text[ polish ] = "Wyznacza rozkad dwumianowy przeciwny.";
             Text[ japanese ] = "負の二項分布の値。";
             Text[ chinese_traditional ] = "負二項式分佈。";
@@ -26349,6 +27189,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Negatif binom datm deerleri.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valors de la distribuci binomial negativa.";
+            Text[ thai ] = "ค่าลบของการแจกแจงแบบทวินาม";
         };
         ExtraData =
         {
@@ -26384,6 +27225,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "X";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "X";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -26394,7 +27236,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Il numero degli insuccessi." ;
             Text [ portuguese_brazilian ] = "Die Anzahl der Mi?erfolge in der Versuchsreihe." ;
             Text [ portuguese ] = " o nmero de insucessos na srie de tentativas." ;
-            Text [ finnish ] = "Koealueen virhemr." ;
+            Text [ finnish ] = "Koealueen virhemr" ;
             Text [ danish ] = "Antallet af mislykkede forsg." ;
             Text [ french ] = "Le nombre d'checs dans une srie de tentatives." ;
             Text [ swedish ] = "Antalet misslyckanden i en rad frsk." ;
@@ -26414,6 +27256,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Deneme aralndaki baarszlklarn says.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre de fallades en l'rea d'avaluaci.";
+            Text[ thai ] = "ตัวเลขของความล้มเหลวในช่วงการทดลอง";
         };
         String 4 // Name of Parameter 2
         {
@@ -26431,7 +27274,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "nm_xitos" ;
             Text [ english_us ] = "R" ;
             Text[ chinese_simplified ] = "number_s";
-            Text[ russian ] = "_s";
+            Text[ russian ] = "R";
             Text[ polish ] = "liczba_s";
             Text[ japanese ] = "成功数";
             Text[ chinese_traditional ] = "number_s";
@@ -26443,6 +27286,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "R";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "R";
+            Text[ thai ] = "R";
         };
         String 5 // Description of Parameter 2
         {
@@ -26452,7 +27296,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Il numero dei successi nella serie." ;
             Text [ portuguese_brazilian ] = "Die Anzahl der Erfolge in der Versuchsreihe." ;
             Text [ portuguese ] = " o nmero de sucessos na srie de tentativas." ;
-            Text [ finnish ] = "Koeyritysten onnistumisten mr." ;
+            Text [ finnish ] = "Koeyritysten onnistumisten mr" ;
             Text [ danish ] = "Antallet af gunstige udfald." ;
             Text [ french ] = "Le nombre de succs dans la srie de tentatives." ;
             Text [ swedish ] = "Antalet framgngar i en rad frsk." ;
@@ -26460,7 +27304,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es el nmero de xitos." ;
             Text [ english_us ] = "The number of successes in the trial sequence." ;
             Text[ chinese_simplified ] = "试验系统的成功次数。";
-            Text[ russian ] = "  .";
+            Text[ russian ] = "   .";
             Text[ polish ] = "Liczba sukcesw w serii prb.";
             Text[ japanese ] = "試行が成功する回数。";
             Text[ chinese_traditional ] = "試驗系列的成功次數。";
@@ -26472,6 +27316,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Deney dizisindeki baar says.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre d'xits en la seqncia d'avaluaci.";
+            Text[ thai ] = "จำนวนของความสำเร็จในลำดับการทดลอง";
         };
         String 6 // Name of Parameter 3
         {
@@ -26489,7 +27334,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "prob_xito" ;
             Text [ english_us ] = "SP" ;
             Text[ chinese_simplified ] = "probability_s";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "prawdopodob_s";
             Text[ japanese ] = "成功率";
             Text[ chinese_traditional ] = "probability_s";
@@ -26501,6 +27346,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Olaslk";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "SP";
+            Text[ thai ] = "SP";
         };
         String 7 // Description of Parameter 3
         {
@@ -26510,7 +27356,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "La probabilit di successo per ogni singola prova." ;
             Text [ portuguese_brazilian ] = "Die Erfolgswahrscheinlichkeit eines Versuchs." ;
             Text [ portuguese ] = " a probabilidade de obter um sucesso." ;
-            Text [ finnish ] = "Koeyrityksen onnistumistodennkisyys." ;
+            Text [ finnish ] = "Koeyrityksen onnistumistodennkisyys" ;
             Text [ danish ] = "Sandsynligheden for et gunstigt udfald." ;
             Text [ french ] = "La probabilit de succs d'une tentative." ;
             Text [ swedish ] = "Sannolikheten att ett frsk lyckas." ;
@@ -26530,6 +27376,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Deneyin baar olasl.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "La probabilitat d'xit d'una avaluaci.";
+            Text[ thai ] = "ความน่าจะเป็นของความสำเร็จของการทดลอง";
         };
     };
      // -=*# Resource for function KRITBINOM #*=-
@@ -26543,26 +27390,27 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Restituisce gli argomenti limite della distribuzione binomiale." ;
             Text [ portuguese_brazilian ] = "Grenzargumente der Binomialverteilung." ;
             Text [ portuguese ] = "Devolve o menor valor, sendo a distribuio binomial cumulativa maior ou igual ao valor de critrio." ;
-            Text [ finnish ] = "Binomijakauman raja-arvot." ;
+            Text [ finnish ] = "Binomijakauman raja-arvot" ;
             Text [ danish ] = "Binomialfordelingens grnseargumenter." ;
             Text [ french ] = "Arguments limites de la distribution binomiale." ;
             Text [ swedish ] = "Binomialfrdelningens grnsargument." ;
-            Text [ dutch ] = "Berekent de grenswaarden voor een binomiale verdeling." ;
-            Text [ spanish ] = "Devuelve el menor valor cuya distribucin binomial acumulativa es menor o igual que un valor de criterio." ;
+            Text [ dutch ] = "De grenswaarden voor een binomiale verdeling." ;
+            Text [ spanish ] = "Argumentos lmites de la distribucin binomial." ;
             Text [ english_us ] = "Border arguments of the binomial distribution." ;
             Text[ chinese_simplified ] = "二项式分布的最小值。";
-            Text[ russian ] = "  ,          .";
+            Text[ russian ] = "    .";
             Text[ polish ] = "Podaje najmniejsz warto, dla ktrej czny rozkad dwumianowy jest wikszy lub rwny wartoci krytycznej.";
             Text[ japanese ] = "二項分布の分布関数の値が基準値以上になる最小の値を返します。";
             Text[ chinese_traditional ] = "二項式分佈的最小值。";
             Text[ arabic ] = "    .";
-            Text[ dutch ] = "Berekent de grenswaarden voor een binomiale verdeling.";
+            Text[ dutch ] = "De grenswaarden voor een binomiale verdeling.";
             Text[ chinese_simplified ] = "二项式分布的最小值。";
             Text[ greek ] = "    ";
             Text[ korean ] = "이항 분포의 경계 독립 변수입니다.";
             Text[ turkish ] = "Binom datmnn snr deikenleri.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Arguments lmit de la distribuci binomial.";
+            Text[ thai ] = "อาร์กิวเมนต์เส้นขอบของการแจกแจงแบบทวินาม";
         };
         ExtraData =
         {
@@ -26598,6 +27446,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Deney";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "avaluacions";
+            Text[ thai ] = "การทดลอง";
         };
         String 3 // Description of Parameter 1
         {
@@ -26607,7 +27456,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Numero complessivo delle prove." ;
             Text [ portuguese_brazilian ] = "Die Gesamtanzahl der Versuche." ;
             Text [ portuguese ] = " o nmero total de tentativas." ;
-            Text [ finnish ] = "Koeyritysten kokonaismr." ;
+            Text [ finnish ] = "Koeyritysten kokonaismr" ;
             Text [ danish ] = "Det samlede antal forsg." ;
             Text [ french ] = "Le nombre de tentatives." ;
             Text [ swedish ] = "Det totala antalet frsk." ;
@@ -26615,7 +27464,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es el nmero total de intentos." ;
             Text [ english_us ] = "The total number of trials." ;
             Text[ chinese_simplified ] = "试验次数。";
-            Text[ russian ] = "  .";
+            Text[ russian ] = "  .";
             Text[ polish ] = "Liczba prb Bernoulli'ego.";
             Text[ japanese ] = "試行の回数。";
             Text[ chinese_traditional ] = "試驗次數。";
@@ -26627,6 +27476,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Toplam deney says.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre total d'avaluacions.";
+            Text[ thai ] = "จำนวนการทดลองทั้งหมด";
         };
         String 4 // Name of Parameter 2
         {
@@ -26644,7 +27494,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "prob_xito" ;
             Text [ english_us ] = "SP" ;
             Text[ chinese_simplified ] = "probability_s";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "P";
             Text[ japanese ] = "成功率";
             Text[ chinese_traditional ] = "probability_s";
@@ -26656,6 +27506,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Olaslk";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "SP";
+            Text[ thai ] = "SP";
         };
         String 5 // Description of Parameter 2
         {
@@ -26665,7 +27516,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Probabilit di un successo per ogni singola prova." ;
             Text [ portuguese_brazilian ] = "Die Erfolgswahrscheinlichkeit eines Versuchs." ;
             Text [ portuguese ] = " a probabilidade de sucesso de uma tentativa." ;
-            Text [ finnish ] = "Koeyrityksen onnistumistodennkisyys." ;
+            Text [ finnish ] = "Koeyrityksen onnistumistodennkisyys" ;
             Text [ danish ] = "Sandsynligheden for et gunstigt udfald." ;
             Text [ french ] = "La probabilit de succs d'une tentative." ;
             Text [ swedish ] = "Sannolikheten att ett frsk skall lyckas." ;
@@ -26673,7 +27524,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es la probabilidad de xito en cada ensayo." ;
             Text [ english_us ] = "The success probability of a trial." ;
             Text[ chinese_simplified ] = "每个试验的成功概率。";
-            Text[ russian ] = "    .";
+            Text[ russian ] = "   .";
             Text[ polish ] = "Prawdopodobiestwo sukcesu prby.";
             Text[ japanese ] = "1回の試行が成功する確率。";
             Text[ chinese_traditional ] = "每個試驗的成功概率。";
@@ -26685,6 +27536,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Deneyin baar olasl.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "La probabilitat d'xit d'una avaluaci.";
+            Text[ thai ] = "ความน่าจะเป็นของความสำเร็จของการทดลอง";
         };
         String 6 // Name of Parameter 3
         {
@@ -26714,6 +27566,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Alfa";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Alfa";
+            Text[ thai ] = "อัลฟ่า";
         };
         String 7 // Description of Parameter 3
         {
@@ -26724,12 +27577,12 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "La probabilit limite che pu essere raggiunta oppure superata." ;
             Text [ portuguese_brazilian ] = "Die Grenzwahrscheinlichkeit, die erreicht oder ?erschritten wird." ;
             Text [ portuguese ] = " o critrio de valor." ;
-            Text [ finnish ] = "Saavutettu tai ylitetty todennkisyyden raja-arvo." ;
+            Text [ finnish ] = "Saavutettu tai ylitetty todennkisyyden raja-arvo" ;
             Text [ danish ] = "Grnsesandsynligheden som opns eller overskrides." ;
             Text [ french ] = "La probabilit limite qui doit tre gale ou excde." ;
             Text [ swedish ] = "Grnssannolikheten som uppns eller verskrids." ;
             Text [ dutch ] = "De grenzen van een kansbereik." ;
-            Text [ spanish ] = "es el valor del criterio." ;
+            Text [ spanish ] = "La probabilidad lmite que se puede alcanzar o superar." ;
             Text [ english_us ] = "The border probability that is attained or exceeded." ;
             Text[ chinese_simplified ] = "临界值。";
             Text[ russian ] = " ,     .";
@@ -26744,6 +27597,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Eriilen ya da alan snr olasl.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "La probabilitat llindar que s'aconsegueix o excedeix.";
+            Text[ thai ] = "ความน่าจะเป็นของเส้นขอบที่ได้รับหรือเกิน";
         };
     };
      // -=*# Resource for function POISSON #*=-
@@ -26765,7 +27619,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve la probabilidad de una variable aleatoria siguiendo la distribucin de Poisson" ;
             Text [ english_us ] = "Returns the Poisson distribution." ;
             Text[ chinese_simplified ] = "计算泊松分布。";
-            Text[ russian ] = "  .";
+            Text[ russian ] = "  .";
             Text[ polish ] = "Wyznacza rozkad Poissona.";
             Text[ japanese ] = "ポアソン分布の密度関数値または分布関数値を返します。";
             Text[ chinese_traditional ] = "計算泊松分佈。";
@@ -26777,6 +27631,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Poisson datm deerleri";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna la distribuci de Poisson.";
+            Text[ thai ] = "ส่งกลับการกระจายแบบ Poisson ";
         };
         ExtraData =
         {
@@ -26812,6 +27667,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -26829,7 +27685,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es el nmero de sucesos." ;
             Text [ english_us ] = "The value for which the Poisson distribution is to be calculated." ;
             Text[ chinese_simplified ] = "事件数。";
-            Text[ russian ] = " .";
+            Text[ russian ] = ",     .";
             Text[ polish ] = "Warto, dla ktrej ma zosta obliczony rozkad Poissona.";
             Text[ japanese ] = "計算対象となる数値。";
             Text[ chinese_traditional ] = "事件數。";
@@ -26841,6 +27697,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Poisson datm hesaplanacak deer.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor la distribuci de Poisson del qual s'ha de calcular.";
+            Text[ thai ] = "ค่าสำหรับคำนวณการกระจายแบบ Poisson ";
         };
         String 4 // Name of Parameter 2
         {
@@ -26870,6 +27727,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Ortalama";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "mitja";
+            Text[ thai ] = "ค่าเฉลี่ย";
         };
         String 5 // Description of Parameter 2
         {
@@ -26879,7 +27737,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Media della distribuzione di Poisson." ;
             Text [ portuguese_brazilian ] = "Mittelwert. Der Mittelwert der Poisson-Verteilung." ;
             Text [ portuguese ] = " o valor numrico esperado." ;
-            Text [ finnish ] = "Keskiarvo. Poisson-jakauman keskiarvo." ;
+            Text [ finnish ] = "Keskiarvo Poisson-jakauman keskiarvo" ;
             Text [ danish ] = "Middelvrdi. Poisson-fordelingens middelvrdi." ;
             Text [ french ] = "La moyenne de la distribution Poisson." ;
             Text [ swedish ] = "Medelvrde. Medelvrdet fr Poissonfrdelningen." ;
@@ -26887,7 +27745,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es el valor numrico esperado." ;
             Text [ english_us ] = "Mean. The mean value of the Poisson distribution." ;
             Text[ chinese_simplified ] = "期望值。";
-            Text[ russian ] = "  .";
+            Text[ russian ] = ".    .";
             Text[ polish ] = "rednia rozkadu Poissona.";
             Text[ japanese ] = "ポアソン定数。平均値。";
             Text[ chinese_traditional ] = "期望值。";
@@ -26899,6 +27757,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Ortalama deer. Poisson datmnn ortalama deeri.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Mitja. El valor mitj de la distribuci de Poisson.";
+            Text[ thai ] = "ค่าเฉลี่ย  ค่าเฉลี่ยของการกระจายแบบ Poisson ";
         };
         String 6 // Name of Parameter 3
         {
@@ -26916,7 +27775,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "acumulado" ;
             Text [ english_us ] = "C" ;
             Text[ chinese_simplified ] = "cumulative";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "Skumulowany";
             Text[ japanese ] = "関数形式";
             Text[ chinese_traditional ] = "cumulative";
@@ -26928,6 +27787,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "C";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "C";
+            Text[ thai ] = "C";
         };
         String 7 // Description of Parameter 3
         {
@@ -26937,7 +27797,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Se il valore = 0 calcola la densit di probabilit, se = 1 calcola la distribuzione." ;
             Text [ portuguese_brazilian ] = "Kumuliert. K = 0 berechnet die Dichtefunktion, K = 1 die Verteilung." ;
             Text [ portuguese ] = " um valor lgico que determina a forma da distribuio de probabilidades. 0 calcula a funo cumulativa; 1 a distribuio." ;
-            Text [ finnish ] = "Kumuloitu. C = 0 laskee tiheysfunktion ja C = 1 jakauman." ;
+            Text [ finnish ] = "Kumuloitu C = 0 laskee tiheysfunktion ja C = 1 jakauman." ;
             Text [ danish ] = "Kumulativ. K = 0 beregner tthedsfunktionen, K = 1 fordelingen." ;
             Text [ french ] = "Cumulative. C = 0 calcule la fonction de densit, C = 1 la distribution." ;
             Text [ swedish ] = "Kumulerat. K = 0 berknar tthetsfunktionen, K = 1 frdelningen." ;
@@ -26945,7 +27805,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es un valor lgico que determina la forma de la distribucin de probabilidad. Si es 0 calcula la funcin acumulada, si es 1 la distribucin." ;
             Text [ english_us ] = "Cumulated. C=0 calculates the density function, C=1 the distribution." ;
             Text[ chinese_simplified ] = "确定概率分布形式的逻辑值。 K = 0 表示计算密度\n函数, K = 1 表示计算分布函数。";
-            Text[ russian ] = " ,   :   (0)   .";
+            Text[ russian ] = ". =0   , =1 - .";
             Text[ polish ] = "Skumulowany. 0 wyznacza gsto, 1 - rozkad.";
             Text[ japanese ] = "関数形式。0 を指定すると密度関数、1 を指定すると分布関数の値を返します。";
             Text[ chinese_traditional ] = "確定概率分佈形式的邏輯值。 K = 0 計算密度函數﹐ K = 1 計算分佈函數。";
@@ -26957,6 +27817,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Kmlasyon. K = 0 younluk fonksiyonunu, K = 1 ise datm hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Acumulat. C=0 calcula la funci de densitat; C=1, la distribuci.";
+            Text[ thai ] = "สะสม C=0 คำนวณฟังก์ชั่นความหนาแน่น, C=1 การกระจาย";
         };
     };
      // -=*# Resource for function NORMVERT #*=-
@@ -26970,7 +27831,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Restituisce la distribuzione normale." ;
             Text [ portuguese_brazilian ] = "Werte der Normalverteilung" ;
             Text [ portuguese ] = "Devolve a distribuio cumulativa normal." ;
-            Text [ finnish ] = "Normaalijakauman arvot." ;
+            Text [ finnish ] = "Normaalijakauman arvot" ;
             Text [ danish ] = "Vrdier for normalfordelingen" ;
             Text [ french ] = "Valeurs de la distribution normale." ;
             Text [ swedish ] = "Vrden fr normalfrdelningen." ;
@@ -26978,7 +27839,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve la probabilidad de una variable aleatoria continua siguiendo una distribucin acumulativa normal" ;
             Text [ english_us ] = "Values of the normal distribution." ;
             Text[ chinese_simplified ] = "正态分布函数。";
-            Text[ russian ] = "   .";
+            Text[ russian ] = "     .";
             Text[ polish ] = "Wyznacza rozkad normalny.";
             Text[ japanese ] = "正規分布の値を返します。";
             Text[ chinese_traditional ] = "正態分佈函數。";
@@ -26990,6 +27851,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Normal datm deerleri";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valors de la distribuci normal.";
+            Text[ thai ] = "ค่าการกระจายปกติ";
         };
         ExtraData =
         {
@@ -27025,6 +27887,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -27042,7 +27905,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es el valor cuya distribucin desea obtener." ;
             Text [ english_us ] = "The value for which the normal distribution is to be calculated." ;
             Text[ chinese_simplified ] = "要计算其正态分布的数值。";
-            Text[ russian ] = ",    .";
+            Text[ russian ] = ",     .";
             Text[ polish ] = "Warto, dla ktrej ma zosta obliczony rozkad normalny.";
             Text[ japanese ] = "関数に代入する値。";
             Text[ chinese_traditional ] = "要計算其正態分佈的數值。";
@@ -27054,6 +27917,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Normal datm hesaplanacak deer.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor la distribuci normal del qual s'ha de calcular.";
+            Text[ thai ] = "ค่าสำหรับคำนวณการกระจายปกติ";
         };
         String 4 // Name of Parameter 2
         {
@@ -27083,6 +27947,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Ortalama";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "mitja";
+            Text[ thai ] = "ค่าเฉลี่ย";
         };
         String 5 // Description of Parameter 2
         {
@@ -27092,7 +27957,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "La media aritmetica della distribuzione." ;
             Text [ portuguese_brazilian ] = "Mittelwert. Der Mittelwert der Normalverteilung." ;
             Text [ portuguese ] = " a mdia aritmtica da distribuio." ;
-            Text [ finnish ] = "Keskiarvo. Normaalijakauman keskiarvo." ;
+            Text [ finnish ] = "Keskiarvo Normaalijakauman keskiarvo" ;
             Text [ danish ] = "Middelvrdi. Normalfordelingens middelvrdi." ;
             Text [ french ] = "La moyenne de la distribution normale." ;
             Text [ swedish ] = "Medelvrde. Medelvrdet fr normalfrdelningen." ;
@@ -27100,7 +27965,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es la media aritmtica de la distribucin." ;
             Text [ english_us ] = "The mean value. The mean value of the normal distribution." ;
             Text[ chinese_simplified ] = "平均值。正态分布的平均值。";
-            Text[ russian ] = "  .";
+            Text[ russian ] = " .    .";
             Text[ polish ] = "rednia arytmetyczna rozkadu normalnego.";
             Text[ japanese ] = "平均。分布の算術平均(相加平均)。";
             Text[ chinese_traditional ] = "平均值。正態分佈的平均值。";
@@ -27108,10 +27973,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "De gemiddelde waarde van de normale verdeling.";
             Text[ chinese_simplified ] = "平均值。正态分布的平均值。";
             Text[ greek ] = " .      .";
-            Text[ korean ] = "평균값. 정규분포의 평균값.";
+            Text[ korean ] = "평균값. 정규 분포의 평균값.";
             Text[ turkish ] = "Ortalama deer. Normal datmn ortalama deeri.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor mitj. El valor mitj de la distribuci normal.";
+            Text[ thai ] = "ค่าเฉลี่ย  ค่าเฉลี่ยของการกระจายปกติ";
         };
         String 6 // Name of Parameter 3
         {
@@ -27121,7 +27987,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Deviazione standard" ;
             Text [ portuguese_brazilian ] = "STD" ;
             Text [ portuguese ] = "Desvio_padro" ;
-            Text [ finnish ] = "STDEV" ;
+            Text [ finnish ] = "KESKIHAJONTA" ;
             Text [ danish ] = "Standardafv" ;
             Text [ french ] = "ET" ;
             Text [ swedish ] = "STD" ;
@@ -27129,7 +27995,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "desv_predeterminada" ;
             Text [ english_us ] = "STDEV" ;
             Text[ chinese_simplified ] = "standard_dev";
-            Text[ russian ] = "_";
+            Text[ russian ] = "";
             Text[ polish ] = "odchylenie_std";
             Text[ japanese ] = "標準偏差";
             Text[ chinese_traditional ] = "standard_dev";
@@ -27141,6 +28007,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "STDEV";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "STDEV";
+            Text[ thai ] = "ส่วนเบี่ยงเบนมาตรฐาน ";
         };
         String 7 // Description of Parameter 3
         {
@@ -27150,7 +28017,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Deviazione standard della distribuzione." ;
             Text [ portuguese_brazilian ] = "Standardabweichung. Die Standardabweichung der Normalverteilung." ;
             Text [ portuguese ] = " o desvio padro da distribuio." ;
-            Text [ finnish ] = "Vakiopoikkeama. Normaalijakauman vakiopoikkeama." ;
+            Text [ finnish ] = "Keskihajonta Normaalijakauman keskihajonta" ;
             Text [ danish ] = "Standardafvigelse. Normalfordelingens standardafvigelse." ;
             Text [ french ] = "L'cart type de la distribution normale." ;
             Text [ swedish ] = "Standardavvikelse. Standardavvikelsen fr normalfrdelningen." ;
@@ -27158,7 +28025,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es la desviacin predeterminada de la distribucin." ;
             Text [ english_us ] = "Standard deviation. The standard deviation of the normal distribution." ;
             Text[ chinese_simplified ] = "标准偏差。正态分布的标准偏差。";
-            Text[ russian ] = "  .";
+            Text[ russian ] = " .    .";
             Text[ polish ] = "Odchylenie standardowe rozkadu.";
             Text[ japanese ] = "標準偏差。分布の標準偏差。";
             Text[ chinese_traditional ] = "標準偏差。正態分佈的標準偏差。";
@@ -27170,6 +28037,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Standart sapma. Normal datmn standart sapmas.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Desviaci estndard. La desviaci estndard de la distribuci normal.";
+            Text[ thai ] = "ส่วนเบี่ยงเบนมาตรฐาน   ส่วนเบี่ยงเบนมาตรฐานของการกระจายปกติ";
         };
         String 8 // Name of Parameter 4
         {
@@ -27187,7 +28055,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "acum" ;
             Text [ english_us ] = "C" ;
             Text[ chinese_simplified ] = "cumulative";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "Skumulowany";
             Text[ japanese ] = "関数形式";
             Text[ chinese_traditional ] = "cumulative";
@@ -27199,6 +28067,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "C";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "C";
+            Text[ thai ] = "C";
         };
         String 9 // Description of Parameter 4
         {
@@ -27208,7 +28077,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Se il valore = 0 calcola la densit di probabilit, se = 1 calcola la distribuzione." ;
             Text [ portuguese_brazilian ] = "Kumuliert. K = 0 berechnet die Dichtefunktion, K = 1 die Verteilung." ;
             Text [ portuguese ] = " um valor lgico que determina a forma da funo. 0 calcula a funo cumulativa; 1 a distribuio." ;
-            Text [ finnish ] = "Kumuloitu. C = 0 laskee tiheysfunktion ja C = 1 jakauman." ;
+            Text [ finnish ] = "Kumuloitu C = 0 laskee tiheysfunktion ja C = 1 jakauman." ;
             Text [ danish ] = "Kumulativ. K = 0 beregner tthedsfunktionen, K = 1 fordelingen." ;
             Text [ french ] = "Cumulative. C = 0 calcule la fonction de densit, C = 1 la distribution." ;
             Text [ swedish ] = "Kumulerat. K = 0 berknar tthetsfunktionen, K = 1 frdelningen." ;
@@ -27216,7 +28085,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es un valor lgico que determina la forma de la funcin." ;
             Text [ english_us ] = "Cumulated. C=0 calculates the density function, C=1 the distribution." ;
             Text[ chinese_simplified ] = "逻辑值,指明函数类型。 K = 0 表示计算密度函数, \nK = 1 计算分布函数。";
-            Text[ russian ] = " ,   :   (0)    (1).";
+            Text[ russian ] = ". =0   , =1 - .";
             Text[ polish ] = "Skumulowany. 0 oblicza gsto, 1 - rozkad.";
             Text[ japanese ] = "関数形式。関数形式 = 0 にすると確率密度関数の値が、関数形式 = 1 にすると累積分布関数の値が計算されます。";
             Text[ chinese_traditional ] = "邏輯值﹐指明函數類型。 K = 0 表示計算密度函數﹐ K = 1 表示計算分佈函數。";
@@ -27228,6 +28097,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Kmlasyon. K = 0 younluk fonksiyonunu, K = 1 ise datm hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Acumulat. C=0 calcula la funci de densitat; C=1, la distribuci.";
+            Text[ thai ] = "สะสม C=0 คำนวณฟังก์ชั่นความหนาแน่น, C=1 การกระจาย";
         };
     };
      // -=*# Resource for function NORMINV #*=-
@@ -27241,7 +28111,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Restituisce l'inversa della distribuzione normale." ;
             Text [ portuguese_brazilian ] = "Werte der inversen Normalverteilung" ;
             Text [ portuguese ] = "Devolve o inverso da distribuio cumulativa normal." ;
-            Text [ finnish ] = "Knteisen normaalijakauman arvot." ;
+            Text [ finnish ] = "Knteisen normaalijakauman arvot" ;
             Text [ danish ] = "Vrdier for den inverse normalfordeling" ;
             Text [ french ] = "Valeurs de la distribution normale inverse." ;
             Text [ swedish ] = "Vrden fr den inversa normalfrdelningen." ;
@@ -27249,7 +28119,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve, para una probabilidad dada, el valor de la variable aleatoria siguiendo una distribucin acumulativa normal" ;
             Text [ english_us ] = "Values of the inverse normal distribution." ;
             Text[ chinese_simplified ] = "正态分布函数的逆函数。";
-            Text[ russian ] = "   .";
+            Text[ russian ] = "     .";
             Text[ polish ] = "Wyznacza odwrotno normalnego rozkadu skumulowanego.";
             Text[ japanese ] = "正規分布において、上側確率 1-q に対応するパーセント点を返します。";
             Text[ chinese_traditional ] = "正態分佈函數的逆函數。";
@@ -27261,6 +28131,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Ters normal datm deerleri";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valors de la distribuci normal inversa.";
+            Text[ thai ] = "ค่าอินเวิร์สของการกระจายปกติ";
         };
         ExtraData =
         {
@@ -27296,6 +28167,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -27313,7 +28185,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es una probabilidad asociada a la distribucin normal." ;
             Text [ english_us ] = "The probability value for which the inverse normal distribution is to be calculated." ;
             Text[ chinese_simplified ] = "正态分布的概率值。";
-            Text[ russian ] = " ,       .";
+            Text[ russian ] = " ,      .";
             Text[ polish ] = "Prawdopodobiestwo, dla ktrego ma zosta obliczona odwrotno normalnego rozkadu.";
             Text[ japanese ] = "正規分布における確率。";
             Text[ chinese_traditional ] = "正態分佈的概率值。";
@@ -27325,6 +28197,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Ters normal datm hesaplanacak olaslk deeri.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor de probabilitat la distribuci normal inversa del qual s'ha de calcular.";
+            Text[ thai ] = "ค่าความน่าจะเป็นสำหรับคำนวณอินเวิร์สของการกระจายปกติ";
         };
         String 4 // Name of Parameter 2
         {
@@ -27354,6 +28227,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Ortalama";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "mitja";
+            Text[ thai ] = "ค่าเฉลี่ย";
         };
         String 5 // Description of Parameter 2
         {
@@ -27363,7 +28237,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "La media aritmetica della distribuzione." ;
             Text [ portuguese_brazilian ] = "Mittelwert. Der Mittelwert der Normalverteilung." ;
             Text [ portuguese ] = " a mdia aritmtica da distribuio." ;
-            Text [ finnish ] = "Keskiarvo. Normaalijakauman keskiarvo." ;
+            Text [ finnish ] = "Keskiarvo Normaalijakauman keskiarvo" ;
             Text [ danish ] = "Middelvrdi. Normalfordelingens middelvrdi." ;
             Text [ french ] = "La moyenne de la distribution normale." ;
             Text [ swedish ] = "Medelvrde. Medelvrdet fr normalfrdelningen." ;
@@ -27371,7 +28245,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es la media aritmtica de la distribucin." ;
             Text [ english_us ] = "The mean value. The mean value of the normal distribution." ;
             Text[ chinese_simplified ] = "平均值。正态分布的平均值。";
-            Text[ russian ] = "  .";
+            Text[ russian ] = " .    .";
             Text[ polish ] = "rednia arytmetyczna rozkadu normalnego.";
             Text[ japanese ] = "平均。分布の算術平均(相加平均)。";
             Text[ chinese_traditional ] = "平均值。正態分佈的平均值。";
@@ -27379,10 +28253,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "De gemiddelde waarde van de verdeling.";
             Text[ chinese_simplified ] = "平均值。正态分布的平均值。";
             Text[ greek ] = " .      .";
-            Text[ korean ] = "평균값. 정규분포의 평균값.";
+            Text[ korean ] = "평균값. 정규 분포의 평균값.";
             Text[ turkish ] = "Ortalama deer. Normal datmn ortalama deeri.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor mitj. El valor mitj de la distribuci normal.";
+            Text[ thai ] = "ค่าเฉลี่ย  ค่าเฉลี่ยของการกระจายปกติ";
         };
         String 6 // Name of Parameter 3
         {
@@ -27392,7 +28267,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Deviazione standard" ;
             Text [ portuguese_brazilian ] = "STD" ;
             Text [ portuguese ] = "Desvio_padro" ;
-            Text [ finnish ] = "STDEV" ;
+            Text [ finnish ] = "KESKIHAJONTA" ;
             Text [ danish ] = "Standardafv" ;
             Text [ french ] = "ET" ;
             Text [ swedish ] = "STD" ;
@@ -27400,7 +28275,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "desv_predeterminada" ;
             Text [ english_us ] = "STDEV" ;
             Text[ chinese_simplified ] = "standard_dev";
-            Text[ russian ] = "_";
+            Text[ russian ] = "";
             Text[ polish ] = "odchylenie_std";
             Text[ japanese ] = "標準偏差";
             Text[ chinese_traditional ] = "standard_dev";
@@ -27412,6 +28287,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "STDEV";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "STDEV";
+            Text[ thai ] = "ส่วนเบี่ยงเบนมาตรฐาน ";
         };
         String 7 // Description of Parameter 3
         {
@@ -27421,7 +28297,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "La deviazione standard della distribuzione." ;
             Text [ portuguese_brazilian ] = "Standardabweichung. Die Standardabweichung der Normalverteilung." ;
             Text [ portuguese ] = " o desvio padro da distribuio." ;
-            Text [ finnish ] = "Vakiopoikkeama. Normaalijakauman vakiopoikkeama." ;
+            Text [ finnish ] = "Keskihajonta Normaalijakauman keskihajonta" ;
             Text [ danish ] = "Standardafvigelse. Normalfordelingens standardafvigelse." ;
             Text [ french ] = "L'cart type de la distribution normale." ;
             Text [ swedish ] = "Standardavvikelse. Standardavvikelsen fr normalfrdelningen." ;
@@ -27429,7 +28305,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es la desviacin predeterminada de la distribucin." ;
             Text [ english_us ] = "Standard deviation. The standard deviation of the normal distribution." ;
             Text[ chinese_simplified ] = "标准偏差。正态分布的标准偏差。";
-            Text[ russian ] = "  .";
+            Text[ russian ] = " .    .";
             Text[ polish ] = "Odchylenie standardowe rozkadu normalnego.";
             Text[ japanese ] = "標準偏差。分布の標準偏差。";
             Text[ chinese_traditional ] = "標準偏差。正態分佈的標準偏差。";
@@ -27441,6 +28317,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Standart sapma. Normal datmn standart sapmas.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Desviaci estndard. La desviaci estndard de la distribuci normal.";
+            Text[ thai ] = "ส่วนเบี่ยงเบนมาตรฐาน  ส่วนเบี่ยงเบนมาตรฐานของการกระจายปกติ";
         };
     };
      // -=*# Resource for function STANDNORMVERT #*=-
@@ -27454,26 +28331,27 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Restituisce i valori della distribuzione normale standard." ;
             Text [ portuguese_brazilian ] = "Werte der Standardnormalverteilung" ;
             Text [ portuguese ] = "Devolve a distribuio cumulativa normal padro." ;
-            Text [ finnish ] = "Tavallisen kumulatiivisen normaalijakauman kokonaislukuarvot." ;
+            Text [ finnish ] = "Tavallisen kumulatiivisen normaalijakauman kokonaislukuarvot" ;
             Text [ danish ] = "Vrdier for standardnormalfordelingen" ;
             Text [ french ] = "Valeurs de la distribution normale standard." ;
             Text [ swedish ] = "Vrden fr standardnormalfrdelningen." ;
-            Text [ dutch ] = "Geeft als resultaat de cumulatieve standaardnormale verdeling." ;
+            Text [ dutch ] = "Geeft als resultaat de cumulatieve standaard normale verdeling." ;
             Text [ spanish ] = "Valores de una distribucin normal predeterminada acumulativa" ;
             Text [ english_us ] = "The values of the standard normal cumulative distribution." ;
             Text[ chinese_simplified ] = "标准正态分布函数。";
-            Text[ russian ] = "    ";
+            Text[ russian ] = "    .";
             Text[ polish ] = "Wyznacza standardowy rozkad normalny";
             Text[ japanese ] = "標準正規分布の分布関数の値を返します。";
             Text[ chinese_traditional ] = "標準正態分佈函數。";
             Text[ arabic ] = "   .";
-            Text[ dutch ] = "Geeft als resultaat de cumulatieve standaardnormale verdeling.";
+            Text[ dutch ] = "Geeft als resultaat de cumulatieve standaard normale verdeling.";
             Text[ chinese_simplified ] = "标准正态分布函数。";
             Text[ greek ] = "    ";
             Text[ korean ] = "표준 정규 분포의 값";
             Text[ turkish ] = "Standart normal datm deerleri";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valors de la distribuci acumulativa normal estndard.";
+            Text[ thai ] = "ค่าการกระจายสะสมปกติแบบมาตรฐาน";
         };
         ExtraData =
         {
@@ -27509,6 +28387,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -27518,7 +28397,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Il valore per il quale si desidera la distribuzione." ;
             Text [ portuguese_brazilian ] = "Der Wert, zu dem die Standardnormalverteilung berechnet werden soll." ;
             Text [ portuguese ] = " o o valor para o qual deseja calcular a distribuio." ;
-            Text [ finnish ] = "Arvo, jonka normaalijakauma (keskiarvo 0, vakiopoikkeama 1) lasketaan." ;
+            Text [ finnish ] = "Arvo, jonka normaalijakauma lasketaan." ;
             Text [ danish ] = "Den vrdi som standardnormalfordelingen skal beregnes for." ;
             Text [ french ] = "La valeur pour laquelle vous voulez calculer la distribution normale standard." ;
             Text [ swedish ] = "Vrdet fr vilket standardnormalfrdelningen skall berknas." ;
@@ -27526,7 +28405,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es el valor cuya distribucin desea obtener." ;
             Text [ english_us ] = "The value for which the standard normal distribution is to be calculated." ;
             Text[ chinese_simplified ] = "要计算其标准正态分布的数值。";
-            Text[ russian ] = ",    .";
+            Text[ russian ] = ",      .";
             Text[ polish ] = "Warto, dla ktrej ma zosta obliczony standardowy rozkad normalny.";
             Text[ japanese ] = "正規分布関数を求める値";
             Text[ chinese_traditional ] = "要計算其標準正態分佈的數值。";
@@ -27538,6 +28417,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Standart normal datm hesaplanacak deer.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor la distribuci normal estndard del qual s'ha de calcular.";
+            Text[ thai ] = "ค่าสำหรับคำนวณการกระจายปกติแบบมาตรฐาน";
         };
     };
      // -=*# Resource for function STANDNORMINV #*=-
@@ -27551,7 +28431,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Restituisce l'inversa della distribuzione normale standard." ;
             Text [ portuguese_brazilian ] = "Werte der inversen Standardnormalverteilung" ;
             Text [ portuguese ] = "Devolve o inverso da distribuio padro normal." ;
-            Text [ finnish ] = "Knteisen normaalijakauman (keskiarvo 0, vakiopoikkeama 1) arvot." ;
+            Text [ finnish ] = "Knteisen normaalijakauman arvot." ;
             Text [ danish ] = "Vrdier for den inverse standardnormalfordeling" ;
             Text [ french ] = "Valeurs de la distribution normale standard inverse." ;
             Text [ swedish ] = "Vrden fr den inversa standardnormalfrdelningen." ;
@@ -27559,7 +28439,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve, para una probabilidad dada, el valor de la variable aleatoria siguiendo una distribucin normal predeterminada acumulativa" ;
             Text [ english_us ] = "Values of the inverse standard normal distribution." ;
             Text[ chinese_simplified ] = "标准正态分布函数的逆函数。";
-            Text[ russian ] = "     .";
+            Text[ russian ] = "     .";
             Text[ polish ] = "Wyznacza odwrotno standardowego rozkadu";
             Text[ japanese ] = "標準正規分布のパーセント点を返します。";
             Text[ chinese_traditional ] = "標準正態分佈函數的逆函數。";
@@ -27571,6 +28451,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Ters standart normal datm deerleri";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valors de la distribuci normal estndard inversa.";
+            Text[ thai ] = "ค่าอินเวิร์สของการกระจายปกติแบบมาตรฐาน";
         };
         ExtraData =
         {
@@ -27606,6 +28487,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -27615,7 +28497,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Il valore di probabilit sul quale deve essere calcolata l'inversa della distribuzione normale standard." ;
             Text [ portuguese_brazilian ] = "Der Wahrscheinlichkeitswert, zu dem die inverse Standardnormalverteilung berechnet werden soll." ;
             Text [ portuguese ] = " a probabilidade para q qual deseja calcular a distribuio padro normal." ;
-            Text [ finnish ] = "Todennkisyysarvo, jonka knteinen normaalijakauma (keskiarvo 0, vakiopoikkeama 1) lasketaan." ;
+            Text [ finnish ] = "Todennkisyysarvo, jonka knteinen normaalijakauma lasketaan." ;
             Text [ danish ] = "Sandsynligheden som den inverse standardnormalfordeling skal beregnes for." ;
             Text [ french ] = "La valeur de probabilit pour laquelle la distribution normale standard inverse dot tre calcule." ;
             Text [ swedish ] = "Sannolikhetsvrdet fr vilket den inversa standardnormalfrdelningen skall berknas." ;
@@ -27623,7 +28505,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "El valor de probabilidad sobre el que se debe calcular la inversa de la distribucin normal estndar." ;
             Text [ english_us ] = "The probability value for which the inverse standard normal distribution is to be calculated." ;
             Text[ chinese_simplified ] = "标准正态分布的概率值。";
-            Text[ russian ] = " ,         .";
+            Text[ russian ] = " ,      .";
             Text[ polish ] = "Prawdopodobiestwo, dla ktrego ma zosta obliczona odwrotno standardowego rozkadu normalnego.";
             Text[ japanese ] = "標準正規分布のパーセント点を求める確率。";
             Text[ chinese_traditional ] = "標準正態分佈的概率值。";
@@ -27635,6 +28517,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Ters standart normal datm hesaplanacak olaslk deeri.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor de probabilitat la distribuci normal estndard inversa del qual s'ha de calcular.";
+            Text[ thai ] = "ค่าความน่าจะเป็นสำหรับคำนวณอินเวิร์สของการกระจายปกติแบบมาตรฐาน";
         };
     };
      // -=*# Resource for function LOGNORMVERT #*=-
@@ -27648,7 +28531,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Restituisce la distribuzione lognormale." ;
             Text [ portuguese_brazilian ] = "Werte der Lognormalverteilung" ;
             Text [ portuguese ] = "Devolve a distribuio cumulativa log-normal." ;
-            Text [ finnish ] = "Lognormal-jakauman arvot." ;
+            Text [ finnish ] = "Lognormal-jakauman arvot" ;
             Text [ danish ] = "Vrdier for lognormalfordelingen" ;
             Text [ french ] = "Valeurs de la distribution lognormale." ;
             Text [ swedish ] = "Vrden fr lognormalfrdelningen." ;
@@ -27656,7 +28539,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve la probabilidad para una variable aleatoria continua siguiendo una distribucin logartmico-normal acumulativa" ;
             Text [ english_us ] = "Values of the log normal distribution." ;
             Text[ chinese_simplified ] = "对数正态分布函数值。";
-            Text[ russian ] = "   .";
+            Text[ russian ] = "    .";
             Text[ polish ] = "Wyznacza skumulowany rozkad logarytmiczno-normalny.";
             Text[ japanese ] = "対数正規分布の分布関数の値を返します。";
             Text[ chinese_traditional ] = "對數正態分佈函數值。";
@@ -27668,6 +28551,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Lognormal datmn deerleri";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valors de la distribuci normal de registre.";
+            Text[ thai ] = "ค่าการกระจายปกติแบบล็อก";
         };
         ExtraData =
         {
@@ -27703,6 +28587,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -27720,7 +28605,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es el valor al que desea evaluar la funcin." ;
             Text [ english_us ] = "The value for which the log normal distribution is to be calculated." ;
             Text[ chinese_simplified ] = "用来计算对数正态分布的数值。";
-            Text[ russian ] = ",    .";
+            Text[ russian ] = ",      .";
             Text[ polish ] = "Warto, dla ktrej ma zosta wyznaczony rozkad logarytmiczno-normalny.";
             Text[ japanese ] = "関数に代入する値。";
             Text[ chinese_traditional ] = "用來計算對數正態分佈的數值。";
@@ -27732,6 +28617,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Lognormal datm hesaplanacak deer.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor la distribuci normal de registre del qual s'ha de calcular.";
+            Text[ thai ] = "ค่าสำหรับคำนวณการกระจายปกติแบบล็อก";
         };
         String 4 // Name of Parameter 2
         {
@@ -27761,6 +28647,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Ortalama";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "mitja";
+            Text[ thai ] = "ค่าเฉลี่ย";
         };
         String 5 // Description of Parameter 2
         {
@@ -27770,7 +28657,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "La media della distrubuzione lognormale." ;
             Text [ portuguese_brazilian ] = "Mittelwert. Der Mittelwert der Lognormalverteilung." ;
             Text [ portuguese ] = " o valor mdio da distribuio log-normal [ln(x)]." ;
-            Text [ finnish ] = "Keskiarvo! Lognormal-jakauman keskiarvo." ;
+            Text [ finnish ] = "Keskiarvo Lognormal-jakauman keskiarvo" ;
             Text [ danish ] = "Middelvrdi. Lognormalfordelingens middelvrdi." ;
             Text [ french ] = "La moyenne de la distribution lognormale." ;
             Text [ swedish ] = "Medelvrdet. Medelvrdet fr lognormalfrdelningen." ;
@@ -27778,7 +28665,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es la media de In(x)." ;
             Text [ english_us ] = "Mean value. The mean value of the log normal distribution." ;
             Text[ chinese_simplified ] = "对数正态分布函数 ln(x) 的平均值。";
-            Text[ russian ] = " In(x).";
+            Text[ russian ] = " .     .";
             Text[ polish ] = "Warto rednia dla rozkadu logarytmiczno-normalnego ln(x).";
             Text[ japanese ] = "平均。対数正規分布の平均値。";
             Text[ chinese_traditional ] = "對數正態分佈函數 ln(x) 的平均值。";
@@ -27790,6 +28677,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Ortalama deer. Lognormal datmn ortalama deeri.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor mitj. El valor mitj de la distribuci normal de registre.";
+            Text[ thai ] = "ค่าเฉลี่ย  ค่าเฉลี่ยของการกระจายปกติแบบล็อก";
         };
         String 6 // Name of Parameter 3
         {
@@ -27799,7 +28687,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Deviazione standard" ;
             Text [ portuguese_brazilian ] = "STD" ;
             Text [ portuguese ] = "Desvio_padro" ;
-            Text [ finnish ] = "STDEV" ;
+            Text [ finnish ] = "KESKIHAJONTA" ;
             Text [ danish ] = "Standardafv" ;
             Text [ french ] = "ET" ;
             Text [ swedish ] = "STD" ;
@@ -27807,7 +28695,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "desv_predeterminada" ;
             Text [ english_us ] = "STDEV" ;
             Text[ chinese_simplified ] = "standard_dev";
-            Text[ russian ] = "_";
+            Text[ russian ] = "";
             Text[ polish ] = "Odchylenie standardowe";
             Text[ japanese ] = "標準偏差";
             Text[ chinese_traditional ] = "standard_dev";
@@ -27819,6 +28707,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "STDEV";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "STDEV";
+            Text[ thai ] = "ส่วนเบี่ยงเบนมาตรฐาน";
         };
         String 7 // Description of Parameter 3
         {
@@ -27828,26 +28717,27 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "La deviazione standard della distribuzione lognormale." ;
             Text [ portuguese_brazilian ] = "Standardabweichung. Die Standardabweichung der Lognormalverteilung." ;
             Text [ portuguese ] = " o desvio padro da distribuio log-normal [ln(x)]." ;
-            Text [ finnish ] = "Vakiopoikkeama. Lognormal-jakauman vakiopoikkeama." ;
+            Text [ finnish ] = "Keskihajonta Lognormal-jakauman keskihajonta" ;
             Text [ danish ] = "Standardafvigelse. Lognormalfordelingens standardafvigelse." ;
             Text [ french ] = "L'cart type de la distribution lognormale." ;
             Text [ swedish ] = "Standardavvikelse. Standardavvikelsen fr lognormalfrdelningen." ;
-            Text [ dutch ] = "De standaarddeviatie geeft aan in hoeverre waarden afwijken van de lognormalre verdeling." ;
+            Text [ dutch ] = "De standaarddeviatie geeft aan in hoeverre waarden afwijken van de lognormale verdeling." ;
             Text [ spanish ] = "es la desviacin predeterminada de In(x)." ;
             Text [ english_us ] = "Standard deviation. The standard deviation of the log normal distribution." ;
             Text[ chinese_simplified ] = "对数正态分布函数 ln(x) 的标准偏差。";
-            Text[ russian ] = "  In(x).";
+            Text[ russian ] = " .     .";
             Text[ polish ] = "Odchylenie standardowe dla ln(x).";
             Text[ japanese ] = "標準偏差。対数正規分布の標準偏差。";
             Text[ chinese_traditional ] = "對數正態分佈函數 ln(x) 的標準偏差。";
             Text[ arabic ] = "    .";
-            Text[ dutch ] = "De standaarddeviatie geeft aan in hoeverre waarden afwijken van de lognormalre verdeling.";
+            Text[ dutch ] = "De standaarddeviatie geeft aan in hoeverre waarden afwijken van de lognormale verdeling.";
             Text[ chinese_simplified ] = "对数正态分布函数 ln(x) 的标准偏差。";
             Text[ greek ] = " .       .";
             Text[ korean ] = "표준 편차. 로그정규분포의 표준 편차";
             Text[ turkish ] = "Standart sapma. Lognormal datmn standart sapmas.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Desviaci estndard. La desviaci estndard de la distribuci normal de registre.";
+            Text[ thai ] = "ส่วนเบี่ยงเบนมาตรฐาน ส่วนเบี่ยงเบนมาตรฐานของการกระจายปกติแบบล็อก";
         };
     };
      // -=*# Resource for function LOGINV #*=-
@@ -27861,7 +28751,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Restituisce l'inversa della funzione di distribuzione lognormale." ;
             Text [ portuguese_brazilian ] = "Werte der inversen Lognormalverteilung" ;
             Text [ portuguese ] = "Devolve o inverso da distribuio log-normal." ;
-            Text [ finnish ] = "Lognormal-jakauman knteisarvot." ;
+            Text [ finnish ] = "Lognormal-jakauman knteisarvot" ;
             Text [ danish ] = "Vrdier for den inverse lognormalfordeling" ;
             Text [ french ] = "Valeurs de la distribution lognormale inverse." ;
             Text [ swedish ] = "Vrden fr den inversa lognormalfrdelningen." ;
@@ -27869,7 +28759,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve el valor de la variable aleatoria siguiendo una distribucin logartmico-normal de x" ;
             Text [ english_us ] = "Values of the inverse of the lognormal distribution." ;
             Text[ chinese_simplified ] = "对数正态分布函数的逆函数值。";
-            Text[ russian ] = "    .";
+            Text[ russian ] = "     .";
             Text[ polish ] = "Wyznacza odwrotno rozkadu logarytmiczno-naturalnego.";
             Text[ japanese ] = "対数正規分布のパーセント点を返します。";
             Text[ chinese_traditional ] = "對數正態分佈函數的逆函數值。";
@@ -27881,6 +28771,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Ters lognormal datmn deerleri";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valors de la inversa de la distribuci normal de registre.";
+            Text[ thai ] = "ค่าอินเวิร์สของการกระจายปกติแบบล็อก";
         };
         ExtraData =
         {
@@ -27916,6 +28807,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -27933,7 +28825,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es una probabilidad asociada con la distribucin logartmico-normal." ;
             Text [ english_us ] = "The probability value for which the inverse log normal distribution is to be calculated." ;
             Text[ chinese_simplified ] = "与对数正态分布相关的概率值。";
-            Text[ russian ] = ",     .";
+            Text[ russian ] = " ,      .";
             Text[ polish ] = "Prawdopodobiestwo, dla ktrego ma zosta obliczona odwrotno rozkadu logarytmiczno-naturalnego.";
             Text[ japanese ] = "計算に使用する確率。";
             Text[ chinese_traditional ] = "與對數正態分佈相關的概率值。";
@@ -27945,6 +28837,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Ters lognormal datm hesaplanacak olaslk deeri.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor de probabilitat la distribuci normal de registre inversa del qual s'ha de calcular.";
+            Text[ thai ] = "ค่าความน่าจะเป็นสำหรับคำนวณอินเวิร์สของการกระจายปกติแบบล็อก";
         };
         String 4 // Name of Parameter 2
         {
@@ -27974,6 +28867,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Ortalama";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "mitja";
+            Text[ thai ] = "ค่าเฉลี่ย";
         };
         String 5 // Description of Parameter 2
         {
@@ -27983,7 +28877,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "La media della distribuzione lognormale." ;
             Text [ portuguese_brazilian ] = "Mittelwert. Der Mittelwert der Lognormalverteilung." ;
             Text [ portuguese ] = " o valor mdio da distribuio log-normal [ln(x)]." ;
-            Text [ finnish ] = "Keskiarvo! Lognormal-jakauman keskiarvo." ;
+            Text [ finnish ] = "Keskiarvo Lognormal-jakauman keskiarvo" ;
             Text [ danish ] = "Middelvrdi. Lognormalfordelingens middelvrdi." ;
             Text [ french ] = "La moyenne de la distribution lognormale." ;
             Text [ swedish ] = "Medelvrde. Medelvrdet fr lognormalfrdelningen." ;
@@ -27991,7 +28885,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es la media de ln(x)." ;
             Text [ english_us ] = "Mean value. The mean value of the log normal distribution." ;
             Text[ chinese_simplified ] = "对数正态分布函数 ln(x)  的平均值。";
-            Text[ russian ] = " In(x).";
+            Text[ russian ] = " .     .";
             Text[ polish ] = "Warto rednia dla rozkadu logarytmiczno-normalnego ln(x).";
             Text[ japanese ] = "対数正規分布の平均値。";
             Text[ chinese_traditional ] = "對數正態分佈函數 ln(x)  的平均值。";
@@ -28003,6 +28897,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Ortalama deer. Lognormal dalmn ortalama deeri.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor mitj. El valor mitj de la distribuci normal de registre.";
+            Text[ thai ] = "ค่าเฉลี่ย ค่าเฉลี่ยของการกระจายปกติแบบล็อก";
         };
         String 6 // Name of Parameter 3
         {
@@ -28012,7 +28907,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Deviazione standard" ;
             Text [ portuguese_brazilian ] = "STD" ;
             Text [ portuguese ] = "Desvio_padro" ;
-            Text [ finnish ] = "STDEV" ;
+            Text [ finnish ] = "KESKIHAJONTA" ;
             Text [ danish ] = "Standardafv" ;
             Text [ french ] = "ET" ;
             Text [ swedish ] = "STD" ;
@@ -28020,7 +28915,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "desv_predeterminada" ;
             Text [ english_us ] = "STDEV" ;
             Text[ chinese_simplified ] = "standard_dev";
-            Text[ russian ] = "_";
+            Text[ russian ] = "";
             Text[ polish ] = "Odchylenie standardowe";
             Text[ japanese ] = "標準偏差";
             Text[ chinese_traditional ] = "standard_dev";
@@ -28032,6 +28927,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "STDEV";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "STDEV";
+            Text[ thai ] = "ส่วนเบี่ยงเบนมาตรฐาน";
         };
         String 7 // Description of Parameter 3
         {
@@ -28041,7 +28937,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Deviazione standard della distribuzione lognormale." ;
             Text [ portuguese_brazilian ] = "Standardabweichung. Die Standardabweichung der Lognormalverteilung." ;
             Text [ portuguese ] = " o desvio padro da distribuio log-normal [ln(x)]." ;
-            Text [ finnish ] = "Vakiopoikkeama. Lognormal-jakauman vakiopoikkeama." ;
+            Text [ finnish ] = "Keskihajonta Lognormal-jakauman keskihajonta" ;
             Text [ danish ] = "Standardafvigelse. Lognormalfordelingens standardafvigelse." ;
             Text [ french ] = "L'cart type de la distribution lognormale." ;
             Text [ swedish ] = "Standardavvikelse. Standardavvikelsen fr lognormalfrdelningen." ;
@@ -28049,7 +28945,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es la desviacin predeterminada de ln(x)." ;
             Text [ english_us ] = "Standard deviation. The standard deviation of the log normal distribution." ;
             Text[ chinese_simplified ] = "对数正态分布函数 ln(x) 的标准偏差。";
-            Text[ russian ] = "  In(x).";
+            Text[ russian ] = " .     .";
             Text[ polish ] = "Odchylenie standardowe dal ln(x).";
             Text[ japanese ] = "対数正規分布の標準偏差。";
             Text[ chinese_traditional ] = "對數正態分佈函數 ln(x) 的標準偏差。";
@@ -28061,6 +28957,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Standart sapma. Lognormal datmn standart sapmas.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Desviaci estndard. La desviaci estndard de la distribuci normal de registre.";
+            Text[ thai ] = "ส่วนเบี่ยงเบนมาตรฐาน ส่วนเบี่ยงเบนมาตรฐานของการกระจายปกติแบบล็อก";
         };
     };
      // -=*# Resource for function EXPONVERT #*=-
@@ -28074,7 +28971,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Restituisce la distribuzione esponenziale." ;
             Text [ portuguese_brazilian ] = "Werte der Exponentialverteilung" ;
             Text [ portuguese ] = "Devolve a distribuio exponencial." ;
-            Text [ finnish ] = "Eksponentiaalisen jakauman arvot." ;
+            Text [ finnish ] = "Eksponentiaalisen jakauman arvot" ;
             Text [ danish ] = "Vrdier for eksponentialfordelingen" ;
             Text [ french ] = "Valeurs de la distribution exponentielle." ;
             Text [ swedish ] = "Vrden fr exponentialfrdelningen." ;
@@ -28082,7 +28979,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve la probabilidad de una variable aleatoria continua siguiendo una distribucin exponencial" ;
             Text [ english_us ] = "Values of the exponential distribution." ;
             Text[ chinese_simplified ] = "计算指数分布。";
-            Text[ russian ] = "  .";
+            Text[ russian ] = "  .";
             Text[ polish ] = "Wyznacza rozkad wykadniczy";
             Text[ japanese ] = "指数分布の密度関数または分布関数の値を返します。";
             Text[ chinese_traditional ] = "計算指數分佈。";
@@ -28094,6 +28991,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "stel datmn deerleri";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valors de la distribuci exponencial.";
+            Text[ thai ] = "ค่าการกระจายแบบเอ็กซ์โปเนนเชียล";
         };
         ExtraData =
         {
@@ -28129,6 +29027,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -28146,7 +29045,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es el valor de la funcin." ;
             Text [ english_us ] = "The value to which the exponential distribution is to be calculated." ;
             Text[ chinese_simplified ] = "函数值。";
-            Text[ russian ] = " .";
+            Text[ russian ] = ",     .";
             Text[ polish ] = "Warto, dla ktrej ma zosta obliczony rozkad wykadniczy.";
             Text[ japanese ] = "指数分布を計算する数値。";
             Text[ chinese_traditional ] = "函數值。";
@@ -28158,6 +29057,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "stel datm hesaplanacak deer.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor a qu s'ha de calcular la distribuci exponencial.";
+            Text[ thai ] = "ค่าเพื่อคำนวณการกระจายแบบเอ็กซ์โปเนนเชียล";
         };
         String 4 // Name of Parameter 2
         {
@@ -28187,6 +29087,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Lambda";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "lambda";
+            Text[ thai ] = "แลมบ์ด้า";
         };
         String 5 // Description of Parameter 2
         {
@@ -28196,7 +29097,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Parametro della distribuzione esponenziale." ;
             Text [ portuguese_brazilian ] = "Der Parameter der Exponentialverteilung." ;
             Text [ portuguese ] = " o valor do parmetro." ;
-            Text [ finnish ] = "Eksponentiaalisen jakauman parametrit." ;
+            Text [ finnish ] = "Eksponentiaalisen jakauman parametrit" ;
             Text [ danish ] = "Eksponentialfordelingens parameter." ;
             Text [ french ] = "Le paramtre de la distribution exponentielle." ;
             Text [ swedish ] = "Exponentialfrdelningens parameter." ;
@@ -28204,7 +29105,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es el valor del parmetro^de la distribucin exponencial." ;
             Text [ english_us ] = "The parameters of the exponential distribution." ;
             Text[ chinese_simplified ] = "参数值。";
-            Text[ russian ] = " .";
+            Text[ russian ] = "  .";
             Text[ polish ] = "Parametr rozkadu wykadniczego.";
             Text[ japanese ] = "指数定数。";
             Text[ chinese_traditional ] = "參數值。";
@@ -28212,10 +29113,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "De parameter van de exponentile verdeling.";
             Text[ chinese_simplified ] = "参数值。";
             Text[ greek ] = "    .";
-            Text[ korean ] = "지수 분포의 파라미터";
+            Text[ korean ] = "지수 분포의 매개 변수.";
             Text[ turkish ] = "stel datmn parametresi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Parmetres de la distribuci exponencial.";
+            Text[ thai ] = "พารามิเตอร์ของการกระจายแบบเอ็กซ์โปเนนเชียล";
         };
         String 6 // Name of Parameter 3
         {
@@ -28233,7 +29135,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "acum" ;
             Text [ english_us ] = "C" ;
             Text[ chinese_simplified ] = "cumulative";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "Skumulowany";
             Text[ japanese ] = "関数形式";
             Text[ chinese_traditional ] = "cumulative";
@@ -28245,6 +29147,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "C";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "C";
+            Text[ thai ] = "C";
         };
         String 7 // Description of Parameter 3
         {
@@ -28254,7 +29157,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Se il valore = 0 calcola la densit di probabilit, = 1 calcola la distribuzione." ;
             Text [ portuguese_brazilian ] = "Kumuliert. K = 0 berechnet die Dichtefunktion, K = 1 die Verteilung." ;
             Text [ portuguese ] = " um valor lgico que indica a forma da funo. 0 devolve a funo de distribuio cumulativa e 1 a distribuio." ;
-            Text [ finnish ] = "Kumuloitu. C = 0 laskee tiheysfunktion ja C = 1 jakauman." ;
+            Text [ finnish ] = "Kumuloitu C = 0 laskee tiheysfunktion ja C = 1 jakauman." ;
             Text [ danish ] = "Kumulativ. K = 0 beregner tthedsfunktionen, K = 1 fordelingen." ;
             Text [ french ] = "Cumulative. C = 0 calcule la fonction de densit, C = 1 la distribution." ;
             Text [ swedish ] = "Kumulerat. K = 0 berknar tthetsfunktionen, K = 1 frdelningen." ;
@@ -28262,7 +29165,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Cumulativo. C = 0 calcula la funcin de densidad, C = 1 la distribucin." ;
             Text [ english_us ] = "Cumulated. C=0 calculates the density function, C=1 the distribution." ;
             Text[ chinese_simplified ] = "指定函数类型的逻辑值。 K = 0 为密度函数, \nK = 1 为累积分布函数。";
-            Text[ russian ] = " ,  ,    :   (0)    (1).";
+            Text[ russian ] = ". =0   , =1 - .";
             Text[ polish ] = "Skumulowany. 0 wyznacza gsto, 1 - rozkad.";
             Text[ japanese ] = "関数形式。関数形式 = 0 は累積確率、関数形式 = 1 は確率密度を返します。";
             Text[ chinese_traditional ] = "指定函數類型的邏輯值。 K = 0 為密度函數﹐ K = 1 為累積分佈函數。";
@@ -28274,6 +29177,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Kmlasyon. K = 0 younluk fonksiyonunu, K = 1 ise datm hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Acumulat. C=0 calcula la funci de densitat; C=1, la distribuci.";
+            Text[ thai ] = "สะสม C=0 คำนวณฟังก์ชั่นความหนาแน่น, C=1 การกระจาย";
         };
     };
      // -=*# Resource for function GAMMAVERT #*=-
@@ -28287,7 +29191,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Restituisce la distribuzione gamma." ;
             Text [ portuguese_brazilian ] = "Werte der Gamma-Verteilung" ;
             Text [ portuguese ] = "Devolve a distribuio gama." ;
-            Text [ finnish ] = "Gamma-jakauman arvot." ;
+            Text [ finnish ] = "Gamma-jakauman arvot" ;
             Text [ danish ] = "Vrdier for gammafordelingen" ;
             Text [ french ] = "Valeurs de la distribution Gamma." ;
             Text [ swedish ] = "Vrden fr gammafrdelningen." ;
@@ -28295,7 +29199,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve la probabilidad de una variable aleatoria siguiendo una distribucin gamma" ;
             Text [ english_us ] = "Values of the gamma distribution." ;
             Text[ chinese_simplified ] = "计算伽玛分布。";
-            Text[ russian ] = " -.";
+            Text[ russian ] = " -.";
             Text[ polish ] = "Wartoci rozkadu gamma";
             Text[ japanese ] = "ガンマ分布関数の値を返します。";
             Text[ chinese_traditional ] = "計算伽瑪分佈。";
@@ -28307,6 +29211,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Gamma datm deerleri";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valors de la distribuci gamma.";
+            Text[ thai ] = "ค่าการกระจายแบบแกมม่า";
         };
         ExtraData =
         {
@@ -28342,6 +29247,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -28359,7 +29265,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es el valor al que desea evaluar la distribucin." ;
             Text [ english_us ] = "The value for which the gamma distribution is to be calculated." ;
             Text[ chinese_simplified ] = "用来计算伽玛分布的数值。";
-            Text[ russian ] = ",     .";
+            Text[ russian ] = ",     -.";
             Text[ polish ] = "Warto, dla ktrej ma zosta obliczony rozkad gamma.";
             Text[ japanese ] = "関数に代入する値。";
             Text[ chinese_traditional ] = "用來計算伽瑪分佈的數值。";
@@ -28371,6 +29277,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Gamma datm hesaplanacak deer.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor la distribuci gamma del qual s'ha de calcular.";
+            Text[ thai ] = "ค่าสำหรับคำนวณการกระจายแบบแกมม่า";
         };
         String 4 // Name of Parameter 2
         {
@@ -28400,6 +29307,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Alfa";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Alfa";
+            Text[ thai ] = "อัลฟ่า";
         };
         String 5 // Description of Parameter 2
         {
@@ -28409,26 +29317,27 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Il parametro alfa della distribuzione gamma." ;
             Text [ portuguese_brazilian ] = "Der Parameter Alpha der Gamma-Verteilung." ;
             Text [ portuguese ] = " o parmetro alfa da distribuio gama." ;
-            Text [ finnish ] = "Gamma-jakauman alfa-parametri." ;
+            Text [ finnish ] = "Gamma-jakauman alfa-parametri" ;
             Text [ danish ] = "Parameter alfa i gammafordelingen." ;
             Text [ french ] = "Le paramtre Alpha de la distribution Gamma." ;
             Text [ swedish ] = "Parametern alfa till frdelningen." ;
-            Text [ dutch ] = "De paramter Alfa van de gamma-verdeling." ;
+            Text [ dutch ] = "De parameter Alfa van de gamma-verdeling." ;
             Text [ spanish ] = "es un parmetro de la distribucin." ;
             Text [ english_us ] = "The Alpha parameter of the Gamma distribution." ;
             Text[ chinese_simplified ] = "伽玛分布的参数阿尔法。";
-            Text[ russian ] = " .";
+            Text[ russian ] = "  -.";
             Text[ polish ] = "Parametr alfa w rozkadzie gamma.";
             Text[ japanese ] = "分布に対するパラメータ。";
             Text[ chinese_traditional ] = "伽瑪分佈的參數阿爾法。";
             Text[ arabic ] = "   .";
-            Text[ dutch ] = "De paramter Alfa van de gamma-verdeling.";
+            Text[ dutch ] = "De parameter Alfa van de gamma-verdeling.";
             Text[ chinese_simplified ] = "伽玛分布的参数阿尔法。";
             Text[ greek ] = "     .";
-            Text[ korean ] = "감마 분포의 파라미터 알파.";
+            Text[ korean ] = "감마 분포의 알파 매개 변수.";
             Text[ turkish ] = "Gamma datmnn alfa parametresi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Parmetre alfa de la distribuci gamma.";
+            Text[ thai ] = "พารามิเตอร์อัลฟ่าของการกระจายแบบแกมม่า";
         };
         String 6 // Name of Parameter 3
         {
@@ -28442,7 +29351,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ danish ] = "Beta" ;
             Text [ french ] = "Bta" ;
             Text [ swedish ] = "beta" ;
-            Text [ dutch ] = "Beta" ;
+            Text [ dutch ] = "Bta" ;
             Text [ spanish ] = "beta" ;
             Text [ english_us ] = "beta" ;
             Text[ chinese_simplified ] = "beta";
@@ -28451,13 +29360,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ japanese ] = "β";
             Text[ chinese_traditional ] = "beta";
             Text[ arabic ] = "Beta";
-            Text[ dutch ] = "Beta";
+            Text[ dutch ] = "Bta";
             Text[ chinese_simplified ] = "beta";
             Text[ greek ] = "";
             Text[ korean ] = "베타";
             Text[ turkish ] = "Beta";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "beta";
+            Text[ thai ] = "เบต้า";
         };
         String 7 // Description of Parameter 3
         {
@@ -28467,26 +29377,27 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Il parametro beta della distribuzione gamma." ;
             Text [ portuguese_brazilian ] = "Der Parameter Beta der Gamma-Verteilung." ;
             Text [ portuguese ] = " o parmetro beta da distribuio gama." ;
-            Text [ finnish ] = "Gamma-jakauman beeta-parametri." ;
+            Text [ finnish ] = "Gamma-jakauman beeta-parametri" ;
             Text [ danish ] = "Parameter beta i gammafordelingen." ;
             Text [ french ] = "Le paramtre Bta de la distribution Gamma." ;
             Text [ swedish ] = "Parametern beta fr gammafrdelningen." ;
-            Text [ dutch ] = "De parameter Beta van de gamma-verdeling." ;
+            Text [ dutch ] = "De parameter Bta van de gamma-verdeling." ;
             Text [ spanish ] = "es un parmetro de la distribucin." ;
             Text [ english_us ] = "The Beta parameter of the Gamma distribution." ;
             Text[ chinese_simplified ] = "伽玛分布的参数贝塔。";
-            Text[ russian ] = " .";
+            Text[ russian ] = "  -.";
             Text[ polish ] = "Parametr beta w rozkadzie gamma.";
             Text[ japanese ] = "分布に対するパラメータ。";
             Text[ chinese_traditional ] = "伽瑪分佈的參數貝塔。";
             Text[ arabic ] = "   .";
-            Text[ dutch ] = "De parameter Beta van de gamma-verdeling.";
+            Text[ dutch ] = "De parameter Bta van de gamma-verdeling.";
             Text[ chinese_simplified ] = "伽玛分布的参数贝塔。";
             Text[ greek ] = "     .";
-            Text[ korean ] = "감마 분포의 파라미터 베타.";
+            Text[ korean ] = "감마 분포의 베타 매개 변수.";
             Text[ turkish ] = "Gamma datmnn beta parametresi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Parmetre beta de la distribuci gamma.";
+            Text[ thai ] = "พารามิเตอร์เบต้าของการกระจายแบบแกมม่า";
         };
         String 8 // Name of Parameter 4
         {
@@ -28504,7 +29415,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "acum" ;
             Text [ english_us ] = "C" ;
             Text[ chinese_simplified ] = "cumulative";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "Skumulowany";
             Text[ japanese ] = "関数形式";
             Text[ chinese_traditional ] = "cumulative";
@@ -28516,6 +29427,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "C";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "C";
+            Text[ thai ] = "C";
         };
         String 9 // Description of Parameter 4
         {
@@ -28525,7 +29437,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Se il valore = 0 viene calcolata la densit di probabilit, se = 1 viene calcolata la distribuzione cumulativa." ;
             Text [ portuguese_brazilian ] = "Kumuliert. K = 0 berechnet die Dichtefunktion, K = 1 die Verteilung." ;
             Text [ portuguese ] = " um valor lgico que determina o modo da funo. 0 devolve a funo cumulativa; 1 devolve a distribuio." ;
-            Text [ finnish ] = "Kumuloitu. C = 0 laskee tiheysfunktion ja C = 1 jakauman." ;
+            Text [ finnish ] = "Kumuloitu C = 0 laskee tiheysfunktion ja C = 1 jakauman." ;
             Text [ danish ] = "Kumulativ. K = 0 beregner tthedsfunktionen, K = 1 fordelingen." ;
             Text [ french ] = "Cumulative. C = 0 calcule la fonction de densit, C = 1 la distribution." ;
             Text [ swedish ] = "Kumulerat. K = 0 berknar tthetsfunktionen, K = 1 frdelningen." ;
@@ -28533,7 +29445,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es un valor lgico que determina la forma de la funcin. Si es 0 devuelve la funcin de distribucin acumulativa, si es 1 devuelve la distribucin." ;
             Text [ english_us ] = "Cumulated. C=0 calculates the density function, C=1 the distribution." ;
             Text[ chinese_simplified ] = "指定函数类型的逻辑值。 K = 0 为密度函数, \nK = 1 为累积分布函数。";
-            Text[ russian ] = " ,   :   (0)    (1).";
+            Text[ russian ] = ". =0   , =1 - .";
             Text[ polish ] = "Skumulowany. 0 wyznacza gsto, 1 - rozkad.";
             Text[ japanese ] = "関数形式。関数形式 = 0 は密度関数、関数形式 = 1 は分布関数の値を返します。";
             Text[ chinese_traditional ] = "指定函數類型的邏輯值。 K = 0 為密度函數﹐ K = 1 為累積分佈函數。";
@@ -28545,6 +29457,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Kmlasyon. K = 0 younluk fonksiyonunu, K = 1 ise datm hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Acumulat. C=0 calcula la funci de densitat; C=1, la distribuci.";
+            Text[ thai ] = "สะสม C=0 คำนวณฟังก์ชั่นความหนาแน่น, C=1 การกระจาย";
         };
     };
      // -=*# Resource for function GAMMAINV #*=-
@@ -28558,7 +29471,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Restituisce l'inversa della distribuzione gamma." ;
             Text [ portuguese_brazilian ] = "Werte der inversen Gamma-Verteilung" ;
             Text [ portuguese ] = "Devolve o inverso da distribuio cumulativa gama." ;
-            Text [ finnish ] = "Knteisen gamma-jakauman arvot." ;
+            Text [ finnish ] = "Knteisen gamma-jakauman arvot" ;
             Text [ danish ] = "Vrdier for den inverse gammafordeling" ;
             Text [ french ] = "Valeurs de la distribution Gamma inverse." ;
             Text [ swedish ] = "Vrden fr den inversa gammafrdelningen." ;
@@ -28566,7 +29479,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve, para una probabilidad dada, el valor  inverso de la variable aleatoria siguiendo una distribucin gamma acumulativa" ;
             Text [ english_us ] = "Values of the inverse gamma distribution." ;
             Text[ chinese_simplified ] = "伽玛分布的逆函数值。";
-            Text[ russian ] = "  -.";
+            Text[ russian ] = "  -.";
             Text[ polish ] = "Wyznacza odwrotno rozkadu gamma";
             Text[ japanese ] = "ガンマ分布のパーセント点を返します。";
             Text[ chinese_traditional ] = "伽瑪分佈的逆函數值。";
@@ -28578,6 +29491,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Ters gamma datm deerleri";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valors de la distribuci gamma inversa.";
+            Text[ thai ] = "ค่าอินเวิร์สของการกระจายแบบแกมม่า";
         };
         ExtraData =
         {
@@ -28613,6 +29527,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -28630,7 +29545,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es la probabilidad asociada con la distribucin gamma." ;
             Text [ english_us ] = "The probability value for which the inverse gamma distribution is to be calculated." ;
             Text[ chinese_simplified ] = "伽玛分布的概率值。";
-            Text[ russian ] = ",   -.";
+            Text[ russian ] = " ,     -. ";
             Text[ polish ] = "Prawdopodobiestwo, dla ktrego ma zosta obliczona odwrotno rozkadu gamma.";
             Text[ japanese ] = "関数に代入する確率。";
             Text[ chinese_traditional ] = "伽瑪分佈的概率值。";
@@ -28642,6 +29557,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Ters gamma datm hesaplanacak olaslk deeri.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor de probabilitat la distribuci gamma inversa del qual s'ha de calcular.";
+            Text[ thai ] = "ค่าความน่าจะเป็นสำหรับคำนวณอินเวิร์สของการกระจายแบบแกมม่า";
         };
         String 4 // Name of Parameter 2
         {
@@ -28671,6 +29587,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Alfa";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Alfa";
+            Text[ thai ] = "อัลฟ่า";
         };
         String 5 // Description of Parameter 2
         {
@@ -28680,7 +29597,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Parametro alfa per la distribuzione." ;
             Text [ portuguese_brazilian ] = "Der Parameter Alpha der Gamma-Verteilung." ;
             Text [ portuguese ] = " o parmetro alfa da distribuio gama." ;
-            Text [ finnish ] = "Gamma-jakauman alfa-parametri." ;
+            Text [ finnish ] = "Gamma-jakauman alfa-parametri" ;
             Text [ danish ] = "Parameter alfa i gammafordelingen." ;
             Text [ french ] = "Le paramtre Alpha de la distribution Gamma." ;
             Text [ swedish ] = "Parametern alfa till gammafrdelningen." ;
@@ -28688,7 +29605,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es un parmetro de la distribucin." ;
             Text [ english_us ] = "The Alpha parameter of the Gamma distribution." ;
             Text[ chinese_simplified ] = "伽玛分布的参数阿尔法。";
-            Text[ russian ] = " .";
+            Text[ russian ] = "  -.";
             Text[ polish ] = "Parametr alfa rozkadu gamma.";
             Text[ japanese ] = "ガンマ分布のパラメータ。";
             Text[ chinese_traditional ] = "伽瑪分佈的參數阿爾法。";
@@ -28696,10 +29613,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "De parameter Alfa van de gamma-verdeling.";
             Text[ chinese_simplified ] = "伽玛分布的参数阿尔法。";
             Text[ greek ] = "     .";
-            Text[ korean ] = "감마 분포의 파라미터 알파.";
+            Text[ korean ] = "감마 분포의 알파 매개 변수.";
             Text[ turkish ] = "Gamma datmnn alfa parametresi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Parmetre alfa de la distribuci gamma.";
+            Text[ thai ] = "พารามิเตอร์อัลฟ่าของการกระจายแบบแกมม่า";
         };
         String 6 // Name of Parameter 3
         {
@@ -28713,7 +29631,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ danish ] = "Beta" ;
             Text [ french ] = "Bta" ;
             Text [ swedish ] = "beta" ;
-            Text [ dutch ] = "Beta" ;
+            Text [ dutch ] = "Bta" ;
             Text [ spanish ] = "beta" ;
             Text [ english_us ] = "beta" ;
             Text[ chinese_simplified ] = "beta";
@@ -28722,13 +29640,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ japanese ] = "β";
             Text[ chinese_traditional ] = "beta";
             Text[ arabic ] = "Beta";
-            Text[ dutch ] = "Beta";
+            Text[ dutch ] = "Bta";
             Text[ chinese_simplified ] = "beta";
             Text[ greek ] = "";
             Text[ korean ] = "베타";
             Text[ turkish ] = "Beta";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "beta";
+            Text[ thai ] = "เบต้า";
         };
         String 7 // Description of Parameter 3
         {
@@ -28738,26 +29657,27 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Parametro beta per la distribuzione." ;
             Text [ portuguese_brazilian ] = "Der Parameter Beta der Gamma-Verteilung." ;
             Text [ portuguese ] = " o parmetro beta da distribuio gama." ;
-            Text [ finnish ] = "Gamma-jakauman beeta-parametri." ;
+            Text [ finnish ] = "Gamma-jakauman beeta-parametri" ;
             Text [ danish ] = "Parameter beta i gammafordelingen." ;
             Text [ french ] = "Le paramtre Bta de la distribution Gamma." ;
             Text [ swedish ] = "Parametern beta till gammafrdelningen." ;
-            Text [ dutch ] = "De parameter Beta van de gamma-verdeling." ;
+            Text [ dutch ] = "De parameter Bta van de gamma-verdeling." ;
             Text [ spanish ] = "es un parmetro de la distribucin." ;
             Text [ english_us ] = "The Beta parameter of the Gamma distribution." ;
             Text[ chinese_simplified ] = "伽玛分布的参数贝塔。";
-            Text[ russian ] = " .";
+            Text[ russian ] = "  -.";
             Text[ polish ] = "Parametr beta rozkadu gamma.";
             Text[ japanese ] = "ガンマ分布のパラメータ。";
             Text[ chinese_traditional ] = "伽瑪分佈的參數貝塔。";
             Text[ arabic ] = "   .";
-            Text[ dutch ] = "De parameter Beta van de gamma-verdeling.";
+            Text[ dutch ] = "De parameter Bta van de gamma-verdeling.";
             Text[ chinese_simplified ] = "伽玛分布的参数贝塔。";
             Text[ greek ] = "     .";
-            Text[ korean ] = "감마 분포의 파라미터 베타.";
+            Text[ korean ] = "감마 분포의 베타 매개 변수.";
             Text[ turkish ] = "Gamma datmnn beta parametresi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Parmetre beta de la distribuci gamma.";
+            Text[ thai ] = "พารามิเตอร์เบต้าของการกระจายแบบแกมม่า";
         };
     };
      // -=*# Resource for function GAMMALN #*=-
@@ -28771,7 +29691,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Restituisce il logaritmo naturale di una funzione gamma." ;
             Text [ portuguese_brazilian ] = "Logarithmische Werte der Gamma-Funktion" ;
             Text [ portuguese ] = "Devolve o logaritmo natural da funo gama." ;
-            Text [ finnish ] = "Palauttaa gamma-toiminnon luonnollisen logaritmin." ;
+            Text [ finnish ] = "Palauttaa gamma-funktion luonnollisen logaritmin." ;
             Text [ danish ] = "Logaritmevrdier til gammafunktionen." ;
             Text [ french ] = "Renvoie le logarithme nprien de la fonction Gamma." ;
             Text [ swedish ] = "Logaritmiska vrden fr gammafunktionen." ;
@@ -28791,6 +29711,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Gamma fonksiyonunun logaritmik deerleri";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna el logaritme natural de la funci gamma.";
+            Text[ thai ] = "ส่งกลับลอการิธึมแบบธรรมชาติของฟังก์ชั่นแกมม่า";
         };
         ExtraData =
         {
@@ -28826,6 +29747,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -28836,7 +29758,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Valore per il quale si desidera calcolare il logaritmo naturale della funzione gamma." ;
             Text [ portuguese_brazilian ] = "Der Wert, zu dem der nat?liche Logarithmus der Gamma-Funktion berechnet werden soll." ;
             Text [ portuguese ] = " o valor para o qual  deseja calcular o logaritmo natural gama (LNGAMA)." ;
-            Text [ finnish ] = "Arvo, jolle gamma-toiminnon luonnollinen logaritmi lasketaan." ;
+            Text [ finnish ] = "Arvo, jolle gamma-funktion luonnollinen logaritmi lasketaan." ;
             Text [ danish ] = "Den vrdi som gammafunktionens naturlige logaritme skal beregnes for." ;
             Text [ french ] = "La valeur pour laquelle vous voulez calculer le logarithme nprien de la fonction Gamma." ;
             Text [ swedish ] = "Vrdet som den naturliga logaritmen fr gammafunktionen skall berknas fr." ;
@@ -28844,7 +29766,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es el valor cuya funcin GAMMA.LN desea calcular." ;
             Text [ english_us ] = "The value for which the natural logarithm of the gamma function is to be calculated." ;
             Text[ chinese_simplified ] = "需要计算伽玛函数的自然对数的数值。";
-            Text[ russian ] = ",       -.";
+            Text[ russian ] = ",      -.";
             Text[ polish ] = "Warto, dla ktrej ma zosta obliczony rozkad liniowy gamma (GAMMLN).";
             Text[ japanese ] = "関数に代入する数値。";
             Text[ chinese_traditional ] = "需要計算伽瑪函數的自然對數的數值。";
@@ -28856,6 +29778,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Gamma fonksiyonunun doal logaritmasnn hesaplanaca deer.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor el logaritme natural de la funci gamma del qual s'ha de calcular.";
+            Text[ thai ] = "ค่าสำหรับคำนวณลอการิธึมแบบธรรมชาติของฟังก์ชั่นแกมม่า";
         };
     };
      // -=*# Resource for function BETAVERT #*=-
@@ -28869,26 +29792,27 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Restituisce la distribuzione beta." ;
             Text [ portuguese_brazilian ] = "Werte der Beta-Verteilung" ;
             Text [ portuguese ] = "Devolve a funo de densidade da probabilidade beta cumulativa." ;
-            Text [ finnish ] = "Beeta-jakauman arvot." ;
+            Text [ finnish ] = "Beeta-jakauman arvot" ;
             Text [ danish ] = "Vrdier for betafordelingen" ;
             Text [ french ] = "Valeurs de la distribution Bta." ;
             Text [ swedish ] = "Betafrdelningens vrden." ;
-            Text [ dutch ] = "Waarden van de beta-verdeling" ;
+            Text [ dutch ] = "Waarden van de bta-verdeling" ;
             Text [ spanish ] = "Devuelve la probabilidad para una variable aleatoria continua siguiendo una funcin de densidad de probabilidad beta acumulativa" ;
             Text [ english_us ] = "Values of the beta distribution." ;
             Text[ chinese_simplified ] = "贝塔分布累积函数的函数值。";
-            Text[ russian ] = "    -.";
+            Text[ russian ] = "  -.";
             Text[ polish ] = "Wartoci podziau beta.";
             Text[ japanese ] = "ベータ分布の分布関数の値を返します。";
             Text[ chinese_traditional ] = "貝塔分佈累積函數的函數值。";
             Text[ arabic ] = "  .";
-            Text[ dutch ] = "Waarden van de beta-verdeling";
+            Text[ dutch ] = "Waarden van de bta-verdeling";
             Text[ chinese_simplified ] = "贝塔分布累积函数的函数值。";
             Text[ greek ] = "   .";
             Text[ korean ] = "베타 분포의 값";
             Text[ turkish ] = "Beta datm deerleri";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valors de la distribuci beta.";
+            Text[ thai ] = "ค่าการกระจายแบบเบต้า";
         };
         ExtraData =
         {
@@ -28924,6 +29848,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -28937,22 +29862,23 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ danish ] = "Den vrdi som betafordelingen skal beregnes for." ;
             Text [ french ] = "La valeur  laquelle la distribution Bta doit tre calcule." ;
             Text [ swedish ] = "Vrdet fr vilket betafrdelningen skall berknas." ;
-            Text [ dutch ] = "De waarde waarbij de beta-verdeling moet worden berekend." ;
+            Text [ dutch ] = "De waarde waarbij de bta-verdeling moet worden berekend." ;
             Text [ spanish ] = "es el valor dentro del intervalo [A, B] con el que se evala la funcin." ;
             Text [ english_us ] = "The value for which the beta distribution is to be calculated." ;
             Text[ chinese_simplified ] = "用来进行贝塔-分布函数计算的数值。";
-            Text[ russian ] = "      ,    .";
+            Text[ russian ] = ",    -.";
             Text[ polish ] = "Warto, dla ktrej ma zosta obliczony rozkad beta.";
             Text[ japanese ] = "関数を使用して評価する数値。";
             Text[ chinese_traditional ] = "用來進行貝塔分佈函數計算的數值。";
             Text[ arabic ] = "      .";
-            Text[ dutch ] = "De waarde waarbij de beta-verdeling moet worden berekend.";
+            Text[ dutch ] = "De waarde waarbij de bta-verdeling moet worden berekend.";
             Text[ chinese_simplified ] = "用来进行贝塔-分布函数计算的数值。";
             Text[ greek ] = "        .";
             Text[ korean ] = "베타 분포가 계산되어야 할 값";
             Text[ turkish ] = "Beta datm hesaplanacak deer.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor la distribuci beta del qual s'ha de calcular.";
+            Text[ thai ] = "ค่าสำหรับคำนวณการกระจายแบบเบต้า";
         };
         String 4 // Name of Parameter 2
         {
@@ -28982,6 +29908,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Alfa";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Alfa";
+            Text[ thai ] = "อัลฟ่า";
         };
         String 5 // Description of Parameter 2
         {
@@ -28991,26 +29918,27 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Parametro alfa per la distribuzione." ;
             Text [ portuguese_brazilian ] = "Der Parameter Alpha der Beta-Verteilung." ;
             Text [ portuguese ] = " o parmetro alfa da distribuio-beta." ;
-            Text [ finnish ] = "Beeta-jakauman alfa-parametri." ;
+            Text [ finnish ] = "Beeta-jakauman alfa-parametri" ;
             Text [ danish ] = "Parameter alfa i betafordelingen." ;
             Text [ french ] = "Le paramtre Alpha de la distribution Bta." ;
             Text [ swedish ] = "Parametern alfa fr betafrdelningen." ;
-            Text [ dutch ] = "De parameter alfa van de beta-verdeling" ;
+            Text [ dutch ] = "De parameter alfa van de bta-verdeling" ;
             Text [ spanish ] = "es un parmetro de la distribucin." ;
             Text [ english_us ] = "The Alpha parameter of the Beta distribution." ;
             Text[ chinese_simplified ] = "贝塔分布的参变量阿尔法。";
-            Text[ russian ] = " .";
+            Text[ russian ] = "- -.";
             Text[ polish ] = "Parametr alfa w rozkadzie beta.";
             Text[ japanese ] = "ベータ分布のアルファパラメータ。";
             Text[ chinese_traditional ] = "貝塔分佈的參變量阿爾法。";
             Text[ arabic ] = "   .";
-            Text[ dutch ] = "De parameter alfa van de beta-verdeling";
+            Text[ dutch ] = "De parameter alfa van de bta-verdeling";
             Text[ chinese_simplified ] = "贝塔分布的参变量阿尔法。";
             Text[ greek ] = "     .";
-            Text[ korean ] = "베타 분포의 파라미터 알파";
+            Text[ korean ] = "베타 분포의 알파 매개 변수.";
             Text[ turkish ] = "Beta datmnn alfa parametresi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Parmetre alfa de la distribuci beta.";
+            Text[ thai ] = "พารามิเตอร์อัลฟ่าของการกระจายแบบเบต้า";
         };
         String 6 // Name of Parameter 3
         {
@@ -29024,7 +29952,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ danish ] = "Beta" ;
             Text [ french ] = "Bta" ;
             Text [ swedish ] = "beta" ;
-            Text [ dutch ] = "Beta" ;
+            Text [ dutch ] = "Bta" ;
             Text [ spanish ] = "beta" ;
             Text [ english_us ] = "beta" ;
             Text[ chinese_simplified ] = "beta";
@@ -29033,13 +29961,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ japanese ] = "β";
             Text[ chinese_traditional ] = "beta";
             Text[ arabic ] = "Beta";
-            Text[ dutch ] = "Beta";
+            Text[ dutch ] = "Bta";
             Text[ chinese_simplified ] = "beta";
             Text[ greek ] = "";
             Text[ korean ] = "베타";
             Text[ turkish ] = "Beta";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "beta";
+            Text[ thai ] = "เบต้า";
         };
         String 7 // Description of Parameter 3
         {
@@ -29049,26 +29978,27 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Parametro beta per la distribuzione." ;
             Text [ portuguese_brazilian ] = "Der Parameter Beta der Beta-Verteilung." ;
             Text [ portuguese ] = " o parmetro da distribuio-beta." ;
-            Text [ finnish ] = "Beeta-jakauman beeta-parametri." ;
+            Text [ finnish ] = "Beeta-jakauman beeta-parametri" ;
             Text [ danish ] = "Parameter beta i betafordelingen." ;
             Text [ french ] = "Le paramtre Bta de la distribution Bta." ;
             Text [ swedish ] = "Parametern beta fr betafrdelningen." ;
-            Text [ dutch ] = "De parameter beta van de beta-verdeling" ;
+            Text [ dutch ] = "De parameter bta van de bta-verdeling" ;
             Text [ spanish ] = "es un parmetro de la distribucin." ;
             Text [ english_us ] = "The Beta parameter of the Beta distribution." ;
             Text[ chinese_simplified ] = "贝塔分布的参变量贝塔。";
-            Text[ russian ] = " .";
+            Text[ russian ] = "- -.";
             Text[ polish ] = "Parametr beta w rozkadzie beta.";
             Text[ japanese ] = "ベータ分布のベータパラメータ。";
             Text[ chinese_traditional ] = "貝塔分佈的參變量貝塔。";
             Text[ arabic ] = "   .";
-            Text[ dutch ] = "De parameter beta van de beta-verdeling";
+            Text[ dutch ] = "De parameter bta van de bta-verdeling";
             Text[ chinese_simplified ] = "贝塔分布的参变量贝塔。";
             Text[ greek ] = "     .";
-            Text[ korean ] = "베타 분포의 파라미터 베타.";
+            Text[ korean ] = "베타 분포의 베타 매개 변수.";
             Text[ turkish ] = "Beta datmnn beta parametresi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Parmetre beta de la distribuci beta.";
+            Text[ thai ] = "พารามิเตอร์เบต้าของการกระจายแบบเบต้า";
         };
         String 8 // Name of Parameter 4
         {
@@ -29098,6 +30028,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Balang";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Inici";
+            Text[ thai ] = "เริ่มต้น";
         };
         String 9 // Description of Parameter 4
         {
@@ -29108,7 +30039,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Valore d'inizio per l'intervallo di valori della distribuzione." ;
             Text [ portuguese_brazilian ] = "Der Anfangswert f? das Werteintervall der Verteilung." ;
             Text [ portuguese ] = " um limite inferior opcional para o intervalo de x." ;
-            Text [ finnish ] = "Jakauman arvovlin aloitusarvo." ;
+            Text [ finnish ] = "Jakauman arvoalueen aloitusarvo." ;
             Text [ danish ] = "Startvrdien for fordelingens vrdiinterval." ;
             Text [ french ] = "La valeur initiale pour l'intervalle de valeurs de la distribution." ;
             Text [ swedish ] = "Startvrdet fr frdelningens vrdeintervall." ;
@@ -29116,7 +30047,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es un lmite inferior opcional del intervalo de x." ;
             Text [ english_us ] = "The starting value for the value interval of the distribution." ;
             Text[ chinese_simplified ] = "分布的数值区间的下限。";
-            Text[ russian ] = "     x.";
+            Text[ russian ] = "   .";
             Text[ polish ] = "Grna granica dla przedziau wartoci rozkadu.";
             Text[ japanese ] = "区間の下限。";
             Text[ chinese_traditional ] = "分佈的數值區間的下限。";
@@ -29128,6 +30059,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Datmn deer aralklarnn balang deeri.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor inicial per a l'interval de valors de la distribuci.";
+            Text[ thai ] = "การเริ่มต้นค่าสำหรับช่วงของค่าการกระจาย";
         };
         String 10 // Name of Parameter 5
         {
@@ -29153,10 +30085,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Einde";
             Text[ chinese_simplified ] = "end";
             Text[ greek ] = "";
-            Text[ korean ] = "종료";
+            Text[ korean ] = "끝";
             Text[ turkish ] = "Son";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Final";
+            Text[ thai ] = "สิ้นสุด";
         };
         String 11 // Description of Parameter 5
         {
@@ -29167,7 +30100,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Valore finale per l'intervallo di valori della distribuzione." ;
             Text [ portuguese_brazilian ] = "Der Endwert f? das Werteintervall der Verteilung." ;
             Text [ portuguese ] = " um limite superior opcional para o intervalo de x." ;
-            Text [ finnish ] = "Jakauman arvovlin viimeinen arvo." ;
+            Text [ finnish ] = "Jakauman arvovlin viimeinen arvo" ;
             Text [ danish ] = "Slutvrdien for fordelingens vrdiinterval." ;
             Text [ french ] = "La valeur finale pour l'intervalle de valeurs de la distribution." ;
             Text [ swedish ] = "Slutvrdet fr frdelningens vrdeintervall." ;
@@ -29175,7 +30108,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es un lmite superior opcional del intervalo de x." ;
             Text [ english_us ] = "The final value for the value interval of the distribution." ;
             Text[ chinese_simplified ] = "分布的数值区间的上限。";
-            Text[ russian ] = "     x.";
+            Text[ russian ] = "   .";
             Text[ polish ] = "Dolna granica dla przedziau wartoci rozkadu.";
             Text[ japanese ] = "区間の上限。";
             Text[ chinese_traditional ] = "分佈的數值區間的上限。";
@@ -29187,6 +30120,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Datmn deer aralklarnn son deeri.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor final per a l'interval de valors de la distribuci.";
+            Text[ thai ] = "ค่าสุดท้ายสำหรับช่วงของค่าการกระจาย";
         };
     };
      // -=*# Resource for function BETAINV #*=-
@@ -29200,7 +30134,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Restituisce l'inversa della distribuzione beta." ;
             Text [ portuguese_brazilian ] = "Werte der inversen Beta-Verteilung" ;
             Text [ portuguese ] = "Devolve o inverso da funo de densidade da probabilidade beta cumulativa." ;
-            Text [ finnish ] = "Knteisen beeta-jakauman arvot." ;
+            Text [ finnish ] = "Knteisen beeta-jakauman arvot" ;
             Text [ danish ] = "Vrdier for den inverse betafordelingen" ;
             Text [ french ] = "Valeurs de la distribution Bta inverse." ;
             Text [ swedish ] = "Vrden fr den inversa betafrdelningen." ;
@@ -29208,7 +30142,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve, para una probabilidad dada, el valor de la variable aleatoria siguiendo una distribucin beta." ;
             Text [ english_us ] = "Values of the inverse beta distribution." ;
             Text[ chinese_simplified ] = "贝塔分布累积函数的逆函数值";
-            Text[ russian ] = "       -.";
+            Text[ russian ] = "   -.";
             Text[ polish ] = "Wyznacza odwrotno rozkadu beta";
             Text[ japanese ] = "ベータ分布のパーセント点を返します。";
             Text[ chinese_traditional ] = "貝塔分佈累積函數的逆函數值";
@@ -29220,6 +30154,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Ters beta datmnn deerleri";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valors de la distribuci beta inversa.";
+            Text[ thai ] = "ค่าอินเวิร์สของการกระจายแบบเบต้า";
         };
         ExtraData =
         {
@@ -29255,6 +30190,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -29268,22 +30204,23 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ danish ] = "Sandsynligheden som den inverse betafordeling skal beregnes for." ;
             Text [ french ] = "La valeur de probabilit  laquelle la distribution bta inverse doit tre calcule." ;
             Text [ swedish ] = "Sannolikhetsvrdet fr vilket betafrdelningen skall berknas." ;
-            Text [ dutch ] = "De kans die met de inverse beta-verdeling wordt berekend." ;
+            Text [ dutch ] = "De kans die met de inverse bta-verdeling wordt berekend." ;
             Text [ spanish ] = "es una probabilidad asociada con la distribucin beta." ;
             Text [ english_us ] = "The probability value for which the inverse beta distribution is to be calculated." ;
             Text[ chinese_simplified ] = "用于贝塔分布逆函数值计算的概率值。";
-            Text[ russian ] = ",   -.";
+            Text[ russian ] = " ,     -.";
             Text[ polish ] = "Wyznacza prawdopodobiestwo, dla ktrego ma zosta obliczona odwrotno rozkadu beta.";
             Text[ japanese ] = "ベータ分布の分布関数の値。";
             Text[ chinese_traditional ] = "用於貝塔分佈逆函數值計算的概率值。";
             Text[ arabic ] = "    .";
-            Text[ dutch ] = "De kans die met de inverse beta-verdeling wordt berekend.";
+            Text[ dutch ] = "De kans die met de inverse bta-verdeling wordt berekend.";
             Text[ chinese_simplified ] = "用于贝塔分布逆函数值计算的概率值。";
             Text[ greek ] = "            .";
             Text[ korean ] = "역 베타 분포가 계산되어야 할 확률값.";
             Text[ turkish ] = "Ters beta dalm hesaplanacak olaslk deeri.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor de probabilitat la distribuci beta inversa del qual s'ha de calcular.";
+            Text[ thai ] = "ค่าความน่าจะเป็นสำหรับคำนวณอินเวิร์สของการกระจายแบบเบต้า";
         };
         String 4 // Name of Parameter 2
         {
@@ -29313,6 +30250,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Alfa";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Alfa";
+            Text[ thai ] = "อัลฟ่า";
         };
         String 5 // Description of Parameter 2
         {
@@ -29322,26 +30260,27 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Parametro alfa per la distribuzione." ;
             Text [ portuguese_brazilian ] = "Der Parameter Alpha der Beta-Verteilung." ;
             Text [ portuguese ] = " o parmetro alfa da distribuio-beta." ;
-            Text [ finnish ] = "Beeta-jakauman alfa-parametri." ;
+            Text [ finnish ] = "Beeta-jakauman alfa-parametri" ;
             Text [ danish ] = "Parameter alfa i betafordelingen." ;
             Text [ french ] = "Le paramtre Alpha de la distribution Bta." ;
             Text [ swedish ] = "Parametern alfa fr betafrdelningen." ;
-            Text [ dutch ] = "De parameter alfa van de beta-verdeling." ;
+            Text [ dutch ] = "De parameter alfa van de bta-verdeling." ;
             Text [ spanish ] = "es un parmetro de la distribucin." ;
             Text [ english_us ] = "The Alpha parameter of the Beta distribution." ;
             Text[ chinese_simplified ] = "贝塔分布的参变量阿尔法。";
-            Text[ russian ] = " .";
+            Text[ russian ] = "- -.";
             Text[ polish ] = "Parametr alfa w rozkadzie beta.";
             Text[ japanese ] = "ベータ分布のアルファパラメータ。";
             Text[ chinese_traditional ] = "貝塔分佈的參變量阿爾法。";
             Text[ arabic ] = "   .";
-            Text[ dutch ] = "De parameter alfa van de beta-verdeling.";
+            Text[ dutch ] = "De parameter alfa van de bta-verdeling.";
             Text[ chinese_simplified ] = "贝塔分布的参变量阿尔法。";
             Text[ greek ] = "     .";
-            Text[ korean ] = "베타 분포의 파라미터 알파.";
+            Text[ korean ] = "베타 분포의 알파 매개 변수.";
             Text[ turkish ] = "Beta datmn alfa parametresi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Parmetre alfa de la distribuci beta.";
+            Text[ thai ] = "พารามิเตอร์อัลฟ่าของการกระจายแบบเบต้า";
         };
         String 6 // Name of Parameter 3
         {
@@ -29355,7 +30294,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ danish ] = "Beta" ;
             Text [ french ] = "Bta" ;
             Text [ swedish ] = "beta" ;
-            Text [ dutch ] = "Beta" ;
+            Text [ dutch ] = "Bta" ;
             Text [ spanish ] = "beta" ;
             Text [ english_us ] = "beta" ;
             Text[ chinese_simplified ] = "beta";
@@ -29364,13 +30303,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ japanese ] = "β";
             Text[ chinese_traditional ] = "beta";
             Text[ arabic ] = "Beta";
-            Text[ dutch ] = "Beta";
+            Text[ dutch ] = "Bta";
             Text[ chinese_simplified ] = "beta";
             Text[ greek ] = "";
             Text[ korean ] = "베타";
             Text[ turkish ] = "Beta";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "beta";
+            Text[ thai ] = "เบต้า";
         };
         String 7 // Description of Parameter 3
         {
@@ -29380,26 +30320,27 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Parametro beta per la distribuzione." ;
             Text [ portuguese_brazilian ] = "Der Parameter Beta der Beta-Verteilung." ;
             Text [ portuguese ] = " o parmetro da distribuio-beta." ;
-            Text [ finnish ] = "Beeta-jakauman beeta-parametri." ;
+            Text [ finnish ] = "Beeta-jakauman beeta-parametri" ;
             Text [ danish ] = "Parameter beta i betafordelingen." ;
             Text [ french ] = "Le paramtre Bta de la distribution Bta." ;
             Text [ swedish ] = "Parametern beta fr betafrdelningen." ;
-            Text [ dutch ] = "De parameter beta van de beta-verdeling." ;
+            Text [ dutch ] = "De parameter bta van de bta-verdeling." ;
             Text [ spanish ] = "es un parmetro de la distribucin." ;
             Text [ english_us ] = "The Beta parameter of the Beta distribution." ;
             Text[ chinese_simplified ] = "贝塔分布的参变量贝塔。";
-            Text[ russian ] = " .";
+            Text[ russian ] = "- -.";
             Text[ polish ] = "Parametr beta w rozkadzie beta.";
             Text[ japanese ] = "ベータ分布のベータパラメータ。";
             Text[ chinese_traditional ] = "貝塔分佈的參變量貝塔。";
             Text[ arabic ] = "   .";
-            Text[ dutch ] = "De parameter beta van de beta-verdeling.";
+            Text[ dutch ] = "De parameter bta van de bta-verdeling.";
             Text[ chinese_simplified ] = "贝塔分布的参变量贝塔。";
             Text[ greek ] = "     .";
-            Text[ korean ] = "베타 분포의 파라미터 베타";
+            Text[ korean ] = "베타 분포의 베타 매개 변수.";
             Text[ turkish ] = "Beta datmn beta parametresi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Parmetre beta de la distribuci beta.";
+            Text[ thai ] = "พารามิเตอร์เบต้าของการกระจายแบบเบต้า";
         };
         String 8 // Name of Parameter 4
         {
@@ -29429,6 +30370,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Balang";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Inici";
+            Text[ thai ] = "เริ่มต้น";
         };
         String 9 // Description of Parameter 4
         {
@@ -29439,7 +30381,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Valore facoltativo per l'intervallo dei valori della distribuzione." ;
             Text [ portuguese_brazilian ] = "Der Anfangswert f? das Werteintervall der Verteilung." ;
             Text [ portuguese ] = " um limite inferior opcional para o intervalo de x." ;
-            Text [ finnish ] = "Jakauman arvovlin aloitusarvo." ;
+            Text [ finnish ] = "Jakauman arvovlin aloitusarvo" ;
             Text [ danish ] = "Startvrdien for fordelingens vrdiinterval." ;
             Text [ french ] = "La valeur initiale pour l'intervalle de valeurs de la distribution." ;
             Text [ swedish ] = "Startvrdet fr frdelningens vrdeintervall." ;
@@ -29447,7 +30389,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es un lmite inferior opcional del intervalo de x." ;
             Text [ english_us ] = "The starting value for the value interval of the distribution." ;
             Text[ chinese_simplified ] = "分布的数值区间的下限。";
-            Text[ russian ] = "     x.";
+            Text[ russian ] = "   .";
             Text[ polish ] = "Grna granica dla przedziau wartoci rozkadu.";
             Text[ japanese ] = "区間の下限。";
             Text[ chinese_traditional ] = "分佈的數值區間的下限。";
@@ -29459,6 +30401,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Datmn deer aralklarnn balang deeri.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor inicial per a l'interval de valors de la distribuci.";
+            Text[ thai ] = "การเริ่มต้นค่าสำหรับช่วงของค่าการกระจาย";
         };
         String 10 // Name of Parameter 5
         {
@@ -29476,7 +30419,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Fin" ;
             Text [ english_us ] = "End" ;
             Text[ chinese_simplified ] = "end";
-            Text[ russian ] = "";
+            Text[ russian ] = "B";
             Text[ polish ] = "Koniec";
             Text[ japanese ] = "上限";
             Text[ chinese_traditional ] = "End";
@@ -29484,10 +30427,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Einde";
             Text[ chinese_simplified ] = "end";
             Text[ greek ] = "";
-            Text[ korean ] = "종료";
+            Text[ korean ] = "끝";
             Text[ turkish ] = "Son";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Final";
+            Text[ thai ] = "สิ้นสุด";
         };
         String 11 // Description of Parameter 5
         {
@@ -29498,7 +30442,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Il valore finale per l'intervallo dei valori della distribuzione." ;
             Text [ portuguese_brazilian ] = "Der Endwert f? das Werteintervall der Verteilung." ;
             Text [ portuguese ] = " um limite superior opcional para o intervalo de x." ;
-            Text [ finnish ] = "Jakauman arvovlin viimeinen arvo." ;
+            Text [ finnish ] = "Jakauman arvovlin viimeinen arvo" ;
             Text [ danish ] = "Slutvrdien for fordelingens vrdiinterval." ;
             Text [ french ] = "La valeur finale pour l'intervalle de valeurs de la distribution." ;
             Text [ swedish ] = "Slutvrdet fr frdelningens vrdeintervall." ;
@@ -29506,7 +30450,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es un lmite superior opcional del intervalo de x." ;
             Text [ english_us ] = "The final value for the value interval of the distribution." ;
             Text[ chinese_simplified ] = "分布的数值区间的上限。";
-            Text[ russian ] = "     x.";
+            Text[ russian ] = "   .";
             Text[ polish ] = "Dolna granica dla przedziau wartoci rozkadu.";
             Text[ japanese ] = "区間の上限。";
             Text[ chinese_traditional ] = "分佈的數值區間的上限。";
@@ -29518,6 +30462,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Datmn deer aralklarnn son deeri.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor final per a l'interval de valors de la distribuci.";
+            Text[ thai ] = "ค่าสุดท้ายสำหรับช่วงของค่าการกระจาย";
         };
     };
      // -=*# Resource for function WEIBULL #*=-
@@ -29539,7 +30484,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve la probabilidad de una variable aleatoria siguiendo una distribucin de Weibull" ;
             Text [ english_us ] = "Returns the values of the Weibull distribution." ;
             Text[ chinese_simplified ] = "韦伯分布";
-            Text[ russian ] = "   .";
+            Text[ russian ] = "   .";
             Text[ polish ] = "Wyznacza rozkad Weibulla.";
             Text[ japanese ] = "ワイブル分布の分布関数または密度関数の値を返します";
             Text[ chinese_traditional ] = "韋伯分佈";
@@ -29551,6 +30496,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Weibull datm deerleri";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna els valors de la distribuci Weibull.";
+            Text[ thai ] = "ส่งกลับค่าการกระจายแบบ Weibull ";
         };
         ExtraData =
         {
@@ -29586,6 +30532,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -29615,6 +30562,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Weibull datm hesaplanacak deer.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor la distribuci Weibull del qual s'ha de calcular.";
+            Text[ thai ] = "ค่าสำหรับคำนวณการกระจายแบบ Weibull ";
         };
         String 4 // Name of Parameter 2
         {
@@ -29644,6 +30592,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Alfa";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Alfa";
+            Text[ thai ] = "อัลฟ่า";
         };
         String 5 // Description of Parameter 2
         {
@@ -29653,7 +30602,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Il parametro alfa della distribuzione Weibull." ;
             Text [ portuguese_brazilian ] = "Der Parameter Alpha der Weibull-Verteilung." ;
             Text [ portuguese ] = " um parmetro de distribuio." ;
-            Text [ finnish ] = "Weibull-jakauman alfa-parametri." ;
+            Text [ finnish ] = "Weibull-jakauman alfa-parametri" ;
             Text [ danish ] = "Parameter alfa i Weibull-fordelingen." ;
             Text [ french ] = "Le paramtre Alpha de la distribution Weibull." ;
             Text [ swedish ] = "Parametern alfa fr Weibull-frdelningen." ;
@@ -29661,7 +30610,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es un parmetro de la distribucin." ;
             Text [ english_us ] = "The Alpha parameter of the Weibull distribution." ;
             Text[ chinese_simplified ] = "韦伯分布的阿尔法参数。";
-            Text[ russian ] = "  .";
+            Text[ russian ] = "   .";
             Text[ polish ] = "Parametr alfa rozkadu Weibulla.";
             Text[ japanese ] = "ワイブル分布のパラメータ。";
             Text[ chinese_traditional ] = "韋伯分佈的阿爾法參數。";
@@ -29669,10 +30618,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "De parameter alfa van de Weibull-verdeling.";
             Text[ chinese_simplified ] = "韦伯分布的阿尔法参数。";
             Text[ greek ] = "     Weibull.";
-            Text[ korean ] = "Weibull 분포의 파라미터 알파.";
+            Text[ korean ] = "Weibull 분포의 알파 매개 변수.";
             Text[ turkish ] = "Weibull datmnn alfa parametresi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Parmetre alfa de la distribuci Weibull.";
+            Text[ thai ] = "พารามิเตอร์อัลฟ่าของการกระจายแบบ Weibull ";
         };
         String 6 // Name of Parameter 3
         {
@@ -29686,7 +30636,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ danish ] = "Beta" ;
             Text [ french ] = "Bta" ;
             Text [ swedish ] = "beta" ;
-            Text [ dutch ] = "Beta" ;
+            Text [ dutch ] = "Bta" ;
             Text [ spanish ] = "beta" ;
             Text [ english_us ] = "beta" ;
             Text[ chinese_simplified ] = "beta";
@@ -29695,13 +30645,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ japanese ] = "β";
             Text[ chinese_traditional ] = "Beta";
             Text[ arabic ] = "Beta";
-            Text[ dutch ] = "Beta";
+            Text[ dutch ] = "Bta";
             Text[ chinese_simplified ] = "beta";
             Text[ greek ] = "";
             Text[ korean ] = "베타";
             Text[ turkish ] = "Beta";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "beta";
+            Text[ thai ] = "เบต้า";
         };
         String 7 // Description of Parameter 3
         {
@@ -29711,26 +30662,27 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Il parametro beta della distribuzione Weibull." ;
             Text [ portuguese_brazilian ] = "Der Parameter Beta der Weibull-Verteilung." ;
             Text [ portuguese ] = " o parmetro beta de distribuio." ;
-            Text [ finnish ] = "Weibull-jakauman beeta-parametri." ;
+            Text [ finnish ] = "Weibull-jakauman beeta-parametri" ;
             Text [ danish ] = "Parameter beta i Weibull-fordelingen." ;
             Text [ french ] = "Le paramtre Bta de la distribution Weibull." ;
             Text [ swedish ] = "Parametern beta fr Weibull-frdelningen." ;
-            Text [ dutch ] = "De parameter beta van de Weibull-verdeling." ;
+            Text [ dutch ] = "De parameter bta van de Weibull-verdeling." ;
             Text [ spanish ] = "es un parmetro de la distribucin." ;
             Text [ english_us ] = "The Beta parameter of the Weibull distribution." ;
             Text[ chinese_simplified ] = "韦伯分布的贝塔参数。";
-            Text[ russian ] = "  .";
+            Text[ russian ] = "   .";
             Text[ polish ] = "Parametr beta rozkadu Weibulla.";
             Text[ japanese ] = "ワイブル分布のパラメータ。";
             Text[ chinese_traditional ] = "韋伯分佈的貝塔參數。";
             Text[ arabic ] = " .";
-            Text[ dutch ] = "De parameter beta van de Weibull-verdeling.";
+            Text[ dutch ] = "De parameter bta van de Weibull-verdeling.";
             Text[ chinese_simplified ] = "韦伯分布的贝塔参数。";
             Text[ greek ] = "     Weibull.";
-            Text[ korean ] = "Weibull 분포의 파라미터 베타.";
+            Text[ korean ] = "Weibull 분포의 베타 매개 변수.";
             Text[ turkish ] = "Weibull datmnn beta parametresi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Parmetre beta de la distribuci Weibull.";
+            Text[ thai ] = "พารามิเตอร์เบต้าของการกระจายแบบ Weibull ";
         };
         String 8 // Name of Parameter 4
         {
@@ -29748,7 +30700,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "acumulado" ;
             Text [ english_us ] = "C" ;
             Text[ chinese_simplified ] = "cumulative";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "Skumulowany";
             Text[ japanese ] = "関数形式";
             Text[ chinese_traditional ] = "cumulative";
@@ -29760,6 +30712,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "C";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "C";
+            Text[ thai ] = "C";
         };
         String 9 // Description of Parameter 4
         {
@@ -29769,7 +30722,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Se il valore = 0 calcola la densit di probabilit, se  = 1 la distribuzione." ;
             Text [ portuguese_brazilian ] = "Kumuliert. K = 0 berechnet die Dichtefunktion, K = 1 die Verteilung." ;
             Text [ portuguese ] = " um valor lgico que determina a forma da funo. 0 devolve a funo de probabilidade; 1 devolve a distribuio cumulativa." ;
-            Text [ finnish ] = "Kumuloitu. C = 0 laskee tiheysfunktion ja C = 1 jakauman." ;
+            Text [ finnish ] = "Kumuloitu C = 0 laskee tiheysfunktion ja C = 1 jakauman." ;
             Text [ danish ] = "Kumulativ. K = 0 beregner tthedsfunktionen, K = 1 fordelingen." ;
             Text [ french ] = "Cumulative. C = 0 calcule la fonction de densit, C = 1 la distribution." ;
             Text [ swedish ] = "Kumulerat. K = 0 berknar tthetsfunktionen, K = 1 frdelningen." ;
@@ -29777,7 +30730,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es el valor lgico que determina la forma de la funcin. Si es 0 calcula la funcin acumulada, si es 1 la distribucin." ;
             Text [ english_us ] = "Cumulated. C=0 calculates the density function, C=1 the distribution." ;
             Text[ chinese_simplified ] = "逻辑值,用于确定函数的类型。 K = 0 表示计算\n密度函数, K = 1 表示计算累积分布函数。";
-            Text[ russian ] = "  :   (0)    (1).";
+            Text[ russian ] = ". =0   , =1 - .";
             Text[ polish ] = "Skumulowany. 0 oblicza gsto, 1 - rozkad.";
             Text[ japanese ] = "0 を指定すると密度関数、1 を指定すると分布関数の値を返します。";
             Text[ chinese_traditional ] = "邏輯值﹐用來確定函數的類型。 K = 0 表示計算密度函數﹐ K = 1 \n表示計算累積分佈函數。";
@@ -29789,6 +30742,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Kmlasyon. K = 0 younluk fonksiyonunu, K = 1 ise datm hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Acumulat. C=0 calcula la funci de densitat; C=1, la distribuci.";
+            Text[ thai ] = "สะสม C=0 คำนวณฟังก์ชั่นความหนาแน่น, C=1 การกระจาย";
         };
     };
      // -=*# Resource for function HYPGEOMVERT #*=-
@@ -29802,7 +30756,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Restituisce la distribuzione ipergeometrica." ;
             Text [ portuguese_brazilian ] = "Werte der hypergeometrischen Verteilung" ;
             Text [ portuguese ] = "Devolve a distribuio hipergeomtrica." ;
-            Text [ finnish ] = "Hypergeometrisen jakauman arvot." ;
+            Text [ finnish ] = "Hypergeometrisen jakauman arvot" ;
             Text [ danish ] = "Vrdier for den hypergeometriske fordeling" ;
             Text [ french ] = "Valeurs de la distribution hypergomtrique." ;
             Text [ swedish ] = "Vrden fr den hypergeometriska frdelningen." ;
@@ -29810,7 +30764,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve la probabilidad para una variable aleatoria discreta siguiendo una distribucin hipergeomtrica" ;
             Text [ english_us ] = "Values of the hypergeometric distribution." ;
             Text[ chinese_simplified ] = "超几何分布值";
-            Text[ russian ] = "  .";
+            Text[ russian ] = "  .";
             Text[ polish ] = "Oblicza rozkad hipergeometryczny.";
             Text[ japanese ] = "超幾何分布の密度関数の値を返します。";
             Text[ chinese_traditional ] = "超幾何分佈值";
@@ -29822,6 +30776,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Hipergeometrik datmn deerleri";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valors de la distribuci hipergeomtrica.";
+            Text[ thai ] = "ค่าการกระจายแบบเรขาคณิตขั้นสูง";
         };
         ExtraData =
         {
@@ -29857,6 +30812,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "rn";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "X";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -29866,7 +30822,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Numero di successi nel campione." ;
             Text [ portuguese_brazilian ] = "Die Anzahl der Erfolge in der Stichprobe." ;
             Text [ portuguese ] = " o nmero de sucessos num exemplo." ;
-            Text [ finnish ] = "Onnistumisten mr otoksessa." ;
+            Text [ finnish ] = "Onnistumisten mr otoksessa" ;
             Text [ danish ] = "Antallet af gunstige udfald i stikprven." ;
             Text [ french ] = "Le nombre de succs de l'chantillon." ;
             Text [ swedish ] = "Antalet lyckade frsk i stickprovet." ;
@@ -29886,6 +30842,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "rnekteki baar says.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre d'xits de la mostra.";
+            Text[ thai ] = "จำนวนความสำเร็จในกลุ่มตัวอย่าง";
         };
         String 4 // Name of Parameter 2
         {
@@ -29903,7 +30860,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "n_muestra" ;
             Text [ english_us ] = "n_sample" ;
             Text[ chinese_simplified ] = "n_sample";
-            Text[ russian ] = "_";
+            Text[ russian ] = " ";
             Text[ polish ] = "wielk_prbki";
             Text[ japanese ] = "n";
             Text[ chinese_traditional ] = "n_sample";
@@ -29915,6 +30872,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "N_rnek";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "n_sample";
+            Text[ thai ] = "n_ตัวอย่าง";
         };
         String 5 // Description of Parameter 2
         {
@@ -29925,7 +30883,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Dimensione del campione." ;
             Text [ portuguese_brazilian ] = "Die Gr?e der Stichprobe." ;
             Text [ portuguese ] = " o tamanho do exemplo." ;
-            Text [ finnish ] = "Otoksen koko." ;
+            Text [ finnish ] = "Otoksen koko" ;
             Text [ danish ] = "Stikprvens strrelse." ;
             Text [ french ] = "La taille de l'chantillon." ;
             Text [ swedish ] = "Storleken p stickprovet." ;
@@ -29945,6 +30903,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "rnein bykl.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Mida de la mostra.";
+            Text[ thai ] = "ขนาดตัวอย่าง";
         };
         String 6 // Name of Parameter 3
         {
@@ -29962,7 +30921,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "pobl_xito" ;
             Text [ english_us ] = "successes" ;
             Text[ chinese_simplified ] = "population_s";
-            Text[ russian ] = "__s";
+            Text[ russian ] = "";
             Text[ polish ] = "populacja_s";
             Text[ japanese ] = "D";
             Text[ chinese_traditional ] = "population_s";
@@ -29974,6 +30933,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Baar";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "xits";
+            Text[ thai ] = "ความสำเร็จ";
         };
         String 7 // Description of Parameter 3
         {
@@ -29983,7 +30943,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Numero di successi nella popolazione." ;
             Text [ portuguese_brazilian ] = "Die Anzahl der Erfolge in der Grundgesamtheit." ;
             Text [ portuguese ] = " o nmero de sucessos na populao." ;
-            Text [ finnish ] = "Populaation onnistumisten mr." ;
+            Text [ finnish ] = "Populaation onnistumisten mr" ;
             Text [ danish ] = "Antallet af gunstige udfald i populationen." ;
             Text [ french ] = "Le nombre de succs de la population." ;
             Text [ swedish ] = "Antalet lyckade frsk i populationen." ;
@@ -29991,7 +30951,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es el nmero de xitos en la poblacin." ;
             Text [ english_us ] = "The number of successes in the population." ;
             Text[ chinese_simplified ] = "抽样总体中的成功次数。";
-            Text[ russian ] = "     .";
+            Text[ russian ] = "    .";
             Text[ polish ] = "Liczba sukcesw w populacji.";
             Text[ japanese ] = "母集団内で成功する数。";
             Text[ chinese_traditional ] = "抽樣總體中的成功次數。";
@@ -30003,6 +30963,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Poplasyondaki baar says.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre d'xits en la poblaci.";
+            Text[ thai ] = "จำนวนของความสำเร็จในประชากร";
         };
         String 8 // Name of Parameter 4
         {
@@ -30020,7 +30981,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "n_total" ;
             Text [ english_us ] = "n_population" ;
             Text[ chinese_simplified ] = "n_population";
-            Text[ russian ] = "__";
+            Text[ russian ] = " ";
             Text[ polish ] = "N_cznie";
             Text[ japanese ] = "N";
             Text[ chinese_traditional ] = "n_population";
@@ -30032,6 +30993,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "N_toplam";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "n_population";
+            Text[ thai ] = "n_ประชากร";
         };
         String 9 // Description of Parameter 4
         {
@@ -30042,7 +31004,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Dimensione della popolazione." ;
             Text [ portuguese_brazilian ] = "Die Gr?e der Grundgesamtheit." ;
             Text [ portuguese ] = " o tamanho da populao." ;
-            Text [ finnish ] = "Populaation koko." ;
+            Text [ finnish ] = "Populaation koko" ;
             Text [ danish ] = "Populationens strrelse." ;
             Text [ french ] = "La taille de la population." ;
             Text [ swedish ] = "Storleken p populationen." ;
@@ -30050,7 +31012,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es el tamao de la poblacin." ;
             Text [ english_us ] = "The population size." ;
             Text[ chinese_simplified ] = "抽样的总体数目。";
-            Text[ russian ] = "  .";
+            Text[ russian ] = " .";
             Text[ polish ] = "Wielko populacji.";
             Text[ japanese ] = "母集団の大きさ。";
             Text[ chinese_traditional ] = "抽樣的總體數目。";
@@ -30062,6 +31024,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Poplasyonun bykl.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Mida de la poblaci.";
+            Text[ thai ] = "ขนาดประชากร";
         };
     };
      // -=*# Resource for function TVERT #*=-
@@ -30084,7 +31047,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve la probabilidad de una variable aleatoria siguiendo una distribucin t de Student" ;
             Text [ english_us ] = "Returns the t-distribution." ;
             Text[ chinese_simplified ] = "计算学生氏  t 分布。";
-            Text[ russian ] = "  t- .";
+            Text[ russian ] = "  t- .";
             Text[ polish ] = "Wartoci rozkadu t";
             Text[ japanese ] = "t 分布の片側確率または両側確率を返します。";
             Text[ chinese_traditional ] = "計算學生氏 t 分佈。";
@@ -30096,6 +31059,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "T datm deerleri";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna la distribuci T.";
+            Text[ thai ] = "ส่งกลับการกระจายแบบ t";
         };
         ExtraData =
         {
@@ -30131,6 +31095,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -30148,7 +31113,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es el valor numrico al que se ha de evaluar la distribucin." ;
             Text [ english_us ] = "The value for which the T distribution is to be calculated." ;
             Text[ chinese_simplified ] = "要计算其 t-分布的数值。";
-            Text[ russian ] = ",     .";
+            Text[ russian ] = ",      .";
             Text[ polish ] = "Warto, dla ktrej ma zosta obliczony rozkad t.";
             Text[ japanese ] = "t の値。";
             Text[ chinese_traditional ] = "要計算其 t-分佈的數值。";
@@ -30160,6 +31125,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "T datm hesaplanacak deer.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor la distribuci T del qual s'ha de calcular.";
+            Text[ thai ] = "ค่าสำหรับคำนวณการกระจายแบบ T ";
         };
         String 4 // Name of Parameter 2
         {
@@ -30177,7 +31143,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "grados_libertad" ;
             Text [ english_us ] = "degrees_freedom" ;
             Text[ chinese_simplified ] = "degrees_freedom";
-            Text[ russian ] = "_";
+            Text[ russian ] = " ";
             Text[ polish ] = "Stopnie swobody";
             Text[ japanese ] = "自由度";
             Text[ chinese_traditional ] = "degrees_freedom";
@@ -30189,6 +31155,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "zgrlk dereceleri";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "degrees_freedom";
+            Text[ thai ] = "ระดับ_ความอิสระ";
         };
         String 5 // Description of Parameter 2
         {
@@ -30206,7 +31173,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es un entero que indica el nmero de grados de libertad." ;
             Text [ english_us ] = "The degrees of freedom of the T distribution." ;
             Text[ chinese_simplified ] = "t-分布的自由度。";
-            Text[ russian ] = "   t-.";
+            Text[ russian ] = "    T.";
             Text[ polish ] = "Stopnie swobody w rozkadzie t.";
             Text[ japanese ] = "t 分布の自由度。";
             Text[ chinese_traditional ] = "t-分佈的自由度。";
@@ -30218,6 +31185,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "T datmnn zgrlk dereceleri.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Els graus de llibertat de la distribuci T.";
+            Text[ thai ] = "ระดับความอิสระของการกระจายแบบ T ";
         };
         String 6 // Name of Parameter 3
         {
@@ -30247,6 +31215,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Kip";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "mode";
+            Text[ thai ] = "โหมด";
         };
         String 7 // Description of Parameter 3
         {
@@ -30264,7 +31233,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "especifica el nmero de colas de la distribucin que se ha de devolver." ;
             Text [ english_us ] = "Mode = 1calculates the one-tailed test, 2 = two-tailed distribution." ;
             Text[ chinese_simplified ] = "tails = 1 计算单页的试验,tails = 2 计算双页的试验。";
-            Text[ russian ] = "  = 1,      .   = 2,      .";
+            Text[ russian ] = "  = 1,     .   = 2,     .";
             Text[ polish ] = "Tryb = 1 oblicza jednoladowy test, Tryb = 2 dwuladowy.";
             Text[ japanese ] = "1 を指定すると片側確率、2 を指定すると両側確率を返します。";
             Text[ chinese_traditional ] = "tails = 1 計算單頁的試驗﹐tails = 2 計算雙頁的試驗。";
@@ -30276,6 +31245,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Kip = 1, tek kuyruklu deneyi, Kip = 2 ise iki kuyruklu deneyi hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Mode = 1 calcula la verificaci d'una cua; 2 = distribuci de dues cues.";
+            Text[ thai ] = "โหมด = 1คำนวณการทดสอบแบบหางเดียว, 2 = การกระจายแบบสองหาง";
         };
     };
      // -=*# Resource for function TINV #*=-
@@ -30298,7 +31268,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve, para una probabilidad dada, el valor de la variable aleatoria siguiendo una distribucin t inversa de Student" ;
             Text [ english_us ] = "Values of the inverse t-distribution." ;
             Text[ chinese_simplified ] = "双尾学生氏  t 分布的逆函数。";
-            Text[ russian ] = "   t- .";
+            Text[ russian ] = "  t-.";
             Text[ polish ] = "Wyznacza odwrotno rozkadu t Studenta.";
             Text[ japanese ] = "t 分布のパーセント点を返します。";
             Text[ chinese_traditional ] = "雙尾學生氏 t 分佈的逆函數。";
@@ -30310,6 +31280,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Ters T datm deerleri";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valors de la distribuci T inversa.";
+            Text[ thai ] = "ค่าอินเวิร์สของการกระจายแบบ t ";
         };
         ExtraData =
         {
@@ -30345,6 +31316,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -30362,7 +31334,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es la probabilidad asociada con la distribucin t de Student dos colas." ;
             Text [ english_us ] = "The probability value for which the inverse T distribution is to be calculated." ;
             Text[ chinese_simplified ] = "对应于双尾学生氏  t 分布的概率。";
-            Text[ russian ] = " ,      t-.";
+            Text[ russian ] = " ,       .";
             Text[ polish ] = "Prawdopodobiestwo, dla ktrego ma zosta obliczona odwrotno rozkadu t Studenta.";
             Text[ japanese ] = "パーセント点を求める両側確率。";
             Text[ chinese_traditional ] = "對應於雙尾學生氏 t 分佈的概率。";
@@ -30374,6 +31346,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Ters T datm hesaplanacak olaslk deeri.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor de probabilitat la distribuci T inversa del qual s'ha de calcular.";
+            Text[ thai ] = "ค่าความน่าจะเป็นสำหรับคำนวณอินเวิร์สของการกระจายแบบ  T ";
         };
         String 4 // Name of Parameter 2
         {
@@ -30391,7 +31364,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "grados_libertad" ;
             Text [ english_us ] = "degrees_freedom" ;
             Text[ chinese_simplified ] = "degrees_freedom";
-            Text[ russian ] = "_";
+            Text[ russian ] = " ";
             Text[ polish ] = "Stopnie swobody";
             Text[ japanese ] = "自由度";
             Text[ chinese_traditional ] = "degrees_freedom";
@@ -30403,6 +31376,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "zgrlk dereceleri";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "degrees_freedom";
+            Text[ thai ] = "ระดับ_ความอิสระ";
         };
         String 5 // Description of Parameter 2
         {
@@ -30420,7 +31394,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es el nmero de grados de libertad para diferenciar la distribucin." ;
             Text [ english_us ] = "The degrees of freedom of the T distribution." ;
             Text[ chinese_simplified ] = "t-分布的自由度。";
-            Text[ russian ] = "   t-.";
+            Text[ russian ] = "    T.";
             Text[ polish ] = "Stopnie swobody w rozkadzie t.";
             Text[ japanese ] = "t 分布の自由度。";
             Text[ chinese_traditional ] = "t-分佈的自由度。";
@@ -30432,6 +31406,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "T datm zgrlk dereceleri.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Els graus de llibertat de la distribuci T.";
+            Text[ thai ] = "ระดับความอิสระของการกระจายแบบ T ";
         };
     };
      // -=*# Resource for function FVERT #*=-
@@ -30445,7 +31420,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Restituisce la distribuzione F." ;
             Text [ portuguese_brazilian ] = "Werte der F-Verteilung" ;
             Text [ portuguese ] = "Devolve a distribuio da probabilidade F." ;
-            Text [ finnish ] = "F-todennkisyysjakauma arvot." ;
+            Text [ finnish ] = "F-todennkisyysjakauman arvot" ;
             Text [ danish ] = "Vrdier for F-fordelingen" ;
             Text [ french ] = "Valeurs de la distribution F." ;
             Text [ swedish ] = "Vrden fr F-frdelningen." ;
@@ -30453,7 +31428,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve la probabilidad de una variable aleatoria siguiendo una distribucin de probabilidad F" ;
             Text [ english_us ] = "Values of the F probability distribution." ;
             Text[ chinese_simplified ] = "计算 F - 概率分布。";
-            Text[ russian ] = " F- .";
+            Text[ russian ] = "   F.";
             Text[ polish ] = "Wyznacza rozkad F prawdopodobiestwa";
             Text[ japanese ] = "F 分布の上側確率を返します。";
             Text[ chinese_traditional ] = "計算 F - 概率分佈。";
@@ -30465,6 +31440,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "F datm deerleri";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valors de la distribuci de probabilitat F.";
+            Text[ thai ] = "ค่าความน่าจะเป็นการกระจายแบบ F ";
         };
         ExtraData =
         {
@@ -30500,6 +31476,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -30517,7 +31494,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es el valor al que desea evaluar la funcin." ;
             Text [ english_us ] = "The value for which the F distribution is to be calculated." ;
             Text[ chinese_simplified ] = "用于计算 F - 概率分布的数值。";
-            Text[ russian ] = ",    F-.";
+            Text[ russian ] = ",     F.";
             Text[ polish ] = "Warto, dla ktrej ma zosta obliczony rozkad F prawdopodobiestwa.";
             Text[ japanese ] = "F 値。";
             Text[ chinese_traditional ] = "用來計算 F-概率分佈的數值。";
@@ -30525,10 +31502,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "De waarde waarop de F-verdeling moet worden berekend.";
             Text[ chinese_simplified ] = "用于计算 F - 概率分布的数值。";
             Text[ greek ] = "         F.";
-            Text[ korean ] = "F분포가 계산되어야 할 값";
+            Text[ korean ] = "F 분포를 계산해야 할 값";
             Text[ turkish ] = "F datm hesaplanacak deer.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor la distribuci F del qual s'ha de calcular.";
+            Text[ thai ] = "ค่าสำหรับคำนวณการกระจายแบบ F ";
         };
         String 4 // Name of Parameter 2
         {
@@ -30546,7 +31524,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "grados_libertad 1" ;
             Text [ english_us ] = "degrees_freedom_1" ;
             Text[ chinese_simplified ] = "degrees_freedom_1";
-            Text[ russian ] = "__1";
+            Text[ russian ] = "  1";
             Text[ polish ] = "Stopnie swobody_1";
             Text[ japanese ] = "自由度 1";
             Text[ chinese_traditional ] = "degrees_freedom_1";
@@ -30558,6 +31536,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "zgrlk_dereceleri_1";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "degrees_freedom_1";
+            Text[ thai ] = "ระดับ_ความอิสระ_1";
         };
         String 5 // Description of Parameter 2
         {
@@ -30568,15 +31547,15 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "sono i gradi di libert al numeratore." ;
             Text [ portuguese_brazilian ] = "Die Freiheitsgrade im Z?hler der F-Verteilung." ;
             Text [ portuguese ] = "so os graus de liberdade no numerador da distribuio F." ;
-            Text [ finnish ] = "F-jakauman osoittajan vapausaste." ;
+            Text [ finnish ] = "F-jakauman osoittajan vapausaste" ;
             Text [ danish ] = "Frihedsgrader i F-fordelingens tller." ;
             Text [ french ] = "Les degrs de libert du numrateur de la distribution F." ;
             Text [ swedish ] = "Frihetsgraderna i F-frdelningens tljare." ;
             Text [ dutch ] = "De vrijheidsgraden in de teller van de F-verdeling." ;
-            Text [ spanish ] = "es el nmero de grados de libertad del numerador." ;
+            Text [ spanish ] = "Los grados de libertad del numerador de la distribucin F." ;
             Text [ english_us ] = "The degrees of freedom in the numerator of the F distribution." ;
             Text[ chinese_simplified ] = "F - 概率分布的分子自由度。";
-            Text[ russian ] = "  .";
+            Text[ russian ] = "    F.";
             Text[ polish ] = "Licznik stopni swobody w rozkadzie F.";
             Text[ japanese ] = "自由度の分子。";
             Text[ chinese_traditional ] = "F-概率分佈的分子自由度。";
@@ -30588,6 +31567,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "F datmnn payndaki zgrlk dereceleri.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Els graus de llibertat en el numerador de la distribuci F.";
+            Text[ thai ] = "ระดับความอิสระในตัวนับของการกระจายแบบ F ";
         };
         String 6 // Name of Parameter 3
         {
@@ -30605,7 +31585,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "grados_libertad 2" ;
             Text [ english_us ] = "degrees_freedom_2" ;
             Text[ chinese_simplified ] = "degrees_freedom_2";
-            Text[ russian ] = "__2";
+            Text[ russian ] = "  2";
             Text[ polish ] = "Stopnie swobody_2";
             Text[ japanese ] = "自由度 2";
             Text[ chinese_traditional ] = "degrees_freedom_2";
@@ -30617,6 +31597,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "zgrlk_dereceleri_2";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "degrees_freedom_2";
+            Text[ thai ] = "ระดับ_ความอิสระ_2";
         };
         String 7 // Description of Parameter 3
         {
@@ -30626,7 +31607,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Gradi di libert al denominatore." ;
             Text [ portuguese_brazilian ] = "Die Freiheitsgrade im Nenner der F-Verteilung." ;
             Text [ portuguese ] = "so os graus de liberdade no denominador da distribuio F." ;
-            Text [ finnish ] = "F-jakauman nimittjn vapausaste." ;
+            Text [ finnish ] = "F-jakauman nimittjn vapausaste" ;
             Text [ danish ] = "Frihedsgrader i F-fordelingens nvner." ;
             Text [ french ] = "Les degrs de libert du dnominateur de la distribution F." ;
             Text [ swedish ] = "Frihetsgraderna i F-frdelningens nmnare." ;
@@ -30634,7 +31615,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es el nmero de grados de libertad del denominador." ;
             Text [ english_us ] = "The degrees of freedom in the denominator of the F distribution." ;
             Text[ chinese_simplified ] = "F - 概率分布的分母自由度。";
-            Text[ russian ] = "  .";
+            Text[ russian ] = "    F.";
             Text[ polish ] = "Mianownik stopni swobody w rozkadzie F.";
             Text[ japanese ] = "自由度の分母。";
             Text[ chinese_traditional ] = "F-概率分佈的分母自由度。";
@@ -30646,6 +31627,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "F datmnn paydasndaki zgrlk dereceleri.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Els graus de llibertat en el denominador de la distribuci F.";
+            Text[ thai ] = "ระดับความอิสระในตัวหารของการกระจายแบบ F ";
         };
     };
      // -=*# Resource for function FINV #*=-
@@ -30659,7 +31641,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Restituisce l'inversa della distribuzione F." ;
             Text [ portuguese_brazilian ] = "Werte der inversen F-Verteilung" ;
             Text [ portuguese ] = "Devolve o inverso de distribuio da probabilidade F." ;
-            Text [ finnish ] = "Knteisen F-jakauman arvot." ;
+            Text [ finnish ] = "Knteisen F-jakauman arvot" ;
             Text [ danish ] = "Vrdier for den inverse F-fordeling" ;
             Text [ french ] = "Valeurs de la distribution F inverse." ;
             Text [ swedish ] = "Vrden fr den inversa F-frdelningen." ;
@@ -30667,7 +31649,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve la inversa del valor de la variable aleatoria siguiendo una distribucin de probabilidad F" ;
             Text [ english_us ] = "Values of the inverse F distribution." ;
             Text[ chinese_simplified ] = "计算 F - 概率分布的逆函数值。";
-            Text[ russian ] = "    F- .";
+            Text[ russian ] = "    F.";
             Text[ polish ] = "Wyznacza odwrotno rozkadu F prawdopodobiestwa.";
             Text[ japanese ] = "F 分布のパーセント点を返します。";
             Text[ chinese_traditional ] = "計算 F-概率分佈的逆函數值。";
@@ -30679,6 +31661,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Ters F datm deerleri";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valors de la distribuci F inversa.";
+            Text[ thai ] = "ค่าอินเวิร์สของการกระจายแบบ F ";
         };
         ExtraData =
         {
@@ -30702,7 +31685,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "probabilidad" ;
             Text [ english_us ] = "number" ;
             Text[ chinese_simplified ] = "probability";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "Liczba";
             Text[ japanese ] = "確率";
             Text[ chinese_traditional ] = "Probability";
@@ -30714,6 +31697,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -30731,7 +31715,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es una probabilidad asociada con la funcin de distribucin acumulativa F." ;
             Text [ english_us ] = "The probability value for which the inverse F distribution is to be calculated." ;
             Text[ chinese_simplified ] = "F-分布的概率值。";
-            Text[ russian ] = " ,     F-.";
+            Text[ russian ] = " ,      F.";
             Text[ polish ] = "Prawdopodobiestwo, dla ktrego ma zosta obliczona odwrotno rozkadu F.";
             Text[ japanese ] = "上側確率。";
             Text[ chinese_traditional ] = "F-分佈的概率值。";
@@ -30739,10 +31723,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Der kans waarop de inverse F-verdeling moet worden berekend.";
             Text[ chinese_simplified ] = "F-分布的概率值。";
             Text[ greek ] = "            F.";
-            Text[ korean ] = "역 F 분포가 계산되어야 할 확률값.";
+            Text[ korean ] = "역 F 분포를 계산해야 할 확률값";
             Text[ turkish ] = "Ters F datm hesaplanacak olaslk deeri.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor de probabilitat la distribuci F inversa del qual s'ha de calcular.";
+            Text[ thai ] = "คำนวณค่าน่าจะเป็นสำหรับอินเวิร์สของการกระจายแบบ F ";
         };
         String 4 // Name of Parameter 2
         {
@@ -30760,7 +31745,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "grados_libertad 1" ;
             Text [ english_us ] = "degrees_freedom_1" ;
             Text[ chinese_simplified ] = "degrees_freedom_1";
-            Text[ russian ] = "__1";
+            Text[ russian ] = "  1";
             Text[ polish ] = "Stopnie swobody_1";
             Text[ japanese ] = "自由度 1";
             Text[ chinese_traditional ] = "degrees_freedom_1";
@@ -30772,6 +31757,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "zgrlk_dereceleri_1";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "degrees_freedom_1";
+            Text[ thai ] = "ระดับ_ความอิสระ_1";
         };
         String 5 // Description of Parameter 2
         {
@@ -30782,15 +31768,15 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Gradi di libert al numeratore della distribuzione F." ;
             Text [ portuguese_brazilian ] = "Die Freiheitsgrade im Z?hler der F-Verteilung." ;
             Text [ portuguese ] = "so os graus de liberdade no numerador da distribuio F." ;
-            Text [ finnish ] = "F-jakauman osoittajan vapausaste." ;
+            Text [ finnish ] = "F-jakauman osoittajan vapausaste" ;
             Text [ danish ] = "Frihedsgraderne i F-fordelingens tller." ;
             Text [ french ] = "Les degrs de libert du numrateur de la distribution F." ;
             Text [ swedish ] = "Frihetsgraderna i F-frdelningens tljare." ;
             Text [ dutch ] = "De vrijheidsgraden in de teller van de F-verdeling." ;
-            Text [ spanish ] = "es el nmero de grados de libertad del numerador." ;
+            Text [ spanish ] = "Los grados de libertad del numerador de la distribucin F." ;
             Text [ english_us ] = "The degrees of freedom in the numerator of the F distribution." ;
             Text[ chinese_simplified ] = "F - 概率分布的分子自由度。";
-            Text[ russian ] = "  .";
+            Text[ russian ] = "    F.";
             Text[ polish ] = "Licznik stopni swobody w rozkadzie F.";
             Text[ japanese ] = "第1自由度。";
             Text[ chinese_traditional ] = "F - 概率分佈的分子自由度。";
@@ -30802,6 +31788,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "F datmnn payndaki zgrlk dereceleri.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Els graus de llibertat en el numerador de la distribuci F.";
+            Text[ thai ] = "ระดับความอิสระในตัวนับของการกระจายแบบ F ";
         };
         String 6 // Name of Parameter 3
         {
@@ -30819,7 +31806,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "grados_libertad 2" ;
             Text [ english_us ] = "degrees_freedom_2" ;
             Text[ chinese_simplified ] = "degrees_freedom_2";
-            Text[ russian ] = "__2";
+            Text[ russian ] = "  2";
             Text[ polish ] = "Stopnie swobody_2";
             Text[ japanese ] = "自由度 2";
             Text[ chinese_traditional ] = "degrees_freedom_2";
@@ -30831,6 +31818,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "zgrlk_dereceleri_2";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "degrees_freedom_2";
+            Text[ thai ] = "ระดับ_ความอิสระ_2";
         };
         String 7 // Description of Parameter 3
         {
@@ -30840,7 +31828,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Gradi libert al denominatore della distribuzione F." ;
             Text [ portuguese_brazilian ] = "Die Freiheitsgrade im Nenner der F-Verteilung." ;
             Text [ portuguese ] = "so os graus de liberdade no denominador da distribuio F." ;
-            Text [ finnish ] = "F-jakauman nimittjn vapausaste." ;
+            Text [ finnish ] = "F-jakauman nimittjn vapausaste" ;
             Text [ danish ] = "Frihedsgraderne i F-fordelingens nvner." ;
             Text [ french ] = "Les degrs de libert du dnominateur de la distribution F." ;
             Text [ swedish ] = "Frihetsgraderna i F-frdelningens nmnare." ;
@@ -30848,7 +31836,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es el nmero de grados de libertad del denominador." ;
             Text [ english_us ] = "The degrees of freedom in the denominator of the F distribution." ;
             Text[ chinese_simplified ] = "F - 概率分布的分母自由度。";
-            Text[ russian ] = "  .";
+            Text[ russian ] = "    F.";
             Text[ polish ] = "Mianownik stopni swobody w rozkadzie F.";
             Text[ japanese ] = "第2自由度。";
             Text[ chinese_traditional ] = "F - 概率分佈的分母自由度。";
@@ -30860,6 +31848,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "F datmnn paydasndaki zgrlk dereceleri.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Els graus de llibertat en el denominador de la distribuci F.";
+            Text[ thai ] = "ระดับความอิสระในตัวหารของการกระจายแบบ F ";
         };
     };
      // -=*# Resource for function CHIVERT #*=-
@@ -30873,26 +31862,27 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Restituisce la distribuzione CHI al quadrato." ;
             Text [ portuguese_brazilian ] = "Werte der Chi-Quadrat-Verteilung" ;
             Text [ portuguese ] = "Devolve a probabilidade de uma varvel aleatria contnua seguindo a distribuio do Qui-quadrado." ;
-            Text [ finnish ] = "Khii-nelijakauman arvot." ;
+            Text [ finnish ] = "Khii-nelijakauman arvot" ;
             Text [ danish ] = "Vrdier for chi2-fordelingen" ;
             Text [ french ] = "Valeurs de la distribution Khi-deux." ;
             Text [ swedish ] = "Chi-tv-frdelningens vrden." ;
-            Text [ dutch ] = "Berekent de kans van de chikwadraatsverdeling" ;
+            Text [ dutch ] = "Berekent de kans van de chi-kwadraatsverdeling" ;
             Text [ spanish ] = "Devuelve la probabilidad de una variable aleatoria continua siguiendo una distribucin ji cuadrado de una sola cola" ;
             Text [ english_us ] = "Values of the chi square distribution." ;
             Text[ chinese_simplified ] = "Chi 平方分布的单尾概率。";
-            Text[ russian ] = "    -.";
+            Text[ russian ] = "  -.";
             Text[ polish ] = "Wyznacza wartoci rozkadu chi-kwadrat";
             Text[ japanese ] = "指定した自由度におけるカイ2乗分布の上側確率を返します。";
             Text[ chinese_traditional ] = "Chi 平方分佈的單尾概率。";
             Text[ arabic ] = "  Chi .";
-            Text[ dutch ] = "Berekent de kans van de chikwadraatsverdeling";
+            Text[ dutch ] = "Berekent de kans van de chi-kwadraatsverdeling";
             Text[ chinese_simplified ] = "Chi 平方分布的单尾概率。";
             Text[ greek ] = "   -.";
             Text[ korean ] = "카이 제곱 분포의 값";
             Text[ turkish ] = "Chi-kare datm deerleri";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valors de la distribuci quadrada khi.";
+            Text[ thai ] = "ค่าการกระจายแบบไคสแควร์";
         };
         ExtraData =
         {
@@ -30928,6 +31918,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -30941,22 +31932,23 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ danish ] = "Den vrdi som chi2-fordelingen skal beregnes for." ;
             Text [ french ] = "La valeur pour laquelle vous voulez calculer la distribution Khi-deux." ;
             Text [ swedish ] = "Vrdet fr vilket chi-tv-frdelningen skall berknas." ;
-            Text [ dutch ] = "De waarde, waarop de chikwadraatsverdeling moet worden berekend." ;
+            Text [ dutch ] = "De waarde, waarop de chi-kwadraatsverdeling moet worden berekend." ;
             Text [ spanish ] = "es el valor al que desea evaluar la distribucin." ;
             Text [ english_us ] = "The value for which the chi square distribution is to be calculated." ;
             Text[ chinese_simplified ] = "用来计算 Chi 平方分布单尾概率的数值。";
-            Text[ russian ] = ",     .";
+            Text[ russian ] = ",      -.";
             Text[ polish ] = "Warto, dla krej ma zosta obliczony rozkad chi-kwadrat.";
             Text[ japanese ] = "カイ2乗値。";
             Text[ chinese_traditional ] = "用來計算 Chi 平方分佈單尾概率的數值。";
             Text[ arabic ] = "     .";
-            Text[ dutch ] = "De waarde, waarop de chikwadraatsverdeling moet worden berekend.";
+            Text[ dutch ] = "De waarde, waarop de chi-kwadraatsverdeling moet worden berekend.";
             Text[ chinese_simplified ] = "用来计算 Chi 平方分布单尾概率的数值。";
             Text[ greek ] = "        -.";
             Text[ korean ] = "카이 제곱 분포가 계산되어야 하는 값.";
             Text[ turkish ] = "Chi-kare datm hesaplanacak deer.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor la distribuci quadrada khi del qual s'ha de calcular.";
+            Text[ thai ] = "ค่าสำหรับคำนวณการกระจายแบบไคสแควร์";
         };
         String 4 // Name of Parameter 2
         {
@@ -30974,7 +31966,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "grados_libertad" ;
             Text [ english_us ] = "degrees_freedom" ;
             Text[ chinese_simplified ] = "degrees_freedom";
-            Text[ russian ] = "_";
+            Text[ russian ] = " ";
             Text[ polish ] = "Stopnie swobody";
             Text[ japanese ] = "自由度";
             Text[ chinese_traditional ] = "degrees_freedom";
@@ -30986,6 +31978,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "zgrlk dereceleri";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "degrees_freedom";
+            Text[ thai ] = "ระดับ_ความอิสระ";
         };
         String 5 // Description of Parameter 2
         {
@@ -30995,26 +31988,27 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Numero di gradi di libert." ;
             Text [ portuguese_brazilian ] = "Die Freiheitsgrade der Chi-Quadrat-Verteilung." ;
             Text [ portuguese ] = " o nmero de graus de liberdade do Qui-quadrado." ;
-            Text [ finnish ] = "Khii-nelijakauman vapausasteet." ;
+            Text [ finnish ] = "Khii-nelijakauman vapausasteet" ;
             Text [ danish ] = "Frihedsgraderne i chi2-fordelingen." ;
             Text [ french ] = "Les degrs de libert de la distribution Khi-deux." ;
             Text [ swedish ] = "Chi-tv-frdelningens frihetsgrader." ;
-            Text [ dutch ] = "Het aantal vrijheidsgraden van de chikwadraatsverdeling" ;
+            Text [ dutch ] = "Het aantal vrijheidsgraden van de chi-kwadraatsverdeling" ;
             Text [ spanish ] = "es el nmero de grados de libertad." ;
             Text [ english_us ] = "The degrees of freedom of the chi square distribution." ;
             Text[ chinese_simplified ] = "Chi 平方分布的自由度。";
-            Text[ russian ] = "  .";
+            Text[ russian ] = "    -.";
             Text[ polish ] = "Stopnie swobody w rozkadzie chi-kwadrat.";
             Text[ japanese ] = "カイ2乗分布の自由度。";
             Text[ chinese_traditional ] = "Chi 平方分佈的自由度。";
             Text[ arabic ] = "  .";
-            Text[ dutch ] = "Het aantal vrijheidsgraden van de chikwadraatsverdeling";
+            Text[ dutch ] = "Het aantal vrijheidsgraden van de chi-kwadraatsverdeling";
             Text[ chinese_simplified ] = "Chi 平方分布的自由度。";
             Text[ greek ] = "     -.";
             Text[ korean ] = "카이 제곱 분포의 자유도";
             Text[ turkish ] = "Chi-kare datmnn zgrlk dereceleri.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Els graus de llibertat de la distribuci quadrada khi.";
+            Text[ thai ] = "ระดับความอิสระของการกระจายแบบไคสแควร์";
         };
     };
      // -=*# Resource for function CHIINV #*=-
@@ -31028,26 +32022,27 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Restituisce l'inversa della distribuzione del chi quadrato." ;
             Text [ portuguese_brazilian ] = "Werte der inversen Chi-Quadrat-Verteilung" ;
             Text [ portuguese ] = "Devolve o inverso da probabilidade de uma varvel aleatria contnua seguindo a distribuio do Qui-quadrado." ;
-            Text [ finnish ] = "Knteisen khii-nelijakauman arvot." ;
+            Text [ finnish ] = "Knteisen khii-nelijakauman arvot" ;
             Text [ danish ] = "Vrdier for den inverse chi2-fordeling" ;
             Text [ french ] = "Valeurs de la distribution Khi-deux inverse." ;
             Text [ swedish ] = "Den inversa chi-tv-frdelningens vrden." ;
-            Text [ dutch ] = "Waarden van de inverse chi kwadraatverdeling." ;
+            Text [ dutch ] = "Waarden van de inverse chi-kwadraatverdeling." ;
             Text [ spanish ] = "Devuelve  los valores de la distribucin ji cuadrado inversa" ;
             Text [ english_us ] = "Values of the inverse chi-squared distribution." ;
             Text[ chinese_simplified ] = "Chi 平方分布单尾概率的逆函数。";
-            Text[ russian ] = " ,      -.";
+            Text[ russian ] = "   -.";
             Text[ polish ] = "Wyznacza odwrotno rozkadu chi-kwadrat.";
             Text[ japanese ] = "指定した自由度におけるカイ2乗分布のパーセント点を返します。";
             Text[ chinese_traditional ] = "Chi 平方分佈單尾概率的逆函數。";
             Text[ arabic ] = "   Chi .";
-            Text[ dutch ] = "Waarden van de inverse chi kwadraatverdeling.";
+            Text[ dutch ] = "Waarden van de inverse chi-kwadraatverdeling.";
             Text[ chinese_simplified ] = "Chi 平方分布单尾概率的逆函数。";
             Text[ greek ] = "    -.";
             Text[ korean ] = "역 카이 제곱 분포의 값";
             Text[ turkish ] = "Ters chi-kare datm deerleri";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valors de la distribuci khi-quadrada inversa.";
+            Text[ thai ] = "ค่าอินเวิร์สของการกระจายแบบไคสแควร์";
         };
         ExtraData =
         {
@@ -31083,6 +32078,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -31100,7 +32096,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es una probabilidad asociada con la distribucin ji cuadrado." ;
             Text [ english_us ] = "The probability value for which the inverse chi square distribution is to be calculated." ;
             Text[ chinese_simplified ] = "Chi 平方分布的单尾概率。";
-            Text[ russian ] = ",    -";
+            Text[ russian ] = " ,      -.";
             Text[ polish ] = "Prawdopodobiestwo, dla ktrego ma zosta obliczona odwrotno rozkadu chi-kwadrat.";
             Text[ japanese ] = "関数に使用する上側確率。";
             Text[ chinese_traditional ] = "Chi 平方分佈的單尾概率。";
@@ -31112,6 +32108,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Ters chi-kare datm hesaplanacak olaslk deeri.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor de probabilitat la distribuci quadrada khi inversa s'ha de calcular.";
+            Text[ thai ] = "คำนวณค่าน่าจะเป็นสำหรับอินเวิร์สของการกระจายแบบไคสแควร์";
         };
         String 4 // Name of Parameter 2
         {
@@ -31129,7 +32126,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "grados_libertad" ;
             Text [ english_us ] = "degrees_freedom" ;
             Text[ chinese_simplified ] = "degrees_freedom";
-            Text[ russian ] = "_";
+            Text[ russian ] = " ";
             Text[ polish ] = "Stopnie swobody";
             Text[ japanese ] = "自由度";
             Text[ chinese_traditional ] = "degrees_freedom";
@@ -31141,6 +32138,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "zgrlk dereceleri";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "degrees_freedom";
+            Text[ thai ] = "ระดับ_ความอิสระ";
         };
         String 5 // Description of Parameter 2
         {
@@ -31150,7 +32148,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Numero di gradi di libert." ;
             Text [ portuguese_brazilian ] = "Die Freiheitsgrade der Chi-Quadrat-Verteilung." ;
             Text [ portuguese ] = " o nmero de graus de liberdade do Qui-quadrado." ;
-            Text [ finnish ] = "Khii-nelijakauman vapausasteet." ;
+            Text [ finnish ] = "Khii-nelijakauman vapausasteet" ;
             Text [ danish ] = "Frihedsgraderne i chi2-fordelingen." ;
             Text [ french ] = "Les degrs de libert de la distribution Khi-deux." ;
             Text [ swedish ] = "Chi-tv-frdelningens frihetsgrader." ;
@@ -31158,7 +32156,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es el nmero de grados de libertad." ;
             Text [ english_us ] = "The degrees of freedom of the chi square distribution." ;
             Text[ chinese_simplified ] = "Chi 平方分布的自由度。";
-            Text[ russian ] = "  .";
+            Text[ russian ] = "    -.";
             Text[ polish ] = "Stopnie swobody w rozkadzie chi-kwadrat.";
             Text[ japanese ] = "カイ2乗分布の自由度。";
             Text[ chinese_traditional ] = "Chi 平方分佈的自由度。";
@@ -31170,6 +32168,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Chi-kare datmnn zgrlk dereceleri.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Els graus de llibertat de la distribuci quadrada khi.";
+            Text[ thai ] = "ระดับความอิสระของการกระจายแบบไคสแควร์";
         };
     };
      // -=*# Resource for function STANDARDISIERUNG #*=-
@@ -31203,6 +32202,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Raslant deikenini standartlatrlm deerlere dntrr.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Converteix una variable aleatria en un valor normalitzat.";
+            Text[ thai ] = "แปลงตัวแปรแบบสุ่มเป็นค่าปกติ";
         };
         ExtraData =
         {
@@ -31238,6 +32238,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -31247,7 +32248,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Il valore che si desidera normalizzare." ;
             Text [ portuguese_brazilian ] = "Der Wert, der standardisiert werden soll." ;
             Text [ portuguese ] = " o valor que deseja normalizar." ;
-            Text [ finnish ] = "Normalisoitava arvo." ;
+            Text [ finnish ] = "Normalisoitava arvo" ;
             Text [ danish ] = "Den vrdi som skal standardiseres." ;
             Text [ french ] = "La valeur  standardiser." ;
             Text [ swedish ] = "Vrdet som skall standardiseras." ;
@@ -31267,6 +32268,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Standartlatrlacak deer.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor que s'ha d'estandarditzar.";
+            Text[ thai ] = "ทำให้ค่าเป็นมาตรฐาน";
         };
         String 4 // Name of Parameter 2
         {
@@ -31296,6 +32298,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Ortalama";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "mitja";
+            Text[ thai ] = "ค่าเฉลี่ย";
         };
         String 5 // Description of Parameter 2
         {
@@ -31305,7 +32308,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "La media utilizzata per lo spostamento." ;
             Text [ portuguese_brazilian ] = "Der Mittelwert, um den verschoben wird." ;
             Text [ portuguese ] = " a mdia aritmtica da distribuio." ;
-            Text [ finnish ] = "Siirrossa kytetty keskiarvo." ;
+            Text [ finnish ] = "Siirrossa kytetty keskiarvo" ;
             Text [ danish ] = "Middelvrdien for forskydningen." ;
             Text [ french ] = "La moyenne  utiliser pour le dcalage." ;
             Text [ swedish ] = "Medelvrdet fr frflyttningen." ;
@@ -31313,7 +32316,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es el promedio utilizado para el desplazamiento" ;
             Text [ english_us ] = "The mean value used for moving." ;
             Text[ chinese_simplified ] = "分布的算术平均值。";
-            Text[ russian ] = "  .";
+            Text[ russian ] = " ,   .";
             Text[ polish ] = "rednia arytmetyczna przesunicia.";
             Text[ japanese ] = "分布の算術平均値。";
             Text[ chinese_traditional ] = "分佈的算術平均值。";
@@ -31325,6 +32328,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Tama iin kullanlan ortalama deer.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor mitj utilitzat per al moviment.";
+            Text[ thai ] = "ใช้ค่าเฉลี่ยเพื่อย้าย";
         };
         String 6 // Name of Parameter 3
         {
@@ -31334,7 +32338,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Deviazione standard" ;
             Text [ portuguese_brazilian ] = "STD" ;
             Text [ portuguese ] = "Desvio_padro" ;
-            Text [ finnish ] = "STDEV" ;
+            Text [ finnish ] = "KESKIHAJONTA" ;
             Text [ danish ] = "Standardafv" ;
             Text [ french ] = "ET" ;
             Text [ swedish ] = "STD" ;
@@ -31342,7 +32346,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "desv_predeterminada" ;
             Text [ english_us ] = "STDEV" ;
             Text[ chinese_simplified ] = "standard_dev";
-            Text[ russian ] = "_";
+            Text[ russian ] = "";
             Text[ polish ] = "Odchylenie standardowe";
             Text[ japanese ] = "標準偏差";
             Text[ chinese_traditional ] = "standard_dev";
@@ -31354,6 +32358,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "STDEV";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "STDEV";
+            Text[ thai ] = "ส่วนเบี่ยงเบนมาตรฐาน";
         };
         String 7 // Description of Parameter 3
         {
@@ -31363,7 +32368,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "La deviazione standard della distribuzione." ;
             Text [ portuguese_brazilian ] = "Die Standardabweichung, um die skaliert wird." ;
             Text [ portuguese ] = " o desvio padro da distribuio." ;
-            Text [ finnish ] = "Skaalauksessa kytettv vakiopoikkeama." ;
+            Text [ finnish ] = "Skaalauksessa kytettv keskihajonta" ;
             Text [ danish ] = "Standardafvigelsen for skaleringen." ;
             Text [ french ] = "L'cart type  utiliser pour l'talonnage." ;
             Text [ swedish ] = "Standardavvikelsen fr skalning." ;
@@ -31371,7 +32376,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es la desviacin predeterminada de la distribucin." ;
             Text [ english_us ] = "The standard deviation used for scaling." ;
             Text[ chinese_simplified ] = "是分布的标准偏差。";
-            Text[ russian ] = "  .";
+            Text[ russian ] = " ,   .";
             Text[ polish ] = "Odchylenie standardowe, o ktre nastpi skalowanie.";
             Text[ japanese ] = "分布の標準偏差値。";
             Text[ chinese_traditional ] = "是分佈的標準偏差。";
@@ -31379,10 +32384,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "De standaarddeviatie die gebruikt wordt voor de schaalberekening.";
             Text[ chinese_simplified ] = "是分布的标准偏差。";
             Text[ greek ] = "        .";
-            Text[ korean ] = "배율에 이용되는 표준 편차입니다.";
+            Text[ korean ] = "배율 조정에 이용되는 표준 편차입니다.";
             Text[ turkish ] = "lekleme iin kullanlan standart sapma.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Desviaci estndard utilitzada per al redimensionament.";
+            Text[ thai ] = "ใช้ส่วนเบี่ยงเบนมาตรฐานสำหรับทำสเกล";
         };
     };
      // -=*# Resource for function VARIATIONEN #*=-
@@ -31404,7 +32410,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve el nmero de permutaciones para un nmero determinado de objetos." ;
             Text [ english_us ] = "Returns the number of permutations for a given number of elements without repetition." ;
             Text[ chinese_simplified ] = "在给定元素总数的情况下计算选取若干元素的\n排列数(不允许重复排列)。";
-            Text[ russian ] = "    ( ).";
+            Text[ russian ] = "       ( ).";
             Text[ polish ] = "Wyznacza liczb permutacji dla podanej liczby elementw.";
             Text[ japanese ] = "n 個のものから r 個をとる順列の総数を返します。";
             Text[ chinese_traditional ] = "在指定元素總數的情況下計算選取若干元素的排列數(不允許重複排列)。";
@@ -31416,6 +32422,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Yinelenmeyen eler varyasyonlar saysn hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna el nombre de permutacions per a un nombre donat d'elements sense repetici.";
+            Text[ thai ] = "ส่งกลับจำนวนสลับลำดับสำหรับจำนวนองค์ประกอบที่ใช้โดยไม่ทำซ้ำ";
         };
         ExtraData =
         {
@@ -31439,7 +32446,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Cantidad_1" ;
             Text [ english_us ] = "Count_1" ;
             Text[ chinese_simplified ] = "Count_1";
-            Text[ russian ] = "_1";
+            Text[ russian ] = " 1";
             Text[ polish ] = "Liczba_1";
             Text[ japanese ] = "n";
             Text[ chinese_traditional ] = "Count_1";
@@ -31451,6 +32458,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Adet says_1";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Count_1";
+            Text[ thai ] = "นับ_1";
         };
         String 3 // Description of Parameter 1
         {
@@ -31460,7 +32468,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Numero totale degli elementi." ;
             Text [ portuguese_brazilian ] = "Gesamtanzahl der Elemente." ;
             Text [ portuguese ] = " um nmero inteiro que descreve a quantidade de objectos." ;
-            Text [ finnish ] = "Elementtien kokonaismr." ;
+            Text [ finnish ] = "Elementtien kokonaismr" ;
             Text [ danish ] = "Det samlede antal elementer." ;
             Text [ french ] = "Le nombre total d'lments." ;
             Text [ swedish ] = "Det totala antalet element." ;
@@ -31480,6 +32488,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Toplam e says.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre total d'elements.";
+            Text[ thai ] = "จำนวนองค์ประกอบทั้งหมด";
         };
         String 4 // Name of Parameter 2
         {
@@ -31497,7 +32506,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Cantidad_2" ;
             Text [ english_us ] = "Count_2" ;
             Text[ chinese_simplified ] = "Count_2";
-            Text[ russian ] = "_2";
+            Text[ russian ] = " 2";
             Text[ polish ] = "Liczba_2";
             Text[ japanese ] = "r";
             Text[ chinese_traditional ] = "Count_2";
@@ -31509,6 +32518,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Adet says_2";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Count_2";
+            Text[ thai ] = "นับ_2";
         };
         String 5 // Description of Parameter 2
         {
@@ -31526,7 +32536,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es un nmero entero que corresponde al nmero de objetos contenidos en cada permutacin." ;
             Text [ english_us ] = "The selection number taken from the elements." ;
             Text[ chinese_simplified ] = "每个排列中的元素数目。";
-            Text[ russian ] = "    .";
+            Text[ russian ] = "  .";
             Text[ polish ] = "Liczba elementw do wyboru.";
             Text[ japanese ] = "1組に含まれる要素の数。";
             Text[ chinese_traditional ] = "每個排列中的元素數目。";
@@ -31538,6 +32548,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Seilen e says.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre de selecci pres dels elements.";
+            Text[ thai ] = "เลือกตัวเลขที่ใช้จากองค์ประกอบ";
         };
     };
      // -=*# Resource for function VARIATIONEN2 #*=-
@@ -31559,7 +32570,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve la cantidad de permutaciones para un nmero determinado de elementos con repeticiones." ;
             Text [ english_us ] = "Returns the number of permutations for a given number of objects (repetition allowed)." ;
             Text[ chinese_simplified ] = "在给定元素总数的情况下计算选取若干元素的\n排列数(允许重复排列)。";
-            Text[ russian ] = "    ( ).";
+            Text[ russian ] = "       ( ).";
             Text[ polish ] = "Wyznacza liczb permutacji dla podanej liczby elementw.";
             Text[ japanese ] = "n 個のものから r 個をとる重複順列の総数を返します。";
             Text[ chinese_traditional ] = "在指定元素總數的情況下計算選取若干元素的排列數(允許重複排列)。";
@@ -31571,6 +32582,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Yinelenen eler varyasyonlar saysn hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna el nombre de permutacions per a un nombre donat d'objectes (es permet la repetici).";
+            Text[ thai ] = "ส่งกลับจำนวนสลับลำดับสำหรับจำนวนวัตถุที่ให้มา (อนุญาตให้ทำซ้ำ)";
         };
         ExtraData =
         {
@@ -31594,7 +32606,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Cantidad_1" ;
             Text [ english_us ] = "Count_1" ;
             Text[ chinese_simplified ] = "Count_1";
-            Text[ russian ] = "_1";
+            Text[ russian ] = " 1";
             Text[ polish ] = "Liczba_1";
             Text[ japanese ] = "n";
             Text[ chinese_traditional ] = "Count_1";
@@ -31606,6 +32618,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Adet says_1";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Count_1";
+            Text[ thai ] = "นับ_1";
         };
         String 3 // Description of Parameter 1
         {
@@ -31615,7 +32628,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Numero totale degli elementi" ;
             Text [ portuguese_brazilian ] = "Gesamtanzahl der Elemente." ;
             Text [ portuguese ] = " o nmero total de elementos." ;
-            Text [ finnish ] = "Elementtien kokonaismr." ;
+            Text [ finnish ] = "Elementtien kokonaismr" ;
             Text [ danish ] = "Det samlede antal elementer." ;
             Text [ french ] = "Le nombre total d'lments." ;
             Text [ swedish ] = "Totalt antal element." ;
@@ -31635,6 +32648,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Toplam e says.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre total d'elements.";
+            Text[ thai ] = "จำนวนองค์ประกอบทั้งหมด";
         };
         String 4 // Name of Parameter 2
         {
@@ -31652,7 +32666,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Cantidad_2" ;
             Text [ english_us ] = "Count_2" ;
             Text[ chinese_simplified ] = "Count_2";
-            Text[ russian ] = "_2";
+            Text[ russian ] = " 2";
             Text[ polish ] = "Liczba_2";
             Text[ japanese ] = "r";
             Text[ chinese_traditional ] = "Count_2";
@@ -31664,6 +32678,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Adet says_2";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Count_2";
+            Text[ thai ] = "นับ_2";
         };
         String 5 // Description of Parameter 2
         {
@@ -31681,7 +32696,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es el nmero entero que corresponde al nmero de objetos." ;
             Text [ english_us ] = "The selection number taken from the elements." ;
             Text[ chinese_simplified ] = "每个排列中的元素数目。";
-            Text[ russian ] = "    .";
+            Text[ russian ] = "  .";
             Text[ polish ] = "Liczba elementw do wyboru.";
             Text[ japanese ] = "1組に含まれる要素の数。";
             Text[ chinese_traditional ] = "每個排列中的元素數目。";
@@ -31693,6 +32708,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Seilen e says.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre de selecci pres dels elements.";
+            Text[ thai ] = "เลือกตัวเลขที่ใช้จากองค์ประกอบ";
         };
     };
      // -=*# Resource for function KONFIDENZ #*=-
@@ -31714,7 +32730,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve el intervalo de confianza para la media de una poblacin." ;
             Text [ english_us ] = "Returns a (1 alpha) confidence interval for a normal distribution." ;
             Text[ chinese_simplified ] = "计算正态分布 (1-alpha) 的置信区间。";
-            Text[ russian ] = "      .";
+            Text[ russian ] = "      .";
             Text[ polish ] = "Wyznacza przedzia ufnoci dla redniej z populacji.";
             Text[ japanese ] = "母分散が既知の場合における、母平均値の信頼区間の幅の 1/2 を返します。";
             Text[ chinese_traditional ] = "計算正態分佈 (1-alpha) 的置信區間。";
@@ -31726,6 +32742,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Normal datm ile ilgili (1-alfa)-gven araln hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna un interval de confiana (alfa 1) per a una distribuci normal.";
+            Text[ thai ] = "ส่งกลับ (อัลฟ่า 1 ) ช่วงที่วางใจสำหรับการกระจายแบบปกติ";
         };
         ExtraData =
         {
@@ -31761,6 +32778,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Alfa";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Alfa";
+            Text[ thai ] = "อัลฟ่า";
         };
         String 3 // Description of Parameter 1
         {
@@ -31770,7 +32788,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Livello dell'intervallo di confidenza." ;
             Text [ portuguese_brazilian ] = "Das Niveau des Konfidenzintervalls." ;
             Text [ portuguese ] = " o nvel de significncia utilizado para calcular o nvel de confiana." ;
-            Text [ finnish ] = "Luottamusvlin taso." ;
+            Text [ finnish ] = "Luottamusvlin taso" ;
             Text [ danish ] = "Konfidensintervallets niveau." ;
             Text [ french ] = "Le niveau de l'intervalle de confiance." ;
             Text [ swedish ] = "Nivn fr konfidensintervallet." ;
@@ -31778,7 +32796,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es el nivel de significacin empleado para calcular el nivel de confianza." ;
             Text [ english_us ] = "The level of the confidence interval." ;
             Text[ chinese_simplified ] = "用于计算置信度的显著水平参数。";
-            Text[ russian ] = " ,     .";
+            Text[ russian ] = "  .";
             Text[ polish ] = "Poziom przedziau ufnoci.";
             Text[ japanese ] = "信頼率。";
             Text[ chinese_traditional ] = "用於計算置信度的顯著水平參數。";
@@ -31786,10 +32804,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Het niveau van de confidentie-interval.";
             Text[ chinese_simplified ] = "用于计算置信度的显著水平参数。";
             Text[ greek ] = "    .";
-            Text[ korean ] = "신뢰구간의 수준입니다.";
+            Text[ korean ] = "신뢰 구간의 수준입니다.";
             Text[ turkish ] = "Gven aralnn dzeyi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "El nivell de l'interval de confiana.";
+            Text[ thai ] = "ระดับช่วงวางใจ";
         };
         String 4 // Name of Parameter 2
         {
@@ -31799,7 +32818,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Deviazione standard" ;
             Text [ portuguese_brazilian ] = "STD" ;
             Text [ portuguese ] = "Desv_padro" ;
-            Text [ finnish ] = "STDEV" ;
+            Text [ finnish ] = "KESKIHAJONTA" ;
             Text [ danish ] = "Standardafv" ;
             Text [ french ] = "ET" ;
             Text [ swedish ] = "STD" ;
@@ -31807,7 +32826,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "desv_predeterminada" ;
             Text [ english_us ] = "STDEV" ;
             Text[ chinese_simplified ] = "standard_dev";
-            Text[ russian ] = "_";
+            Text[ russian ] = "";
             Text[ polish ] = "odchylenie_std";
             Text[ japanese ] = "母標準偏差";
             Text[ chinese_traditional ] = "standard_dev";
@@ -31819,6 +32838,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "STDEV";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "STDEV";
+            Text[ thai ] = "ส่วนเบี่ยงเบนมาตรฐาน";
         };
         String 5 // Description of Parameter 2
         {
@@ -31828,7 +32848,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Deviazione standard della popolazione per l'intervallo di dati." ;
             Text [ portuguese_brazilian ] = "Die Standardabweichung der Grundgesamtheit." ;
             Text [ portuguese ] = " o desvio padro da populao para o intervalo de dados." ;
-            Text [ finnish ] = "Populaation vakiopoikkeama." ;
+            Text [ finnish ] = "Populaation keskihajonta" ;
             Text [ danish ] = "Populationens standardafvigelse." ;
             Text [ french ] = "L'cart type de la population." ;
             Text [ swedish ] = "Populationens standardavvikelse." ;
@@ -31836,7 +32856,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es la desviacin predeterminada de la poblacin y se asume que es conocida." ;
             Text [ english_us ] = "The standard deviation of the population." ;
             Text[ chinese_simplified ] = "数据区域的总体标准偏差。";
-            Text[ russian ] = "      .";
+            Text[ russian ] = "  .";
             Text[ polish ] = "Odchylenie standardowe populacji.";
             Text[ japanese ] = "母集団の標準偏差。";
             Text[ chinese_traditional ] = "數據區域的總體標準偏差。";
@@ -31848,6 +32868,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Poplasyonun standart sapmas.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Desviaci estndard de la poblaci.";
+            Text[ thai ] = "ส่วนเบี่ยงเบนมาตรฐานของประชากร";
         };
         String 6 // Name of Parameter 3
         {
@@ -31877,6 +32898,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Byklk";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "mida";
+            Text[ thai ] = "ขนาด";
         };
         String 7 // Description of Parameter 3
         {
@@ -31887,7 +32909,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Dimensioni del campione." ;
             Text [ portuguese_brazilian ] = "Die Gr?e der Grundgesamtheit." ;
             Text [ portuguese ] = " o tamanho do exemplo." ;
-            Text [ finnish ] = "Populaation koko." ;
+            Text [ finnish ] = "Populaation koko" ;
             Text [ danish ] = "Populationens strrelse." ;
             Text [ french ] = "La taille de la population." ;
             Text [ swedish ] = "Populationens storlek." ;
@@ -31895,7 +32917,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es el tamao de la muestra." ;
             Text [ english_us ] = "The size of the population." ;
             Text[ chinese_simplified ] = "抽样总数。";
-            Text[ russian ] = "  .";
+            Text[ russian ] = " .";
             Text[ polish ] = "Rozmiar populacji.";
             Text[ japanese ] = "標本の大きさ。";
             Text[ chinese_traditional ] = "抽樣總數。";
@@ -31907,6 +32929,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Poplasyonun bykl.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Mida de la poblaci.";
+            Text[ thai ] = "ขนาดประชากร";
         };
     };
      // -=*# Resource for function GTEST #*=-
@@ -31925,22 +32948,23 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ danish ] = "Beregner den tosidede P-vrdi til en z-test." ;
             Text [ french ] = "Calcule la probabilit bilatrale pour la distribution normale." ;
             Text [ swedish ] = "(Gauss-test) Berknar den tvsidiga kontrollstatistiken fr normalfrdelning." ;
-            Text [ dutch ] = "(Gauss-toets) Berekent de tweezijdige toetsstatistiekbij de normale verdeling." ;
+            Text [ dutch ] = "(Gauss-toets) Berekent de tweezijdige toetsstatistiek bij de normale verdeling." ;
             Text [ spanish ] = "Devuelve el valor P de dos colas de una prueba z." ;
             Text [ english_us ] = "Returns the two-tailed P value of a z test." ;
             Text[ chinese_simplified ] = "(高斯-检验)计算正态分布的双尾概率。";
-            Text[ russian ] = "( )      .";
+            Text[ russian ] = "    z-   .";
             Text[ polish ] = "Wyznacza dwustronny obszar krytyczny da testu z.";
             Text[ japanese ] = "ガウス検定を行い、片側 P 値を返します。";
             Text[ chinese_traditional ] = "(高斯-檢驗)計算正態分佈的雙尾概率。";
             Text[ arabic ] = "  P   z test.";
-            Text[ dutch ] = "(Gauss-toets) Berekent de tweezijdige toetsstatistiekbij de normale verdeling.";
+            Text[ dutch ] = "(Gauss-toets) Berekent de tweezijdige toetsstatistiek bij de normale verdeling.";
             Text[ chinese_simplified ] = "(高斯-检验)计算正态分布的双尾概率。";
             Text[ greek ] = "(  Gauss)      ( )    (z test).";
             Text[ korean ] = "(가우스 테스트) 정규분포에 대한 두면의 시험 통계를 계산합니다.";
             Text[ turkish ] = "(Gauss deneyi) normal datm ile ilgili iki kuyruklu denetim istatistiini hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna el valor P de dues cues d'una prova z.";
+            Text[ thai ] = "ส่งกลับค่า P แบบสองหางของการทดสอบแบบ z ";
         };
         ExtraData =
         {
@@ -31976,6 +33000,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Veri";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "dades";
+            Text[ thai ] = "ข้อมูล";
         };
         String 3 // Description of Parameter 1
         {
@@ -31985,7 +33010,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Matrice dei dati." ;
             Text [ portuguese_brazilian ] = "Die Matrix der Daten." ;
             Text [ portuguese ] = " a matriz ou intervalo de dados em que x ser testado." ;
-            Text [ finnish ] = "Tietomatriisi." ;
+            Text [ finnish ] = "Tietotaulukko" ;
             Text [ danish ] = "Den matrix af data som X skal testes mod." ;
             Text [ french ] = "La matrice des donnes." ;
             Text [ swedish ] = "Matrisen fr data." ;
@@ -32005,6 +33030,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Veri matrisi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "La matriu de dades.";
+            Text[ thai ] = "แถวลำดับข้อมูล";
         };
         String 4 // Name of Parameter 2
         {
@@ -32022,7 +33048,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "x" ;
             Text [ english_us ] = "Number" ;
             Text[ chinese_simplified ] = "number";
-            Text[ russian ] = "X";
+            Text[ russian ] = "";
             Text[ polish ] = "X";
             Text[ japanese ] = "定数値";
             Text[ chinese_traditional ] = "Number";
@@ -32034,6 +33060,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "rn";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 5 // Description of Parameter 2
         {
@@ -32043,7 +33070,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Il valore da esaminare." ;
             Text [ portuguese_brazilian ] = "Der Wert, der getestet werden soll." ;
             Text [ portuguese ] = " o valor a ser testado." ;
-            Text [ finnish ] = "Testattava arvo." ;
+            Text [ finnish ] = "Testattava arvo" ;
             Text [ danish ] = "Vrdien som skal testes." ;
             Text [ french ] = "La valeur  tester." ;
             Text [ swedish ] = "Vrdet som skall testas." ;
@@ -32051,7 +33078,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es el valor a comprobar." ;
             Text [ english_us ] = "The value to be tested." ;
             Text[ chinese_simplified ] = "要被检验的数值。";
-            Text[ russian ] = " .";
+            Text[ russian ] = " .";
             Text[ polish ] = "Warto do testowania.";
             Text[ japanese ] = "検定する値(母平均値)。";
             Text[ chinese_traditional ] = "要被檢驗的數值。";
@@ -32063,6 +33090,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Denenecek deer.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor que s'ha de verificar.";
+            Text[ thai ] = "ทดสอบค่า";
         };
         String 6 // Name of Parameter 3
         {
@@ -32091,7 +33119,8 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ korean ] = "STD";
             Text[ turkish ] = "Sigma";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "STDEV";
+            Text[ catalan ] = "sigma";
+            Text[ thai ] = "ผลรวม";
         };
         String 7 // Description of Parameter 3
         {
@@ -32101,7 +33130,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Deviazione standard del campione." ;
             Text [ portuguese_brazilian ] = "Die Standardabweichung der Grundgesamtheit." ;
             Text [ portuguese ] = " o desvio padro da populao (conhecido)." ;
-            Text [ finnish ] = "Populaation vakiopoikkeama." ;
+            Text [ finnish ] = "Populaation vakiopoikkeama" ;
             Text [ danish ] = "Populationens standardafvigelse." ;
             Text [ french ] = "L'cart type de la population." ;
             Text [ swedish ] = "Standardavvikelsen fr populationen." ;
@@ -32109,7 +33138,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es la desviacin predeterminada (conocida) de la poblacin." ;
             Text [ english_us ] = "The standard deviation of the population." ;
             Text[ chinese_simplified ] = "样本总体的标准偏差。";
-            Text[ russian ] = "   .";
+            Text[ russian ] = "  .";
             Text[ polish ] = "Odchylenie standardowe populacji.";
             Text[ japanese ] = "既知の母分散。";
             Text[ chinese_traditional ] = "樣本總體的標準偏差。";
@@ -32121,6 +33150,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Poplasyonun standart sapmas.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Desviaci estndard de la poblaci.";
+            Text[ thai ] = "ส่วนเบี่ยงเบนมาตรฐานของประชากร";
         };
     };
      // -=*# Resource for function CHITEST #*=-
@@ -32143,7 +33173,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve la prueba de independencia." ;
             Text [ english_us ] = "Returns the chi square independence test." ;
             Text[ chinese_simplified ] = "计算 Chi 平方的独立性检验值。";
-            Text[ russian ] = "   .";
+            Text[ russian ] = "          .";
             Text[ polish ] = "Oblicza test na niezaleno rozkadu chi-kwadrat.";
             Text[ japanese ] = "カイ二乗分布を用いて独立性の検定を行います。";
             Text[ chinese_traditional ] = "計算 Chi 平方的獨立性檢驗值。";
@@ -32155,6 +33185,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Chi-kare bamszlk deneyini hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna la verificaci d'independncia quadrada khi.";
+            Text[ thai ] = "ส่งกลับการทดสอบอิสระไคสแควร์";
         };
         ExtraData =
         {
@@ -32178,7 +33209,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Datos_B" ;
             Text [ english_us ] = "Data_B" ;
             Text[ chinese_simplified ] = "data_B";
-            Text[ russian ] = "_B";
+            Text[ russian ] = " B";
             Text[ polish ] = "Dane_O";
             Text[ japanese ] = "実測値";
             Text[ chinese_traditional ] = "data_B";
@@ -32190,6 +33221,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Veri_B";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Data_B";
+            Text[ thai ] = "ข้อมูล_B";
         };
         String 3 // Description of Parameter 1
         {
@@ -32199,7 +33231,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "La matrice dei dati osservati." ;
             Text [ portuguese_brazilian ] = "Die Matrix der beobachteten Daten." ;
             Text [ portuguese ] = " o intervalo de dados que contm observaes para serem comparadas com os valores esperados." ;
-            Text [ finnish ] = "Tutkittu tietomatriisi." ;
+            Text [ finnish ] = "Tutkittu tietotaulukko" ;
             Text [ danish ] = "Matrixen med de observerede vrdier." ;
             Text [ french ] = "La plage des donnes observes." ;
             Text [ swedish ] = "Matrisen fr observerade data." ;
@@ -32207,7 +33239,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es el rea de datos que contiene observaciones para probar frente a valores esperados." ;
             Text [ english_us ] = "The observed data array." ;
             Text[ chinese_simplified ] = "含观察数据的行列。";
-            Text[ russian ] = ",  ,     .";
+            Text[ russian ] = "  .";
             Text[ polish ] = "Macierz obserwowanych danych.";
             Text[ japanese ] = "実測値が入力されているセル範囲。";
             Text[ chinese_traditional ] = "含觀察數據的行列。";
@@ -32219,6 +33251,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "zlenen deerlerin matrisi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Matriu de dades observada.";
+            Text[ thai ] = "แถวลำดับข้อมูลที่สังเกต";
         };
         String 4 // Name of Parameter 2
         {
@@ -32236,7 +33269,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Datos_E" ;
             Text [ english_us ] = "data_E" ;
             Text[ chinese_simplified ] = "data_E";
-            Text[ russian ] = "_";
+            Text[ russian ] = " ";
             Text[ polish ] = "Dane_T";
             Text[ japanese ] = "期待値";
             Text[ chinese_traditional ] = "data_E";
@@ -32248,6 +33281,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Veri_E";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "data_E";
+            Text[ thai ] = "ข้อมูล_E";
         };
         String 5 // Description of Parameter 2
         {
@@ -32257,7 +33291,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "La matrice dei valori attesi." ;
             Text [ portuguese_brazilian ] = "Die Matrix der erwarteten Daten." ;
             Text [ portuguese ] = " a matriz dos dados necessrios." ;
-            Text [ finnish ] = "Oletettu tietomatriisi." ;
+            Text [ finnish ] = "Oletettu tietotaulukko" ;
             Text [ danish ] = "Matrixen med de forventede vrdier." ;
             Text [ french ] = "La plage des donnes prvues." ;
             Text [ swedish ] = "Matrisen fr frvntade data." ;
@@ -32265,7 +33299,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es el rea de datos que contiene los valores esperados." ;
             Text [ english_us ] = "The expected data array." ;
             Text[ chinese_simplified ] = "含期待数据的行列。";
-            Text[ russian ] = ",           .";
+            Text[ russian ] = "  .";
             Text[ polish ] = "Macierz oczekiwanych danych.";
             Text[ japanese ] = "期待値が入力されているセル範囲。";
             Text[ chinese_traditional ] = "含期待的數據的行列。";
@@ -32277,6 +33311,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Beklenen deerlerin matrisi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "La matriu de dades esperada.";
+            Text[ thai ] = "แถวลำดับข้อมูลที่คาดไว้";
         };
     };
      // -=*# Resource for function FTEST #*=-
@@ -32295,10 +33330,10 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ french ] = "Renvoie le rsultat d'un test F." ;
             Text [ swedish ] = "Berknar F-varianstestet." ;
             Text [ dutch ] = "Berekent de F-variantietest" ;
-            Text [ spanish ] = "Devuelve el resultado de una prueba F." ;
+            Text [ spanish ] = "Calcula el resultado de una prueba F." ;
             Text [ english_us ] = "Calculates the F test." ;
             Text[ chinese_simplified ] = "计算 F - 方差检验的结果。";
-            Text[ russian ] = "  F-.";
+            Text[ russian ] = " F-.";
             Text[ polish ] = "Podaje wynik testu F.";
             Text[ japanese ] = "F 検定の結果を返します。";
             Text[ chinese_traditional ] = "計算 F - 方差檢驗的結果。";
@@ -32306,10 +33341,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Berekent de F-variantietest";
             Text[ chinese_simplified ] = "计算 F - 方差检验的结果。";
             Text[ greek ] = "    F.";
-            Text[ korean ] = "F-분산테스트 계산";
+            Text[ korean ] = "F 분산 테스트를 계산합니다.";
             Text[ turkish ] = "F varyans deneyini hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Calcula la verificaci F.";
+            Text[ thai ] = "คำนวนการทดสอบแบบ F ";
         };
         ExtraData =
         {
@@ -32333,7 +33369,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Datos_1" ;
             Text [ english_us ] = "data_1" ;
             Text[ chinese_simplified ] = "data_1";
-            Text[ russian ] = "_1";
+            Text[ russian ] = " 1";
             Text[ polish ] = "Dane_1";
             Text[ japanese ] = "データ 1";
             Text[ chinese_traditional ] = "data_1";
@@ -32345,6 +33381,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Veri_1";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "data_1";
+            Text[ thai ] = "ข้อมูล_1";
         };
         String 3 // Description of Parameter 1
         {
@@ -32354,7 +33391,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "La matrice del primo record di dati." ;
             Text [ portuguese_brazilian ] = "Die Matrix des ersten Datensatzes." ;
             Text [ portuguese ] = " a primeira matriz ou intervalo de dados." ;
-            Text [ finnish ] = "Ensimminen tietuematriisi." ;
+            Text [ finnish ] = "Ensimminen tietuetaulukko" ;
             Text [ danish ] = "Den frste dataposts matrix." ;
             Text [ french ] = "La matrice du premier enregistrement." ;
             Text [ swedish ] = "Den frsta datapostens matris." ;
@@ -32362,7 +33399,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es la primera matriz o rea de datos." ;
             Text [ english_us ] = "The first record array." ;
             Text[ chinese_simplified ] = "第一个数据组的矩阵。";
-            Text[ russian ] = "    .";
+            Text[ russian ] = "  .";
             Text[ polish ] = "Macierz pierwszego rekordu.";
             Text[ japanese ] = "1つめのデータが入力されているセル範囲。";
             Text[ chinese_traditional ] = "第一組數據儲存格區域。";
@@ -32374,6 +33411,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Birinci veri kmesinin matrisi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Primera matriu de registre.";
+            Text[ thai ] = "แถวลำดับระเบียนแรก";
         };
         String 4 // Name of Parameter 2
         {
@@ -32391,7 +33429,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Datos_2" ;
             Text [ english_us ] = "data_2" ;
             Text[ chinese_simplified ] = "data_2";
-            Text[ russian ] = "_2";
+            Text[ russian ] = " 2";
             Text[ polish ] = "Dane_2";
             Text[ japanese ] = "データ 2";
             Text[ chinese_traditional ] = "data_2";
@@ -32403,6 +33441,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Veri_2";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "data_2";
+            Text[ thai ] = "ข้อมูล_2";
         };
         String 5 // Description of Parameter 2
         {
@@ -32412,15 +33451,15 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "La matrice del secondo record di dati." ;
             Text [ portuguese_brazilian ] = "Die Matrix des zweiten Datensatzes." ;
             Text [ portuguese ] = " a segunda matriz ou intervalo de dados." ;
-            Text [ finnish ] = "Toinen tietuematriisi." ;
+            Text [ finnish ] = "Toinen tietuetaulukko" ;
             Text [ danish ] = "Den anden dataposts matrix." ;
             Text [ french ] = "La matrice du deuxime enregistrement." ;
             Text [ swedish ] = "Den andra datapostens matris." ;
             Text [ dutch ] = "De matrix van de tweede record." ;
-            Text [ spanish ] = "es la segunda matriz o rea de datos." ;
+            Text [ spanish ] = "La matriz del segundo registro." ;
             Text [ english_us ] = "The second record array." ;
             Text[ chinese_simplified ] = "第二个数据组的矩阵。";
-            Text[ russian ] = "    .";
+            Text[ russian ] = "  .";
             Text[ polish ] = "Macierz drugiego zbioru danych.";
             Text[ japanese ] = "2つめのデータが入力されているセル範囲。";
             Text[ chinese_traditional ] = "第二組數據儲存格區域。";
@@ -32432,6 +33471,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "kinci veri kmesinin matrisi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Segona matriu de registres.";
+            Text[ thai ] = "แถวลำดับระเบียนที่สอง";
         };
     };
      // -=*# Resource for function TTEST #*=-
@@ -32453,7 +33493,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve la probabilidad asociada con la prueba t de Student." ;
             Text [ english_us ] = "Calculates the T test." ;
             Text[ chinese_simplified ] = "计算与学生氏T-检验相关的概率。";
-            Text[ russian ] = " ,  t- .";
+            Text[ russian ] = " t- (,      ).";
             Text[ polish ] = "Wyznacza rozkad t Studenta.";
             Text[ japanese ] = "2個の平均値の差を検定し、結果の有意確率(P 値)を返します。";
             Text[ chinese_traditional ] = "計算與學生氏T-檢驗相關的概率。";
@@ -32461,10 +33501,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Berekent de Student T-toets.";
             Text[ chinese_simplified ] = "计算与学生氏T-检验相关的概率。";
             Text[ greek ] = "   T.";
-            Text[ korean ] = "T-테스트 계산";
+            Text[ korean ] = "T 테스트를 계산합니다.";
             Text[ turkish ] = "T deneyini hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Calcula la verificaci T.";
+            Text[ thai ] = "คำนวณการทดสอบแบบ T ";
         };
         ExtraData =
         {
@@ -32488,7 +33529,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Datos_1" ;
             Text [ english_us ] = "data_1" ;
             Text[ chinese_simplified ] = "data_1";
-            Text[ russian ] = "_1";
+            Text[ russian ] = " 1";
             Text[ polish ] = "Dane_1";
             Text[ japanese ] = "データ 1";
             Text[ chinese_traditional ] = "data_1";
@@ -32500,6 +33541,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Veri_1";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "data_1";
+            Text[ thai ] = "ข้อมูล_1";
         };
         String 3 // Description of Parameter 1
         {
@@ -32509,7 +33551,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "La matrice del primo record di dati." ;
             Text [ portuguese_brazilian ] = "Die Matrix des ersten Datensatzes." ;
             Text [ portuguese ] = " o primeiro conjunto de dados." ;
-            Text [ finnish ] = "Ensimminen tietuematriisi." ;
+            Text [ finnish ] = "Ensimminen tietuetaulukko" ;
             Text [ danish ] = "Den frste dataposts matrix." ;
             Text [ french ] = "La matrice du premier enregistrement." ;
             Text [ swedish ] = "Den frsta datapostens matris." ;
@@ -32517,7 +33559,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es el primer conjunto de datos." ;
             Text [ english_us ] = "The first record array." ;
             Text[ chinese_simplified ] = "第一个数据组的矩阵。";
-            Text[ russian ] = "   .";
+            Text[ russian ] = "  .";
             Text[ polish ] = "Macierz pierwszego rekordu.";
             Text[ japanese ] = "1つめのデータが入力されているセル範囲。";
             Text[ chinese_traditional ] = "第一組數據儲存格區域。";
@@ -32529,6 +33571,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Birinci veri kmesinin matrisi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Primera matriu de registre.";
+            Text[ thai ] = "แถวลำดับระเบียนแรก";
         };
         String 4 // Name of Parameter 2
         {
@@ -32546,7 +33589,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Datos_2" ;
             Text [ english_us ] = "data_2" ;
             Text[ chinese_simplified ] = "data_2";
-            Text[ russian ] = "_2";
+            Text[ russian ] = " 2";
             Text[ polish ] = "Dane_2";
             Text[ japanese ] = "データ 2";
             Text[ chinese_traditional ] = "data_2";
@@ -32558,6 +33601,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Veri_2";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "data_2";
+            Text[ thai ] = "ข้อมูล_2";
         };
         String 5 // Description of Parameter 2
         {
@@ -32567,15 +33611,15 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "La matrice del secondo record di dati." ;
             Text [ portuguese_brazilian ] = "Die Matrix des zweiten Datensatzes." ;
             Text [ portuguese ] = " o segundo conjunto de dados." ;
-            Text [ finnish ] = "Toinen tietuematriisi." ;
+            Text [ finnish ] = "Toinen tietuetaulukko" ;
             Text [ danish ] = "Den anden dataposts matrix." ;
             Text [ french ] = "La matrice du deuxime enregistrement." ;
             Text [ swedish ] = "Den andra datapostens matris." ;
             Text [ dutch ] = "De matrix van de tweede record." ;
-            Text [ spanish ] = "es el segundo conjunto de datos." ;
+            Text [ spanish ] = "La matriz del segundo registro." ;
             Text [ english_us ] = "The second record array." ;
             Text[ chinese_simplified ] = "第二个数据组。";
-            Text[ russian ] = "   .";
+            Text[ russian ] = "  .";
             Text[ polish ] = "Macierz drugiego zbioru danych.";
             Text[ japanese ] = "2つめのデータが入力されているセル範囲。";
             Text[ chinese_traditional ] = "第二組數據儲存格區域。";
@@ -32587,6 +33631,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "kinci veri kmesinin matrisi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Segona matriu de registres.";
+            Text[ thai ] = "แถวลำดับระเบียนที่สอง";
         };
         String 6 // Name of Parameter 3
         {
@@ -32604,7 +33649,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Modo" ;
             Text [ english_us ] = "mode" ;
             Text[ chinese_simplified ] = "tails";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "Tryb";
             Text[ japanese ] = "モード";
             Text[ chinese_traditional ] = "Tails";
@@ -32616,6 +33661,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Kip";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "mode";
+            Text[ thai ] = "โหมด";
         };
         String 7 // Description of Parameter 3
         {
@@ -32633,7 +33679,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "especifica el nmero de colas de distribucin." ;
             Text [ english_us ] = "Mode specifies the number of distribution tails to return. 1= one-tailed, 2 = two-tailed distribution" ;
             Text[ chinese_simplified ] = "tails = 1 计算单尾分布,tails = 2 计算双尾分布。";
-            Text[ russian ] = "  = 1,      .   = 2,      .";
+            Text[ russian ] = "  = 1,     .   = 2,     .";
             Text[ polish ] = "Tryb = 1 oblicza jednoladowy test, Tryb = 2 dwuladowy.";
             Text[ japanese ] = "1 を指定すると片側検定、2 を指定すると両側検定を行います。";
             Text[ chinese_traditional ] = "tails = 1 計算單尾分佈﹐tails = 2 計算雙尾分佈。";
@@ -32645,6 +33691,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Kip = 1, tek kuyruklu deneyi, Kip = 2 ise iki kuyruklu deneyi hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "El mode indica el nombre de cues de distribuci a tornar. 1 = d'una cua, 2 = distribuci de dues cues.";
+            Text[ thai ] = "โหมดระบุจำนวนหางการกระจายที่ส่งกลับ 1= หางเดียว, 2 = การกระจายแบบสองหาง";
         };
         String 8 // Name of Parameter 4
         {
@@ -32674,6 +33721,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Tip";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Tipus";
+            Text[ thai ] = "ชนิด";
         };
         String 9 // Description of Parameter 4
         {
@@ -32703,6 +33751,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "T deneyi tipi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Tipus de la verificaci T.";
+            Text[ thai ] = "ชนิดของการทดสอบ T ";
         };
     };
      // -=*# Resource for function BESTIMMTHEITSMASS #*=-
@@ -32720,22 +33769,23 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ danish ] = "Beregner kvadratet p Pearsons korrelationskoefficient." ;
             Text [ french ] = "Calcule le coefficient de corrlation de Pearson au carr." ;
             Text [ swedish ] = "Berknar den Pearsonska korrelationskoefficenten i kvadrerad form." ;
-            Text [ dutch ] = "Berekent de correlatiecofficint van Peorson in kwadraatvorm." ;
+            Text [ dutch ] = "Berekent de correlatiecofficint van Pearson in kwadraatvorm." ;
             Text [ spanish ] = "Devuelve el valor R cuadrado para una lnea de regresin lineal creada con los datos de los argumentos matriz_x y matriz_y." ;
             Text [ english_us ] = "Returns the square of the Pearson product moment correlation coefficient." ;
             Text[ chinese_simplified ] = "计算 Pearson 乘积矩相关系数的平方。";
-            Text[ russian ] = "       .";
+            Text[ russian ] = "      .";
             Text[ polish ] = "Wyznacza kwadrat chwilowego wspczynnika korelacji iloczynu Pearsona.";
             Text[ japanese ] = "ピアソンの積率相関係数の2乗を返します。";
             Text[ chinese_traditional ] = "計算 Pearson 乘積矩相關係數的平方。";
             Text[ arabic ] = "   Pearson  .";
-            Text[ dutch ] = "Berekent de correlatiecofficint van Peorson in kwadraatvorm.";
+            Text[ dutch ] = "Berekent de correlatiecofficint van Pearson in kwadraatvorm.";
             Text[ chinese_simplified ] = "计算 Pearson 乘积矩相关系数的平方。";
             Text[ greek ] = "       Pearson.";
             Text[ korean ] = "Pearson 의 상관계수의 제곱을 계산.";
             Text[ turkish ] = "Pearson korelasyon katsaysnn karesini hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna el quadrat del coeficient de Pearson de correlaci de moment de producte.";
+            Text[ thai ] = "ส่งกลับกำลังสองของผลลัพธ์เพียร์สันขณะสัมประสิทธิ์สัมพันธ์กัน";
         };
         ExtraData =
         {
@@ -32759,7 +33809,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Datos_Y" ;
             Text [ english_us ] = "data_Y" ;
             Text[ chinese_simplified ] = "data_Y";
-            Text[ russian ] = "__Y";
+            Text[ russian ] = " Y";
             Text[ polish ] = "Dane_Y";
             Text[ japanese ] = "データ Y";
             Text[ chinese_traditional ] = "data_Y";
@@ -32771,6 +33821,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Veri_Y";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "data_Y";
+            Text[ thai ] = "ข้อมูล_Y";
         };
         String 3 // Description of Parameter 1
         {
@@ -32780,7 +33831,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "La matrice dei dati Y." ;
             Text [ portuguese_brazilian ] = "Die Matrix der Y-Daten." ;
             Text [ portuguese ] = " a matriz dos dados y." ;
-            Text [ finnish ] = "Tietomatriisi Y." ;
+            Text [ finnish ] = "Tietotaulukko Y" ;
             Text [ danish ] = "Matrixen med Y-data." ;
             Text [ french ] = "La matrice des donnes Y." ;
             Text [ swedish ] = "Matrisen med y-data." ;
@@ -32800,6 +33851,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Y verileri matrisi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Matriu de dades Y.";
+            Text[ thai ] = "แถวลำดับข้อมูล Y ";
         };
         String 4 // Name of Parameter 2
         {
@@ -32817,7 +33869,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Datos_X" ;
             Text [ english_us ] = "data_X" ;
             Text[ chinese_simplified ] = "data_X";
-            Text[ russian ] = "__X";
+            Text[ russian ] = " X";
             Text[ polish ] = "Dane_X";
             Text[ japanese ] = "データ X";
             Text[ chinese_traditional ] = "data_X";
@@ -32829,6 +33881,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Veri_X";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "data_X";
+            Text[ thai ] = "ข้อมูล_X";
         };
         String 5 // Description of Parameter 2
         {
@@ -32838,7 +33891,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "La matrice dei dati X." ;
             Text [ portuguese_brazilian ] = "Die Matrix der X-Daten." ;
             Text [ portuguese ] = " a matriz dos dados x." ;
-            Text [ finnish ] = "Tietomatriisi X." ;
+            Text [ finnish ] = "Tietotaulukko X" ;
             Text [ danish ] = "Matrixen med X-data." ;
             Text [ french ] = "La matrice des donnes X." ;
             Text [ swedish ] = "Matrisen med x-data." ;
@@ -32858,6 +33911,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "X verileri matrisi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Matriu de dades X.";
+            Text[ thai ] = "แถวลำดับข้อมูล X";
         };
     };
      // -=*# Resource for function ACHSENABSCHNITT #*=-
@@ -32879,7 +33933,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve la interseccin del eje de ordenadas con la recta de regresin lineal." ;
             Text [ english_us ] = "Returns the intercept of the linear regression line and the Y axis." ;
             Text[ chinese_simplified ] = "计算线性回归线与 Y 轴的交点。";
-            Text[ russian ] = " ,      .";
+            Text[ russian ] = " ,    .";
             Text[ polish ] = "Oblicza punkt przecicia prostej regresji z osi Y.";
             Text[ japanese ] = "回帰直線の切片を返します。";
             Text[ chinese_traditional ] = "計算線性回歸線和Y軸的交點。";
@@ -32891,6 +33945,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Regresyon dorusunun Y ekseni ile kesime noktasn hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna la intersecci entre la l?nia de regressi lineal i l'eix Y.";
+            Text[ thai ] = "ส่งกลับจุดตัดของเส้นตรงแบบถดถอยและแกน Y ";
         };
         ExtraData =
         {
@@ -32914,7 +33969,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Datos_Y" ;
             Text [ english_us ] = "data_Y" ;
             Text[ chinese_simplified ] = "data_Y";
-            Text[ russian ] = "__y";
+            Text[ russian ] = " Y";
             Text[ polish ] = "Dane_Y";
             Text[ japanese ] = "データ Y";
             Text[ chinese_traditional ] = "data_Y";
@@ -32926,6 +33981,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Veri_Y";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "data_Y";
+            Text[ thai ] = "ข้อมูล_Y";
         };
         String 3 // Description of Parameter 1
         {
@@ -32935,7 +33991,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "La matrice dei dati Y." ;
             Text [ portuguese_brazilian ] = "Die Matrix der Y-Daten." ;
             Text [ portuguese ] = " o conjunto dependente de observaes ou dados." ;
-            Text [ finnish ] = "Tietomatriisi Y." ;
+            Text [ finnish ] = "Tietotaulukko Y" ;
             Text [ danish ] = "Matrixen med Y-data." ;
             Text [ french ] = "La matrice des donnes Y." ;
             Text [ swedish ] = "Matrisen med y-data." ;
@@ -32943,7 +33999,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "representa la serie dependiente de observaciones o de datos." ;
             Text [ english_us ] = "The Y data array." ;
             Text[ chinese_simplified ] = "Y-因变量数据组。";
-            Text[ russian ] = "    ..";
+            Text[ russian ] = "  Y.";
             Text[ polish ] = "Macierz danych Y.";
             Text[ japanese ] = "従属変数 Y の値が入力されているセル範囲。";
             Text[ chinese_traditional ] = "Y-因變量數據組。";
@@ -32955,6 +34011,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Y verileri matrisi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Matriu de dades Y.";
+            Text[ thai ] = "แถวลำดับข้อมูล Y ";
         };
         String 4 // Name of Parameter 2
         {
@@ -32972,7 +34029,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Datos_X" ;
             Text [ english_us ] = "data_X" ;
             Text[ chinese_simplified ] = "data_X";
-            Text[ russian ] = "__x";
+            Text[ russian ] = " X";
             Text[ polish ] = "Dane_X";
             Text[ japanese ] = "データ X";
             Text[ chinese_traditional ] = "data_X";
@@ -32984,6 +34041,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Veri_X";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "data_X";
+            Text[ thai ] = "ข้อมูล_X";
         };
         String 5 // Description of Parameter 2
         {
@@ -32993,7 +34051,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "La matrice dei dati X." ;
             Text [ portuguese_brazilian ] = "Die Matrix der X-Daten." ;
             Text [ portuguese ] = " o conjunto independente de observaes ou dados." ;
-            Text [ finnish ] = "Tietomatriisi X." ;
+            Text [ finnish ] = "Tietotaulukko X" ;
             Text [ danish ] = "Matrixen med X-data." ;
             Text [ french ] = "La matrice des donnes X." ;
             Text [ swedish ] = "Matrisen med x-data." ;
@@ -33001,7 +34059,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "representa la serie independiente de observaciones o de datos." ;
             Text [ english_us ] = "The X data array." ;
             Text[ chinese_simplified ] = "X-自变量数据组。";
-            Text[ russian ] = "    .";
+            Text[ russian ] = "  X.";
             Text[ polish ] = "Macierz danych X.";
             Text[ japanese ] = "従属変数 X の値が入力されているセル範囲。";
             Text[ chinese_traditional ] = "X-自變量數據組。";
@@ -33013,6 +34071,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "X verileri matrisi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Matriu de dades X.";
+            Text[ thai ] = "แถวลำดับข้อมูล X ";
         };
     };
      // -=*# Resource for function STEIGUNG #*=-
@@ -33034,7 +34093,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve la pendiente de una lnea de regresin lineal." ;
             Text [ english_us ] = "Returns the slope of the linear regression line." ;
             Text[ chinese_simplified ] = "计算线性回归直线的斜率。";
-            Text[ russian ] = "    .";
+            Text[ russian ] = "    .";
             Text[ polish ] = "Wyznacza nachylenie wykresu regresji liniowej.";
             Text[ japanese ] = "回帰直線の傾きを返します。";
             Text[ chinese_traditional ] = "計算線性回歸直線的斜率。";
@@ -33046,6 +34105,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Regresyon dorularnn ykseliini hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna la pendent de la l?nia de regressi lineal.";
+            Text[ thai ] = "ส่งกลับความชันของการถดถอยแบบเส้นตรง";
         };
         ExtraData =
         {
@@ -33069,7 +34129,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Datos_Y" ;
             Text [ english_us ] = "data_Y" ;
             Text[ chinese_simplified ] = "data_Y";
-            Text[ russian ] = "__Y";
+            Text[ russian ] = " Y";
             Text[ polish ] = "Dane_Y";
             Text[ japanese ] = "データ Y";
             Text[ chinese_traditional ] = "data_Y";
@@ -33081,6 +34141,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Veri_Y";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "data_Y";
+            Text[ thai ] = "ข้อมูล_Y";
         };
         String 3 // Description of Parameter 1
         {
@@ -33090,7 +34151,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "La matrice dei dati Y." ;
             Text [ portuguese_brazilian ] = "Die Matrix der Y-Daten." ;
             Text [ portuguese ] = " uma matriz ou intervalo de clula de dados numricos dependentes." ;
-            Text [ finnish ] = "Tietomatriisi Y." ;
+            Text [ finnish ] = "Tietotaulukko Y" ;
             Text [ danish ] = "Matrixen med Y-data." ;
             Text [ french ] = "La matrice des donnes Y." ;
             Text [ swedish ] = "Matrisen med y-data." ;
@@ -33110,6 +34171,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Y verileri matrisi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Matriu de dades Y.";
+            Text[ thai ] = "แถวลำดับข้อมูล Y ";
         };
         String 4 // Name of Parameter 2
         {
@@ -33127,7 +34189,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Datos_X" ;
             Text [ english_us ] = "data_X" ;
             Text[ chinese_simplified ] = "data_X";
-            Text[ russian ] = "__X";
+            Text[ russian ] = " X";
             Text[ polish ] = "Dane_X";
             Text[ japanese ] = "データ X";
             Text[ chinese_traditional ] = "data_X";
@@ -33139,6 +34201,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Veri_X";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "data_X";
+            Text[ thai ] = "ข้อมูล_X";
         };
         String 5 // Description of Parameter 2
         {
@@ -33148,7 +34211,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "La matrice dei dati X." ;
             Text [ portuguese_brazilian ] = "Die Matrix der X-Daten." ;
             Text [ portuguese ] = " o conjunto de dados independentes." ;
-            Text [ finnish ] = "Tietomatriisi X." ;
+            Text [ finnish ] = "Tietotaulukko X" ;
             Text [ danish ] = "Matrixen med X-data." ;
             Text [ french ] = "La matrice des donnes X." ;
             Text [ swedish ] = "Matrisen med x-data." ;
@@ -33168,6 +34231,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "X verileri matrisi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Matriu de dades X.";
+            Text[ thai ] = "แถวลำดับข้อมูล X ";
         };
     };
      // -=*# Resource for function STFEHLERYX #*=-
@@ -33189,7 +34253,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve el error tpico del valor a la regresin lineal." ;
             Text [ english_us ] = "Returns the standard error of the linear regression." ;
             Text[ chinese_simplified ] = "用线性回归法计算预测值时所产生的标准误差。";
-            Text[ russian ] = "     y    x  .";
+            Text[ russian ] = "   .";
             Text[ polish ] = "Oblicza standardowy bd regresji liniowej.";
             Text[ japanese ] = "回帰直線の標準誤差を返します。";
             Text[ chinese_traditional ] = "用線性回歸法計算預測值時所產生的標準誤差。";
@@ -33201,6 +34265,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Dorusal regresyondaki standart hatay hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna l'error estndard de la regressi lineal.";
+            Text[ thai ] = "ส่งกลับความผิดพลาดมาตรฐานของการถดถอยแบบเส้นตรง";
         };
         ExtraData =
         {
@@ -33224,7 +34289,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Datos_Y" ;
             Text [ english_us ] = "data_Y" ;
             Text[ chinese_simplified ] = "data_Y";
-            Text[ russian ] = "__Y";
+            Text[ russian ] = " Y";
             Text[ polish ] = "Dane_Y";
             Text[ japanese ] = "データ Y";
             Text[ chinese_traditional ] = "data_Y";
@@ -33236,6 +34301,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Veri_Y";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "data_Y";
+            Text[ thai ] = "ข้อมูล_Y";
         };
         String 3 // Description of Parameter 1
         {
@@ -33245,7 +34311,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "La matrice dei dati Y." ;
             Text [ portuguese_brazilian ] = "Die Matrix der Y-Daten." ;
             Text [ portuguese ] = " uma matriz ou intervalo de dados dependentes." ;
-            Text [ finnish ] = "Tietomatriisi Y." ;
+            Text [ finnish ] = "Tietotaulukko Y" ;
             Text [ danish ] = "Matrixen med Y-data." ;
             Text [ french ] = "La matrice des donnes Y." ;
             Text [ swedish ] = "Matrisen med y-data." ;
@@ -33265,6 +34331,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Y verileri matrisi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Matriu de dades Y.";
+            Text[ thai ] = "แถวลำดับข้อมูล Y ";
         };
         String 4 // Name of Parameter 2
         {
@@ -33282,7 +34349,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Datos_X" ;
             Text [ english_us ] = "data_X" ;
             Text[ chinese_simplified ] = "data_X";
-            Text[ russian ] = "__X";
+            Text[ russian ] = " X";
             Text[ polish ] = "Dane_X";
             Text[ japanese ] = "データ X";
             Text[ chinese_traditional ] = "data_X";
@@ -33294,6 +34361,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Veri_X";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "data_X";
+            Text[ thai ] = "ข้อมูล_X";
         };
         String 5 // Description of Parameter 2
         {
@@ -33303,7 +34371,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "La matrice dei dati X." ;
             Text [ portuguese_brazilian ] = "Die Matrix der X-Daten." ;
             Text [ portuguese ] = " uma matriz ou intervalo de dados independentes.." ;
-            Text [ finnish ] = "Tietomatriisi X." ;
+            Text [ finnish ] = "Tietotaulukko X" ;
             Text [ danish ] = "Matrixen med X-data." ;
             Text [ french ] = "La matrice des donnes X." ;
             Text [ swedish ] = "Matrisen med x-data." ;
@@ -33323,6 +34391,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "X verileri matrisi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Matriu de dades X.";
+            Text[ thai ] = "แถวลำดับข้อมูล X ";
         };
     };
      // -=*# Resource for function PEARSON #*=-
@@ -33344,7 +34413,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve el coeficiente de correlacin producto o momento r de Pearson.." ;
             Text [ english_us ] = "Returns the Pearson product moment correlation coefficient." ;
             Text[ chinese_simplified ] = "计算皮尔生相关系数。";
-            Text[ russian ] = "   .";
+            Text[ russian ] = "    r.";
             Text[ polish ] = "Oblicza chwilowy wspczynnik korelacji iloczynu Pearsona.";
             Text[ japanese ] = "ピアソンの積率相関係数を返します。";
             Text[ chinese_traditional ] = "計算皮爾生相關係數。";
@@ -33356,6 +34425,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Pearson korelasyon katsaysn hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna el coeficient de Pearson de correlaci de moment de producte.";
+            Text[ thai ] = "ส่งกลับผลลัพธ์เพียร์สันขณะสัมประสิทธิ์สัมพันธ์กัน";
         };
         ExtraData =
         {
@@ -33379,7 +34449,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Datos_1" ;
             Text [ english_us ] = "Data_1" ;
             Text[ chinese_simplified ] = "data_1";
-            Text[ russian ] = "_1";
+            Text[ russian ] = " 1";
             Text[ polish ] = "Dane_1";
             Text[ japanese ] = "データ 1";
             Text[ chinese_traditional ] = "data_1";
@@ -33391,6 +34461,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Veri_1";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Data_1";
+            Text[ thai ] = "ข้อมูล_1";
         };
         String 3 // Description of Parameter 1
         {
@@ -33400,7 +34471,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "La matrice del primo record di dati." ;
             Text [ portuguese_brazilian ] = "Die Matrix des ersten Datensatzes." ;
             Text [ portuguese ] = " um conjunto de valores independentes." ;
-            Text [ finnish ] = "Ensimminen tietuematriisi." ;
+            Text [ finnish ] = "Ensimminen tietuetaulukko" ;
             Text [ danish ] = "Den frste dataposts matrix." ;
             Text [ french ] = "La matrice du premier enregistrement." ;
             Text [ swedish ] = "Den frsta datapostens matris." ;
@@ -33408,7 +34479,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es un conjunto de valores independientes." ;
             Text [ english_us ] = "The first record array." ;
             Text[ chinese_simplified ] = "第一个数据组的矩阵。";
-            Text[ russian ] = "  .";
+            Text[ russian ] = "  .";
             Text[ polish ] = "Macierz drugiego zbioru danych.";
             Text[ japanese ] = "変数 X のデータが入力されているセル範囲。";
             Text[ chinese_traditional ] = "第一組數據儲存格區域。";
@@ -33420,6 +34491,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Birinci veri kmesinin matrisi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Primera matriu de registre.";
+            Text[ thai ] = "แถวลำดับระเบียนแรก";
         };
         String 4 // Name of Parameter 2
         {
@@ -33437,7 +34509,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Datos_2" ;
             Text [ english_us ] = "Data_2" ;
             Text[ chinese_simplified ] = "data_2";
-            Text[ russian ] = "_2";
+            Text[ russian ] = " 2";
             Text[ polish ] = "Dane_2";
             Text[ japanese ] = "データ 2";
             Text[ chinese_traditional ] = "data_2";
@@ -33449,6 +34521,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Veri_2";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Data_2";
+            Text[ thai ] = "ข้อมูล_2";
         };
         String 5 // Description of Parameter 2
         {
@@ -33458,15 +34531,15 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "La matrice del secondo record di dati." ;
             Text [ portuguese_brazilian ] = "Die Matrix des zweiten Datensatzes." ;
             Text [ portuguese ] = " um conjunto de valores dependentes." ;
-            Text [ finnish ] = "Toinen tietuematriisi." ;
+            Text [ finnish ] = "Toinen tietuetaulukko" ;
             Text [ danish ] = "Den anden dataposts matrix." ;
             Text [ french ] = "La matrice du deuxime enregistrement." ;
             Text [ swedish ] = "Den andra datapostens matris." ;
             Text [ dutch ] = "De matrix van het tweede gegevensbereik." ;
-            Text [ spanish ] = "es un conjunto de valores dependientes." ;
+            Text [ spanish ] = "La matriz del segundo registro." ;
             Text [ english_us ] = "The second record array." ;
             Text[ chinese_simplified ] = "第二个数据组的矩阵。";
-            Text[ russian ] = "  .";
+            Text[ russian ] = "  .";
             Text[ polish ] = "Macierz drugiego zbioru danych.";
             Text[ japanese ] = "変数 Y のデータが入力されているセル範囲。";
             Text[ chinese_traditional ] = "第二組數據儲存格區域。";
@@ -33478,6 +34551,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "kinci veri kmesinin matrisi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Segona matriu de registres.";
+            Text[ thai ] = "แถวลำดับระเบียนที่สอง";
         };
     };
      // -=*# Resource for function KORREL #*=-
@@ -33499,7 +34573,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve el coeficiente de correlacin entre dos conjuntos de datos." ;
             Text [ english_us ] = "Returns the correlation coefficient." ;
             Text[ chinese_simplified ] = "计算相关系数。";
-            Text[ russian ] = "      .";
+            Text[ russian ] = "      .";
             Text[ polish ] = "Oblicza wspczynnik korelacji midzy dwoma zbiorami danych.";
             Text[ japanese ] = "ピアソンの積率相関係数を返します";
             Text[ chinese_traditional ] = "計算相關係數。";
@@ -33511,6 +34585,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Korelasyon katsaysn hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna el coeficient de correlaci.";
+            Text[ thai ] = "ส่งกลับค่าสัมประสิทธิ์ที่สัมพันธ์กัน";
         };
         ExtraData =
         {
@@ -33534,7 +34609,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Datos_1" ;
             Text [ english_us ] = "Data_1" ;
             Text[ chinese_simplified ] = "data_1";
-            Text[ russian ] = "_1";
+            Text[ russian ] = " 1";
             Text[ polish ] = "Dane_1";
             Text[ japanese ] = "データ 1";
             Text[ chinese_traditional ] = "data_1";
@@ -33546,6 +34621,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Veri_1";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Data_1";
+            Text[ thai ] = "ข้อมูล_1";
         };
         String 3 // Description of Parameter 1
         {
@@ -33555,7 +34631,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "La matrice del primo record di dati." ;
             Text [ portuguese_brazilian ] = "Die Matrix des ersten Datensatzes." ;
             Text [ portuguese ] = " um intervalo de valores numa clula." ;
-            Text [ finnish ] = "Ensimminen tietuematriisi." ;
+            Text [ finnish ] = "Ensimminen tietuetaulukko" ;
             Text [ danish ] = "Den frste dataposts matrix." ;
             Text [ french ] = "La matrice du premier enregistrement." ;
             Text [ swedish ] = "Den frsta datapostens matris." ;
@@ -33563,7 +34639,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "primer rea de celdas de valores." ;
             Text [ english_us ] = "The first record array." ;
             Text[ chinese_simplified ] = "第一组数据单元格区域。";
-            Text[ russian ] = "  .";
+            Text[ russian ] = "  .";
             Text[ polish ] = "Macierz pierwszego rekordu.";
             Text[ japanese ] = "1つめのデータが入力されているセル範囲。";
             Text[ chinese_traditional ] = "第一組數據儲存格區域。";
@@ -33575,6 +34651,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Birinci veri kmesinin matrisi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Primera matriu de registre.";
+            Text[ thai ] = "แถวลำดับระเบียนแรก";
         };
         String 4 // Name of Parameter 2
         {
@@ -33592,7 +34669,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Datos_2" ;
             Text [ english_us ] = "Data_2" ;
             Text[ chinese_simplified ] = "data_2";
-            Text[ russian ] = "_2";
+            Text[ russian ] = " 2";
             Text[ polish ] = "Dane_2";
             Text[ japanese ] = "データ 2";
             Text[ chinese_traditional ] = "data_2";
@@ -33604,6 +34681,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Veri_2";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Data_2";
+            Text[ thai ] = "ข้อมูล_2";
         };
         String 5 // Description of Parameter 2
         {
@@ -33613,15 +34691,15 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "La matrice del secondo record di dati." ;
             Text [ portuguese_brazilian ] = "Die Matrix des zweiten Datensatzes." ;
             Text [ portuguese ] = " o segundo intervalo de valores numa clula." ;
-            Text [ finnish ] = "Toinen tietuematriisi." ;
+            Text [ finnish ] = "Toinen tietuetaulukko" ;
             Text [ danish ] = "Den anden dataposts matrix." ;
             Text [ french ] = "La matrice du deuxime enregistrement." ;
             Text [ swedish ] = "Den andra datapostens matris." ;
             Text [ dutch ] = "De matrix met de tweede record." ;
-            Text [ spanish ] = "segunda rea de celdas de valores." ;
+            Text [ spanish ] = "La matriz del segundo registro." ;
             Text [ english_us ] = "The second record array." ;
             Text[ chinese_simplified ] = "第二组数据单元格区域。";
-            Text[ russian ] = "  .";
+            Text[ russian ] = "  .";
             Text[ polish ] = "Macierz drugiego zbioru danych.";
             Text[ japanese ] = "2つめのデータが入力されているセル範囲。";
             Text[ chinese_traditional ] = "第二組數據儲存格區域。";
@@ -33633,6 +34711,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "kinci veri kmesinin matrisi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Segona matriu de registres.";
+            Text[ thai ] = "แถวลำดับระเบียนที่สอง";
         };
     };
      // -=*# Resource for function KOVAR #*=-
@@ -33651,10 +34730,10 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ french ] = "Calcule la covariance." ;
             Text [ swedish ] = "Berknar kovariansen." ;
             Text [ dutch ] = "Berekent de covariantie" ;
-            Text [ spanish ] = "Devuelve la covarianza, o promedio de los productos entre las desviaciones, de los valores por pares." ;
+            Text [ spanish ] = "Calcula la covariancia." ;
             Text [ english_us ] = "Calculates the covariance." ;
             Text[ chinese_simplified ] = "计算协方差。";
-            Text[ russian ] = " ,    .";
+            Text[ russian ] = "  (  ).";
             Text[ polish ] = "Oblicza kowariancj.";
             Text[ japanese ] = "2つのデータの共分散を返します。";
             Text[ chinese_traditional ] = "計算協方差。";
@@ -33666,6 +34745,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Kovaryans hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Calcula la covarincia.";
+            Text[ thai ] = "คำนวณการแปรผันร่วม";
         };
         ExtraData =
         {
@@ -33689,7 +34769,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Datos_1" ;
             Text [ english_us ] = "Data_1" ;
             Text[ chinese_simplified ] = "data_1";
-            Text[ russian ] = "_1";
+            Text[ russian ] = " 1";
             Text[ polish ] = "Dane_1";
             Text[ japanese ] = "データ 1";
             Text[ chinese_traditional ] = "data_1";
@@ -33701,6 +34781,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Veri_1";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Data_1";
+            Text[ thai ] = "ข้อมูล_1";
         };
         String 3 // Description of Parameter 1
         {
@@ -33710,7 +34791,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "La matrice del primo record di dati." ;
             Text [ portuguese_brazilian ] = "Die Matrix des ersten Datensatzes." ;
             Text [ portuguese ] = " o primeiro intervalo de nmeros inteiros." ;
-            Text [ finnish ] = "Ensimminen tietuematriisi." ;
+            Text [ finnish ] = "Ensimminen tietuetaulukko" ;
             Text [ danish ] = "Den frste dataposts matrix." ;
             Text [ french ] = "La matrice du premier enregistrement." ;
             Text [ swedish ] = "Den frsta datapostens matris." ;
@@ -33718,7 +34799,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "primer rea de celdas de nmeros enteros." ;
             Text [ english_us ] = "The first record array." ;
             Text[ chinese_simplified ] = "第一个数据组的单元格区域。";
-            Text[ russian ] = "    .";
+            Text[ russian ] = "  .";
             Text[ polish ] = "Macierz pierwszego rekordu.";
             Text[ japanese ] = "1つめのデータが入力されているセル範囲。";
             Text[ chinese_traditional ] = "第一個數據組的儲存格區域。";
@@ -33730,6 +34811,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Birinci veri kmesinin matrisi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Primera matriu de registre.";
+            Text[ thai ] = "แถวลำดับระเบียนแรก";
         };
         String 4 // Name of Parameter 2
         {
@@ -33747,7 +34829,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Datos_2" ;
             Text [ english_us ] = "Data_2" ;
             Text[ chinese_simplified ] = "data_2";
-            Text[ russian ] = "_2";
+            Text[ russian ] = " 2";
             Text[ polish ] = "Dane_2";
             Text[ japanese ] = "データ 2";
             Text[ chinese_traditional ] = "data_2";
@@ -33759,6 +34841,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Veri_2";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Data_2";
+            Text[ thai ] = "ข้อมูล_2";
         };
         String 5 // Description of Parameter 2
         {
@@ -33768,15 +34851,15 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "La matrice del secondo record di dati." ;
             Text [ portuguese_brazilian ] = "Die Matrix des zweiten Datensatzes." ;
             Text [ portuguese ] = " o segundo intervalo de nmeros inteiros." ;
-            Text [ finnish ] = "Toinen tietuematriisi." ;
+            Text [ finnish ] = "Toinen tietuetaulukko" ;
             Text [ danish ] = "Den anden dataposts matrix." ;
             Text [ french ] = "La matrice du deuxime enregistrement." ;
             Text [ swedish ] = "Den andra datapostens matris." ;
             Text [ dutch ] = "De matrix met de tweede record." ;
-            Text [ spanish ] = "segunda rea de celdas de nmeros enteros." ;
+            Text [ spanish ] = "La matriz del segundo registro." ;
             Text [ english_us ] = "The second record array." ;
             Text[ chinese_simplified ] = "第二个数据组的单元格区域。";
-            Text[ russian ] = "    .";
+            Text[ russian ] = "  .";
             Text[ polish ] = "Macierz drugiego zbioru danych.";
             Text[ japanese ] = "データが入力されているもう1つのセル範囲。";
             Text[ chinese_traditional ] = "第二個數據組的儲存格區域。";
@@ -33788,6 +34871,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "kinci veri kmesinin matrisi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Segona matriu de registres.";
+            Text[ thai ] = "แถวลำดับระเบียนที่สอง";
         };
     };
      // -=*# Resource for function SCHTZER #*=-
@@ -33801,7 +34885,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Restituisce un valore su una retta di regressione." ;
             Text [ portuguese_brazilian ] = "Berechnet einen Wert auf der Regressionsgeraden." ;
             Text [ portuguese ] = "Devolve um valor baseando-se numa regresso linear." ;
-            Text [ finnish ] = "Palauttaa lineaarisen regression arvon" ;
+            Text [ finnish ] = "Palauttaa lineaarisen regression arvon." ;
             Text [ danish ] = "Beregner en vrdi baseret p liner regression." ;
             Text [ french ] = "Renvoie une valeur suivant une ligne de rgression." ;
             Text [ swedish ] = "Berknar ett vrde lngs en regressionslinje." ;
@@ -33809,7 +34893,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve un valor basndose en una regresin lineal." ;
             Text [ english_us ] = "Returns a value along a linear regression" ;
             Text[ chinese_simplified ] = "计算线性回归预测值。";
-            Text[ russian ] = "    .";
+            Text[ russian ] = "    .";
             Text[ polish ] = "Oblicza warto przy zaoeniu regresji liniowej.";
             Text[ japanese ] = "回帰直線上で、独立変数が指定値であるときの従属変数の値を返します。";
             Text[ chinese_traditional ] = "計算線性回歸預測值。";
@@ -33821,6 +34905,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Regresyon dorusu zerinde bir deer hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna un valor al llarg d'una regressi lineal.";
+            Text[ thai ] = "ส่งกลับค่าตามเส้นตรงแบบถดถอย";
         };
         ExtraData =
         {
@@ -33856,6 +34941,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Deer";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "valor";
+            Text[ thai ] = "ค่า";
         };
         String 3 // Description of Parameter 1
         {
@@ -33885,6 +34971,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Regresyon dorusu zerinde Y deeri hesaplanacak X deeri.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor X per al qual s'ha de calcular el valor Y de la regressi lineal.";
+            Text[ thai ] = "คำนวณค่า X สำหรับค่า Y บนเส้นตรงแบบถดถอย";
         };
         String 4 // Name of Parameter 2
         {
@@ -33902,7 +34989,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Datos_Y" ;
             Text [ english_us ] = "data_Y" ;
             Text[ chinese_simplified ] = "data_Y";
-            Text[ russian ] = "__y";
+            Text[ russian ] = " Y";
             Text[ polish ] = "Dane_Y";
             Text[ japanese ] = "従属変数 y";
             Text[ chinese_traditional ] = "data_Y";
@@ -33914,6 +35001,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Veri_Y";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "data_Y";
+            Text[ thai ] = "ข้อมูล_Y";
         };
         String 5 // Description of Parameter 2
         {
@@ -33923,7 +35011,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Matrice dei dati Y." ;
             Text [ portuguese_brazilian ] = "Die Matrix der Y-Daten." ;
             Text [ portuguese ] = " a matriz ou o intervalo de clula de dados dependentes." ;
-            Text [ finnish ] = "Tietomatriisi Y." ;
+            Text [ finnish ] = "Tietotaulukko Y" ;
             Text [ danish ] = "Matrixen med Y-data." ;
             Text [ french ] = "La matrice des donnes Y." ;
             Text [ swedish ] = "Matrisen med y-data." ;
@@ -33931,7 +35019,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "matriz o rea de datos dependientes." ;
             Text [ english_us ] = "The Y data array." ;
             Text[ chinese_simplified ] = "数据组 Y 。";
-            Text[ russian ] = "    .";
+            Text[ russian ] = "  Y.";
             Text[ polish ] = "Macierz danych Y.";
             Text[ japanese ] = "従属変数 y のデータが入力されているセル範囲。";
             Text[ chinese_traditional ] = "數據組 Y 。";
@@ -33943,6 +35031,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Y verilerinin matrisi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Matriu de dades Y.";
+            Text[ thai ] = "แถวลำดับข้อมูล Y ";
         };
         String 6 // Name of Parameter 3
         {
@@ -33960,7 +35049,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Datos_X" ;
             Text [ english_us ] = "data_X" ;
             Text[ chinese_simplified ] = "data_X";
-            Text[ russian ] = "__x";
+            Text[ russian ] = " ";
             Text[ polish ] = "Dane_X";
             Text[ japanese ] = "独立変数 x";
             Text[ chinese_traditional ] = "data_X";
@@ -33972,6 +35061,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Veri_X";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "data_X";
+            Text[ thai ] = "ข้อมูล_X";
         };
         String 7 // Description of Parameter 3
         {
@@ -33981,7 +35071,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Matrice dei dati X." ;
             Text [ portuguese_brazilian ] = "Die Matrix der X-Daten." ;
             Text [ portuguese ] = " a matriz ou o intervalo de clula de dados independentes." ;
-            Text [ finnish ] = "Tietomatriisi X." ;
+            Text [ finnish ] = "Tietotaulukko X" ;
             Text [ danish ] = "Matrixen med X-data." ;
             Text [ french ] = "La matrice des donnes X." ;
             Text [ swedish ] = "Matrisen med x-data." ;
@@ -33989,7 +35079,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "matriz o rea de datos independiente." ;
             Text [ english_us ] = "The X data array." ;
             Text[ chinese_simplified ] = "数据组 X。";
-            Text[ russian ] = "    .";
+            Text[ russian ] = "  .";
             Text[ polish ] = "Macierz danych X.";
             Text[ japanese ] = "独立変数 x のデータが入力されているセル範囲。";
             Text[ chinese_traditional ] = "數據組 X。";
@@ -34001,6 +35091,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "X verilerinin matrisi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Matriu de dades X.";
+            Text[ thai ] = "แถวลำดับข้อมูล X ";
         };
     };
      // -=*# Resource for function ADRESSE #*=-
@@ -34022,7 +35113,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve una referencia de celda con formato de texto." ;
             Text [ english_us ] = "Returns the reference to a cell as text." ;
             Text[ chinese_simplified ] = "用文字来确定一个单元格的引用地址。";
-            Text[ russian ] = "          .";
+            Text[ russian ] = "        .";
             Text[ polish ] = "Okrela odwoanie do komrki jako tekst.";
             Text[ japanese ] = "数値で指定したセル参照を文字列で返します。";
             Text[ chinese_traditional ] = "確定一個當作文字的儲存格的參照。";
@@ -34033,7 +35124,8 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ korean ] = "셀에 대한 참조를 텍스트로 반환";
             Text[ turkish ] = "Bir hcreye alnan referans metin olarak belirler.";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Torna la referncia a una cella com a text.";
+            Text[ catalan ] = "Torna la referncia a una cel.la com a text.";
+            Text[ thai ] = "ส่งกลับการอ้างอิงไปยังเซลล์เป็นข้อความ";
         };
         ExtraData =
         {
@@ -34069,6 +35161,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Satr";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "fila";
+            Text[ thai ] = "แถว";
         };
         String 3 // Description of Parameter 1
         {
@@ -34078,7 +35171,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Numero di riga della cella." ;
             Text [ portuguese_brazilian ] = "Die Zeilennummer der Zelle." ;
             Text [ portuguese ] = " o nmero da linha a usar na referncia da clula." ;
-            Text [ finnish ] = "Solun rivinumero." ;
+            Text [ finnish ] = "Solun rivinumero" ;
             Text [ danish ] = "Cellens rkkenummer." ;
             Text [ french ] = "Le numro de ligne de la cellule." ;
             Text [ swedish ] = "Radnumret fr cellen." ;
@@ -34086,7 +35179,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Nmero de fila de la celda." ;
             Text [ english_us ] = "The row number of the cell." ;
             Text[ chinese_simplified ] = "单元格的行号";
-            Text[ russian ] = " ,    .";
+            Text[ russian ] = "  .";
             Text[ polish ] = "Numer wiersza komrki.";
             Text[ japanese ] = "セルの行番号。";
             Text[ chinese_traditional ] = "儲存格列號";
@@ -34097,7 +35190,8 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ korean ] = "셀의 행 번호";
             Text[ turkish ] = "Hcrenin satr numaras.";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Nombre de fila de la cella.";
+            Text[ catalan ] = "Nombre de fila de la cel.la.";
+            Text[ thai ] = "หมายเลขแถวของเซลล์";
         };
         String 4 // Name of Parameter 2
         {
@@ -34126,7 +35220,8 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ korean ] = "단";
             Text[ turkish ] = "Stun";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "COLUMN";
+            Text[ catalan ] = "columna";
+            Text[ thai ] = "คอลัมน์";
         };
         String 5 // Description of Parameter 2
         {
@@ -34136,7 +35231,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Numero di colonna della cella." ;
             Text [ portuguese_brazilian ] = "Die Spaltennummer der Zelle." ;
             Text [ portuguese ] = " o nmero da coluna a usar na referncia da clula." ;
-            Text [ finnish ] = "Solun sarakenumero." ;
+            Text [ finnish ] = "Solun sarakenumero" ;
             Text [ danish ] = "Cellens kolonnenummer." ;
             Text [ french ] = "Le numro de colonne de la cellule." ;
             Text [ swedish ] = "Cellens kolumnnummer." ;
@@ -34144,7 +35239,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Nmero de columna de la celda." ;
             Text [ english_us ] = "The column number of the cell." ;
             Text[ chinese_simplified ] = "单元格的列号";
-            Text[ russian ] = " ,    .";
+            Text[ russian ] = "  .";
             Text[ polish ] = "Numer kolumny komrki.";
             Text[ japanese ] = "セルの列番号。";
             Text[ chinese_traditional ] = "儲存格欄號";
@@ -34155,7 +35250,8 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ korean ] = "셀의 열 번호.";
             Text[ turkish ] = "Hcrenin stun numaras.";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Nombre de columna de la cella.";
+            Text[ catalan ] = "Nombre de columna de la cel.la.";
+            Text[ thai ] = "หมายเลขคอลัมน์ของเซลล์";
         };
         String 6 // Name of Parameter 3
         {
@@ -34165,7 +35261,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Assoluto" ;
             Text [ portuguese_brazilian ] = "ABS" ;
             Text [ portuguese ] = "ABS" ;
-            Text [ finnish ] = "ABS" ;
+            Text [ finnish ] = "ITSEISARVO" ;
             Text [ danish ] = "ABS" ;
             Text [ french ] = "ABS" ;
             Text [ swedish ] = "ABS" ;
@@ -34173,7 +35269,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "ABS" ;
             Text [ english_us ] = "ABS" ;
             Text[ chinese_simplified ] = "abs_num";
-            Text[ russian ] = "ABS";
+            Text[ russian ] = " ";
             Text[ polish ] = "MODU.LICZBY";
             Text[ japanese ] = "種類";
             Text[ chinese_traditional ] = "abs_num";
@@ -34185,6 +35281,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "ABS";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "ABS";
+            Text[ thai ] = "ABS";
         };
         String 7 // Description of Parameter 3
         {
@@ -34194,7 +35291,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Specifica se il riferimento da utilizzare  assoluto o relativo." ;
             Text [ portuguese_brazilian ] = "Gibt an, ob absolute oder relative Referenzierung verwendet wird." ;
             Text [ portuguese ] = "determina se ser usada uma referncia absoluta ou relativa." ;
-            Text [ finnish ] = "Mritt kytetnk kiinte (abs) vai suhteellista viitett." ;
+            Text [ finnish ] = "Mritt kytetnk absoluuttista vai suhteellista viitett." ;
             Text [ danish ] = "Specificerer om en absolut eller relativ referencetype skal bruges." ;
             Text [ french ] = "Indique le type de rfrence  utiliser (absolue ou relative)." ;
             Text [ swedish ] = "Anger om absolut eller relativ referens anvnds." ;
@@ -34202,7 +35299,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Especifica si la referencia usada es absoluta o relativa." ;
             Text [ english_us ] = "Specifies whether absolute or relative referencing is to be used." ;
             Text[ chinese_simplified ] = "指定使用的是绝对引用还是相对引用。";
-            Text[ russian ] = "  (  )  .";
+            Text[ russian ] = "  :   .";
             Text[ polish ] = "Okrela, czy zostan uyte wzgldne lub bezwzgldne adresy.";
             Text[ japanese ] = "絶対参照または相対参照のどちらを使用するか指定します。";
             Text[ chinese_traditional ] = "指定使用的是絕對參照還是相對參照。";
@@ -34210,10 +35307,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Geeft aan of er een absolute of relatieve verwijzing gebruikt wordt.";
             Text[ chinese_simplified ] = "指定使用的是绝对引用还是相对引用。";
             Text[ greek ] = "          .";
-            Text[ korean ] = "절대적 또는 상대적 참조의 사용 여부를 정의합니다.";
+            Text[ korean ] = "절대적 또는 상대적 참조의 사용 여부를 지정합니다.";
             Text[ turkish ] = "Mutlak ya da greceli referanstan hangisinin kullanlacan belirtir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Indica si s'ha d'utilitzar la referncia relativa o absoluta.";
+            Text[ thai ] = "ระบุว่าใช้การอ้างอิงแบบสัมพัทธ์หรือสัมบูรณ์";
         };
         String 8 // Name of Parameter 4
         {
@@ -34223,7 +35321,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Tabella" ;
             Text [ portuguese_brazilian ] = "Tabelle" ;
             Text [ portuguese ] = "Folha" ;
-            Text [ finnish ] = "lomake" ;
+            Text [ finnish ] = "taulukko" ;
             Text [ danish ] = "Regneark" ;
             Text [ french ] = "Feuille" ;
             Text [ swedish ] = "tabell" ;
@@ -34231,7 +35329,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "hoja" ;
             Text [ english_us ] = "sheet" ;
             Text[ chinese_simplified ] = "sheet_text";
-            Text[ russian ] = "_";
+            Text[ russian ] = "";
             Text[ polish ] = "Arkusz";
             Text[ japanese ] = "表名";
             Text[ chinese_traditional ] = "sheet_text";
@@ -34243,6 +35341,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Tablo";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "full";
+            Text[ thai ] = "แผ่นงาน";
         };
         String 9 // Description of Parameter 4
         {
@@ -34252,7 +35351,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Il nome del foglio elettronico del riferimento." ;
             Text [ portuguese_brazilian ] = "Der Tabellenname des Zellbezugs." ;
             Text [ portuguese ] = "especifica o nome da folha de clculo ou da folha da macro como referncia externa." ;
-            Text [ finnish ] = "Soluviitteen laskentataulukon nimi." ;
+            Text [ finnish ] = "Soluviitteen laskentataulukon nimi" ;
             Text [ danish ] = "Cellereferencens regnearksnavn." ;
             Text [ french ] = "Le nom de la feuille de calcul de la rfrence." ;
             Text [ swedish ] = "Tabellnamnet fr cellreferensen." ;
@@ -34260,7 +35359,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "El nombre de la hoja de clculo de la referencia de celda." ;
             Text [ english_us ] = "The spreadsheet name of the cell reference." ;
             Text[ chinese_simplified ] = "使用单元格引用的工作表名称。";
-            Text[ russian ] = ",   ,     .";
+            Text[ russian ] = "    .";
             Text[ polish ] = "Nazwa arkusza kalulacyjnego jako odwoania do komrki";
             Text[ japanese ] = "外部参照として使用する表の名前。";
             Text[ chinese_traditional ] = "儲存格參照的工作表名稱。";
@@ -34271,7 +35370,8 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ korean ] = "셀 참조의 스프레드시트 이름";
             Text[ turkish ] = "Hcre referansnn tablo ad.";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Nom del full de clcul de la referncia de cella.";
+            Text[ catalan ] = "Nom del full de clcul de la referncia de cel.la.";
+            Text[ thai ] = "ชื่อกระดาษคำนวณของการอ้างอิงเซลล์";
         };
     };
      // -=*# Resource for function BEREICHE #*=-
@@ -34294,7 +35394,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve el nmero de reas que pertenecen a un rea de celdas (mltiple)." ;
             Text [ english_us ] = "Returns the number of individual ranges that belong to a (multiple) range." ;
             Text[ chinese_simplified ] = "求得引用中包含的区域的单位数目。";
-            Text[ russian ] = "    ,  .";
+            Text[ russian ] = "   ,   . ";
             Text[ polish ] = "Okrela ilo pojedynczych obszarw, ktre tworz obszar zoony.";
             Text[ japanese ] = "セル範囲の個数を返します。";
             Text[ chinese_traditional ] = "求得參照中包含的區域的數目。";
@@ -34302,10 +35402,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Geeft het aantal bereiken in een (meervoudige) verwijzing.";
             Text[ chinese_simplified ] = "求得引用中包含的区域的单位数目。";
             Text[ greek ] = "          ()  .";
-            Text[ korean ] = "(다중)영역에 속하는 개별적인 영역의 수를 반환";
+            Text[ korean ] = "다중 범위에 속하는 개별적인 범위의 수를 원래대로 돌립니다.";
             Text[ turkish ] = "(oklu) arala dahil bireysel aralklarn saysn belirler.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna el nombre d'rees individuals que pertanyen a una rea (mltiple).";
+            Text[ thai ] = "ส่งกลับจำนวนของช่วงเฉพาะที่เป็นของ (หลาย) ช่วง";
         };
         ExtraData =
         {
@@ -34341,6 +35442,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Referans";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "referncia";
+            Text[ thai ] = "อ้างอิง";
         };
         String 3 // Description of Parameter 1
         {
@@ -34350,7 +35452,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Il riferimento a un'area (multipla)." ;
             Text [ portuguese_brazilian ] = "Der Bezug auf einen (Mehrfach-)Bereich." ;
             Text [ portuguese ] = " uma referncia a uma clula ou intervalo de clulas e pode referir-se a vrias reas." ;
-            Text [ finnish ] = "Viittaus moniosaiseen alueeseen." ;
+            Text [ finnish ] = "Viittaus moniosaiseen alueeseen" ;
             Text [ danish ] = "En reference til et (multi-)omrde." ;
             Text [ french ] = "La rfrence  une plage (multiple)." ;
             Text [ swedish ] = "Referensen till ett (multi-)omrde." ;
@@ -34358,7 +35460,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es la referencia a un rea mltiple." ;
             Text [ english_us ] = "The reference to a (multiple) range." ;
             Text[ chinese_simplified ] = "引用一个(多重)区域。";
-            Text[ russian ] = "     .";
+            Text[ russian ] = "     .";
             Text[ polish ] = "Odwoanie do obszaru zoonego.";
             Text[ japanese ] = "複数範囲の参照。";
             Text[ chinese_traditional ] = "參照一個(多重)區域。";
@@ -34366,10 +35468,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "De verwijzing naar een (meervoudig) bereik.";
             Text[ chinese_simplified ] = "引用一个(多重)区域。";
             Text[ greek ] = "    () .";
-            Text[ korean ] = "범위(다중 범위)에 대한 참조입니다.";
+            Text[ korean ] = "(다중) 범위에 대한 참조입니다.";
             Text[ turkish ] = "(oklu) arala referans.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Referncia a una rea (mltiple).";
+            Text[ thai ] = "อ้างอิงไปยัง (หลาย) ช่วง";
         };
     };
      // -=*# Resource for function WAHL #*=-
@@ -34392,7 +35495,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Elige un valor de una lista de hasta 30 argumentos." ;
             Text [ english_us ] = "Selects a value from a list of up to 30 value arguments." ;
             Text[ chinese_simplified ] = "从 30 个数值中选一个数值。";
-            Text[ russian ] = "     30 .";
+            Text[ russian ] = "    30 .";
             Text[ polish ] = "Wybiera warto z listy zawierajcej do 30 argumentw.";
             Text[ japanese ] = "インデックスを使って、引数リストの値(1~29)の中から特定の値を1つ選択します。";
             Text[ chinese_traditional ] = "從 30 個數值中選一個數值。";
@@ -34404,6 +35507,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "En fazla 30 deer arasndan bir deer seer.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Selecciona un valor d'una llista de fins a 30 arguments de valors.";
+            Text[ thai ] = "เลือกค่าจากรายการของอาร์กิวเมนต์ค่าถึง 30 ";
         };
         ExtraData =
         {
@@ -34427,7 +35531,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "ndice" ;
             Text [ english_us ] = "Index" ;
             Text[ chinese_simplified ] = "index";
-            Text[ russian ] = "_";
+            Text[ russian ] = "";
             Text[ polish ] = "Indeks";
             Text[ japanese ] = "インデックス";
             Text[ chinese_traditional ] = "index";
@@ -34439,6 +35543,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "ndis";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "ndex";
+            Text[ thai ] = "ดัชนี";
         };
         String 3 // Description of Parameter 1
         {
@@ -34449,7 +35554,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "L'indice dei valori (da 1 a 30) da selezionare." ;
             Text [ portuguese_brazilian ] = "Der Index des Wertes (1..30), der ausgew?hlt wird." ;
             Text [ portuguese ] = "determina qual o argumento de valor (1..30) que ser seleccionado." ;
-            Text [ finnish ] = "Valitun arvon (1 - 30) hakemisto." ;
+            Text [ finnish ] = "Valitun arvon (1 - 30) hakemisto" ;
             Text [ danish ] = "Indekset til vrdien (1..30) som skal vlges." ;
             Text [ french ] = "L'indice de la valeur (1...30) qui sera slectionne." ;
             Text [ swedish ] = "Index fr vrdet (1..30) som vljs ut." ;
@@ -34457,7 +35562,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "especifica el argumento de valor que se selecciona." ;
             Text [ english_us ] = "The index of the value (1..30) selected." ;
             Text[ chinese_simplified ] = "要选择数值1至30个的索引。";
-            Text[ russian ] = "  -    1  30.";
+            Text[ russian ] = "      1  30.";
             Text[ polish ] = "Okrela, ktre wartoci argumentu (1..30) zostan wybrane.";
             Text[ japanese ] = "選択した値(1~30)のインデックス。";
             Text[ chinese_traditional ] = "要選擇的數值1至30的索引。";
@@ -34469,6 +35574,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Seilen deerin (1..30) indisi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "ndex del valor seleccionat (1..30).";
+            Text[ thai ] = "เลือกดัชนีของค่า (1..30) ";
         };
         String 4 // Name of Parameter 2
         {
@@ -34478,26 +35584,27 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Valore " ;
             Text [ portuguese_brazilian ] = "Wert " ;
             Text [ portuguese ] = "Valor " ;
-            Text [ finnish ] = "arvo" ;
+            Text [ finnish ] = "arvo " ;
             Text [ danish ] = "Vrdi " ;
             Text [ french ] = "Valeur  " ;
             Text [ swedish ] = "vrde  " ;
-            Text [ dutch ] = "Waarde  " ;
+            Text [ dutch ] = "Waarde" ;
             Text [ spanish ] = "valor " ;
             Text [ english_us ] = "value " ;
             Text[ chinese_simplified ] = "value ";
-            Text[ russian ] = "  ";
+            Text[ russian ] = " ";
             Text[ polish ] = "Warto ";
             Text[ japanese ] = "値 ";
             Text[ chinese_traditional ] = "value ";
             Text[ arabic ] = " ";
-            Text[ dutch ] = "Waarde  ";
+            Text[ dutch ] = "Waarde";
             Text[ chinese_simplified ] = "value ";
             Text[ greek ] = " ";
             Text[ korean ] = "값 ";
             Text[ turkish ] = "Deer ";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "valor ";
+            Text[ thai ] = "ค่า ";
         };
         String 5 // Description of Parameter 2
         {
@@ -34508,7 +35615,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Elenco di argomenti (da 1 a 30) da cui viene estratto un valore." ;
             Text [ portuguese_brazilian ] = "Wert 1; Wert 2;... Die Liste der Argumente, aus der ein Wert ausgew?hlt wird." ;
             Text [ portuguese ] = "Valor1; valor2 ... so de 1 a 29 argumentos de valor a partir dos quais SELECCIONAR escolhe um valor ou uma aco a ser realizada com base no nm_ndice." ;
-            Text [ finnish ] = "Arvo 1, arvo 2 ja niin edelleen Argumenttiluettelo, josta arvo valitaan." ;
+            Text [ finnish ] = "Arvo 1; arvo 2;.. Argumenttiluettelo, josta arvo valitaan." ;
             Text [ danish ] = "Vrdi 1; vrdi 2; ... listen af argumenter som en vrdi skal vlges fra." ;
             Text [ french ] = "Valeur 1, valeur 2, ... constituent la liste des arguments dans laquelle la fonction slectionne une valeur." ;
             Text [ swedish ] = "vrde 1; vrde 2;... Argumentlistan frn vilken ett vrde vljs ut." ;
@@ -34516,7 +35623,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Valor 1: Valor 2; ... es la lista de argumentos de la cual se desea elegir un valor." ;
             Text [ english_us ] = "Value 1, value 2,... The list of arguments from which a value is chosen." ;
             Text[ chinese_simplified ] = "数值 1;  数值 2;... 用于进行数据选择的数据表。";
-            Text[ russian ] = " 1;  2;...  1  29 -,   ,  _,     .";
+            Text[ russian ] = " 1;  2;...  ,    .";
             Text[ polish ] = "Warto 1; Warto 2;... Lista argumentw, z ktrej ma zosta wybrana warto.";
             Text[ japanese ] = "値 1;値 2;...は引数リストの項目で、インデックスで選択する値。";
             Text[ chinese_traditional ] = "數值 1;  數值 2;... 用於選擇數值的資料表。";
@@ -34528,6 +35635,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Deer 1; deer 2;... Deer seimi yaplacak deiken listesi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor 1, valor 2,... La llista d'arguments d'entre els quals s'escull un valor.";
+            Text[ thai ] = "ค่า 1, ค่า 2,... รายการอาร์กิวเมนต์จากค่าที่เลือก";
         };
     };
      // -=*# Resource for function SPALTE #*=-
@@ -34549,7 +35657,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve el nmero interno de columna de una referencia dada." ;
             Text [ english_us ] = "Returns the internal column number of a reference." ;
             Text[ chinese_simplified ] = "确定一个引用的内部列号。";
-            Text[ russian ] = "  ,    .";
+            Text[ russian ] = "    .";
             Text[ polish ] = "Okrela wewntrzny numer kolumny podanego odwoania.";
             Text[ japanese ] = "指定した範囲の列番号を返します。";
             Text[ chinese_traditional ] = "確定一個參照的內部欄號。";
@@ -34561,6 +35669,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Referansn i stun numarasn bulur.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna el nmero intern de columna d'una referncia.";
+            Text[ thai ] = "ส่งกลับจำนวนคอลัมน์ภายในของการอ้างอิง";
         };
         ExtraData =
         {
@@ -34596,6 +35705,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Referans";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Referncia";
+            Text[ thai ] = "อ้างอิง";
         };
         String 3 // Description of Parameter 1
         {
@@ -34605,7 +35715,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Il riferimento a una cella o a un'area." ;
             Text [ portuguese_brazilian ] = "Der Bezug auf eine Zelle oder einen Bereich." ;
             Text [ portuguese ] = " a referncia de clulas ou intervalos para os quais se deseja encontrar o nmero de colunas." ;
-            Text [ finnish ] = "Viittaus soluun tai solualueeseen." ;
+            Text [ finnish ] = "Viittaus soluun tai solualueeseen" ;
             Text [ danish ] = "Referencen til en celle eller et omrde." ;
             Text [ french ] = "La rfrence  une cellule ou une plage." ;
             Text [ swedish ] = "Referensen till en cell eller ett omrde." ;
@@ -34613,7 +35723,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es la referencia a una celda o un rea de celdas cuyo nmero de columna se desea conocer." ;
             Text [ english_us ] = "The reference to a cell or a range." ;
             Text[ chinese_simplified ] = "要获得其列标的单元格或单元格区域。";
-            Text[ russian ] = "  ,     .";
+            Text[ russian ] = "    .";
             Text[ polish ] = "Odwoanie do komrki lub obszaru.";
             Text[ japanese ] = "列番号を調べるセルまたはセル範囲。";
             Text[ chinese_traditional ] = "要獲得其列標的儲存格或儲存格區域。";
@@ -34624,7 +35734,8 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ korean ] = "셀이나 범위에 대한 참조입니다.";
             Text[ turkish ] = "Hcre ya da arala alnan referans.";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Referncia a una cella o a una rea.";
+            Text[ catalan ] = "Referncia a una cel.la o a una rea.";
+            Text[ thai ] = "อ้างอิงไปยังเซลล์หรือช่วง";
         };
     };
      // -=*# Resource for function ZEILE #*=-
@@ -34646,7 +35757,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve el nmero de fila de una referencia." ;
             Text [ english_us ] = "Defines the internal row number of a reference." ;
             Text[ chinese_simplified ] = "给定引用的行号。";
-            Text[ russian ] = "   .";
+            Text[ russian ] = "    .";
             Text[ polish ] = "Okrela wewntrzny numer wiersza w odwoaniu.";
             Text[ japanese ] = "指定したセルまたはセル範囲の行番号を返します。";
             Text[ chinese_traditional ] = "指定參照的列號。";
@@ -34654,10 +35765,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Geeft als resultaat het rijnummer van een verwijzing.";
             Text[ chinese_simplified ] = "给定引用的行号。";
             Text[ greek ] = "       .";
-            Text[ korean ] = "참조의 내부 행 번호를 결정";
+            Text[ korean ] = "참조의 내부 행 번호를 지정";
             Text[ turkish ] = "Referansn i satr numarasn belirler.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Defineix el nmero intern de fila interna d'una referncia.";
+            Text[ thai ] = "กำหนดจำนวนแถวภายในของการอ้างอิง";
         };
         ExtraData =
         {
@@ -34693,6 +35805,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Referans";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "referncia";
+            Text[ thai ] = "อ้างอิง";
         };
         String 3 // Description of Parameter 1
         {
@@ -34702,7 +35815,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Il riferimento a una cella o a un'area." ;
             Text [ portuguese_brazilian ] = "Der Bezug auf eine Zelle oder einen Bereich." ;
             Text [ portuguese ] = " a clula ou intervalo de clulas para os quais deseja obter o nmero de linha." ;
-            Text [ finnish ] = "Viittaus soluun tai solualueeseen." ;
+            Text [ finnish ] = "Viittaus soluun tai solualueeseen" ;
             Text [ danish ] = "Referencen til en celle eller et omrde." ;
             Text [ french ] = "La rfrence  une cellule ou une plage." ;
             Text [ swedish ] = "Referensen till en cell eller ett omrde." ;
@@ -34710,7 +35823,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es la celda o rea de celdas de los que se desea conocer el nmero de fila." ;
             Text [ english_us ] = "The reference to a cell or a range." ;
             Text[ chinese_simplified ] = "是需要得到其行号的单元格或单元格区域。";
-            Text[ russian ] = "   ,     .";
+            Text[ russian ] = "    .";
             Text[ polish ] = "Odwoanie do komrki lub obszaru.";
             Text[ japanese ] = "行番号を調べるセルまたはセル範囲。";
             Text[ chinese_traditional ] = "是需要得到其欄號的儲存格或儲存格區域。";
@@ -34721,7 +35834,8 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ korean ] = "셀 또는 범위에 대한 참조입니다.";
             Text[ turkish ] = "Hcre ya da aralk referans.";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Referncia a una cella o a una rea.";
+            Text[ catalan ] = "Referncia a una cel.la o a una rea.";
+            Text[ thai ] = "อ้างอิงไปยังเซลล์หรือช่วง";
         };
     };
      // -=*# Resource for function TABELLE #*=-
@@ -34741,7 +35855,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ french ] = "Dtermine le numro de feuille interne d'une rfrence ou d'une chane de caractres." ;
             Text [ dutch ] = "Bepaalt het interne werkbladnummer van een verwijzing of een tekenreeks." ;
             Text[ chinese_simplified ] = "确定一个引用或一个字串的工作表号码。";
-            Text[ russian ] = "       .";
+            Text[ russian ] = "    .";
             Text[ polish ] = "Wyznacza wewntrzny numer tabeli odwoania lub cigu znakw.";
             Text[ japanese ] = "参照または文字列からドキュメント内での表番号を返します。";
             Text[ chinese_traditional ] = "確定一個參照或一個字串的工作表號碼。";
@@ -34753,7 +35867,8 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Referans ya da karakter zincirinin i tablo numarasn verir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna el nmero intern de full d'una referncia o una cadena.";
-            Text[ finnish ] = "Mritt viitteen tai merkkijonon sisisen lomakenumeron.";
+            Text[ finnish ] = "Mritt viitteen tai merkkijonon sisisen taulukkonumeron.";
+            Text[ thai ] = "ส่งกลับจำนวนแผ่นงานภายในของการอ้างอิงหรือสายอักขระ";
         };
         ExtraData =
         {
@@ -34787,7 +35902,8 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Referans";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "referncia";
-            Text[ finnish ] = "viite";
+            Text[ finnish ] = "viittaus";
+            Text[ thai ] = "อ้างอิง";
         };
         String 3 // Description of Parameter 1
         {
@@ -34803,7 +35919,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ dutch ] = "De verwijzing naar een cel, een bereik of naar de tekenreeks van een werkbladnaam." ;
             Text [ portuguese ] = "A referncia a uma clula ou intervalo de clulas ou a srie de caracteres do nome da folha." ;
             Text[ chinese_simplified ] = "对一个单元格或一个区域或一个工作表名称字串的引用。";
-            Text[ russian ] = "  ,      .";
+            Text[ russian ] = "  ,       .";
             Text[ polish ] = "Odwoanie do komrki lub obszaru lub cig znakw nazwy arkusza.";
             Text[ japanese ] = "表にあるセル、セル範囲、または文字列への参照。";
             Text[ chinese_traditional ] = "參照一個工作表的儲存格或一個區域或一個字串。";
@@ -34814,8 +35930,9 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ korean ] = "셀이나 범위 또는 시트 이름의 문자열에 대한 참조입니다.";
             Text[ turkish ] = "Hcre ya da aralk ya da bir tablo adnn karakter zincirine referans.";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "La referncia a una cella o a una rea, o a la cadena de carcters d'un nom de full.";
-            Text[ finnish ] = "Viittaus lomakenimen soluun, solualueeseen tai lomakenimen merkkijonoon.";
+            Text[ catalan ] = "La referncia a una cel.la o a una rea, o a la cadena de carcters d'un nom de full.";
+            Text[ finnish ] = "Viittaus taulukkonimen soluun, solualueeseen tai taulukkonimen merkkijonoon.";
+            Text[ thai ] = "อ้างอิงไปยังเซลล์หรือช่วงหรือสายอักขระของชื่อแผ่นงาน";
         };
     };
      // -=*# Resource for function SPALTEN #*=-
@@ -34829,7 +35946,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Restituisce il numero di colonne in una matrice o in un riferimento." ;
             Text [ portuguese_brazilian ] = "Bestimmt die Anzahl der Spalten eines Bezugs oder einer Matrix." ;
             Text [ portuguese ] = "Devolve o nmero de colunas numa referncia ou matriz." ;
-            Text [ finnish ] = "Palauttaa matriisin tai viitteen sarakkeiden mrn." ;
+            Text [ finnish ] = "Palauttaa taulukon tai viitteen sarakkeiden mrn." ;
             Text [ danish ] = "Bestemmer antallet af kolonner i en reference eller en matrix." ;
             Text [ french ] = "Renvoie le nombre de colonnes d'une rfrence ou d'une matrice." ;
             Text [ swedish ] = "Bestmmer antalet kolumner fr en referens eller en matris." ;
@@ -34837,7 +35954,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Determina el nmero de columnas de una referencia o una matriz." ;
             Text [ english_us ] = "Returns the number of columns in an array or reference." ;
             Text[ chinese_simplified ] = "求得一个引用或数组(矩阵)的列数目。";
-            Text[ russian ] = "      .";
+            Text[ russian ] = "     .";
             Text[ polish ] = "Wyznacza liczb kolumn odwoania lub macierzy.";
             Text[ japanese ] = "指定範囲の列数を返します。";
             Text[ chinese_traditional ] = "求得一個參照或數組的欄位數目。";
@@ -34849,6 +35966,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Referans ya da matrisin stun saysn belirler.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna el nombre de columnes d'una matriu o una referncia.";
+            Text[ thai ] = "ส่งกลับจำนวนคอลัมน์ในแถวลำดับหรือการอ้างอิง";
         };
         ExtraData =
         {
@@ -34864,12 +35982,12 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Matrice" ;
             Text [ portuguese_brazilian ] = "Matrix" ;
             Text [ portuguese ] = "Matriz" ;
-            Text [ finnish ] = "matriisi" ;
+            Text [ finnish ] = "taulukko" ;
             Text [ danish ] = "Matrix" ;
             Text [ french ] = "Matrice" ;
             Text [ swedish ] = "matris" ;
             Text [ dutch ] = "Matrix" ;
-            Text [ spanish ] = "matriz" ;
+            Text [ spanish ] = "Matriz" ;
             Text [ english_us ] = "array" ;
             Text[ chinese_simplified ] = "array";
             Text[ russian ] = "";
@@ -34884,6 +36002,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Matris";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "matriu";
+            Text[ thai ] = "แถวลำดับ";
         };
         String 3 // Description of Parameter 1
         {
@@ -34893,7 +36012,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "La matrice (il riferimenti) di cui si vuole determinare il numero di colonne." ;
             Text [ portuguese_brazilian ] = "Die Matrix (der Bezug), deren Spaltenanzahl bestimmt wird." ;
             Text [ portuguese ] = " uma matriz, frmula matricial ou uma referncia a um intervalo de clulas cujo nmero de colunas deseja obter." ;
-            Text [ finnish ] = "Matriisi (viite), jonka sarakkeisen mr lasketaan." ;
+            Text [ finnish ] = "Taulukko (viite), jonka sarakkeisen mr lasketaan." ;
             Text [ danish ] = "Den matrix (den reference) hvis kolonneantal skal bestemmes." ;
             Text [ french ] = "La matrice (rfrence) dont vous voulez obtenir le nombre de colonnes." ;
             Text [ swedish ] = "Matrisen (referensen) vars kolumnantal bestms." ;
@@ -34901,7 +36020,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es la matriz (la referencia), cuyo nmero de columnas se desea determinar." ;
             Text [ english_us ] = "The array (reference) for which the number of columns is to be determined." ;
             Text[ chinese_simplified ] = "要确定其列数的单元格区域(引用)。";
-            Text[ russian ] = " (   ),     .";
+            Text[ russian ] = " (),     .";
             Text[ polish ] = "Macierz (odwoanie), ktrej liczba kolumn ma zosta obliczona.";
             Text[ japanese ] = "列数を検査する範囲。";
             Text[ chinese_traditional ] = "要計算其欄數的數組或儲存格區域參照。";
@@ -34913,6 +36032,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Stun says belirlenecek matris (referans).";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Matriu (referncia) el nombre de columnes de la qual s'ha de determinar.";
+            Text[ thai ] = "แถวลำดับ (อ้างอิง) สำหรับจำนวนคอลัมน์ที่กำหนดมา";
         };
     };
      // -=*# Resource for function ZEILEN #*=-
@@ -34926,7 +36046,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Restituisce il numero di righe in un riferimento o in una matrice." ;
             Text [ portuguese_brazilian ] = "Bestimmt die Anzahl der Zeilen eines Bezugs oder einer Matrix." ;
             Text [ portuguese ] = "Devolve o nmero de linhas numa referncia ou matriz." ;
-            Text [ finnish ] = "Palauttaa matriisin tai viitteen rivien mrn." ;
+            Text [ finnish ] = "Palauttaa taulukon tai viitteen rivien mrn." ;
             Text [ danish ] = "Bestemmer antallet af rkker i en reference eller en matrix." ;
             Text [ french ] = "Donne le nombre de lignes d'une rfrence ou d'une matrice." ;
             Text [ swedish ] = "Bestmmer antalet rader i en referens eller matris." ;
@@ -34934,7 +36054,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve el nmero de filas de una referencia o matriz." ;
             Text [ english_us ] = "Returns the number of rows in a reference or array." ;
             Text[ chinese_simplified ] = "给定引用或数组的行数。";
-            Text[ russian ] = "      .";
+            Text[ russian ] = "     .";
             Text[ polish ] = "Wyznacza liczb wierszy w adresie lub macierzy.";
             Text[ japanese ] = "指定範囲の行数を返します。";
             Text[ chinese_traditional ] = "指定參照或數組的列數。";
@@ -34946,6 +36066,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Referans ya da matris satr saysn belirler.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna el nombre de files d'una referncia o matriu.";
+            Text[ thai ] = "ส่งกลับจำนวนแถวในการอ้างอิงหรือแถวลำดับ";
         };
         ExtraData =
         {
@@ -34961,12 +36082,12 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Matrice" ;
             Text [ portuguese_brazilian ] = "Matrix" ;
             Text [ portuguese ] = "Matriz" ;
-            Text [ finnish ] = "matriisi" ;
+            Text [ finnish ] = "taulukko" ;
             Text [ danish ] = "Matrix" ;
             Text [ french ] = "Matrice" ;
             Text [ swedish ] = "matris" ;
             Text [ dutch ] = "Matrix" ;
-            Text [ spanish ] = "matriz" ;
+            Text [ spanish ] = "Matriz" ;
             Text [ english_us ] = "array" ;
             Text[ chinese_simplified ] = "array";
             Text[ russian ] = "";
@@ -34981,6 +36102,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Matris";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "matriu";
+            Text[ thai ] = "แถวลำดับ";
         };
         String 3 // Description of Parameter 1
         {
@@ -34990,7 +36112,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "La matrice (il riferimento) di cui si vuole determinare il numero di righe." ;
             Text [ portuguese_brazilian ] = "Die Matrix (der Bezug), deren Zeilenanzahl bestimmt wird." ;
             Text [ portuguese ] = " uma matriz, uma frmula matricial ou uma referncia a um intervalo de clulas cujo nmero de linhas deseja obter." ;
-            Text [ finnish ] = "Matriisi (viite), jonka rivien mr lasketaan." ;
+            Text [ finnish ] = "Taulukko (viite), jonka rivien mr lasketaan." ;
             Text [ danish ] = "Den matrix (den reference) hvis rkkeantal skal bestemmes." ;
             Text [ french ] = "La matrice (rfrence) dont vous voulez obtenir le nombre de lignes." ;
             Text [ swedish ] = "Matrisen (referensen) vars radantal bestms." ;
@@ -34998,7 +36120,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es una matriz, frmula matricial o referencia a un rea de celdas de la cual se desea saber el nmero de filas." ;
             Text [ english_us ] = "The array (reference) for which the number of rows is to be determined." ;
             Text[ chinese_simplified ] = "是需要得到其行号的矩阵或引用的单元格区域。";
-            Text[ russian ] = " ( )   ,     .";
+            Text[ russian ] = " (),     .";
             Text[ polish ] = "Macierz (odwoanie), dla ktrej zostanie okrelona liczba wierszy.";
             Text[ japanese ] = "行数を検査する範囲。";
             Text[ chinese_traditional ] = "是需要得到其列號的矩陣或參照的儲存格區域。";
@@ -35010,6 +36132,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Satr says belirlenen matris (referans).";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Matriu (referncia) el nombre de files de la qual s'ha de determinar.";
+            Text[ thai ] = "แถวลำดับ (อ้างอิง) สำหรับจำนวนแถวที่กำหนดมา";
         };
     };
      // -=*# Resource for function TABELLEN #*=-
@@ -35026,22 +36149,23 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Restituisce il numero di tabelle di un riferimento. Se non  stato digitato nessun parametro, verr restituito il numero delle tabelle del documento." ;
             Text [ spanish ] = "Determina la cantidad de hojas de una referencia. Si no existe parmetros, la cantidad de hojas de un documento ser devuelta." ;
             Text [ french ] = "Dtermine le nombre de feuilles d'une rfrence. Si aucun paramtre n'est indiqu, le nombre total des feuilles du document sera renvoy." ;
-            Text [ dutch ] = "Bepaalt het aantal werkbladen van een verwijzing. Is er geen parameter aangegeven, dan wordt het aantal werkbladen van het document teruggegeven." ;
+            Text [ dutch ] = "Bepaalt het aantal werkbladen van een verwijzing. Is er geen parameter opgegeven, dan wordt het aantal werkbladen van het document teruggegeven." ;
             Text [ portuguese ] = "Devolve o nmero de folhas da referncia especificada. Se no forneceu quaisquer parmetros, ser-lhe- devolvido o nmero de folhas do documento." ;
             Text[ chinese_simplified ] = "确定一个引用的工作表数目。如果没有给定参数,\n那么反馈的是文档的工作表总数。";
-            Text[ russian ] = "    .    ,     .";
+            Text[ russian ] = "    .     ,       .";
             Text[ polish ] = "Okrela liczb tabel odwoa. Jeli nie podano parametru, zostanie zwrcona liczba tabel w dokumencie.";
             Text[ japanese ] = "参照の表数を数えます。参照を指定しない場合は、そのドキュメントの表数が戻ります。";
             Text[ chinese_traditional ] = "確定一個參照的工作表數目。如果沒有指定參數﹐那麼傳回文件的工作表總數。";
             Text[ arabic ] = "    .     ɡ       .";
-            Text[ dutch ] = "Bepaalt het aantal werkbladen van een verwijzing. Is er geen parameter aangegeven, dan wordt het aantal werkbladen van het document teruggegeven.";
+            Text[ dutch ] = "Bepaalt het aantal werkbladen van een verwijzing. Is er geen parameter opgegeven, dan wordt het aantal werkbladen van het document teruggegeven.";
             Text[ chinese_simplified ] = "确定一个引用的工作表数目。如果没有给定参数,\n那么反馈的是文档的工作表总数。";
             Text[ greek ] = "       .    ,      ..";
-            Text[ korean ] = "참조의 표 개수를 반환. 정해진 파라미터가 없으면 문서에 있는 표의 수가 반환됩니다.";
+            Text[ korean ] = "참조의 시트 개수를 되돌립니다. 정해진 매개 변수가 없으면 문서에 있는 시트의 수가 원래대로 됩니다.";
             Text[ turkish ] = "Referansn tablo saysn belirler. Parametre girilmemise, belgedeki toplam tablo says verilir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna el nombre de fulls d'una referncia donada. Si no s'ha introdut cap parmetre, es torna el nombre total de fulls del document.";
-            Text[ finnish ] = "Palauttaa mritetyn viitteen lomakkeiden mrn. Jos parametri ei mritet, toiminto palauttaa asiakirjan lomakkeiden kokonaismrn.";
+            Text[ finnish ] = "Palauttaa mritetyn viitteen taulukoiden mrn. Jos parametri ei mritet, funktio palauttaa asiakirjan taulukoiden kokonaismrn.";
+            Text[ thai ] = "ส่งกลับจำนวนแผ่นงานของการอ้างอิงที่ให้มา  ถ้าไม่ใส่พารามิเตอร์  จะส่งกลับจำนวนแผ่นงานทั้งหมดในเอกสาร";
         };
         ExtraData =
         {
@@ -35076,6 +36200,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "referncia.";
             Text[ finnish ] = "viite";
+            Text[ thai ] = "อ้างอิง";
         };
         String 3 // Description of Parameter 1
         {
@@ -35091,7 +36216,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ dutch ] = "De verwijzing naar een cel of een bereik." ;
             Text [ portuguese ] = "A referncia de uma clula ou de um intervalo de clulas" ;
             Text[ chinese_simplified ] = "一个单元格引用或一个区域引用。";
-            Text[ russian ] = "     ,     .";
+            Text[ russian ] = "     .";
             Text[ polish ] = "Odwoanie do komrki lub obszaru.";
             Text[ japanese ] = "セルまたはセル範囲の参照。";
             Text[ chinese_traditional ] = "一個儲存格或一個區域的參照。";
@@ -35102,8 +36227,9 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ korean ] = "셀이나 범위에 대한 참조입니다.";
             Text[ turkish ] = "Hcre ya da arala referans.";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Referncia a una cella o a una rea.";
-            Text[ finnish ] = "Viittaus soluun tai solualueeseen.";
+            Text[ catalan ] = "Referncia a una cel.la o a una rea.";
+            Text[ finnish ] = "Viittaus soluun tai solualueeseen";
+            Text[ thai ] = "อ้างอิงไปยังเซลล์หรือช่วง";
         };
     };
      // -=*# Resource for function WVERWEIS #*=-
@@ -35126,7 +36252,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Busca por filas y devuelve el valor de la celda indicada." ;
             Text [ english_us ] = "Horizontal search and reference to the cells located below." ;
             Text[ chinese_simplified ] = "水平方向搜寻某个单元格并引用其下方的单元格。";
-            Text[ russian ] = "      ,  .";
+            Text[ russian ] = "       . ";
             Text[ polish ] = "Wyszukiwanie poziome i odsyacz do komrek powyej i poniej.";
             Text[ japanese ] = "範囲内の1行目で列を特定し、その列の指定行のセルの値を返します。";
             Text[ chinese_traditional ] = "水平方向搜尋某一儲存格並引用其下方的儲存格。";
@@ -35137,7 +36263,8 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ korean ] = "그 아래 위치한 셀에 대한 수평 검색과 참조입니다.";
             Text[ turkish ] = "Altnda bulunan hcrelere yatay referans ve arama.";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Referncia i cerca horitzontal a les celles ubicades a sota.";
+            Text[ catalan ] = "Referncia i cerca horitzontal a les cel.les ubicades a sota.";
+            Text[ thai ] = "ค้นหาตามแนวนอนและอ้าอิงไปยังเซลล์ข้างล่าง";
         };
         ExtraData =
         {
@@ -35157,7 +36284,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ danish ] = "Opslagsvrdi" ;
             Text [ french ] = "Critre_rech" ;
             Text [ swedish ] = "skkriterium" ;
-            Text [ dutch ] = "Zoeklcriterium" ;
+            Text [ dutch ] = "Zoekcriterium" ;
             Text [ spanish ] = "valor_buscado" ;
             Text [ english_us ] = "search_criteria" ;
             Text[ chinese_simplified ] = "search_criteria";
@@ -35166,13 +36293,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ japanese ] = "検索値";
             Text[ chinese_traditional ] = "search_criteria";
             Text[ arabic ] = "Search_criteria";
-            Text[ dutch ] = "Zoeklcriterium";
+            Text[ dutch ] = "Zoekcriterium";
             Text[ chinese_simplified ] = "search_criteria";
             Text[ greek ] = " ";
             Text[ korean ] = "검색_기준";
             Text[ turkish ] = "Arama lt";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "search_criteria";
+            Text[ thai ] = "ค้นหา_เกณฑ์";
         };
         String 3 // Description of Parameter 1
         {
@@ -35182,7 +36310,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Valore da ricercare nella prima riga della tabella." ;
             Text [ portuguese_brazilian ] = "Der Wert, nach dem in der ersten Zeile gesucht wird." ;
             Text [ portuguese ] = " o valor a ser localizado na primeira linha da tabela." ;
-            Text [ finnish ] = "Ensimmisest rivist etsittv arvo." ;
+            Text [ finnish ] = "Ensimmisest rivist etsittv arvo" ;
             Text [ danish ] = "Den vrdi som der skal sges efter i frste rkke." ;
             Text [ french ] = "La valeur  rechercher dans la premire ligne." ;
             Text [ swedish ] = "Vrdet som sks i frsta raden." ;
@@ -35190,7 +36318,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es el valor que se busca en la primera fila de matriz_buscar_en." ;
             Text [ english_us ] = "The value to be found in the first row." ;
             Text[ chinese_simplified ] = "要在数据表的第一行中查找的数值。";
-            Text[ russian ] = ",       ..";
+            Text[ russian ] = ",       .";
             Text[ polish ] = "Warto, ktra jest szukana w pierwszym wierszu tabeli.";
             Text[ japanese ] = "1行目で検索する値。";
             Text[ chinese_traditional ] = "要在數據表的第一列中查找的數值。";
@@ -35202,6 +36330,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Birinci satrda aranacak deer.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor que s'ha de trobar en la primera fila.";
+            Text[ thai ] = "พบค่าในแถวแรก";
         };
         String 4 // Name of Parameter 2
         {
@@ -35211,15 +36340,15 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Matrice" ;
             Text [ portuguese_brazilian ] = "Matrix" ;
             Text [ portuguese ] = "Matriz_tabela" ;
-            Text [ finnish ] = "matriisi" ;
+            Text [ finnish ] = "taulukko" ;
             Text [ danish ] = "Matrix" ;
             Text [ french ] = "Matrice" ;
             Text [ swedish ] = "matris" ;
             Text [ dutch ] = "Matrix" ;
-            Text [ spanish ] = "matriz_buscar_en" ;
+            Text [ spanish ] = "Matriz" ;
             Text [ english_us ] = "array" ;
             Text[ chinese_simplified ] = "table_array";
-            Text[ russian ] = " ";
+            Text[ russian ] = "";
             Text[ polish ] = "Macierz";
             Text[ japanese ] = "範囲";
             Text[ chinese_traditional ] = "table_array";
@@ -35231,6 +36360,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Matris";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "matriu";
+            Text[ thai ] = "แถวลำดับ";
         };
         String 5 // Description of Parameter 2
         {
@@ -35241,7 +36371,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "La matrice o l'intervallo di celle per il riferimento." ;
             Text [ portuguese_brazilian ] = "Die Matrix oder der Bereich f? den Verweis." ;
             Text [ portuguese ] = " uma tabela de informaes para a procura dos dados." ;
-            Text [ finnish ] = "Matriisi tai viitealue." ;
+            Text [ finnish ] = "Taulukko tai viitealue" ;
             Text [ danish ] = "Matrixen eller omrdet for henvisningen." ;
             Text [ french ] = "La matrice ou la plage pour le renvoi." ;
             Text [ swedish ] = "Matrisen eller omrdet fr hnvisningen." ;
@@ -35249,7 +36379,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es una tabla de informacin en la que se buscan los datos." ;
             Text [ english_us ] = "The array or the range for the reference." ;
             Text[ chinese_simplified ] = "是矩阵数据组或用来搜寻数据的区域。";
-            Text[ russian ] = "  ,     .";
+            Text[ russian ] = "    .";
             Text[ polish ] = "Macierz lub obszar dla odsyacza.";
             Text[ japanese ] = "関数の対象となる範囲。";
             Text[ chinese_traditional ] = "數據組或用來參照數據的區域。";
@@ -35261,6 +36391,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Referans matrisi ya da aral.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Matriu o rea per a la referncia.";
+            Text[ thai ] = "แถวลำดับของช่วงสำหรับการอ้างอิง";
         };
         String 6 // Name of Parameter 3
         {
@@ -35278,7 +36409,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "ndice" ;
             Text [ english_us ] = "Index" ;
             Text[ chinese_simplified ] = "Index";
-            Text[ russian ] = "_";
+            Text[ russian ] = "";
             Text[ polish ] = "Indeks";
             Text[ japanese ] = "行番号";
             Text[ chinese_traditional ] = "Index";
@@ -35290,6 +36421,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "ndis";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "ndex";
+            Text[ thai ] = "ดัชนี";
         };
         String 7 // Description of Parameter 3
         {
@@ -35299,7 +36431,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "L'indice di cella nella matrice." ;
             Text [ portuguese_brazilian ] = "Zeilenindex in der Matrix." ;
             Text [ portuguese ] = " o nmero da linha em matriz_tabela, da qual so retirados os valores correspondentes." ;
-            Text [ finnish ] = "Matriisin rivihakemisto." ;
+            Text [ finnish ] = "Taulukon rivihakemisto" ;
             Text [ danish ] = "Rkkeindeks i matrixen." ;
             Text [ french ] = "L'indice de ligne dans la matrice." ;
             Text [ swedish ] = "Radnumret i matrisen." ;
@@ -35307,7 +36439,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es el nmero de fila en matriz_buscar_en desde el cual se deber devolver el valor coincidente." ;
             Text [ english_us ] = "The row index in the array." ;
             Text[ chinese_simplified ] = "数据区内的行序号。";
-            Text[ russian ] = "   .";
+            Text[ russian ] = "   .";
             Text[ polish ] = "Indeks wierszy w macierzy.";
             Text[ japanese ] = "範囲内での行番号。";
             Text[ chinese_traditional ] = "數據區內的列序號。";
@@ -35319,6 +36451,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Matrisdeki satr indisi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "ndex de la fila de la matriu.";
+            Text[ thai ] = "ดัชนีแถวในแถวลำดับ";
         };
         String 8 // Name of Parameter 4
         {
@@ -35336,7 +36469,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "ordenado" ;
             Text [ english_us ] = "sorted" ;
             Text[ chinese_simplified ] = "range_lookup";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "Przesortowany";
             Text[ japanese ] = "データ順序";
             Text[ chinese_traditional ] = "range_lookup";
@@ -35344,10 +36477,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Gesorteerd";
             Text[ chinese_simplified ] = "range_lookup";
             Text[ greek ] = "Range_lookup";
-            Text[ korean ] = "정렬됨";
+            Text[ korean ] = "정렬 순서";
             Text[ turkish ] = "Sralanm";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "ordenat";
+            Text[ thai ] = "เรียง";
         };
         String 9 // Description of Parameter 4
         {
@@ -35358,7 +36492,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Se il valore  VERO o non presente la riga di ricerca per la matrice deve essere ordinata in modo crescente." ;
             Text [ portuguese_brazilian ] = "Ist der Wert WAHR oder nicht angegeben, mu? die Suchzeile der Matrix aufsteigend sortiert sein." ;
             Text [ portuguese ] = "Se o valor for VERDADEIRO ou no indicado, a linha de procura da matriz ter que ser ordenada de forma ascendente." ;
-            Text [ finnish ] = "Jos arvo on TRUE tai sit ei ole mritetty, matriisin hakurivi on jrjestettv nousevaan jrjestykseen." ;
+            Text [ finnish ] = "Jos arvo on TOSI tai sit ei ole mritetty, taulukon hakurivi on jrjestettv nousevaan jrjestykseen." ;
             Text [ danish ] = "Hvis vrdien er SAND eller ikke er angivet, skal matrixens sgerkke sorteres i stigende orden." ;
             Text [ french ] = "Si la valeur est VRAI ou n'a pas t spcifie, la ligne de recherche de la matrice doit tre trie dans l'ordre croissant." ;
             Text [ swedish ] = "Om vrdet r SANT eller inte angivet, mste matrisens skrad vara sorterad i stigande ordning." ;
@@ -35366,7 +36500,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Si el valor es VERDADERO o se omite, la lnea de bsqueda de la matriz debe ser ordenada ascendentemente." ;
             Text [ english_us ] = "If the value is TRUE or not given, the search row of the array must be sorted in ascending order." ;
             Text[ chinese_simplified ] = "若值是\"true\"或没有指定,那么数组\n的查找行就必须按上升顺序排列。";
-            Text[ russian ] = "            .";
+            Text[ russian ] = "              .";
             Text[ polish ] = "Jeli warto jest PRAWDA lub jeli nie jest ona podana, wiersz wyszukiwania macierzy musi zosta przesortowany w porzdku rosncym.";
             Text[ japanese ] = "指定なし、あるいは TRUE を指定するには、1行目のデータが昇順に並んでいる必要があります。";
             Text[ chinese_traditional ] = "如果邏輯值是或沒有指定,數組查找列就按照向上排列。";
@@ -35378,6 +36512,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Deer DORU ya da belirtilmemise, matrisin arama satr artan dzende sralanmaldr.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Si el valor s TRUE o no s'indica, la fila de cerca de la matriu s'ha d'ordenar de manera ascendent.";
+            Text[ thai ] = "ถ้าค่าเป็นจริงหรือไม่ได้ให้มา  ให้ค้นหาแถวของแถวลำดับที่ต้องเรียงจากน้อยไปมาก";
         };
     };
      // -=*# Resource for function SVERWEIS #*=-
@@ -35399,7 +36534,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Busca un valor especfico en la primera columna y se desplaza a travs de la fila y devuelve el valor de la celda indicada." ;
             Text [ english_us ] = "Vertical search and reference to indicated cells." ;
             Text[ chinese_simplified ] = "在数据组的首列查找指定的数值,并返回数值所在行\n中指定列处的数值。";
-            Text[ russian ] = "        .";
+            Text[ russian ] = "       .";
             Text[ polish ] = "Wyszukiwanie pionowe i adres wskazanej komrki.";
             Text[ japanese ] = "範囲内の1列目で行を特定し、その行の指定列のセルの値を返します。";
             Text[ chinese_traditional ] = "在資料組的首列查找指定的數值﹐並返回數值所在行中指定列處的數值。";
@@ -35410,7 +36545,8 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ korean ] = "주위의 셀에 대한 수직 검색과 참조";
             Text[ turkish ] = "Komu hcrelere referans ve dikey arama.";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Cerca vertical i referncia a les celles indicades.";
+            Text[ catalan ] = "Cerca vertical i referncia a les cel.les indicades.";
+            Text[ thai ] = "ค้นหาตามแนวตั้งและอ้างไปยังเซลล์ที่ระบุ";
         };
         ExtraData =
         {
@@ -35446,6 +36582,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Arama lt";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Criteri de cerca";
+            Text[ thai ] = "ค้นหาเกณฑ์";
         };
         String 3 // Description of Parameter 1
         {
@@ -35455,7 +36592,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Il valore da ricercare nella prima colonna della matrice." ;
             Text [ portuguese_brazilian ] = "Der Wert, nach dem in der ersten Spalte gesucht wird." ;
             Text [ portuguese ] = " o valor a localizar na primeira coluna da matriz." ;
-            Text [ finnish ] = "Ensimmisest sarakkeesta etsittv arvo." ;
+            Text [ finnish ] = "Ensimmisest sarakkeesta etsittv arvo" ;
             Text [ danish ] = "Den vrdi som der skal sges efter i frste kolonne." ;
             Text [ french ] = "La valeur  rechercher dans la premire colonne." ;
             Text [ swedish ] = "Vrdet som skall skas i den frsta kolumnen." ;
@@ -35475,6 +36612,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Birinci stunda aranan deer.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor que s'ha de trobar en la primera columna.";
+            Text[ thai ] = "พบค่าในคอลัมน์แรก";
         };
         String 4 // Name of Parameter 2
         {
@@ -35484,12 +36622,12 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Matrice" ;
             Text [ portuguese_brazilian ] = "Matrix" ;
             Text [ portuguese ] = "Matriz_tabela" ;
-            Text [ finnish ] = "matriisi" ;
+            Text [ finnish ] = "taulukko" ;
             Text [ danish ] = "Matrix" ;
             Text [ french ] = "Matrice" ;
             Text [ swedish ] = "matris" ;
             Text [ dutch ] = "Matrix" ;
-            Text [ spanish ] = "matriz_buscar_en" ;
+            Text [ spanish ] = "Matriz" ;
             Text [ english_us ] = "array" ;
             Text[ chinese_simplified ] = "table_array";
             Text[ russian ] = "";
@@ -35504,6 +36642,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Matris";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "matriu";
+            Text[ thai ] = "แถวลำดับ";
         };
         String 5 // Description of Parameter 2
         {
@@ -35514,7 +36653,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "La matrice o l'area per il riferimento." ;
             Text [ portuguese_brazilian ] = "Die Matrix oder der Bereich f? den Verweis." ;
             Text [ portuguese ] = " a tabela de informaes para a procura de dados." ;
-            Text [ finnish ] = "Viitematriisi tai -alue." ;
+            Text [ finnish ] = "Viitetaulukko tai -alue" ;
             Text [ danish ] = "Matrixen eller omrdet for henvisningen." ;
             Text [ french ] = "La matrice ou la plage pour le renvoi." ;
             Text [ swedish ] = "Matrisen eller omrdet fr hnvisningen." ;
@@ -35530,10 +36669,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "De matrix of het bereik voor de verwijzing.";
             Text[ chinese_simplified ] = "矩阵数据组或一个引用的区域。";
             Text[ greek ] = "       .";
-            Text[ korean ] = "참조의 행렬 또는 영역입니다.";
+            Text[ korean ] = "참조의 행렬 또는 범위입니다.";
             Text[ turkish ] = "Referans ile ilgili matris ya da aralk.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Matriu o rea per referenciar.";
+            Text[ thai ] = "แถวลำดับหรือช่วงสำหรับการอ้างอิง";
         };
         String 6 // Name of Parameter 3
         {
@@ -35563,6 +36703,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "ndis";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "ndex";
+            Text[ thai ] = "ดัชนี";
         };
         String 7 // Description of Parameter 3
         {
@@ -35572,7 +36713,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "L'indice di colonna nella matrice." ;
             Text [ portuguese_brazilian ] = "Spaltenindex in der Matrix." ;
             Text [ portuguese ] = " o nmero da coluna numa matriz_tabela da qual se devolve o valor correspondente." ;
-            Text [ finnish ] = "Matriisisarakkeen hakemistonumero." ;
+            Text [ finnish ] = "Taulukkosarakkeen hakemistonumero" ;
             Text [ danish ] = "Kolonneindeks i matrixen." ;
             Text [ french ] = "L'indice de la colonne dans la matrice." ;
             Text [ swedish ] = "Kolumnindex i matrisen." ;
@@ -35592,6 +36733,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Matrisin stun dizini.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nmero d'ndex de la columna en una matriu.";
+            Text[ thai ] = "ตัวเลขดัชนีคอลัมน์ในแถวลำดับ";
         };
         String 8 // Name of Parameter 4
         {
@@ -35609,7 +36751,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "ordenado" ;
             Text [ english_us ] = "sort order" ;
             Text[ chinese_simplified ] = "sort order";
-            Text[ russian ] = "_";
+            Text[ russian ] = " ";
             Text[ polish ] = "Porzdek sortowania";
             Text[ japanese ] = "データ順序";
             Text[ chinese_traditional ] = "sort order";
@@ -35617,10 +36759,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Gesorteerd";
             Text[ chinese_simplified ] = "sort order";
             Text[ greek ] = "";
-            Text[ korean ] = "정렬됨";
+            Text[ korean ] = "정렬 순서";
             Text[ turkish ] = "Sralama";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "ordenaci";
+            Text[ thai ] = "เรียง";
         };
         String 9 // Description of Parameter 4
         {
@@ -35631,7 +36774,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Se il valore  VERO o non  indicato, la colonna di ricerca per la matrice deve essere ordinata in ordine crescente." ;
             Text [ portuguese_brazilian ] = "Ist der Wert WAHR oder nicht angegeben, mu? die Suchspalte der Matrix aufsteigend sortiert sein." ;
             Text [ portuguese ] = "Se o valor for VERDADEIRO ou no indicado, a linha de procura da matriz ter que ser ordenada de forma ascendente." ;
-            Text [ finnish ] = "Jos arvo on TRUE tai sit ei ole mritetty, matriisin hakusarake on jrjestettv nousevaan jrjestykseen." ;
+            Text [ finnish ] = "Jos arvo on TOSI tai sit ei ole mritetty, taulukon hakusarake on jrjestettv nousevaan jrjestykseen." ;
             Text [ danish ] = "Hvis vrdien er SAND eller ikke er angivet, skal matrixens sgekolonne sorteres i stigende orden." ;
             Text [ french ] = "Si la valeur est VRAI ou n'a pas t spcifie, la colonne de recherche de la matrice doit tre trie dans l'ordre croissant." ;
             Text [ swedish ] = "Om vrdet r SANT eller inte angivet, mste skkolumnen i matrisen vara sorterad stigande." ;
@@ -35639,7 +36782,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Si el valor es VERDADERO o se omite, la columna de bsqueda de la matriz debe ser ordenada ascendentemente." ;
             Text [ english_us ] = "if the value is TRUE or not given, the search column of the array must be sorted in ascending order." ;
             Text[ chinese_simplified ] = "若值是TRUE或没有指定,那么数组的列在查找时就按上升顺序排列。";
-            Text[ russian ] = "            .";
+            Text[ russian ] = "              .";
             Text[ polish ] = "Jeli warto jest PRAWDA lub jeli nie jest ona podana, kolumna wyszukiwania macierzy musi zosta przesortowana w porzdku rosncym.";
             Text[ japanese ] = "指定なし、あるいは TRUE を指定するには、1列目のデータが昇順に並んでいる必要があります。";
             Text[ chinese_traditional ] = "若數值是 TRUE 或者沒有指定數值﹐搜尋列陣欄位的方式就必須是向上。";
@@ -35651,6 +36794,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Deer DORU ya da belirtilmemise, matrisin arama stunu artan dzende sralanmaldr.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Si el valor s TRUE o no s'indica, la columna de cerca de la matriu s'ha d'ordenar de manera ascendent.";
+            Text[ thai ] = "ถ้าค่าเป็นจริงหรือไม่ได้ให้มา ให้ค้นหาคอลัมน์ของแถวลำดับที่ต้องเรียงจากน้อยไปมาก";
         };
     };
      // -=*# Resource for function INDEX #*=-
@@ -35672,7 +36816,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve una referencia a una celda o a varias celdas determinada dentro del argumento ref." ;
             Text [ english_us ] = "Returns a reference to a cell from a defined range." ;
             Text[ chinese_simplified ] = "反馈一个给定区域中的单元格引用内容。";
-            Text[ russian ] = "      .";
+            Text[ russian ] = "     .";
             Text[ polish ] = "Okrela odwoanie do komrki z podanego obszaru.";
             Text[ japanese ] = "指定範囲内で指定したひとつのセルの値を返します。";
             Text[ chinese_traditional ] = "確定在指定區域內的儲存格的參照。";
@@ -35680,10 +36824,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Definieert een verwijzing naar een cel uit een aangegeven bereik.";
             Text[ chinese_simplified ] = "反馈一个给定区域中的单元格引用内容。";
             Text[ greek ] = "        .";
-            Text[ korean ] = "정의된 영역의 셀에 대한 참조를 결정.";
+            Text[ korean ] = "지정된 범위로부터 셀의 참조를 구합니다.";
             Text[ turkish ] = "Belirtilen aralktan bir hcre referans tanmlar.";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Torna una referncia a una cella d'una rea definida.";
+            Text[ catalan ] = "Torna una referncia a una cel.la d'una rea definida.";
+            Text[ thai ] = "ส่งกลับการอ้างอิงไปยังเซลล์จากช่วงที่กำหนด";
         };
         ExtraData =
         {
@@ -35719,6 +36864,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Referans";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "referncia";
+            Text[ thai ] = "อ้างอิง";
         };
         String 3 // Description of Parameter 1
         {
@@ -35728,7 +36874,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Il riferimento ad un'area (multipla)." ;
             Text [ portuguese_brazilian ] = "Der Bezug auf einen (Mehrfach-)Bereich." ;
             Text [ portuguese ] = " a referncia a um ou vrios intervalos de clulas." ;
-            Text [ finnish ] = "Viittaus moniosaiseen alueeseen." ;
+            Text [ finnish ] = "Viittaus moniosaiseen alueeseen" ;
             Text [ danish ] = "En reference til et (multi-)omrde." ;
             Text [ french ] = "La rfrence  une plage (multiple)." ;
             Text [ swedish ] = "Referensen till ett (multi-)omrde." ;
@@ -35744,10 +36890,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "De verwijzing naar n of meer cellenbereiken.";
             Text[ chinese_simplified ] = "一个(多重)区域的引用。";
             Text[ greek ] = "    () .";
-            Text[ korean ] = "영역(다중)에 대한 참조.";
+            Text[ korean ] = "다중)범위에 대한 참조";
             Text[ turkish ] = "(oklu) arala alnan referans.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Referncia a una rea (mltiple).";
+            Text[ thai ] = "อ้างอิงไปยัง (หลาย) ช่วง";
         };
         String 4 // Name of Parameter 2
         {
@@ -35777,6 +36924,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Satr";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "fila";
+            Text[ thai ] = "แถว";
         };
         String 5 // Description of Parameter 2
         {
@@ -35786,7 +36934,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "La riga nell'area." ;
             Text [ portuguese_brazilian ] = "Die Zeile in dem Bereich." ;
             Text [ portuguese ] = " o nmero da linha da qual se deseja obter uma referncia." ;
-            Text [ finnish ] = "Alueen rivi." ;
+            Text [ finnish ] = "Alueen rivi" ;
             Text [ danish ] = "Rkken i omrdet." ;
             Text [ french ] = "La ligne de la plage." ;
             Text [ swedish ] = "Raden i omrdet." ;
@@ -35794,7 +36942,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es el nmero de fila en el argumento ref desde el cual se devolver una referencia." ;
             Text [ english_us ] = "The row in the range." ;
             Text[ chinese_simplified ] = "区域内的行";
-            Text[ russian ] = "   ,    .";
+            Text[ russian ] = "  .";
             Text[ polish ] = "Wiersz w obszarze.";
             Text[ japanese ] = "範囲内での行番号。";
             Text[ chinese_traditional ] = "區域內的列";
@@ -35802,10 +36950,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "De rij in het bereik.";
             Text[ chinese_simplified ] = "区域内的行";
             Text[ greek ] = "   .";
-            Text[ korean ] = "영역내의 행";
+            Text[ korean ] = "범위 내의 행";
             Text[ turkish ] = "Aralktaki satr.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "La fila de l'rea.";
+            Text[ thai ] = "แถวในช่วง";
         };
         String 6 // Name of Parameter 3
         {
@@ -35835,6 +36984,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Stun";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "columna";
+            Text[ thai ] = "คอลัมน์";
         };
         String 7 // Description of Parameter 3
         {
@@ -35844,7 +36994,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "La colonna nell'area." ;
             Text [ portuguese_brazilian ] = "Die Spalte in dem Bereich." ;
             Text [ portuguese ] = " o nmero da coluna da qual se deseja obter uma referncia." ;
-            Text [ finnish ] = "Alueen sarake." ;
+            Text [ finnish ] = "Alueen sarake" ;
             Text [ danish ] = "Kolonnen i omrdet." ;
             Text [ french ] = "La colonne de la plage." ;
             Text [ swedish ] = "Kolumnen i omrdet." ;
@@ -35852,7 +37002,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es el nmero de la columna en el argumento ref desde el cual se devolver una referencia." ;
             Text [ english_us ] = "The column in the range." ;
             Text[ chinese_simplified ] = "区域内的列。";
-            Text[ russian ] = "   ,    .";
+            Text[ russian ] = "  .";
             Text[ polish ] = "Kolumna w obszarze.";
             Text[ japanese ] = "範囲内での列番号。";
             Text[ chinese_traditional ] = "區域內的欄。";
@@ -35860,10 +37010,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "De kolom in het bereik.";
             Text[ chinese_simplified ] = "区域内的列。";
             Text[ greek ] = "   .";
-            Text[ korean ] = "영역내의 열";
+            Text[ korean ] = "범위 내의 열";
             Text[ turkish ] = "Aralktaki stun.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "La columna de l'rea.";
+            Text[ thai ] = "คอลัมน์ในช่วง";
         };
         String 8 // Name of Parameter 4
         {
@@ -35881,7 +37032,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "rea" ;
             Text [ english_us ] = "range" ;
             Text[ chinese_simplified ] = "area_num";
-            Text[ russian ] = "_";
+            Text[ russian ] = "";
             Text[ polish ] = "Obszar";
             Text[ japanese ] = "範囲番号";
             Text[ chinese_traditional ] = "area_num";
@@ -35889,10 +37040,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Bereik";
             Text[ chinese_simplified ] = "area_num";
             Text[ greek ] = "";
-            Text[ korean ] = "영역";
+            Text[ korean ] = "범위";
             Text[ turkish ] = "Aralk";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "rea";
+            Text[ thai ] = "ช่วง";
         };
         String 9 // Description of Parameter 4
         {
@@ -35910,7 +37062,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Selecciona un rea en el argumento ref desde el cual se devolver la interseccin entre fila y columna dadas." ;
             Text [ english_us ] = "The index of the subrange if referring to a multiple range." ;
             Text[ chinese_simplified ] = "如果是一个多重区域,那就是一个部分区域的索引。";
-            Text[ russian ] = "  ,  ,      .";
+            Text[ russian ] = "  ,  ,      .";
             Text[ polish ] = "Indeks obszaru czciowego, jeli chodzi o obszar zoony.";
             Text[ japanese ] = "複数の範囲を入力した場合、その中の1つを数値で指定。";
             Text[ chinese_traditional ] = "如果是一個多重區域﹐那就是一個部份區域的索引。";
@@ -35918,10 +37070,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "De index van een bereik uit meer cellenbereiken.";
             Text[ chinese_simplified ] = "如果是一个多重区域,那就是一个部分区域的索引。";
             Text[ greek ] = "     ,        .";
-            Text[ korean ] = "다중 영역일 경우 부분 영역의 색인.";
+            Text[ korean ] = "다중 범위일 경우 하위 범위의 색인.";
             Text[ turkish ] = "oklu aralk olmas durumunda ksmi araln indisi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "ndex de la subrea si es refereix a una rea mltiple.";
+            Text[ thai ] = "ดัชนีของช่วงย่อยถ้าอ้างอิงไปยังหลายช่วง";
         };
     };
      // -=*# Resource for function INDIREKT #*=-
@@ -35943,7 +37096,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve una referencia especificada por un valor de texto." ;
             Text [ english_us ] = "Returns the contents of a cell that is referenced in text form." ;
             Text[ chinese_simplified ] = "确定一个以文字格式输入的单元格引用的内容。";
-            Text[ russian ] = " ,   .";
+            Text[ russian ] = "  ,   .";
             Text[ polish ] = "Okrela zawarto podanej komrki jako odwoania w formie tekstu.";
             Text[ japanese ] = "文字列で参照として入力されているセルの内容を返します。";
             Text[ chinese_traditional ] = "確定一個以文字格式輸入的儲存格參照內容。";
@@ -35951,10 +37104,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Definieert de inhoud van een aangegeven cel die een verwijzing bevat in de vorm van tekst.";
             Text[ chinese_simplified ] = "确定一个以文字格式输入的单元格引用的内容。";
             Text[ greek ] = "             .";
-            Text[ korean ] = "텍스트 양식의 정의된 셀 내용을 참조로 결정합니다.";
+            Text[ korean ] = "문자열 형식의 참조로 지정된 셀 내용을 구합니다.";
             Text[ turkish ] = "Metin eklinde referans alnan bir hcrenin ieriini tanmlar.";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Torna el contingut d'una cella que est referenciada en forma de text.";
+            Text[ catalan ] = "Torna el contingut d'una cel.la que est referenciada en forma de text.";
+            Text[ thai ] = "ส่งกลับเนื้อหาของเซลล์ที่ถูกอ้างอิงในแบบฟอร์มข้อความ";
         };
         ExtraData =
         {
@@ -35970,7 +37124,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Riferimento" ;
             Text [ portuguese_brazilian ] = "Bezug" ;
             Text [ portuguese ] = "Texto_ref" ;
-            Text [ finnish ] = "viite" ;
+            Text [ finnish ] = "viite " ;
             Text [ danish ] = "Reference" ;
             Text [ french ] = "Rfrence" ;
             Text [ swedish ] = "Referens" ;
@@ -35990,6 +37144,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Referans";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "ref ";
+            Text[ thai ] = "อ้างอิง ";
         };
         String 3 // Description of Parameter 1
         {
@@ -36018,7 +37173,8 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ korean ] = "텍스트 형태(예: \"A1\")의 참조로서 내용이 평가될 셀입니다.";
             Text[ turkish ] = "erii deerlendirilecek hcre metin eklinde  (rn. \"A1\") referans alnacak.";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "es una referencia a una celda, cuyo contenido se desea comprobar y que contiene una referencia en forma de texto (por ej. \"A1\").";
+            Text[ catalan ] = "s una referncia a una cel.la, el contingut de la qual es vol comprovar i que cont una referncia en forma de text (per ex. \"A1\").";
+            Text[ thai ] = "เซลล์ของเนื้อหาที่ถูกประเมินเป็นการถูกอ้างอิงในแบบฟอร์มข้อความจาก (เช่น \"A1\").";
         };
     };
      // -=*# Resource for function VERWEIS #*=-
@@ -36040,7 +37196,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Busca valores en una referencia o matriz." ;
             Text [ english_us ] = "Determines a value in a vector by comparison to values in another vector." ;
             Text[ chinese_simplified ] = "通过同另一个矢量的数值比较来确定在一个矢量中的数值。";
-            Text[ russian ] = "         .";
+            Text[ russian ] = "       .";
             Text[ polish ] = "Okrela warto wektoru przez porwnanie wartoci w innym wektorze.";
             Text[ japanese ] = "値を1行または1列の範囲で検査して、対応する値を返します。";
             Text[ chinese_traditional ] = "通過同另一個向量的數值比較來確定在一個向量中的數值。";
@@ -36048,10 +37204,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Bepaalt de waarde op een vector door vergelijking van waarden op een andere vector.";
             Text[ chinese_simplified ] = "通过同另一个矢量的数值比较来确定在一个矢量中的数值。";
             Text[ greek ] = "         .";
-            Text[ korean ] = "다른 벡터상의 값과 비교하여 벡터상의 값을 결정";
+            Text[ korean ] = "다른 벡터의 값과 비교하여 벡터의 값을 결정";
             Text[ turkish ] = "Vektrdeki deeri, baka bir vektr ile deer karlatrmas yaparak tanmlar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Determina un valor d'un vector per comparaci amb valors d'un altre vector.";
+            Text[ thai ] = "กำหนดค่าในเวคเตอร์ด้วยการเปรียบเทียบไปยังค่าในเวคเตอร์อื่น";
         };
         ExtraData =
         {
@@ -36087,6 +37244,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Arama lt";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Criteri de cerca";
+            Text[ thai ] = "ค้นหาเกณฑ์";
         };
         String 3 // Description of Parameter 1
         {
@@ -36096,7 +37254,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Il valore da utilizzare per il confronto." ;
             Text [ portuguese_brazilian ] = "Der Wert, mit dem verglichen wird." ;
             Text [ portuguese ] = " o valor a procurar no primeiro vector." ;
-            Text [ finnish ] = "Vertailussa kytettv arvo." ;
+            Text [ finnish ] = "Vertailussa kytettv arvo" ;
             Text [ danish ] = "Den vrdi der skal sammenlignes med." ;
             Text [ french ] = "La valeur  utiliser pour la comparaison." ;
             Text [ swedish ] = "Vrdet som det jmfrs med." ;
@@ -36116,6 +37274,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Karlatrma iin kullanlacak deer.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor que s'ha d'utilitzar per a la comparaci.";
+            Text[ thai ] = "ใช้ค่าสำหรับการเปรียบเทียบ";
         };
         String 4 // Name of Parameter 2
         {
@@ -36133,7 +37292,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "vector_comparacin" ;
             Text [ english_us ] = "Search vector" ;
             Text[ chinese_simplified ] = "lookup_vector";
-            Text[ russian ] = "_";
+            Text[ russian ] = " ";
             Text[ polish ] = "Przeszukiwany wektor";
             Text[ japanese ] = "検索範囲";
             Text[ chinese_traditional ] = "lookup_vector";
@@ -36145,6 +37304,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Arama vektr";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Vector de cerca";
+            Text[ thai ] = "ค้นหาเวคเตอร์";
         };
         String 5 // Description of Parameter 2
         {
@@ -36162,7 +37322,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es un rea que solo contiene una columna o una fila." ;
             Text [ english_us ] = "The vector (row or column) in which to search." ;
             Text[ chinese_simplified ] = "要在其中搜寻的矢量(行或者列)。";
-            Text[ russian ] = " (,      ),    .";
+            Text[ russian ] = " (  ),    .";
             Text[ polish ] = "Wektor (wiersz lub kolumna), w ktrym nastpi wyszukiwanie.";
             Text[ japanese ] = "検査値を比較する1行または1列の範囲。";
             Text[ chinese_traditional ] = "要在其中搜尋的向量(欄或列)。";
@@ -36174,6 +37334,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Arama yaplan vektr (satr ya da stun).";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Vector (fila o columna) en qu s'ha de cercar.";
+            Text[ thai ] = "เวคเตอร์ (แถวหรือคอลัมน์) ที่ค้นหา";
         };
         String 6 // Name of Parameter 3
         {
@@ -36191,7 +37352,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "vector_resultado" ;
             Text [ english_us ] = "result_vector" ;
             Text[ chinese_simplified ] = "result_vector";
-            Text[ russian ] = "_";
+            Text[ russian ] = " ";
             Text[ polish ] = "Wektor wynikowy";
             Text[ japanese ] = "結果範囲";
             Text[ chinese_traditional ] = "result_vector";
@@ -36203,6 +37364,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Sonu vektr";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "result_vector";
+            Text[ thai ] = "ผลลัพธ์_เวคเตอร์";
         };
         String 7 // Description of Parameter 3
         {
@@ -36220,7 +37382,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es un rea que slo contiene una columna o una fila." ;
             Text [ english_us ] = "The vector (row or range) from which the value is to be determined." ;
             Text[ chinese_simplified ] = "要从中得出数值的矢量(行或者列)。";
-            Text[ russian ] = " (,     ),    .";
+            Text[ russian ] = " (  ),    .";
             Text[ polish ] = "Wektor (wiersz lub kolumna), na podstawie ktrego zostanie okrelona warto.";
             Text[ japanese ] = "戻り値のリストである1行または1列の範囲。";
             Text[ chinese_traditional ] = "要從中得出數值的向量(欄或列)。";
@@ -36228,10 +37390,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "De vector (de rij of de kolom) waaruit de waarde resulteert.";
             Text[ chinese_simplified ] = "要从中得出数值的矢量(行或者列)。";
             Text[ greek ] = "  (    )       .";
-            Text[ korean ] = "값이 결정될 벡터(행 또는 열)입니다.";
+            Text[ korean ] = "값이 결정될 벡터(행 또는 범위)입니다.";
             Text[ turkish ] = "Deerin belirleme iin esas alnan vektr (satr ya da stun).";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Vector (fila o rea) des del qual s'ha de determinar el valor.";
+            Text[ thai ] = "เวคเตอร์ (แถวหรือช่วง) จากการกำหนดค่า";
         };
     };
      // -=*# Resource for function VERGLEICH #*=-
@@ -36245,7 +37408,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Restituisce una posizione di un elemento in una matrice dopo un confronto di valori." ;
             Text [ portuguese_brazilian ] = "Bestimmt eine Position in einer Matrix nach einem Wertvergleich." ;
             Text [ portuguese ] = "Define a posio de um elemento numa matriz, baseando-se na comparao de valores." ;
-            Text [ finnish ] = "Mritt matriisin paikan arvovertailun jlkeen." ;
+            Text [ finnish ] = "Mritt taulukon paikan arvovertailun jlkeen." ;
             Text [ danish ] = "Bestemmer en position i en matrix baseret p en sammenligning af vrdier." ;
             Text [ french ] = "Dtermine une position dans une matrice aprs comparaison des valeurs." ;
             Text [ swedish ] = "Bestmmer en position i en matris enligt en vrdejmfrelse." ;
@@ -36253,7 +37416,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve la posicin relativa de un elemento en una matriz que coincida con un valor especificado." ;
             Text [ english_us ] = "Defines a position in a array after comparing values." ;
             Text[ chinese_simplified ] = "通过数值比较来确定数据在数据组中的位置。";
-            Text[ russian ] = "      .";
+            Text[ russian ] = "        .";
             Text[ polish ] = "Okrela pozycj w macierzy porwnujc warto";
             Text[ japanese ] = "値を比較して範囲内の位置を表す数値を返します。";
             Text[ chinese_traditional ] = "通過數值比較來確定數據在數據組中的位置。";
@@ -36265,6 +37428,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Deer karlatrlmasndan sonra matrisdeki bir konumu tanmlar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Defineix una posici en una matriu desprs de comparar valors.";
+            Text[ thai ] = "กำหนดตำแหน่งในแถวลำดับหลังการเปรียบเทียบค่า";
         };
         ExtraData =
         {
@@ -36300,6 +37464,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Arama lt";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Criteri de cerca";
+            Text[ thai ] = "เกณฑ์การค้นหา";
         };
         String 3 // Description of Parameter 1
         {
@@ -36309,7 +37474,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Il valore utilizzato per il confronto." ;
             Text [ portuguese_brazilian ] = "Der Wert, mit dem verglichen wird." ;
             Text [ portuguese ] = " o valor usado para determinar o valor numa tabela." ;
-            Text [ finnish ] = "Vertailussa kytettv arvo." ;
+            Text [ finnish ] = "Vertailussa kytettv arvo" ;
             Text [ danish ] = "Den vrdi der skal sammenlignes med." ;
             Text [ french ] = "La valeur  utiliser pour la comparaison." ;
             Text [ swedish ] = "Vrdet som det skall jmfras med." ;
@@ -36329,6 +37494,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Karlatrma yaplan deer.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor que s'ha d'utilitzar per a la comparaci.";
+            Text[ thai ] = "ใช้ค่าสำหรับการเปรียบเทียบ";
         };
         String 4 // Name of Parameter 2
         {
@@ -36338,15 +37504,15 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Matrice" ;
             Text [ portuguese_brazilian ] = "Suchmatrix" ;
             Text [ portuguese ] = "Matriz_procurada" ;
-            Text [ finnish ] = "hakumatriisi" ;
+            Text [ finnish ] = "hakutaulukko" ;
             Text [ danish ] = "Opslagsmatrix" ;
             Text [ french ] = "M_recherche" ;
             Text [ swedish ] = "skmatris" ;
             Text [ dutch ] = "Zoekmatrix" ;
-            Text [ spanish ] = "matriz_buscada" ;
+            Text [ spanish ] = "buscar_matriz" ;
             Text [ english_us ] = "lookup_array" ;
             Text[ chinese_simplified ] = "lookup_array";
-            Text[ russian ] = "_";
+            Text[ russian ] = "";
             Text[ polish ] = "przeszukiwana_tab";
             Text[ japanese ] = "検査範囲";
             Text[ chinese_traditional ] = "lookup_array";
@@ -36358,6 +37524,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Arama matrisi";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "lookup_array";
+            Text[ thai ] = "ค้นหา_แถวลำดับ";
         };
         String 5 // Description of Parameter 2
         {
@@ -36367,7 +37534,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "La matrice (l'area) nella quale si effettua la ricerca." ;
             Text [ portuguese_brazilian ] = "Die Matrix (der Bereich), in der gesucht wird." ;
             Text [ portuguese ] = " um intervalo de clulas adjacentes contendo os possveis valores de equivalncia." ;
-            Text [ finnish ] = "Matriisi (alue), johon haku tehdn." ;
+            Text [ finnish ] = "Taulukko (alue), johon haku tehdn." ;
             Text [ danish ] = "Den matrix (det omrde) der skal sges i." ;
             Text [ french ] = "La matrice (la plage)  utiliser pour la recherche." ;
             Text [ swedish ] = "Matrisen (omrdet) som det skall skas i." ;
@@ -36387,6 +37554,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Arama yaplan matris (aralk).";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Matriu (rea) en qu es fa la cerca.";
+            Text[ thai ] = "แถวลำดับ (ช่วง) ในการทำการค้นหา";
         };
         String 6 // Name of Parameter 3
         {
@@ -36416,6 +37584,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Tip";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Tipus";
+            Text[ thai ] = "ชนิด";
         };
         String 7 // Description of Parameter 3
         {
@@ -36445,6 +37614,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "1, 0 ya da -1 deerlerini alabilen tip, yaplacak aramann ltlerini belirler.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "El tipus pot prendre el valor 1, 0 o -1 i determina els criteris que s'han d'utilitzar amb finalitats comparatives.";
+            Text[ thai ] = "ชนิดสามารถใช้ค่า 1, 0 หรือ -1 และกำหนดใช้เกณฑ์สำหรับวัตถุประสงค์ในการเปรียบเทียบ";
         };
     };
      // -=*# Resource for function VERSCHIEBUNG #*=-
@@ -36467,7 +37637,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve una referencia especificada y la desva respecto a otra referencia." ;
             Text [ english_us ] = "Returns a reference which has been moved in relation to the starting point." ;
             Text[ chinese_simplified ] = "确定从指定基点出发移动后的引用区域。";
-            Text[ russian ] = " ,    .";
+            Text[ russian ] = "     .";
             Text[ polish ] = "Okrela odwoanie, ktre zostao przesunite w porwnaniu z punktem wyjciowym.";
             Text[ japanese ] = "基準から指定の行列数を移動した位置のセルの値を返します。";
             Text[ chinese_traditional ] = "確定從指定基點出發移動後的參照區域。";
@@ -36479,6 +37649,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "k noktasna gre tanan bir referans tanmlar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna una referncia que s'ha mogut en relaci al punt d'inici.";
+            Text[ thai ] = "ส่งกลับการอ้างอิงที่ย้ายในความสัมพันธ์ไปสู่จุดเริ่มต้น";
         };
         ExtraData =
         {
@@ -36514,6 +37685,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Referans";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "referncia";
+            Text[ thai ] = "อ้างอิง";
         };
         String 3 // Description of Parameter 1
         {
@@ -36523,7 +37695,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Il riferimento (la cella) dalla quale viene determinato lo spostamento." ;
             Text [ portuguese_brazilian ] = "Der Bezug (die Zelle), von der ab die Verschiebung bestimmt wird." ;
             Text [ portuguese ] = " a referncia (clula) de base para o deslocamento." ;
-            Text [ finnish ] = "Viite (solu), jonka perusteella siirto lasketaan." ;
+            Text [ finnish ] = "Viite (solu), jonka perusteella siirto lasketaan" ;
             Text [ danish ] = "Den reference (den celle) som forskydningen skal baseres p." ;
             Text [ french ] = "La rfrence (cellule) sur laquelle baser le dcalage." ;
             Text [ swedish ] = "Referensen (cellen) frn vilken frflyttningen bestms." ;
@@ -36531,7 +37703,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es la referencia a la celda desde la cual se determina la desviacin." ;
             Text [ english_us ] = "The reference (cell) from which to base the movement." ;
             Text[ chinese_simplified ] = "用于计算移动的指定基点(单元格)。";
-            Text[ russian ] = " ( ),     .";
+            Text[ russian ] = " (),    .";
             Text[ polish ] = "Odwoanie (komrka), od ktrej nastpi przesunicie.";
             Text[ japanese ] = "このセルまたはセル範囲から行列数を数えます。";
             Text[ chinese_traditional ] = "用來計算移動的指定基點(儲存格)。";
@@ -36542,7 +37714,8 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ korean ] = "이동이 결정되는 참조 (셀)";
             Text[ turkish ] = "Tanmann belirlenmeye balanaca referans (hcre).";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Referncia (cella) des de la qual basar el moviment.";
+            Text[ catalan ] = "Referncia (cel.la) des de la qual basar el moviment.";
+            Text[ thai ] = "การอ้างอิง (เซลล์) จากที่ซึ่งไปยังการเคลื่อนที่พื้นฐาน";
         };
         String 4 // Name of Parameter 2
         {
@@ -36560,7 +37733,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "filas" ;
             Text [ english_us ] = "rows" ;
             Text[ chinese_simplified ] = "rows";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "Wiersze";
             Text[ japanese ] = "行数";
             Text[ chinese_traditional ] = "rows";
@@ -36572,6 +37745,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Satr";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "files";
+            Text[ thai ] = "แถว";
         };
         String 5 // Description of Parameter 2
         {
@@ -36581,7 +37755,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Il numero di righe dello spostamento verso l'alto o verso il basso." ;
             Text [ portuguese_brazilian ] = "Die Anzahl der Zeilen, um die nach oben oder unten verschoben wird." ;
             Text [ portuguese ] = " o nmero de linhas a deslocar para cima ou para baixo." ;
-            Text [ finnish ] = "Yls tai alas siirrettvien rivien mr." ;
+            Text [ finnish ] = "Yls tai alas siirrettvien rivien mr" ;
             Text [ danish ] = "Antallet af rkker der skal forskydes op eller ned med." ;
             Text [ french ] = "Le nombre de lignes  dcaler vers le haut ou vers le bas." ;
             Text [ swedish ] = "Antalet rader som frflyttas uppt eller nert." ;
@@ -36597,10 +37771,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Het aantal cellen ten opzichte waarvan naar boven of naar beneden wordt verschoven.";
             Text[ chinese_simplified ] = "上下移动的行数。";
             Text[ greek ] = "              .";
-            Text[ korean ] = "위 또는 아래로 이동되는 행의 개수.";
+            Text[ korean ] = "위 또는 아래로 이동되는 행의 수";
             Text[ turkish ] = "Yukar ya da aa tanacak satr says.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre de files que s'han de moure cap amunt o cap avall.";
+            Text[ thai ] = "จำนวนแถวที่ย้ายไม่ขึ้นก็ลง";
         };
         String 6 // Name of Parameter 3
         {
@@ -36618,7 +37793,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "col" ;
             Text [ english_us ] = "columns" ;
             Text[ chinese_simplified ] = "columns";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ polish ] = "kolumny";
             Text[ japanese ] = "列数";
             Text[ chinese_traditional ] = "cols";
@@ -36630,6 +37805,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Stun";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "columnes";
+            Text[ thai ] = "คอลัมน์";
         };
         String 7 // Description of Parameter 3
         {
@@ -36639,7 +37815,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Il numero di colonne dello spostamento verso sinistra o destra." ;
             Text [ portuguese_brazilian ] = "Die Anzahl der Spalten, um die nach links oder rechts verschoben wird." ;
             Text [ portuguese ] = " o nmero de colunas a deslocar para a esquerda ou direita." ;
-            Text [ finnish ] = "Vasemmalle tai oikealle siirrettvien sarakkeiden mr." ;
+            Text [ finnish ] = "Vasemmalle tai oikealle siirrettvien sarakkeiden mr" ;
             Text [ danish ] = "Antallet af rkker der skal forskydes til venstre eller hjre med." ;
             Text [ french ] = "Le nombre de colonnes  dcaler vers la gauche ou vers la droite." ;
             Text [ swedish ] = "Antalet kolumner som frflyttas till vnster eller till hger." ;
@@ -36655,10 +37831,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Het aantal kolommen ten opzichte waarvan naar links of naar rechts wordt verschoven.";
             Text[ chinese_simplified ] = "左右移动的列数。";
             Text[ greek ] = "           .";
-            Text[ korean ] = "왼쪽 또는 오른쪽으로 이동되는 열 개수.";
+            Text[ korean ] = "왼쪽 또는 오른쪽으로 이동되는 열 수";
             Text[ turkish ] = "Sola ya da saa tanacak stun says.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre de columnes que s'han de moure a l'esquerra o a la dreta.";
+            Text[ thai ] = "จำนวนคอลัมน์ที่ย้ายไปทางซ้ายหรือขวา";
         };
         String 8 // Name of Parameter 4
         {
@@ -36689,6 +37866,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Ykseklik";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "alada";
+            Text[ thai ] = "ความสูง";
         };
         String 9 // Description of Parameter 4
         {
@@ -36698,7 +37876,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Il numero di righe del riferimento spostato." ;
             Text [ portuguese_brazilian ] = "Die Anzahl der Zeilen des verschobenen Bezugs." ;
             Text [ portuguese ] = " o nmero de linhas da referncia deslocada." ;
-            Text [ finnish ] = "Siirretyn viitteen rivien mr." ;
+            Text [ finnish ] = "Siirretyn viitteen rivien mr" ;
             Text [ danish ] = "Antallet af rkker i den forskudte reference." ;
             Text [ french ] = "Le nombre de lignes de la rfrence dcale." ;
             Text [ swedish ] = "Antalet rader i den frflyttade referensen." ;
@@ -36706,7 +37884,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es la altura, en filas, de la referencia desviada." ;
             Text [ english_us ] = "The number of rows of the moved reference." ;
             Text[ chinese_simplified ] = "引用区域的行数。";
-            Text[ russian ] = "   .";
+            Text[ russian ] = "   .";
             Text[ polish ] = "Liczba wierszy przesunitego odwoania.";
             Text[ japanese ] = "求めるセル範囲の行数。";
             Text[ chinese_traditional ] = "參照區域的列數。";
@@ -36718,6 +37896,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Tanan referansn satr says.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre de files de la referncia moguda.";
+            Text[ thai ] = "จำนวนแถวของการอ้างอิงที่ย้ายไป";
         };
         String 10 // Name of Parameter 5
         {
@@ -36747,6 +37926,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Genilik";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "amplada";
+            Text[ thai ] = "ความกว้าง";
         };
         String 11 // Description of Parameter 5
         {
@@ -36756,7 +37936,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Il numero di colonne del riferimento spostato." ;
             Text [ portuguese_brazilian ] = "Die Anzahl der Spalten des verschobenen Bezugs." ;
             Text [ portuguese ] = " o nmero de colunas da referncia fornecida." ;
-            Text [ finnish ] = "Siirretyn viitteen sarakkeiden mr." ;
+            Text [ finnish ] = "Siirretyn viitteen sarakkeiden mr" ;
             Text [ danish ] = "Antallet af kolonner i den forskudte reference." ;
             Text [ french ] = "Le nombre de colonnes de la rfrence dcale." ;
             Text [ swedish ] = "Antalet kolumner i den flyttade referensen." ;
@@ -36764,7 +37944,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es el ancho, en columnas, de la referencia desviada." ;
             Text [ english_us ] = "The number of columns in the moved reference." ;
             Text[ chinese_simplified ] = "移动的引用区域的列数。";
-            Text[ russian ] = "   .";
+            Text[ russian ] = "   .";
             Text[ polish ] = "Ilo kolumn przesunitego odwoania.";
             Text[ japanese ] = "求めるセル範囲の列数。";
             Text[ chinese_traditional ] = "移動的參照區域的欄數。";
@@ -36776,6 +37956,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Tanan referansn stun says.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre de columnes en la referncia moguda.";
+            Text[ thai ] = "จำนวนคอลัมน์ในการอ้างอิงที่ย้ายไป";
         };
     };
      // -=*# Resource for function FEHLERTYP #*=-
@@ -36789,7 +37970,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Restituisce il numero corrispondente a un errore determinato." ;
             Text [ portuguese_brazilian ] = "Bestimmt die Fehlernummer zu aufgetretenen Fehlern." ;
             Text [ portuguese ] = "Devolve um nmero correspondente a um erro." ;
-            Text [ finnish ] = "Palauttaa virhetyyppi vastaavan luvun" ;
+            Text [ finnish ] = "Palauttaa virhetyyppi vastaavan luvun." ;
             Text [ danish ] = "Returnerer et tal der svarer til en fejltype." ;
             Text [ french ] = "Dtermine le numro d'erreur correspondant  une erreur survenue." ;
             Text [ swedish ] = "Returnerar felnumret p uppkomna fel." ;
@@ -36797,7 +37978,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve un nmero que corresponde a un tipo de error." ;
             Text [ english_us ] = "Returns a number corresponding to an error type" ;
             Text[ chinese_simplified ] = "确定错误值的对应号码。";
-            Text[ russian ] = " ,   .";
+            Text[ russian ] = " ,   .";
             Text[ polish ] = "Zwraca numer dotyczcy danego bdu.";
             Text[ japanese ] = "発生したエラーの番号を返します。";
             Text[ chinese_traditional ] = "確定錯誤值的對應號碼。";
@@ -36809,6 +37990,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Hata tipleri ile ilgili hata numaralarn belirler.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna un nombre corresponent a un tipus d'error";
+            Text[ thai ] = "ส่งกลับตัวเลขที่ตรงกับชนิดที่ผิดพลาด";
         };
         ExtraData =
         {
@@ -36844,6 +38026,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Referans";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "referncia";
+            Text[ thai ] = "อ้างอิง";
         };
         String 3 // Description of Parameter 1
         {
@@ -36853,7 +38036,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Riferimento (cella) nella quale si  avuto l'errore" ;
             Text [ portuguese_brazilian ] = "Der Bezug (die Zelle), in der der Fehler aufgetreten ist." ;
             Text [ portuguese ] = " a referncia (clula) na qual ocorreu o erro." ;
-            Text [ finnish ] = "Viite (solu), jossa virhe ilmeni." ;
+            Text [ finnish ] = "Viite (solu), jossa virhe ilmeni" ;
             Text [ danish ] = "Den reference (den celle) som fejlen er opstet i." ;
             Text [ french ] = "La rfrence (cellule) dans laquelle l'erreur est survenue." ;
             Text [ swedish ] = "Referensen (cellen) dr felet har uppkommit." ;
@@ -36861,7 +38044,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es la referencia (la celda) en la que el error ha ocurrido." ;
             Text [ english_us ] = "The reference (cell) in which the error occurred." ;
             Text[ chinese_simplified ] = "出现错误的单元格引用。";
-            Text[ russian ] = "  ,    .";
+            Text[ russian ] = " (),    .";
             Text[ polish ] = "Adres komrki, w ktrej wystpi bd.";
             Text[ japanese ] = "エラーが発生したセルの参照。";
             Text[ chinese_traditional ] = "出現錯誤的(儲存格)參照。";
@@ -36872,7 +38055,8 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ korean ] = "오류가 발생한 참조(셀)입니다.";
             Text[ turkish ] = "Hatann meydana geldii referans (hcre).";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Referncia (cella) en qu s'ha produt l'error.";
+            Text[ catalan ] = "Referncia (cel.la) en qu s'ha produt l'error.";
+            Text[ thai ] = "การอ้างอิง (เซลล์) ในที่ที่มีข้อผิดพลาดเกิดขึ้น";
         };
     };
      // -=*# Resource for function VORLAGE #*=-
@@ -36894,7 +38078,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Asigna a la celda un formato predeterminado." ;
             Text [ english_us ] = "Applies a Style to the formula cell." ;
             Text[ chinese_simplified ] = "分配一个格式样式给一个单元格。";
-            Text[ russian ] = "    .";
+            Text[ russian ] = "   ,  .";
             Text[ polish ] = "Przypisuje komrce formuy styl formatu.";
             Text[ japanese ] = "数式セルに書式スタイルを適用します。";
             Text[ chinese_traditional ] = "分配一個格式樣式給一個儲存格。";
@@ -36902,10 +38086,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Wijst de formulecel een opmaakprofiel toe.";
             Text[ chinese_simplified ] = "分配一个格式样式给一个单元格。";
             Text[ greek ] = "       .";
-            Text[ korean ] = "수식셀에 서식 템플릿을  적용.";
+            Text[ korean ] = "수식 셀에 서식 스타일을 적용합니다.";
             Text[ turkish ] = "Forml hcresine bir biim uygular.";
-            Text[ language_user1 ] = "All \"Vorlagen\" /Styles are written with a capital S.10.5.00EMp.s. Formatvorlage ist Style im Gegensatz zu Dok-vorlage (template). ODER ist es in Calc was Besonderes?";
-            Text[ catalan ] = "Aplica un estil a la cella de frmules.";
+            Text[ language_user1 ] = "All ; All \"Vorlagen\" /Styles are written with a capital S.10.5.00EMp.s. Formatvorlage ist Style im Gegensatz zu Dok-vorlage (template). ODER ist es in Calc was Besonderes?";
+            Text[ catalan ] = "Aplica un estil a la cel.la de frmules.";
+            Text[ thai ] = "ใช้ลักษณะเป็นเซลล์สูตร";
         };
         ExtraData =
         {
@@ -36937,10 +38122,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Profiel";
             Text[ chinese_simplified ] = "style";
             Text[ greek ] = "";
-            Text[ korean ] = "템플릿";
+            Text[ korean ] = "스타일";
             Text[ turkish ] = "Biim";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Estil";
+            Text[ thai ] = "ลักษณะ";
         };
         String 3 // Description of Parameter 1
         {
@@ -36950,7 +38136,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Il nome del modello da assegnare alla cella." ;
             Text [ portuguese_brazilian ] = "Der Name der Vorlage, die zugewiesen wird." ;
             Text [ portuguese ] = " o nome do estilo a ser aplicado." ;
-            Text [ finnish ] = "Liitettvn tyylin nimi." ;
+            Text [ finnish ] = "Liitettvn tyylin nimi" ;
             Text [ danish ] = "Navnet p den typografi, som skal tildeles." ;
             Text [ french ] = "Le nom du style qui doit tre attribu." ;
             Text [ swedish ] = "Namnet p formatmallen som tilldelas." ;
@@ -36958,7 +38144,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Nombre del estilo que se desea aplicar." ;
             Text [ english_us ] = "The name of the Style to be applied." ;
             Text[ chinese_simplified ] = "要指定的样式名称。";
-            Text[ russian ] = "  .";
+            Text[ russian ] = "  .";
             Text[ polish ] = "Nazwa szablonu, ktry ma zosta zastosowany.";
             Text[ japanese ] = "適用するスタイルの名前。";
             Text[ chinese_traditional ] = "要指定的樣式名稱。";
@@ -36966,10 +38152,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "De naam van het opmaakprofiel dat wordt toegewezen.";
             Text[ chinese_simplified ] = "要指定的样式名称。";
             Text[ greek ] = "      .";
-            Text[ korean ] = "적용되는 템플릿의 이름";
+            Text[ korean ] = "적용될 스타일의 이름.";
             Text[ turkish ] = "Uygulanacak biimin ad.";
-            Text[ language_user1 ] = "All \"Vorlage\"/Styles are always written with capital S. 10.5.00EM";
+            Text[ language_user1 ] = "All ; All \"Vorlage\"/Styles are always written with capital S. 10.5.00EM";
             Text[ catalan ] = "Nom de l'estil que s'ha d'aplicar.";
+            Text[ thai ] = "ใช้ชื่อลักษณะ";
         };
         String 4 // Name of Parameter 2
         {
@@ -36999,6 +38186,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Zaman";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Hora";
+            Text[ thai ] = "เวลา";
         };
         String 5 // Description of Parameter 2
         {
@@ -37017,7 +38205,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Tiempo de validez (en seg.) del estilo." ;
             Text [ english_us ] = "The time (in seconds) that the Style is to remain valid." ;
             Text[ chinese_simplified ] = "样式保持有效的时间(以秒为单位)。";
-            Text[ russian ] = " ( ),      .";
+            Text[ russian ] = " ( ),      .";
             Text[ polish ] = "Limit czasu (w sekundach), w cigu ktrego ten szablon zachowa wano.";
             Text[ japanese ] = "スタイルの有効時間(秒)";
             Text[ chinese_traditional ] = "樣式保持有效的時間(以秒為單位)。";
@@ -37025,10 +38213,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "De tijd (in seconden) waarin het opmaakprofiel geldig blijft.";
             Text[ chinese_simplified ] = "样式保持有效的时间(以秒为单位)。";
             Text[ greek ] = "  ( )       .";
-            Text[ korean ] = "템플릿이 유효하게 남아있는 시간(초)";
+            Text[ korean ] = "스타일 유효 시간(초 단위)";
             Text[ turkish ] = "Biimin geerli olaca sre (saniye biriminden).";
-            Text[ language_user1 ] = "All \"Vorlagen\" /Styles are written with a capital S.10.5.00EM";
+            Text[ language_user1 ] = "All ; All \"Vorlagen\" /Styles are written with a capital S.10.5.00EM";
             Text[ catalan ] = "Temps (en segons) que l'estil romandr vlid.";
+            Text[ thai ] = "เวลา (ในวินาที) ที่ลักษณะเป็นการเหลืออยู่ที่ถูกต้อง";
         };
         String 6 // Name of Parameter 3
         {
@@ -37054,10 +38243,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Profiel2";
             Text[ chinese_simplified ] = "style2";
             Text[ greek ] = "2";
-            Text[ korean ] = "템플릿2";
+            Text[ korean ] = "스타일2";
             Text[ turkish ] = "Biim2";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Estil2";
+            Text[ thai ] = "ลักษณะ2";
         };
         String 7 // Description of Parameter 3
         {
@@ -37067,7 +38257,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Il modello da assegnare dopo che il tempo  trascorso." ;
             Text [ portuguese_brazilian ] = "Die Vorlage, die nach Ablauf der Zeit zugewiesen wird." ;
             Text [ portuguese ] = " o estilo a ser aplicado depois de terminado o tempo." ;
-            Text [ finnish ] = "Ajan umpeutumisen jlkeen kyttn otettava tyyli." ;
+            Text [ finnish ] = "Ajan umpeutumisen jlkeen kyttn otettava tyyli" ;
             Text [ danish ] = "Den typografi som tildeles efter at tiden er udlbet." ;
             Text [ french ] = "Le style  appliquer aprs coulement de la dure fixe." ;
             Text [ swedish ] = "Formatmallen som tilldelas nr tiden har gtt ut." ;
@@ -37075,7 +38265,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Estilo que se aplicar al transcurrir el tiempo asignado." ;
             Text [ english_us ] = "The Style to be applied after time expires." ;
             Text[ chinese_simplified ] = "在时间过期后要指定的样式。";
-            Text[ russian ] = ",       .";
+            Text[ russian ] = ",       .";
             Text[ polish ] = "Szablon, ktry zostanie przydzielony po upywie czasu.";
             Text[ japanese ] = "有効時間の後に適用されるスタイル。";
             Text[ chinese_traditional ] = "在時間過期後要指定的樣式。";
@@ -37083,10 +38273,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Het opmaakprofiel dat na afloop van de tijd wordt toegewezen.";
             Text[ chinese_simplified ] = "在时间过期后要指定的样式。";
             Text[ greek ] = "         .";
-            Text[ korean ] = "시간이 경과된 후, 템플릿이 적용됩니다.";
+            Text[ korean ] = "유효 시간이 지난 후 적용되는 스타일.";
             Text[ turkish ] = "Sre dolduktan sonra uygulanacak biim.";
-            Text[ language_user1 ] = "All \"Vorlage\"/Styles are always written with capital S. 10.5.00EM";
+            Text[ language_user1 ] = "All ; All \"Vorlage\"/Styles are always written with capital S. 10.5.00EM";
             Text[ catalan ] = "Estil que s'ha d'aplicar desprs que expiri el temps.";
+            Text[ thai ] = "ใช้ลักษณะหลังเวลาหมดอายุ";
         };
     };
      // -=*# Resource for function DDE #*=-
@@ -37101,7 +38292,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Risultato di un collegamento DDE." ;
             Text [ portuguese_brazilian ] = "Ergebnis einer DDE-Verkn?fung." ;
             Text [ portuguese ] = "Resultado de uma ligao DDE." ;
-            Text [ finnish ] = "DDE-linkin tulos." ;
+            Text [ finnish ] = "DDE-linkin tulos" ;
             Text [ danish ] = "Resultatet af en DDE-kde." ;
             Text [ french ] = "Rsultat d'un lien DDE." ;
             Text [ swedish ] = "Resultatet av en DDE-lnkning." ;
@@ -37109,7 +38300,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Resultado de un vnculo DDE." ;
             Text [ english_us ] = "Result of a DDE link." ;
             Text[ chinese_simplified ] = "一个 DDE 链接的结果。";
-            Text[ russian ] = "  DDE.";
+            Text[ russian ] = "  DDE-.";
             Text[ polish ] = "Rezultat cza DDE.";
             Text[ japanese ] = "DDE リンクの結果";
             Text[ chinese_traditional ] = "一個 DDE 連結的結果。";
@@ -37121,6 +38312,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "DDE balantsnn sonucu.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Resultat d'un enlla DDE.";
+            Text[ thai ] = "ผลลัพธ์การเชื่อมโยง DDE ";
         };
         ExtraData =
         {
@@ -37156,6 +38348,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Sunucu";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "servidor";
+            Text[ thai ] = "เซิร์ฟเวอร์";
         };
         String 3 // Description of Parameter 1
         {
@@ -37165,11 +38358,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Il nome dell'applicazione Server." ;
             Text [ portuguese_brazilian ] = "Der Name der Server-Applikation." ;
             Text [ portuguese ] = " o nome da aplicao do servidor." ;
-            Text [ finnish ] = "Palvelinsovelluksen nimi." ;
+            Text [ finnish ] = "Palvelinsovelluksen nimi" ;
             Text [ danish ] = "Server-applikationens navn." ;
             Text [ french ] = "Le nom de l'application du serveur" ;
             Text [ swedish ] = "Namnet p servertillmpningen." ;
-            Text [ dutch ] = "De naam van de server-applicatie." ;
+            Text [ dutch ] = "De naam van de server-toepassing." ;
             Text [ spanish ] = "nombre de la aplicacin del servidor." ;
             Text [ english_us ] = "The name of the server application." ;
             Text[ chinese_simplified ] = "服务器应用程序的名称。";
@@ -37178,13 +38371,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ japanese ] = "サーバーアプリケーションの名前。";
             Text[ chinese_traditional ] = "伺服器應用程式名稱。";
             Text[ arabic ] = "  .";
-            Text[ dutch ] = "De naam van de server-applicatie.";
+            Text[ dutch ] = "De naam van de server-toepassing.";
             Text[ chinese_simplified ] = "服务器应用程序的名称。";
             Text[ greek ] = "     .";
             Text[ korean ] = "서버 응용 프로그램의 이름입니다.";
             Text[ turkish ] = "Sunucu uygulamasnn ad.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nom de l'aplicaci del servidor.";
+            Text[ thai ] = "ชื่อโปรแกรมประยุกต์ของเซิร์ฟเวอร์";
         };
         String 4 // Name of Parameter 2
         {
@@ -37214,6 +38408,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Dosya";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Fitxer";
+            Text[ thai ] = "แฟ้ม";
         };
         String 5 // Description of Parameter 2
         {
@@ -37223,7 +38418,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Nome del file." ;
             Text [ portuguese_brazilian ] = "Der Name der Datei." ;
             Text [ portuguese ] = " o nome do ficheiro." ;
-            Text [ finnish ] = "Tiedoston nimi." ;
+            Text [ finnish ] = "Tiedoston nimi" ;
             Text [ danish ] = "Filens navn." ;
             Text [ french ] = "Le nom du fichier." ;
             Text [ swedish ] = "Namnet p filen." ;
@@ -37243,6 +38438,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Dosya ad.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nom del fitxer.";
+            Text[ thai ] = "ชื่อแฟ้ม";
         };
         String 6 // Name of Parameter 3
         {
@@ -37268,10 +38464,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Bereik";
             Text[ chinese_simplified ] = "range";
             Text[ greek ] = "";
-            Text[ korean ] = "영역";
+            Text[ korean ] = "범위";
             Text[ turkish ] = "Aralk";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "rea";
+            Text[ thai ] = "ช่วง";
         };
         String 7 // Description of Parameter 3
         {
@@ -37289,7 +38486,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "rea de celdas de la que se deben leer datos." ;
             Text [ english_us ] = "The range from which data is to be taken." ;
             Text[ chinese_simplified ] = "要读取数据的区域。";
-            Text[ russian ] = " ,       .";
+            Text[ russian ] = " ,       .";
             Text[ polish ] = "Zakres, z ktrego maj by odczytane dane.";
             Text[ japanese ] = "データが読み取られる範囲。";
             Text[ chinese_traditional ] = "要讀出的數據區域。";
@@ -37297,10 +38494,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Het bereik waaruit de gegevens moeten worden gelezen.";
             Text[ chinese_simplified ] = "要读取数据的区域。";
             Text[ greek ] = "   ";
-            Text[ korean ] = "데이터를 읽어올 범위입니다.";
+            Text[ korean ] = "데이터가 읽어질 범위입니다.";
             Text[ turkish ] = "Verilerin alnd aralk.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "rea des de la qual s'han de prendre les dades.";
+            Text[ thai ] = "ช่วงจากข้อมูลที่ได้";
         };
         String 8 // Name of Parameter 4
         {
@@ -37329,6 +38527,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "mode";
             Text[ finnish ] = "tila";
+            Text[ thai ] = "โหมด";
         };
         String 9 // Description of Parameter 4
         {
@@ -37342,14 +38541,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Definisce come i dati vengono convertiti in numeri." ;
             Text [ spanish ] = "Define cmo los datos se convierten en nmeros." ;
             Text [ french ] = "Dfinit comment convertir les donnes en nombres." ;
-            Text [ dutch ] = "Definieert, hoe de gegevens worden veranderd in getallen." ;
+            Text [ dutch ] = "Definieert, hoe de gegevens worden gewijzigd in getallen." ;
             Text[ chinese_simplified ] = "定义数据如何转换成数字。";
             Text[ russian ] = "     .";
             Text[ polish ] = "Okrela, jak zamienia dane w liczby.";
             Text[ japanese ] = "データがどのように数値に変換されるかの定義。";
             Text[ chinese_traditional ] = "定義數據如何轉換成數字。";
             Text[ arabic ] = "     .";
-            Text[ dutch ] = "Definieert, hoe de gegevens worden veranderd in getallen.";
+            Text[ dutch ] = "Definieert, hoe de gegevens worden gewijzigd in getallen.";
             Text[ chinese_simplified ] = "定义数据如何转换成数字。";
             Text[ greek ] = "             ";
             Text[ korean ] = "어떻게 데이터가 숫자로 변환되는지 정의하십시오.";
@@ -37357,6 +38556,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Especifica de quina manera s'han de convertir les dades en nombres.";
             Text[ finnish ] = "Mritt, miten tiedot muunnetaan luvuiksi.";
+            Text[ thai ] = "กำหนดว่าแปลงข้อมูลเป็นตัวเลขอย่างไร";
         };
     };
      // -=*# Resource for function CODE #*=-
@@ -37390,6 +38590,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Metnin ilk karakterinin kodunu verir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna un codi numric per al primer carcter d'una cadena de text.";
+            Text[ thai ] = "ส่งกลับรหัสตัวเลขสำหรับตัวอักขระตัวแรกในสายอักขระข้อความ";
         };
         ExtraData =
         {
@@ -37425,6 +38626,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Metin";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "text";
+            Text[ thai ] = "ข้อความ";
         };
         String 3 // Description of Parameter 1
         {
@@ -37455,6 +38657,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "lk karakterinin kodu bulunacak metin.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "D'aquest text s'ha de trobar el codi del primer carcter.";
+            Text[ thai ] = "นี้คือข้อความที่ไม่พบรหัสของตัวอักขระตัวแรก";
         };
     };
      // -=*# Resource for function DM #*=-
@@ -37477,7 +38680,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Convierte un nmero en texto usando un formato monetario" ;
             Text [ english_us ] = "Converts a number to text in currency format." ;
             Text[ chinese_simplified ] = "转换文字中的数字成一个货币格式。";
-            Text[ russian ] = "       .";
+            Text[ russian ] = "      ,       .";
             Text[ polish ] = "Przeksztaca liczb na tekst w formacie walutowym.";
             Text[ japanese ] = "数値を通貨書式の文字列に変換します。";
             Text[ chinese_traditional ] = "轉換文本中的數字成一個貨幣格式。";
@@ -37485,10 +38688,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Converteert een getal naar tekst op basis van de valutanotatie.";
             Text[ chinese_simplified ] = "转换文字中的数字成一个货币格式。";
             Text[ greek ] = "         .";
-            Text[ korean ] = "통화 형식에서 수값을 텍스트로 변환";
+            Text[ korean ] = "통화 서식에서 숫자를 텍스트로 변환합니다.";
             Text[ turkish ] = "Say deerini, para birimi formatndaki bir metne dntrr.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Converteix un nombre en text en format de moneda.";
+            Text[ thai ] = "แปลงตัวเลขเป็นข้อความในรูปแบบสกุลเงิน";
         };
         ExtraData =
         {
@@ -37524,6 +38728,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Deer";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "valor";
+            Text[ thai ] = "ค่า";
         };
         String 3 // Description of Parameter 1
         {
@@ -37542,7 +38747,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es un nmero, una referencia a una celda que contiene un nmero o una frmula que evala un nmero." ;
             Text [ english_us ] = "Value is a number, a reference to a cell containing a number or a formula that results in a number." ;
             Text[ chinese_simplified ] = "是一个数字,一个含有数字的单元格引用,\n或者是一个计算数字的公式。";
-            Text[ russian ] = "    ,  ,  ,     .";
+            Text[ russian ] = " -  ,    ,  ,  ,     .";
             Text[ polish ] = "Warto jest liczb, odwoaniem do komrki, ktra zawiera liczb lub rwnaniem, ktrego wynikiem jest liczba.";
             Text[ japanese ] = "数値あるいは数値が入力されているセル参照。";
             Text[ chinese_traditional ] = "是一個數字﹐一個含有數字的儲存格參照﹐或者是一個計算數字的公式。";
@@ -37553,7 +38758,8 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ korean ] = "값이란 수, 수를 포함하는 셀에 대한 참조 또는 그 결과가 수인 수식을 말합니다.";
             Text[ turkish ] = "Deer, bir say, say ieren bir hcre referans ya da say veren bir formldr.";
             Text[ language_user1 ] = " ";
-            Text[ catalan ] = "Valor s un nombre, una referncia a una cella que cont un nombre o a una frmula que torna un nombre.";
+            Text[ catalan ] = "Valor s un nombre, una referncia a una cel.la que cont un nombre o a una frmula que torna un nombre.";
+            Text[ thai ] = "ค่าเป็นตัวเลข อ้างถึงเซลล์ที่มีตัวเลขหรือสูตรว่าผลลัพธ์ในจำนวนหนึ่ง";
         };
         String 4 // Name of Parameter 2
         {
@@ -37571,7 +38777,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "nm_de_decimales" ;
             Text [ english_us ] = "decimals" ;
             Text[ chinese_simplified ] = "decimals";
-            Text[ russian ] = "_";
+            Text[ russian ] = " ";
             Text[ polish ] = "Dziesitne";
             Text[ japanese ] = "小数位";
             Text[ chinese_traditional ] = "decimals";
@@ -37583,6 +38789,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Ondalk haneler";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "decimals";
+            Text[ thai ] = "ทศนิยม";
         };
         String 5 // Description of Parameter 2
         {
@@ -37592,7 +38799,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Il numero di cifre a destra della virgola decimale." ;
             Text [ portuguese_brazilian ] = "Dezimalstellen. Ist die Anzahl der Ziffern rechts vom Dezimalkomma." ;
             Text [ portuguese ] = " o nmero de dgitos  direita da vrgula decimal." ;
-            Text [ finnish ] = "Desimaaleja! Mritt pilkun jlkeisten desimaalien mrn." ;
+            Text [ finnish ] = "Desimaaleja Mritt pilkun jlkeisten desimaalien mrn." ;
             Text [ danish ] = "Decimaler. Antallet af cifre til hjre for decimaltegnet." ;
             Text [ french ] = "Dcimales. Reprsente le nombre de chiffres  droite de la virgule." ;
             Text [ swedish ] = "Decimaler. r antalet siffror till hger om decimalkommat." ;
@@ -37600,7 +38807,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es el nmero de dgitos a la derecha del separador decimal." ;
             Text [ english_us ] = "Decimal places. Denotes the number of digits to the right of the decimal point." ;
             Text[ chinese_simplified ] = "小数点位数。是小数点右边的位数。";
-            Text[ russian ] = "     .";
+            Text[ russian ] = " .     .";
             Text[ polish ] = "Jest liczb cyfr na prawo od przecinka.";
             Text[ japanese ] = "小数点以下の桁数。";
             Text[ chinese_traditional ] = "小數點位數。是小數點右邊的位數。";
@@ -37608,10 +38815,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Decimalen. Is het aantal decimalen rechts van de decimale komma.";
             Text[ chinese_simplified ] = "小数点位数。是小数点右边的位数。";
             Text[ greek ] = " .          .";
-            Text[ korean ] = "소수점 자리. 소수점으로부터 오른쪽에 있는 숫자의 개수입니다.";
+            Text[ korean ] = "소수점 이하 자릿수. 소수점으로부터 오른쪽에 위치한 숫자의 개수입니다.";
             Text[ turkish ] = "Ondalk haneler. Virgln sandaki hanelerin saysdr.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre de decimals. Indica el nombre de d?gits a la dreta de la coma decimal.";
+            Text[ thai ] = "จุดทศนิยม  ใช้แทนตัวเลขที่ขวามือของจุดทศนิยม";
         };
     };
      // -=*# Resource for function ZEICHEN #*=-
@@ -37629,22 +38837,23 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ danish ] = "Konverterer en kode til et tegn eller bogstav." ;
             Text [ french ] = "Convertit un code numrique en caractre ou lettre." ;
             Text [ swedish ] = "Omvandlar ett kodtal till ett tecken eller bokstav." ;
-            Text [ dutch ] = "Verandert een codegetal in een teken of letter." ;
+            Text [ dutch ] = "Wijzigt een codegetal in een teken of letter." ;
             Text [ spanish ] = "Transforma un cdigo nmero en un carcter." ;
             Text [ english_us ] = "Converts a code number into a character or letter." ;
             Text[ chinese_simplified ] = "将数字代码转化成字符。";
-            Text[ russian ] = "      .";
+            Text[ russian ] = "   .";
             Text[ polish ] = "Zamienia liczb kodu w znak lub liter.";
             Text[ japanese ] = "コード番号に該当する文字を返します。";
             Text[ chinese_traditional ] = "將數字代碼轉化成字元。";
             Text[ arabic ] = "      .";
-            Text[ dutch ] = "Verandert een codegetal in een teken of letter.";
+            Text[ dutch ] = "Wijzigt een codegetal in een teken of letter.";
             Text[ chinese_simplified ] = "将数字代码转化成字符。";
             Text[ greek ] = "           .";
             Text[ korean ] = "코드 번호를 문자로 변환";
             Text[ turkish ] = "Kod saysn karakter ya da harfe dntrr.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Converteix un nombre de codi en un carcter o lletra.";
+            Text[ thai ] = "แปลงเลขรหัสเป็นตัวอักขระหรือตัวอักษร";
         };
         ExtraData =
         {
@@ -37680,6 +38889,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -37690,7 +38900,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Il codice per il carattere" ;
             Text [ portuguese_brazilian ] = "Der Codewert f? das Zeichen" ;
             Text [ portuguese ] = " um nmero entre 1 e 255 que especifica o carcter desejado." ;
-            Text [ finnish ] = "Merkin koodiarvo." ;
+            Text [ finnish ] = "Merkin koodiarvo" ;
             Text [ danish ] = "Tegnets kodevrdi" ;
             Text [ french ] = "Valeur code pour le caractre" ;
             Text [ swedish ] = "Kodvrdet fr tecknet." ;
@@ -37698,7 +38908,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es un nmero entre 1 y 255 que especifica el carcter deseado" ;
             Text [ english_us ] = "The code value for the character." ;
             Text[ chinese_simplified ] = "字符的代码值。";
-            Text[ russian ] = "    1  255,    .";
+            Text[ russian ] = "  .";
             Text[ polish ] = "Warto kodu dla znaku";
             Text[ japanese ] = "数値には返したい文字を表す1から255、および8481から39038までの数値を指定します。";
             Text[ chinese_traditional ] = "字元的代碼值。";
@@ -37710,6 +38920,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Karakterin kod deeri";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor de codi per al carcter.";
+            Text[ thai ] = "ค่ารหัสสำหรับตัวอักขระ";
         };
     };
      // -=*# Resource for function SUBERN #*=-
@@ -37729,7 +38940,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ french ] = "Supprime tous les caractres non-imprimables du texte." ;
             Text [ swedish ] = "Raderar tecken som inte kan skrivas ut frn en text." ;
             Text [ dutch ] = "Verwijdert niet-afdrukbare tekens uit de tekst." ;
-            Text [ spanish ] = "Elimina del texto caracteres no imprimibles." ;
+            Text [ spanish ] = "Borra todos los caracteres no imprimibles del texto." ;
             Text [ english_us ] = "Removes all nonprintable characters from text." ;
             Text[ chinese_simplified ] = "删除文字中不能打印的字符。";
             Text[ russian ] = "     .";
@@ -37740,10 +38951,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Verwijdert niet-afdrukbare tekens uit de tekst.";
             Text[ chinese_simplified ] = "删除文字中不能打印的字符。";
             Text[ greek ] = "            .";
-            Text[ korean ] = "텍스트에서 단락 기호 표시 삭제";
+            Text[ korean ] = "인쇄할 수 없는 문자를 문자열로부터 제거합니다.";
             Text[ turkish ] = "Yazdrlamayan karakterleri metinden siler.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Suprimeix del text tots els carcters no imprimibles.";
+            Text[ thai ] = "เอาตัวอักขระที่ไม่สามารถพิมพ์ได้ทั้งหมดออกจากข้อความ";
         };
         ExtraData =
         {
@@ -37779,6 +38991,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Metin";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "text";
+            Text[ thai ] = "ข้อความ";
         };
         String 3 // Description of Parameter 1
         {
@@ -37793,7 +39006,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ french ] = "Le texte dont vous voulez supprimer les caractres non-imprimables." ;
             Text [ swedish ] = "Texten frn vilken tecknen, som inte kan skrivas ut, tas bort." ;
             Text [ dutch ] = "De tekst waaruit de niet-afdrukbare tekens worden verwijderd." ;
-            Text [ spanish ] = "Es el texto del que se eliminan los caracteres no imprimibles." ;
+            Text [ spanish ] = "Es el texto del que se borran los caracteres no imprimibles." ;
             Text [ english_us ] = "The text from which nonprintable characters are to be removed." ;
             Text[ chinese_simplified ] = "要从中删除无法打印字符的文字。";
             Text[ russian ] = ",     .";
@@ -37804,10 +39017,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "De tekst waaruit de niet-afdrukbare tekens worden verwijderd.";
             Text[ chinese_simplified ] = "要从中删除无法打印字符的文字。";
             Text[ greek ] = "              .";
-            Text[ korean ] = "단락 기호 표시를 삭제해야 하는 텍스트";
+            Text[ korean ] = "인쇄할 수 없는 문자를 문자열에서 제거합니다.";
             Text[ turkish ] = "Yazdrlamayan karakterlerin silinecei metin.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Text els carcters no imprimibles del qual s'han de suprimir.";
+            Text[ thai ] = "เอาตัวอักขระที่ไม่สามารถพิมพ์ได้ออกจากข้อความ";
         };
     };
      // -=*# Resource for function VERKETTEN #*=-
@@ -37829,7 +39043,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Agrupa varios textos en uno slo." ;
             Text [ english_us ] = "Combines several text items into one." ;
             Text[ chinese_simplified ] = "将若干文字串合并到一个文字串中。";
-            Text[ russian ] = "    .";
+            Text[ russian ] = "      .";
             Text[ polish ] = "czy elementy tekstu w jeden.";
             Text[ japanese ] = "複数の文字列を1つに結合します。";
             Text[ chinese_traditional ] = "將若干文字串合併到一個文字串中。";
@@ -37841,6 +39055,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Metinleri tek bir metinde birletirir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Combina diversos elements de text en un.";
+            Text[ thai ] = "เชื่อมหลายข้อความเป็นหนึ่งข้อความ";
         };
         ExtraData =
         {
@@ -37856,26 +39071,27 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Testo " ;
             Text [ portuguese_brazilian ] = "Text " ;
             Text [ portuguese ] = "Texto " ;
-            Text [ finnish ] = "teksti" ;
+            Text [ finnish ] = "teksti " ;
             Text [ danish ] = "Tekst " ;
             Text [ french ] = "Texte  " ;
             Text [ swedish ] = "text  " ;
-            Text [ dutch ] = "Tekst  " ;
+            Text [ dutch ] = "Tekst" ;
             Text [ spanish ] = "texto " ;
             Text [ english_us ] = "text " ;
             Text[ chinese_simplified ] = "text ";
-            Text[ russian ] = "  ";
+            Text[ russian ] = " ";
             Text[ polish ] = "Tekst  ";
             Text[ japanese ] = "文字列 ";
             Text[ chinese_traditional ] = "text ";
             Text[ arabic ] = " ";
-            Text[ dutch ] = "Tekst  ";
+            Text[ dutch ] = "Tekst";
             Text[ chinese_simplified ] = "text ";
             Text[ greek ] = " ";
             Text[ korean ] = "텍스트 ";
             Text[ turkish ] = "Metin ";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "text ";
+            Text[ thai ] = "ข้อความ";
         };
         String 3 // Description of Parameter 1
         {
@@ -37886,7 +39102,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Testo da unire." ;
             Text [ portuguese_brazilian ] = "Text f? die Textverkettung." ;
             Text [ portuguese ] = " 1 de 30  textos a serem agrupados num nico." ;
-            Text [ finnish ] = "Yhdistettv teksti." ;
+            Text [ finnish ] = "Yhdistettv teksti" ;
             Text [ danish ] = "Tekst som skal sammenkdes." ;
             Text [ french ] = "lment de texte pour la concatnation." ;
             Text [ swedish ] = "Text fr textlnkningen." ;
@@ -37894,7 +39110,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Texto 1; texto 2 ;...son los textos que se agruparn en uno slo." ;
             Text [ english_us ] = "Text for the concatentation." ;
             Text[ chinese_simplified ] = "是将要合并的字串。";
-            Text[ russian ] = " 1;  2;... 1  30  ,     .";
+            Text[ russian ] = "  .";
             Text[ polish ] = "Od 1 do 30 cigw znakw, ktre maj by poczone w jeden cig.";
             Text[ japanese ] = "結合する文字列。";
             Text[ chinese_traditional ] = "是將要合併的字串。";
@@ -37906,6 +39122,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Metin birletirmesi ile ilgili metin.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Text per a la concatenaci.";
+            Text[ thai ] = "ข้อความสำหรับ concatentation";
         };
     };
      // -=*# Resource for function IDENTISCH #*=-
@@ -37919,7 +39136,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Stabilisce se due testi sono uguali." ;
             Text [ portuguese_brazilian ] = "Gibt an, ob zwei Texte gleich sind" ;
             Text [ portuguese ] = "Compara se dois textos so iguais, indicando VERDADEIRO no caso de o serem; FALSO no caso contrrio." ;
-            Text [ finnish ] = "Mritt ovatko kaksi teksti identtiset." ;
+            Text [ finnish ] = "Mritt, ovatko kaksi teksti identtiset." ;
             Text [ danish ] = "Kontrollerer, om to tekster er identiske." ;
             Text [ french ] = "Indique si deux textes sont identiques." ;
             Text [ swedish ] = "Anger om tv texter r lika." ;
@@ -37927,7 +39144,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Compara si dos textos son idnticos" ;
             Text [ english_us ] = "Specifies whether two texts are identical." ;
             Text[ chinese_simplified ] = "比较两个字符串是否相同。";
-            Text[ russian ] = "   .";
+            Text[ russian ] = "   ,   ,   ,  ,   .";
             Text[ polish ] = "Podaje, czy dwa teksty s identyczne.";
             Text[ japanese ] = "2つの文字列が同じかどうかを検査します。";
             Text[ chinese_traditional ] = "比較兩個字元串是否相同。";
@@ -37939,6 +39156,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "ki metnin ayn olup olmadn belirler.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Indica si dos texts sn idntics.";
+            Text[ thai ] = "ระบุว่าข้อความสองข้อความเหมือนกัน";
         };
         ExtraData =
         {
@@ -37962,7 +39180,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "texto_1" ;
             Text [ english_us ] = "text_1" ;
             Text[ chinese_simplified ] = "text_1";
-            Text[ russian ] = "_1";
+            Text[ russian ] = " 1";
             Text[ polish ] = "Tekst_1";
             Text[ japanese ] = "文字列 1";
             Text[ chinese_traditional ] = "text_1";
@@ -37974,6 +39192,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Metin_1";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "text_1";
+            Text[ thai ] = "ข้อความ_1";
         };
         String 3 // Description of Parameter 1
         {
@@ -37984,7 +39203,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Il primo testo per il confronto." ;
             Text [ portuguese_brazilian ] = "Der erste Text f? den Textvergleich." ;
             Text [ portuguese ] = " o primeiro texto para a comparao." ;
-            Text [ finnish ] = "Ensimminen tekstien vertailussa kytettv teksti." ;
+            Text [ finnish ] = "Ensimminen tekstien vertailussa kytettv teksti" ;
             Text [ danish ] = "Den frste tekst til sammenligning." ;
             Text [ french ] = "Le premier texte pour la comparaison." ;
             Text [ swedish ] = "Den frsta texten fr textjmfrelsen." ;
@@ -38004,6 +39223,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Karlatrma iin kullanlacak birinci metin.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Primer text que s'ha d'utilitzar per comparar texts.";
+            Text[ thai ] = "ใช้ข้อความแรกสำหรับการเปรียบเทียบข้อความ";
         };
         String 4 // Name of Parameter 2
         {
@@ -38021,7 +39241,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "texto_2" ;
             Text [ english_us ] = "text_2" ;
             Text[ chinese_simplified ] = "text_2";
-            Text[ russian ] = "_2";
+            Text[ russian ] = " 2";
             Text[ polish ] = "Tekst_2";
             Text[ japanese ] = "文字列 2";
             Text[ chinese_traditional ] = "text_2";
@@ -38033,6 +39253,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Metin_2";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "text_2";
+            Text[ thai ] = "ข้อความ_2";
         };
         String 5 // Description of Parameter 2
         {
@@ -38043,7 +39264,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Il secondo testo per il confronto." ;
             Text [ portuguese_brazilian ] = "Der zweite Text f? den Textvergleich." ;
             Text [ portuguese ] = " o segundo texto para a comparao." ;
-            Text [ finnish ] = "Toinen tekstien vertailussa kytettv teksti." ;
+            Text [ finnish ] = "Toinen tekstien vertailussa kytettv teksti" ;
             Text [ danish ] = "Den anden tekst til sammenligning." ;
             Text [ french ] = "Le deuxime texte pour la comparaison." ;
             Text [ swedish ] = "Den andra texten fr textjmfrelsen." ;
@@ -38063,6 +39284,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Karlatrma iin kullanlacak ikinci metin.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Segon text per comparar texts.";
+            Text[ thai ] = "ข้อความที่สองสำหรับการเปรียบเทียบข้อความ";
         };
     };
      // -=*# Resource for function FINDEN #*=-
@@ -38077,7 +39299,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Cerca una parola (o una sua parte) in un testo tenendo in conto le maiuscole/minuscole." ;
             Text [ portuguese_brazilian ] = "Sucht ein Teilwort in einem Text unter Ber?ksichtigung von Gro?- und Kleinschreibung." ;
             Text [ portuguese ] = "Procura um texto dentro de um outro texto, distinguindo as maisculas e as minsculas." ;
-            Text [ finnish ] = "Etsii merkkijonoa tekstist (kirjainkoon erottelu)" ;
+            Text [ finnish ] = "Etsii merkkijonoa tekstist (kirjainkoon erottelu)." ;
             Text [ danish ] = "Finder en tekststreng i en tekst (skelner mellem store og sm bogstaver)." ;
             Text [ french ] = "Recherche une chane de texte dans un texte en respectant la casse (majuscules et minuscules)." ;
             Text [ swedish ] = "Sker efter en textstrng i en text (versalknslig)." ;
@@ -38085,7 +39307,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Busca un valor de texto dentro de otro tomando en cuenta las maysculas y minsculas." ;
             Text [ english_us ] = "Looks for a string of text within another (case sensitive)" ;
             Text[ chinese_simplified ] = "以区分大小写字母的方式在一个字串内查找某一个字串。";
-            Text[ russian ] = "       .";
+            Text[ russian ] = "     (  ).";
             Text[ polish ] = "Wyszukuje cz sowa w tekcie uwzgldniajc wielkie i mae litery.";
             Text[ japanese ] = "検査対象の文字列の中にある、特定の文字列の位置を返します。アルファベットの大文字と小文字が区別できます。";
             Text[ chinese_traditional ] = "以區分字母大小寫的方式在一個字串內查找某一個字串。";
@@ -38097,6 +39319,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Metin iinde szck paralar arar (byk/kk harf duyarl).";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Cerca una cadena de text dins d'una altra (distingeix entre majscules i minscules)";
+            Text[ thai ] = "หาสายอักขระของข้อความในข้อความอื่น (ตรงตามตัวพิมพ์ใหญ่-เล็ก)";
         };
         ExtraData =
         {
@@ -38117,7 +39340,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ french ] = "Texte_cherch" ;
             Text [ swedish ] = "sktext" ;
             Text [ dutch ] = "Zoektekst" ;
-            Text [ spanish ] = "texto a buscar" ;
+            Text [ spanish ] = "texto buscado" ;
             Text [ english_us ] = "find_text" ;
             Text[ chinese_simplified ] = "find_text";
             Text[ russian ] = "_";
@@ -38128,10 +39351,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Zoektekst";
             Text[ chinese_simplified ] = "find_text";
             Text[ greek ] = "_";
-            Text[ korean ] = "찾기_텍스트";
+            Text[ korean ] = "검색 문자열";
             Text[ turkish ] = "Aranan metin";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "find_text";
+            Text[ thai ] = "หา_ข้อความ";
         };
         String 3 // Description of Parameter 1
         {
@@ -38141,7 +39365,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Il testo che si desidera trovare." ;
             Text [ portuguese_brazilian ] = "Der Text, der gesucht wird." ;
             Text [ portuguese ] = " o texto que se deseja localizar." ;
-            Text [ finnish ] = "Haettava teksti." ;
+            Text [ finnish ] = "Haettava teksti" ;
             Text [ danish ] = "Den tekst som sges." ;
             Text [ french ] = "Le texte que vous recherchez." ;
             Text [ swedish ] = "Texten som sks." ;
@@ -38161,6 +39385,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Aranacak metin.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Text que s'ha de trobar.";
+            Text[ thai ] = "ไม่พบข้อความ";
         };
         String 4 // Name of Parameter 2
         {
@@ -38190,6 +39415,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Metin";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "text";
+            Text[ thai ] = "ข้อความ";
         };
         String 5 // Description of Parameter 2
         {
@@ -38199,7 +39425,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Il testo in cui ricercare." ;
             Text [ portuguese_brazilian ] = "Der Text, in dem gesucht wird." ;
             Text [ portuguese ] = " o texto que contm o texto que deseja localizar." ;
-            Text [ finnish ] = "Teksti, josta haetaan." ;
+            Text [ finnish ] = "Teksti, josta haetaan" ;
             Text [ danish ] = "Den tekst der skal sges i." ;
             Text [ french ] = "Le texte dans lequel effectuer la recherche." ;
             Text [ swedish ] = "Texten som det sks i." ;
@@ -38219,6 +39445,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Arama yaplacak metin.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Text en qu s'ha de fer la cerca.";
+            Text[ thai ] = "ทำการค้นหาในข้อความ";
         };
         String 6 // Name of Parameter 3
         {
@@ -38245,9 +39472,10 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Positie";
             Text[ chinese_simplified ] = "start_num";
             Text[ greek ] = "";
-            Text[ korean ] = "위치";
+            Text[ korean ] = "시작 위치";
             Text[ turkish ] = "Konum";
             Text[ catalan ] = "posici";
+            Text[ thai ] = "ตำแหน่ง";
         };
         String 7 // Description of Parameter 3
         {
@@ -38257,7 +39485,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "La posizione del testo in corrispondenza del quale inizia la ricerca." ;
             Text [ portuguese_brazilian ] = "Die Position im Text, ab der gesucht wird" ;
             Text [ portuguese ] = "especifica a posio do texto a partir da qual ser iniciada a procura." ;
-            Text [ finnish ] = "Haun aloituskohta tekstiss." ;
+            Text [ finnish ] = "Haun aloituskohta tekstiss" ;
             Text [ danish ] = "Den position i teksten sgningen skal starte fra." ;
             Text [ french ] = "La position dans le texte  partir de laquelle la recherche doit commencer." ;
             Text [ swedish ] = "Positionen i texten varifrn skningen sker." ;
@@ -38265,7 +39493,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "especifica el carcter a partir del que comenzar la bsqueda" ;
             Text [ english_us ] = "The position in the text from which the search starts." ;
             Text[ chinese_simplified ] = "开始查找的起始字符位置。";
-            Text[ russian ] = "  ,     .";
+            Text[ russian ] = "  ,    .";
             Text[ polish ] = "Pozycja w tekcie, od ktrej nastpi wyszukiwanie";
             Text[ japanese ] = "文字列で検索する開始位置。";
             Text[ chinese_traditional ] = "開始查找的起始字元位置。";
@@ -38277,6 +39505,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Aramann balatlaca metin konumu.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Posici en el text des de la qual s'inicia la cerca.";
+            Text[ thai ] = "ตำแหน่งในข้อความจากที่เริ่มค้นหา";
         };
     };
      // -=*# Resource for function SUCHEN #*=-
@@ -38299,7 +39528,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Busca un valor de texto dentro de otro sin reconocer maysculas o minsculas." ;
             Text [ english_us ] = "Looks for one text value within another (not case-sensitive)." ;
             Text[ chinese_simplified ] = "在字串内查找字符或字串的位置,不区分字母大小写。";
-            Text[ russian ] = "       .";
+            Text[ russian ] = "    .";
             Text[ polish ] = "Znajduje wystpienie tekstu w innym acuchu tekstowym (nie rozrniajc duych i maych liter).";
             Text[ japanese ] = "検査対象の文字列の中にある、特定の文字列の位置を返します。アルファベットの大文字と小文字は区別されません。";
             Text[ chinese_traditional ] = "在字串內查找字符或字符串的位置,不區分字母大小寫。";
@@ -38307,10 +39536,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Zoekt een tekenreeks in een tekst (er wordt geen onderscheid gemaakt tussen hoofdletters en kleine letters).";
             Text[ chinese_simplified ] = "在字串内查找字符或字串的位置,不区分字母大小写。";
             Text[ greek ] = "           .";
-            Text[ korean ] = "대/소문자 구분 없이 텍스트에서 반단어 찾기";
+            Text[ korean ] = "검색 대상 문자열에서 특정 문자열을 알파벳의 대문자 및 소문자 구분없이 찾습니다.";
             Text[ turkish ] = "Metin iinde metin esi arar (Byk/kk harf duyarl deil).";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Cerca un valor de text dins d'un altre (no distingeix entre majscules i minscules).";
+            Text[ thai ] = "หาค่าข้อความหนึ่งในข้อความอื่น (ไม่ตรงตามตัวพิมพ์ใหญ่-เล็ก)";
         };
         ExtraData =
         {
@@ -38331,10 +39561,10 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ french ] = "Texte_cherch" ;
             Text [ swedish ] = "sktext" ;
             Text [ dutch ] = "Zoektekst" ;
-            Text [ spanish ] = "texto a buscar" ;
+            Text [ spanish ] = "texto buscado" ;
             Text [ english_us ] = "find_text" ;
             Text[ chinese_simplified ] = "find_text";
-            Text[ russian ] = " ";
+            Text[ russian ] = "_";
             Text[ polish ] = "Szukany_tekst";
             Text[ japanese ] = "検索文字列";
             Text[ chinese_traditional ] = "find_text";
@@ -38342,10 +39572,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Zoektekst";
             Text[ chinese_simplified ] = "find_text";
             Text[ greek ] = "_";
-            Text[ korean ] = "검색 텍스트";
+            Text[ korean ] = "검색 문자열";
             Text[ turkish ] = "Aranan metin.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "find_text";
+            Text[ thai ] = "หา_ข้อความ";
         };
         String 3 // Description of Parameter 1
         {
@@ -38355,7 +39586,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Il testo da trovare." ;
             Text [ portuguese_brazilian ] = "Der Text, der gesucht wird." ;
             Text [ portuguese ] = " o texto que deseja localizar." ;
-            Text [ finnish ] = "Haettava teksti." ;
+            Text [ finnish ] = "Haettava teksti" ;
             Text [ danish ] = "Den tekst som sges." ;
             Text [ french ] = "Le texte que vous recherchez." ;
             Text [ swedish ] = "Texten som sks." ;
@@ -38375,6 +39606,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Aranacak metin.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Text que s'ha de trobar.";
+            Text[ thai ] = "ไม่พบข้อความ";
         };
         String 4 // Name of Parameter 2
         {
@@ -38404,6 +39636,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Metin";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "text";
+            Text[ thai ] = "ข้อความ";
         };
         String 5 // Description of Parameter 2
         {
@@ -38413,11 +39646,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Il testo all'interno del quale si desidera effettuare la ricerca." ;
             Text [ portuguese_brazilian ] = "Der Text, in dem gesucht wird." ;
             Text [ portuguese ] = " o texto que contm o texto que deseja localizar." ;
-            Text [ finnish ] = "Teksti, josta haetaan." ;
+            Text [ finnish ] = "Teksti, josta haetaan" ;
             Text [ danish ] = "Den tekst der skal sges i." ;
             Text [ french ] = "Le texte dans lequel effectuer la recherche." ;
             Text [ swedish ] = "Texten dr det skall skas." ;
-            Text [ dutch ] = "Der tekst waarin wordt gezocht." ;
+            Text [ dutch ] = "De tekst waarin wordt gezocht." ;
             Text [ spanish ] = "es el texto en el que se desea encontrar texto_buscado." ;
             Text [ english_us ] = "The text in which a search is to be made." ;
             Text[ chinese_simplified ] = "要在其中查找的字串。";
@@ -38426,13 +39659,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ japanese ] = "検索文字列を含む文字列。";
             Text[ chinese_traditional ] = "要在其中查找的字串。";
             Text[ arabic ] = "    .";
-            Text[ dutch ] = "Der tekst waarin wordt gezocht.";
+            Text[ dutch ] = "De tekst waarin wordt gezocht.";
             Text[ chinese_simplified ] = "要在其中查找的字串。";
             Text[ greek ] = "       .";
             Text[ korean ] = "검색이 행해지는 텍스트";
             Text[ turkish ] = "Arama yaplan metin.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Text en qu s'ha de fer la cerca.";
+            Text[ thai ] = "ทำการค้นหาในข้อความ";
         };
         String 6 // Name of Parameter 3
         {
@@ -38458,10 +39692,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Positie";
             Text[ chinese_simplified ] = "start_num";
             Text[ greek ] = "start_num";
-            Text[ korean ] = "위치";
+            Text[ korean ] = "시작 위치";
             Text[ turkish ] = "Konum";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "posici";
+            Text[ thai ] = "ตำแหน่ง";
         };
         String 7 // Description of Parameter 3
         {
@@ -38471,7 +39706,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "La posizione del testo a partire dalla quale si desidera iniziare la ricerca." ;
             Text [ portuguese_brazilian ] = "Die Position im Text, ab der gesucht wird" ;
             Text [ portuguese ] = "especifica a posio do texto a partir da qual ser iniciada a procura." ;
-            Text [ finnish ] = "Haun aloituskohta tekstiss." ;
+            Text [ finnish ] = "Haun aloituskohta tekstiss" ;
             Text [ danish ] = "Den position i teksten sgningen skal starte fra." ;
             Text [ french ] = "La position dans le texte  partir de laquelle la recherche doit commencer." ;
             Text [ swedish ] = "Positionen i texten dr skningen skall brja." ;
@@ -38491,6 +39726,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Aramann balatlaca metin konumu.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Posici en el text on s'inicia la cerca.";
+            Text[ thai ] = "ตำแหน่งในข้อความที่เริ่มค้นหา";
         };
     };
      // -=*# Resource for function GLTTEN #*=-
@@ -38510,7 +39746,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ french ] = "Supprime tous les espaces surperflus entre les mots." ;
             Text [ swedish ] = "Raderar alla verfldiga mellanslag mellan ord." ;
             Text [ dutch ] = "Verwijdert overbodige spaties tussen woorden." ;
-            Text [ spanish ] = "Elimina los espacios del texto, excepto el espacio normal que se deja entre palabras." ;
+            Text [ spanish ] = "Borra los espacios superfluos entre las palabras." ;
             Text [ english_us ] = "Removes extra spaces from text." ;
             Text[ chinese_simplified ] = "删除字串中的空格。";
             Text[ russian ] = "    .";
@@ -38521,10 +39757,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Verwijdert overbodige spaties tussen woorden.";
             Text[ chinese_simplified ] = "删除字串中的空格。";
             Text[ greek ] = "     .";
-            Text[ korean ] = "텍스트에서 여분의 공백을 삭제";
+            Text[ korean ] = "문자 사이의 여분의 공백을 제거합니다.";
             Text[ turkish ] = "Szckler arasndaki fazla boluklar siler.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Elimina del text els espais extra.";
+            Text[ thai ] = "เอาช่องว่างที่เกินออกจากข้อความ";
         };
         ExtraData =
         {
@@ -38560,6 +39797,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Metin";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "text";
+            Text[ thai ] = "ข้อความ";
         };
         String 3 // Description of Parameter 1
         {
@@ -38575,7 +39813,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ french ] = "Le texte dans lequel vous voulez supprimer les espaces superflus entre les mots." ;
             Text [ swedish ] = "Texten dr verfldiga mellanslag mellan ord tas bort." ;
             Text [ dutch ] = "De tekst waarin overbodige spaties tussen woorden worden verwijderd." ;
-            Text [ spanish ] = "es el texto del que desea quitar espacios adicionales.." ;
+            Text [ spanish ] = "El texto del que desean borrar los espacios superfluos entre palabras." ;
             Text [ english_us ] = "The text in which extra spaces between words are to be deleted." ;
             Text[ chinese_simplified ] = "需要删除其中空格的字串。";
             Text[ russian ] = ",       .";
@@ -38586,10 +39824,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "De tekst waarin overbodige spaties tussen woorden worden verwijderd.";
             Text[ chinese_simplified ] = "需要删除其中空格的字串。";
             Text[ greek ] = "            .";
-            Text[ korean ] = "단어 사이 여분 공백이 삭제될 텍스트";
+            Text[ korean ] = "어두의 여분 공백을 삭제하는 문자열";
             Text[ turkish ] = "Szckler arasndaki fazla boluklarn silinecei metin.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Text els espais extra entre paraules del qual s'han de suprimir.";
+            Text[ thai ] = "ลบช่องว่างที่เกินระหว่างคำในข้อความ";
         };
     };
      // -=*# Resource for function GROSS2 #*=-
@@ -38608,7 +39847,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ danish ] = "Konverterer frste bogstav i hvert ord til store bogstav." ;
             Text [ french ] = "Met en majuscule la premire lettre de chaque mot." ;
             Text [ swedish ] = "Omvandlar begynnelsebokstverna i alla ord till stora bokstver." ;
-            Text [ dutch ] = "Verandert de eerste letter van elk woord in een hoofdletter." ;
+            Text [ dutch ] = "Wijzigt de eerste letter van elk woord in een hoofdletter." ;
             Text [ spanish ] = "Convierte en mayscula la primera letra de cada palabra de un valor de texto." ;
             Text [ english_us ] = "Capitalizes the first letter in all words." ;
             Text[ chinese_simplified ] = "将所有首字母及任何非字母字符之后的首字母转换成大写。";
@@ -38617,13 +39856,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ japanese ] = "文字列中のアルファベット単語の先頭文字を大文字に変換します。";
             Text[ chinese_traditional ] = "將所有首字母及任何非字母字元之後的首字母轉換成大寫。";
             Text[ arabic ] = "      .";
-            Text[ dutch ] = "Verandert de eerste letter van elk woord in een hoofdletter.";
+            Text[ dutch ] = "Wijzigt de eerste letter van elk woord in een hoofdletter.";
             Text[ chinese_simplified ] = "将所有首字母及任何非字母字符之后的首字母转换成大写。";
             Text[ greek ] = "        .";
-            Text[ korean ] = "모든 단어의 첫 글자를 대문자로 변환";
+            Text[ korean ] = "텍스트에서 모든 알파벳 단어의 첫 글자를 대문자로 변환합니다.";
             Text[ turkish ] = "Tm szcklerde ilk harfi byk harfe dntrr.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Posa en majscula la primera lletra de totes les paraules.";
+            Text[ thai ] = "ทำตัวอักษรตัวแรกในทุกคำเป็นตัวพิมพ์ใหญ่";
         };
         ExtraData =
         {
@@ -38659,6 +39899,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Metin";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "text";
+            Text[ thai ] = "ข้อความ";
         };
         String 3 // Description of Parameter 1
         {
@@ -38673,7 +39914,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ danish ] = "Teksten i hvilken frste bogstav i hvert ord skal konverteres til stort." ;
             Text [ french ] = "Le texte dont des dbuts de mots doivent tre remplacs par des majuscules." ;
             Text [ swedish ] = "Texten dr begynnelsebokstver erstts av stora bokstver." ;
-            Text [ dutch ] = "De tekst waarin de eerste letter van ieder woord veranderd wordt in een hoofdletter." ;
+            Text [ dutch ] = "De tekst waarin de eerste letter van ieder woord wijzigt, wordt in een hoofdletter." ;
             Text [ spanish ] = "es el texto entre comillas, una frmula que devuelve texto o una referencia a una celda que contiene el texto al que se desea aadir maysculas iniciales." ;
             Text [ english_us ] = "The text in which the beginning of words are to be replaced by capital letters." ;
             Text[ chinese_simplified ] = "需要进行转换的字符串。";
@@ -38682,13 +39923,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ japanese ] = "アルファベット単語の先頭文字を大文字に変換する文字列。";
             Text[ chinese_traditional ] = "需要進行轉換的字串。";
             Text[ arabic ] = "         .";
-            Text[ dutch ] = "De tekst waarin de eerste letter van ieder woord veranderd wordt in een hoofdletter.";
+            Text[ dutch ] = "De tekst waarin de eerste letter van ieder woord wijzigt, wordt in een hoofdletter.";
             Text[ chinese_simplified ] = "需要进行转换的字符串。";
             Text[ greek ] = " ,            .";
-            Text[ korean ] = "단어 시작이 대문자로 변경되는 텍스트.";
+            Text[ korean ] = "알파벳 단어의 첫 글자를 대문자로 바꿀 문자열";
             Text[ turkish ] = "Szcklerin ilk harfleri byk harfe dntrlen metin.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Text el comenament de totes les paraules del qual s'ha de reemplaar per majscules.";
+            Text[ thai ] = "แทนที่ส่วนเริ่มต้นของคำในข้อความด้วยตัวพิมพ์ใหญ่";
         };
     };
      // -=*# Resource for function GROSS #*=-
@@ -38707,22 +39949,23 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ danish ] = "Konverterer alle bogstaver i en tekst til store bogstaver." ;
             Text [ french ] = "Convertit toutes les lettres d'un texte en majuscules." ;
             Text [ swedish ] = "Omvandlar alla bokstver i en text till stora bokstver." ;
-            Text [ dutch ] = "Verandert alle letters in een tekst in hoofdletters." ;
+            Text [ dutch ] = "Wijzigt alle letters in een tekst in hoofdletters." ;
             Text [ spanish ] = "Convierte el texto en maysculas." ;
             Text [ english_us ] = "Converts text to uppercase." ;
             Text[ chinese_simplified ] = "将字串内的所有字母转换成大写字母。";
-            Text[ russian ] = "     .";
+            Text[ russian ] = "      .";
             Text[ polish ] = "Zamienia wszystkie litery tekstu na due.";
             Text[ japanese ] = "文字列に含まれるアルファベットをすべて大文字に変換します。";
             Text[ chinese_traditional ] = "將字串內的所有字母轉換成大寫字母。";
             Text[ arabic ] = "        .";
-            Text[ dutch ] = "Verandert alle letters in een tekst in hoofdletters.";
+            Text[ dutch ] = "Wijzigt alle letters in een tekst in hoofdletters.";
             Text[ chinese_simplified ] = "将字串内的所有字母转换成大写字母。";
             Text[ greek ] = "       .";
             Text[ korean ] = "텍스트의 모든 문자를 대문자로 변환";
             Text[ turkish ] = "Metin iindeki tm harfleri byk harflere dntrr.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Converteix el text en majscules.";
+            Text[ thai ] = "แปลงข้อความเป็นตัวพิมพ์ใหญ่";
         };
         ExtraData =
         {
@@ -38758,6 +40001,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Metin";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "text";
+            Text[ thai ] = "ข้อความ";
         };
         String 3 // Description of Parameter 1
         {
@@ -38788,6 +40032,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Kk harflerin, byk harfler ile deitirildii metin.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Text les minscules del qual s'han de convertir en majscules.";
+            Text[ thai ] = "แปลงตัวพิมพ์เล็กในข้อความเป็นตัวพิมพ์ใหญ่";
         };
     };
      // -=*# Resource for function KLEIN #*=-
@@ -38805,22 +40050,23 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ danish ] = "Konverterer alle bogstaver i en tekst til sm bogstaver." ;
             Text [ french ] = "Convertit toutes les lettres d'un texte minuscules." ;
             Text [ swedish ] = "Omvandlar alla bokstver i en text till sm bokstver." ;
-            Text [ dutch ] = "Verandert alle letters in een tekst in kleine letters." ;
+            Text [ dutch ] = "Wijzigt alle letters in een tekst in kleine letters." ;
             Text [ spanish ] = "Convierte todas las maysculas de una cadena de texto en minsculas." ;
             Text [ english_us ] = "Converts text to lowercase." ;
             Text[ chinese_simplified ] = "将文字串中的所有字母转换为小写字母。";
-            Text[ russian ] = "     .";
+            Text[ russian ] = "      .";
             Text[ polish ] = "Zamienia wszystkie litery tekstu na mae.";
             Text[ japanese ] = "文字列に含まれるアルファベットをすべて小文字に変換します。";
             Text[ chinese_traditional ] = "將字串中的所有字母轉換為小寫字母。";
             Text[ arabic ] = "        .";
-            Text[ dutch ] = "Verandert alle letters in een tekst in kleine letters.";
+            Text[ dutch ] = "Wijzigt alle letters in een tekst in kleine letters.";
             Text[ chinese_simplified ] = "将文字串中的所有字母转换为小写字母。";
             Text[ greek ] = "       .";
             Text[ korean ] = "텍스트의 모든 문자를 소문자로 변환";
             Text[ turkish ] = "Metin iindeki tm harfleri kk harflere dntrr.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Converteix el text en minscules.";
+            Text[ thai ] = "แปลงข้อความเป็นตัวพิมพ์เล็ก";
         };
         ExtraData =
         {
@@ -38856,6 +40102,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Metin";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "text";
+            Text[ thai ] = "ข้อความ";
         };
         String 3 // Description of Parameter 1
         {
@@ -38886,6 +40133,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Byk harflerin, kk harflerle deitirilecei metin.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Text les majscules del qual s'han de convertir en minscules.";
+            Text[ thai ] = "แปลงตัวอักษรใหญ๋ในข้อความเป็นตัวอักษรเล็ก";
         };
     };
      // -=*# Resource for function WERT #*=-
@@ -38907,7 +40155,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Convierte un texto en un nmero." ;
             Text [ english_us ] = "Converts text to a number." ;
             Text[ chinese_simplified ] = "将文字转换成数字。";
-            Text[ russian ] = "   ";
+            Text[ russian ] = "   .";
             Text[ polish ] = "Zamienia tekst na liczb.";
             Text[ japanese ] = "数値を表す文字列を数値に変換します。";
             Text[ chinese_traditional ] = "將文字轉換成數字。";
@@ -38919,6 +40167,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Metni sayya dntrr.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Converteix el text en un nombre.";
+            Text[ thai ] = "แปลงข้อความเป็นตัวเลข";
         };
         ExtraData =
         {
@@ -38954,6 +40203,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Metin";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "text";
+            Text[ thai ] = "ข้อความ";
         };
         String 3 // Description of Parameter 1
         {
@@ -38983,6 +40233,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Sayya dntrlecek metin.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Text que s'ha de convertir en un nombre.";
+            Text[ thai ] = "แปลงข้อความเป็นตัวเลข";
         };
     };
      // -=*# Resource for function TEXT #*=-
@@ -39013,10 +40264,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Converteert een getal overeenkomstig een opgegeven notatie naar tekst.";
             Text[ chinese_simplified ] = "按给定的格式转换一个数字成文字。";
             Text[ greek ] = "          .";
-            Text[ korean ] = "숫자는 지정된 형식에 따라 텍스트로 변환됩니다.";
+            Text[ korean ] = "숫자는 지정된 서식에 따라 텍스트로 변환됩니다.";
             Text[ turkish ] = "Sayy belirtilen formata gre metne dntrr.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Converteix un nombre en un text segons un format donat.";
+            Text[ thai ] = "แปลงตัวเลขเป็นข้อความตามรูปแบบที่ให้มา";
         };
         ExtraData =
         {
@@ -39052,6 +40304,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -39061,7 +40314,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Il valore numerico che viene convertito." ;
             Text [ portuguese_brazilian ] = "Der Zahlwert, der umgewandelt wird." ;
             Text [ portuguese ] = " um valor numrico a ser convertido." ;
-            Text [ finnish ] = "Muunnettava numeerinen arvo." ;
+            Text [ finnish ] = "Muunnettava numeerinen arvo" ;
             Text [ danish ] = "Talvrdien som skal konverteres." ;
             Text [ french ] = "Reprsente la valeur numrique  convertir." ;
             Text [ swedish ] = "r talvrdet som skall omvandlas." ;
@@ -39081,6 +40334,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Dntrlecek say deeri.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor numric que s'ha de convertir.";
+            Text[ thai ] = "แปลงค่าตัวเลข";
         };
         String 4 // Name of Parameter 2
         {
@@ -39090,7 +40344,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Formato" ;
             Text [ portuguese_brazilian ] = "Format" ;
             Text [ portuguese ] = "Formato" ;
-            Text [ finnish ] = "Muoto" ;
+            Text [ finnish ] = "Muotoilu" ;
             Text [ danish ] = "Format" ;
             Text [ french ] = "Format" ;
             Text [ swedish ] = "format" ;
@@ -39106,10 +40360,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Notatie";
             Text[ chinese_simplified ] = "format";
             Text[ greek ] = "Format";
-            Text[ korean ] = "형식";
+            Text[ korean ] = "서식";
             Text[ turkish ] = "Format";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Formata";
+            Text[ thai ] = "รูปแบบ";
         };
         String 5 // Description of Parameter 2
         {
@@ -39119,7 +40374,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Il testo che descrive il formato." ;
             Text [ portuguese_brazilian ] = "Der Text, der das Format beschreibt." ;
             Text [ portuguese ] = " o texto que descreve o formato." ;
-            Text [ finnish ] = "Muotoa kuvaava teksti." ;
+            Text [ finnish ] = "Muotoa kuvaava teksti" ;
             Text [ danish ] = "Den tekst som beskriver formatet." ;
             Text [ french ] = "Le texte qui dcrit le format." ;
             Text [ swedish ] = "Texten som beskriver formatet." ;
@@ -39127,7 +40382,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es un nmero de formato entre comillas del cuadro de dilogo Nmero." ;
             Text [ english_us ] = "The text that describes the format." ;
             Text[ chinese_simplified ] = "要选用的用文字表达的格式。";
-            Text[ russian ] = "    .";
+            Text[ russian ] = ",  .";
             Text[ polish ] = "Tekst, ktry opisuje format.";
             Text[ japanese ] = "書式を表す文字列。";
             Text[ chinese_traditional ] = "要選用的用文字表達的格式。";
@@ -39135,10 +40390,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "De tekst die de notatie weergeeft.";
             Text[ chinese_simplified ] = "要选用的用文字表达的格式。";
             Text[ greek ] = "     ";
-            Text[ korean ] = "형식을 나타내는 텍스트";
+            Text[ korean ] = "서식을 나타내는 문자열";
             Text[ turkish ] = "Format tanmlayan metin.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Text que descriu el format.";
+            Text[ thai ] = "ข้อความอธิบายรูปแบบ";
         };
     };
      // -=*# Resource for function T #*=-
@@ -39160,7 +40416,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Convierte un valor en un texto." ;
             Text [ english_us ] = "Converts a value into text." ;
             Text[ chinese_simplified ] = "转换一个数值成文字。";
-            Text[ russian ] = "   .";
+            Text[ russian ] = "    .";
             Text[ polish ] = "Zamienia warto w tekst.";
             Text[ japanese ] = "値を文字列に変換します。";
             Text[ chinese_traditional ] = "轉換一個數值成文字。";
@@ -39172,6 +40428,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Deeri metne dntrr.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Converteix un valor en text.";
+            Text[ thai ] = "แปลงค่าในข้อความ";
         };
         ExtraData =
         {
@@ -39207,6 +40464,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Deer";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "valor";
+            Text[ thai ] = "ค่า";
         };
         String 3 // Description of Parameter 1
         {
@@ -39216,7 +40474,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Il valore che si desidera convertire.." ;
             Text [ portuguese_brazilian ] = "Der Wert, der umgewandelt wird." ;
             Text [ portuguese ] = " o valor a converter." ;
-            Text [ finnish ] = "Muunnettava arvo." ;
+            Text [ finnish ] = "Muunnettava arvo" ;
             Text [ danish ] = "Den vrdi som skal konverteres." ;
             Text [ french ] = "La valeur  convertir." ;
             Text [ swedish ] = "Vrdet som omvandlas." ;
@@ -39236,6 +40494,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Dntrlecek deer.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor que s'ha de convertir.";
+            Text[ thai ] = "แปลงค่า";
         };
     };
      // -=*# Resource for function ERSETZEN #*=-
@@ -39257,7 +40516,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Reemplaza caracteres dentro de una cadena de texto por una cadena de texto diferente." ;
             Text [ english_us ] = "Replaces characters within a text string with a different text string." ;
             Text[ chinese_simplified ] = "用某一字串替换其它字串中的部分内容。";
-            Text[ russian ] = "      .";
+            Text[ russian ] = "    .";
             Text[ polish ] = "Zastpuje cz tekstu innym tekstem.";
             Text[ japanese ] = "文字列の一部を他の文字に置換します。";
             Text[ chinese_traditional ] = "用某一字串替換其它字串中的部份內容。";
@@ -39265,10 +40524,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Vervangt een deel van een tekst door een andere tekst";
             Text[ chinese_simplified ] = "用某一字串替换其它字串中的部分内容。";
             Text[ greek ] = "        .";
-            Text[ korean ] = "텍스트의 일부를 다른 텍스트로 바꾸기.";
+            Text[ korean ] = "문자열의 일부를 다른 문자열로 바꿉니다.";
             Text[ turkish ] = "Metnin bir blmn baka bir metin ile deitirir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Reemplaa els carcters dins d'una cadena de text amb una altra cadena de text.";
+            Text[ thai ] = "แทนที่ตัวอักขระในสายอักขระข้อความด้วยสายอักขระข้อความที่ต่างกัน";
         };
         ExtraData =
         {
@@ -39304,6 +40564,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Metin";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Text";
+            Text[ thai ] = "ข้อความ";
         };
         String 3 // Description of Parameter 1
         {
@@ -39321,7 +40582,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es el texto en el que desea reemplazar el nmero especfico de caracteres." ;
             Text [ english_us ] = "The text in which some characters are to be replaced." ;
             Text[ chinese_simplified ] = "需要进行部分字符替换的字串。";
-            Text[ russian ] = ",     .";
+            Text[ russian ] = ",       .";
             Text[ polish ] = "Tekst, ktrego cz zostanie zastpiona.";
             Text[ japanese ] = "その一部を置き換える文字列。";
             Text[ chinese_traditional ] = "需要進行部份字元替換的字串。";
@@ -39329,10 +40590,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "De tekst waarvan een deel wordt vervangen";
             Text[ chinese_simplified ] = "需要进行部分字符替换的字串。";
             Text[ greek ] = " ,      .";
-            Text[ korean ] = "일부가 변경될 텍스트입니다.";
+            Text[ korean ] = "일부를 바꿀 문자열";
             Text[ turkish ] = "Bir blm deitirilen metin.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Text del qual s'han de reemplaar alguns carcters.";
+            Text[ thai ] = "แทนที่ตัวอักขระบางตัวในข้อความ";
         };
         String 4 // Name of Parameter 2
         {
@@ -39358,10 +40620,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Positie";
             Text[ chinese_simplified ] = "start_num";
             Text[ greek ] = "start_num";
-            Text[ korean ] = "위치";
+            Text[ korean ] = "시작 위치";
             Text[ turkish ] = "Konum";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "posici";
+            Text[ thai ] = "ตำแหน่ง";
         };
         String 5 // Description of Parameter 2
         {
@@ -39379,7 +40642,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es la posicin del carcter en el argumento texto_original en la cual debe comenzar el reemplazo con el argumento texto_nuevo." ;
             Text [ english_us ] = "The character position from which text is to be replaced." ;
             Text[ chinese_simplified ] = "替换的字符的起始位置。";
-            Text[ russian ] = " ,      .";
+            Text[ russian ] = " ,     .";
             Text[ polish ] = "Pozycja w tekcie, od ktrej stary_tekst zostanie zamieniony na nowy_tekst.";
             Text[ japanese ] = "置換文字列と置き換える先頭文字の位置(文字番号)。";
             Text[ chinese_traditional ] = "替換的字元的起始位置。";
@@ -39387,10 +40650,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "De positie van het teken, vanaf waar wordt vervangen.";
             Text[ chinese_simplified ] = "替换的字符的起始位置。";
             Text[ greek ] = "   ,         .";
-            Text[ korean ] = "바꾸기를 시작할 문자 위치";
+            Text[ korean ] = "문자열이 바뀌어질 문자의 시작 위치";
             Text[ turkish ] = "Deitirmenin balatlaca karakter konumu.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Posici del carcter a partir del qual s'ha de reemplaar el text.";
+            Text[ thai ] = "ตำแหน่งตัวอักขระจากข้อความที่ถูกแทนที่";
         };
         String 6 // Name of Parameter 3
         {
@@ -39421,6 +40685,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Uzunluk";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "longitud";
+            Text[ thai ] = "ความยาว";
         };
         String 7 // Description of Parameter 3
         {
@@ -39430,7 +40695,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Il numero di caratteri da sostituire." ;
             Text [ portuguese_brazilian ] = "Die Anzahl der Zeichen, die ersetzt werden." ;
             Text [ portuguese ] = " o nmero de caracteres em texto_antigo que deseja substituir por novo_texto." ;
-            Text [ finnish ] = "Korvattavien merkkien mr." ;
+            Text [ finnish ] = "Korvattavien merkkien mr" ;
             Text [ danish ] = "Antal tegn som skal erstattes." ;
             Text [ french ] = "Le nombre de caractres  remplacer." ;
             Text [ swedish ] = "Antalet tecken som erstts." ;
@@ -39438,7 +40703,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "El nmero de caracteres que se debe reemplazar." ;
             Text [ english_us ] = "The number of characters to be replaced." ;
             Text[ chinese_simplified ] = "替换字符的数目。";
-            Text[ russian ] = " ,   .";
+            Text[ russian ] = "  .";
             Text[ polish ] = "Liczba znakw, ktre maj zosta zastpione.";
             Text[ japanese ] = "置換文字列と置き換える文字列の中の文字数。";
             Text[ chinese_traditional ] = "更替字元的數目。";
@@ -39446,10 +40711,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Het aantal tekens dat wordt vervangen.";
             Text[ chinese_simplified ] = "替换字符的数目。";
             Text[ greek ] = "      .";
-            Text[ korean ] = "바뀔 문자의 개수입니다.";
+            Text[ korean ] = "대체 문자열의 수입니다.";
             Text[ turkish ] = "Deitirilecek karakter says.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre de carcters que s'han de reemplaar.";
+            Text[ thai ] = "จำนวนตัวอักขระที่ถูกแทนที่";
         };
         String 8 // Name of Parameter 4
         {
@@ -39467,7 +40733,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "texto_nuevo" ;
             Text [ english_us ] = "new text" ;
             Text[ chinese_simplified ] = "new_text";
-            Text[ russian ] = "_";
+            Text[ russian ] = " ";
             Text[ polish ] = "Nowy_tekst";
             Text[ japanese ] = "置換文字列";
             Text[ chinese_traditional ] = "new_text";
@@ -39479,6 +40745,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Yeni metin";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "text nou";
+            Text[ thai ] = "ข้อความใหม่";
         };
         String 9 // Description of Parameter 4
         {
@@ -39488,7 +40755,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Il nuovo testo da inserire." ;
             Text [ portuguese_brazilian ] = "Der Text, der eingesetzt wird." ;
             Text [ portuguese ] = " o texto que substitui os caracteres do texto_antigo." ;
-            Text [ finnish ] = "Listtv teksti." ;
+            Text [ finnish ] = "Listtv teksti" ;
             Text [ danish ] = "Den tekst som skal erstatte den gamle tekst." ;
             Text [ french ] = "Le texte  utiliser pour le remplacement." ;
             Text [ swedish ] = "Texten som stts in." ;
@@ -39496,7 +40763,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es el texto con el que reemplazar los caracteres en el argumento texto_original." ;
             Text [ english_us ] = "The text to be inserted." ;
             Text[ chinese_simplified ] = "插入的字串。";
-            Text[ russian ] = ",     .";
+            Text[ russian ] = " .";
             Text[ polish ] = "Tekst, ktry zostanie wstawiony.";
             Text[ japanese ] = "文字列の一部と置き換える文字列。";
             Text[ chinese_traditional ] = "插入的字串。";
@@ -39508,6 +40775,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Eklenecek metin.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Text que s'ha d'inserir.";
+            Text[ thai ] = "แทรกข้อความ";
         };
     };
      // -=*# Resource for function FEST #*=-
@@ -39525,22 +40793,23 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ danish ] = "Formaterer en tekst med et fast antal decimaler og tusindtalsseparator." ;
             Text [ french ] = "Formate un nombre avec un nombre spcifi de dcimales et sparateurs de milliers (espaces)." ;
             Text [ swedish ] = "Formaterar ett tal med ett fast antal decimaler och tusentalsavgrnsare." ;
-            Text [ dutch ] = "Geeft een getal weer met een vast aantal plaatsen achter de komma en scheidingsteken voor duizendtallen." ;
+            Text [ dutch ] = "Geeft een getal weer met een vast aantal decimalen en scheidingsteken voor duizendtallen." ;
             Text [ spanish ] = "Da formato de texto a un nmero con una cantidad determinada de decimales." ;
             Text [ english_us ] = "Formats a number with a fixed number of places after the decimal point and thousands separator." ;
             Text[ chinese_simplified ] = "用小数点位数和千位点来格式化一个数字。";
-            Text[ russian ] = "       .";
+            Text[ russian ] = "          .";
             Text[ polish ] = "Formatuje liczb jako tekst, przyjmujc podan liczb miejsc po przecinku.";
             Text[ japanese ] = "数値に指定数の小数位と千桁区切り(オプション)を付け、文字列として返します。";
             Text[ chinese_traditional ] = "用小數點位數和千位點來格式化一個數字。";
             Text[ arabic ] = "      .";
-            Text[ dutch ] = "Geeft een getal weer met een vast aantal plaatsen achter de komma en scheidingsteken voor duizendtallen.";
+            Text[ dutch ] = "Geeft een getal weer met een vast aantal decimalen en scheidingsteken voor duizendtallen.";
             Text[ chinese_simplified ] = "用小数点位数和千位点来格式化一个数字。";
             Text[ greek ] = "          .";
-            Text[ korean ] = "소수점 이하 자리와 천자리 점의 고정된 횟수로 형식을 지정합니다.";
+            Text[ korean ] = "소수점 이하 자리와 천자리 점의 고정된 횟수로 서식을 지정합니다.";
             Text[ turkish ] = "Sabit sayda ondalk haneli ve binler hanesi ayrcl bir sayy formatlar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Formata un nombre amb un nombre fix de llocs desprs de la coma decimal i amb delimitadors de milers.";
+            Text[ thai ] = "รูปแบบจำนวนกับจำนวนที่คงที่หลังจุดและกับตัวคั่นจำนวนพัน";
         };
         ExtraData =
         {
@@ -39576,6 +40845,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Say";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -39585,7 +40855,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Il numero che si desidera formattare." ;
             Text [ portuguese_brazilian ] = "Die Zahl, die formatiert wird." ;
             Text [ portuguese ] = " o nmero que deseja formatar." ;
-            Text [ finnish ] = "Muotoiltava luku." ;
+            Text [ finnish ] = "Muotoiltava luku" ;
             Text [ danish ] = "Det tal som skal formateres." ;
             Text [ french ] = "Le nombre  formater." ;
             Text [ swedish ] = "Talet som formateras." ;
@@ -39601,10 +40871,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Het getal dat wordt geconverteerd.";
             Text[ chinese_simplified ] = "要格式化的数字。";
             Text[ greek ] = "    .";
-            Text[ korean ] = "형식을 지정할 값.";
+            Text[ korean ] = "서식할 수";
             Text[ turkish ] = "Formatlacak say.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre que s'ha de formatar.";
+            Text[ thai ] = "จัดรูปแบบตัวเลข";
         };
         String 4 // Name of Parameter 2
         {
@@ -39622,7 +40893,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Decimales" ;
             Text [ english_us ] = "Decimals" ;
             Text[ chinese_simplified ] = "decimals";
-            Text[ russian ] = "_";
+            Text[ russian ] = " ";
             Text[ polish ] = "Dziesitne";
             Text[ japanese ] = "小数位";
             Text[ language_user1 ] = " ";
@@ -39631,9 +40902,10 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Aantal decimalen";
             Text[ chinese_simplified ] = "decimals";
             Text[ greek ] = "";
-            Text[ korean ] = "소수점 다음의 값";
+            Text[ korean ] = "소수점 이하 자릿수";
             Text[ turkish ] = "Ondalk haneler";
             Text[ catalan ] = "decimals";
+            Text[ thai ] = "ทศนิยม";
         };
         String 5 // Description of Parameter 2
         {
@@ -39643,7 +40915,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Il numero di cifre decimali fisse da visualizzare." ;
             Text [ portuguese_brazilian ] = "Dezimalstellen. Anzahl des festen Dezimalstellen, die dargestellt werden." ;
             Text [ portuguese ] = " o nmero de dgitos fixado  direita da vrgula decimal." ;
-            Text [ finnish ] = "Desimaaleja! Nytettvien desimaalien mr." ;
+            Text [ finnish ] = "Desimaaleja Nytettvien desimaalien mr" ;
             Text [ danish ] = "Decimaler. Antallet af cifre til hjre for decimaltegnet." ;
             Text [ french ] = "Dcimales. Le nombre de chiffres aprs la virgule." ;
             Text [ swedish ] = "Decimaler. Antalet fasta decimaler som visas." ;
@@ -39651,7 +40923,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es el nmero de dgitos a la derecha del separador decimal." ;
             Text [ english_us ] = "Decimal places. The number of fixed decimal places that are to be displayed." ;
             Text[ chinese_simplified ] = "应显示的小数点位数。";
-            Text[ russian ] = "      .";
+            Text[ russian ] = " .    .";
             Text[ polish ] = "Liczba staych miejsc dziesitnych.";
             Text[ japanese ] = "小数点以下の桁数。";
             Text[ chinese_traditional ] = "要顯示的小數點位數。";
@@ -39659,10 +40931,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Decimalen. Aantal plaatsen achter de decimale komma die worden weergegeven.";
             Text[ chinese_simplified ] = "应显示的小数点位数。";
             Text[ greek ] = " .       .";
-            Text[ korean ] = "소수점 자리. 나타낼 고정 소수점자리의 수입니다.";
+            Text[ korean ] = "소수점 이하 자릿수. 표시할 고정 소수점 이하 자릿수입니다.";
             Text[ turkish ] = "Ondalk haneler. Grntlenecek sabit ondalk hane says.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre de decimals. Nombre de llocs decimals fixos que s'han de visualitzar.";
+            Text[ thai ] = "จุดทศนิยม  แสดงผลจำนวนของจุดทศนิยมที่คงที่ ";
         };
         String 6 // Name of Parameter 3
         {
@@ -39672,26 +40945,27 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Nessun separatore migliaia" ;
             Text [ portuguese_brazilian ] = "T" ;
             Text [ portuguese ] = "Sem separador de milhares" ;
-            Text [ finnish ] = "T" ;
+            Text [ finnish ] = "Ei tuhaterottimia" ;
             Text [ danish ] = "Ingen tusindtalsseparatorer" ;
             Text [ french ] = "Sans sparateur de milliers" ;
             Text [ swedish ] = "Inga tusentalsavgrnsare" ;
-            Text [ dutch ] = "Geen separatoren voor duizendtallen" ;
-            Text [ spanish ] = "No_separar_millares" ;
+            Text [ dutch ] = "Geen scheidingsteken voor duizendtallen" ;
+            Text [ spanish ] = "Sin separador de miles" ;
             Text [ english_us ] = "No thousands separators" ;
             Text[ chinese_simplified ] = "T";
-            Text[ russian ] = "  ";
+            Text[ russian ] = "";
             Text[ polish ] = "Bez separatorw tysicy";
             Text[ japanese ] = "千桁区切りなし";
             Text[ chinese_traditional ] = "T";
             Text[ arabic ] = "T";
-            Text[ dutch ] = "Geen separatoren voor duizendtallen";
+            Text[ dutch ] = "Geen scheidingsteken voor duizendtallen";
             Text[ chinese_simplified ] = "T";
             Text[ greek ] = "";
-            Text[ korean ] = "천단위 분리 부호 없음";
+            Text[ korean ] = "천단위 구분 기호 없음";
             Text[ turkish ] = "Binler hanesi ayrcs";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "T";
+            Text[ thai ] = "T";
         };
         String 7 // Description of Parameter 3
         {
@@ -39701,26 +40975,27 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Valore logico che, se VERO (diverso da 0), non consente di includere i separatori delle migliaia." ;
             Text [ portuguese_brazilian ] = "Tausenderpunkte. Gibt an, ob Tausenderpunkte gesetzt werden." ;
             Text [ portuguese ] = "Sem separador de milhares. Se o valor lgico existir e for VERDADEIRO (diferente de 0), o separador de milhares no  colocado." ;
-            Text [ finnish ] = "Tuhaterotin. Mritt tuhaterotinasetuksen." ;
+            Text [ finnish ] = "Ei tuhaterottimia Tosiarvo, jos olemassa oleva ja TOSI (eri suuri kuin 0), tuhaterottimia ei aseteta." ;
             Text [ danish ] = "Ingen tusindtalsseparatorer. Logisk vrdi, nr til stede og SAND (forskellig fra 0) sttes ingen tusindtalsseparatorer." ;
             Text [ french ] = "Sans sparateur de milliers si valeur logique = VRAI (diffrente de 0)." ;
             Text [ swedish ] = "Inga tusentalsavgrnsare. Sannolikhetsvrde, om det finns och r SANT (ej lika med 0) stts inga tusentalsavgrnsare." ;
-            Text [ dutch ] = "Geen scheidingstekens voor duizendtallen. Als de waarheidswaarde, indien voorhanden, WAAR (ongelijk aan O) is, dan worden er geen scheidingstekens gezet." ;
-            Text [ spanish ] = "Sin separadores de millares. Si el valor lgico existe y es VERDADERO (no igual a 0) no se mostrarn separadores de millares." ;
+            Text [ dutch ] = "Geen scheidingstekens voor duizendtallen. Als de waarheidswaarde, indien beschikbaar, WAAR (ongelijk aan O) is, dan worden er geen scheidingstekens gezet." ;
+            Text [ spanish ] = "Sin separador de miles. Si el valor lgico existe y es VERDADERO (no igual a 0) no se mostrarn separadores de millares." ;
             Text [ english_us ] = "No thousands separator. True value, if existing and TRUE (unequal to 0), no thousands separators are set." ;
             Text[ chinese_simplified ] = "千位点。给定是否使用千位点。如果逻辑值存在并且是 true(不等于0),则不使用千位点。";
-            Text[ russian ] = ",     .";
+            Text[ russian ] = "  .   (     0),    .";
             Text[ polish ] = "Bez separatorw tysicy. Jeeli jest warto logiczna PRAWDA (nierwna 0), separatory tysicy nie zostan osadzone.";
             Text[ japanese ] = "千桁区切りを付けるかどうかを論理値で指定します。 0 以外の数値を指定すると、千桁区切りは付きません。";
             Text[ chinese_traditional ] = "千位點。指定是否使用千位點。如果邏輯值存在並且是 true(不等於0),則不是使用千位點。";
             Text[ arabic ] = "           .";
-            Text[ dutch ] = "Geen scheidingstekens voor duizendtallen. Als de waarheidswaarde, indien voorhanden, WAAR (ongelijk aan O) is, dan worden er geen scheidingstekens gezet.";
+            Text[ dutch ] = "Geen scheidingstekens voor duizendtallen. Als de waarheidswaarde, indien beschikbaar, WAAR (ongelijk aan O) is, dan worden er geen scheidingstekens gezet.";
             Text[ chinese_simplified ] = "千位点。给定是否使用千位点。如果逻辑值存在并且是 true(不等于0),则不使用千位点。";
             Text[ greek ] = " .     .";
-            Text[ korean ] = "천단위 분리 부호 없음. 논리 값과 TRUE (0과 다름)는 천단위 분리 부호를 사용하지 않습니다.";
+            Text[ korean ] = "천단위 구분 기호 없음. 논리 값과 TRUE (0과 다름)는 천단위 구분 기호를 사용하지 않습니다.";
             Text[ turkish ] = "Binler hanesi ayrcs. Binler hanesi ayrclar kullanlp kullanlmayacan belirler.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Delimitador de milers. Defineix si s'han d'establir els delimitadors de milers.";
+            Text[ thai ] = "ตัวคั่นจำนวนพัน  กำหนดตัวคั่นจำนวนพัน";
         };
     };
      // -=*# Resource for function LNGE #*=-
@@ -39743,7 +41018,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve la longitud de una cadena de texto." ;
             Text [ english_us ] = "Calculates length of a text string." ;
             Text[ chinese_simplified ] = "确定一个字串的长度。";
-            Text[ russian ] = "     .";
+            Text[ russian ] = "  ,  .";
             Text[ polish ] = "Oblicza dugo tekstu.";
             Text[ japanese ] = "文字列の文字数またはバイト数を返します。";
             Text[ chinese_traditional ] = "確定一個字串的長度。";
@@ -39751,10 +41026,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Berekent de lengte van een tekst.";
             Text[ chinese_simplified ] = "确定一个字串的长度。";
             Text[ greek ] = "    .";
-            Text[ korean ] = "텍스트의 길이를 계산합니다";
+            Text[ korean ] = "텍스트 문자열의 길이를 계산합니다.";
             Text[ turkish ] = "Metnin uzunluunu hesaplar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Calcula la longitud d'una cadena de text.";
+            Text[ thai ] = "คำนวณความยาวของสายอักขระข้อความ";
         };
         ExtraData =
         {
@@ -39790,6 +41066,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Metin";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "text";
+            Text[ thai ] = "ข้อความ";
         };
         String 3 // Description of Parameter 1
         {
@@ -39808,7 +41085,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es el texto cuya longitud desea conocer." ;
             Text [ english_us ] = "The text in which the length is to be determined." ;
             Text[ chinese_simplified ] = "要确定其长度的字串。";
-            Text[ russian ] = " ,    .";
+            Text[ russian ] = ",    .";
             Text[ polish ] = "Tekst, ktrego dugo trzeba okreli.";
             Text[ japanese ] = "文字数またはバイト数を調べる文字列。";
             Text[ chinese_traditional ] = "要確定其長度的字串。";
@@ -39820,6 +41097,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Uzunluu belirlenecek metin.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Text la longitud del qual s'ha de determinar.";
+            Text[ thai ] = "ข้อความในความยาวที่ถูกกำหนด";
         };
     };
      // -=*# Resource for function LINKS #*=-
@@ -39841,7 +41119,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Extrae el carcter o los caracteres situados en el extremo izquierdo de una cadena de texto." ;
             Text [ english_us ] = "Defines the first character or characters in a text string." ;
             Text[ chinese_simplified ] = "确定一个字串的开始部分字符。";
-            Text[ russian ] = "         .";
+            Text[ russian ] = "        .";
             Text[ polish ] = "Wyznacza pierwszy znak w cigu danych tekstu.";
             Text[ japanese ] = "文字列の先頭(左端)から指定数の文字を返します。";
             Text[ chinese_traditional ] = "確定一個字串的開始部份字元。";
@@ -39849,10 +41127,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Geeft als resultaat het begin van een tekenreeks in een tekst.";
             Text[ chinese_simplified ] = "确定一个字串的开始部分字符。";
             Text[ greek ] = "       .";
-            Text[ korean ] = "텍스트의 첫 반단어를 지정";
+            Text[ korean ] = "한 텍스트 문자열에서 첫 문자를 지정합니다.";
             Text[ turkish ] = "Metnin ilk karakteri ya da karakterlerini tanmlar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Defineix el primer o els primers carcters d'una cadena de text.";
+            Text[ thai ] = "กำหนดตัวอักขระตัวแรกหรือตัวอักขระในสายอักขระข้อความ";
         };
         ExtraData =
         {
@@ -39888,6 +41167,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Metin";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "text";
+            Text[ thai ] = "ข้อความ";
         };
         String 3 // Description of Parameter 1
         {
@@ -39917,6 +41197,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "lk karakterleri belirlenecek metin.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Text del qual s'han de determinar les paraules parcials inicials.";
+            Text[ thai ] = "ข้อความที่ส่วนเริ่มของคำบางส่วนถูกกำหนด";
         };
         String 4 // Name of Parameter 2
         {
@@ -39934,7 +41215,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "nm_de_caracteres" ;
             Text [ english_us ] = "number" ;
             Text[ chinese_simplified ] = "num_chars";
-            Text[ russian ] = "_";
+            Text[ russian ] = "";
             Text[ polish ] = "liczba_znakw";
             Text[ japanese ] = "文字数";
             Text[ chinese_traditional ] = "num_chars";
@@ -39946,6 +41227,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Karakter says";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 5 // Description of Parameter 2
         {
@@ -39956,7 +41238,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Specifica il numero di caratteri per la parte iniziale della parola." ;
             Text [ portuguese_brazilian ] = "Die Anzahl der Zeichen f? das Anfangsteilwort." ;
             Text [ portuguese ] = "especifica o nmero de caracteres a devolver." ;
-            Text [ finnish ] = "Aloitustekstin merkkien mr." ;
+            Text [ finnish ] = "Aloitustekstin merkkien mr" ;
             Text [ danish ] = "Antal tegn VENSTRE skal returnere." ;
             Text [ french ] = "Le nombre de caractres que vous voulez extraire." ;
             Text [ swedish ] = "Antalet tecken fr begynnelsedelordet." ;
@@ -39964,7 +41246,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "especifica cuntos caracteres se desea extraer." ;
             Text [ english_us ] = "The number of characters for the start text." ;
             Text[ chinese_simplified ] = "开端部分的字符数目。";
-            Text[ russian ] = " ,   .";
+            Text[ russian ] = "   .";
             Text[ polish ] = "Liczba znakw dla pocztkowej czci sowa.";
             Text[ japanese ] = "取り出す文字数。";
             Text[ chinese_traditional ] = "開始部份的字元數目。";
@@ -39976,6 +41258,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Balang metninin ilk karakterlerin says.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre de carcters per al text d'inici.";
+            Text[ thai ] = "จำนวนตัวอักขระสำหรับส่วนเริ่มข้อความ";
         };
     };
      // -=*# Resource for function RECHTS #*=-
@@ -39997,7 +41280,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Extrae los caracteres del extremo derecho de una cadena de texto." ;
             Text [ english_us ] = "Defines the last character or characters in a text string." ;
             Text[ chinese_simplified ] = "提取字串中最后一个或多个字符。";
-            Text[ russian ] = "     .";
+            Text[ russian ] = "        .";
             Text[ polish ] = "Okrela ostatni znak w cigu znakw.";
             Text[ japanese ] = "文字列の末(右端)から、指定数の文字を返します。";
             Text[ chinese_traditional ] = "提取字串中最後一個或多個字元。";
@@ -40005,10 +41288,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Geeft als resultaat de tekens aan het einde van een tekenreeks in een tekst.";
             Text[ chinese_simplified ] = "提取字串中最后一个或多个字符。";
             Text[ greek ] = "       .";
-            Text[ korean ] = "텍스트의 마지막 반단어를 지정";
+            Text[ korean ] = "한 텍스트 문자열에서 끝 문자를 지정합니다.";
             Text[ turkish ] = "Metin iindeki son bir ya da birka karakteri tanmlar.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Defineix l'ltim o els ltims carcters d'una cadena de text.";
+            Text[ thai ] = "กำหนดตัวอักขระตัวสุดท้ายหรือตัวอักขระในสายอักขระข้อความ";
         };
         ExtraData =
         {
@@ -40044,6 +41328,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Metin";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "text";
+            Text[ thai ] = "ข้อความ";
         };
         String 3 // Description of Parameter 1
         {
@@ -40061,7 +41346,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es la cadena de texto que contiene los caracteres que desea extraer." ;
             Text [ english_us ] = "The text in which the end partial words are to be determined." ;
             Text[ chinese_simplified ] = "需要从中提取字符的字串。";
-            Text[ russian ] = ",    .";
+            Text[ russian ] = ",     .";
             Text[ polish ] = "Tekst, w ktrym zostanie okrelony ostatni znak.";
             Text[ japanese ] = "取り出す文字を含む文字列。";
             Text[ chinese_traditional ] = "需要從中提取字元的字串。";
@@ -40073,6 +41358,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Son metin eleri belirlenecek metin.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Text del qual s'han de determinar les paraules parcials finals.";
+            Text[ thai ] = "ข้อความในส่วนท้ายของคำที่ถูกกำหนด";
         };
         String 4 // Name of Parameter 2
         {
@@ -40090,7 +41376,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "nm_de_caracteres" ;
             Text [ english_us ] = "number" ;
             Text[ chinese_simplified ] = "num_chars";
-            Text[ russian ] = " ";
+            Text[ russian ] = "";
             Text[ polish ] = "liczba_znakw";
             Text[ japanese ] = "文字数";
             Text[ chinese_traditional ] = "num_chars";
@@ -40102,6 +41388,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Karakter says";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 5 // Description of Parameter 2
         {
@@ -40112,7 +41399,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Specifica il numero dei caratteri che si desidera estrarre." ;
             Text [ portuguese_brazilian ] = "Die Anzahl der Zeichen f? das Endteilwort." ;
             Text [ portuguese ] = " o nmero de caracteres a extrair do texto." ;
-            Text [ finnish ] = "Lopputekstin merkkien mr." ;
+            Text [ finnish ] = "Lopputekstin merkkien mr" ;
             Text [ danish ] = "Antal tegn HJRE skal returnere." ;
             Text [ french ] = "Le nombre de caractres que vous voulez extraire." ;
             Text [ swedish ] = "Antalet tecken fr slutdelordet." ;
@@ -40120,7 +41407,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "especifica el nmero de caracteres que se desea extraer." ;
             Text [ english_us ] = "The number of characters for the end text." ;
             Text[ chinese_simplified ] = "要提取的字串的长度。";
-            Text[ russian ] = "     .";
+            Text[ russian ] = " ,   .";
             Text[ polish ] = "Liczba znakw dla kocowej czci sowa.";
             Text[ japanese ] = "取り出す文字数(右からの文字数)。";
             Text[ chinese_traditional ] = "要提取的字串的長度。";
@@ -40132,6 +41419,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Son metin esinin karakter says.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre de carcters per al text final.";
+            Text[ thai ] = "จำนวนตัวอักขระสำหรับข้อความตอนจบ";
         };
     };
      // -=*# Resource for function TEIL #*=-
@@ -40153,7 +41441,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Devuelve un nmero especfico de caracteres de una cadena de texto, comenzando en la posicin que especifique." ;
             Text [ english_us ] = "Returns a partial text string of a text." ;
             Text[ chinese_simplified ] = "找出指定的字串部分。";
-            Text[ russian ] = "      .";
+            Text[ russian ] = "   ,    .";
             Text[ polish ] = "Zwraca okrelon liczb znakw z podanego cigu znakw.";
             Text[ japanese ] = "文字列の特定部分を返します。";
             Text[ chinese_traditional ] = "找出指定的字串部份。";
@@ -40161,10 +41449,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Geeft een bepaald aantal tekens van een tekst.";
             Text[ chinese_simplified ] = "找出指定的字串部分。";
             Text[ greek ] = "     .";
-            Text[ korean ] = "텍스트의 반단어를 정의";
+            Text[ korean ] = "문자열의 특정 부분 문자열을 되돌립니다.";
             Text[ turkish ] = "Metin iindeki metin elerini belirler.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Torna una cadena de text parcial d'un text.";
+            Text[ thai ] = "ส่งกลับสายอักขระข้อความบางส่วนของข้อความ";
         };
         ExtraData =
         {
@@ -40200,6 +41489,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Metin";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "text";
+            Text[ thai ] = "ข้อความ";
         };
         String 3 // Description of Parameter 1
         {
@@ -40229,6 +41519,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Metin eleri belirlenen metin.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Text del qual s'han de determinar les paraules parcials.";
+            Text[ thai ] = "ข้อความในส่วนของคำที่ถูกกำหนด";
         };
         String 4 // Name of Parameter 2
         {
@@ -40246,7 +41537,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "posicin_inicial" ;
             Text [ english_us ] = "start" ;
             Text[ chinese_simplified ] = "start_num";
-            Text[ russian ] = "_";
+            Text[ russian ] = " ";
             Text[ polish ] = "liczba_pocztkowa";
             Text[ japanese ] = "開始位置";
             Text[ chinese_traditional ] = "start_num";
@@ -40258,6 +41549,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Balang";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "inici";
+            Text[ thai ] = "เริ่มต้น";
         };
         String 5 // Description of Parameter 2
         {
@@ -40287,6 +41579,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Metin esi tespitinin balayaca konum.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Posici des de la qual s'ha de determinar la paraula parcial.";
+            Text[ thai ] = "ตำแหน่งจากส่วนของคำที่ถูกกำหนด";
         };
         String 6 // Name of Parameter 3
         {
@@ -40304,7 +41597,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "nm_de_caracteres" ;
             Text [ english_us ] = "number" ;
             Text[ chinese_simplified ] = "num_chars";
-            Text[ russian ] = "_";
+            Text[ russian ] = "";
             Text[ polish ] = "liczba_znakw";
             Text[ japanese ] = "文字数";
             Text[ chinese_traditional ] = "num_chars";
@@ -40316,6 +41609,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Karakter says";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 7 // Description of Parameter 3
         {
@@ -40326,7 +41620,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Il numero di caratteri per il testo." ;
             Text [ portuguese_brazilian ] = "Die Anzahl der Zeichen f? das Teilwort." ;
             Text [ portuguese ] = "indica a quantidade de caracteres a extrair do texto." ;
-            Text [ finnish ] = "Tekstin merkkien mr." ;
+            Text [ finnish ] = "Tekstin merkkien mr" ;
             Text [ danish ] = "Antal tegn som skal returnere." ;
             Text [ french ] = "Le nombre de caractres contenus dans la chane  extraire du texte." ;
             Text [ swedish ] = "Antalet tecken fr delordet." ;
@@ -40334,7 +41628,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "especifica el nmero de caracteres de texto que se han de devolver." ;
             Text [ english_us ] = "The number of characters for the text." ;
             Text[ chinese_simplified ] = "要找出的字串的长度。";
-            Text[ russian ] = " ,     .";
+            Text[ russian ] = "  .";
             Text[ polish ] = "Liczba znakw dla czci sowa.";
             Text[ japanese ] = "取り出す文字数。";
             Text[ chinese_traditional ] = "要找出的字串的長度。";
@@ -40346,6 +41640,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Metin esinin karakter says.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre de carcters per al text.";
+            Text[ thai ] = "จำนวนตัวอักขระในข้อความ";
         };
     };
      // -=*# Resource for function WIEDERHOLEN #*=-
@@ -40367,7 +41662,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Repite el texto un nmero de veces determinado." ;
             Text [ english_us ] = "Repeats text a given number of times." ;
             Text[ chinese_simplified ] = "按照给定的次数重复字串。";
-            Text[ russian ] = "    .";
+            Text[ russian ] = "      .";
             Text[ polish ] = "Powtarza tekst przez dan liczb razy.";
             Text[ japanese ] = "文字列を指定の回数繰り返します。";
             Text[ chinese_traditional ] = "按照指定的次數重複字串。";
@@ -40379,6 +41674,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Metni belirtilen sklkta yineler.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Repeteix el text un nombre determinat de vegades.";
+            Text[ thai ] = "ทำข้อความซ้ำตามจำนวนครั้งที่ให้มา";
         };
         ExtraData =
         {
@@ -40414,6 +41710,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Metin";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "text";
+            Text[ thai ] = "ข้อความ";
         };
         String 3 // Description of Parameter 1
         {
@@ -40423,7 +41720,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Il testo che si desidera ripetere." ;
             Text [ portuguese_brazilian ] = "Der Text, der wiederholt wird." ;
             Text [ portuguese ] = " o texto a ser repetido." ;
-            Text [ finnish ] = "Toistettava teksti." ;
+            Text [ finnish ] = "Toistettava teksti" ;
             Text [ danish ] = "Den tekst der skal gentages." ;
             Text [ french ] = "Le texte  rpter." ;
             Text [ swedish ] = "Texten som upprepas." ;
@@ -40443,6 +41740,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Yinelenecek metin.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Text que s'ha de repetir.";
+            Text[ thai ] = "ทำข้อความซ้ำ";
         };
         String 4 // Name of Parameter 2
         {
@@ -40460,7 +41758,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "nm_de_veces" ;
             Text [ english_us ] = "number" ;
             Text[ chinese_simplified ] = "num_times";
-            Text[ russian ] = " ";
+            Text[ russian ] = "";
             Text[ polish ] = "Liczba";
             Text[ japanese ] = "回数";
             Text[ chinese_traditional ] = "num_times";
@@ -40472,6 +41770,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Yineleme says";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "nombre";
+            Text[ thai ] = "ตัวเลข";
         };
         String 5 // Description of Parameter 2
         {
@@ -40481,7 +41780,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Numero positivo che specifica il numero di volte che si desidera ripetere il testo." ;
             Text [ portuguese_brazilian ] = "Die Anzahl, wie oft der Text wiederholt wird." ;
             Text [ portuguese ] = "especifica o nmero de vezes de repetio do texto." ;
-            Text [ finnish ] = "Tekstin toistokerrat." ;
+            Text [ finnish ] = "Tekstin toistokerrat" ;
             Text [ danish ] = "Det antal gange som teksten skal gentages." ;
             Text [ french ] = "Le nombre indiquant combien de fois rpter le texte." ;
             Text [ swedish ] = "Antalet gnger texten upprepas." ;
@@ -40489,7 +41788,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es un nmero positivo que especifica el nmero de veces que se deber repetir el texto." ;
             Text [ english_us ] = "The number of times the text is to be repeated." ;
             Text[ chinese_simplified ] = "重复的次数。";
-            Text[ russian ] = ",      .";
+            Text[ russian ] = "  .";
             Text[ polish ] = "Okrela liczb razy powtrzenia tekstu.";
             Text[ japanese ] = "文字列を繰り返す回数。";
             Text[ chinese_traditional ] = "重複的次數。";
@@ -40501,6 +41800,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Metni yineleme says.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre de vegades que s'ha de repetir el text.";
+            Text[ thai ] = "จำนวนครั้งที่ทำข้อความซ้ำ";
         };
     };
      // -=*# Resource for function WECHSELN #*=-
@@ -40522,7 +41822,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "Reemplaza caracteres dentro del texto." ;
             Text [ english_us ] = "Substitutes new text for old text in a string." ;
             Text[ chinese_simplified ] = "多重替换一个字串内的字符。";
-            Text[ russian ] = "     .";
+            Text[ russian ] = "      .";
             Text[ polish ] = "Podstawia nowy tekst w miejsce starego we wskazanym cigu znakw.";
             Text[ japanese ] = "文字列中の特定の文字を他の文字に置き換えます。";
             Text[ chinese_traditional ] = "多重更替一個字串內的字元。";
@@ -40530,10 +41830,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Vervangt meermaals tekens in een tekst.";
             Text[ chinese_simplified ] = "多重替换一个字串内的字符。";
             Text[ greek ] = "       .";
-            Text[ korean ] = "텍스트에서 다수의 반단어 바꾸기";
+            Text[ korean ] = "문자열에서 문자를 바꿉니다.";
             Text[ turkish ] = "Metin iinde metin eleri deitirir.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Substitueix un text nou per un d'antic en una cadena.";
+            Text[ thai ] = "ข้อความใหม่แทนข้อความเก่าในสายอักขระ";
         };
         ExtraData =
         {
@@ -40569,6 +41870,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Metin";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "text";
+            Text[ thai ] = "ข้อความ";
         };
         String 3 // Description of Parameter 1
         {
@@ -40594,10 +41896,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "De tekst waarin tekens worden vervangen.";
             Text[ chinese_simplified ] = "要替换其中字符的字串。";
             Text[ greek ] = "         .";
-            Text[ korean ] = "반단어가 바뀔 텍스트";
+            Text[ korean ] = "글자의 부분이 대체될 문자열";
             Text[ turkish ] = "Metin eleri deitirilecek metin.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Text del qual s'han de reemplaar les paraules parcials.";
+            Text[ thai ] = "ข้อความในบางส่วนของคำที่ถูกแทนที่";
         };
         String 4 // Name of Parameter 2
         {
@@ -40623,10 +41926,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Zoektekst";
             Text[ chinese_simplified ] = "search_text";
             Text[ greek ] = " ";
-            Text[ korean ] = "찾기_텍스트";
+            Text[ korean ] = "검색 문자열";
             Text[ turkish ] = "Aranan metin";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "search_text";
+            Text[ thai ] = "ค้นหา_ข้อความ";
         };
         String 5 // Description of Parameter 2
         {
@@ -40644,7 +41948,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es el texto que se desea sustituir." ;
             Text [ english_us ] = "The partial string to be (repeatedly) replaced." ;
             Text[ chinese_simplified ] = "要(多重)替换的字符。";
-            Text[ russian ] = " ,   () .";
+            Text[ russian ] = " ,    ().";
             Text[ polish ] = "Sowo czstkowe, ktre ma zosta (wielokrotnie) zastpione.";
             Text[ japanese ] = "置換される文字列。";
             Text[ chinese_traditional ] = "要(多重)更替的字元。";
@@ -40652,10 +41956,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Het woorddeel dat (meermaals) moeten worden vervangen.";
             Text[ chinese_simplified ] = "要(多重)替换的字符。";
             Text[ greek ] = "        ().";
-            Text[ korean ] = "(여러번) 바뀔 반단어";
+            Text[ korean ] = "(반복하여) 대체될 부분 문자열";
             Text[ turkish ] = "(Birok kez) deitirilecek metin esi.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Cadena parcial que s'ha de reemplaar (repetidament).";
+            Text[ thai ] = "แทนที่สายอักขระบางส่วน (ทำซ้ำ) ";
         };
         String 6 // Name of Parameter 3
         {
@@ -40673,7 +41978,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "texto_nuevo" ;
             Text [ english_us ] = "new text" ;
             Text[ chinese_simplified ] = "new_text";
-            Text[ russian ] = "_";
+            Text[ russian ] = " ";
             Text[ polish ] = "Nowy tekst";
             Text[ japanese ] = "置換文字列";
             Text[ chinese_traditional ] = "new_text";
@@ -40685,6 +41990,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Yeni metin";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "text nou";
+            Text[ thai ] = "ข้อความใหม่";
         };
         String 7 // Description of Parameter 3
         {
@@ -40702,7 +42008,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "es el texto con el que se reemplaza el texto_original." ;
             Text [ english_us ] = "The text which is to replace the text string." ;
             Text[ chinese_simplified ] = "用来替换原来字符的字串。";
-            Text[ russian ] = ",   .";
+            Text[ russian ] = ",  .";
             Text[ polish ] = "Tekst, ktry ma zastpi cig znakw.";
             Text[ japanese ] = "検索文字列と置換する文字列。";
             Text[ chinese_traditional ] = "用來替換原來字元的字串。";
@@ -40710,10 +42016,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "De tekst die het woorddeel vervangt.";
             Text[ chinese_simplified ] = "用来替换原来字符的字串。";
             Text[ greek ] = "        .";
-            Text[ korean ] = "반단어를 바꿀 텍스트";
+            Text[ korean ] = "부분 글자를 대체할 문자열";
             Text[ turkish ] = "Metin esi yerine gelecek metin.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Text que ha de reemplaar la cadena de text.";
+            Text[ thai ] = "ข้อความที่ถูกแทนที่ด้วยสายอักขระข้อความ";
         };
         String 8 // Name of Parameter 4
         {
@@ -40731,7 +42038,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "mm_de_ocurrencia" ;
             Text [ english_us ] = "occurrence" ;
             Text[ chinese_simplified ] = "occurrence";
-            Text[ russian ] = "_";
+            Text[ russian ] = "";
             Text[ polish ] = "Wystpienie";
             Text[ japanese ] = "置換対象";
             Text[ chinese_traditional ] = "occurrence";
@@ -40743,6 +42050,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Vaka";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "aparici";
+            Text[ thai ] = "การเกิดขึ้น";
         };
         String 9 // Description of Parameter 4
         {
@@ -40760,7 +42068,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ spanish ] = "especifica la ocurrencia del texto que se desea reemplazar." ;
             Text [ english_us ] = "Which occurence of the old text is to be replaced." ;
             Text[ chinese_simplified ] = "要被替换的是第几次出现的字符。";
-            Text[ russian ] = ",     .";
+            Text[ russian ] = "    .";
             Text[ polish ] = "Okrela, ktre powtrzenie cigu znakw ma zosta zastpione.";
             Text[ japanese ] = "何番目の該当文字列を置換文字列に置き換えるかを指定します。";
             Text[ chinese_traditional ] = "要被更替的是第幾次出現的字元。";
@@ -40768,10 +42076,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Geeft aan bij het hoeveelste optreden het woorddeel moet worden vervangen.";
             Text[ chinese_simplified ] = "要被替换的是第几次出现的字符。";
             Text[ greek ] = "         .";
-            Text[ korean ] = "몇 번째에 나타나는 반단어를 바꿀 것인가입니다.";
+            Text[ korean ] = "몇 번째에 나타나는 부분 문자열을 바꿀 것인가를 설정합니다.";
             Text[ turkish ] = "Metin esinin hangi vakas deitirilecek.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "L'aparici del text vell del qual s'ha de reemplaar.";
+            Text[ thai ] = "เกิดการแทนที่ข้อความเก่า";
         };
     };
      // -=*# Resource for function BASIS #*=-
@@ -40789,21 +42098,22 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Converte un numero intero positivo in un testo da un sistema numerico alla base indicata." ;
             Text [ spanish ] = "Convierte un nmero entero positivo en un texto de un sistema numrico para la base dada." ;
             Text [ french ] = "Convertit un nombre entier positif en texte d'un systme de numration dans la base spcifie." ;
-            Text [ dutch ] = "Verandert een positief rond getal in een tekst uit een aangegeven getalsysteem." ;
+            Text [ dutch ] = "Wijzigt een positief rond getal in een tekst uit een aangegeven getalsysteem." ;
             Text[ chinese_simplified ] = "按照给定的数字系统转换一个正整数成文字。";
-            Text[ russian ] = "           .";
+            Text[ russian ] = "        .";
             Text[ polish ] = "Konwertuje dodatni liczb cakowit na tekst z podanego systemu liczbowego o podanej podstawie.";
             Text[ japanese ] = "正の整数を記数法に従って文字に変換します。";
             Text[ chinese_traditional ] = "按照輸入的數字系統轉換一個正整數成文字。";
             Text[ arabic ] = "         .";
-            Text[ dutch ] = "Verandert een positief rond getal in een tekst uit een aangegeven getalsysteem.";
+            Text[ dutch ] = "Wijzigt een positief rond getal in een tekst uit een aangegeven getalsysteem.";
             Text[ chinese_simplified ] = "按照给定的数字系统转换一个正整数成文字。";
             Text[ greek ] = "               .";
             Text[ korean ] = "양의 정수를 주어진 기준에 대한 수 체계로 된 텍스트로 변환합니다.";
             Text[ turkish ] = "Pozitif bir tamsayy belirtilen tabanda say sisteminden metne dntrr.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Converteix un enter positiu en text des d'un sistema numric a la base indicada.";
-            Text[ finnish ] = "Muuntaa positiivisen kokonaisluvun tekstiksi mritetyn kantaluvun numerojrjestelmn perusteella.";
+            Text[ finnish ] = "Muuntaa positiivisen kokonaisluvun tekstiksi mritetyn kantaluvun lukujrjestelmn perusteella.";
+            Text[ thai ] = "แปลงจำนวนเต็มบวกเป็นข้อความจากระบบตัวเลขไปยังฐานที่กำหนด";
         };
         ExtraData =
         {
@@ -40838,6 +42148,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "nombre";
             Text[ finnish ] = "luku";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -40849,7 +42160,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ swedish ] = "Talet som skall omvandlas." ;
             Text [ danish ] = "Det tal som skal konverteres." ;
             Text [ italian ] = "Il numero da convertire." ;
-            Text [ spanish ] = "Nmero a convertir." ;
+            Text [ spanish ] = "Nmero que convertir." ;
             Text [ french ] = "Le nombre  convertir." ;
             Text [ dutch ] = "Het te converteren getal" ;
             Text[ chinese_simplified ] = "要转换的数字。";
@@ -40865,7 +42176,8 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Dntrlecek say.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Nombre que s'ha de convertir.";
-            Text[ finnish ] = "Muunnettava luku.";
+            Text[ finnish ] = "Muunnettava luku";
+            Text[ thai ] = "ตัวเลขที่ถูกแปลง";
         };
         String 4 // Name of Parameter 2
         {
@@ -40894,6 +42206,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "base de numeraci";
             Text[ finnish ] = "kantaluku";
+            Text[ thai ] = "ฐาน";
         };
         String 5 // Description of Parameter 2
         {
@@ -40909,7 +42222,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ french ] = "La base numrique pour la conversion doit tre comprise entre 2 et 36." ;
             Text [ dutch ] = "De getalwaarde waarnaar wordt geconverteerd moet tussen 2 - 36 liggen." ;
             Text[ chinese_simplified ] = "转换后的数字必须位于 2 和 36 之间。";
-            Text[ russian ] = " ,    ,      2  36.";
+            Text[ russian ] = ",       2  36.";
             Text[ polish ] = "Podstawa systemu liczbowego do konwersji musi by zawarta w przedziale 2 - 36.";
             Text[ japanese ] = "何進の位取記数法で表すかを 2 から 36 の間で指定。";
             Text[ chinese_traditional ] = "所要轉換的基數必須在 2 - 36 之間。";
@@ -40917,11 +42230,12 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "De getalwaarde waarnaar wordt geconverteerd moet tussen 2 - 36 liggen.";
             Text[ chinese_simplified ] = "转换后的数字必须位于 2 和 36 之间。";
             Text[ greek ] = "            2  36.";
-            Text[ korean ] = "변환을위한 기본수는 2-36 의 영역에 있어야 합니다.";
+            Text[ korean ] = "변환을 위한 기본수는 2-36 의 범위에 있어야 합니다.";
             Text[ turkish ] = "Dnm hedefi taban says  2 - 36 aralnda bulunmaldr.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "El nombre base per a la conversi ha de ser de l'interval 2 - 36.";
             Text[ finnish ] = "Muunnon perusluvun on oltava jokin luku 2 - 36.";
+            Text[ thai ] = "เลขฐานสำหรับแปลงต้องอยู่ในช่วง 2 - 36";
         };
         String 6 // Name of Parameter 3
         {
@@ -40935,14 +42249,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ italian ] = "Lunghezza minima" ;
             Text [ spanish ] = "Longitud mnima" ;
             Text [ french ] = "Longueur_min" ;
-            Text [ dutch ] = "Minimum lengte" ;
+            Text [ dutch ] = "Minimumlengte" ;
             Text[ chinese_simplified ] = "Minimum length";
             Text[ russian ] = " ";
             Text[ polish ] = "Minimalna dugo";
             Text[ japanese ] = "最低の長さ";
             Text[ chinese_traditional ] = "Minimum length";
             Text[ arabic ] = "Minimum length";
-            Text[ dutch ] = "Minimum lengte";
+            Text[ dutch ] = "Minimumlengte";
             Text[ chinese_simplified ] = "Minimum length";
             Text[ greek ] = " ";
             Text[ korean ] = "최소 길이";
@@ -40950,6 +42264,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Longitud mnima";
             Text[ finnish ] = "Vhimmispituus";
+            Text[ thai ] = "ความยาวน้อยที่สุด";
         };
         String 7 // Description of Parameter 3
         {
@@ -40965,7 +42280,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ french ] = "Si le texte est plus court que la longueur spcifie, des zros seront ajouts  sa gauche." ;
             Text [ dutch ] = "Als de tekst korter is wordt deze links met nullen opgevuld." ;
             Text[ chinese_simplified ] = "如果文字短于指定长度,就请在文字左方添加零。";
-            Text[ russian ] = "   ,     .";
+            Text[ russian ] = "     ,     .";
             Text[ polish ] = "Jeli tekst jest krtszy ni podana dugo, zostanie uzupeniony zerami.";
             Text[ japanese ] = "指定した長さより短い結果には、左にゼロが追加されます。";
             Text[ chinese_traditional ] = "如果文字短於指定長度﹐就請在文字左方添加零。";
@@ -40978,6 +42293,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Si el text no arriba a la longitud indicada, s'afegiran zeros a l'esquerra de la cadena.";
             Text[ finnish ] = "Jos teksti on mrityst lyhyempi, merkkijonon eteen listn nollia.";
+            Text[ thai ] = "ถ้าข้อความสั้นกว่าความยาวที่ระบุ ให้เพิ่มศูนย์ที่ด้านซ้ายของสายอักขระ";
         };
     };
      // -=*# Resource for function DEZIMAL #*=-
@@ -40989,7 +42305,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ english ] = "Converts a text of a specified number system to positive integer." ;
             Text [ english_us ] = "Converts a text of a specified number system to a positive integer in the base given." ;
             Text[ portuguese ] = "Converte o texto de um determinado sistema numrico em nmero inteiro positivo numa dada base.";
-            Text[ russian ] = "          .";
+            Text[ russian ] = " ,     ,   .";
             Text[ dutch ] = "Converteert een tekst uit een aangegeven getalsysteem in een positief geheel getal.";
             Text[ french ] = "Convertit un texte d'un systme de numration en nombre entier positif dans la base spcifie.";
             Text[ spanish ] = "Convierte un texto de un sistema numrico en un nmero entero positivo para la base dada.";
@@ -41009,7 +42325,8 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Belirli bir say sistemindeki metni, belirtilen tabanda pozitif tamsayya dntrr.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Converteix un text d'un sistema numric indicat en un enter positiu en la base donada.";
-            Text[ finnish ] = "Muuntaa mritetyn numerojrjestelmn tekstin positiiviseksi kokonaisluvuksi mrttyyn kantaan.";
+            Text[ finnish ] = "Muuntaa mritetyn lukujrjestelmn tekstin positiiviseksi kokonaisluvuksi mrttyyn kantaan.";
+            Text[ thai ] = "แปลงข้อความของระบบตัวเลขที่ระบุเป็นจำนวนเต็มบวกในฐานที่ให้มา";
         };
         ExtraData =
         {
@@ -41044,6 +42361,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "text";
             Text[ finnish ] = "teksti";
+            Text[ thai ] = "ข้อความ";
         };
         String 3 // Description of Parameter 1
         {
@@ -41071,7 +42389,8 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Dntrlecek metin.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Text que s'ha de convertir.";
-            Text[ finnish ] = "Muunnettava teksti.";
+            Text[ finnish ] = "Muunnettava teksti";
+            Text[ thai ] = "ข้อความที่ถูกแปลง";
         };
         String 4 // Name of Parameter 2
         {
@@ -41100,6 +42419,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "base de numeraci";
             Text[ finnish ] = "kantaluku";
+            Text[ thai ] = "ฐาน";
         };
         String 5 // Description of Parameter 2
         {
@@ -41107,7 +42427,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ english ] = "The base of the number system for conversion must be in the range 2 - 36." ;
             Text [ english_us ] = "The base number for conversion must be in the range 2 - 36." ;
             Text[ portuguese ] = "A base numrica, a partir da qual ser efectuada a converso, ter que estar compreendida entre 2 e 36.";
-            Text[ russian ] = " ,    ,      2  36.";
+            Text[ russian ] = ",       2  36.";
             Text[ dutch ] = "De basis van het getalsysteem waaruit wordt geconverteerd moet tussen 2 - 36 liggen.";
             Text[ french ] = "La base numrique,  partir de laquelle convertir, doit tre comprise entre 2 et 36.";
             Text[ spanish ] = "La base numrica de la que se convertir debe ser entre 2 - 36.";
@@ -41123,11 +42443,12 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "De basis van het getalsysteem waaruit wordt geconverteerd moet tussen 2 - 36 liggen.";
             Text[ chinese_simplified ] = "转换后的数字必须位于 2 和 36 之间。";
             Text[ greek ] = "            2  36.";
-            Text[ korean ] = "변환을위한 기본수는 2-36 의 영역에 있어야합니다.";
+            Text[ korean ] = "변환을 위한 기본수는 2-36 의 범위에 있어야 합니다.";
             Text[ turkish ] = "Dnm kayna taban says  2 - 36 aralnda bulunmaldr.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "El nombre base per a la conversi ha de ser de l'interval 2 - 36.";
             Text[ finnish ] = "Muunnon perusluvun on oltava jokin luku 2 - 36.";
+            Text[ thai ] = "เลขฐานสำหรับการแปลงต้องอยู่ในช่วง 2 - 36";
         };
     };
      // -=*# Resource for function UMRECHNEN #*=-
@@ -41139,7 +42460,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ english ] = "Converts a value according to a conversion table defined in the configuration (calc.xml)." ;
             Text[ english_us ] = "Converts a value according to a conversion table in the configuration (calc.xml).";
             Text[ portuguese ] = "Converte um valor partindo da tabela de converso disponvel na configurao (calc.xml).";
-            Text[ russian ] = "        (calc.xml).";
+            Text[ russian ] = "       .      calc.xml.";
             Text[ dutch ] = "Berekent een waarde aan de hand van een omrekeningstabel uit de configuratie (calc.xml).";
             Text[ french ] = "Convertit une valeur  l'aide de la table de conversion provenant de la configuration. (calc.xml)";
             Text[ spanish ] = "Convierte un valor en base a una tabla de conversin de la configuracin (calc.xml).";
@@ -41155,11 +42476,12 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ dutch ] = "Berekent een waarde aan de hand van een omrekeningstabel uit de configuratie (calc.xml).";
             Text[ chinese_simplified ] = "按照一个配置文件(calc.xml)的换算表来换算某一个数值。";
             Text[ greek ] = "         convert.ini.";
-            Text[ korean ] = "구성(calc.xml)의 환산표를 사용하여 환산합니다";
+            Text[ korean ] = "설정(calc.xml)의 환산표를 사용하여 환산합니다.";
             Text[ turkish ] = "convert.ini tablosundaki girie gre deeri dntrr.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Converteix un valor segons una entrada de la taula convert.ini";
             Text[ finnish ] = "Muuntaa arvon kokoonpanossa (Calc.xml) olevan muunnostaulukon mukaan.";
+            Text[ thai ] = "แปลงค่าตามรายการในตาราง.ini ที่แปลง";
         };
         ExtraData =
         {
@@ -41195,6 +42517,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "Deer";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "valor";
+            Text[ thai ] = "ค่า";
         };
         String 3 // Description of Parameter 1
         {
@@ -41203,7 +42526,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ english_us ] = "The value to be converted.";
             Text[ portuguese ] = "Valor a converter.";
             Text[ russian ] = " .";
-            Text[ dutch ] = "De waarde die u wilt coverteren";
+            Text[ dutch ] = "De te converteren waarde";
             Text[ french ] = "Valeur  convertir.";
             Text[ spanish ] = "El valor a convertir.";
             Text[ italian ] = "Valore da convertire.";
@@ -41215,14 +42538,15 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ chinese_simplified ] = "要转换的数值。";
             Text[ chinese_traditional ] = "要轉換的數值。";
             Text[ arabic ] = "  .";
-            Text[ dutch ] = "De waarde die u wilt coverteren";
+            Text[ dutch ] = "De te converteren waarde";
             Text[ chinese_simplified ] = "要转换的数值。";
             Text[ greek ] = "     ";
             Text[ korean ] = "변환될 값";
             Text[ turkish ] = "Dntrlen deer.";
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Valor que s'ha de convertir.";
-            Text[ finnish ] = "Muunnettava arvo.";
+            Text[ finnish ] = "Muunnettava arvo";
+            Text[ thai ] = "ค่าที่ถูกแปลง";
         };
         String 4 // Name of Parameter 2
         {
@@ -41251,6 +42575,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "text";
             Text[ finnish ] = "teksti";
+            Text[ thai ] = "ข้อความ";
         };
         String 5 // Description of Parameter 2
         {
@@ -41258,8 +42583,8 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ english ] = "Unit to convert from, case sensitive." ;
             Text[ english_us ] = "Unit into which something is converted, case-sensitive.";
             Text[ portuguese ] = "Unidade de converso; relevncia de Maisculas/Minsculas.";
-            Text[ russian ] = ",    ,   .";
-            Text[ dutch ] = "Eenheid van waaruit wordt omgerekend, hoofd-/kleine letters zijn relevant.";
+            Text[ russian ] = ",    ,   .";
+            Text[ dutch ] = "Eenheid van waaruit wordt omgerekend, hoofdletters/kleine letters zijn relevant.";
             Text[ french ] = "Unit  partir de laquelle convertir ; respecter la casse.";
             Text[ spanish ] = "Unidad de la que se convierte; diferenciacin maysculas/minsculas";
             Text[ italian ] = "Unit a partire dalla quale si converte; sensibile all'utilizzo delle maiuscole/minuscole.";
@@ -41271,7 +42596,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ chinese_simplified ] = "要被转换的原有的货币单位,区分大小写。";
             Text[ chinese_traditional ] = "要被轉換的原有的貨幣單位,區分大小寫。";
             Text[ arabic ] = "     (   ).";
-            Text[ dutch ] = "Eenheid van waaruit wordt omgerekend, hoofd-/kleine letters zijn relevant.";
+            Text[ dutch ] = "Eenheid van waaruit wordt omgerekend, hoofdletters/kleine letters zijn relevant.";
             Text[ chinese_simplified ] = "要被转换的原有的货币单位,区分大小写。";
             Text[ greek ] = "      . /    .";
             Text[ korean ] = "환산되는 단위에 있어서 대/소문자는 중요합니다.";
@@ -41279,6 +42604,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Unitat en qu es converteix alguna cosa, distingeix entre majscules i minscules.";
             Text[ finnish ] = "Yksikk, johon jotakin muunnetaan, suuret ja pienet kirjaimet ovat merkitsevi.";
+            Text[ thai ] = "หน่วยในบางสิ่งที่แปลง  ตรงตามตัวพิมพ์ใหญ่-เล็ก";
         };
         String 6 // Name of Parameter 3
         {
@@ -41307,6 +42633,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "text";
             Text[ finnish ] = "teksti";
+            Text[ thai ] = "ข้อความ";
         };
         String 7 // Description of Parameter 3
         {
@@ -41315,7 +42642,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ english_us ] = "Unit into which something is converted, case-sensitive.";
             Text[ portuguese ] = "Unidade de converso; relevncia de Maisculas/Minsculas";
             Text[ russian ] = ",    ,   .";
-            Text[ dutch ] = "Eenheid waarnaar wordt geconverteerd, hoofd-/kleine letters zijn relevant.";
+            Text[ dutch ] = "Eenheid waarnaar wordt geconverteerd, hoofdletters/kleine letters zijn relevant.";
             Text[ french ] = "Unit de conversion ; respecter la casse.";
             Text[ spanish ] = "Unidad a convertir; diferenciacin maysculas/minsculas";
             Text[ italian ] = "Unit nella quale si converte; sensibile all'utilizzo delle maiuscole/minuscole.";
@@ -41327,7 +42654,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ chinese_simplified ] = "要转换成的货币单位,区分大小写。";
             Text[ chinese_traditional ] = "要轉換成的貨幣單位,區分字母大小寫。";
             Text[ arabic ] = "     (   ).";
-            Text[ dutch ] = "Eenheid waarnaar wordt geconverteerd, hoofd-/kleine letters zijn relevant.";
+            Text[ dutch ] = "Eenheid waarnaar wordt geconverteerd, hoofdletters/kleine letters zijn relevant.";
             Text[ chinese_simplified ] = "要转换成的货币单位,区分大小写。";
             Text[ greek ] = "      . /    .";
             Text[ korean ] = "환산되는 단위에 있어서 대/소문자는 중요합니다.";
@@ -41335,6 +42662,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ language_user1 ] = " ";
             Text[ catalan ] = "Unitat en qu es converteix alguna cosa, distingeix entre majscules i minscules.";
             Text[ finnish ] = "Yksikk, johon jotakin muunnetaan, suuret ja pienet kirjaimet ovat merkitsevi.";
+            Text[ thai ] = "หน่วยในบางสิ่งที่แปลง  ตรงตามตัวพิมพ์ใหญ่-เล็ก";
         };
     };
      // -=*# Resource for function ROEMISCH #*=-
@@ -41346,7 +42674,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ english ] = "Converts a number to roman." ;
             Text[ english_us ] = "Converts a number to a Roman numeral.";
             Text[ portuguese ] = "Converte um nmero em algarismo romano.";
-            Text[ russian ] = "    .";
+            Text[ russian ] = "    .";
             Text[ greek ] = "     .";
             Text[ dutch ] = "Converteert een getal naar een Romeins cijfer.";
             Text[ french ] = "Convertit un nombre en chiffres romains.";
@@ -41364,6 +42692,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ arabic ] = "Converts a number to roman.";
             Text[ catalan ] = "Converteix un nombre en un nombre rom.";
             Text[ finnish ] = "Muuntaa luvun roomalaiseksi numeroksi.";
+            Text[ thai ] = "แปลงตัวเลขเป็นเลขโรมัน";
         };
         ExtraData =
         {
@@ -41395,6 +42724,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ arabic ] = "number";
             Text[ catalan ] = "Nombre";
             Text[ finnish ] = "Luku";
+            Text[ thai ] = "ตัวเลข";
         };
         String 3 // Description of Parameter 1
         {
@@ -41420,6 +42750,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ arabic ] = "The number to be converted to roman must be in the range 0 - 3999.";
             Text[ catalan ] = "El nombre que s'ha de convertir en un nombre rom ha d'estar en l'interval 0 - 3999.";
             Text[ finnish ] = "Roomalaiseksi numeroksi muunnettavan numeron on oltava 0 - 3999.";
+            Text[ thai ] = "แปลงตัวเลขเป็นตัวเลขโรมันต้องอยู่ในช่วง 0 - 3999 ";
         };
         String 4 // Name of Parameter 2
         {
@@ -41427,7 +42758,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ english ] = "mode" ;
             Text[ english_us ] = "Mode";
             Text[ portuguese ] = "Modo";
-            Text[ russian ] = "";
+            Text[ russian ] = "";
             Text[ greek ] = "";
             Text[ dutch ] = "modus";
             Text[ french ] = "Mode";
@@ -41445,6 +42776,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ arabic ] = "mode";
             Text[ catalan ] = "Mode";
             Text[ finnish ] = "Tila";
+            Text[ thai ] = "โหมด";
         };
         String 5 // Description of Parameter 2
         {
@@ -41452,7 +42784,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text [ english ] = "The more this value increases the more is the roman number simplified. The value must be in the range 0 - 4." ;
             Text[ english_us ] = "The more this value increases, the more the Roman numeral is simplified. The value must be in the 0 - 4 range.";
             Text[ portuguese ] = "Quanto maior for o valor, mais simplificado ser o nmero romano. O valor deve estar compreendido entre 0 e 4.";
-            Text[ russian ] = "   ,      .        0  4.";
+            Text[ russian ] = "   ,      .        0  4.";
             Text[ greek ] = "     ,      .       0 - 4.";
             Text[ dutch ] = "Hoe hoger deze waarde is, hoe eenvoudiger het Romeinse getal wordt. De waarde moet tussen 0 en 4 liggen.";
             Text[ french ] = "Plus cette valeur (comprise entre 0 et 4) est lve, plus le nombre en chiffres romains sera simplifi.";
@@ -41463,13 +42795,14 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ polish ] = "Im wysza warto, tym bardziej uproszczona zostanie rzymska liczba. Warto musi si mieci w zakresie 0 - 4.";
             Text[ portuguese_brazilian ] = "The more this value increases the more is the roman number simplified. The value must be in the range 0 - 4.";
             Text[ japanese ] = "0 から 4 の値で指定。値が大きくなるほど、簡単な表示形式になります。";
-            Text[ korean ] = "이 값이 증가되면 될수록, 로마식 숫자는 더 간단해집니다. 값은 반드시 0 - 4 범위내에 있어야 합니다.";
+            Text[ korean ] = "이 값이 증가되면 될수록 로마식 숫자는 더 간단해집니다. 값은 반드시 0 - 4 범위 안에 있어야 합니다.";
             Text[ chinese_simplified ] = "这个数值越高,罗马数字就会越小。这个数值必须在 0 - 4 之间的一个数值。";
             Text[ chinese_traditional ] = "這個數值越高,羅馬數字就會越小。這個數值必須是 0 和 4 之間的數值。";
             Text[ turkish ] = "The more this value increases the more is the roman number simplified. The value must be in the range 0 - 4.";
             Text[ arabic ] = "The more this value increases the more is the roman number simplified. The value must be in the range 0 - 4.";
             Text[ catalan ] = "Com ms s'augmenta aquest valor, ms se simplifica el nombre rom. El valor ha d'estar en l'rea 0 - 4.";
             Text[ finnish ] = "Mit suuremmaksi tt arvoa kasvatetaan, sit enemmn roomalaista numeroa yksinkertaistetaan. Arvon on oltava 0 - 4.";
+            Text[ thai ] = "ค่าเพิ่มขึ้นมากเท่าไหร่  ตัวเลขโรมันก็ง่ายขึ้นเท่านั้น  ค่าต้องอยู่ในช่วง 0 - 4 ";
         };
     };
      // -=*# Resource for function ARABISCH #*=-
@@ -41499,6 +42832,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ arabic ] = "Calculates the value of a roman number.";
             Text[ catalan ] = "Calcula el valor d'un nombre rom.";
             Text[ finnish ] = "Laskee roomalaisen numeron arvon.";
+            Text[ thai ] = "คำนวณค่าตัวเลขโรมัน";
         };
         ExtraData =
         {
@@ -41530,6 +42864,7 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ arabic ] = "";
             Text[ catalan ] = "Text";
             Text[ finnish ] = "Teksti";
+            Text[ thai ] = "ข้อความ";
         };
         String 3 // Description of Parameter 1
         {
@@ -41554,7 +42889,8 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
             Text[ turkish ] = "The text that represents a roman number.";
             Text[ arabic ] = "The text that represents a roman number.";
             Text[ catalan ] = "El text que representa un nmero rom.";
-            Text[ finnish ] = "Roomalaista numeroa esittv teksti.";
+            Text[ finnish ] = "Roomalaista numeroa esittv teksti";
+            Text[ thai ] = "ข้อความแสดงในรูปของตัวเลขโรมัน";
         };
     };
 };
@@ -41585,6 +42921,11 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS2
 
 
 
+
+
+
+
+
 
 
 
diff --git a/sc/source/ui/src/scstring.src b/sc/source/ui/src/scstring.src
index 5a2802641255..7e94b4382054 100644
--- a/sc/source/ui/src/scstring.src
+++ b/sc/source/ui/src/scstring.src
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: scstring.src,v $
  *
- *  $Revision: 1.69 $
+ *  $Revision: 1.70 $
  *
- *  last change: $Author: dr $ $Date: 2002-12-06 11:49:58 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:31 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -184,7 +184,7 @@ String SCSTR_LONG_SCDOC_NAME
     Text[ greek ] = "%PRODUCTNAME 6.0 ";
     Text[ dutch ] = "%PRODUCTNAME 6.0 werkblad";
     Text[ french ] = "%PRODUCTNAME 6.0 Classeur";
-    Text[ spanish ] = "%PRODUCTNAME 6.0 Hoja de clculo";
+    Text[ spanish ] = "%PRODUCTNAME 6.0 - Hoja de clculo";
     Text[ italian ] = "Tabella %PRODUCTNAME 6.0";
     Text[ danish ] = "%PRODUCTNAME 6.0-tabel";
     Text[ swedish ] = "%PRODUCTNAME 6.0 tabell";
@@ -210,7 +210,7 @@ String SCSTR_50_LONG_DOCNAME
     Text [ swedish ] = "%PRODUCTNAME 5.0 tabell" ;
     Text [ danish ] = "%PRODUCTNAME 5.0-tabel" ;
     Text [ italian ] = "Tabella %PRODUCTNAME 5.0" ;
-    Text [ spanish ] = "%PRODUCTNAME 5.0 Hoja de clculo" ;
+    Text [ spanish ] = "%PRODUCTNAME 5.0 - Hoja de clculo" ;
     Text [ french ] = "%PRODUCTNAME 5.0 Classeur" ;
     Text [ portuguese ] = "%PRODUCTNAME 5.0 Folha de clculo" ;
     Text [ portuguese_brazilian ] = "%PRODUCTNAME 4.0 Tabelle" ;
@@ -221,7 +221,7 @@ String SCSTR_50_LONG_DOCNAME
     Text[ chinese_traditional ] = "%PRODUCTNAME 5.0 工作表";
     Text[ arabic ] = " %PRODUCTNAME 5.0";
     Text[ greek ] = "%PRODUCTNAME 5.0 - ";
-    Text[ korean ] = "%PRODUCTNAME Calc 5.0 스프레드 시트";
+    Text[ korean ] = "%PRODUCTNAME Calc 5.0 스프레드시트";
     Text[ turkish ] = "%PRODUCTNAME 5.0 tablosu";
     Text[ language_user1 ] = " ";
     Text[ catalan ] = "%PRODUCTNAME 5.0 Full de clcul";
@@ -237,7 +237,7 @@ String SCSTR_40_LONG_DOCNAME
     Text [ swedish ] = "%PRODUCTNAME 4.0 tabell" ;
     Text [ danish ] = "StarCalc 4.0 regneark" ;
     Text [ italian ] = "Foglio elettronico %PRODUCTNAME 4.0" ;
-    Text [ spanish ] = "%PRODUCTNAME 4.0 Hoja de clculo" ;
+    Text [ spanish ] = "%PRODUCTNAME 4.0 - Hoja de clculo" ;
     Text [ french ] = "%PRODUCTNAME 4.0 Classeur" ;
     Text [ portuguese ] = "%PRODUCTNAME 4.0 Folha de clculo" ;
     Text [ portuguese_brazilian ] = "%PRODUCTNAME 4.0 Tabelle" ;
@@ -476,7 +476,7 @@ String SCSTR_DRAWSHELL
     Text[ chinese_traditional ] = "圖形物件";
     Text[ arabic ] = " ";
     Text[ greek ] = " ";
-    Text[ korean ] = "그래픽 개체";
+    Text[ korean ] = "그림 개체";
     Text[ turkish ] = "Grafik nesnesi";
     Text[ language_user1 ] = " ";
     Text[ catalan ] = "Objectes grfics";
@@ -557,7 +557,7 @@ String SCSTR_CHARTSHELL
     Text[ polish ] = "Obiekty wykresu";
     Text[ portuguese_brazilian ] = "Chart-objects";
     Text[ japanese ] = "グラフオブジェクト";
-    Text[ korean ] = "차트-개체";
+    Text[ korean ] = "차트 개체";
     Text[ chinese_simplified ] = "图表对象";
     Text[ chinese_traditional ] = "圖表物件";
     Text[ arabic ] = "  ";
@@ -612,7 +612,7 @@ String SCSTR_GRAPHICSHELL
     Text[ polish ] = "Grafika";
     Text[ portuguese_brazilian ] = "Graphic";
     Text[ japanese ] = "図";
-    Text[ korean ] = "그래픽";
+    Text[ korean ] = "그림";
     Text[ chinese_simplified ] = "图形";
     Text[ chinese_traditional ] = "圖形";
     Text[ arabic ] = "";
@@ -1016,7 +1016,7 @@ String SCSTR_UNDEFINED
     Text[ chinese_traditional ] = "- 未定義的 -";
     Text[ arabic ] = "-   -";
     Text[ greek ] = "-   -";
-    Text[ korean ] = "- 정의되지 않음 -";
+    Text[ korean ] = "- 지정되지 않음 -";
     Text[ turkish ] = "- tanmlanmam -";
     Text[ language_user1 ] = " ";
     Text[ catalan ] = "- no definit -";
@@ -1072,7 +1072,7 @@ String SCSTR_EMPTY
     Text[ chinese_traditional ] = "- 空缺 -";
     Text[ arabic ] = "-  -";
     Text[ greek ] = "-  -";
-    Text[ korean ] = "- 비었음 -";
+    Text[ korean ] = "- 빈 -";
     Text[ turkish ] = "- bo -";
     Text[ language_user1 ] = " ";
     Text[ catalan ] = "- buit -";
@@ -1119,7 +1119,7 @@ String SCSTR_NEWTABLE
     Text [ french ] = "- nouvelle feuille -" ;
     Text [ swedish ] = "- ny tabell -" ;
     Text [ dutch ] = "- nieuw werkblad -" ;
-    Text [ spanish ] = "- nueva hoja -" ;
+    Text [ spanish ] = "- hoja nueva -" ;
     Text [ english_us ] = "- new sheet -" ;
     Text[ chinese_simplified ] = "- 新建工作表 -";
     Text[ russian ] = "-   -";
@@ -1176,7 +1176,7 @@ String SCSTR_STDFILTER
     Text [ portuguese ] = "- Padro -" ;
     Text [ portuguese_brazilian ] = "- Standard -" ;
     Text[ chinese_simplified ] = "- 标准 -";
-    Text[ russian ] = "-  -";
+    Text[ russian ] = "-  -";
     Text[ polish ] = "- Domylnie-";
     Text[ japanese ] = "- 標準 -";
     Text[ chinese_traditional ] = "- 標準 -";
@@ -1238,7 +1238,7 @@ String SCSTR_NONAME
     Text[ chinese_traditional ] = "未命名";
     Text[ arabic ] = " ";
     Text[ greek ] = " ";
-    Text[ korean ] = "이름없음";
+    Text[ korean ] = "이름 없음";
     Text[ turkish ] = "bilinmeyen";
     Text[ language_user1 ] = " ";
     Text[ catalan ] = "sense nom";
@@ -1371,7 +1371,7 @@ String SCSTR_REMOVE
     Text [ french ] = "Supprimer" ;
     Text [ swedish ] = "~Radera" ;
     Text [ dutch ] = "~Wissen" ;
-    Text [ spanish ] = "~Eliminar" ;
+    Text [ spanish ] = "~Borrar" ;
     Text [ english_us ] = "~Delete" ;
     Text[ chinese_simplified ] = "删除(~D)";
     Text[ russian ] = "";
@@ -1437,7 +1437,7 @@ String SCSTR_MODIFY
     Text[ chinese_traditional ] = "修改(~Y)";
     Text[ arabic ] = "";
     Text[ greek ] = "";
-    Text[ korean ] = "수정(~Y)";
+    Text[ korean ] = "변경(~Y)";
     Text[ turkish ] = "~Deitir";
     Text[ language_user1 ] = " ";
     Text[ catalan ] = "Modif~ica";
@@ -1524,7 +1524,7 @@ String SCSTR_SELECTDB
     Text[ chinese_traditional ] = "選擇資料庫區域";
     Text[ arabic ] = "   ";
     Text[ greek ] = "   ";
-    Text[ korean ] = "데이터베이스 영역 선택";
+    Text[ korean ] = "데이터베이스 범위 선택";
     Text[ turkish ] = "Veritaban araln se";
     Text[ language_user1 ] = " ";
     Text[ catalan ] = "Seleccioneu l'rea de la base de dades";
@@ -1552,7 +1552,7 @@ String SCSTR_AREAS
     Text[ chinese_traditional ] = "區域";
     Text[ arabic ] = "";
     Text[ greek ] = "~";
-    Text[ korean ] = "영역";
+    Text[ korean ] = "범위";
     Text[ turkish ] = "Aralklar";
     Text[ language_user1 ] = " ";
     Text[ catalan ] = "rees";
@@ -1705,7 +1705,7 @@ String SCSTR_RENAMEOBJECT
     Text [ ENGLISH ] = "Name Object" ;
     Text[ english_us ] = "Name object";
     Text[ portuguese ] = "Name Object";
-    Text[ russian ] = " ";
+    Text[ russian ] = " ";
     Text[ greek ] = "Name Object";
     Text[ dutch ] = "Naam geven aan object";
     Text[ french ] = "Nommer l'objet";
@@ -1717,7 +1717,7 @@ String SCSTR_RENAMEOBJECT
     Text[ polish ] = "Name Object";
     Text[ portuguese_brazilian ] = "Name Object";
     Text[ japanese ] = "オブジェクトに名前を付ける";
-    Text[ korean ] = "개체 명칭";
+    Text[ korean ] = "개체 이름 지정";
     Text[ chinese_simplified ] = "命名对象";
     Text[ chinese_traditional ] = "命名物件";
     Text[ turkish ] = "Name Object";
@@ -1748,7 +1748,7 @@ String STR_INSERTGRAPHIC
     Text[ chinese_traditional ] = "插入圖形";
     Text[ arabic ] = " ";
     Text[ greek ] = " ";
-    Text[ korean ] = "그래픽 삽입";
+    Text[ korean ] = "그림 삽입";
     Text[ turkish ] = "Grafik ekle";
     Text[ language_user1 ] = " ";
     Text[ catalan ] = "Insereix grfics";
@@ -1798,7 +1798,7 @@ String SCSTR_HOR_JUSTIFY_CENTER
     Text [ french ] = "Centr horizontalement" ;
     Text [ swedish ] = "Horisontellt centrerad" ;
     Text [ dutch ] = "Horizontaal gecentreerd" ;
-    Text [ spanish ] = "Centrado horizontal" ;
+    Text [ spanish ] = "Centrado horizontalmente" ;
     Text [ english_us ] = "Centered horizontally" ;
     Text[ chinese_simplified ] = "水平居中";
     Text[ russian ] = "  ";
@@ -1823,7 +1823,7 @@ String SCSTR_HOR_JUSTIFY_RIGHT
     Text [ portuguese ] = "Ajustar  direita" ;
     Text [ finnish ] = "Tasaa oikealle" ;
     Text [ danish ] = "Hjrejusteret" ;
-    Text [ french ] = "Alignement  droite" ;
+    Text [ french ] = "Aligner  droite" ;
     Text [ swedish ] = "Hgerjustera" ;
     Text [ dutch ] = "Rechtslijnend" ;
     Text [ spanish ] = "Alinear a la derecha" ;
@@ -1966,7 +1966,7 @@ String SCSTR_VER_JUSTIFY_CENTER
     Text [ french ] = "Centr verticalement" ;
     Text [ swedish ] = "Vertikalt centrerad" ;
     Text [ dutch ] = "Verticaal gecentreerd" ;
-    Text [ spanish ] = "Centrado vertical" ;
+    Text [ spanish ] = "Centrado verticalmente" ;
     Text [ english_us ] = "Centered vertically" ;
     Text[ chinese_simplified ] = "垂直居中";
     Text[ russian ] = "  ";
@@ -2003,7 +2003,7 @@ String SCSTR_VER_JUSTIFY_BOTTOM
     Text[ chinese_traditional ] = "向下對齊";
     Text[ arabic ] = "  ";
     Text[ greek ] = "   ";
-    Text[ korean ] = "아래에 맞춤";
+    Text[ korean ] = "아래 맞춤";
     Text[ turkish ] = "Aa hizala";
     Text[ language_user1 ] = " ";
     Text[ catalan ] = "Alinea a la part inferior";
@@ -2047,7 +2047,7 @@ String SCSTR_ORIENTATION_TOPBOTTOM
     Text [ portuguese ] = "De cima para baixo" ;
     Text [ finnish ] = "Ylhlt alas" ;
     Text [ danish ] = "Fra verst til nederst" ;
-    Text [ french ] = "Du haut vers le bas" ;
+    Text [ french ] = "De haut en bas" ;
     Text [ swedish ] = "Uppifrn och ned" ;
     Text [ dutch ] = "Van boven naar beneden" ;
     Text [ spanish ] = "De arriba hacia abajo" ;
@@ -2075,7 +2075,7 @@ String SCSTR_ORIENTATION_BOTTOMTOP
     Text [ portuguese ] = "De baixo para cima" ;
     Text [ finnish ] = "Alhaalta yls" ;
     Text [ danish ] = "Fra nederst til verst" ;
-    Text [ french ] = "Du bas vers le haut" ;
+    Text [ french ] = "De bas en haut" ;
     Text [ swedish ] = "Nedifrn och upp" ;
     Text [ dutch ] = "Van beneden naar boven" ;
     Text [ spanish ] = "Desde abajo hacia arriba" ;
@@ -2115,7 +2115,7 @@ String SCSTR_ORIENTATION_STANDARD
     Text[ chinese_traditional ] = "文字方向 標準";
     Text[ arabic ] = "  ";
     Text[ greek ] = "  ";
-    Text[ korean ] = "기본 쓰기방향";
+    Text[ korean ] = "기본 방향";
     Text[ turkish ] = "Standart metin yn";
     Text[ language_user1 ] = " ";
     Text[ catalan ] = "Orientaci per defecte";
@@ -2161,7 +2161,7 @@ String SCSTR_UNPROTECTDOC
     Text [ portuguese ] = "Desproteger documento" ;
     Text [ finnish ] = "Poista asiakirjan suojaus" ;
     Text [ danish ] = "Ophv dokumentbeskyttelse" ;
-    Text [ french ] = "Supprimer la protection du document" ;
+    Text [ french ] = "Annuler la protection de document" ;
     Text [ swedish ] = "Upphv dokumentskydd" ;
     Text [ dutch ] = "Documentbeveiliging opheffen" ;
     Text [ spanish ] = "Desproteger documento" ;
@@ -2248,7 +2248,7 @@ String SCSTR_CHG_PROTECT
     Text [ portuguese ] = "Proteger histrico" ;
     Text [ portuguese_brazilian ] = "Protect trace" ;
     Text[ chinese_simplified ] = "保护记录";
-    Text[ russian ] = " ";
+    Text[ russian ] = " ";
     Text[ polish ] = "Chro zapis";
     Text[ japanese ] = "記録の保護";
     Text[ chinese_traditional ] = "保護記錄";
@@ -2275,13 +2275,13 @@ String SCSTR_CHG_UNPROTECT
     Text [ portuguese ] = "Desactivar proteco do histrico" ;
     Text [ portuguese_brazilian ] = "Unprotect trace" ;
     Text[ chinese_simplified ] = "取消保护记录";
-    Text[ russian ] = "   ";
+    Text[ russian ] = "   ";
     Text[ polish ] = "Anuluj ochron historii";
     Text[ japanese ] = "記録の保護を解除";
     Text[ chinese_traditional ] = "取消保護記錄";
     Text[ arabic ] = "Unprotect trace";
     Text[ greek ] = "  ";
-    Text[ korean ] = "기록 보호 취소";
+    Text[ korean ] = "레코드 보호 해제";
     Text[ turkish ] = "Unprotect trace";
     Text[ language_user1 ] = " ";
     Text[ catalan ] = "Desprotegeix el rastre";
@@ -2310,7 +2310,7 @@ String SCSTR_PASSWORD
     Text[ chinese_traditional ] = "密碼:";
     Text[ arabic ] = " :";
     Text[ greek ] = " :";
-    Text[ korean ] = "패스워드:";
+    Text[ korean ] = "암호:";
     Text[ turkish ] = "ifre:";
     Text[ language_user1 ] = " ";
     Text[ catalan ] = "Contrasenya:";
@@ -2338,7 +2338,7 @@ String SCSTR_PASSWORDOPT
     Text[ chinese_traditional ] = "密碼(可省略):";
     Text[ arabic ] = "  ():";
     Text[ greek ] = "  ():";
-    Text[ korean ] = "패스워드 (옵션):";
+    Text[ korean ] = "암호 (옵션):";
     Text[ turkish ] = "ifre (istee bal):";
     Text[ language_user1 ] = " ";
     Text[ catalan ] = "Contrasenya (opcional):";
@@ -2367,7 +2367,7 @@ String SCSTR_WRONGPASSWORD
     Text[ chinese_traditional ] = "密碼無效";
     Text[ arabic ] = "   ";
     Text[ greek ] = "  ";
-    Text[ korean ] = "틀린 패스워드";
+    Text[ korean ] = "옳지 않은 암호";
     Text[ turkish ] = "ifre yanl";
     Text[ language_user1 ] = " ";
     Text[ catalan ] = "Contrasenya incorrecta";
@@ -2454,7 +2454,7 @@ String SCSTR_UNKNOWN
     Text[ chinese_traditional ] = "未命名";
     Text[ arabic ] = " ";
     Text[ greek ] = "";
-    Text[ korean ] = "알려져있지 않음";
+    Text[ korean ] = "알 수 없음";
     Text[ turkish ] = "Bilinmiyor";
     Text[ language_user1 ] = " ";
     Text[ catalan ] = "Desconegut";
@@ -2868,7 +2868,7 @@ String SCSTR_FIELDSEP
     Text [ portuguese ] = ",\t44\t;\t59\t:\t58\t{Tab}\t9\t{espao}\t32" ;
     Text [ french ] = ",\t44\t;\t59\t:\t58\t{Tab}\t9\t{Espace}\t32" ;
     Text [ dutch ] = ",\t44\t;\t59\t:\t58\t{Tab}\t9\t{Leeg}\t32" ;
-    Text [ spanish ] = ",\t44\t;\t59\t:\t58\t{Tab}\t9\t{vaco}\t32" ;
+    Text [ spanish ] = ",\t44\t;\t59\t:\t58\t{Tab}\t9\t{espacio}\t32" ;
     Text [ danish ] = ",\t44\t;\t59\t:\t58\t{Tab}\t9\t{tom}\t32" ;
     Text [ swedish ] = ",\t44\t;\t59\t:\t58\t{Tab}\t9\t{tom}\t32" ;
     Text [ finnish ] = ",\t44\t;\t59\t:\t58\t{Tab}\t9\t{space}\t32 " ;
@@ -2946,7 +2946,7 @@ String SCSTR_GRFILTER_OPENERROR
     Text[ dutch ] = "Grafisch bestand kan niet worden geopend";
     Text[ chinese_simplified ] = "无法打开图形文件";
     Text[ greek ] = "       ";
-    Text[ korean ] = "그래픽 파일을 열 수 없습니다.";
+    Text[ korean ] = "그림 파일을 열 수 없습니다.";
     Text[ turkish ] = "Grafik dosyas alamyor";
     Text[ language_user1 ] = " ";
     Text[ catalan ] = "No es pot obrir el fitxer grfic";
@@ -2976,7 +2976,7 @@ String SCSTR_GRFILTER_IOERROR
     Text[ dutch ] = "Grafisch bestand kan niet worden gelezen";
     Text[ chinese_simplified ] = "无法读取图形文件";
     Text[ greek ] = "       ";
-    Text[ korean ] = "그래픽 파일을 읽을 수 없습니다.";
+    Text[ korean ] = "그림 파일을 읽을 수 없습니다.";
     Text[ turkish ] = "Grafik dosyas okunamyor";
     Text[ language_user1 ] = " ";
     Text[ catalan ] = "No es pot llegir el fitxer grfic";
@@ -3006,7 +3006,7 @@ String SCSTR_GRFILTER_FORMATERROR
     Text[ dutch ] = "Onbekende grafische-bestandsindeling";
     Text[ chinese_simplified ] = "不明的图形格式";
     Text[ greek ] = "  ";
-    Text[ korean ] = "알수없는 그래픽 서식";
+    Text[ korean ] = "알 수 없는 그래픽 서식";
     Text[ turkish ] = "Bilinmeyen grafik dosyas";
     Text[ language_user1 ] = " ";
     Text[ catalan ] = "El format de la imatge s desconegut";
@@ -3025,7 +3025,7 @@ String SCSTR_GRFILTER_VERSIONERROR
     Text [ french ] = "Cette version du fichier graphique n'est pas supporte !" ;
     Text [ swedish ] = "Grafikfilens version stds inte" ;
     Text [ dutch ] = "Deze versie van het grafische bestand wordt niet ondersteund" ;
-    Text [ spanish ] = "No se soporta la versin del archivo grfico" ;
+    Text [ spanish ] = "No se admite la versin del archivo grfico" ;
     Text [ english_us ] = "This graphic file version is not supported" ;
     Text[ chinese_simplified ] = "不支持这个图形文件版本";
     Text[ russian ] = "    ";
@@ -3096,7 +3096,7 @@ String SCSTR_GRFILTER_TOOBIG
     Text[ dutch ] = "Niet genoeg vrij geheugen om de afbeelding in te voegen";
     Text[ chinese_simplified ] = "没有足够的内存用于插入图形";
     Text[ greek ] = "        .";
-    Text[ korean ] = "메모리가 부족하여 그래픽을 삽입할 수 없습니다.";
+    Text[ korean ] = "메모리가 부족하여 그림을 삽입할 수 없습니다.";
     Text[ turkish ] = "Grafiin eklenmesi iin yeterli bellek yok";
     Text[ language_user1 ] = " ";
     Text[ catalan ] = "No hi ha prou memria per a inserir la imatge";
@@ -3233,7 +3233,7 @@ String STR_REPLCELLSWARN
     Text[ swedish ] = "Cellerna som du vill klistra in data i innehller redan data.\nVill du verkligen skriva ver dessa data?";
     Text[ polish ] = "Do you want to replace the contents of the destination cells?";
     Text[ japanese ] = "データを挿入しようとしているセルには、すでにデータがあります。\n既存のデータに上書きしますか。";
-    Text[ korean ] = "붙여넣기하려는 셀에는 이미 데이터가 있습니다. 정말로 기존의 데이터를 겹쳐쓰시겠습니까?";
+    Text[ korean ] = "붙여넣기하려는 셀에는 이미 데이터가 있습니다. 기존의 데이터를 덮어쓰시겠습니까?";
     Text[ chinese_simplified ] = "要粘贴数据的单元格已经含有数据。\n真的要改写现存的数据?";
     Text[ chinese_traditional ] = "要貼上資料的儲存格已經含有資料。\n您真的要覆寫現有的資料?";
     Text[ turkish ] = "Do you want to replace the contents of the destination cells?";
@@ -3277,18 +3277,18 @@ String STR_ACC_CSVRULER_DESCR
     Text[ russian ] = "Ruler which manages objects at fixed positions.";
     Text[ greek ] = "Ruler which manages objects at fixed positions.";
     Text[ dutch ] = "Ruler which manages objects at fixed positions.";
-    Text[ french ] = "Ruler which manages objects at fixed positions.";
-    Text[ spanish ] = "Ruler which manages objects at fixed positions.";
+    Text[ french ] = "Cette rgle gre les objets  des positions fixes.";
+    Text[ spanish ] = "Esta regla administra los objetos en posiciones fijas. ";
     Text[ finnish ] = "Ruler which manages objects at fixed positions.";
-    Text[ italian ] = "Ruler which manages objects at fixed positions.";
+    Text[ italian ] = "Il righello gestisce oggetti in posizione fissa.";
     Text[ danish ] = "Ruler which manages objects at fixed positions.";
-    Text[ swedish ] = "Ruler which manages objects at fixed positions.";
+    Text[ swedish ] = "Den hr linjalen hanterar objekt p fasta positioner.";
     Text[ polish ] = "Ruler which manages objects at fixed positions.";
     Text[ portuguese_brazilian ] = "Ruler which manages objects at fixed positions.";
-    Text[ japanese ] = "Ruler which manages objects at fixed positions.";
-    Text[ korean ] = "Ruler which manages objects at fixed positions.";
-    Text[ chinese_simplified ] = "Ruler which manages objects at fixed positions.";
-    Text[ chinese_traditional ] = "Ruler which manages objects at fixed positions.";
+    Text[ japanese ] = "このルーラを使用してオブジェクトの配置を決めます。";
+    Text[ korean ] = "이 눈금자는 고정된 위치에 있는 개체를 관리합니다.";
+    Text[ chinese_simplified ] = "通过这个尺标来控制处于固定位置的对象。";
+    Text[ chinese_traditional ] = "標尺在固定位置管理物件。";
     Text[ turkish ] = "Ruler which manages objects at fixed positions.";
     Text[ arabic ] = "Ruler which manages objects at fixed positions.";
     Text[ catalan ] = "Ruler which manages objects at fixed positions.";
@@ -3304,18 +3304,18 @@ String STR_ACC_CSVGRID_NAME
     Text[ russian ] = "Preview table";
     Text[ greek ] = "Preview table";
     Text[ dutch ] = "Preview table";
-    Text[ french ] = "Feuille d'aperu";
+    Text[ french ] = "Aperu";
     Text[ spanish ] = "Previsualizacin";
     Text[ finnish ] = "Preview table";
-    Text[ italian ] = "Anteprima tabella";
+    Text[ italian ] = "Anteprima";
     Text[ danish ] = "Preview table";
     Text[ swedish ] = "Frhandsvisning";
     Text[ polish ] = "Preview table";
     Text[ portuguese_brazilian ] = "Preview table";
     Text[ japanese ] = "プレビュー";
-    Text[ korean ] = "미리보기";
-    Text[ chinese_simplified ] = "预视工作表";
-    Text[ chinese_traditional ] = "預覽工作表";
+    Text[ korean ] = "미리 보기";
+    Text[ chinese_simplified ] = "预览";
+    Text[ chinese_traditional ] = "預覽";
     Text[ turkish ] = "Preview table";
     Text[ arabic ] = "Preview table";
     Text[ catalan ] = "Preview table";
@@ -3331,18 +3331,18 @@ String STR_ACC_CSVGRID_DESCR
     Text[ russian ] = "This sheet shows, how the data will be arranged in the document.";
     Text[ greek ] = "This sheet shows, how the data will be arranged in the document.";
     Text[ dutch ] = "This sheet shows, how the data will be arranged in the document.";
-    Text[ french ] = "This sheet shows, how the data will be arranged in the document.";
-    Text[ spanish ] = "This sheet shows, how the data will be arranged in the document.";
+    Text[ french ] = "Cette feuille montre la disposition des donnes dans le document.";
+    Text[ spanish ] = "Esta hoja muestra la disposicin de los datos en el documento. ";
     Text[ finnish ] = "This sheet shows, how the data will be arranged in the document.";
-    Text[ italian ] = "This sheet shows, how the data will be arranged in the document.";
+    Text[ italian ] = "La tabella mostra la disposizione dei dati nel documento.";
     Text[ danish ] = "This sheet shows, how the data will be arranged in the document.";
-    Text[ swedish ] = "This sheet shows, how the data will be arranged in the document.";
+    Text[ swedish ] = "Den hr tabellen visar hur data ordnas i dokumentet.";
     Text[ polish ] = "This sheet shows, how the data will be arranged in the document.";
     Text[ portuguese_brazilian ] = "This sheet shows, how the data will be arranged in the document.";
-    Text[ japanese ] = "This sheet shows, how the data will be arranged in the document.";
-    Text[ korean ] = "This sheet shows, how the data will be arranged in the document.";
-    Text[ chinese_simplified ] = "This sheet shows, how the data will be arranged in the document.";
-    Text[ chinese_traditional ] = "This sheet shows, how the data will be arranged in the document.";
+    Text[ japanese ] = "この表に示すようにドキュメント内にデータが配置されます。";
+    Text[ korean ] = "이 시트는 데이터가 문서에서 어떻게 배치될 것인지 표시해줍니다.";
+    Text[ chinese_simplified ] = "这个工作表显示出在文档之内的数据排列方式。";
+    Text[ chinese_traditional ] = "這個工作表顯示資料將在文件內排列的方式。";
     Text[ turkish ] = "This sheet shows, how the data will be arranged in the document.";
     Text[ arabic ] = "This sheet shows, how the data will be arranged in the document.";
     Text[ catalan ] = "This sheet shows, how the data will be arranged in the document.";
@@ -3359,7 +3359,7 @@ String STR_ACC_DOC_NAME
     Text[ greek ] = "Document View";
     Text[ dutch ] = "Document View";
     Text[ french ] = "Affichage du document";
-    Text[ spanish ] = "Ver documento";
+    Text[ spanish ] = "Visualizacin del documento";
     Text[ finnish ] = "Document View";
     Text[ italian ] = "Vista documento";
     Text[ danish ] = "Document View";
@@ -3422,18 +3422,18 @@ String STR_ACC_CELL_NAME
     Text[ russian ] = "Table Cell %1";
     Text[ greek ] = "Table Cell %1";
     Text[ dutch ] = "Table Cell %1";
-    Text[ french ] = "Cellule de feuille %1";
+    Text[ french ] = "Cellule %1";
     Text[ spanish ] = "Celda %1";
     Text[ finnish ] = "Table Cell %1";
-    Text[ italian ] = "Cella della tabella %1";
+    Text[ italian ] = "Cella %1";
     Text[ danish ] = "Table Cell %1";
-    Text[ swedish ] = "Tabellcell %1";
+    Text[ swedish ] = "Cell %1";
     Text[ polish ] = "Table Cell %1";
     Text[ portuguese_brazilian ] = "Table Cell %1";
     Text[ japanese ] = "表のセル %1";
-    Text[ korean ] = "표의 셀 %1";
-    Text[ chinese_simplified ] = "工作表单元格 %1";
-    Text[ chinese_traditional ] = "工作表儲存格 %1";
+    Text[ korean ] = "셀 %1";
+    Text[ chinese_simplified ] = "单元格 %1";
+    Text[ chinese_traditional ] = "儲存格 %1";
     Text[ turkish ] = "Table Cell %1";
     Text[ arabic ] = "Table Cell %1";
     Text[ catalan ] = "Table Cell %1";
@@ -3455,7 +3455,7 @@ String STR_ACC_PREVIEWDOC_NAME
     Text[ greek ] = "Page Preview";
     Text[ dutch ] = "Page Preview";
     Text[ french ] = "Aperu de page";
-    Text[ spanish ] = "Previsualizacin pgina";
+    Text[ spanish ] = "Vista preliminar";
     Text[ finnish ] = "Page Preview";
     Text[ italian ] = "Anteprima di pagina";
     Text[ danish ] = "Page Preview";
@@ -3463,7 +3463,7 @@ String STR_ACC_PREVIEWDOC_NAME
     Text[ polish ] = "Page Preview";
     Text[ portuguese_brazilian ] = "Page Preview";
     Text[ japanese ] = "印刷プレビュー";
-    Text[ korean ] = "페이지 미리보기";
+    Text[ korean ] = "페이지 미리 보기";
     Text[ chinese_simplified ] = "页面预览";
     Text[ chinese_traditional ] = "頁面檢視";
     Text[ turkish ] = "Page Preview";
@@ -3592,18 +3592,18 @@ String STR_ACC_HEADER_NAME
     Text[ russian ] = "Header";
     Text[ greek ] = "Header";
     Text[ dutch ] = "Header";
-    Text[ french ] = "En-tte";
-    Text[ spanish ] = "Encabezamiento";
+    Text[ french ] = "En-tte de la page %1";
+    Text[ spanish ] = "Encabezamiento de la pgina %1";
     Text[ finnish ] = "Header";
-    Text[ italian ] = "Riga d'intestazione";
+    Text[ italian ] = "Riga d'intestazione della pagina %1";
     Text[ danish ] = "Header";
-    Text[ swedish ] = "Sidhuvud";
+    Text[ swedish ] = "Sidhuvud sida %1";
     Text[ polish ] = "Header";
     Text[ portuguese_brazilian ] = "Header";
-    Text[ japanese ] = "ヘッダ";
-    Text[ korean ] = "머리글";
-    Text[ chinese_simplified ] = "页眉";
-    Text[ chinese_traditional ] = "頁首";
+    Text[ japanese ] = "ページ %1 のヘッダ";
+    Text[ korean ] = "%1 페이지의 머리글";
+    Text[ chinese_simplified ] = "页眉 页 %1";
+    Text[ chinese_traditional ] = "頁 %1 的頁首";
     Text[ turkish ] = "Header";
     Text[ arabic ] = "Header";
     Text[ catalan ] = "Header";
@@ -3624,18 +3624,18 @@ String STR_ACC_FOOTER_NAME
     Text[ russian ] = "Footer";
     Text[ greek ] = "Footer";
     Text[ dutch ] = "Footer";
-    Text[ french ] = "Pied de page";
-    Text[ spanish ] = "Pie de pgina";
+    Text[ french ] = "Pied de page de la page %1";
+    Text[ spanish ] = "Pie de pgina de la pgina %1";
     Text[ finnish ] = "Footer";
-    Text[ italian ] = "Pi di pagina";
+    Text[ italian ] = "Pi di pagina della pagina %1";
     Text[ danish ] = "Footer";
-    Text[ swedish ] = "Sidfot";
+    Text[ swedish ] = "Sidfot sida %1";
     Text[ polish ] = "Footer";
     Text[ portuguese_brazilian ] = "Footer";
-    Text[ japanese ] = "フッタ";
-    Text[ korean ] = "페이지 %1의 바닥글";
-    Text[ chinese_simplified ] = "页脚";
-    Text[ chinese_traditional ] = "頁尾";
+    Text[ japanese ] = "ページ %1 のフッタ";
+    Text[ korean ] = "%1 페이지의 바닥글";
+    Text[ chinese_simplified ] = "页脚 页 %1";
+    Text[ chinese_traditional ] = "頁 %1 的頁尾";
     Text[ turkish ] = "Footer";
     Text[ arabic ] = "Footer";
     Text[ catalan ] = "Footer";
@@ -3656,7 +3656,7 @@ String STR_ACC_EDITLINE_NAME
     Text[ russian ] = "Editline";
     Text[ greek ] = "Editline";
     Text[ dutch ] = "Editline";
-    Text[ french ] = "Ligne d'dition";
+    Text[ french ] = "Ligne de saisie";
     Text[ spanish ] = "Lnea de edicin";
     Text[ finnish ] = "Editline";
     Text[ italian ] = "Riga di modifica";
@@ -3665,7 +3665,7 @@ String STR_ACC_EDITLINE_NAME
     Text[ polish ] = "Editline";
     Text[ portuguese_brazilian ] = "Editline";
     Text[ japanese ] = "入力行";
-    Text[ korean ] = "입력행";
+    Text[ korean ] = "입력줄";
     Text[ chinese_simplified ] = "输入行";
     Text[ chinese_traditional ] = "輸入欄";
     Text[ turkish ] = "Editline";
@@ -3683,18 +3683,18 @@ String STR_ACC_EDITLINE_DESCR
     Text[ russian ] = "This is where you enter or edit text, numbers and formulas.";
     Text[ greek ] = "This is where you enter or edit text, numbers and formulas.";
     Text[ dutch ] = "This is where you enter or edit text, numbers and formulas.";
-    Text[ french ] = "This is where you enter or edit text, numbers and formulas.";
-    Text[ spanish ] = "This is where you enter or edit text, numbers and formulas.";
+    Text[ french ] = "Saisie et dition des textes, nombres et formules";
+    Text[ spanish ] = "Aqu se puede introducir y editar texto, nmeros y frmulas. ";
     Text[ finnish ] = "This is where you enter or edit text, numbers and formulas.";
-    Text[ italian ] = "This is where you enter or edit text, numbers and formulas.";
+    Text[ italian ] = "Spazio per scrivere o modificare testo, numeri e formule.";
     Text[ danish ] = "This is where you enter or edit text, numbers and formulas.";
-    Text[ swedish ] = "This is where you enter or edit text, numbers and formulas.";
+    Text[ swedish ] = "Hr kan du mata in och redigera text, tal och formler.";
     Text[ polish ] = "This is where you enter or edit text, numbers and formulas.";
     Text[ portuguese_brazilian ] = "This is where you enter or edit text, numbers and formulas.";
-    Text[ japanese ] = "This is where you enter or edit text, numbers and formulas.";
-    Text[ korean ] = "This is where you enter or edit text, numbers and formulas.";
-    Text[ chinese_simplified ] = "This is where you enter or edit text, numbers and formulas.";
-    Text[ chinese_traditional ] = "This is where you enter or edit text, numbers and formulas.";
+    Text[ japanese ] = "ここでテキスト、数値、数式の入力または編集を行います。";
+    Text[ korean ] = "여기에서 텍스트, 숫자와 수식을 입력하거나 편집합니다.";
+    Text[ chinese_simplified ] = "在此您能够输入和编辑文字、数字和公式。";
+    Text[ chinese_traditional ] = "在此您能夠輸入和編輯文字、數字和公式。";
     Text[ turkish ] = "This is where you enter or edit text, numbers and formulas.";
     Text[ arabic ] = "This is where you enter or edit text, numbers and formulas.";
     Text[ catalan ] = "This is where you enter or edit text, numbers and formulas.";
@@ -3710,18 +3710,18 @@ String STR_ACC_EDITCELL_NAME
     Text[ russian ] = "Table Cell %1";
     Text[ greek ] = "Table Cell %1";
     Text[ dutch ] = "Table Cell %1";
-    Text[ french ] = "Cellule de feuille %1";
+    Text[ french ] = "Cellule %1";
     Text[ spanish ] = "Celda %1";
     Text[ finnish ] = "Table Cell %1";
-    Text[ italian ] = "Cella della tabella %1";
+    Text[ italian ] = "Cella %1";
     Text[ danish ] = "Table Cell %1";
-    Text[ swedish ] = "Tabellcell %1";
+    Text[ swedish ] = "Cell %1";
     Text[ polish ] = "Table Cell %1";
     Text[ portuguese_brazilian ] = "Table Cell %1";
     Text[ japanese ] = "表のセル %1";
-    Text[ korean ] = "표의 셀 %1";
-    Text[ chinese_simplified ] = "工作表单元格 %1";
-    Text[ chinese_traditional ] = "工作表儲存格 %1";
+    Text[ korean ] = "셀 %1";
+    Text[ chinese_simplified ] = "单元格 %1";
+    Text[ chinese_traditional ] = "儲存格 %1";
     Text[ turkish ] = "Table Cell %1";
     Text[ arabic ] = "Table Cell %1";
     Text[ catalan ] = "Table Cell %1";
@@ -3742,18 +3742,18 @@ String STR_ACC_DATAPILOT_ROW_DESCR
     Text[ russian ] = "Fields that you drop here will be displayed as rows in the final DataPilot table.";
     Text[ greek ] = "Fields that you drop here will be displayed as rows in the final DataPilot table.";
     Text[ dutch ] = "Fields that you drop here will be displayed as rows in the final DataPilot table.";
-    Text[ french ] = "Fields that you drop here will be displayed as rows in the final DataPilot table.";
-    Text[ spanish ] = "Fields that you drop here will be displayed as rows in the final DataPilot table.";
+    Text[ french ] = "Les champs que vous positionnez  cet endroit seront affichs comme lignes dans la table finale du pilote de donnes.";
+    Text[ spanish ] = "Los campos que coloque aqu se mostrarn como filas en la tabla final del Piloto de datos. ";
     Text[ finnish ] = "Fields that you drop here will be displayed as rows in the final DataPilot table.";
-    Text[ italian ] = "Fields that you drop here will be displayed as rows in the final DataPilot table.";
+    Text[ italian ] = "I campi trascinati in questo spazio verranno visualizzati come righe nella tabella finale DataPilot.";
     Text[ danish ] = "Fields that you drop here will be displayed as rows in the final DataPilot table.";
-    Text[ swedish ] = "Fields that you drop here will be displayed as rows in the final DataPilot table.";
+    Text[ swedish ] = "Flt som du placerar hr visas som rader i den frdiga datapilottabellen.";
     Text[ polish ] = "Fields that you drop here will be displayed as rows in the final DataPilot table.";
     Text[ portuguese_brazilian ] = "Fields that you drop here will be displayed as rows in the final DataPilot table.";
-    Text[ japanese ] = "Fields that you drop here will be displayed as rows in the final DataPilot table.";
-    Text[ korean ] = "Fields that you drop here will be displayed as rows in the final DataPilot table.";
-    Text[ chinese_simplified ] = "Fields that you drop here will be displayed as rows in the final DataPilot table.";
-    Text[ chinese_traditional ] = "Fields that you drop here will be displayed as rows in the final DataPilot table.";
+    Text[ japanese ] = "ここにドロップしたフィールドは、DataPilot テーブルで行として表示されます。";
+    Text[ korean ] = "여기에서 지정하는 필드는 완성된 데이터 파일럿 테이블에서 행으로 표시됩니다.";
+    Text[ chinese_simplified ] = "您在此设定的字段将会当作数据助理表格之中的行显示出来。";
+    Text[ chinese_traditional ] = "您拖曳到這裡的欄位將顯示為最後 DataPilot 表格中的列。";
     Text[ turkish ] = "Fields that you drop here will be displayed as rows in the final DataPilot table.";
     Text[ arabic ] = "Fields that you drop here will be displayed as rows in the final DataPilot table.";
     Text[ catalan ] = "Fields that you drop here will be displayed as rows in the final DataPilot table.";
@@ -3769,18 +3769,18 @@ String STR_ACC_DATAPILOT_COL_DESCR
     Text[ russian ] = "Fields that you drop here will be displayed as columns in the final DataPilot table.";
     Text[ greek ] = "Fields that you drop here will be displayed as columns in the final DataPilot table.";
     Text[ dutch ] = "Fields that you drop here will be displayed as columns in the final DataPilot table.";
-    Text[ french ] = "Fields that you drop here will be displayed as columns in the final DataPilot table.";
-    Text[ spanish ] = "Fields that you drop here will be displayed as columns in the final DataPilot table.";
+    Text[ french ] = "Les champs que vous positionnez  cet endroit seront affichs comme colonnes dans la table finale du pilote de donnes.";
+    Text[ spanish ] = "Los campos que coloque aqu se mostrarn como columnas en la tabla final del Piloto de datos. ";
     Text[ finnish ] = "Fields that you drop here will be displayed as columns in the final DataPilot table.";
-    Text[ italian ] = "Fields that you drop here will be displayed as columns in the final DataPilot table.";
+    Text[ italian ] = "I campi trascinati in questo spazio verranno visualizzati come colonne nella tabella finale DataPilot.";
     Text[ danish ] = "Fields that you drop here will be displayed as columns in the final DataPilot table.";
-    Text[ swedish ] = "Fields that you drop here will be displayed as columns in the final DataPilot table.";
+    Text[ swedish ] = "Flt som du placerar hr visas som kolumner i den frdiga datapilottabellen.";
     Text[ polish ] = "Fields that you drop here will be displayed as columns in the final DataPilot table.";
     Text[ portuguese_brazilian ] = "Fields that you drop here will be displayed as columns in the final DataPilot table.";
-    Text[ japanese ] = "Fields that you drop here will be displayed as columns in the final DataPilot table.";
-    Text[ korean ] = "Fields that you drop here will be displayed as columns in the final DataPilot table.";
-    Text[ chinese_simplified ] = "Fields that you drop here will be displayed as columns in the final DataPilot table.";
-    Text[ chinese_traditional ] = "Fields that you drop here will be displayed as columns in the final DataPilot table.";
+    Text[ japanese ] = "ここにドロップしたフィールドは、DataPilot テーブルで列として表示されます。";
+    Text[ korean ] = "여기에서 지정하는 필드는 완성된 데이터 파일럿 테이블에서 열로 표시됩니다.";
+    Text[ chinese_simplified ] = "您在此设定的字段将会当作数据助理表格之中的列显示出来。";
+    Text[ chinese_traditional ] = "您拖曳到這裡的欄位將顯示為最後 DataPilot 表格中的欄。";
     Text[ turkish ] = "Fields that you drop here will be displayed as columns in the final DataPilot table.";
     Text[ arabic ] = "Fields that you drop here will be displayed as columns in the final DataPilot table.";
     Text[ catalan ] = "Fields that you drop here will be displayed as columns in the final DataPilot table.";
@@ -3796,18 +3796,18 @@ String STR_ACC_DATAPILOT_DATA_DESCR
     Text[ russian ] = "Fields that you drop here will be used for calculations in the final DataPilot table.";
     Text[ greek ] = "Fields that you drop here will be used for calculations in the final DataPilot table.";
     Text[ dutch ] = "Fields that you drop here will be used for calculations in the final DataPilot table.";
-    Text[ french ] = "Fields that you drop here will be used for calculations in the final DataPilot table.";
-    Text[ spanish ] = "Fields that you drop here will be used for calculations in the final DataPilot table.";
+    Text[ french ] = "Les champs que vous positionnez  cet endroit seront utiliss pour les calculs dans la table finale du pilote de donnes.";
+    Text[ spanish ] = "Los campos que coloque aqu se utilizarn para realizar clculos en la tabla final del Piloto de datos. ";
     Text[ finnish ] = "Fields that you drop here will be used for calculations in the final DataPilot table.";
-    Text[ italian ] = "Fields that you drop here will be used for calculations in the final DataPilot table.";
+    Text[ italian ] = "I campi trascinati in questo spazio verranno utilizzati per eseguire calcoli nella tabella finale DataPilot.";
     Text[ danish ] = "Fields that you drop here will be used for calculations in the final DataPilot table.";
-    Text[ swedish ] = "Fields that you drop here will be used for calculations in the final DataPilot table.";
+    Text[ swedish ] = "Flt som du placerar hr anvnds fr berkningar i den frdiga datapilottabellen.";
     Text[ polish ] = "Fields that you drop here will be used for calculations in the final DataPilot table.";
     Text[ portuguese_brazilian ] = "Fields that you drop here will be used for calculations in the final DataPilot table.";
-    Text[ japanese ] = "Fields that you drop here will be used for calculations in the final DataPilot table.";
-    Text[ korean ] = "Fields that you drop here will be used for calculations in the final DataPilot table.";
-    Text[ chinese_simplified ] = "Fields that you drop here will be used for calculations in the final DataPilot table.";
-    Text[ chinese_traditional ] = "Fields that you drop here will be used for calculations in the final DataPilot table.";
+    Text[ japanese ] = "ここにドロップしたフィールドは、DataPilot テーブルでの計算に使用されます。";
+    Text[ korean ] = "여기에서 지정하는 필드는 완성된 데이터 파일럿 테이블에서 계산으로 사용됩니다.";
+    Text[ chinese_simplified ] = "您在此设定的字段将会用于数据助理表格之中计算。";
+    Text[ chinese_traditional ] = "您拖曳到這裡的欄位將在最後 DataPilot 表格中用於計算。";
     Text[ turkish ] = "Fields that you drop here will be used for calculations in the final DataPilot table.";
     Text[ arabic ] = "Fields that you drop here will be used for calculations in the final DataPilot table.";
     Text[ catalan ] = "Fields that you drop here will be used for calculations in the final DataPilot table.";
@@ -3824,21 +3824,26 @@ String STR_ACC_DATAPILOT_SEL_DESCR
     Text[ russian ] = "List the fields that you can drag to one of the other three areas.";
     Text[ greek ] = "List the fields that you can drag to one of the other three areas.";
     Text[ dutch ] = "List the fields that you can drag to one of the other three areas.";
-    Text[ french ] = "List the fields that you can drag to one of the other three areas.";
-    Text[ spanish ] = "List the fields that you can drag to one of the other three areas.";
+    Text[ french ] = "Liste des champs pouvant tre dplacs vers l'une des trois zones.";
+    Text[ spanish ] = "Lista de los campos que se pueden llevar hasta una de las otras tres reas.";
     Text[ finnish ] = "List the fields that you can drag to one of the other three areas.";
-    Text[ italian ] = "List the fields that you can drag to one of the other three areas.";
+    Text[ italian ] = "Elenco dei campi che potete trascinare in una delle tre aree.";
     Text[ danish ] = "List the fields that you can drag to one of the other three areas.";
-    Text[ swedish ] = "List the fields that you can drag to one of the other three areas.";
+    Text[ swedish ] = "Hr r flt listade som du kan dra till ett av de andra tre omrdena.";
     Text[ polish ] = "List the fields that you can drag to one of the other three areas.";
     Text[ portuguese_brazilian ] = "List the fields that you can drag to one of the other three areas.";
-    Text[ japanese ] = "List the fields that you can drag to one of the other three areas.";
-    Text[ korean ] = "List the fields that you can drag to one of the other three areas.";
-    Text[ chinese_simplified ] = "List the fields that you can drag to one of the other three areas.";
-    Text[ chinese_traditional ] = "List the fields that you can drag to one of the other three areas.";
+    Text[ japanese ] = "他の3つの範囲のいずれかにドラッグ可能なフィールドをリストします。";
+    Text[ korean ] = "다른 세 영역 중 한 영역으로 끌어올 수 있는 필드를 열거합니다.";
+    Text[ chinese_simplified ] = "在此列出您能够在三个区域之间移动的字段。";
+    Text[ chinese_traditional ] = "列出您可以拖曳到其他三個區域之一的欄位。";
     Text[ turkish ] = "List the fields that you can drag to one of the other three areas.";
     Text[ arabic ] = "List the fields that you can drag to one of the other three areas.";
     Text[ catalan ] = "List the fields that you can drag to one of the other three areas.";
     Text[ thai ] = "List the fields that you can drag to one of the other three areas.";
 };
 
+
+
+
+
+
diff --git a/sc/source/ui/src/scwarngs.src b/sc/source/ui/src/scwarngs.src
index ba7509f3dc23..80a6802a042b 100644
--- a/sc/source/ui/src/scwarngs.src
+++ b/sc/source/ui/src/scwarngs.src
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: scwarngs.src,v $
  *
- *  $Revision: 1.13 $
+ *  $Revision: 1.14 $
  *
- *  last change: $Author: kz $ $Date: 2001-07-14 02:41:01 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:32 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -74,32 +74,33 @@ Resource RID_WRNHDLSC
         Text [ ENGLISH ] = "The current table has only been saved." ;
         Text [ english_us ] = "Only the active sheet could be saved." ;
         Text [ italian ] = " stata salvata solo la tabella corrente." ;
-        Text [ spanish ] = "Solo se ha guardado la hoja actual." ;
+        Text [ spanish ] = "Slo se ha guardado la hoja actual." ;
         Text [ french ] = "Seule la feuille active a t enregistre." ;
-        Text [ dutch ] = "Alleen de actuele tabel werd opgeslagen." ;
+        Text [ dutch ] = "Alleen de huidige tabel is opgeslagen." ;
         Text [ swedish ] = "Det r bara den aktuella tabellen som har sparats." ;
         Text [ danish ] = "Kun det aktuelle ark blev gemt." ;
         Text [ portuguese_brazilian ] = "Es wurde nur die aktuelle Tabelle gespeichert." ;
         Text [ portuguese ] = "S foi guardada a tabela activa." ;
-        Text[ chinese_simplified ] = "ֻ˵ǰı";
-        Text[ russian ] = "   .";
+        Text[ chinese_simplified ] = "只存盘了当前的表格。";
+        Text[ russian ] = "   .";
         Text[ polish ] = "Tylko aktualny arkusz zosta zapisany.";
-        Text[ japanese ] = "݂̕\\ۑ܂B";
-        Text[ chinese_traditional ] = "uxsFeC";
+        Text[ japanese ] = "現在の表だけが保存されました。";
+        Text[ chinese_traditional ] = "只儲存了目前的表格。";
         Text[ arabic ] = "    .";
         Text[ greek ] = "    .";
-        Text[ korean ] = "Ȱȭ Ʈ Ǿϴ.";
+        Text[ korean ] = "활성화된 시트만이 저장되었습니다.";
         Text[ turkish ] = "Yalnzca yrrlkteki tablo kaydedildi.";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Solo se ha guardado la hoja actual.";
-        Text[ finnish ] = "Vain aktiivinen lomake voitiin tallentaa.";
+        Text[ catalan ] = "Noms s'ha pogut desar el full actiu.";
+        Text[ finnish ] = "Vain aktiivinen taulukko voitiin tallentaa.";
+        Text[ thai ] = "ไม่สามารถบันทึกแผ่นงานที่ใช้งานอยู่เท่านั้นได้";
     };
     String ERRCODE_SC_IMPORT_WRN_RNGOVRFLW & SH_MAX
     {
         /* ### ACHTUNG: Neuer Text in Resource? Die Maximalanzahl von Zeilen wurde berschritten. berzhlige Zeilen wurden nicht mitimportiert! : Die Maximalanzahl von Zeilen wurde berschritten. berzhlige Zeilen wurden nicht mitimportiert! */
         Text = "Die Maximalanzahl von Zeilen wurde berschritten. berzhlige Zeilen wurden nicht mitimportiert!" ;
         Text [ ENGLISH ] = "The number of rows exceeded the maximum. Additional rows were not importet!" ;
-        Text [ dutch ] = "Het maximale aantal regels werd overschreden. Het teveel aan regels werd niet gemporteerd." ;
+        Text [ dutch ] = "Het maximale aantal regels is overschreden. Het teveel aan regels is niet gemporteerd." ;
         Text [ english_us ] = "The number of rows exceeded the maximum. Additional rows were not imported!" ;
         Text [ italian ] = " stato superato il numero massimo di righe. Le righe in eccesso non sono state importate!" ;
         Text [ spanish ] = "Se ha excedido el nmero mximo de filas, las filas adicionales no se importaron!" ;
@@ -108,18 +109,19 @@ Resource RID_WRNHDLSC
         Text [ danish ] = "Det maksimale antal rkker blev overskredet. De overtallige rkker blev ikke importeret!" ;
         Text [ portuguese ] = "O nmero mximo de linhas foi ultrapassado. As linhas em excesso no foram importadas!" ;
         Text [ portuguese_brazilian ] = "Die Maximalanzahl von Zeilen wurde ?erschritten. ?erz?hlige Zeilen wurden nicht mitimportiert!" ;
-        Text[ chinese_simplified ] = "ѾеĿûб룡";
+        Text[ chinese_simplified ] = "已经超过行的最大数目,超过的行没有被输入!";
         Text[ russian ] = "   . ,   ,   !";
         Text[ polish ] = "Maksymalna liczba wierszy zostaa przekroczona. Pozostae wiersze nie bd importowane!";
-        Text[ japanese ] = "s̍ō𒴂Ă܂Bߏ̍sͲ߰Ă܂łB";
-        Text[ chinese_traditional ] = "wgWLC̤jƥءASפJWLCI";
+        Text[ japanese ] = "行の最高数を超えています。過剰の行はインポートされませんでした。";
+        Text[ chinese_traditional ] = "已經超過列的最大數目,沒有匯入超過的列!";
         Text[ arabic ] = "    ݡ      !";
         Text[ greek ] = "     .          !";
-        Text[ korean ] = " ִ  ʰ߽ϴ.  ߰ ߽ϴ.!";
+        Text[ korean ] = "행의 최대 개수가 초과했습니다. 행을 추가하지 못했습니다.";
         Text[ turkish ] = "Azami satr says ald. Fazla satrlar ie aktarlmad!";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Se ha excedido el nmero mximo de filas, las filas adicionales no se importaron!";
+        Text[ catalan ] = "S'ha excedit el nombre mxim de files. Les files addicionals no s'han importat.";
         Text[ finnish ] = "Rivimr on ylittnyt sallitun enimmisrajan. Ylimrisi rivej ei tuotu.";
+        Text[ thai ] = "จำนวนแถวเกินจำนวนที่มากที่สุด ไม่ได้นำเข้าแถวเพิ่ม!";
     };
     /*
     String ERRCODE_SC_  & SH_MAX
@@ -133,3 +135,15 @@ Resource RID_WRNHDLSC
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sc/source/ui/src/simpref.src b/sc/source/ui/src/simpref.src
index 05b28c64989c..f279fa0dd2ef 100644
--- a/sc/source/ui/src/simpref.src
+++ b/sc/source/ui/src/simpref.src
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: simpref.src,v $
  *
- *  $Revision: 1.10 $
+ *  $Revision: 1.11 $
  *
- *  last change: $Author: kz $ $Date: 2001-07-14 20:20:25 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:32 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -64,9 +64,9 @@
  // (C) 1994-96 StarDivision GmbH, Hamburg, Germany
  //
  // $Workfile:   simpref.src  $
- //   $Author: kz $
- //     $Date: 2001-07-14 20:20:25 $
- // $Revision: 1.10 $
+ //   $Author: hr $
+ //     $Date: 2003-03-26 18:06:32 $
+ // $Revision: 1.11 $
  //  $Logfile:   T:/sc/source/ui/src/simpref.srv  $
  //----------------------------------------------------------------------------
 
@@ -98,17 +98,18 @@ ModelessDialog RID_SCDLG_SIMPLEREF
         Text [ dutch ] = "Bereik" ;
         Text [ spanish ] = "rea" ;
         Text [ english_us ] = "Area" ;
-        Text[ chinese_simplified ] = "";
-        Text[ russian ] = "";
+        Text[ chinese_simplified ] = "区域";
+        Text[ russian ] = "";
         Text[ polish ] = "Obszar";
-        Text[ japanese ] = "͈";
-        Text[ chinese_traditional ] = "ϰ";
+        Text[ japanese ] = "範囲";
+        Text[ chinese_traditional ] = "區域";
         Text[ arabic ] = "";
         Text[ greek ] = "";
-        Text[ korean ] = "";
+        Text[ korean ] = "영역";
         Text[ turkish ] = "Blm";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "rea";
+        Text[ catalan ] = "rea";
+        Text[ thai ] = "พื้นที่";
     };
     Edit ED_ASSIGN
     {
@@ -136,16 +137,17 @@ ModelessDialog RID_SCDLG_SIMPLEREF
         QuickHelpText [ portuguese ] = "Afastar" ;
     QuickHelpText[ russian ] = "";
         QuickHelpText[ polish ] = "Pomniejsz";
-        QuickHelpText[ japanese ] = "k";
-        QuickHelpText[ chinese_simplified ] = "С";
-        QuickHelpText[ chinese_traditional ] = "Yp";
+        QuickHelpText[ japanese ] = "縮小";
+        QuickHelpText[ chinese_simplified ] = "缩小";
+        QuickHelpText[ chinese_traditional ] = "縮小";
         QuickHelpText[ arabic ] = "";
         QuickHelpText[ greek ] = "";
-        QuickHelpText[ korean ] = "";
+        QuickHelpText[ korean ] = "축소";
         QuickHelpText[ language_user1 ] = " ";
         QuickHelpText[ turkish ] = "Verkleinern";
-        QuickHelpText[ catalan ] = "Reducir";
+        QuickHelpText[ catalan ] = "Redueix";
         QuickHelpText[ finnish ] = "Kutista";
+        QuickHelpText[ thai ] = "Shrink";
     };
     OKButton BTN_OK
     {
@@ -169,3 +171,12 @@ ModelessDialog RID_SCDLG_SIMPLEREF
 
 
 
+
+
+
+
+
+
+
+
+
diff --git a/sc/source/ui/src/solvrdlg.src b/sc/source/ui/src/solvrdlg.src
index 7e652a70fed5..d27a74664099 100644
--- a/sc/source/ui/src/solvrdlg.src
+++ b/sc/source/ui/src/solvrdlg.src
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: solvrdlg.src,v $
  *
- *  $Revision: 1.17 $
+ *  $Revision: 1.18 $
  *
- *  last change: $Author: kz $ $Date: 2001-07-14 20:21:36 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:32 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -64,9 +64,9 @@
  // (C) 1994-96 StarDivision GmbH, Hamburg, Germany
  //
  // $Workfile:   solvrdlg.src  $
- //   $Author: kz $
- //     $Date: 2001-07-14 20:21:36 $
- // $Revision: 1.17 $
+ //   $Author: hr $
+ //     $Date: 2003-03-26 18:06:32 $
+ // $Revision: 1.18 $
  //  $Logfile:   T:/sc/source/ui/src/solvrdlg.srv  $
  //----------------------------------------------------------------------------
 
@@ -84,7 +84,7 @@ ModelessDialog RID_SCDLG_SOLVER
     Text [ italian ] = "Ricerca valore destinazione" ;
     Text [ portuguese_brazilian ] = "Resolver" ;
     Text [ portuguese ] = "Resolver" ;
-    Text [ finnish ] = "Tuloksen haku" ;
+    Text [ finnish ] = "Tavoitteen haku" ;
     Text [ danish ] = "Mlsgning" ;
     Text [ french ] = "Recherche de valeur cible" ;
     Text [ swedish ] = "Mlvrdesskning" ;
@@ -103,24 +103,25 @@ ModelessDialog RID_SCDLG_SOLVER
         Text [ italian ] = "~Cella formula" ;
         Text [ portuguese_brazilian ] = "~c?lula de f?mula" ;
         Text [ portuguese ] = "Clula de ~frmula" ;
-        Text [ finnish ] = "Kaavasolu" ;
+        Text [ finnish ] = "~Kaavasolu" ;
         Text [ danish ] = "~Formelcelle" ;
         Text [ french ] = "Cellule de formule" ;
         Text [ swedish ] = "~Formelcell" ;
         Text [ dutch ] = "~Formulecel" ;
         Text [ spanish ] = "Celda de ~frmula" ;
         Text [ english_us ] = "~Formula cell" ;
-        Text[ chinese_simplified ] = "ʽԪ(~F)";
-        Text[ russian ] = " ";
+        Text[ chinese_simplified ] = "公式单元格(~F)";
+        Text[ russian ] = "  ";
         Text[ polish ] = "Komrka formuy";
-        Text[ japanese ] = "(~F)";
-        Text[ chinese_traditional ] = "xs(~F)";
+        Text[ japanese ] = "数式セル(~F)";
+        Text[ chinese_traditional ] = "公式儲存格(~F)";
         Text[ arabic ] = " ";
         Text[ language_user1 ] = " ";
         Text[ greek ] = " ";
-        Text[ korean ] = " (~F)";
+        Text[ korean ] = "수식 셀(~F)";
         Text[ turkish ] = "~Forml hcresi";
-        Text[ catalan ] = "Celda de ~frmula";
+        Text[ catalan ] = "Cel.la de ~frmula";
+        Text[ thai ] = "เซลล์ที่เป็น~สูตร";
     };
     Edit ED_FORMULACELL
     {
@@ -147,17 +148,18 @@ ModelessDialog RID_SCDLG_SOLVER
         QuickHelpText [ portuguese ] = "Afastar" ;
         QuickHelpText[ russian ] = "";
         QuickHelpText[ polish ] = "Pomniejsz";
-        QuickHelpText[ japanese ] = "k";
-        QuickHelpText[ chinese_simplified ] = "С";
-        QuickHelpText[ chinese_traditional ] = "Yp";
+        QuickHelpText[ japanese ] = "縮小";
+        QuickHelpText[ chinese_simplified ] = "缩小";
+        QuickHelpText[ chinese_traditional ] = "縮小";
         QuickHelpText[ arabic ] = "";
         QuickHelpText[ greek ] = "";
-        QuickHelpText[ korean ] = "";
+        QuickHelpText[ korean ] = "축소";
         QuickHelpText[ language_user1 ] = " ";
         QuickHelpText[ language_user1 ] = " ";
         QuickHelpText[ turkish ] = "Verkleinern";
-        QuickHelpText[ catalan ] = "Reducir";
+        QuickHelpText[ catalan ] = "Redueix";
         QuickHelpText[ finnish ] = "Kutista";
+        QuickHelpText[ thai ] = "Shrink";
     };
     FixedText FT_TARGETVAL
     {
@@ -176,17 +178,18 @@ ModelessDialog RID_SCDLG_SOLVER
         Text [ dutch ] = "~Doelwaarde" ;
         Text [ spanish ] = "Valor ~destino" ;
         Text [ english_us ] = "Target ~value" ;
-        Text[ chinese_simplified ] = "Ŀֵ(~V)";
-        Text[ russian ] = " ";
+        Text[ chinese_simplified ] = "目标值(~V)";
+        Text[ russian ] = "";
         Text[ polish ] = "Warto docelowa";
-        Text[ japanese ] = "ڕWl(~V)";
-        Text[ chinese_traditional ] = "ؼЭ(~V)";
+        Text[ japanese ] = "目標値(~V)";
+        Text[ chinese_traditional ] = "目標值(~V)";
         Text[ arabic ] = " ";
         Text[ greek ] = " ~";
-        Text[ korean ] = "ǥ (~V)";
+        Text[ korean ] = "목표값(~V)";
         Text[ turkish ] = "~Hedef deer";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Valor ~destino";
+        Text[ catalan ] = "~Valor de l'objectiu";
+        Text[ thai ] = "~ค่าเป้าหมาย";
     };
     Edit ED_TARGETVAL
     {
@@ -207,22 +210,23 @@ ModelessDialog RID_SCDLG_SOLVER
         Text [ portuguese ] = "Clula ~varivel" ;
         Text [ finnish ] = "Muuttuja~solu" ;
         Text [ danish ] = "Variabel celle" ;
-        Text [ french ] = "Cellule ~variable" ;
+        Text [ french ] = "Cellule variable" ;
         Text [ swedish ] = "~Variabel cell" ;
         Text [ dutch ] = "~Variabele cel" ;
         Text [ spanish ] = "Celda ~variable" ;
         Text [ english_us ] = "Variable ~cell" ;
-        Text[ chinese_simplified ] = "ɱĵԪ(~C)";
-        Text[ russian ] = " ";
+        Text[ chinese_simplified ] = "可变的单元格";
+        Text[ russian ] = " ";
         Text[ polish ] = "Zmienna komrka";
-        Text[ japanese ] = "ω(~C)";
-        Text[ chinese_traditional ] = "iܪxs(~C)";
+        Text[ japanese ] = "変化させるセル(~C)";
+        Text[ chinese_traditional ] = "可變的儲存格(~C)";
         Text[ arabic ] = " ";
         Text[ greek ] = " ";
-        Text[ korean ] = " (~C)";
+        Text[ korean ] = "변경 가능 셀";
         Text[ turkish ] = "~Deiken hcre";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Celda ~variable";
+        Text[ catalan ] = "~Cel.la de variable";
+        Text[ thai ] = "เ~ซลล์ที่เป็นตัวแปร";
     };
     Edit ED_VARCELL
     {
@@ -249,17 +253,18 @@ ModelessDialog RID_SCDLG_SOLVER
         QuickHelpText [ portuguese ] = "Afastar" ;
         QuickHelpText[ russian ] = "";
         QuickHelpText[ polish ] = "Pomniejsz";
-        QuickHelpText[ japanese ] = "k";
-        QuickHelpText[ chinese_simplified ] = "С";
-        QuickHelpText[ chinese_traditional ] = "Yp";
+        QuickHelpText[ japanese ] = "縮小";
+        QuickHelpText[ chinese_simplified ] = "缩小";
+        QuickHelpText[ chinese_traditional ] = "縮小";
         QuickHelpText[ arabic ] = "";
         QuickHelpText[ greek ] = "";
-        QuickHelpText[ korean ] = "Min/Max";
+        QuickHelpText[ korean ] = "최소/최대";
         QuickHelpText[ language_user1 ] = " ";
         QuickHelpText[ language_user1 ] = " ";
         QuickHelpText[ turkish ] = "Verkleinern";
-        QuickHelpText[ catalan ] = "Reducir";
+        QuickHelpText[ catalan ] = "Redueix";
         QuickHelpText[ finnish ] = "Kutista";
+        QuickHelpText[ thai ] = "Shrink";
     };
     FixedLine FL_VARIABLES
     {
@@ -271,24 +276,25 @@ ModelessDialog RID_SCDLG_SOLVER
         Text [ italian ] = "Preimpostazioni" ;
         Text [ portuguese_brazilian ] = "Vari?veis" ;
         Text [ portuguese ] = "Predefinies" ;
-        Text [ finnish ] = "Mrit oletusarvot" ;
+        Text [ finnish ] = "Oletusasetukset" ;
         Text [ danish ] = "Forudindstillinger" ;
         Text [ french ] = "Dfinitions" ;
         Text [ swedish ] = "Frinstllningar" ;
         Text [ dutch ] = "Standaard" ;
-        Text [ spanish ] = "Predeterminaciones" ;
+        Text [ spanish ] = "Configuracin predeterminada" ;
         Text [ english_us ] = "Default settings" ;
-        Text[ chinese_simplified ] = "Ԥ";
-        Text[ russian ] = " ";
+        Text[ chinese_simplified ] = "预置";
+        Text[ russian ] = "";
         Text[ polish ] = "Ustawienia domylne";
-        Text[ japanese ] = "l";
-        Text[ chinese_traditional ] = "wm";
+        Text[ japanese ] = "既定値";
+        Text[ chinese_traditional ] = "預設";
         Text[ arabic ] = " ";
         Text[ greek ] = "";
-        Text[ korean ] = "⺻ ";
+        Text[ korean ] = "기본 설정";
         Text[ turkish ] = "Varsaylan belirle";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Variables";
+        Text[ thai ] = "กำหนดค่าเริ่มต้น";
     };
     OKButton BTN_OK
     {
@@ -318,24 +324,25 @@ ModelessDialog RID_SCDLG_SOLVER
         Text [ italian ] = "Valore di destinazione non valido!" ;
         Text [ portuguese_brazilian ] = "Valor do alvo inv?lido!" ;
         Text [ portuguese ] = "Valor de destino incorreto!" ;
-        Text [ finnish ] = "Virheellinen kohdearvo." ;
+        Text [ finnish ] = "Virheellinen kohdearvo" ;
         Text [ danish ] = "Ugyldig mlvrdi!" ;
         Text [ french ] = "La valeur cible est incorrecte !" ;
         Text [ swedish ] = "Ogiltigt mlvrde!" ;
         Text [ dutch ] = "Ongeldige doelwaarde!" ;
         Text [ spanish ] = "Valor de destino no vlido!" ;
         Text [ english_us ] = "Invalid target value." ;
-        Text[ chinese_simplified ] = "ĿֵЧ";
-        Text[ russian ] = "  !";
+        Text[ chinese_simplified ] = "目标数值无效!";
+        Text[ russian ] = " .";
         Text[ polish ] = "Nieprawidowa warto docelowa!";
-        Text[ japanese ] = "ޯĒl͖łB";
-        Text[ chinese_traditional ] = "ؼмƭȵLġI";
+        Text[ japanese ] = "このターゲット値は無効です。";
+        Text[ chinese_traditional ] = "目標數值無效!";
         Text[ arabic ] = "   !";
         Text[ greek ] = "   !";
-        Text[ korean ] = " ʴ ǥ.";
+        Text[ korean ] = "허용되지 않는 목표값";
         Text[ turkish ] = "Geerli olmayan hedef deer!";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Valor de destino no vlido!";
+        Text[ catalan ] = "El valor de l'objectiu no s vlid.";
+        Text[ thai ] = "ค่าเป้าหมายไม่ถูกต้อง";
     };
     String STR_INVALIDVAR
     {
@@ -345,24 +352,25 @@ ModelessDialog RID_SCDLG_SOLVER
         Text [ italian ] = "Nome non definito per la cella-variabile!" ;
         Text [ portuguese_brazilian ] = "Nome indefinido para c?lula vari?vel!" ;
         Text [ portuguese ] = "Nome indefinido para clula varivel!" ;
-        Text [ finnish ] = "Mrittmtn nimi muuttujasoluna." ;
+        Text [ finnish ] = "Mrittmtn nimi muuttujasoluna" ;
         Text [ danish ] = "Udefineret navn som variabelcelle!" ;
         Text [ french ] = "Le nom pour la cellule variable n'a pas t dfini !" ;
         Text [ swedish ] = "Odefinierat namn som variabel cell!" ;
         Text [ dutch ] = "Niet-gedefinieerde naam voor variabele cel!" ;
         Text [ spanish ] = "Nombre no definido como celda de variable!" ;
         Text [ english_us ] = "Undefined name for variable cell." ;
-        Text[ chinese_simplified ] = "δƵɱĵԪ";
-        Text[ russian ] = "    !";
+        Text[ chinese_simplified ] = "未定义的名称当作可变量的单元格!";
+        Text[ russian ] = "    .";
         Text[ polish ] = "Nie zdefiniowana nazwa jako komrka zmienna!";
-        Text[ japanese ] = "ωقw肳Ă܂B";
-        Text[ chinese_traditional ] = "wqWٳQ@iܶqxsI";
+        Text[ japanese ] = "変化させるセルが指定されていません。";
+        Text[ chinese_traditional ] = "未定義的名稱被當作可變量的儲存格!";
         Text[ arabic ] = "    !";
         Text[ greek ] = "    !";
-        Text[ korean ] = " μǵ ̸";
+        Text[ korean ] = "가변 셀이 지정되지 않았습니다.";
         Text[ turkish ] = "Tanmlanmam hcresi iin tanmlanmam ad!";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Nombre no definido como celda de variable!";
+        Text[ catalan ] = "El nom per a la cel.la de variable no est definit.";
+        Text[ thai ] = "ไม่ได้กำหนดชื่อเซลล์ที่เป็นตัวแปร";
     };
     String STR_INVALIDFORM
     {
@@ -372,24 +380,25 @@ ModelessDialog RID_SCDLG_SOLVER
         Text [ italian ] = "Nome non definito per la cella-formula!" ;
         Text [ portuguese_brazilian ] = "Nome indefinido para c?lula de f?mula!" ;
         Text [ portuguese ] = "Nome indefinido para clula frmula!" ;
-        Text [ finnish ] = "Mrittmtn nimi kaavasoluna." ;
+        Text [ finnish ] = "Mrittmtn nimi kaavasoluna" ;
         Text [ danish ] = "Udefineret navn som formelcelle!" ;
         Text [ french ] = "Le nom de la cellule de formule n'a pas t dfini !" ;
         Text [ swedish ] = "Odefinierat namn som formelcell!" ;
         Text [ dutch ] = "Niet-gedefinieerde naam voor formulecel!" ;
         Text [ spanish ] = "Nombre no definido como celda de frmula!" ;
         Text [ english_us ] = "Undefined name as formula cell." ;
-        Text[ chinese_simplified ] = "δƵʽԪ";
-        Text[ russian ] = "    !";
+        Text[ chinese_simplified ] = "未定义的名称当作公式单元格!";
+        Text[ russian ] = "    .";
         Text[ polish ] = "Nie zdefiniowana nazwa jako formua komrek!";
-        Text[ japanese ] = "قw肳Ă܂B";
-        Text[ chinese_traditional ] = "wqWٳQ@xsI";
+        Text[ japanese ] = "数式セルが指定されていません。";
+        Text[ chinese_traditional ] = "未定義的名稱被當作公式儲存格!";
         Text[ arabic ] = "    !";
         Text[ greek ] = "    !";
-        Text[ korean ] = " μǵ ̸.";
+        Text[ korean ] = "수식 셀로서 정의되지 않은 이름.";
         Text[ turkish ] = "Forml hcresi iin tanmlanmam ad!";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Nombre no definido como celda de frmula!";
+        Text[ catalan ] = "El nom de la cel.la de frmula no est definit.";
+        Text[ thai ] = "ไม่ได้กำหนดชื่อเซลล์ที่เป็นสูตร";
     };
     String STR_NOFORMULA
     {
@@ -407,31 +416,45 @@ ModelessDialog RID_SCDLG_SOLVER
         Text [ dutch ] = "Cel moet een formule bevatten" ;
         Text [ spanish ] = "La celda debe contener una frmula!" ;
         Text [ english_us ] = "Cell must contain a formula." ;
-        Text[ chinese_simplified ] = "Ԫڱ뺬һʽ";
-        Text[ russian ] = "   !";
+        Text[ chinese_simplified ] = "单元格内必须含有一个公式!";
+        Text[ russian ] = "   .";
         Text[ polish ] = "Komrka musi zawiera formu!";
-        Text[ japanese ] = "قɐ܂܂ĂKv܂B";
-        Text[ chinese_traditional ] = "xs楲t@ӤI";
+        Text[ japanese ] = "セルに数式が含まれている必要があります。";
+        Text[ chinese_traditional ] = "儲存格必須含有一個公式!";
         Text[ arabic ] = "     .";
         Text[ greek ] = "      !";
-        Text[ korean ] = "  ԵǾ߸ մϴ.";
+        Text[ korean ] = "셀에는 수식이 포함되어야만 합니다.";
         Text[ turkish ] = "Hcre, forml iermeli!";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "La celda debe contener una frmula!";
+        Text[ catalan ] = "La cel.la ha de contenir una frmula.";
+        Text[ thai ] = "เซลล์ต้องมีสูตร";
     };
-    Text[ chinese_simplified ] = "";
+    Text[ chinese_simplified ] = "单变量求解";
     Text[ russian ] = " ";
     Text[ polish ] = "Szukaj wyniku";
-    Text[ japanese ] = "ްټ";
-    Text[ chinese_traditional ] = "ؼзjM";
+    Text[ japanese ] = "ゴールシーク";
+    Text[ chinese_traditional ] = "目標搜尋";
     Text[ arabic ] = "   ";
     Text[ greek ] = " ";
-    Text[ korean ] = "ǥ ã";
+    Text[ korean ] = "목표값 찾기";
     Text[ turkish ] = "Hedef deer ara";
     Text[ language_user1 ] = " ";
-    Text[ catalan ] = "Buscar valor destino";
+    Text[ catalan ] = "Cerca de l'objectiu";
+    Text[ thai ] = "ค้นหาค่าเป้าหมาย";
 };
 
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sc/source/ui/src/sortdlg.src b/sc/source/ui/src/sortdlg.src
index 0691f8557311..db7ff8d596e2 100644
--- a/sc/source/ui/src/sortdlg.src
+++ b/sc/source/ui/src/sortdlg.src
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: sortdlg.src,v $
  *
- *  $Revision: 1.29 $
+ *  $Revision: 1.30 $
  *
- *  last change: $Author: kz $ $Date: 2002-12-09 10:03:42 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:33 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -93,7 +93,7 @@ TabPage RID_SCPAGE_SORT_FIELDS
         Text [ english_us ] = "~Ascending" ;
         TabStop = TRUE ;
         Text[ chinese_simplified ] = "向上(~A)";
-        Text[ russian ] = " ";
+        Text[ russian ] = " ~";
         Text[ polish ] = "Rosnco";
         Text[ japanese ] = "昇順(~A)";
         Text[ chinese_traditional ] = "向上(~A)";
@@ -193,7 +193,7 @@ TabPage RID_SCPAGE_SORT_FIELDS
         Text [ english_us ] = "A~scending" ;
         TabStop = TRUE ;
         Text[ chinese_simplified ] = "向上(~S)";
-        Text[ russian ] = " ";
+        Text[ russian ] = " ~";
         Text[ polish ] = "Rosnco";
         Text[ japanese ] = "昇順(~S)";
         Text[ chinese_traditional ] = "向上(~S)";
@@ -416,24 +416,24 @@ TabPage RID_SCPAGE_SORT_OPTIONS
         Text = "Bereich ~enthlt Spaltenbeschriftungen" ;
         Text [ ENGLISH ] = "Source with ~column headers" ;
         Text [ norwegian ] = "Kilde med  ~kolonne topptekst" ;
-        Text [ italian ] = "L'area ~contiene intestazioni colonna" ;
+        Text [ italian ] = "L'area ~contiene intestazioni di colonna" ;
         Text [ portuguese_brazilian ] = "Fonte com ~cabe?alhos de colunas" ;
         Text [ portuguese ] = "rea contm ~cabealhos de colunas" ;
         Text [ finnish ] = "Alue sislt sarake~otsikkoja" ;
         Text [ danish ] = "Omrdet indeholder kolonneoverskrifter" ;
-        Text [ french ] = "La plage contient des en-ttes de colonne" ;
-        Text [ swedish ] = "Omrde innehller ~kolumnhuvuden" ;
+        Text [ french ] = "La plage contient des tiquettes de colonne." ;
+        Text [ swedish ] = "Omrde innehller ~kolumnetiketter" ;
         Text [ dutch ] = "Bereik bevat ~kolomkoppen" ;
-        Text [ spanish ] = "Area contiene encabezamientos de ~columnas" ;
+        Text [ spanish ] = "El rea contiene los ttulos de las ~columnas" ;
         Text [ english_us ] = "Range contains column la~bels" ;
-        Text[ chinese_simplified ] = "区域含有列标签(~H)";
+        Text[ chinese_simplified ] = "区域含有列标题(~H)";
         Text[ russian ] = "   ";
         Text[ polish ] = "Obszar zawiera nagwki kolumn";
         Text[ japanese ] = "範囲に列の項目欄を含む(~H)";
-        Text[ chinese_traditional ] = "區域含有欄標題(~H)";
+        Text[ chinese_traditional ] = "範圍含有欄標籤(~H)";
         Text[ arabic ] = "   ";
         Text[ greek ] = "    ";
-        Text[ korean ] = "열 머리글 포함(~H)";
+        Text[ korean ] = "열 레이블 포함(~H)";
         Text[ turkish ] = "Blm ~stun balklar ieriyor";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "L'rea cont ca~paleres de columnes";
@@ -449,19 +449,19 @@ TabPage RID_SCPAGE_SORT_OPTIONS
         Text [ portuguese ] = "rea contm ~cabealhos de linhas" ;
         Text [ finnish ] = "Alue sislt ~riviotsikoita" ;
         Text [ danish ] = "Omrdet indeholder rkkeoverskrifter" ;
-        Text [ french ] = "La plage contient des en-ttes de ~lignes" ;
-        Text [ swedish ] = "Omrde innehller radh~uvuden" ;
+        Text [ french ] = "La plage contient des tiquettes de ligne." ;
+        Text [ swedish ] = "Omrde innehller ~radetiketter" ;
         Text [ dutch ] = "Bereik bevat ~rijkoppen" ;
-        Text [ spanish ] = "rea contiene ttulos de ~filas" ;
+        Text [ spanish ] = "El rea contiene los ttulos de las ~filas" ;
         Text [ english_us ] = "Range contains ~row labels" ;
-        Text[ chinese_simplified ] = "区域含有行标签(~R)";
+        Text[ chinese_simplified ] = "区域含有行标题(~R)";
         Text[ russian ] = "   ";
         Text[ polish ] = "Obszar zawiera nagwki wierszy";
         Text[ japanese ] = "範囲に行の項目欄を含む(~R)";
-        Text[ chinese_traditional ] = "區域含有列標題(~R)";
+        Text[ chinese_traditional ] = "範圍含有列標籤(~R)";
         Text[ arabic ] = "   ";
         Text[ greek ] = "    ";
-        Text[ korean ] = "범위에는 행 머리글 포함.(~R)";
+        Text[ korean ] = "범위에 행 레이블이 포함(~R)";
         Text[ turkish ] = "Blm sa~tr balklar ieriyor";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "L'rea cont capaleres de fil~es";
@@ -486,7 +486,7 @@ TabPage RID_SCPAGE_SORT_OPTIONS
         Text [ english_us ] = "Include ~formats" ;
         TabStop = TRUE ;
         Text[ chinese_simplified ] = "包含格式(~F)";
-        Text[ russian ] = " ";
+        Text[ russian ] = " ~";
         Text[ polish ] = "Uwzgldnij formaty";
         Text[ japanese ] = "書式を含む(~F)";
         Text[ chinese_traditional ] = "包含格式(~F)";
@@ -517,13 +517,13 @@ TabPage RID_SCPAGE_SORT_OPTIONS
         Text [ english_us ] = "~Copy sort results to:" ;
         TabStop = TRUE ;
         Text[ chinese_simplified ] = "复制排序结果到(~C)";
-        Text[ russian ] = "   ";
+        Text[ russian ] = " ~  ";
         Text[ polish ] = "Kopiuj rezultat sortowania do";
         Text[ japanese ] = "並べ替え結果の貼り付け先(~C)";
         Text[ chinese_traditional ] = "複製排序結果到(~C)";
         Text[ arabic ] = "   ";
         Text[ greek ] = "   ";
-        Text[ korean ] = "다음으로 결과 복사(~C)";
+        Text[ korean ] = "정렬 결과를 다음 위치로 복사(~C)";
         Text[ turkish ] = "Sralama sonularnn kopyalanaca ~yer";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "~Copia els resultats de l'ordenaci a:";
@@ -713,7 +713,7 @@ TabPage RID_SCPAGE_SORT_OPTIONS
         Text[ chinese_traditional ] = "從上向下(排序列) (~T)";
         Text[ arabic ] = "    ( )";
         Text[ greek ] = "  ~   ( )";
-        Text[ korean ] = "위 에서 아래로 (행 정렬)(~T)";
+        Text[ korean ] = "위에서 아래로(행 정렬)(~T)";
         Text[ turkish ] = "~Yukardan aa (satrlar srala)";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "De dal~t a baix (ordena les files)";
@@ -731,8 +731,8 @@ TabPage RID_SCPAGE_SORT_OPTIONS
         Text [ portuguese ] = "Da ~esquerda para a direita (ordenar colunas)" ;
         Text [ finnish ] = "~Vasemmalta oikealle (sarakkeiden lajittelu)" ;
         Text [ danish ] = "Fra venstre til hjre (sorter kolonner)" ;
-        Text [ french ] = "De gauche  droite (tri de colonnes)" ;
-        Text [ swedish ] = "Frn vnster til~l hger (sortera kolumner)" ;
+        Text [ french ] = "De gauche  droite (trier les colonnes)" ;
+        Text [ swedish ] = "Frn vnster till hger (sortera kolumner)" ;
         Text [ dutch ] = "Van ~links naar rechts (kolommen sorteren)" ;
         Text [ spanish ] = "De ~izquierda a derecha (ordenar columnas)" ;
         Text [ english_us ] = "L~eft to right (sort columns)" ;
@@ -741,10 +741,10 @@ TabPage RID_SCPAGE_SORT_OPTIONS
         Text[ russian ] = "  ( )";
         Text[ polish ] = "Sortuj kolumny od lewej do prawej";
         Text[ japanese ] = "左から右へ(列の並べ替え)(~E)";
-        Text[ chinese_traditional ] = "從左向右(欄排序)(~E)";
+        Text[ chinese_traditional ] = "從左向右(排序欄)(~E)";
         Text[ arabic ] = "    ( )";
         Text[ greek ] = "    ( )";
-        Text[ korean ] = "왼쪽에서 오른쪽으로 (열 정렬)(~E)";
+        Text[ korean ] = "왼쪽에서 오른쪽으로(열 정렬)(~E)";
         Text[ turkish ] = "S~oldan saa (stunlar srala)";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "D'es~querra a dreta (ordena les columnes)";
@@ -909,3 +909,5 @@ TabDialog RID_SCDLG_SORT
     Text[ thai ] = "เรียง";
 };
 
+
+
diff --git a/sc/source/ui/src/subtdlg.src b/sc/source/ui/src/subtdlg.src
index 54fa10a0f91d..3bcf148eade2 100644
--- a/sc/source/ui/src/subtdlg.src
+++ b/sc/source/ui/src/subtdlg.src
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: subtdlg.src,v $
  *
- *  $Revision: 1.30 $
+ *  $Revision: 1.31 $
  *
- *  last change: $Author: kz $ $Date: 2001-11-16 23:42:21 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:33 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -80,19 +80,20 @@ TabPage RID_SCPAGE_SUBT_OPTIONS
         Text[ dutch ] = "Groepen";
         Text[ french ] = "Groupes";
         Text[ spanish ] = "Grupos";
-        Text[ finnish ] = "Groups";
+        Text[ finnish ] = "Ryhmt";
         Text[ italian ] = "Gruppi";
-        Text[ danish ] = "Groups";
+        Text[ danish ] = "Grupper";
         Text[ swedish ] = "Grupper";
         Text[ polish ] = "Grupy";
         Text[ portuguese_brazilian ] = "Groups";
-        Text[ japanese ] = "グループ";
+        Text[ japanese ] = "グループ";
         Text[ korean ] = "그룹";
         Text[ chinese_simplified ] = "小组";
         Text[ chinese_traditional ] = "群組";
         Text[ turkish ] = "Groups";
         Text[ arabic ] = "Groups";
-        Text[ catalan ] = "Groups";
+        Text[ catalan ] = "Grups";
+        Text[ thai ] = "กลุ่ม";
     };
     CheckBox BTN_PAGEBREAK
     {
@@ -101,10 +102,10 @@ TabPage RID_SCPAGE_SUBT_OPTIONS
         Text = "Neue Seite bei Gru~ppenwechsel" ;
         Text [ ENGLISH ] = "Pagebreak for each grou~p" ;
         Text [ NORWEGIAN ] = "Sideskift for hver grupp~e" ;
-        Text [ DANISH ] = "Sideskift mellem grupper" ;
+        Text [ DANISH ] = "Sid~eskift mellem grupper" ;
         Text [ ENGLISH_US ] = "~Page break between groups" ;
         Text [ SPANISH ] = "~Nueva pgina entre grupos" ;
-        Text [ FINNISH ] = "~Sivunvaihto ryhmien vlill" ;
+        Text [ FINNISH ] = "S~ivunvaihto ryhmien vlill" ;
         Text [ FRENCH ] = "Saut de page entre les grou~pes" ;
         Text [ ITALIAN ] = "Interruzione di pagina ~per ogni cambio di gruppo" ;
         Text [ DUTCH ] = "~Nieuwe pagina voor elke groep" ;
@@ -113,16 +114,17 @@ TabPage RID_SCPAGE_SUBT_OPTIONS
         Text [ PORTUGUESE ] = "Nova pgina para cada grupo" ;
         TabStop = TRUE ;
         Text[ chinese_simplified ] = "小组之间换页(~P)";
-        Text[ russian ] = "   ";
+        Text[ russian ] = " ~  ";
         Text[ polish ] = "Nowa strona przy podziale grup";
-        Text[ japanese ] = "グループごとに改ページ(~P)";
+        Text[ japanese ] = "グループごとに改ページ(~P)";
         Text[ chinese_traditional ] = "群組之間換頁(~P)";
         Text[ arabic ] = "    ";
         Text[ greek ] = "     ";
-        Text[ korean ] = "그룹 변경시에 새 페이지(~P)";
+        Text[ korean ] = "그룹 사이에서 페이지 나누기(~P)";
         Text[ turkish ] = "~Her grup iin yeni sayfa balat";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "~Nueva pgina entre grupos";
+        Text[ catalan ] = "Salt de ~pgina entre grups";
+        Text[ thai ] = "ตัวแบ่ง~หน้าระหว่างกลุ่ม";
     };
     CheckBox BTN_CASE
     {
@@ -136,7 +138,7 @@ TabPage RID_SCPAGE_SUBT_OPTIONS
         Text [ ENGLISH_US ] = "~Case sensitive" ;
         Text [ SPANISH ] = "~Maysculas/minsculas" ;
         Text [ FINNISH ] = "~Kirjainkoon erottelu" ;
-        Text [ FRENCH ] = "~Respecter la casse" ;
+        Text [ FRENCH ] = "Respecter la casse" ;
         Text [ ITALIAN ] = "~Maiuscole/minuscole" ;
         Text [ DUTCH ] = "~Hoofdletters/kleine letters belangrijk" ;
         Text [ PORTUGUESE_BRAZILIAN ] = "~Sens?vel a mai sculas/min sculas" ;
@@ -144,16 +146,17 @@ TabPage RID_SCPAGE_SUBT_OPTIONS
         Text [ PORTUGUESE ] = "~Maisculas/Minsculas" ;
         TabStop = TRUE ;
         Text[ chinese_simplified ] = "区分字母大小写(~C)";
-        Text[ russian ] = " ";
+        Text[ russian ] = " ~";
         Text[ polish ] = "U~wzgldnij wielkie i mae litery";
-        Text[ japanese ] = "大文字/小文字を区別(~C)";
+        Text[ japanese ] = "大文字と小文字を区別する(~C)";
         Text[ chinese_traditional ] = "區分字母大小寫(~C)";
         Text[ arabic ] = "  /";
         Text[ greek ] = " -";
-        Text[ korean ] = "대/소문자 구분(~C)";
+        Text[ korean ] = "대문자 및 소문자 구분(~C)";
         Text[ turkish ] = "~Byk/kk harf duyarl";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "~Maysculas/minsculas";
+        Text[ catalan ] = "Distingeix entre majs~cules i minscules";
+        Text[ thai ] = "~ตรงตามตัวพิมพ์ใหญ่-เล็ก";
     };
     CheckBox BTN_SORT
     {
@@ -176,14 +179,15 @@ TabPage RID_SCPAGE_SUBT_OPTIONS
         Text[ chinese_simplified ] = "区域先按照小组排序(~S)";
         Text[ russian ] = "    ";
         Text[ polish ] = "Przesortuj wczeniej o~bszar wedug grup";
-        Text[ japanese ] = "範囲をあらかじめグループ別に並べる(~S)";
+        Text[ japanese ] = "範囲をあらかじめグループ別に並べる(~S)";
         Text[ chinese_traditional ] = "區域先按照群組排序(~S)";
         Text[ arabic ] = "     ";
         Text[ greek ] = "   ~    ";
-        Text[ korean ] = "그룹에 따라 범위를 사전에 정렬(~S)";
+        Text[ korean ] = "그룹별로 영역을 우선 정렬(~S)";
         Text[ turkish ] = "Blm nce gruplara gre ~srala";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Ordenar primero e~l rea por grupos";
+        Text[ catalan ] = "Preordena l'rea segons els grup~s";
+        Text[ thai ] = "เ~รียงพื้นที่ก่อนตามกลุ่ม";
     };
     CheckBox BTN_FORMATS
     {
@@ -205,7 +209,7 @@ TabPage RID_SCPAGE_SUBT_OPTIONS
         Text [ PORTUGUESE ] = "Incluir ~formatos" ;
         TabStop = TRUE ;
         Text[ chinese_simplified ] = "包含格式(~N)";
-        Text[ russian ] = " ";
+        Text[ russian ] = " ~";
         Text[ polish ] = "Uwzgldnij f~ormaty";
         Text[ japanese ] = "書式を含む(~N)";
         Text[ chinese_traditional ] = "包含格式(~N)";
@@ -214,7 +218,8 @@ TabPage RID_SCPAGE_SUBT_OPTIONS
         Text[ korean ] = "서식 포함(~N)";
         Text[ turkish ] = "~Formatlamay da dikkate al";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "~Incluir formatos";
+        Text[ catalan ] = "I~nclou els formats";
+        Text[ thai ] = "ร~วมรูปแบบ";
     };
     CheckBox BTN_USERDEF
     {
@@ -228,8 +233,8 @@ TabPage RID_SCPAGE_SUBT_OPTIONS
         Text [ SPANISH ] = "~Orden de clasificacin definido por el usuario" ;
         Text [ FINNISH ] = "M~ukautettu lajittelujrjestys" ;
         Text [ FRENCH ] = "Ordre de tri ~utilisateur" ;
-        Text [ ITALIAN ] = "Sequenza d'ordine ~definita dall'utente" ;
-        Text [ DUTCH ] = "~Gebruikergedefinieerde sorteervolgorde" ;
+        Text [ ITALIAN ] = "Sequenza d'ordine definita dall'~utente" ;
+        Text [ DUTCH ] = "~Door gebruiker gedefinieerde sorteervolgorde" ;
         Text [ PORTUGUESE_BRAZILIAN ] = "~Preced?ncia de ordena??o definida pelo usu?rio" ;
         Text [ SWEDISH ] = "A~nvndardefinierad sorteringsordning" ;
         Text [ PORTUGUESE ] = "Ordem de classificao definida pelo ~utilizador" ;
@@ -241,10 +246,11 @@ TabPage RID_SCPAGE_SUBT_OPTIONS
         Text[ chinese_traditional ] = "使用者自訂排序規則(~U)";
         Text[ arabic ] = "    ";
         Text[ greek ] = "     ";
-        Text[ korean ] = "사용자가 정의한  정렬 순서(~U)";
+        Text[ korean ] = "사용자 정의 정렬 순서(~U)";
         Text[ turkish ] = "~Kullanc tanml sralama dzeni";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "~Orden de clasificacin definido por el usuario";
+        Text[ catalan ] = "Tip~us d'ordenaci personalitzat";
+        Text[ thai ] = "กำ~หนดการเรียงลำดับเอง";
     };
     ListBox LB_USERDEF
     {
@@ -265,7 +271,7 @@ TabPage RID_SCPAGE_SUBT_OPTIONS
         Text [ ENGLISH_US ] = "~Ascending" ;
         Text [ SPANISH ] = "~Ascendente" ;
         Text [ FINNISH ] = "~Nouseva" ;
-        Text [ FRENCH ] = "~Croissant" ;
+        Text [ FRENCH ] = "Croissant" ;
         Text [ ITALIAN ] = "Crescente" ;
         Text [ DUTCH ] = "~Oplopend" ;
         Text [ PORTUGUESE_BRAZILIAN ] = "~Ascendente" ;
@@ -282,7 +288,8 @@ TabPage RID_SCPAGE_SUBT_OPTIONS
         Text[ korean ] = "오름차순(~A)";
         Text[ turkish ] = "A~rtan dzende";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "~Ascendente";
+        Text[ catalan ] = "~Ascendent";
+        Text[ thai ] = "จาก~น้อยไปหามาก";
     };
     RadioButton BTN_DESCENDING
     {
@@ -291,11 +298,11 @@ TabPage RID_SCPAGE_SUBT_OPTIONS
         Text = "Abs~teigend" ;
         Text [ ENGLISH ] = "~Descending" ;
         Text [ NORWEGIAN ] = "~Synkende" ;
-        Text [ DANISH ] = "Faldende" ;
+        Text [ DANISH ] = "Fal~dende" ;
         Text [ ENGLISH_US ] = "D~escending" ;
         Text [ SPANISH ] = "~Descendente" ;
         Text [ FINNISH ] = "L~askeva" ;
-        Text [ FRENCH ] = "~Dcroissant" ;
+        Text [ FRENCH ] = "Dcroissant" ;
         Text [ ITALIAN ] = "Decrescente" ;
         Text [ DUTCH ] = "~Aflopend" ;
         Text [ PORTUGUESE_BRAZILIAN ] = "~Descendente" ;
@@ -312,7 +319,8 @@ TabPage RID_SCPAGE_SUBT_OPTIONS
         Text[ korean ] = "내림차순(~E)";
         Text[ turkish ] = "A~zalan dzende";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "~Descendente";
+        Text[ catalan ] = "D~escendent";
+        Text[ thai ] = "จากมา~กไปหาน้อย";
     };
     FixedLine FL_SORT
     {
@@ -341,7 +349,8 @@ TabPage RID_SCPAGE_SUBT_OPTIONS
         Text[ korean ] = "정렬";
         Text[ turkish ] = "Sralama";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Ordenar";
+        Text[ catalan ] = "Ordre";
+        Text[ thai ] = "เรียง";
     };
 };
 
@@ -361,7 +370,7 @@ TabPage RID_SUBTBASE
         Text = "~Gruppieren nach" ;
         Text [ ENGLISH ] = "~Group by" ;
         Text [ norwegian ] = "~Gruppe ved " ;
-        Text [ italian ] = "~Raggruppa per" ;
+        Text [ italian ] = "Ra~ggruppa per" ;
         Text [ portuguese_brazilian ] = "~Agrupar por" ;
         Text [ portuguese ] = "~Agrupar por" ;
         Text [ finnish ] = "~Ryhmittele" ;
@@ -374,14 +383,15 @@ TabPage RID_SUBTBASE
         Text[ chinese_simplified ] = "分组按照(~G)";
         Text[ russian ] = " ";
         Text[ polish ] = "Grupuj wedug";
-        Text[ japanese ] = "グループの基準(~G)";
+        Text[ japanese ] = "グループの基準(~G)";
         Text[ chinese_traditional ] = "依群組(~G)";
         Text[ arabic ] = " ";
         Text[ greek ] = " ";
-        Text[ korean ] = "에의한 그룹(~G)";
+        Text[ korean ] = "그룹 기준(~G)";
         Text[ turkish ] = "~Gruplama esas";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "~Agrupar por";
+        Text[ catalan ] = "~Agrupa per";
+        Text[ thai ] = "~จัดกลุ่มโดย";
     };
     ListBox LB_GROUP
     {
@@ -411,16 +421,17 @@ TabPage RID_SUBTBASE
         Text [ spanish ] = "~Calcular subtotales para" ;
         Text [ english_us ] = "~Calculate subtotals for" ;
         Text[ chinese_simplified ] = "分类汇总计算(~C)";
-        Text[ russian ] = "   ";
+        Text[ russian ] = " ~  ";
         Text[ polish ] = "Oblicz sumy porednie dla";
         Text[ japanese ] = "小計を計算する列(~C)";
         Text[ chinese_traditional ] = "小計用於(~C)";
         Text[ arabic ] = "   ";
         Text[ greek ] = "  ~ ";
-        Text[ korean ] = "에 대한 소계 계산(~C)";
+        Text[ korean ] = "부분합 계산하는 열(~C)";
         Text[ turkish ] = "~Ara toplamlar hesaplanacak stun(lar)";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "~Calcular subtotales para";
+        Text[ catalan ] = "~Calcula els subtotals per a";
+        Text[ thai ] = "~คำนวณผลรวมย่อยสำหรับ";
     };
     Control WND_COLUMNS
     {
@@ -445,19 +456,20 @@ TabPage RID_SUBTBASE
         Text [ french ] = "~Fonction" ;
         Text [ swedish ] = "~Berkningsregler" ;
         Text [ dutch ] = "~Functie" ;
-        Text [ spanish ] = "~Usar funcin" ;
+        Text [ spanish ] = "Usar funcin" ;
         Text [ english_us ] = "Use ~function" ;
         Text[ chinese_simplified ] = "计算规则(~F)";
-        Text[ russian ] = "  ";
+        Text[ russian ] = " ";
         Text[ polish ] = "Instrukcja obliczania";
         Text[ japanese ] = "計算方法(~F)";
         Text[ chinese_traditional ] = "計算規則(~F)";
         Text[ arabic ] = "";
         Text[ greek ] = " ";
-        Text[ korean ] = "계산 규칙(~F)";
+        Text[ korean ] = "함수 사용(~F)";
         Text[ turkish ] = "K~ullanlacak fonksiyon";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "~Usar funcin";
+        Text[ catalan ] = "Utilitza la ~funci";
+        Text[ thai ] = "ใช้~ฟังก์ชั่น";
     };
     ListBox LB_FUNCTIONS
     {
@@ -553,15 +565,15 @@ TabPage RID_SUBTBASE
         };
         StringList [ finnish ] =
         {
-            < "Sum" ; Default ; > ;
-            < "Lukumr" ; Default ; > ;
+            < "Summa" ; Default ; > ;
+            < "LASKE" ; Default ; > ;
             < "Keskiarvo" ; Default ; > ;
-            < "Enint" ; Default ; > ;
-            < "Vh" ; Default ; > ;
-            < "Tuote" ; Default ; > ;
-            < "Lukumr (vain numerot)" ; Default ; > ;
-            < "StDev (vakiopoikkeama, Otos)" ; Default ; > ;
-            < "StDevP (vakiopoikkeama, populaatio)" ; Default ; > ;
+            < "MAKS" ; Default ; > ;
+            < "MIN" ; Default ; > ;
+            < "Tulo" ; Default ; > ;
+            < "LASKE (vain luvut)" ; Default ; > ;
+            < "KESKIHAJONTA (otos)" ; Default ; > ;
+            < "KESKIHAJONTAP (populaatio)" ; Default ; > ;
             < "Var (Otos)" ; Default ; > ;
             < "VarP (populaatio)" ; Default ; > ;
         };
@@ -632,8 +644,8 @@ TabPage RID_SUBTBASE
             < "Cantidad (slo nmeros)" ; Default ; > ;
             < "DesvEst (Muestra)" ; Default ; > ;
             < "DesvEstP (Poblacin)" ; Default ; > ;
-            < "Varianza (Muestra)" ; Default ; > ;
-            < "VarP (Poblacin)" ; Default ; > ;
+            < "Variancia (muestra)" ; Default ; > ;
+            < "VarP (poblacin)" ; Default ; > ;
         };
         StringList [ english_us ] =
         {
@@ -750,7 +762,7 @@ TabPage RID_SUBTBASE
     StringList [ korean ] =
     {
             < "합계" ; Default ; > ;
-        < "수" ; Default ; > ;
+        < "값" ; Default ; > ;
         < "평균" ; Default ; > ;
         < "최대" ; Default ; > ;
         < "최소" ; Default ; > ;
@@ -792,16 +804,30 @@ TabPage RID_SUBTBASE
     StringList [ catalan ] =
     {
             < "Suma" ; Default ; > ;
-        < "Cantidad" ; Default ; > ;
-        < "Promedio" ; Default ; > ;
-        < "Mx." ; Default ; > ;
-        < "Mn." ; Default ; > ;
-        < "Producto" ; Default ; > ;
-        < "Cantidad (solo nmeros)" ; Default ; > ;
-        < "DesvEst (Muestra)" ; Default ; > ;
-        < "DesvEstP (Poblacin)" ; Default ; > ;
-        < "Varianza (Muestra)" ; Default ; > ;
-        < "VarP (Poblacin)" ; Default ; > ;
+        < "Compta" ; Default ; > ;
+        < "Mitjana" ; Default ; > ;
+        < "Mx" ; Default ; > ;
+        < "Mn" ; Default ; > ;
+        < "Producte" ; Default ; > ;
+        < "Compta (noms nmeros)" ; Default ; > ;
+        < "StDev (mostra)" ; Default ; > ;
+        < "StDevP (poblaci)" ; Default ; > ;
+        < "Var (mostra)" ; Default ; > ;
+        < "VarP (poblaci)" ; Default ; > ;
+    };
+    StringList [ thai ] =
+    {
+         < "ผลรวม" ; Default ; > ;
+        < "นับ" ; Default ; > ;
+        < "เฉลี่ย" ; Default ; > ;
+        < "มากที่สุด" ; Default ; > ;
+        < "น้อยที่สุด" ; Default ; > ;
+        < "ผลิตภัณฑ์" ; Default ; > ;
+        < "นับ (ตัวเลขอย่างเดียว)" ; Default ; > ;
+        < "StDev (ตัวอย่าง)" ; Default ; > ;
+        < "StDevP (ประชากร)" ; Default ; > ;
+        < "Var (ตัวอย่าง)" ; Default ; > ;
+        < "VarP (ประชากร)" ; Default ; > ;
     };
     };
 };
@@ -866,16 +892,17 @@ TabDialog RID_SCDLG_SUBTOTALS
                 Text [ spanish ] = "Grupo 1" ;
                 Text [ english_us ] = "1st Group" ;
                 Text[ chinese_simplified ] = "第一组";
-                Text[ russian ] = "1- ";
+                Text[ russian ] = "1- ";
                 Text[ polish ] = "1 grupa";
-                Text[ japanese ] = "グループ 1";
+                Text[ japanese ] = "グループ 1";
                 Text[ chinese_traditional ] = "第一組";
                 Text[ arabic ] = " ";
                 Text[ greek ] = "1 ";
-                Text[ korean ] = "1번째 그룹";
+                Text[ korean ] = "그룹 1";
                 Text[ turkish ] = "1. Grup";
                 Text[ language_user1 ] = " ";
-                Text[ catalan ] = "Grupo 1";
+                Text[ catalan ] = "1r grup";
+                Text[ thai ] = "กลุ่มแรก";
             };
             PageItem
             {
@@ -894,16 +921,17 @@ TabDialog RID_SCDLG_SUBTOTALS
                 Text [ spanish ] = "Grupo 2" ;
                 Text [ english_us ] = "2nd Group" ;
                 Text[ chinese_simplified ] = "第二组";
-                Text[ russian ] = "2- ";
+                Text[ russian ] = "2- ";
                 Text[ polish ] = "2 grupa";
-                Text[ japanese ] = "グループ 2";
+                Text[ japanese ] = "グループ 2";
                 Text[ chinese_traditional ] = "第二組";
                 Text[ arabic ] = " ";
                 Text[ greek ] = "2. ";
-                Text[ korean ] = "2번째 그룹";
+                Text[ korean ] = "그룹 2";
                 Text[ turkish ] = "2. Grup";
                 Text[ language_user1 ] = " ";
-                Text[ catalan ] = "Grupo 2";
+                Text[ catalan ] = "2n grup";
+                Text[ thai ] = "กลุ่มที่สอง";
             };
             PageItem
             {
@@ -922,16 +950,17 @@ TabDialog RID_SCDLG_SUBTOTALS
                 Text [ spanish ] = "Grupo 3" ;
                 Text [ english_us ] = "3rd Group" ;
                 Text[ chinese_simplified ] = "第三组";
-                Text[ russian ] = "3- ";
+                Text[ russian ] = "3- ";
                 Text[ polish ] = "3 grupa";
-                Text[ japanese ] = "グループ 3";
+                Text[ japanese ] = "グループ 3";
                 Text[ chinese_traditional ] = "第三組";
                 Text[ arabic ] = " ";
                 Text[ greek ] = "3 ";
-                Text[ korean ] = "3번째 그룹";
+                Text[ korean ] = "그룹 3";
                 Text[ turkish ] = "3. Grup";
                 Text[ language_user1 ] = " ";
-                Text[ catalan ] = "Grupo 3";
+                Text[ catalan ] = "3r grup";
+                Text[ thai ] = "กลุ่มที่สาม";
             };
             PageItem
             {
@@ -952,14 +981,15 @@ TabDialog RID_SCDLG_SUBTOTALS
                 Text[ chinese_simplified ] = "选项";
                 Text[ russian ] = "";
                 Text[ polish ] = "Opcje";
-                Text[ japanese ] = "オプション";
+                Text[ japanese ] = "オプション";
                 Text[ chinese_traditional ] = "選項";
                 Text[ arabic ] = "";
                 Text[ greek ] = "";
                 Text[ korean ] = "옵션";
                 Text[ turkish ] = "Seenekler";
                 Text[ language_user1 ] = " ";
-                Text[ catalan ] = "Opciones";
+                Text[ catalan ] = "Opcions";
+                Text[ thai ] = "ตัวเลือก";
             };
         };
     };
@@ -976,10 +1006,10 @@ TabDialog RID_SCDLG_SUBTOTALS
         Text [ portuguese ] = "~Eliminar" ;
         Text [ finnish ] = "~Poista" ;
         Text [ danish ] = "Slet" ;
-        Text [ french ] = "~Supprimer" ;
+        Text [ french ] = "Supprimer" ;
         Text [ swedish ] = "~Radera" ;
         Text [ dutch ] = "~Wissen" ;
-        Text [ spanish ] = "~Eliminar" ;
+        Text [ spanish ] = "~Borrar" ;
         Text [ english_us ] = "~Delete" ;
         TabStop = TRUE ;
         Text[ chinese_simplified ] = "删除(~D)";
@@ -992,7 +1022,8 @@ TabDialog RID_SCDLG_SUBTOTALS
         Text[ korean ] = "삭제(~D)";
         Text[ turkish ] = "~Sil";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "~Eliminar";
+        Text[ catalan ] = "~Suprimeix";
+        Text[ thai ] = "~ลบ";
     };
     Text[ chinese_simplified ] = "分类汇总";
     Text[ russian ] = " ";
@@ -1001,10 +1032,11 @@ TabDialog RID_SCDLG_SUBTOTALS
     Text[ chinese_traditional ] = "小計";
     Text[ arabic ] = " ";
     Text[ greek ] = " ";
-    Text[ korean ] = "소계";
+    Text[ korean ] = "부분합";
     Text[ turkish ] = "Ara toplamlar";
     Text[ language_user1 ] = " ";
-    Text[ catalan ] = "Subtotales";
+    Text[ catalan ] = "Subtotals";
+    Text[ thai ] = "ผลรวมย่อย";
 };
 
 
@@ -1019,3 +1051,9 @@ TabDialog RID_SCDLG_SUBTOTALS
 
 
 
+
+
+
+
+
+
diff --git a/sc/source/ui/src/tabopdlg.src b/sc/source/ui/src/tabopdlg.src
index 3ef26d01c3b3..f1ac36115f3d 100644
--- a/sc/source/ui/src/tabopdlg.src
+++ b/sc/source/ui/src/tabopdlg.src
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: tabopdlg.src,v $
  *
- *  $Revision: 1.15 $
+ *  $Revision: 1.16 $
  *
- *  last change: $Author: kz $ $Date: 2001-07-14 20:26:12 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:33 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -64,9 +64,9 @@
  // (C) 1994-96 StarDivision GmbH, Hamburg, Germany
  //
  // $Workfile:   tabopdlg.src  $
- //   $Author: kz $
- //     $Date: 2001-07-14 20:26:12 $
- // $Revision: 1.15 $
+ //   $Author: hr $
+ //     $Date: 2003-03-26 18:06:33 $
+ // $Revision: 1.16 $
  //  $Logfile:   T:/sc/source/ui/src/tabopdlg.srv  $
  //----------------------------------------------------------------------------
 
@@ -110,17 +110,18 @@ ModelessDialog RID_SCDLG_TABOP
         Text [ dutch ] = "~Formules" ;
         Text [ spanish ] = "~Frmulas" ;
         Text [ english_us ] = "~Formulas" ;
-        Text[ chinese_simplified ] = "ʽ(~F)";
-        Text[ russian ] = "";
+        Text[ chinese_simplified ] = "公式(~F)";
+        Text[ russian ] = "";
         Text[ polish ] = "Formuy";
-        Text[ japanese ] = "(~F)";
-        Text[ chinese_traditional ] = "(~F)";
+        Text[ japanese ] = "数式(~F)";
+        Text[ chinese_traditional ] = "公式(~F)";
         Text[ arabic ] = "";
         Text[ greek ] = "~";
-        Text[ korean ] = "(~F)";
+        Text[ korean ] = "수식(~F)";
         Text[ turkish ] = "~Forml";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "~Frmulas";
+        Text[ catalan ] = "~Frmules";
+        Text[ thai ] = "~สูตร";
     };
     Edit ED_FORMULARANGE
     {
@@ -146,17 +147,18 @@ ModelessDialog RID_SCDLG_TABOP
         QuickHelpText [ portuguese ] = "Afastar" ;
         QuickHelpText[ russian ] = "";
         QuickHelpText[ polish ] = "Pomniejsz";
-        QuickHelpText[ japanese ] = "k";
-        QuickHelpText[ chinese_simplified ] = "С/Ŵ";
-        QuickHelpText[ chinese_traditional ] = "Yp";
+        QuickHelpText[ japanese ] = "縮小";
+        QuickHelpText[ chinese_simplified ] = "缩小/放大";
+        QuickHelpText[ chinese_traditional ] = "縮小";
         QuickHelpText[ arabic ] = "";
         QuickHelpText[ greek ] = "";
-        QuickHelpText[ korean ] = "";
+        QuickHelpText[ korean ] = "축소";
         QuickHelpText[ language_user1 ] = " ";
         QuickHelpText[ language_user1 ] = " ";
         QuickHelpText[ turkish ] = "Verkleinern";
-        QuickHelpText[ catalan ] = "Reducir";
+        QuickHelpText[ catalan ] = "Redueix";
         QuickHelpText[ finnish ] = "Kutista";
+        QuickHelpText[ thai ] = "Shrink";
     };
     FixedText FT_ROWCELL
     {
@@ -175,17 +177,18 @@ ModelessDialog RID_SCDLG_TABOP
         Text [ dutch ] = "~Rij" ;
         Text [ spanish ] = "Fil~a" ;
         Text [ english_us ] = "~Row input cell" ;
-        Text[ chinese_simplified ] = "(~R)";
-        Text[ russian ] = "";
+        Text[ chinese_simplified ] = "行(~R)";
+        Text[ russian ] = " ";
         Text[ polish ] = "Wiersz";
-        Text[ japanese ] = "s(~R)";
-        Text[ chinese_traditional ] = "C(~R)";
+        Text[ japanese ] = "行(~R)";
+        Text[ chinese_traditional ] = "列(~R)";
         Text[ arabic ] = "";
         Text[ greek ] = "~";
-        Text[ korean ] = "(~R)";
+        Text[ korean ] = "행(~R)";
         Text[ turkish ] = "~Satr";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Fil~a";
+        Text[ catalan ] = "Cel.la d'entrada de la ~fila";
+        Text[ thai ] = "แ~ถวป้อนเซลล์";
     };
     Edit ED_ROWCELL
     {
@@ -211,17 +214,18 @@ ModelessDialog RID_SCDLG_TABOP
         QuickHelpText [ portuguese ] = "Afastar" ;
         QuickHelpText[ russian ] = "";
         QuickHelpText[ polish ] = "Pomniejsz";
-        QuickHelpText[ japanese ] = "k";
-        QuickHelpText[ chinese_simplified ] = "С";
-        QuickHelpText[ chinese_traditional ] = "Yp";
+        QuickHelpText[ japanese ] = "縮小";
+        QuickHelpText[ chinese_simplified ] = "缩小";
+        QuickHelpText[ chinese_traditional ] = "縮小";
         QuickHelpText[ arabic ] = "";
         QuickHelpText[ greek ] = "";
-        QuickHelpText[ korean ] = "";
+        QuickHelpText[ korean ] = "축소";
         QuickHelpText[ language_user1 ] = " ";
         QuickHelpText[ language_user1 ] = " ";
         QuickHelpText[ turkish ] = "Verkleinern";
-        QuickHelpText[ catalan ] = "Reducir";
+        QuickHelpText[ catalan ] = "Redueix";
         QuickHelpText[ finnish ] = "Kutista";
+        QuickHelpText[ thai ] = "Shrink";
     };
     FixedText FT_COLCELL
     {
@@ -235,22 +239,23 @@ ModelessDialog RID_SCDLG_TABOP
         Text [ portuguese ] = "~Coluna" ;
         Text [ finnish ] = "~Sarakkeiden syttsolu" ;
         Text [ danish ] = "Kolonne" ;
-        Text [ french ] = "~Colonne" ;
+        Text [ french ] = "Colonne" ;
         Text [ swedish ] = "~Kolumn" ;
         Text [ dutch ] = "~Kolom" ;
         Text [ spanish ] = "~Columna" ;
         Text [ english_us ] = "~Column input cell" ;
-        Text[ chinese_simplified ] = "(~C)";
-        Text[ russian ] = "";
+        Text[ chinese_simplified ] = "列(~C)";
+        Text[ russian ] = " ";
         Text[ polish ] = "Kolumna";
-        Text[ japanese ] = "(~C)";
-        Text[ chinese_traditional ] = "(~C)";
+        Text[ japanese ] = "列(~C)";
+        Text[ chinese_traditional ] = "欄(~C)";
         Text[ arabic ] = "";
         Text[ greek ] = "~";
-        Text[ korean ] = "(~C)";
+        Text[ korean ] = "열(~C)";
         Text[ turkish ] = "~Stun";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "~Columna";
+        Text[ catalan ] = "~Cel.la d'entrada de la columna";
+        Text[ thai ] = "~คอลัมน์ป้อนเซลล์";
     };
     Edit ED_COLCELL
     {
@@ -276,17 +281,18 @@ ModelessDialog RID_SCDLG_TABOP
         QuickHelpText [ portuguese ] = "Afastar" ;
         QuickHelpText[ russian ] = "";
         QuickHelpText[ polish ] = "Pomniejsz";
-        QuickHelpText[ japanese ] = "k";
-        QuickHelpText[ chinese_simplified ] = "С";
-        QuickHelpText[ chinese_traditional ] = "Yp";
+        QuickHelpText[ japanese ] = "縮小";
+        QuickHelpText[ chinese_simplified ] = "缩小";
+        QuickHelpText[ chinese_traditional ] = "縮小";
         QuickHelpText[ arabic ] = "";
         QuickHelpText[ greek ] = "";
-        QuickHelpText[ korean ] = "";
+        QuickHelpText[ korean ] = "축소";
         QuickHelpText[ language_user1 ] = " ";
         QuickHelpText[ language_user1 ] = " ";
         QuickHelpText[ turkish ] = "Verkleinern";
-        QuickHelpText[ catalan ] = "Reducir";
+        QuickHelpText[ catalan ] = "Redueix";
         QuickHelpText[ finnish ] = "Kutista";
+        QuickHelpText[ thai ] = "Shrink";
     };
     FixedLine FL_VARIABLES
     {
@@ -298,24 +304,25 @@ ModelessDialog RID_SCDLG_TABOP
         Text [ italian ] = "Predefiniti" ;
         Text [ portuguese_brazilian ] = "Vari?veis" ;
         Text [ portuguese ] = "Predefinies" ;
-        Text [ finnish ] = "Asetukset" ;
+        Text [ finnish ] = "Oletusasetukset" ;
         Text [ danish ] = "Forudindstillinger" ;
         Text [ french ] = "Dfinitions" ;
         Text [ swedish ] = "Frinstllningar" ;
         Text [ dutch ] = "Standaard" ;
-        Text [ spanish ] = "Predeterminaciones" ;
+        Text [ spanish ] = "Configuracin predeterminada" ;
         Text [ english_us ] = "Default settings" ;
-        Text[ chinese_simplified ] = "Ԥ";
-        Text[ russian ] = " ";
+        Text[ chinese_simplified ] = "预置";
+        Text[ russian ] = " ";
         Text[ polish ] = "Ustawienia domylne";
-        Text[ japanese ] = "ݒ";
-        Text[ chinese_traditional ] = "wm";
+        Text[ japanese ] = "設定";
+        Text[ chinese_traditional ] = "預設";
         Text[ arabic ] = " ";
         Text[ greek ] = "";
-        Text[ korean ] = "";
+        Text[ korean ] = "기본 설정";
         Text[ turkish ] = "Varsaylan";
         Text[ language_user1 ] = " ";
         Text[ catalan ] = "Variables";
+        Text[ thai ] = "กำหนดค่าเริ่มต้น";
     };
     OKButton BTN_OK
     {
@@ -348,17 +355,18 @@ ModelessDialog RID_SCDLG_TABOP
         Text [ dutch ] = "Geen formule gespecificeerd." ;
         Text [ spanish ] = "No se ha especificado ninguna frmula!" ;
         Text [ english_us ] = "No formula specified." ;
-        Text[ chinese_simplified ] = "û빫ʽ";
-        Text[ russian ] = "  !";
+        Text[ chinese_simplified ] = "没有输入公式!";
+        Text[ russian ] = "  .";
         Text[ polish ] = "Nie wpisano formuy!";
-        Text[ japanese ] = "LĂ܂B";
-        Text[ chinese_traditional ] = "SwI";
+        Text[ japanese ] = "数式が記入されていません。";
+        Text[ chinese_traditional ] = "沒有指定公式!";
         Text[ arabic ] = "    !";
         Text[ greek ] = "  !";
-        Text[ korean ] = " Էµʾҽϴ.";
+        Text[ korean ] = "수식이 입력되지 않았습니다.";
         Text[ turkish ] = "Forml girilmedi!";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "No se ha especificado ninguna frmula!";
+        Text[ catalan ] = "No s'ha indicat cap frmula.";
+        Text[ thai ] = "ไม่ได้ระบุสูตร";
     };
     String STR_NOCOLROW
     {
@@ -375,17 +383,18 @@ ModelessDialog RID_SCDLG_TABOP
         Text [ dutch ] = "Noch rij, noch kolom gespecificeerd!" ;
         Text [ spanish ] = "No se ha especificado ni la fila ni la columna!" ;
         Text [ english_us ] = "Neither row or column specified." ;
-        Text[ chinese_simplified ] = "ûָкУ";
-        Text[ russian ] = " ,    !";
+        Text[ chinese_simplified ] = "没有指定行和列!";
+        Text[ russian ] = " ,    .";
         Text[ polish ] = "Nie wpisano ani wiersza ani kolumny!";
-        Text[ japanese ] = "sƂɋLĂ܂B";
-        Text[ chinese_traditional ] = "SwMCI";
+        Text[ japanese ] = "行列ともに記入されていません。";
+        Text[ chinese_traditional ] = "沒有指定欄和列!";
         Text[ arabic ] = "     !";
         Text[ greek ] = "   ,  !";
-        Text[ korean ] = " Ǵ  Էµ ʾҽϴ.";
+        Text[ korean ] = "열 또는 행이 입력되지 않았습니다.";
         Text[ turkish ] = "Ne satr ne de stun belirtildi!";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "No se ha especificado ni la fila ni la columna!";
+        Text[ catalan ] = "No s'ha indicat cap fila ni cap columna.";
+        Text[ thai ] = "ไม่ได้ระบุทั้งแถวและคอลัมน์";
     };
     String STR_WRONGFORMULA
     {
@@ -402,17 +411,18 @@ ModelessDialog RID_SCDLG_TABOP
         Text [ dutch ] = "Ongedefinieerde naam of bereik!" ;
         Text [ spanish ] = "Nombre o rea no definidos!" ;
         Text [ english_us ] = "Undefined name or range." ;
-        Text[ chinese_simplified ] = "ûжƻ";
-        Text[ russian ] = "    !";
+        Text[ chinese_simplified ] = "没有定义名称或区域!";
+        Text[ russian ] = "    .";
         Text[ polish ] = "Nie zdefiniowana nazwa lub obszar!";
-        Text[ japanese ] = "O܂͔͈͂w肳Ă܂B";
-        Text[ chinese_traditional ] = "SwqW٩ΰϰI";
+        Text[ japanese ] = "名前または範囲が指定されていません。";
+        Text[ chinese_traditional ] = "沒有定義名稱或區域!";
         Text[ arabic ] = "    !";
         Text[ greek ] = "      !";
-        Text[ korean ] = "ǵ  ̸ Ǵ !";
+        Text[ korean ] = "이름 또는 범위가 지정되지 않았습니다.";
         Text[ turkish ] = "Tanmlanmam ad ya da alan!";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Nombre o rea no definidos!";
+        Text[ catalan ] = "El nom o rea no s'ha definit.";
+        Text[ thai ] = "ไม่ได้กำหนดชื่อหรือช่วง";
     };
     String STR_WRONGROWCOL
     {
@@ -429,17 +439,18 @@ ModelessDialog RID_SCDLG_TABOP
         Text [ dutch ] = "Ongedefinieerde naam of verkeerde celverwijzing." ;
         Text [ spanish ] = "Nombre no definido o ref. a celda incorrecta!" ;
         Text [ english_us ] = "Undefined name or wrong cell reference." ;
-        Text[ chinese_simplified ] = "ûжƻĵԪã";
-        Text[ russian ] = "     !";
+        Text[ chinese_simplified ] = "没有定义名称或错误的单元格引用!";
+        Text[ russian ] = "      .";
         Text[ polish ] = "Nie zdefiniowana nazwa lub zy adres komrki!";
-        Text[ japanese ] = "Ow肳ĂȂA܂;َQƂ܂B";
-        Text[ chinese_traditional ] = "SwqW٩ο~xsѷӡI";
+        Text[ japanese ] = "名前が指定されていないか、またはセル参照が正しくありません。";
+        Text[ chinese_traditional ] = "沒有定義名稱或錯誤的儲存格參照!";
         Text[ arabic ] = "      !";
         Text[ greek ] = "      !.";
-        Text[ korean ] = "ǵ  ̸ Ǵ Ʋ  ";
+        Text[ korean ] = "이름이 지정되지 않았거나 셀의 참조가 잘못되었습니다.";
         Text[ turkish ] = "Tanmlanmam ad ya da yanl hcre referans!";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Nombre no definido o ref. a celda incorrecta!";
+        Text[ catalan ] = "El nom no s'ha definit o b la referncia a la cel.la s incorrecta.";
+        Text[ thai ] = "ไม่ได้กำหนดชื่อหรืออ้างอิงเซลล์ผิด";
     };
     String STR_NOCOLFORMULA
     {
@@ -456,17 +467,18 @@ ModelessDialog RID_SCDLG_TABOP
         Text [ dutch ] = "Formules vormen geen kolom!" ;
         Text [ spanish ] = "Las frmulas no forman columna!" ;
         Text [ english_us ] = "Formulas don't form a column." ;
-        Text[ chinese_simplified ] = "ʽУ";
-        Text[ russian ] = "   !";
+        Text[ chinese_simplified ] = "公式并不构成列!";
+        Text[ russian ] = "   .";
         Text[ polish ] = "Formuy nie tworz kolumny!";
-        Text[ japanese ] = "͗`܂B";
-        Text[ chinese_traditional ] = "äcI";
+        Text[ japanese ] = "数式は列を形成しません。";
+        Text[ chinese_traditional ] = "公式並不構成欄!";
         Text[ arabic ] = "   !";
         Text[ greek ] = "     !";
-        Text[ korean ] = "   ʽϴ.";
+        Text[ korean ] = "수식은 열을 형성하지 않습니다.";
         Text[ turkish ] = "Formller stun oluturmuyor!";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Las frmulas no forman columna!";
+        Text[ catalan ] = "Les frmules no formen una columna.";
+        Text[ thai ] = "สูตรไม่จัดคอลัมน์";
     };
     String STR_NOROWFORMULA
     {
@@ -483,31 +495,45 @@ ModelessDialog RID_SCDLG_TABOP
         Text [ dutch ] = "Formules vormen geen rij!" ;
         Text [ spanish ] = "Frmulas no forman una fila!" ;
         Text [ english_us ] = "Formulas don't form a row." ;
-        Text[ chinese_simplified ] = "ʽУ";
-        Text[ russian ] = "   !";
+        Text[ chinese_simplified ] = "公式不构成行!";
+        Text[ russian ] = "   .";
         Text[ polish ] = "Formuy nie tworz wiersza!";
-        Text[ japanese ] = "͍s`܂B";
-        Text[ chinese_traditional ] = "cCI";
+        Text[ japanese ] = "数式は行を形成しません。";
+        Text[ chinese_traditional ] = "公式不構成列!";
         Text[ arabic ] = "   !";
         Text[ greek ] = "     !";
-        Text[ korean ] = "   ʽϴ.";
+        Text[ korean ] = "수식은 행을 형성하지 않습니다.";
         Text[ turkish ] = "Formller satr oluturmuyor!";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Frmulas no forman una fila!";
+        Text[ catalan ] = "Les frmules no formen una fila.";
+        Text[ thai ] = "สูตรไม่จัดแถว";
     };
-    Text[ chinese_simplified ] = "ؼ";
-    Text[ russian ] = " ";
+    Text[ chinese_simplified ] = "多重计算";
+    Text[ russian ] = " ";
     Text[ polish ] = "Operacje wielokrotne";
-    Text[ japanese ] = "Z";
-    Text[ chinese_traditional ] = "ϯäR";
+    Text[ japanese ] = "複数演算";
+    Text[ chinese_traditional ] = "樞紐分析表";
     Text[ arabic ] = " ";
     Text[ greek ] = " ";
-    Text[ korean ] = " ";
+    Text[ korean ] = "다중 연산";
     Text[ turkish ] = "oklu ilemler";
     Text[ language_user1 ] = " ";
-    Text[ catalan ] = "Operaciones mltiples";
+    Text[ catalan ] = "Operacions mltiples";
+    Text[ thai ] = "หลายปฏิบัติการ";
 };
 
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/sc/source/ui/src/textdlgs.src b/sc/source/ui/src/textdlgs.src
index eac872cdd9f7..12dcd304c409 100644
--- a/sc/source/ui/src/textdlgs.src
+++ b/sc/source/ui/src/textdlgs.src
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: textdlgs.src,v $
  *
- *  $Revision: 1.19 $
+ *  $Revision: 1.20 $
  *
- *  last change: $Author: kz $ $Date: 2001-07-14 02:49:31 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:33 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -104,18 +104,19 @@ TabDialog RID_SCDLG_CHAR
                 Text[ french ] = "Police";
                 Text[ spanish ] = "Fuente";
                 Text[ italian ] = "Carattere";
-                Text[ danish ] = "Character";
+                Text[ danish ] = "Skrifttype";
                 Text[ swedish ] = "Teckensnitt";
                 Text[ polish ] = "Czcionka";
                 Text[ portuguese_brazilian ] = "Character";
-                Text[ japanese ] = "̫";
-                Text[ korean ] = "۲";
-                Text[ chinese_simplified ] = "";
-                Text[ chinese_traditional ] = "r";
+                Text[ japanese ] = "フォント";
+                Text[ korean ] = "글꼴";
+                Text[ chinese_simplified ] = "字体";
+                Text[ chinese_traditional ] = "字型";
                 Text[ turkish ] = "Character";
                 Text[ arabic ] = "";
-                Text[ catalan ] = "Fuente";
+                Text[ catalan ] = "Tipus de lletra";
                 Text[ finnish ] = "Fontti";
+                Text[ thai ] = "ตัวอักษร";
             };
             PageItem
             {
@@ -124,24 +125,25 @@ TabDialog RID_SCDLG_CHAR
                 Text [ ENGLISH ] = "Character Extension" ;
                 Text[ english_us ] = "Font Effects";
                 Text[ portuguese ] = "Efeitos do tipo de letra";
-                Text[ russian ] = " ";
+                Text[ russian ] = " ";
                 Text[ greek ] = " ";
                 Text[ dutch ] = "Schrifteffect";
                 Text[ french ] = "Effets de caractres";
                 Text[ spanish ] = "Efecto de fuente";
                 Text[ italian ] = "Effetto carattere";
-                Text[ danish ] = "Character Extension";
+                Text[ danish ] = "Skrifteffekt";
                 Text[ swedish ] = "Teckeneffekt";
                 Text[ polish ] = "Efekty czcionek";
                 Text[ portuguese_brazilian ] = "Character Extension";
-                Text[ japanese ] = "̫Č";
-                Text[ korean ] = "۲ ȿ";
-                Text[ chinese_simplified ] = "Ч";
-                Text[ chinese_traditional ] = "rĪG";
+                Text[ japanese ] = "フォント効果";
+                Text[ korean ] = "글꼴 효과";
+                Text[ chinese_simplified ] = "字体效果";
+                Text[ chinese_traditional ] = "字型效果";
                 Text[ turkish ] = "Character Extension";
                 Text[ arabic ] = " ";
-                Text[ catalan ] = "Efecto de fuente";
+                Text[ catalan ] = "Efectes de lletra";
                 Text[ finnish ] = "Fonttitehosteet";
+                Text[ thai ] = "ลักษณะตัวอักษร";
             };
             PageItem
             {
@@ -156,18 +158,19 @@ TabDialog RID_SCDLG_CHAR
                 Text[ french ] = "Position";
                 Text[ spanish ] = "Posicin de fuente";
                 Text[ italian ] = "Posizione carattere";
-                Text[ danish ] = "Character Position";
+                Text[ danish ] = "Skriftplacering";
                 Text[ swedish ] = "Teckenposition";
                 Text[ polish ] = "Pozycja czcionki";
                 Text[ portuguese_brazilian ] = "Character Position";
-                Text[ japanese ] = "̫Ă̈ʒu";
-                Text[ korean ] = "۲ ġ";
-                Text[ chinese_simplified ] = "λ";
-                Text[ chinese_traditional ] = "rm";
+                Text[ japanese ] = "フォントの位置";
+                Text[ korean ] = "글꼴 위치";
+                Text[ chinese_simplified ] = "字体位置";
+                Text[ chinese_traditional ] = "字型位置";
                 Text[ turkish ] = "Character Position";
                 Text[ arabic ] = " ";
-                Text[ catalan ] = "Posicin de fuente";
+                Text[ catalan ] = "Posici del tipus de lletra";
                 Text[ finnish ] = "Fontin sijainti";
+                Text[ thai ] = "ตำแหน่งตัวอักษร";
             };
         };
     };
@@ -204,33 +207,35 @@ TabDialog RID_SCDLG_CHAR
         Text [ danish ] = "Tilbage" ;
         Text [ french ] = "Prcdent" ;
         Text [ swedish ] = "Tillbaka" ;
-        Text [ dutch ] = "Ongedaan" ;
+        Text [ dutch ] = "Ongedaan maken" ;
         Text [ spanish ] = "Regresar" ;
         Text [ english_us ] = "Back" ;
         TabStop = TRUE ;
-        Text[ chinese_simplified ] = "";
+        Text[ chinese_simplified ] = "返回";
         Text[ russian ] = "";
         Text[ polish ] = "Wstecz";
-        Text[ japanese ] = "߂";
-        Text[ chinese_traditional ] = "^";
+        Text[ japanese ] = "戻る";
+        Text[ chinese_traditional ] = "返回";
         Text[ arabic ] = "";
         Text[ greek ] = "";
-        Text[ korean ] = "ڷ";
+        Text[ korean ] = "뒤로";
         Text[ turkish ] = "Geri";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Regresar";
+        Text[ catalan ] = "Enrere";
+        Text[ thai ] = "กลับไป";
     };
-    Text[ chinese_simplified ] = "ַ";
-    Text[ russian ] = "";
+    Text[ chinese_simplified ] = "字符";
+    Text[ russian ] = "";
     Text[ polish ] = "Znak";
-    Text[ japanese ] = "";
-    Text[ chinese_traditional ] = "r";
+    Text[ japanese ] = "文字";
+    Text[ chinese_traditional ] = "字元";
     Text[ arabic ] = "";
     Text[ greek ] = "";
-    Text[ korean ] = "";
+    Text[ korean ] = "문자";
     Text[ turkish ] = "Karakter";
     Text[ language_user1 ] = " ";
-    Text[ catalan ] = "Carcter";
+    Text[ catalan ] = "Carcter";
+    Text[ thai ] = "ตัวอักขระ";
 };
 
 TabDialog RID_SCDLG_PARAGRAPH
@@ -278,17 +283,18 @@ TabDialog RID_SCDLG_PARAGRAPH
                 Text [ spanish ] = "Sangras y espacios" ;
                 Text [ english_us ] = "Indents & Spacing" ;
                 PageResID = RID_SVXPAGE_STD_PARAGRAPH ;
-                Text[ chinese_simplified ] = "ͼ";
-                Text[ russian ] = "  ";
+                Text[ chinese_simplified ] = "缩进和间隔";
+                Text[ russian ] = "  ";
                 Text[ polish ] = "Wcicia i odstpy";
-                Text[ japanese ] = "ĂƍsԊu";
-                Text[ chinese_traditional ] = "YƩMj";
+                Text[ japanese ] = "インデントと行間隔";
+                Text[ chinese_traditional ] = "縮排和間隔";
                 Text[ arabic ] = " ";
                 Text[ greek ] = "  ";
-                Text[ korean ] = "鿩 & ";
+                Text[ korean ] = "들여쓰기 및 간격";
                 Text[ turkish ] = "Girinti ve aralklar";
                 Text[ language_user1 ] = " ";
-                Text[ catalan ] = "Sangras y espacios";
+                Text[ catalan ] = "Sagnats i espaiat";
+                Text[ thai ] = "ระยะเยื้องและระยะห่าง";
             };
             /*
             PageItem  {
@@ -324,18 +330,19 @@ TabDialog RID_SCDLG_PARAGRAPH
                 Text [ french ] = "Alignement" ;
                 Text [ dutch ] = "Uitlijning" ;
                 Text [ portuguese ] = "Alinhamento" ;
-                Text[ chinese_simplified ] = "";
+                Text[ chinese_simplified ] = "对齐";
                 Text[ russian ] = "";
                 Text[ polish ] = "Wyrwnanie";
-                Text[ japanese ] = "zu";
-                Text[ chinese_traditional ] = "";
+                Text[ japanese ] = "配置";
+                Text[ chinese_traditional ] = "對齊";
                 Text[ arabic ] = "";
                 Text[ greek ] = "";
-                Text[ korean ] = "";
+                Text[ korean ] = "맞춤";
                 Text[ turkish ] = "Hizalama";
                 Text[ language_user1 ] = " ";
-                Text[ catalan ] = "Alineacin";
+                Text[ catalan ] = "Alineament";
                 Text[ finnish ] = "Tasaus";
+                Text[ thai ] = "จัดตำแหน่ง";
             };
             PageItem
             {
@@ -344,24 +351,25 @@ TabDialog RID_SCDLG_PARAGRAPH
                 Text [ ENGLISH ] = "Asian typography" ;
                 Text[ english_us ] = "Asian Typography";
                 Text[ portuguese ] = "Tipografia asitica";
-                Text[ russian ] = " ";
+                Text[ russian ] = " ";
                 Text[ greek ] = " ";
                 Text[ dutch ] = "Aziatische typografie";
                 Text[ french ] = "Typographie asiatique";
                 Text[ spanish ] = "Tipografa asitica";
                 Text[ italian ] = "Tipografia asiatica";
-                Text[ danish ] = "Asian typography";
+                Text[ danish ] = "Asiatisk typografi";
                 Text[ swedish ] = "Asiatisk typografi";
                 Text[ polish ] = "Typografia azjatycka";
                 Text[ portuguese_brazilian ] = "Asian typography";
-                Text[ japanese ] = "{ꕶ̑̍";
-                Text[ korean ] = "ƽþơŸ׷";
-                Text[ chinese_simplified ] = "պ";
-                Text[ chinese_traditional ] = "r";
+                Text[ japanese ] = "日本語文の体裁";
+                Text[ korean ] = "한글 입력 체계";
+                Text[ chinese_simplified ] = "中日韩文字";
+                Text[ chinese_traditional ] = "中日韓文字";
                 Text[ turkish ] = "Asian typography";
                 Text[ arabic ] = "  ";
-                Text[ catalan ] = "Tipografa asitica";
+                Text[ catalan ] = "Tipografia asitica";
                 Text[ finnish ] = "Aasialaiset merkit";
+                Text[ thai ] = "แบบการพิมพ์แบบเอเชีย";
             };
             PageItem
             {
@@ -377,20 +385,21 @@ TabDialog RID_SCDLG_PARAGRAPH
                 Text [ french ] = "Tabulation" ;
                 Text [ swedish ] = "Tabulator" ;
                 Text [ dutch ] = "Tabs" ;
-                Text [ spanish ] = "Tabulaciones" ;
+                Text [ spanish ] = "Tabuladores" ;
                 Text [ english_us ] = "Tab" ;
                 PageResID = RID_SVXPAGE_TABULATOR ;
-                Text[ chinese_simplified ] = "Ʊ";
+                Text[ chinese_simplified ] = "制表符";
                 Text[ russian ] = "";
                 Text[ polish ] = "Tabulator";
-                Text[ japanese ] = "";
-                Text[ chinese_traditional ] = "s";
+                Text[ japanese ] = "タブ";
+                Text[ chinese_traditional ] = "定位鍵";
                 Text[ arabic ] = " ";
                 Text[ greek ] = "";
-                Text[ korean ] = "";
+                Text[ korean ] = "탭";
                 Text[ turkish ] = "Sekmeler";
                 Text[ language_user1 ] = " ";
-                Text[ catalan ] = "Tabulaciones";
+                Text[ catalan ] = "Pestanya";
+                Text[ thai ] = "ระยะกั้น";
             };
         };
     };
@@ -427,33 +436,35 @@ TabDialog RID_SCDLG_PARAGRAPH
         Text [ danish ] = "Tilbage" ;
         Text [ french ] = "Prcdent" ;
         Text [ swedish ] = "Tillbaka" ;
-        Text [ dutch ] = "Ongedaan" ;
+        Text [ dutch ] = "Ongedaan maken" ;
         Text [ spanish ] = "Regresar" ;
         Text [ english_us ] = "Back" ;
         TabStop = TRUE ;
-        Text[ chinese_simplified ] = "";
+        Text[ chinese_simplified ] = "返回";
         Text[ russian ] = "";
         Text[ polish ] = "Wstecz";
-        Text[ japanese ] = "߂";
-        Text[ chinese_traditional ] = "^";
+        Text[ japanese ] = "戻る";
+        Text[ chinese_traditional ] = "返回";
         Text[ arabic ] = "";
         Text[ greek ] = "";
-        Text[ korean ] = "ڷ";
+        Text[ korean ] = "뒤로";
         Text[ turkish ] = "Geri";
         Text[ language_user1 ] = " ";
-        Text[ catalan ] = "Regresar";
+        Text[ catalan ] = "Enrere";
+        Text[ thai ] = "กลับไป";
     };
-    Text[ chinese_simplified ] = "";
+    Text[ chinese_simplified ] = "段落";
     Text[ russian ] = "";
     Text[ polish ] = "Akapit";
-    Text[ japanese ] = "i";
-    Text[ chinese_traditional ] = "q";
+    Text[ japanese ] = "段落";
+    Text[ chinese_traditional ] = "段落";
     Text[ arabic ] = "";
     Text[ greek ] = "";
-    Text[ korean ] = "ܶ";
+    Text[ korean ] = "단락";
     Text[ turkish ] = "Paragraf";
     Text[ language_user1 ] = " ";
-    Text[ catalan ] = "Prrafo";
+    Text[ catalan ] = "Pargraf";
+    Text[ thai ] = "ย่อหน้า";
 };
 
 
@@ -461,3 +472,12 @@ TabDialog RID_SCDLG_PARAGRAPH
 
 
 
+
+
+
+
+
+
+
+
+
diff --git a/sc/source/ui/src/toolbox.src b/sc/source/ui/src/toolbox.src
index 325461b31ef3..4d78b22219e8 100644
--- a/sc/source/ui/src/toolbox.src
+++ b/sc/source/ui/src/toolbox.src
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: toolbox.src,v $
  *
- *  $Revision: 1.47 $
+ *  $Revision: 1.48 $
  *
- *  last change: $Author: kz $ $Date: 2002-11-27 16:37:24 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:34 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -62,7 +62,7 @@
  // Toolbox - Resourcen
  //
  // (C) 1994 StarDivision GmbH, Hamburg, Germany
- // $Author: kz $ $Date: 2002-11-27 16:37:24 $ $Revision: 1.47 $
+ // $Author: hr $ $Date: 2003-03-26 18:06:34 $ $Revision: 1.48 $
  // $Logfile:   T:/sc/source/ui/src/toolbox.srv  $ $Workfile:   TOOLBOX.SRC  $
  //==================================================================
 
@@ -180,7 +180,7 @@ String SCSTR_QHELP_INPUTWND
     Text[ chinese_traditional ] = "輸入欄";
     Text[ arabic ] = " ";
     Text[ greek ] = " ";
-    Text[ korean ] = "입력행";
+    Text[ korean ] = "입력줄";
     Text[ turkish ] = "Giri satr";
     Text[ language_user1 ] = " ";
     Text[ catalan ] = "Lnia d'entrada";
@@ -200,16 +200,16 @@ String SCSTR_QHELP_BTNCALC
     Text [ french ] = "AutoPilote de fonctions" ;
     Text [ swedish ] = "Funktionsautopilot" ;
     Text [ dutch ] = "Functie-AutoPiloot" ;
-    Text [ spanish ] = "AutoPiloto de funciones" ;
+    Text [ spanish ] = "Piloto automtico de funciones" ;
     Text [ english_us ] = "AutoPilot: Functions" ;
-    Text[ chinese_simplified ] = "函数自动助理";
+    Text[ chinese_simplified ] = "自动文件助理:函数";
     Text[ russian ] = ": ";
     Text[ polish ] = "AutoPilot funkcji";
     Text[ japanese ] = "関数オートパイロット";
     Text[ chinese_traditional ] = "函數自動助理";
     Text[ arabic ] = "  ";
     Text[ greek ] = "Function Autopilot";
-    Text[ korean ] = "자동 파일럿 기능";
+    Text[ korean ] = "자동 파일럿: 기능";
     Text[ turkish ] = "Fonksyon OtoPilotu";
     Text[ language_user1 ] = " ";
     Text[ catalan ] = "AutoPilot: funcions";
@@ -227,7 +227,7 @@ String SCSTR_QHELP_BTNOK
     Text [ portuguese ] = "Aceitar" ;
     Text [ finnish ] = "Hyvksy" ;
     Text [ danish ] = "Accepter" ;
-    Text [ french ] = "Appliquer" ;
+    Text [ french ] = "Accepter" ;
     Text [ swedish ] = "verta" ;
     Text [ dutch ] = "Accepteren" ;
     Text [ spanish ] = "Aplicar" ;
@@ -326,48 +326,45 @@ String SCSTR_QHELP_BTNEQUAL
     Text[ chinese_traditional ] = "函數";
     Text[ arabic ] = "";
     Text[ greek ] = "";
-    Text[ korean ] = "함수";
+    Text[ korean ] = "수식 모음";
     Text[ turkish ] = "lev";
     Text[ language_user1 ] = " ";
     Text[ catalan ] = "Funci";
     Text[ thai ] = "ฟังก์ชั่น";
 };
 
- //-----------------------------------------------------------------------------
- //                         Applikations-Toolbar
- //-----------------------------------------------------------------------------
-
-String RID_OBJECTBAR_APP
+String RID_OBJECTBAR_FORMAT
 {
-    Text = "Funktionsleiste" ;
-    Text [ english ] = "Function Bar" ;
-    Text [ norwegian ] = "Function Bar" ;
-    Text [ italian ] = "Barra delle funzioni" ;
-    Text [ portuguese_brazilian ] = "Barra de Fun??s" ;
-    Text [ portuguese ] = "Barra de funes" ;
-    Text [ finnish ] = "Toimintorivi" ;
-    Text [ danish ] = "Funktionslinje" ;
-    Text [ french ] = "Barre de fonctions" ;
-    Text [ swedish ] = "Funktionslist" ;
-    Text [ dutch ] = "Werkbalk" ;
-    Text [ spanish ] = "Barra de funciones" ;
-    Text [ english_us ] = "Function Bar" ;
-    Text[ chinese_simplified ] = "功能栏";
-    Text[ russian ] = " ";
-    Text[ polish ] = "Pasek funkcji";
-    Text[ japanese ] = "ファンクションバー";
-    Text[ chinese_traditional ] = "工具列";
-    Text[ arabic ] = " ";
-    Text[ greek ] = " ";
-    Text[ korean ] = "함수 모음";
-    Text[ turkish ] = "lev ubuu";
+    Text = "Tabellenobjektleiste" ;
+    Text [ english ] = "Table Object Bar" ;
+    Text [ norwegian ] = "Object Bar" ;
+    Text [ italian ] = "Barra degli oggetti per tabelle" ;
+    Text [ portuguese_brazilian ] = "Object Bar" ;
+    Text [ portuguese ] = "Barra de objectos da folha de clculo" ;
+    Text [ french ] = "Barre d'objets de classeur" ;
+    Text [ dutch ] = "Werkbladobjectbalk" ;
+    Text [ spanish ] = "Barra de objetos para tablas" ;
+    Text [ danish ] = "Regnearksobjektlinje" ;
+    Text [ swedish ] = "Tabellobjektlist" ;
+    Text [ finnish ] = "Laskentataulukon muotoilurivi" ;
+    Text [ english_us ] = "Spreadsheet Object Bar" ;
+    Text[ chinese_simplified ] = "工作表对象栏";
+    Text[ russian ] = "   ";
+    Text[ polish ] = "Pasek obiektw arkusza kalkulacyjnego.";
+    Text[ japanese ] = "表オブジェクトバー";
+    Text[ chinese_traditional ] = "工作表物件列";
+    Text[ arabic ] = "  ";
+    Text[ greek ] = "  ";
+    Text[ korean ] = "스프레드시트 개체 모음";
+    Text[ turkish ] = "Tablo nesne ubuu";
     Text[ language_user1 ] = " ";
-    Text[ catalan ] = "Barra de funcions";
-    Text[ thai ] = "แถบฟังก์ชั่น";
+    Text[ catalan ] = "Barra d'objectes del full de clcul";
+    Text[ thai ] = "แถบวัตถุกระดาษคำนวณ";
 };
 
-ToolBox RID_OBJECTBAR_APP
+ToolBox RID_OBJECTBAR_FORMAT
 {
+    HelpId = HID_SC_TOOLBOX_TABLE ;
     Dockable = TRUE ;
     Moveable = TRUE ;
     Sizeable = TRUE ;
@@ -378,374 +375,505 @@ ToolBox RID_OBJECTBAR_APP
     LineSpacing = TRUE ;
     Border = TRUE ;
     SVLook = TRUE ;
+    Align = BOXALIGN_TOP ;
     MenuStrings = TRUE ;
-    Scroll = TRUE ;
     ItemList =
     {
         ToolBoxItem
         {
-            Identifier = SID_NEWDOCDIRECT ;
-            HelpID = SID_NEWDOCDIRECT ;
+            ITEM_TOOLBAR_TEMPLATE_APPLY
+            Hide=TRUE;
+        };
+         //--------------------------------------------------------------------
+        ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+         //--------------------------------------------------------------------
+
+        ToolBoxItem
+        {
+            Identifier = SID_ATTR_CHAR_FONT ;
+            HelpID = SID_ATTR_CHAR_FONT ;
+        };
+         //--------------------------------------------------------------------
+        ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+         //--------------------------------------------------------------------
+        ToolBoxItem
+        {
+            Identifier = SID_ATTR_CHAR_FONTHEIGHT ;
+            HelpID = SID_ATTR_CHAR_FONTHEIGHT ;
         };
+         //--------------------------------------------------------------------
+        ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+         //--------------------------------------------------------------------
         ToolBoxItem
         {
-            Identifier = SID_OPENDOC ;
-            HelpID = SID_OPENDOC ;
+            Identifier = SID_ATTR_CHAR_WEIGHT ;
+            HelpID = SID_ATTR_CHAR_WEIGHT ;
         };
         ToolBoxItem
         {
-            Identifier = SID_SAVEDOC ;
-            HelpID = SID_SAVEDOC ;
+            Identifier = SID_ATTR_CHAR_POSTURE ;
+            HelpID = SID_ATTR_CHAR_POSTURE ;
         };
         ToolBoxItem
         {
-            ITEM_TOOLBAR_PRINTDOCDIRECT
+            Identifier = SID_ATTR_CHAR_UNDERLINE ;
+            HelpID = SID_ATTR_CHAR_UNDERLINE ;
+        };
+        ToolBoxItem
+        {
+            Identifier = SID_ULINE_VAL_DOUBLE;
+            HelpId = SID_ULINE_VAL_DOUBLE;
+            Hide=TRUE;
+        };
+
+        ToolBoxItem
+        {
+            ITEM_TOOLBAR_ATTR_CHAR_COLOR
         };
          //--------------------------------------------------------------------
         ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
          //--------------------------------------------------------------------
         ToolBoxItem
         {
-            Identifier = SID_CUT ;
-            HelpID = SID_CUT ;
+            Identifier = SID_ALIGNLEFT ;
+            HelpId = SID_ALIGNLEFT ;
+            RadioCheck = TRUE ;
+            AutoCheck = TRUE ;
         };
         ToolBoxItem
         {
-            Identifier = SID_COPY ;
-            HelpID = SID_COPY ;
+            Identifier = SID_ALIGNCENTERHOR ;
+            HelpId = SID_ALIGNCENTERHOR ;
+            RadioCheck = TRUE ;
+            AutoCheck = TRUE ;
+        };
+        ToolBoxItem
+        {
+            Identifier = SID_ALIGNRIGHT ;
+            HelpId = SID_ALIGNRIGHT ;
+            RadioCheck = TRUE ;
+            AutoCheck = TRUE ;
         };
         ToolBoxItem
         {
-            Identifier = SID_PASTE ;
-            HelpID = SID_PASTE ;
+            Identifier = SID_ALIGNBLOCK ;
+            HelpId = SID_ALIGNBLOCK ;
+            RadioCheck = TRUE ;
+            AutoCheck = TRUE ;
         };
+         //--------------------------------------------------------------------
+        ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+         //--------------------------------------------------------------------
         ToolBoxItem
         {
-            Identifier = SID_UNDO ;
-            HelpID = SID_UNDO ;
+            Identifier = SID_ATTR_PARA_LEFT_TO_RIGHT;
+            HelpID = SID_ATTR_PARA_LEFT_TO_RIGHT;
+            RadioCheck = TRUE;
+            Hide = TRUE;
         };
         ToolBoxItem
         {
-            Identifier = SID_REDO ;
-            HelpID = SID_REDO ;
+            Identifier = SID_ATTR_PARA_RIGHT_TO_LEFT;
+            HelpID = SID_ATTR_PARA_RIGHT_TO_LEFT;
+            RadioCheck = TRUE;
+            Hide = TRUE;
         };
          //--------------------------------------------------------------------
         ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
          //--------------------------------------------------------------------
         ToolBoxItem
         {
-            ITEM_TOOLBAR_INSERT_FRAME
+            Identifier = SID_TEXTDIRECTION_LEFT_TO_RIGHT ;
+            HelpID = SID_TEXTDIRECTION_LEFT_TO_RIGHT ;
+            Hide=TRUE;
+        };
+        ToolBoxItem
+        {
+            Identifier = SID_TEXTDIRECTION_TOP_TO_BOTTOM ;
+            HelpID = SID_TEXTDIRECTION_TOP_TO_BOTTOM ;
+            Hide=TRUE;
         };
+        //--------------------------------------------------------------------
+        ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+         //--------------------------------------------------------------------
         ToolBoxItem
         {
-            ITEM_TOOLBAR_INSERT_GRAPHIC
+            Identifier = SID_NUMBER_CURRENCY ;
+            HelpId = SID_NUMBER_CURRENCY ;
         };
         ToolBoxItem
         {
-            Identifier = SID_IMPORT_DATA ;
-            HelpId = SID_IMPORT_DATA ;
+            Identifier = SID_NUMBER_PERCENT ;
+            HelpId = SID_NUMBER_PERCENT ;
         };
         ToolBoxItem
         {
-             // mit Aufziehen des Zielbereichs
-            ITEM_TOOLBAR_DRAW_CHART
+            Identifier = SID_NUMBER_DATE;
+            HelpId = SID_NUMBER_DATE ;
+            Hide=TRUE;
         };
         ToolBoxItem
         {
-            ITEM_TOOLBAR_INSERT_DRAW
+            Identifier = SID_NUMBER_SCIENTIFIC ;
+            HelpId = SID_NUMBER_SCIENTIFIC;
+            Hide=TRUE;
+        };
+        ToolBoxItem
+        {
+            Identifier = SID_NUMBER_STANDARD ;
+            HelpId = SID_NUMBER_STANDARD ;
         };
+
         ToolBoxItem
         {
-            Identifier = SID_GALLERY ;
-            HelpID = SID_GALLERY ;
+            Identifier = SID_NUMBER_INCDEC ;
+            HelpId = SID_NUMBER_INCDEC ;
         };
         ToolBoxItem
         {
-            ITEM_TOOLBAR_CHOOSE_CONTROLS
+            Identifier = SID_NUMBER_DECDEC ;
+            HelpId = SID_NUMBER_DECDEC ;
         };
          //--------------------------------------------------------------------
         ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
          //--------------------------------------------------------------------
         ToolBoxItem
         {
-            Identifier = SID_STYLE_DESIGNER ;
-            HelpId = SID_STYLE_DESIGNER ;
+            Identifier = SID_DEC_INDENT ;
+            HelpId = SID_DEC_INDENT ;
         };
         ToolBoxItem
         {
-            Identifier = SID_AUTOFORMAT ;
-            HelpID = SID_AUTOFORMAT ;
+            Identifier = SID_INC_INDENT ;
+            HelpId = SID_INC_INDENT ;
         };
          //--------------------------------------------------------------------
         ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
          //--------------------------------------------------------------------
+         // Border: nur noch einfach
         ToolBoxItem
         {
-            ITEM_TOOLBAR_SORT_ASCENDING
+            ITEM_TOOLBAR_ATTR_BORDER
         };
         ToolBoxItem
         {
-            ITEM_TOOLBAR_SORT_DESCENDING
+            Identifier = SID_FRAME_LINESTYLE;
+            HelpId = SID_FRAME_LINESTYLE;
+            Hide=TRUE;
         };
         ToolBoxItem
         {
-            ITEM_TOOLBAR_AUTO_FILTER
+            Identifier = SID_FRAME_LINECOLOR;
+            HelpId = SID_FRAME_LINECOLOR;
+            Hide=TRUE;
         };
+         // Hintergrund: nur noch einfach
         ToolBoxItem
         {
-            ITEM_TOOLBAR_OUTLINE_MAKE
+            ITEM_TOOLBAR_BACKGROUND_COLOR
         };
+
+        //--------------------------------------------------------------------
+        ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+         //--------------------------------------------------------------------
         ToolBoxItem
         {
-            ITEM_TOOLBAR_OUTLINE_REMOVE
+            Identifier = SID_ALIGNTOP ;
+            HelpId = SID_ALIGNTOP ;
+            RadioCheck = TRUE ;
+            AutoCheck = TRUE ;
         };
         ToolBoxItem
         {
-            Identifier = SID_NAVIGATOR ;
-            HelpId = SID_SC_NAVIGATOR ;
+            Identifier = SID_ALIGNCENTERVER ;
+            HelpId = SID_ALIGNCENTERVER ;
+            RadioCheck = TRUE ;
+            AutoCheck = TRUE ;
+        };
+        ToolBoxItem
+        {
+            Identifier = SID_ALIGNBOTTOM ;
+            HelpId = SID_ALIGNBOTTOM ;
+            RadioCheck = TRUE ;
+            AutoCheck = TRUE ;
         };
          //--------------------------------------------------------------------
         ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
          //--------------------------------------------------------------------
         ToolBoxItem
         {
+            Identifier = FID_INS_ROW;
+            HelpId = FID_INS_ROW;
+            Hide=TRUE;
         };
         ToolBoxItem
         {
-            Identifier = SID_EXTENDEDHELP ;
-            HelpID = SID_EXTENDEDHELP ;
+            Identifier = FID_INS_COLUMN;
+            HelpId = FID_INS_COLUMN;
+            Hide=TRUE;
+        };
+        ToolBoxItem
+        {
+            Identifier = SID_DEL_ROWS;
+            HelpId = SID_DEL_ROWS;
+            Hide=TRUE;
+        };
+        ToolBoxItem
+        {
+            Identifier = SID_DEL_COLS;
+            HelpId = SID_DEL_COLS;
+            Hide=TRUE;
         };
     };
-};
-
- //-----------------------------------------------------------------------------
- // PlugIn-Toolbar
- // (mit Aenderungen aus RID_OBJECTBAR_APP kopiert)
- // nicht Closeable / Customize
- //-----------------------------------------------------------------------------
+    ItemList[arabic] =
+    {
+        ToolBoxItem
+        {
+            ITEM_TOOLBAR_TEMPLATE_APPLY
+            Hide=TRUE;
+        };
+         //--------------------------------------------------------------------
+        ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+         //--------------------------------------------------------------------
 
-String RID_PLUGINTOOLBOX
-{
-    /* ### ACHTUNG: Neuer Text in Resource? Funktionsleiste fr PlugIns : Funktionsleiste fr PlugIns */
-    Text = "Funktionsleiste fr PlugIns" ;
-    Text [ english ] = "PlugIn Function Bar" ;
-    Text [ dutch ] = "Werkbalk voor plugins" ;
-    Text [ english_us ] = "Function Bar for Plug-ins" ;
-    Text [ italian ] = "Barra delle funzioni per PlugIn" ;
-    Text [ spanish ] = "Barra de funciones para Plug-ins" ;
-    Text [ french ] = "Barre de fonctions Plug-ins" ;
-    Text [ swedish ] = "Funktionslist fr plug-ins" ;
-    Text [ danish ] = "Funktionslinje for PlugIns" ;
-    Text [ portuguese ] = "Barra para Plugins" ;
-    Text [ portuguese_brazilian ] = "Funktionsleiste f? PlugIns" ;
-    Text[ chinese_simplified ] = "用于 Plug-ins 的功能栏";
-    Text[ russian ] = "   ";
-    Text[ polish ] = "Pasek funkcji wtyczek plug-in";
-    Text[ japanese ] = "プラグインのファンクションバー";
-    Text[ chinese_traditional ] = "適用於 Plug-ins 的工具列";
-    Text[ arabic ] = "  Plug-Ins";
-    Text[ greek ] = "    ";
-    Text[ korean ] = "플러그인의 기능 모음";
-    Text[ turkish ] = "PlugIn ilev ubuu";
-    Text[ language_user1 ] = " ";
-    Text[ finnish ] = "Lisosien toimintorivi";
-    Text[ catalan ] = "Barra de funcions per als connectors";
-    Text[ thai ] = "แถบฟังก์ชั่นสำหรับปลั๊กอิน";
-};
+        ToolBoxItem
+        {
+            Identifier = SID_ATTR_CHAR_FONT ;
+            HelpID = SID_ATTR_CHAR_FONT ;
+        };
+         //--------------------------------------------------------------------
+        ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+         //--------------------------------------------------------------------
+        ToolBoxItem
+        {
+            Identifier = SID_ATTR_CHAR_FONTHEIGHT ;
+            HelpID = SID_ATTR_CHAR_FONTHEIGHT ;
+        };
+         //--------------------------------------------------------------------
+        ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+         //--------------------------------------------------------------------
+        ToolBoxItem
+        {
+            Identifier = SID_ATTR_CHAR_WEIGHT ;
+            HelpID = SID_ATTR_CHAR_WEIGHT ;
+        };
+        ToolBoxItem
+        {
+            Identifier = SID_ATTR_CHAR_POSTURE ;
+            HelpID = SID_ATTR_CHAR_POSTURE ;
+        };
+        ToolBoxItem
+        {
+            Identifier = SID_ATTR_CHAR_UNDERLINE ;
+            HelpID = SID_ATTR_CHAR_UNDERLINE ;
+        };
+        ToolBoxItem
+        {
+            Identifier = SID_ULINE_VAL_DOUBLE;
+            HelpId = SID_ULINE_VAL_DOUBLE;
+            Hide=TRUE;
+        };
 
-ToolBox RID_PLUGINTOOLBOX
-{
-    Dockable = TRUE ;
-    Moveable = TRUE ;
-    Sizeable = TRUE ;
-     // Closeable = TRUE;                   // hier nicht !
-    Zoomable = TRUE ;
-     // Customize = TRUE;                   // hier nicht !
-    HideWhenDeactivate = TRUE ;
-    LineSpacing = TRUE ;
-    Border = TRUE ;
-    SVLook = TRUE ;
-    MenuStrings = TRUE ;
-    Scroll = TRUE ;
-    ItemList =
-    {
         ToolBoxItem
         {
-            Identifier = SID_SAVEDOC ;
-            HelpID = SID_SAVEDOC ;
+            ITEM_TOOLBAR_ATTR_CHAR_COLOR
+        };
+         //--------------------------------------------------------------------
+        ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+         //--------------------------------------------------------------------
+        ToolBoxItem
+        {
+            Identifier = SID_ALIGNRIGHT ;
+            HelpId = SID_ALIGNRIGHT ;
+            RadioCheck = TRUE ;
+            AutoCheck = TRUE ;
+        };
+        ToolBoxItem
+        {
+            Identifier = SID_ALIGNCENTERHOR ;
+            HelpId = SID_ALIGNCENTERHOR ;
+            RadioCheck = TRUE ;
+            AutoCheck = TRUE ;
         };
         ToolBoxItem
         {
-            ITEM_FILE_SAVEASDOC
+            Identifier = SID_ALIGNLEFT ;
+            HelpId = SID_ALIGNLEFT ;
+            RadioCheck = TRUE ;
+            AutoCheck = TRUE ;
         };
         ToolBoxItem
         {
-            Identifier = SID_MAIL_SENDDOC ;
-            HelpID = SID_MAIL_SENDDOC ;
+            Identifier = SID_ALIGNBLOCK ;
+            HelpId = SID_ALIGNBLOCK ;
+            RadioCheck = TRUE ;
+            AutoCheck = TRUE ;
+        };
+         //--------------------------------------------------------------------
+        ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+         //--------------------------------------------------------------------
+        ToolBoxItem
+        {
+            Identifier = SID_ATTR_PARA_RIGHT_TO_LEFT;
+            HelpID = SID_ATTR_PARA_RIGHT_TO_LEFT;
+            RadioCheck = TRUE;
+            Hide = TRUE;
+        };
+        ToolBoxItem
+        {
+            Identifier = SID_ATTR_PARA_LEFT_TO_RIGHT;
+            HelpID = SID_ATTR_PARA_LEFT_TO_RIGHT;
+            RadioCheck = TRUE;
+            Hide = TRUE;
         };
+         //--------------------------------------------------------------------
+        ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+         //--------------------------------------------------------------------
         ToolBoxItem
         {
-            Identifier = SID_DOCINFO ;
-            HelpID = SID_DOCINFO ;
+            Identifier = SID_TEXTDIRECTION_LEFT_TO_RIGHT ;
+            HelpID = SID_TEXTDIRECTION_LEFT_TO_RIGHT ;
+            Hide=TRUE;
         };
         ToolBoxItem
         {
-            ITEM_TOOLBAR_PRINTDOCDIRECT
+            Identifier = SID_TEXTDIRECTION_TOP_TO_BOTTOM ;
+            HelpID = SID_TEXTDIRECTION_TOP_TO_BOTTOM ;
+            Hide=TRUE;
         };
-         //--------------------------------------------------------------------
+        //--------------------------------------------------------------------
         ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
          //--------------------------------------------------------------------
         ToolBoxItem
         {
-            Identifier = SID_CUT ;
-            HelpID = SID_CUT ;
+            Identifier = SID_NUMBER_CURRENCY ;
+            HelpId = SID_NUMBER_CURRENCY ;
         };
         ToolBoxItem
         {
-            Identifier = SID_COPY ;
-            HelpID = SID_COPY ;
+            Identifier = SID_NUMBER_PERCENT ;
+            HelpId = SID_NUMBER_PERCENT ;
         };
         ToolBoxItem
         {
-            Identifier = SID_PASTE ;
-            HelpID = SID_PASTE ;
+            Identifier = SID_NUMBER_DATE;
+            HelpId = SID_NUMBER_DATE ;
+            Hide=TRUE;
         };
         ToolBoxItem
         {
-            Identifier = SID_UNDO ;
-            HelpID = SID_UNDO ;
+            Identifier = SID_NUMBER_SCIENTIFIC ;
+            HelpId = SID_NUMBER_SCIENTIFIC;
+            Hide=TRUE;
         };
         ToolBoxItem
         {
-            Identifier = SID_REDO ;
-            HelpID = SID_REDO ;
+            Identifier = SID_NUMBER_STANDARD ;
+            HelpId = SID_NUMBER_STANDARD ;
         };
-         //--------------------------------------------------------------------
-        ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
-         //--------------------------------------------------------------------
+
         ToolBoxItem
         {
-            ITEM_TOOLBAR_INSERT_FRAME
+            Identifier = SID_NUMBER_INCDEC ;
+            HelpId = SID_NUMBER_INCDEC ;
         };
         ToolBoxItem
         {
-            ITEM_TOOLBAR_INSERT_GRAPHIC
+            Identifier = SID_NUMBER_DECDEC ;
+            HelpId = SID_NUMBER_DECDEC ;
         };
+         //--------------------------------------------------------------------
+        ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+         //--------------------------------------------------------------------
         ToolBoxItem
         {
-            ITEM_TOOLBAR_SPELLING
+            Identifier = SID_DEC_INDENT ;
+            HelpId = SID_DEC_INDENT ;
         };
         ToolBoxItem
         {
-            ITEM_TOOLBAR_INSERT_DRAW
+            Identifier = SID_INC_INDENT ;
+            HelpId = SID_INC_INDENT ;
         };
+         //--------------------------------------------------------------------
+        ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+         //--------------------------------------------------------------------
+         // Border: nur noch einfach
         ToolBoxItem
         {
-            Identifier = SID_GALLERY ;
-            HelpID = SID_GALLERY ;
+            ITEM_TOOLBAR_ATTR_BORDER
         };
         ToolBoxItem
         {
-            ITEM_TOOLBAR_CHOOSE_CONTROLS
+            Identifier = SID_FRAME_LINESTYLE;
+            HelpId = SID_FRAME_LINESTYLE;
+            Hide=TRUE;
         };
-         //--------------------------------------------------------------------
-        ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
-         //--------------------------------------------------------------------
         ToolBoxItem
         {
-            Identifier = SID_STYLE_DESIGNER ;
-            HelpId = SID_STYLE_DESIGNER ;
+            Identifier = SID_FRAME_LINECOLOR;
+            HelpId = SID_FRAME_LINECOLOR;
+            Hide=TRUE;
         };
+         // Hintergrund: nur noch einfach
         ToolBoxItem
         {
-            Identifier = SID_AUTOFORMAT ;
-            HelpID = SID_AUTOFORMAT ;
+            ITEM_TOOLBAR_BACKGROUND_COLOR
         };
-         //--------------------------------------------------------------------
+
+        //--------------------------------------------------------------------
         ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
          //--------------------------------------------------------------------
         ToolBoxItem
         {
-            ITEM_TOOLBAR_SORT_ASCENDING
+            Identifier = SID_ALIGNTOP ;
+            HelpId = SID_ALIGNTOP ;
+            RadioCheck = TRUE ;
+            AutoCheck = TRUE ;
         };
         ToolBoxItem
         {
-            ITEM_TOOLBAR_SORT_DESCENDING
+            Identifier = SID_ALIGNCENTERVER ;
+            HelpId = SID_ALIGNCENTERVER ;
+            RadioCheck = TRUE ;
+            AutoCheck = TRUE ;
         };
         ToolBoxItem
         {
-            ITEM_TOOLBAR_AUTO_FILTER
+            Identifier = SID_ALIGNBOTTOM ;
+            HelpId = SID_ALIGNBOTTOM ;
+            RadioCheck = TRUE ;
+            AutoCheck = TRUE ;
         };
+         //--------------------------------------------------------------------
+        ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
+         //--------------------------------------------------------------------
         ToolBoxItem
         {
-            ITEM_TOOLBAR_OUTLINE_MAKE
+            Identifier = FID_INS_ROW;
+            HelpId = FID_INS_ROW;
+            Hide=TRUE;
         };
         ToolBoxItem
         {
-            ITEM_TOOLBAR_OUTLINE_REMOVE
+            Identifier = FID_INS_COLUMN;
+            HelpId = FID_INS_COLUMN;
+            Hide=TRUE;
         };
         ToolBoxItem
         {
-            Identifier = SID_NAVIGATOR ;
-            HelpID = SID_NAVIGATOR ;
+            Identifier = SID_DEL_ROWS;
+            HelpId = SID_DEL_ROWS;
+            Hide=TRUE;
         };
-         //--------------------------------------------------------------------
-        ToolBoxItem { Type = TOOLBOXITEM_SEPARATOR ; };
-         //--------------------------------------------------------------------
         ToolBoxItem
         {
-            Identifier = SID_SCOPTIONS ;
-            HelpId = SID_SCOPTIONS ;
+            Identifier = SID_DEL_COLS;
+            HelpId = SID_DEL_COLS;
+            Hide=TRUE;
         };
     };
-};
-
-
-String RID_OBJECTBAR_FORMAT
-{
-    Text = "Tabellenobjektleiste" ;
-    Text [ english ] = "Table Object Bar" ;
-    Text [ norwegian ] = "Object Bar" ;
-    Text [ italian ] = "Barra degli oggetti per tabelle" ;
-    Text [ portuguese_brazilian ] = "Object Bar" ;
-    Text [ portuguese ] = "Barra de objectos da folha de clculo" ;
-    Text [ french ] = "Barre d'objets de classeur" ;
-    Text [ dutch ] = "Werkbladobjectbalk" ;
-    Text [ spanish ] = "Barra de objetos para tablas" ;
-    Text [ danish ] = "Regnearksobjektlinje" ;
-    Text [ swedish ] = "Tabellobjektlist" ;
-    Text [ finnish ] = "Laskentataulukon muotoilurivi" ;
-    Text [ english_us ] = "Spreadsheet Object Bar" ;
-    Text[ chinese_simplified ] = "工作表对象栏";
-    Text[ russian ] = "   ";
-    Text[ polish ] = "Pasek obiektw arkusza kalkulacyjnego.";
-    Text[ japanese ] = "表オブジェクトバー";
-    Text[ chinese_traditional ] = "工作表物件列";
-    Text[ arabic ] = "  ";
-    Text[ greek ] = "  ";
-    Text[ korean ] = "스프레드시트 개체 모음";
-    Text[ turkish ] = "Tablo nesne ubuu";
-    Text[ language_user1 ] = " ";
-    Text[ catalan ] = "Barra d'objectes del full de clcul";
-    Text[ thai ] = "แถบวัตถุกระดาษคำนวณ";
-};
-
-ToolBox RID_OBJECTBAR_FORMAT
-{
-    HelpId = HID_SC_TOOLBOX_TABLE ;
-    Dockable = TRUE ;
-    Moveable = TRUE ;
-    Sizeable = TRUE ;
-    Closeable = TRUE ;
-    Zoomable = TRUE ;
-    Customize = TRUE ;
-    HideWhenDeactivate = TRUE ;
-    LineSpacing = TRUE ;
-    Border = TRUE ;
-    SVLook = TRUE ;
-    Align = BOXALIGN_TOP ;
-    MenuStrings = TRUE ;
-    ItemList =
+    ItemList[hebrew] =
     {
         ToolBoxItem
         {
@@ -803,8 +931,8 @@ ToolBox RID_OBJECTBAR_FORMAT
          //--------------------------------------------------------------------
         ToolBoxItem
         {
-            Identifier = SID_ALIGNLEFT ;
-            HelpId = SID_ALIGNLEFT ;
+            Identifier = SID_ALIGNRIGHT ;
+            HelpId = SID_ALIGNRIGHT ;
             RadioCheck = TRUE ;
             AutoCheck = TRUE ;
         };
@@ -817,8 +945,8 @@ ToolBox RID_OBJECTBAR_FORMAT
         };
         ToolBoxItem
         {
-            Identifier = SID_ALIGNRIGHT ;
-            HelpId = SID_ALIGNRIGHT ;
+            Identifier = SID_ALIGNLEFT ;
+            HelpId = SID_ALIGNLEFT ;
             RadioCheck = TRUE ;
             AutoCheck = TRUE ;
         };
@@ -834,15 +962,15 @@ ToolBox RID_OBJECTBAR_FORMAT
          //--------------------------------------------------------------------
         ToolBoxItem
         {
-            Identifier = SID_ATTR_PARA_LEFT_TO_RIGHT;
-            HelpID = SID_ATTR_PARA_LEFT_TO_RIGHT;
+            Identifier = SID_ATTR_PARA_RIGHT_TO_LEFT;
+            HelpID = SID_ATTR_PARA_RIGHT_TO_LEFT;
             RadioCheck = TRUE;
             Hide = TRUE;
         };
         ToolBoxItem
         {
-            Identifier = SID_ATTR_PARA_RIGHT_TO_LEFT;
-            HelpID = SID_ATTR_PARA_RIGHT_TO_LEFT;
+            Identifier = SID_ATTR_PARA_LEFT_TO_RIGHT;
+            HelpID = SID_ATTR_PARA_LEFT_TO_RIGHT;
             RadioCheck = TRUE;
             Hide = TRUE;
         };
@@ -1018,7 +1146,7 @@ String RID_OBJECTBAR_PREVIEW
     Text[ chinese_traditional ] = "頁面檢視物件列";
     Text[ arabic ] = "   ";
     Text[ greek ] = "   ";
-    Text[ korean ] = "페이지 미리보기 개체 모음";
+    Text[ korean ] = "페이지 보기 개체 모음";
     Text[ turkish ] = "Sayfa nizleme nesne ubuu";
     Text[ language_user1 ] = " ";
     Text[ catalan ] = "Barra d'objectes de la visualitzaci de pgina";
@@ -1733,9 +1861,10 @@ FloatingWindow RID_TBXCTL_INSOBJ
         SID_EURO_CONVERTER;\
         SID_ATTR_GRAF_CROP;\
         SID_ENABLE_HYPHENATION;         /* 26087    */  \
+        SID_ATTR_ZOOM; \
     };                                                  \
     IdCount = {                                         \
-        167;                                            \
+        168;                                            \
     };
 
 
@@ -1878,6 +2007,116 @@ ImageList RID_OFFICEIMAGELIST_LCH
     OFFICE_IDLIST
 };
 
+String RID_OBJECTBAR_APP
+{
+    TEXT = "Funktionsleiste" ;
+    TEXT [ english ] = "Function bar" ;
+    Text [ dutch ] = "Werkbalk" ;
+    Text [ english_us ] = "Function Bar" ;
+    Text [ italian ] = "Barra delle funzioni" ;
+    Text [ spanish ] = "Barra de funciones" ;
+    Text [ french ] = "Barre de fonctions" ;
+    Text [ swedish ] = "Funktionslist" ;
+    Text [ danish ] = "Funktionslinje" ;
+    Text [ portuguese_brazilian ] = "Funktionsleiste" ;
+    Text [ portuguese ] = "Barra de funes" ;
+    Text[ chinese_simplified ] = "功能栏";
+    Text[ russian ] = " ";
+    Text[ polish ] = "Pasek funkcji";
+    Text[ japanese ] = "ファンクションバー";
+    Text[ chinese_traditional ] = "工具列";
+    Text[ arabic ] = " ";
+    Text[ dutch ] = "Werkbalk";
+    Text[ chinese_simplified ] = "功能栏";
+    Text[ greek ] = " ";
+    Text[ korean ] = "함수 모음";
+    Text[ turkish ] = "lev ubuu";
+    Text[ language_user1 ] = " ";
+    Text[ catalan ] = "Barra de funcions";
+    Text[ finnish ] = "Toimintorivi";
+    Text[ thai ] = "แถบฟังก์ชั่น";
+};
+
+ToolBox RID_OBJECTBAR_APP
+{
+    Border = TRUE ;
+    SVLook = TRUE ;
+    Dockable = TRUE ;
+    Moveable = TRUE ;
+    Sizeable = TRUE ;
+    Closeable = TRUE ;
+    Zoomable = TRUE ;
+    HideWhenDeactivate = TRUE ;
+    LineSpacing = TRUE ;
+    Customize = TRUE ;
+    MenuStrings = TRUE ;
+    Hide = TRUE ;
+    ItemList =
+    {
+        ToolBoxItem
+        {
+            Identifier = SID_SAVEASDOC ;
+        };
+        ToolBoxItem
+        {
+            Type = TOOLBOXITEM_SEPARATOR ;
+        };
+        ToolBoxItem
+        {
+            Identifier = SID_EDITDOC ;
+        };
+        ToolBoxItem
+        {
+            Identifier = SID_MAIL_SENDDOC ;
+        };
+        ToolBoxItem
+        {
+            Type = TOOLBOXITEM_SEPARATOR ;
+        };
+        ToolBoxItem
+        {
+            Identifier = SID_DIRECTEXPORTDOCASPDF ;
+        };
+        ToolBoxItem
+        {
+            Identifier = SID_PRINTDOCDIRECT ;
+        };
+        ToolBoxItem
+        {
+            Type = TOOLBOXITEM_SEPARATOR ;
+        };
+        ToolBoxItem
+        {
+            Identifier = SID_COPY ;
+        };
+        ToolBoxItem
+        {
+            Type = TOOLBOXITEM_SEPARATOR ;
+        };
+        ToolBoxItem
+        {
+            Identifier = SID_SEARCH_DLG ;
+        };
+        ToolBoxItem
+        {
+            Identifier = SID_NAVIGATOR ;
+        };
+        ToolBoxItem
+        {
+            Type = TOOLBOXITEM_SEPARATOR ;
+        };
+        ToolBoxItem
+        {
+            Identifier = SID_ATTR_ZOOM ;
+        };
+    };
+    Scroll = TRUE ;
+};
+
+
+
+
+
 
 
 
diff --git a/sc/source/ui/styleui/scstyles.src b/sc/source/ui/styleui/scstyles.src
index 5c3aa9faf934..61cb865ee906 100644
--- a/sc/source/ui/styleui/scstyles.src
+++ b/sc/source/ui/styleui/scstyles.src
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: scstyles.src,v $
  *
- *  $Revision: 1.17 $
+ *  $Revision: 1.18 $
  *
- *  last change: $Author: nn $ $Date: 2002-05-31 18:04:06 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:42 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -158,3 +158,5 @@ SfxStyleFamilies DLG_STYLE_DESIGNER
 };
 
 
+
+
diff --git a/sc/source/ui/styleui/styledlg.src b/sc/source/ui/styleui/styledlg.src
index 47abda19ed41..552ae0ee7512 100644
--- a/sc/source/ui/styleui/styledlg.src
+++ b/sc/source/ui/styleui/styledlg.src
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: styledlg.src,v $
  *
- *  $Revision: 1.26 $
+ *  $Revision: 1.27 $
  *
- *  last change: $Author: kz $ $Date: 2001-11-16 22:53:49 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:42 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -97,7 +97,7 @@ TabDialog RID_SCDLG_STYLES_PAR
                 Text [ italian ] = "Numeri" ;
                 Text [ portuguese_brazilian ] = "N?ero" ;
                 Text [ portuguese ] = "Nmeros" ;
-                Text [ finnish ] = "Numerot" ;
+                Text [ finnish ] = "Luku" ;
                 Text [ danish ] = "Tal" ;
                 Text [ french ] = "Nombres" ;
                 Text [ swedish ] = "Tal" ;
@@ -115,6 +115,7 @@ TabDialog RID_SCDLG_STYLES_PAR
                 Text[ turkish ] = "Say";
                 Text[ language_user1 ] = " ";
                 Text[ catalan ] = "Nmeros";
+                Text[ thai ] = "ตัวเลข";
             };
             PageItem
             {
@@ -136,14 +137,15 @@ TabDialog RID_SCDLG_STYLES_PAR
                 Text[ chinese_simplified ] = "字体";
                 Text[ russian ] = "";
                 Text[ polish ] = "Czcionka";
-                Text[ japanese ] = "フォント";
+                Text[ japanese ] = "フォント";
                 Text[ chinese_traditional ] = "字型";
                 Text[ arabic ] = "";
                 Text[ greek ] = "";
                 Text[ korean ] = "글꼴";
                 Text[ turkish ] = "Yaztipi";
                 Text[ language_user1 ] = " ";
-                Text[ catalan ] = "Fuente";
+                Text[ catalan ] = "Tipus de lletra";
+                Text[ thai ] = "ตัวอักษร";
             };
             PageItem
             {
@@ -152,24 +154,25 @@ TabDialog RID_SCDLG_STYLES_PAR
                 Text [ ENGLISH ] = "Character Extension" ;
                 Text[ english_us ] = "Font Effects";
                 Text[ portuguese ] = "Efeitos do tipo de letra";
-                Text[ russian ] = " ";
+                Text[ russian ] = " ";
                 Text[ greek ] = " ";
                 Text[ dutch ] = "Schrifteffect";
                 Text[ french ] = "Effets de caractres";
                 Text[ spanish ] = "Efecto de fuente";
                 Text[ italian ] = "Effetto carattere";
-                Text[ danish ] = "Character Extension";
+                Text[ danish ] = "Skrifteffekt";
                 Text[ swedish ] = "Teckeneffekt";
                 Text[ polish ] = "Efekt czcionki";
                 Text[ portuguese_brazilian ] = "Character Extension";
-                Text[ japanese ] = "フォント効果";
+                Text[ japanese ] = "フォント効果";
                 Text[ korean ] = "글꼴 효과";
                 Text[ chinese_simplified ] = "字体效果";
                 Text[ chinese_traditional ] = "字型效果";
                 Text[ turkish ] = "Character Extension";
                 Text[ arabic ] = " ";
-                Text[ catalan ] = "Efecto de fuente";
+                Text[ catalan ] = "Efectes de lletra";
                 Text[ finnish ] = "Fonttitehosteet";
+                Text[ thai ] = "ลักษณะตัวอักษร";
             };
             PageItem
             {
@@ -197,7 +200,8 @@ TabDialog RID_SCDLG_STYLES_PAR
                 Text[ korean ] = "맞춤";
                 Text[ turkish ] = "Hizalama";
                 Text[ language_user1 ] = " ";
-                Text[ catalan ] = "Alineacin";
+                Text[ catalan ] = "Alineament";
+                Text[ thai ] = "จัดตำแหน่ง";
             };
             PageItem
             {
@@ -206,24 +210,25 @@ TabDialog RID_SCDLG_STYLES_PAR
                 Text [ ENGLISH ] = "Asian typography" ;
                 Text[ english_us ] = "Asian Typography";
                 Text[ portuguese ] = "Tipografia asitica";
-                Text[ russian ] = " ";
+                Text[ russian ] = " ";
                 Text[ greek ] = " ";
                 Text[ dutch ] = "Aziatische typografie";
                 Text[ french ] = "Typographie asiatique";
                 Text[ spanish ] = "Tipografa asitica";
                 Text[ italian ] = "Tipografia asiatica";
-                Text[ danish ] = "Asian typography";
+                Text[ danish ] = "Asiatisk typografi";
                 Text[ swedish ] = "Asiatisk typografi";
                 Text[ polish ] = "Typografia azjatycka";
                 Text[ portuguese_brazilian ] = "Asian typography";
                 Text[ japanese ] = "日本語文の体裁";
-                Text[ korean ] = "아시아 타이포그래피";
+                Text[ korean ] = "한글 입력 체계";
                 Text[ chinese_simplified ] = "中日韩文字";
                 Text[ chinese_traditional ] = "中日韓文字";
                 Text[ turkish ] = "Asian typography";
                 Text[ arabic ] = "  ";
-                Text[ catalan ] = "Tipografa asitica";
+                Text[ catalan ] = "Tipografia asitica";
                 Text[ finnish ] = "Aasialaiset merkit";
+                Text[ thai ] = "แบบการพิมพ์ของเอเชีย";
             };
             PageItem
             {
@@ -239,7 +244,7 @@ TabDialog RID_SCDLG_STYLES_PAR
                 Text [ french ] = "Bordure" ;
                 Text [ swedish ] = "Inramning" ;
                 Text [ dutch ] = "Omranding" ;
-                Text [ spanish ] = "Borde" ;
+                Text [ spanish ] = "Bordes" ;
                 Text [ english_us ] = "Borders" ;
                 Text[ chinese_simplified ] = "边框";
                 Text[ russian ] = "";
@@ -248,10 +253,11 @@ TabDialog RID_SCDLG_STYLES_PAR
                 Text[ chinese_traditional ] = "邊框";
                 Text[ arabic ] = "";
                 Text[ greek ] = "";
-                Text[ korean ] = "경계선";
+                Text[ korean ] = "테두리";
                 Text[ turkish ] = "Kenarlk";
                 Text[ language_user1 ] = " ";
-                Text[ catalan ] = "Borde";
+                Text[ catalan ] = "Vores";
+                Text[ thai ] = "เส้นขอบ";
             };
             PageItem
             {
@@ -279,7 +285,8 @@ TabDialog RID_SCDLG_STYLES_PAR
                 Text[ korean ] = "배경";
                 Text[ turkish ] = "Artalan";
                 Text[ language_user1 ] = " ";
-                Text[ catalan ] = "Fondo";
+                Text[ catalan ] = "Fons";
+                Text[ thai ] = "พื้นหลัง";
             };
             PageItem
             {
@@ -300,28 +307,30 @@ TabDialog RID_SCDLG_STYLES_PAR
                 Text[ chinese_simplified ] = "保护单元格";
                 Text[ russian ] = " ";
                 Text[ polish ] = "Ochrona komrek";
-                Text[ japanese ] = "セルの保護";
+                Text[ japanese ] = "セルの保護";
                 Text[ chinese_traditional ] = "保護儲存格";
                 Text[ arabic ] = " ";
                 Text[ greek ] = " ";
                 Text[ korean ] = "셀 보호";
                 Text[ turkish ] = "Hcre koruma";
                 Text[ language_user1 ] = " ";
-                Text[ catalan ] = "Proteccin de celda";
+                Text[ catalan ] = "Protecci de cel.les";
+                Text[ thai ] = "การป้องกันเซลล์";
             };
         };
     };
     Text[ chinese_simplified ] = "单元格样式";
     Text[ russian ] = " ";
     Text[ polish ] = "Styl komrki";
-    Text[ japanese ] = "セルスタイル";
+    Text[ japanese ] = "セルスタイル";
     Text[ chinese_traditional ] = "儲存格樣式";
     Text[ arabic ] = " ";
     Text[ greek ] = " ";
-    Text[ korean ] = "셀 유형";
+    Text[ korean ] = "셀 스타일";
     Text[ turkish ] = "Hcre biimi";
     Text[ language_user1 ] = " ";
-    Text[ catalan ] = "Estilo de celda";
+    Text[ catalan ] = "Estil de la cel.la";
+    Text[ thai ] = "ลักษณะเซลล์";
 };
 TabDialog RID_SCDLG_STYLES_PAGE
 {
@@ -339,7 +348,7 @@ TabDialog RID_SCDLG_STYLES_PAGE
     Text [ french ] = "Style de page" ;
     Text [ swedish ] = "Sidformatmall" ;
     Text [ dutch ] = "Pagina-opmaakprofiel" ;
-    Text [ spanish ] = "Estilo de hoja" ;
+    Text [ spanish ] = "Estilo de pgina" ;
     Text [ english_us ] = "Page Style" ;
     Moveable = TRUE ;
     Closeable = FALSE ;
@@ -359,7 +368,7 @@ TabDialog RID_SCDLG_STYLES_PAGE
                 Text [ italian ] = "Pagina" ;
                 Text [ portuguese_brazilian ] = "P?gina" ;
                 Text [ portuguese ] = "Pgina" ;
-                Text [ finnish ] = "Sivu " ;
+                Text [ finnish ] = "Sivu" ;
                 Text [ danish ] = "Side" ;
                 Text [ french ] = "Page" ;
                 Text [ swedish ] = "Sida" ;
@@ -369,14 +378,15 @@ TabDialog RID_SCDLG_STYLES_PAGE
                 Text[ chinese_simplified ] = "页";
                 Text[ russian ] = "";
                 Text[ polish ] = "Strona";
-                Text[ japanese ] = "ページ";
+                Text[ japanese ] = "ページ";
                 Text[ chinese_traditional ] = "頁";
                 Text[ arabic ] = "";
                 Text[ greek ] = "";
                 Text[ korean ] = "페이지";
                 Text[ turkish ] = "Sayfa";
                 Text[ language_user1 ] = " ";
-                Text[ catalan ] = "Pgina";
+                Text[ catalan ] = "Pgina";
+                Text[ thai ] = "หน้า";
             };
             PageItem
             {
@@ -392,7 +402,7 @@ TabDialog RID_SCDLG_STYLES_PAGE
                 Text [ french ] = "Bordure" ;
                 Text [ swedish ] = "Inramning" ;
                 Text [ dutch ] = "Omranding" ;
-                Text [ spanish ] = "Borde" ;
+                Text [ spanish ] = "Bordes" ;
                 Text [ english_us ] = "Borders" ;
                 Text[ chinese_simplified ] = "边框";
                 Text[ russian ] = "";
@@ -401,10 +411,11 @@ TabDialog RID_SCDLG_STYLES_PAGE
                 Text[ chinese_traditional ] = "邊框";
                 Text[ arabic ] = "";
                 Text[ greek ] = "";
-                Text[ korean ] = "외곽선";
+                Text[ korean ] = "테두리";
                 Text[ turkish ] = "Kenarlk";
                 Text[ language_user1 ] = " ";
-                Text[ catalan ] = "Borde";
+                Text[ catalan ] = "Vores";
+                Text[ thai ] = "เส้นขอบ";
             };
             PageItem
             {
@@ -432,7 +443,8 @@ TabDialog RID_SCDLG_STYLES_PAGE
                 Text[ korean ] = "배경";
                 Text[ turkish ] = "Artalan";
                 Text[ language_user1 ] = " ";
-                Text[ catalan ] = "Fondo";
+                Text[ catalan ] = "Fons";
+                Text[ thai ] = "พื้นหลัง";
             };
             PageItem
             {
@@ -443,7 +455,7 @@ TabDialog RID_SCDLG_STYLES_PAGE
                 Text [ italian ] = "Riga d'intestazione" ;
                 Text [ portuguese_brazilian ] = "Cabe?alho" ;
                 Text [ portuguese ] = "Cabealho" ;
-                Text [ finnish ] = "Ylotsikko" ;
+                Text [ finnish ] = "Yltunniste" ;
                 Text [ danish ] = "Sidehoved" ;
                 Text [ french ] = "En-tte" ;
                 Text [ swedish ] = "Sidhuvud" ;
@@ -453,14 +465,15 @@ TabDialog RID_SCDLG_STYLES_PAGE
                 Text[ chinese_simplified ] = "页眉";
                 Text[ russian ] = " ";
                 Text[ polish ] = "Nagwek";
-                Text[ japanese ] = "ヘッダ";
+                Text[ japanese ] = "ヘッダ";
                 Text[ chinese_traditional ] = "頁首";
                 Text[ arabic ] = " ";
                 Text[ greek ] = "";
                 Text[ korean ] = "머리글";
                 Text[ turkish ] = "stbilgi";
                 Text[ language_user1 ] = " ";
-                Text[ catalan ] = "Encabezamiento";
+                Text[ catalan ] = "Capalera";
+                Text[ thai ] = "หัวกระดาษ";
             };
             PageItem
             {
@@ -471,7 +484,7 @@ TabDialog RID_SCDLG_STYLES_PAGE
                 Text [ italian ] = "Pi di pagina" ;
                 Text [ portuguese_brazilian ] = "Rodap?" ;
                 Text [ portuguese ] = "Rodap" ;
-                Text [ finnish ] = "Alaselite" ;
+                Text [ finnish ] = "Alatunniste" ;
                 Text [ danish ] = "Sidefod" ;
                 Text [ french ] = "Pied de page" ;
                 Text [ swedish ] = "Sidfot" ;
@@ -481,14 +494,15 @@ TabDialog RID_SCDLG_STYLES_PAGE
                 Text[ chinese_simplified ] = "页脚";
                 Text[ russian ] = " ";
                 Text[ polish ] = "Stopka";
-                Text[ japanese ] = "フッタ";
+                Text[ japanese ] = "フッタ";
                 Text[ chinese_traditional ] = "頁尾";
                 Text[ arabic ] = " ";
                 Text[ greek ] = "";
                 Text[ korean ] = "바닥글";
                 Text[ turkish ] = "Altbilgi";
                 Text[ language_user1 ] = " ";
-                Text[ catalan ] = "Pie de pgina";
+                Text[ catalan ] = "Peu de pgina";
+                Text[ thai ] = "ท้ายกระดาษ";
             };
             PageItem
             {
@@ -499,7 +513,7 @@ TabDialog RID_SCDLG_STYLES_PAGE
                 Text [ italian ] = "Tabella" ;
                 Text [ portuguese_brazilian ] = "Tabela" ;
                 Text [ portuguese ] = "Folha" ;
-                Text [ finnish ] = "Lomake" ;
+                Text [ finnish ] = "Taulukko" ;
                 Text [ danish ] = "Ark" ;
                 Text [ french ] = "Classeur" ;
                 Text [ swedish ] = "Tabell" ;
@@ -516,21 +530,23 @@ TabDialog RID_SCDLG_STYLES_PAGE
                 Text[ korean ] = "시트";
                 Text[ language_user1 ] = " ";
                 Text[ turkish ] = "Tablo";
-                Text[ catalan ] = "Hoja";
+                Text[ catalan ] = "Full";
+                Text[ thai ] = "แผ่นงาน";
             };
         };
     };
     Text[ chinese_simplified ] = "页面样式";
     Text[ russian ] = " ";
     Text[ polish ] = "Styl strony";
-    Text[ japanese ] = "ページスタイル";
+    Text[ japanese ] = "ページスタイル";
     Text[ chinese_traditional ] = "頁面樣式";
     Text[ arabic ] = " ";
     Text[ greek ] = " ";
-    Text[ korean ] = "페이지 유형";
+    Text[ korean ] = "페이지 스타일";
     Text[ turkish ] = "Sayfa biimi";
     Text[ language_user1 ] = " ";
-    Text[ catalan ] = "Estilo de hoja";
+    Text[ catalan ] = "Estil de la pgina";
+    Text[ thai ] = "ลักษณะหน้า";
 };
 
 
@@ -543,3 +559,6 @@ TabDialog RID_SCDLG_STYLES_PAGE
 
 
 
+
+
+
diff --git a/sc/source/ui/undo/undocell.cxx b/sc/source/ui/undo/undocell.cxx
index 7f3ace34509e..4b85b54b7051 100644
--- a/sc/source/ui/undo/undocell.cxx
+++ b/sc/source/ui/undo/undocell.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: undocell.cxx,v $
  *
- *  $Revision: 1.3 $
+ *  $Revision: 1.4 $
  *
- *  last change: $Author: nn $ $Date: 2002-03-04 19:38:57 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:43 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -232,13 +232,16 @@ ScUndoEnterData::ScUndoEnterData( ScDocShell* pNewDocShell,
 __EXPORT ScUndoEnterData::~ScUndoEnterData()
 {
     ScDocumentPool* pPool = pDocShell->GetDocument()->GetPool();
+
     for (USHORT i=0; iDelete();
-    delete ppOldCells;
-    delete pHasFormat;
-    delete pOldFormats;
-    delete pTabs;
+    delete[] ppOldCells;
+
+    delete[] pHasFormat;
+    delete[] pOldFormats;
+    delete[] pTabs;
+
     delete pNewEditData;
 }
 
diff --git a/sc/source/ui/unoobj/cellsuno.cxx b/sc/source/ui/unoobj/cellsuno.cxx
index 6301a26d51af..0684a89e5e85 100644
--- a/sc/source/ui/unoobj/cellsuno.cxx
+++ b/sc/source/ui/unoobj/cellsuno.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: cellsuno.cxx,v $
  *
- *  $Revision: 1.76 $
+ *  $Revision: 1.77 $
  *
- *  last change: $Author: sab $ $Date: 2002-10-31 11:23:47 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:43 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -1421,11 +1421,14 @@ ScCellRangesBase::ScCellRangesBase(ScDocShell* pDocSh, const ScRangeList& rR) :
 
 ScCellRangesBase::~ScCellRangesBase()
 {
-    ForgetCurrentAttrs();
+    //  #107294# call RemoveUnoObject first, so no notification can happen
+    //  during ForgetCurrentAttrs
 
     if (pDocShell)
         pDocShell->GetDocument()->RemoveUnoObject(*this);
 
+    ForgetCurrentAttrs();
+
     delete pValueListener;
 
     //! XChartDataChangeEventListener abmelden ??
diff --git a/sc/source/ui/unoobj/datauno.cxx b/sc/source/ui/unoobj/datauno.cxx
index 1c8041d99847..67fe2725f877 100644
--- a/sc/source/ui/unoobj/datauno.cxx
+++ b/sc/source/ui/unoobj/datauno.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: datauno.cxx,v $
  *
- *  $Revision: 1.16 $
+ *  $Revision: 1.17 $
  *
- *  last change: $Author: sab $ $Date: 2002-10-21 13:56:59 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:44 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -95,6 +95,9 @@
 #ifndef SC_SCATTR_HXX
 #include "attrib.hxx"
 #endif
+#ifndef _COMPHELPER_EXTRACT_HXX_
+#include 
+#endif
 
 using namespace com::sun::star;
 
@@ -110,6 +113,7 @@ const SfxItemPropertyMap* lcl_GetSubTotalPropertyMap()
     {
         {MAP_CHAR_LEN(SC_UNONAME_BINDFMT),  0,  &getBooleanCppuType(),       0},
         {MAP_CHAR_LEN(SC_UNONAME_CASE),     0,  &getBooleanCppuType(),       0},
+        {MAP_CHAR_LEN(SC_UNONAME_ENABSORT), 0,  &getBooleanCppuType(),       0},
         {MAP_CHAR_LEN(SC_UNONAME_ENUSLIST), 0,  &getBooleanCppuType(),       0},
         {MAP_CHAR_LEN(SC_UNONAME_FORMATS),  0,  &getBooleanCppuType(),       0},
         {MAP_CHAR_LEN(SC_UNONAME_INSBRK),   0,  &getBooleanCppuType(),       0},
@@ -327,7 +331,7 @@ void ScImportDescriptor::FillImportParam( ScImportParam& rParam, const uno::Sequ
 
 long ScSortDescriptor::GetPropertyCount()
 {
-    return 12;      // TableSortDescriptor and SheetSortDescriptor
+    return 13;      // TableSortDescriptor and SheetSortDescriptor
 }
 
 void ScSortDescriptor::FillProperties( uno::Sequence& rSeq, const ScSortParam& rParam )
@@ -367,38 +371,41 @@ void ScSortDescriptor::FillProperties( uno::Sequence& rSeq
     pArray[0].Name = rtl::OUString::createFromAscii( SC_UNONAME_ORIENT );
     pArray[0].Value <<= eOrient;
 
-    pArray[1].Name = rtl::OUString::createFromAscii( SC_UNONAME_CONTHDR );
-    ScUnoHelpFunctions::SetBoolInAny( pArray[1].Value, rParam.bHasHeader );
+    pArray[1].Name = rtl::OUString::createFromAscii( SC_UNONAME_SORTCOLUMNS );
+    pArray[1].Value = ::cppu::bool2any(!rParam.bByRow);
+
+    pArray[2].Name = rtl::OUString::createFromAscii( SC_UNONAME_CONTHDR );
+    ScUnoHelpFunctions::SetBoolInAny( pArray[2].Value, rParam.bHasHeader );
 
-    pArray[2].Name = rtl::OUString::createFromAscii( SC_UNONAME_MAXFLD );
-    pArray[2].Value <<= (sal_Int32) MAXSORT;
+    pArray[3].Name = rtl::OUString::createFromAscii( SC_UNONAME_MAXFLD );
+    pArray[3].Value <<= (sal_Int32) MAXSORT;
 
-    pArray[3].Name = rtl::OUString::createFromAscii( SC_UNONAME_SORTFLD );
-    pArray[3].Value <<= aFields;
+    pArray[4].Name = rtl::OUString::createFromAscii( SC_UNONAME_SORTFLD );
+    pArray[4].Value <<= aFields;
 
-    pArray[4].Name = rtl::OUString::createFromAscii( SC_UNONAME_ISCASE );
-    ScUnoHelpFunctions::SetBoolInAny( pArray[4].Value, rParam.bCaseSens );
+    pArray[5].Name = rtl::OUString::createFromAscii( SC_UNONAME_ISCASE );
+    ScUnoHelpFunctions::SetBoolInAny( pArray[5].Value, rParam.bCaseSens );
 
-    pArray[5].Name = rtl::OUString::createFromAscii( SC_UNONAME_BINDFMT );
-    ScUnoHelpFunctions::SetBoolInAny( pArray[5].Value, rParam.bIncludePattern );
+    pArray[6].Name = rtl::OUString::createFromAscii( SC_UNONAME_BINDFMT );
+    ScUnoHelpFunctions::SetBoolInAny( pArray[6].Value, rParam.bIncludePattern );
 
-    pArray[6].Name = rtl::OUString::createFromAscii( SC_UNONAME_COPYOUT );
-    ScUnoHelpFunctions::SetBoolInAny( pArray[6].Value, !rParam.bInplace );
+    pArray[7].Name = rtl::OUString::createFromAscii( SC_UNONAME_COPYOUT );
+    ScUnoHelpFunctions::SetBoolInAny( pArray[7].Value, !rParam.bInplace );
 
-    pArray[7].Name = rtl::OUString::createFromAscii( SC_UNONAME_OUTPOS );
-    pArray[7].Value <<= aOutPos;
+    pArray[8].Name = rtl::OUString::createFromAscii( SC_UNONAME_OUTPOS );
+    pArray[8].Value <<= aOutPos;
 
-    pArray[8].Name = rtl::OUString::createFromAscii( SC_UNONAME_ISULIST );
-    ScUnoHelpFunctions::SetBoolInAny( pArray[8].Value, rParam.bUserDef );
+    pArray[9].Name = rtl::OUString::createFromAscii( SC_UNONAME_ISULIST );
+    ScUnoHelpFunctions::SetBoolInAny( pArray[9].Value, rParam.bUserDef );
 
-    pArray[9].Name = rtl::OUString::createFromAscii( SC_UNONAME_UINDEX );
-    pArray[9].Value <<= (sal_Int32) rParam.nUserIndex;
+    pArray[10].Name = rtl::OUString::createFromAscii( SC_UNONAME_UINDEX );
+    pArray[10].Value <<= (sal_Int32) rParam.nUserIndex;
 
-    pArray[10].Name = rtl::OUString::createFromAscii( SC_UNONAME_COLLLOC );
-    pArray[10].Value <<= rParam.aCollatorLocale;
+    pArray[11].Name = rtl::OUString::createFromAscii( SC_UNONAME_COLLLOC );
+    pArray[11].Value <<= rParam.aCollatorLocale;
 
-    pArray[11].Name = rtl::OUString::createFromAscii( SC_UNONAME_COLLALG );
-    pArray[11].Value <<= rtl::OUString( rParam.aCollatorAlgorithm );
+    pArray[12].Name = rtl::OUString::createFromAscii( SC_UNONAME_COLLALG );
+    pArray[12].Value <<= rtl::OUString( rParam.aCollatorAlgorithm );
 }
 
 void ScSortDescriptor::FillSortParam( ScSortParam& rParam, const uno::Sequence& rSeq )
@@ -417,6 +424,10 @@ void ScSortDescriptor::FillSortParam( ScSortParam& rParam, const uno::Sequence
-#endif
-
 using namespace ::com::sun::star;
 
 //------------------------------------------------------------------------
diff --git a/sc/source/ui/unoobj/fielduno.cxx b/sc/source/ui/unoobj/fielduno.cxx
index ac37a032e995..72a2500c8afd 100644
--- a/sc/source/ui/unoobj/fielduno.cxx
+++ b/sc/source/ui/unoobj/fielduno.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: fielduno.cxx,v $
  *
- *  $Revision: 1.10 $
+ *  $Revision: 1.11 $
  *
- *  last change: $Author: sab $ $Date: 2002-09-26 08:52:20 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:44 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -984,8 +984,8 @@ ScHeaderFieldObj* ScHeaderFieldsObj::GetObjectByIndex_Impl(INT32 Index) const
             else if ( pData->ISA( SvxTableField ) )   nFieldType = SC_SERVICE_SHEETFIELD;
         }
 
-        ESelection aSelection( nPar, nPos, nPar, nPos+1 );      // Feld ist 1 Zeichen
-        return new ScHeaderFieldObj( pContentObj, nPart, nType, aSelection );
+        ESelection aSelection( nPar, nPos, nPar, nPos+1 );      // Field is 1 character
+        return new ScHeaderFieldObj( pContentObj, nPart, nFieldType, aSelection );
     }
     return NULL;
 }
diff --git a/sc/source/ui/unoobj/shapeuno.cxx b/sc/source/ui/unoobj/shapeuno.cxx
index f6c79961e029..048e3e8f6362 100644
--- a/sc/source/ui/unoobj/shapeuno.cxx
+++ b/sc/source/ui/unoobj/shapeuno.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: shapeuno.cxx,v $
  *
- *  $Revision: 1.8 $
+ *  $Revision: 1.9 $
  *
- *  last change: $Author: nn $ $Date: 2002-11-27 18:22:29 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:44 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -396,13 +396,19 @@ beans::PropertyState SAL_CALL ScShapeObj::getPropertyState( const rtl::OUString&
                                 throw(beans::UnknownPropertyException, uno::RuntimeException)
 {
     ScUnoGuard aGuard;
-
-    //! mix own and aggregated properties
+    String aNameString = aPropertyName;
 
     beans::PropertyState eRet = beans::PropertyState_DIRECT_VALUE;
-    uno::Reference xAggState = lcl_GetPropertyState(mxShapeAgg);
-    if ( xAggState.is() )
-        eRet = xAggState->getPropertyState( aPropertyName );
+    if ( aNameString.EqualsAscii( SC_UNONAME_IMAGEMAP ) )
+    {
+        // ImageMap is always "direct"
+    }
+    else
+    {
+        uno::Reference xAggState = lcl_GetPropertyState(mxShapeAgg);
+        if ( xAggState.is() )
+            eRet = xAggState->getPropertyState( aPropertyName );
+    }
 
     return eRet;
 }
@@ -427,12 +433,31 @@ void SAL_CALL ScShapeObj::setPropertyToDefault( const rtl::OUString& aPropertyNa
                             throw(beans::UnknownPropertyException, uno::RuntimeException)
 {
     ScUnoGuard aGuard;
+    String aNameString = aPropertyName;
 
-    //! mix own and aggregated properties
-
-    uno::Reference xAggState = lcl_GetPropertyState(mxShapeAgg);
-    if ( xAggState.is() )
-        xAggState->setPropertyToDefault( aPropertyName );
+    if ( aNameString.EqualsAscii( SC_UNONAME_IMAGEMAP ) )
+    {
+        SdrObject* pObj = GetSdrObject();
+        if ( pObj )
+        {
+            ScIMapInfo* pIMapInfo = ScDrawLayer::GetIMapInfo(pObj);
+            if( pIMapInfo )
+            {
+                ImageMap aEmpty;
+                pIMapInfo->SetImageMap( aEmpty );   // replace with empty image map
+            }
+            else
+            {
+                // nothing to do (no need to insert user data for an empty map)
+            }
+        }
+    }
+    else
+    {
+        uno::Reference xAggState = lcl_GetPropertyState(mxShapeAgg);
+        if ( xAggState.is() )
+            xAggState->setPropertyToDefault( aPropertyName );
+    }
 }
 
 uno::Any SAL_CALL ScShapeObj::getPropertyDefault( const rtl::OUString& aPropertyName )
@@ -440,13 +465,21 @@ uno::Any SAL_CALL ScShapeObj::getPropertyDefault( const rtl::OUString& aProperty
                                         uno::RuntimeException)
 {
     ScUnoGuard aGuard;
-
-    //! mix own and aggregated properties
+    String aNameString = aPropertyName;
 
     uno::Any aAny;
-    uno::Reference xAggState = lcl_GetPropertyState(mxShapeAgg);
-    if ( xAggState.is() )
-        aAny = xAggState->getPropertyDefault( aPropertyName );
+    if ( aNameString.EqualsAscii( SC_UNONAME_IMAGEMAP ) )
+    {
+        //  default: empty ImageMap
+        uno::Reference< uno::XInterface > xImageMap = SvUnoImageMap_createInstance( GetSupportedMacroItems() );
+        aAny <<= uno::Reference< container::XIndexContainer >::query( xImageMap );
+    }
+    else
+    {
+        uno::Reference xAggState = lcl_GetPropertyState(mxShapeAgg);
+        if ( xAggState.is() )
+            aAny = xAggState->getPropertyDefault( aPropertyName );
+    }
 
     return aAny;
 }
diff --git a/sc/source/ui/unoobj/srchuno.cxx b/sc/source/ui/unoobj/srchuno.cxx
index d963d1ea1182..c0b571d76df3 100644
--- a/sc/source/ui/unoobj/srchuno.cxx
+++ b/sc/source/ui/unoobj/srchuno.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: srchuno.cxx,v $
  *
- *  $Revision: 1.1.1.1 $
+ *  $Revision: 1.2 $
  *
- *  last change: $Author: hr $ $Date: 2000-09-18 16:45:08 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:45 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -122,6 +122,8 @@ ScCellSearchObj::ScCellSearchObj() :
     //  Defaults:
     pSearchItem->SetWordOnly(FALSE);
     pSearchItem->SetExact(FALSE);
+    pSearchItem->SetMatchFullHalfWidthForms(FALSE);
+    pSearchItem->SetUseAsianOptions(FALSE);     // or all asian bits would have to be handled
     pSearchItem->SetBackward(FALSE);
     pSearchItem->SetSelection(FALSE);
     pSearchItem->SetRegExp(FALSE);
diff --git a/sc/source/ui/unoobj/unodoc.cxx b/sc/source/ui/unoobj/unodoc.cxx
new file mode 100644
index 000000000000..1b4accf8d3b4
--- /dev/null
+++ b/sc/source/ui/unoobj/unodoc.cxx
@@ -0,0 +1,109 @@
+/*************************************************************************
+ *
+ *  $RCSfile: unodoc.cxx,v $
+ *
+ *  $Revision: 1.2 $
+ *
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:45 $
+ *
+ *  The Contents of this file are made available subject to the terms of
+ *  either of the following licenses
+ *
+ *         - GNU Lesser General Public License Version 2.1
+ *         - Sun Industry Standards Source License Version 1.1
+ *
+ *  Sun Microsystems Inc., October, 2000
+ *
+ *  GNU Lesser General Public License Version 2.1
+ *  =============================================
+ *  Copyright 2000 by Sun Microsystems, Inc.
+ *  901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ *  This library is free software; you can redistribute it and/or
+ *  modify it under the terms of the GNU Lesser General Public
+ *  License version 2.1, as published by the Free Software Foundation.
+ *
+ *  This library is distributed in the hope that it will be useful,
+ *  but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ *  Lesser General Public License for more details.
+ *
+ *  You should have received a copy of the GNU Lesser General Public
+ *  License along with this library; if not, write to the Free Software
+ *  Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ *  MA  02111-1307  USA
+ *
+ *
+ *  Sun Industry Standards Source License Version 1.1
+ *  =================================================
+ *  The contents of this file are subject to the Sun Industry Standards
+ *  Source License Version 1.1 (the "License"); You may not use this file
+ *  except in compliance with the License. You may obtain a copy of the
+ *  License at http://www.openoffice.org/license.html.
+ *
+ *  Software provided under this License is provided on an "AS IS" basis,
+ *  WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
+ *  WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
+ *  MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
+ *  See the License for the specific provisions governing your rights and
+ *  obligations concerning the Software.
+ *
+ *  The Initial Developer of the Original Code is: Sun Microsystems, Inc.
+ *
+ *  Copyright: 2000 by Sun Microsystems, Inc.
+ *
+ *  All Rights Reserved.
+ *
+ *  Contributor(s): _______________________________________
+ *
+ *
+ ************************************************************************/
+
+// System - Includes -----------------------------------------------------
+
+#include 
+#include 
+
+#ifndef _COM_SUN_STAR_LANG_XMULTISERVICEFACTORY_HPP_
+#include 
+#endif
+
+#include "scmod.hxx"
+
+using namespace ::com::sun::star;
+
+::rtl::OUString SAL_CALL ScDocument_getImplementationName() throw()
+{
+    return rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.comp.Calc.SpreadsheetDocument" ) );
+}
+
+uno::Sequence< rtl::OUString > SAL_CALL ScDocument_getSupportedServiceNames() throw()
+{
+    uno::Sequence< rtl::OUString > aSeq( 2 );
+    aSeq[0] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.document.OfficeDocument" ));
+    aSeq[1] = ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.sheet.SpreadsheetDocument" ));
+    return aSeq;
+}
+
+uno::Reference< uno::XInterface > SAL_CALL ScDocument_createInstance(
+                const uno::Reference< lang::XMultiServiceFactory > & rSMgr ) throw( uno::Exception )
+{
+    // to create the service the SW_MOD should be already initialized
+    DBG_ASSERT( SC_MOD(), "No StarCalc module!" );
+
+    if ( SC_MOD() )
+    {
+        ::rtl::OUString aFactoryURL( RTL_CONSTASCII_USTRINGPARAM ( "private:factory/scalc" ) );
+        const SfxObjectFactory* pFactory = SfxObjectFactory::GetFactory( aFactoryURL );
+        if ( pFactory )
+        {
+            SfxObjectShell* pShell = pFactory->CreateObject();
+            if( pShell )
+                return uno::Reference< uno::XInterface >( pShell->GetModel() );
+        }
+    }
+
+    return uno::Reference< uno::XInterface >();
+}
+
+
diff --git a/sc/source/ui/view/formatsh.cxx b/sc/source/ui/view/formatsh.cxx
index 56b46ed61d19..120e12696c36 100644
--- a/sc/source/ui/view/formatsh.cxx
+++ b/sc/source/ui/view/formatsh.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: formatsh.cxx,v $
  *
- *  $Revision: 1.17 $
+ *  $Revision: 1.18 $
  *
- *  last change: $Author: nn $ $Date: 2002-09-30 14:04:52 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:46 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -93,6 +93,9 @@
 #define _ZFORLIST_DECLARE_TABLE
 #include 
 #include 
+#ifndef _SVTOOLS_LANGUAGEOPTIONS_HXX
+#include 
+#endif
 #include 
 #include 
 #include 
@@ -109,7 +112,7 @@
 #include 
 #include 
 #include 
-#include 
+#include 
 #include 
 
 #include "formatsh.hxx"
@@ -726,7 +729,18 @@ void __EXPORT ScFormatShell::ExecuteStyle( SfxRequest& rReq )
 
                 Window* pParent = Application::GetDefDialogParent();
                 if ( !pParent || !pParent->IsDialog() )
-                    pParent = pTabViewShell->GetDialogParent();
+                {
+                    //  #107256# GetDefDialogParent currently doesn't return the window
+                    //  that was set with SetDefDialogParent (but dynamically finds the
+                    //  topmost parent of the focus window), so IsDialog above is FALSE
+                    //  even if called from the style catalog.
+                    //  -> Use NULL if a modal dialog is open, to enable the Dialog's
+                    //  default parent handling.
+                    if ( Application::IsInModalMode() )
+                        pParent = NULL;
+                    else
+                        pParent = pTabViewShell->GetDialogParent();
+                }
 
                 pTabViewShell->SetInFormatDialog(TRUE);
 
@@ -1589,7 +1603,7 @@ void ScFormatShell::GetAttrState( SfxItemSet& rSet )
             {
                 Color aColor;
                 if ( nTrans == 255 )
-                    aColor.SetColor( SC_MOD()->GetColorConfig().GetColorValue(svx::DOCCOLOR).nColor );
+                    aColor.SetColor( SC_MOD()->GetColorConfig().GetColorValue(svtools::DOCCOLOR).nColor );
                 else
                     aColor = rBrushItem.GetColor();
                 rSet.Put( SvxColorItem( aColor, SID_BACKGROUND_COLOR ) );
@@ -1993,6 +2007,10 @@ void ScFormatShell::GetTextDirectionState( SfxItemSet& rSet )
             eBidiDir = EE_HTEXTDIR_L2R;
     }
 
+    SvtLanguageOptions  aLangOpt;
+    BOOL bDisableCTLFont = !aLangOpt.IsCTLFontEnabled();
+    BOOL bDisableVerticalText = !aLangOpt.IsVerticalTextEnabled();
+
     SfxWhichIter aIter( rSet );
     USHORT nWhich = aIter.FirstWhich();
     while( nWhich )
@@ -2000,28 +2018,35 @@ void ScFormatShell::GetTextDirectionState( SfxItemSet& rSet )
         switch( nWhich )
         {
             case SID_TEXTDIRECTION_LEFT_TO_RIGHT:
-                if( bVertDontCare )
-                    rSet.InvalidateItem( nWhich );
-                else
-                    rSet.Put( SfxBoolItem( nWhich, bLeftRight ) );
-            break;
             case SID_TEXTDIRECTION_TOP_TO_BOTTOM:
-                if( bVertDontCare )
-                    rSet.InvalidateItem( nWhich );
+                if ( bDisableVerticalText )
+                    rSet.DisableItem( nWhich );
                 else
-                    rSet.Put( SfxBoolItem( nWhich, bTopBottom ) );
+                {
+                    if( bVertDontCare )
+                        rSet.InvalidateItem( nWhich );
+                    else if ( nWhich == SID_TEXTDIRECTION_LEFT_TO_RIGHT )
+                        rSet.Put( SfxBoolItem( nWhich, bLeftRight ) );
+                    else
+                        rSet.Put( SfxBoolItem( nWhich, bTopBottom ) );
+                }
             break;
 
             case SID_ATTR_PARA_LEFT_TO_RIGHT:
             case SID_ATTR_PARA_RIGHT_TO_LEFT:
-                if ( bTopBottom )
+                if ( bDisableCTLFont )
                     rSet.DisableItem( nWhich );
-                else if ( bBidiDontCare )
-                    rSet.InvalidateItem( nWhich );
-                else if ( nWhich == SID_ATTR_PARA_LEFT_TO_RIGHT )
-                    rSet.Put( SfxBoolItem( nWhich, eBidiDir == EE_HTEXTDIR_L2R ) );
                 else
-                    rSet.Put( SfxBoolItem( nWhich, eBidiDir == EE_HTEXTDIR_R2L ) );
+                {
+                    if ( bTopBottom )
+                        rSet.DisableItem( nWhich );
+                    else if ( bBidiDontCare )
+                        rSet.InvalidateItem( nWhich );
+                    else if ( nWhich == SID_ATTR_PARA_LEFT_TO_RIGHT )
+                        rSet.Put( SfxBoolItem( nWhich, eBidiDir == EE_HTEXTDIR_L2R ) );
+                    else
+                        rSet.Put( SfxBoolItem( nWhich, eBidiDir == EE_HTEXTDIR_R2L ) );
+                }
         }
         nWhich = aIter.NextWhich();
     }
diff --git a/sc/source/ui/view/gridwin.cxx b/sc/source/ui/view/gridwin.cxx
index b57f16aec118..82328863a9c4 100644
--- a/sc/source/ui/view/gridwin.cxx
+++ b/sc/source/ui/view/gridwin.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: gridwin.cxx,v $
  *
- *  $Revision: 1.39 $
+ *  $Revision: 1.40 $
  *
- *  last change: $Author: nn $ $Date: 2002-12-12 19:23:29 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:46 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -313,6 +313,25 @@ void __EXPORT ScFilterListBox::SelectHdl()
     }
 }
 
+// use a System floating window for the above filter listbox
+class ScFilterFloatingWindow : public FloatingWindow
+{
+public:
+    ScFilterFloatingWindow( Window* pParent, WinBits nStyle = WB_STDFLOATWIN );
+    // required for System FloatingWindows that will not process KeyInput by themselves
+    virtual Window* GetPreferredKeyInputWindow();
+};
+
+ScFilterFloatingWindow::ScFilterFloatingWindow( Window* pParent, WinBits nStyle ) :
+    FloatingWindow( pParent, nStyle|WB_SYSTEMWINDOW ) // make it a system floater
+    {}
+
+Window* ScFilterFloatingWindow::GetPreferredKeyInputWindow()
+{
+    // redirect keyinput in the child window
+    return GetWindow(WINDOW_FIRSTCHILD) ? GetWindow(WINDOW_FIRSTCHILD) : NULL;    // will be the FilterBox
+}
+
 #ifdef AUTOFILTER_POPUP
 
 //==================================================================
@@ -515,7 +534,7 @@ void ScGridWindow::DoScenarioMenue( const ScRange& rScenRange )
     //  Die ListBox direkt unter der schwarzen Linie auf dem Zellgitter
     //  (wenn die Linie verdeckt wird, sieht es komisch aus...)
 
-    pFilterFloat = new FloatingWindow( this, WinBits(WB_BORDER) );      // nicht resizable etc.
+    pFilterFloat = new ScFilterFloatingWindow( this, WinBits(WB_BORDER) );      // nicht resizable etc.
     pFilterFloat->SetPopupModeEndHdl( LINK( this, ScGridWindow, PopupModeEndHdl ) );
     pFilterBox = new ScFilterListBox( pFilterFloat, this, nCol, nRow, SC_FILTERBOX_SCENARIO );
 
@@ -588,7 +607,7 @@ void ScGridWindow::DoScenarioMenue( const ScRange& rScenRange )
     }
 
     pFilterFloat->SetOutputSizePixel( aSize );
-    pFilterFloat->StartPopupMode( aCellRect, FLOATWIN_POPUPMODE_DOWN );
+    pFilterFloat->StartPopupMode( aCellRect, FLOATWIN_POPUPMODE_DOWN|FLOATWIN_POPUPMODE_GRABFOCUS );
 
     pFilterBox->SetUpdateMode(TRUE);
     pFilterBox->GrabFocus();
@@ -648,7 +667,7 @@ void ScGridWindow::DoAutoFilterMenue( USHORT nCol, USHORT nRow, BOOL bDataSelect
     aPos.X() -= 1;
     aPos.Y() += nSizeY - 1;
 
-    pFilterFloat = new FloatingWindow( this, WinBits(WB_BORDER) );      // nicht resizable etc.
+    pFilterFloat = new ScFilterFloatingWindow( this, WinBits(WB_BORDER) );      // nicht resizable etc.
     pFilterFloat->SetPopupModeEndHdl( LINK( this, ScGridWindow, PopupModeEndHdl ) );
     pFilterBox = new ScFilterListBox( pFilterFloat, this, nCol, nRow,
                         bDataSelect ? SC_FILTERBOX_DATASELECT : SC_FILTERBOX_FILTER );
@@ -687,13 +706,46 @@ void ScGridWindow::DoAutoFilterMenue( USHORT nCol, USHORT nRow, BOOL bDataSelect
         pDoc->GetString( nCol, nRow, nTab, aString );
         pFilterBox->SetText( aString );
 
-        //  Standard-Eintraege
-        pFilterBox->InsertEntry( String( ScResId( SCSTR_ALL ) ) );
-        pFilterBox->InsertEntry( String( ScResId( SCSTR_STDFILTER ) ) );
-        pFilterBox->InsertEntry( String( ScResId( SCSTR_TOP10FILTER ) ) );
+        long nMaxText = 0;
 
-        //  Liste fuellen
+        //  default entries
+        static const USHORT nDefIDs[] = { SCSTR_ALL, SCSTR_STDFILTER, SCSTR_TOP10FILTER };
+        const USHORT nDefCount = sizeof(nDefIDs) / sizeof(USHORT);
+        for (i=0; iInsertEntry( aEntry );
+            long nTextWidth = pFilterBox->GetTextWidth( aEntry );
+            if ( nTextWidth > nMaxText )
+                nMaxText = nTextWidth;
+        }
+
+        //  get list entries
         pDoc->GetFilterEntries( nCol, nRow, nTab, aStrings );
+
+        //  check widths of numerical entries (string entries are not included)
+        //  so all numbers are completely visible
+        USHORT nCount = aStrings.GetCount();
+        for (i=0; iIsStrData() )              // only numerical entries
+            {
+                long nTextWidth = pFilterBox->GetTextWidth( pData->GetString() );
+                if ( nTextWidth > nMaxText )
+                    nMaxText = nTextWidth;
+            }
+        }
+
+        //  add scrollbar width if needed (string entries are counted here)
+        //  (scrollbar is shown if the box is exactly full?)
+        if ( nCount + nDefCount >= SC_FILTERLISTBOX_LINES )
+            nMaxText += GetSettings().GetStyleSettings().GetScrollBarSize();
+
+        nMaxText += 4;              // for borders
+
+        if ( nMaxText > nSizeX )
+            nSizeX = nMaxText;      // just modify width - starting position is unchanged
     }
 
     if (!bEmpty)
@@ -714,7 +766,7 @@ void ScGridWindow::DoAutoFilterMenue( USHORT nCol, USHORT nRow, BOOL bDataSelect
         pFilterBox->SetUpdateMode(FALSE);
 
         pFilterFloat->SetOutputSizePixel( aSize );
-        pFilterFloat->StartPopupMode( aCellRect, FLOATWIN_POPUPMODE_DOWN );
+        pFilterFloat->StartPopupMode( aCellRect, FLOATWIN_POPUPMODE_DOWN|FLOATWIN_POPUPMODE_GRABFOCUS);
 
         //  Listbox fuellen
         USHORT nCount = aStrings.GetCount();
diff --git a/sc/source/ui/view/gridwin4.cxx b/sc/source/ui/view/gridwin4.cxx
index a3c50dfccccc..b3573e545d32 100644
--- a/sc/source/ui/view/gridwin4.cxx
+++ b/sc/source/ui/view/gridwin4.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: gridwin4.cxx,v $
  *
- *  $Revision: 1.17 $
+ *  $Revision: 1.18 $
  *
- *  last change: $Author: nn $ $Date: 2002-11-05 14:52:31 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:47 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -71,7 +71,7 @@
 #include 
 #define ITEMID_FIELD EE_FEATURE_FIELD
 
-#include 
+#include 
 #include 
 #include 
 #include 
@@ -514,8 +514,8 @@ void ScGridWindow::Draw( USHORT nX1, USHORT nY1, USHORT nX2, USHORT nY2, ScUpdat
         aOutputData.SetFmtDevice( pFmtDev );
     }
 
-    const svx::ColorConfig& rColorCfg = pScMod->GetColorConfig();
-    Color aGridColor( rColorCfg.GetColorValue( svx::CALCGRID, FALSE ).nColor );
+    const svtools::ColorConfig& rColorCfg = pScMod->GetColorConfig();
+    Color aGridColor( rColorCfg.GetColorValue( svtools::CALCGRID, FALSE ).nColor );
     if ( aGridColor.GetColor() == COL_TRANSPARENT )
     {
         //  use view options' grid color only if color config has "automatic" color
@@ -749,7 +749,7 @@ void ScGridWindow::Draw( USHORT nX1, USHORT nY1, USHORT nX2, USHORT nY2, ScUpdat
             }
         }
 
-        Color aRefColor( rColorCfg.GetColorValue(svx::CALCREFERENCE).nColor );
+        Color aRefColor( rColorCfg.GetColorValue(svtools::CALCREFERENCE).nColor );
         aOutputData.DrawRefMark( pViewData->GetRefStartX(), pViewData->GetRefStartY(),
                                  pViewData->GetRefEndX(), pViewData->GetRefEndY(),
                                  aRefColor, FALSE );
@@ -787,7 +787,7 @@ void ScGridWindow::Draw( USHORT nX1, USHORT nY1, USHORT nX2, USHORT nY2, ScUpdat
     if ( nX2==MAXCOL || nY2==MAXROW )
     {
         Rectangle aPixRect = Rectangle( Point(), GetOutputSizePixel() );
-        SetFillColor( rColorCfg.GetColorValue(svx::APPBACKGROUND).nColor );
+        SetFillColor( rColorCfg.GetColorValue(svtools::APPBACKGROUND).nColor );
         SetLineColor();
         if ( nX2==MAXCOL )
         {
@@ -858,9 +858,9 @@ void ScGridWindow::DrawPagePreview( USHORT nX1, USHORT nY1, USHORT nX2, USHORT n
         ScDocument* pDoc = pViewData->GetDocument();
         USHORT nTab = pViewData->GetTabNo();
         Size aWinSize = GetOutputSizePixel();
-        const svx::ColorConfig& rColorCfg = SC_MOD()->GetColorConfig();
-        Color aManual( rColorCfg.GetColorValue(svx::CALCPAGEBREAKMANUAL).nColor );
-        Color aAutomatic( rColorCfg.GetColorValue(svx::CALCPAGEBREAK).nColor );
+        const svtools::ColorConfig& rColorCfg = SC_MOD()->GetColorConfig();
+        Color aManual( rColorCfg.GetColorValue(svtools::CALCPAGEBREAKMANUAL).nColor );
+        Color aAutomatic( rColorCfg.GetColorValue(svtools::CALCPAGEBREAK).nColor );
 
         String aPageText = ScGlobal::GetRscString( STR_PAGE );
         if ( nPageScript == 0 )
diff --git a/sc/source/ui/view/hdrcont.cxx b/sc/source/ui/view/hdrcont.cxx
index 01411e765ee7..675d30cc556f 100644
--- a/sc/source/ui/view/hdrcont.cxx
+++ b/sc/source/ui/view/hdrcont.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: hdrcont.cxx,v $
  *
- *  $Revision: 1.9 $
+ *  $Revision: 1.10 $
  *
- *  last change: $Author: nn $ $Date: 2002-10-30 15:59:57 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:47 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -70,7 +70,7 @@
 #include 
 #include 
 #include 
-#include 
+#include 
 
 #include "scresid.hxx"
 #include "sc.hrc"
@@ -116,7 +116,8 @@ ScHeaderControl::ScHeaderControl( Window* pParent, SelectionEngine* pSelectionEn
 {
     // --- RTL --- no default mirroring for this window, the spreadsheet itself
     // is also not mirrored
-    EnableRTL ( FALSE );
+    // #107811# mirror the vertical window for correct border drawing
+    EnableRTL ( bVertical );
 
     aNormFont = GetFont();
     aNormFont.SetTransparent( TRUE );       //! WEIGHT_NORMAL hart setzen ???
@@ -338,7 +339,7 @@ void __EXPORT ScHeaderControl::Paint( const Rectangle& rRect )
 
     if ( nLineEnd < nPEnd )
     {
-        SetFillColor( SC_MOD()->GetColorConfig().GetColorValue(svx::APPBACKGROUND).nColor );
+        SetFillColor( SC_MOD()->GetColorConfig().GetColorValue(svtools::APPBACKGROUND).nColor );
         if ( bVertical )
             aFillRect = Rectangle( 0, nLineEnd+1, nBarSize-1, nPEnd );
         else
diff --git a/sc/source/ui/view/olinewin.cxx b/sc/source/ui/view/olinewin.cxx
index 6724cdbc5158..7136d9095e59 100644
--- a/sc/source/ui/view/olinewin.cxx
+++ b/sc/source/ui/view/olinewin.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: olinewin.cxx,v $
  *
- *  $Revision: 1.4 $
+ *  $Revision: 1.5 $
  *
- *  last change: $Author: dr $ $Date: 2002-09-18 14:00:19 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:47 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -63,7 +63,13 @@
 #include "ui_pch.hxx"
 #endif
 
+#ifndef _SV_SVAPP_HXX
+#include 
+#endif
+#ifndef _SV_TASKPANELIST_HXX
 #include 
+#endif
+
 #include "olinewin.hxx"
 #include "olinetab.hxx"
 #include "document.hxx"
@@ -91,47 +97,49 @@ ScOutlineWindow::ScOutlineWindow( Window* pParent, ScOutlineMode eMode, ScViewDa
     mrViewData( *pViewData ),
     meWhich( eWhich ),
     mbHoriz( eMode == SC_OUTLINE_HOR ),
+    mbAppRTL( !!Application::GetSettings().GetLayoutRTL() ),
     mpSymbols( NULL ),
     maLineColor( COL_BLACK ),
     mnHeaderSize( 0 ),
+    mnHeaderPos( 0 ),
+    mnMainFirstPos( 0 ),
+    mnMainLastPos( 0 ),
     mbMTActive( false ),
     mbMTPressed( false ),
     mnFocusLevel( 0 ),
     mnFocusEntry( SC_OL_HEADERENTRY ),
     mbDontDrawFocus( false )
 {
+    EnableRTL( !mbHoriz ); // #107809# do not mirror (horizontal) column outline window
+    mbMirrorHdr = mbHoriz && mbAppRTL;
+
     InitSettings();
     maFocusRect.SetEmpty();
+    SetHeaderSize( 0 );
 
     // insert the window into task pane list for "F6 cycling"
-    SystemWindow* pSysWin = GetSystemWindow();
-    if( pSysWin )
-    {
-        TaskPaneList* pTaskPaneList = pSysWin->GetTaskPaneList();
-        if( pTaskPaneList )
+    if( SystemWindow* pSysWin = GetSystemWindow() )
+        if( TaskPaneList* pTaskPaneList = pSysWin->GetTaskPaneList() )
             pTaskPaneList->AddWindow( this );
-    }
 }
 
 ScOutlineWindow::~ScOutlineWindow()
 {
     // remove the window from task pane list
-    SystemWindow* pSysWin = GetSystemWindow();
-    if( pSysWin )
-    {
-        TaskPaneList* pTaskPaneList = pSysWin->GetTaskPaneList();
-        if( pTaskPaneList )
+    if( SystemWindow* pSysWin = GetSystemWindow() )
+        if( TaskPaneList* pTaskPaneList = pSysWin->GetTaskPaneList() )
             pTaskPaneList->RemoveWindow( this );
-    }
 }
 
 void ScOutlineWindow::SetHeaderSize( sal_Int32 nNewSize )
 {
-    if ( nNewSize != mnHeaderSize )
-    {
-        mnHeaderSize = nNewSize;
+    bool bNew = (nNewSize != mnHeaderSize);
+    mnHeaderSize = nNewSize;
+    mnHeaderPos = mbMirrorHdr ? (GetOutputSizeEntry() - mnHeaderSize) : 0;
+    mnMainFirstPos = mbMirrorHdr ? 0 : mnHeaderSize;
+    mnMainLastPos = GetOutputSizeEntry() - (mbMirrorHdr ? mnHeaderSize : 0) - 1;
+    if ( bNew )
         Invalidate();
-    }
 }
 
 sal_Int32 ScOutlineWindow::GetDepthSize() const
@@ -147,35 +155,29 @@ void ScOutlineWindow::ScrollPixel( sal_Int32 nDiff )
     HideFocus();
     mbDontDrawFocus = true;
 
-    if ( mnHeaderSize > 0 )
-    {
-        sal_Int32 nStart = mnHeaderSize;
-        sal_Int32 nEnd = GetOutputSizeEntry() - 1;
-
-        sal_Int32 nInvStart, nInvEnd;
-        if (nDiff < 0)
-        {
-            nStart -= nDiff;
-            nInvStart = nEnd + nDiff;
-            nInvEnd = nEnd;
-        }
-        else
-        {
-            nEnd -= nDiff;
-            nInvStart = nStart;
-            nInvEnd = nStart + nDiff;
-        }
+    sal_Int32 nStart = mnMainFirstPos;
+    sal_Int32 nEnd = mnMainLastPos;
 
-        ScrollRel( nDiff, nStart, nEnd );
-        Invalidate( GetRectangle( 0, nInvStart, GetOutputSizeLevel() - 1, nInvEnd ) );
-        Update();
+    sal_Int32 nInvStart, nInvEnd;
+    if (nDiff < 0)
+    {
+        nStart -= nDiff;
+        nInvStart = nEnd + nDiff;
+        nInvEnd = nEnd;
     }
     else
-        ScrollRel( nDiff );
+    {
+        nEnd -= nDiff;
+        nInvStart = nStart;
+        nInvEnd = nStart + nDiff;
+    }
+
+    ScrollRel( nDiff, nStart, nEnd );
+    Invalidate( GetRectangle( 0, nInvStart, GetOutputSizeLevel() - 1, nInvEnd ) );
+    Update();
 
     // if focus becomes invisible, move it to next visible button
-    if ( !IsButtonVisible( mnFocusLevel, mnFocusEntry ) )
-        ImplMoveFocusByEntry( nDiff < 0 );
+    ImplMoveFocusToVisible( nDiff < 0 );
 
     mbDontDrawFocus = false;
     ShowFocus();
@@ -206,7 +208,7 @@ void ScOutlineWindow::InitSettings()
     const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
     SetBackground( rStyleSettings.GetFaceColor() );
     maLineColor = rStyleSettings.GetButtonTextColor();
-    mpSymbols = ScGlobal::GetOutlineSymbols( GetBackground().GetColor().IsDark() );
+    mpSymbols = ScGlobal::GetOutlineSymbols( !!GetBackground().GetColor().IsDark() );
     Invalidate();
 }
 
@@ -310,12 +312,12 @@ sal_Int32 ScOutlineWindow::GetColRowPos( sal_uInt16 nColRowIndex ) const
     sal_Int32 nDocPos = mbHoriz ?
         mrViewData.GetScrPos( nColRowIndex, 0, meWhich, TRUE ).X() :
         mrViewData.GetScrPos( 0, nColRowIndex, meWhich, TRUE ).Y();
-    return mnHeaderSize + nDocPos;
+    return mnMainFirstPos + nDocPos;
 }
 
 sal_Int32 ScOutlineWindow::GetHeaderEntryPos() const
 {
-    return (mnHeaderSize - SC_OL_BITMAPSIZE) / 2;
+    return mnHeaderPos + (mnHeaderSize - SC_OL_BITMAPSIZE) / 2;
 }
 
 bool ScOutlineWindow::GetEntryPos(
@@ -360,8 +362,8 @@ bool ScOutlineWindow::GetEntryPos(
     }
 
     // restrict rnStartPos...rnEndPos to valid area
-    rnStartPos = Max( rnStartPos, mnHeaderSize );
-    rnEndPos = Max( rnEndPos, mnHeaderSize );
+    rnStartPos = Max( rnStartPos, mnMainFirstPos );
+    rnEndPos = Max( rnEndPos, mnMainFirstPos );
 
     // --- all rows filtered? ---
 
@@ -397,7 +399,7 @@ bool ScOutlineWindow::IsButtonVisible( sal_uInt16 nLevel, sal_uInt16 nEntry ) co
 {
     bool bRet = false;
     if ( nEntry == SC_OL_HEADERENTRY )
-        bRet = (nLevel < GetLevelCount());
+        bRet = (mnHeaderSize > 0) && (nLevel < GetLevelCount());
     else
     {
         const ScOutlineEntry* pEntry = GetOutlineEntry( nLevel, nEntry );
@@ -529,7 +531,8 @@ void ScOutlineWindow::DoCollapse( sal_uInt16 nLevel, sal_uInt16 nEntry ) const
 void ScOutlineWindow::Resize()
 {
     Window::Resize();
-    if ( !IsButtonVisible( mnFocusLevel, mnFocusEntry ) )
+    SetHeaderSize( mnHeaderSize );  // recalculates header/group positions
+    if ( !IsFocusButtonVisible() )
     {
         HideFocus();
         ShowFocus();    // calculates valid position
@@ -552,7 +555,9 @@ void ScOutlineWindow::DataChanged( const DataChangedEvent& rDCEvt )
 
 void ScOutlineWindow::SetEntryAreaClipRegion()
 {
-    SetClipRegion( Rectangle( GetPoint( 0, mnHeaderSize ), GetOutputSizePixel() ) );
+    SetClipRegion( Rectangle(
+        GetPoint( 0, mnMainFirstPos ),
+        GetPoint( GetOutputSizeLevel() - 1, mnMainLastPos ) ) );
 }
 
 void ScOutlineWindow::DrawLineRel(
@@ -602,20 +607,22 @@ void ScOutlineWindow::ShowFocus()
     if ( HasFocus() )
     {
         // first move to a visible position
-        if ( !IsButtonVisible( mnFocusLevel, mnFocusEntry ) )
-            ImplMoveFocusByEntry( true );
+        ImplMoveFocusToVisible( true );
 
-        Point aPos;
-        if ( GetImagePos( mnFocusLevel, mnFocusEntry, aPos ) )
+        if ( IsFocusButtonVisible() )
         {
-            aPos += Point( 1, 1 );
-            maFocusRect = Rectangle( aPos, Size( SC_OL_BITMAPSIZE - 2, SC_OL_BITMAPSIZE - 2 ) );
-            bool bClip = (mnFocusEntry != SC_OL_HEADERENTRY);
-            if ( bClip )
-                SetEntryAreaClipRegion();
-            InvertTracking( maFocusRect, SHOWTRACK_SMALL | SHOWTRACK_WINDOW );
-            if ( bClip )
-                SetClipRegion();
+            Point aPos;
+            if ( GetImagePos( mnFocusLevel, mnFocusEntry, aPos ) )
+            {
+                aPos += Point( 1, 1 );
+                maFocusRect = Rectangle( aPos, Size( SC_OL_BITMAPSIZE - 2, SC_OL_BITMAPSIZE - 2 ) );
+                bool bClip = (mnFocusEntry != SC_OL_HEADERENTRY);
+                if ( bClip )
+                    SetEntryAreaClipRegion();
+                InvertTracking( maFocusRect, SHOWTRACK_SMALL | SHOWTRACK_WINDOW );
+                if ( bClip )
+                    SetClipRegion();
+            }
         }
     }
 }
@@ -657,7 +664,8 @@ void ScOutlineWindow::Paint( const Rectangle& rRect )
             DrawImageRel( GetLevelPos( nLevel ), nEntryPos, nLevel + 1 );
 
         SetLineColor( maLineColor );
-        DrawLineRel( 0, mnHeaderSize - 1, nLevelEnd, mnHeaderSize - 1 );
+        sal_Int32 nLinePos = mnHeaderPos + (mbMirrorHdr ? 0 : (mnHeaderSize - 1));
+        DrawLineRel( 0, nLinePos, nLevelEnd, nLinePos );
     }
 
     // --- draw lines & collapse/expand images ---
@@ -763,7 +771,12 @@ bool lcl_RotateValue( sal_uInt16& rnValue, sal_uInt16 nMin, sal_uInt16 nMax, boo
     return bWrap;
 }
 
-bool ScOutlineWindow::ImplMoveFocusByEntry( bool bForward )
+bool ScOutlineWindow::IsFocusButtonVisible() const
+{
+    return IsButtonVisible( mnFocusLevel, mnFocusEntry );
+}
+
+bool ScOutlineWindow::ImplMoveFocusByEntry( bool bForward, bool bFindVisible )
 {
     const ScOutlineArray* pArray = GetOutlineArray();
     if ( !pArray )
@@ -771,24 +784,31 @@ bool ScOutlineWindow::ImplMoveFocusByEntry( bool bForward )
 
     bool bWrapped = false;
     sal_uInt16 nEntryCount = pArray->GetCount( mnFocusLevel );
+    sal_uInt16 nOldEntry = mnFocusEntry;
 
     do
     {
         if ( mnFocusEntry == SC_OL_HEADERENTRY )
         {
+            // move from header to first or last entry
             if ( nEntryCount > 0 )
-                mnFocusEntry = bForward ? 0 : nEntryCount - 1;
-            if ( !nEntryCount || !bForward )
+                mnFocusEntry = bForward ? 0 : (nEntryCount - 1);
+            /*  wrapped, if forward from right header to first entry,
+                or if backward from left header to last entry */
+            if ( !nEntryCount || (bForward == mbMirrorHdr) )
                 bWrapped = true;
         }
         else if ( lcl_RotateValue( mnFocusEntry, 0, nEntryCount - 1, bForward ) )
         {
+            // lcl_RotateValue returns true -> wrapped the entry range -> move to header
             mnFocusEntry = SC_OL_HEADERENTRY;
-            if ( bForward )
+            /*  wrapped, if forward from last entry to left header,
+                or if backward from first entry to right header */
+            if ( bForward != mbMirrorHdr )
                 bWrapped = true;
         }
     }
-    while ( !IsButtonVisible( mnFocusLevel, mnFocusEntry ) );
+    while ( bFindVisible && !IsFocusButtonVisible() && (nOldEntry != mnFocusEntry) );
 
     return bWrapped;
 }
@@ -822,13 +842,13 @@ bool ScOutlineWindow::ImplMoveFocusByLevel( bool bForward )
             {
                 // next level -> find first child entry
                 nNewLevel = mnFocusLevel + 1;
-                bFound = pArray->GetEntryIndexInRange( nNewLevel, nStart, nEnd, nNewEntry );
+                bFound = !!pArray->GetEntryIndexInRange( nNewLevel, nStart, nEnd, nNewEntry );
             }
             else if ( !bForward && (mnFocusLevel > 0) )
             {
                 // previous level -> find parent entry
                 nNewLevel = mnFocusLevel - 1;
-                bFound = pArray->GetEntryIndex( nNewLevel, nStart, nNewEntry );
+                bFound = !!pArray->GetEntryIndex( nNewLevel, nStart, nNewEntry );
             }
 
             if ( bFound && IsButtonVisible( nNewLevel, nNewEntry ) )
@@ -842,10 +862,45 @@ bool ScOutlineWindow::ImplMoveFocusByLevel( bool bForward )
     return bWrapped;
 }
 
+bool ScOutlineWindow::ImplMoveFocusByTabOrder( bool bForward, bool bFindVisible )
+{
+    bool bRet = false;
+    sal_uInt16 nOldLevel = mnFocusLevel;
+    sal_uInt16 nOldEntry = mnFocusEntry;
+
+    do
+    {
+        /*  one level up, if backward from left header,
+            or one level down, if forward from right header */
+        if ( (bForward == mbMirrorHdr) && (mnFocusEntry == SC_OL_HEADERENTRY) )
+            bRet |= ImplMoveFocusByLevel( bForward );
+        // move to next/previous entry
+        bool bWrapInLevel = ImplMoveFocusByEntry( bForward, false );
+        bRet |= bWrapInLevel;
+        /*  one level up, if wrapped backward to right header,
+            or one level down, if wrapped forward to right header */
+        if ( (bForward != mbMirrorHdr) && bWrapInLevel )
+            bRet |= ImplMoveFocusByLevel( bForward );
+    }
+    while ( bFindVisible && !IsFocusButtonVisible() && ((nOldLevel != mnFocusLevel) || (nOldEntry != mnFocusEntry)) );
+
+    return bRet;
+}
+
+void ScOutlineWindow::ImplMoveFocusToVisible( bool bForward )
+{
+    // first try to find an entry in the same level
+    if ( !IsFocusButtonVisible() )
+        ImplMoveFocusByEntry( bForward, true );
+    // then try to find any other entry
+    if ( !IsFocusButtonVisible() )
+        ImplMoveFocusByTabOrder( bForward, true );
+}
+
 void ScOutlineWindow::MoveFocusByEntry( bool bForward )
 {
     HideFocus();
-    ImplMoveFocusByEntry( bForward );
+    ImplMoveFocusByEntry( bForward, true );
     ShowFocus();
 }
 
@@ -859,13 +914,7 @@ void ScOutlineWindow::MoveFocusByLevel( bool bForward )
 void ScOutlineWindow::MoveFocusByTabOrder( bool bForward )
 {
     HideFocus();
-
-    if ( !bForward && (mnFocusEntry == SC_OL_HEADERENTRY) )
-        ImplMoveFocusByLevel( false );
-    bool bWrap = ImplMoveFocusByEntry( bForward );
-    if ( bForward && bWrap )
-        ImplMoveFocusByLevel( true );
-
+    ImplMoveFocusByTabOrder( bForward, true );
     ShowFocus();
 }
 
@@ -964,6 +1013,10 @@ void ScOutlineWindow::KeyInput( const KeyEvent& rKEvt )
     bool bUpDownKey = (nCode == KEY_UP) || (nCode == KEY_DOWN);
     bool bLeftRightKey = (nCode == KEY_LEFT) || (nCode == KEY_RIGHT);
 
+    // revert wrong cursor direction (left/right) in RTL windows
+    if( bLeftRightKey && mbAppRTL && IsRTLEnabled() )
+        nCode = (nCode == KEY_LEFT) ? KEY_RIGHT : KEY_LEFT;
+
     // TAB key
     if ( (nCode == KEY_TAB) && (bNoMod || bShift) )
         // move forward without SHIFT key
diff --git a/sc/source/ui/view/olkact.cxx b/sc/source/ui/view/olkact.cxx
index 6e73a499b392..f5d77e872607 100644
--- a/sc/source/ui/view/olkact.cxx
+++ b/sc/source/ui/view/olkact.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: olkact.cxx,v $
  *
- *  $Revision: 1.3 $
+ *  $Revision: 1.4 $
  *
- *  last change: $Author: mh $ $Date: 2002-01-16 11:26:47 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:47 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -65,9 +65,233 @@
 
 #pragma hdrstop
 
+//------------------------------------------------------------------
+
+#define _BIGINT_HXX
+#define _CACHESTR_HXX
+#define _CONFIG_HXX
+#define _CURSOR_HXX
+#define _CTRLTOOL_HXX
+#define _DLGCFG_HXX
+#define _DYNARR_HXX
+#define _EXTATTR_HXX
+#define _FILDLG_HXX
+#define _FONTDLG_HXX
+#define _FRM3D_HXX
+#define _INTRO_HXX
+#define _ISETBWR_HXX
+#define _NO_SVRTF_PARSER_HXX
+#define _MACRODLG_HXX
+#define _MODALDLG_HXX
+#define _MOREBUTTON_HXX
+#define _OUTLINER_HXX
+#define _PASSWD_HXX
+#define _PRNDLG_HXX
+//#define _POLY_HXX
+#define _PVRWIN_HXX
+#define _QUEUE_HXX
+#define _RULER_HXX
+#define _SCRWIN_HXX
+#define _SETBRW_HXX
+#define _STACK_HXX
+//#define _STATUS_HXX ***
+#define _STDMENU_HXX
+#define _TABBAR_HXX
+//#define _VCBRW_HXX
+#define _VCTRLS_HXX
+//#define _VCSBX_HXX
+#define _VCONT_HXX
+#define _VDRWOBJ_HXX
+
+
+//sfx
+#define _SFXAPPWIN_HXX
+#define _SFXCTRLITEM
+#define _SFXDISPATCH_HXX
+#define _SFXFILEDLG_HXX
+#define _SFXIMGMGR_HXX
+#define _SFXIPFRM_HXX
+#define _SFX_MACRO_HXX
+#define _SFXMULTISEL_HXX
+#define _SFX_MINFITEM_HXX
+
+
+//sfxcore.hxx
+//#define _SFXINIMGR_HXX ***
+//#define _SFXCFGITEM_HXX
+//#define _SFX_PRINTER_HXX
+#define _SFXGENLINK_HXX
+#define _SFXHINTPOST_HXX
+#define _SFXDOCINF_HXX
+#define _SFXLINKHDL_HXX
+//#define _SFX_PROGRESS_HXX
+
+//sfxsh.hxx
+//#define _SFX_SHELL_HXX
+//#define _SFXAPP_HXX
+//#define _SFXDISPATCH_HXX
+//#define _SFXMSG_HXX ***
+//#define _SFXOBJFACE_HXX ***
+//#define _SFXREQUEST_HXX
+#define _SFXMACRO_HXX
+
+// SFX
+//#define _SFXAPPWIN_HXX ***
+#define _SFX_SAVEOPT_HXX
+//#define _SFX_CHILDWIN_HXX
+//#define _SFXCTRLITEM_HXX
+#define _SFXPRNMON_HXX
+#define _INTRO_HXX
+#define _SFXMSGDESCR_HXX
+#define _SFXMSGPOOL_HXX
+#define _SFXFILEDLG_HXX
+#define _PASSWD_HXX
+#define _SFXTBXCTRL_HXX
+#define _SFXSTBITEM_HXX
+#define _SFXMNUITEM_HXX
+#define _SFXIMGMGR_HXX
+#define _SFXTBXMGR_HXX
+#define _SFXSTBMGR_HXX
+#define _SFX_MINFITEM_HXX
+#define _SFXEVENT_HXX
+
+//sfxdoc.hxx
+//#define _SFX_OBJSH_HXX
+//#define _SFX_CLIENTSH_HXX
+//#define _SFXDOCINF_HXX
+//#define _SFX_OBJFAC_HXX
+#define _SFX_DOCFILT_HXX
+//#define _SFXDOCFILE_HXX ***
+//define _VIEWFAC_HXX
+//#define _SFXVIEWFRM_HXX
+//#define _SFXVIEWSH_HXX
+//#define _MDIFRM_HXX ***
+#define _SFX_IPFRM_HXX
+//#define _SFX_INTERNO_HXX
+
+//sfxdlg.hxx
+//#define _SFXTABDLG_HXX
+//#define _BASEDLGS_HXX ***
+#define _SFX_DINFDLG_HXX
+#define _SFXDINFEDT_HXX
+#define _SFX_MGETEMPL_HXX
+#define _SFX_TPLPITEM_HXX
+//#define _SFX_STYLEDLG_HXX
+#define _NEWSTYLE_HXX
+//#define _SFXDOCTEMPL_HXX ***
+//#define _SFXDOCTDLG_HXX ***
+//#define _SFX_TEMPLDLG_HXX ***
+//#define _SFXNEW_HXX ***
+#define _SFXDOCMAN_HXX
+//#define _SFXDOCKWIN_HXX
+
+//sfxitems.hxx
+#define _SFX_WHMAP_HXX
+#define _ARGS_HXX
+//#define _SFXPOOLITEM_HXX
+//#define _SFXINTITEM_HXX
+//#define _SFXENUMITEM_HXX
+#define _SFXFLAGITEM_HXX
+//#define _SFXSTRITEM_HXX
+#define _SFXPTITEM_HXX
+#define _SFXRECTITEM_HXX
+//#define _SFXITEMPOOL_HXX
+//#define _SFXITEMSET_HXX
+#define _SFXITEMITER_HXX
+#define _SFX_WHITER_HXX
+#define _SFXPOOLCACH_HXX
+//#define _AEITEM_HXX
+#define _SFXRNGITEM_HXX
+//#define _SFXSLSTITM_HXX
+//#define _SFXSTYLE_HXX
+
+//xout.hxx
+//#define _XENUM_HXX
+//#define _XPOLY_HXX
+//#define _XATTR_HXX
+//#define _XOUTX_HXX
+//#define _XPOOL_HXX
+//#define _XTABLE_HXX
+
+//svdraw.hxx
+#define _SDR_NOITEMS
+#define _SDR_NOTOUCH
+#define _SDR_NOTRANSFORM
+//#define _SDR_NOOBJECTS
+//#define _SDR_NOVIEWS
+
+
+
+
+#define _SFXBASIC_HXX
+#define _SFX_DOCFILE_HXX
+#define _SFX_DOCFILT_HXX
+#define _SFX_DOCINF_HXX
+#define _SFX_DOCSH_HXX
+#define _SFX_TEMPLDLG_HXX
+#define _SFXSTBMGR_HXX
+#define _SFXTBXMGR_HXX
+#define _SFXIMGMGR_HXX
+#define _SFXMNUITEM_HXX
+#define _SFXMNUMGR_HXX
+#define _SFXSTBITEM_HXX
+#define _SFXTBXCTRL_HXX
+#define _SFXFILEDLG_HXX
+#define _SFXREQUEST_HXX
+#define _SFXOBJFACE_HXX
+#define _SFXMSGPOOL_HXX
+#define _SFXMSGDESCR_HXX
+#define _SFXMSG_HXX
+#define _SFX_PRNMON_HXX
+
+//si
+#define _SI_NOSBXCONTROLS
+#define _SI_NOCONTROL
+//#define SI_NOITEMS
+//#define SI_NODRW
+//#define SI_NOOTHERFORMS
+#define _SIDLL_HXX
+//#define _VCSBX_HXX
+//#define _VCBRW_HXX
+
+//#define _SVDATTR_HXX      <--- der wars
+#define _SVDXOUT_HXX
+#define _SVDEC_HXX
+//#define _SVDIO_HXX
+//#define _SVDLAYER_HXX
+//#define _SVDRAG_HXX
+#define _SVINCVW_HXX
+#define _SV_MULTISEL_HXX
+#define _SVRTV_HXX
+#define _SVTABBX_HXX
+
+#define _SVX_DAILDLL_HXX
+#define _SVX_HYPHEN_HXX
+#define _SVX_IMPGRF_HXX
+#define _SVX_OPTITEMS_HXX
+#define _SVX_OPTGERL_HXX
+#define _SVX_OPTSAVE_HXX
+#define _SVX_OPTSPELL_HXX
+#define _SVX_OPTPATH_HXX
+#define _SVX_OPTLINGU_HXX
+#define _SVX_RULER_HXX
+#define _SVX_RULRITEM_HXX
+#define _SVX_SPLWRAP_HXX
+#define _SVX_SPLDLG_HXX
+#define _SVX_THESDLG_HXX
+
 // INCLUDE ---------------------------------------------------------------
 
-class ScViewData;
+#include 
+#include 
+
+#include "document.hxx"
+#include "viewdata.hxx"
+#include "drawview.hxx"
+#include "drawpage.hxx"
+#include "drwlayer.hxx"
+
+// STATIC DATA -----------------------------------------------------------
 
 // -----------------------------------------------------------------------
 
@@ -87,3 +311,7 @@ void DeActivateOlk( ScViewData* pViewData )
     //  GetSbxForm gibt's nicht mehr, muss auch nichts mehr angemeldet werden
 }
 
+
+
+
+
diff --git a/sc/source/ui/view/output.cxx b/sc/source/ui/view/output.cxx
index bf64d653dfc7..0de323ea8b56 100644
--- a/sc/source/ui/view/output.cxx
+++ b/sc/source/ui/view/output.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: output.cxx,v $
  *
- *  $Revision: 1.17 $
+ *  $Revision: 1.18 $
  *
- *  last change: $Author: nn $ $Date: 2002-12-10 17:24:58 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:48 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -70,7 +70,7 @@
 #include "scitems.hxx"
 #include 
 #include 
-#include 
+#include 
 #include 
 #include 
 #include 
@@ -255,6 +255,7 @@ ScOutputData::ScOutputData( OutputDevice* pNewDev, ScOutputType eNewType,
         nScrH += pRowInfo[nArrY].nHeight;
 
     bTabProtected = pDoc->IsTabProtected( nTab );
+    nTabTextDirection = pDoc->GetEditTextDirection( nTab );
 }
 
 ScOutputData::~ScOutputData()
@@ -351,9 +352,9 @@ void ScOutputData::DrawGrid( BOOL bGrid, BOOL bPage )
 
     if ( eType == OUTTYPE_WINDOW )
     {
-        const svx::ColorConfig& rColorCfg = SC_MOD()->GetColorConfig();
-        aPageColor.SetColor( rColorCfg.GetColorValue(svx::CALCPAGEBREAKAUTOMATIC).nColor );
-        aManualColor.SetColor( rColorCfg.GetColorValue(svx::CALCPAGEBREAKMANUAL).nColor );
+        const svtools::ColorConfig& rColorCfg = SC_MOD()->GetColorConfig();
+        aPageColor.SetColor( rColorCfg.GetColorValue(svtools::CALCPAGEBREAKAUTOMATIC).nColor );
+        aManualColor.SetColor( rColorCfg.GetColorValue(svtools::CALCPAGEBREAKMANUAL).nColor );
     }
     else
     {
@@ -795,7 +796,7 @@ void ScOutputData::DrawBackground()
     ScModule* pScMod = SC_MOD();
 
     // used only if bSolidBackground is set (only for ScGridWindow):
-    Color aBgColor( pScMod->GetColorConfig().GetColorValue(svx::DOCCOLOR).nColor );
+    Color aBgColor( pScMod->GetColorConfig().GetColorValue(svtools::DOCCOLOR).nColor );
 
     Rectangle aRect;
     Size aOnePixel = pDev->PixelToLogic(Size(1,1));
@@ -929,7 +930,7 @@ void ScOutputData::DrawShadow()
     BOOL bCellContrast = bUseStyleColor && rStyleSettings.GetHighContrastMode();
     Color aAutoTextColor;
     if ( bCellContrast )
-        aAutoTextColor.SetColor( SC_MOD()->GetColorConfig().GetColorValue(svx::FONTCOLOR).nColor );
+        aAutoTextColor.SetColor( SC_MOD()->GetColorConfig().GetColorValue(svtools::FONTCOLOR).nColor );
 
     long nPosY = nScrY;
     for (USHORT nArrY=1; nArrY+1GetColorConfig().GetColorValue(svx::FONTCOLOR).nColor );
+        aAutoTextColor.SetColor( SC_MOD()->GetColorConfig().GetColorValue(svtools::FONTCOLOR).nColor );
 
     long nPosY = nScrY - pRowInfo[0].nHeight;
     for (USHORT nArrY=0; nArrYGetColorConfig().GetColorValue(svx::DOCCOLOR).nColor );
+    Color aBgColor( SC_MOD()->GetColorConfig().GetColorValue(svtools::DOCCOLOR).nColor );
 
     if (bMetaFile)
         nOneX = nOneY = 0;
@@ -1292,8 +1293,45 @@ inline void FinishOldRect( OutputDevice* pDev, Rectangle& rOldRect, BOOL& rOldVa
 
 void ScOutputData::DrawFrame()
 {
+    ULONG nOldDrawMode = pDev->GetDrawMode();
+
+    Color aSingleColor;
+    BOOL bUseSingleColor = FALSE;
+    const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings();
+    //  #105733# SvtAccessibilityOptions::GetIsForBorders is no longer used (always assumed TRUE)
+    BOOL bCellContrast = bUseStyleColor && rStyleSettings.GetHighContrastMode();
+
+    //  #107519# if a Calc OLE object is embedded in Draw/Impress, the VCL DrawMode is used
+    //  for display mode / B&W printing. The VCL DrawMode handling doesn't work for lines
+    //  that are drawn with DrawRect, so if the line/background bits are set, the DrawMode
+    //  must be reset and the border colors handled here.
+    //  (Similar to fix for #72796# in SdrObject::ImpDrawLineGeometry)
+
+    if ( ( nOldDrawMode & DRAWMODE_WHITEFILL ) && ( nOldDrawMode & DRAWMODE_BLACKLINE ) )
+    {
+        pDev->SetDrawMode( nOldDrawMode & (~DRAWMODE_WHITEFILL) );
+        aSingleColor.SetColor( COL_BLACK );
+        bUseSingleColor = TRUE;
+    }
+    else if ( ( nOldDrawMode & DRAWMODE_SETTINGSFILL ) && ( nOldDrawMode & DRAWMODE_SETTINGSLINE ) )
+    {
+        pDev->SetDrawMode( nOldDrawMode & (~DRAWMODE_SETTINGSFILL) );
+        aSingleColor = rStyleSettings.GetWindowTextColor();     // same as used in VCL for DRAWMODE_SETTINGSLINE
+        bUseSingleColor = TRUE;
+    }
+    else if ( bCellContrast )
+    {
+        aSingleColor.SetColor( SC_MOD()->GetColorConfig().GetColorValue(svtools::FONTCOLOR).nColor );
+        bUseSingleColor = TRUE;
+    }
+
     if (bAnyRotated)
-        DrawRotatedFrame();     // loescht die Linien, die hier weggelassen werden muessen
+    {
+        const Color* pForceColor = NULL;
+        if ( bUseSingleColor )
+            pForceColor = &aSingleColor;
+        DrawRotatedFrame( pForceColor );        // removes the lines that must not be painted here
+    }
 
     USHORT nArrY;
     USHORT nArrX;
@@ -1345,13 +1383,6 @@ void ScOutputData::DrawFrame()
     BOOL bOldValid2 = FALSE;                            // zweite Linien
     Rectangle aOldRect2;
 
-    const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings();
-    //  #105733# SvtAccessibilityOptions::GetIsForBorders is no longer used (always assumed TRUE)
-    BOOL bCellContrast = bUseStyleColor && rStyleSettings.GetHighContrastMode();
-    Color aAutoTextColor;
-    if ( bCellContrast )
-        aAutoTextColor.SetColor( SC_MOD()->GetColorConfig().GetColorValue(svx::FONTCOLOR).nColor );
-
     pDev->SetLineColor();
     pDev->SetFillColor( aOldCol );
 
@@ -1397,8 +1428,8 @@ void ScOutputData::DrawFrame()
                         if ( pDrawLine != pOldLine )
                         {
                             Color aColor( pDrawLine->GetColor() );
-                            if ( bCellContrast )
-                                aColor = aAutoTextColor;
+                            if ( bUseSingleColor )
+                                aColor = aSingleColor;
                             if ( aColor != aOldCol )
                             {
                                 FinishOldRect( pDev, aOldRect, bOldValid );
@@ -1533,8 +1564,8 @@ void ScOutputData::DrawFrame()
                         if ( pDrawLine != pOldLine )
                         {
                             Color aColor( pDrawLine->GetColor() );
-                            if ( bCellContrast )
-                                aColor = aAutoTextColor;
+                            if ( bUseSingleColor )
+                                aColor = aSingleColor;
                             if ( aColor != aOldCol )
                             {
                                 FinishOldRect( pDev, aOldRect, bOldValid );
@@ -1645,6 +1676,8 @@ void ScOutputData::DrawFrame()
 
     FinishOldRect( pDev, aOldRect, bOldValid );
     FinishOldRect( pDev, aOldRect2, bOldValid2 );
+
+    pDev->SetDrawMode(nOldDrawMode);
 }
 
 //  -------------------------------------------------------------------------
@@ -1874,7 +1907,7 @@ void lcl_VertLine( OutputDevice* pDev, const Point& rTop, const Point& rBottom,
     }
 }
 
-void ScOutputData::DrawRotatedFrame()
+void ScOutputData::DrawRotatedFrame( const Color* pForceColor )
 {
     //! nRotMax speichern
     USHORT nRotMax = nX2;
@@ -1891,13 +1924,7 @@ void ScOutputData::DrawRotatedFrame()
     //  #105733# SvtAccessibilityOptions::GetIsForBorders is no longer used (always assumed TRUE)
     BOOL bCellContrast = bUseStyleColor && rStyleSettings.GetHighContrastMode();
 
-    Color aAutoTextColor;
-    const Color* pForceColor = NULL;
-    if ( bCellContrast )
-    {
-        aAutoTextColor.SetColor( SC_MOD()->GetColorConfig().GetColorValue(svx::FONTCOLOR).nColor );
-        pForceColor = &aAutoTextColor;
-    }
+    //  color (pForceColor) is determined externally, including DrawMode changes
 
     Rectangle aClipRect( Point(nScrX, nScrY), Size(nScrW, nScrH) );
     if (bMetaFile)
@@ -2613,7 +2640,7 @@ void ScOutputData::DrawNoteMarks()
 
                         const StyleSettings& rStyleSettings = Application::GetSettings().GetStyleSettings();
                         if ( bUseStyleColor && rStyleSettings.GetHighContrastMode() )
-                            pDev->SetFillColor( SC_MOD()->GetColorConfig().GetColorValue(svx::FONTCOLOR).nColor );
+                            pDev->SetFillColor( SC_MOD()->GetColorConfig().GetColorValue(svtools::FONTCOLOR).nColor );
                         else
                             pDev->SetFillColor(COL_LIGHTRED);
 
@@ -2714,7 +2741,7 @@ void ScOutputData::DrawClipMarks()
         //  use DrawMode to change the arrow's outline color
         pDev->SetDrawMode( nOldDrawMode | DRAWMODE_SETTINGSLINE );
         //  use text color also for the fill color
-        aArrowFillCol.SetColor( SC_MOD()->GetColorConfig().GetColorValue(svx::FONTCOLOR).nColor );
+        aArrowFillCol.SetColor( SC_MOD()->GetColorConfig().GetColorValue(svtools::FONTCOLOR).nColor );
     }
 
     Rectangle aCellRect;
diff --git a/sc/source/ui/view/output2.cxx b/sc/source/ui/view/output2.cxx
index cba64cb1ef11..7c83cf83b261 100644
--- a/sc/source/ui/view/output2.cxx
+++ b/sc/source/ui/view/output2.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: output2.cxx,v $
  *
- *  $Revision: 1.34 $
+ *  $Revision: 1.35 $
  *
- *  last change: $Author: nn $ $Date: 2002-12-10 17:24:59 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:48 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -75,12 +75,13 @@
 #include 
 #include 
 #include 
-#include 
+#include 
 #include 
 #include 
 #include 
 #include 
 #include 
+#include 
 #include 
 #include 
 #include 
@@ -178,6 +179,8 @@ public:
 
     BOOL    HasCondHeight() const   { return pCondSet && SFX_ITEM_SET ==
                                         pCondSet->GetItemState( ATTR_FONT_HEIGHT, TRUE ); }
+
+    BOOL    IsRightToLeftAttr() const;
 };
 
 //==================================================================
@@ -205,9 +208,9 @@ ScDrawStringsVars::ScDrawStringsVars(ScOutputData* pData, BOOL bPTL) :
     bCellContrast = pOutput->bUseStyleColor &&
             Application::GetSettings().GetStyleSettings().GetHighContrastMode();
 
-    const svx::ColorConfig& rColorConfig = pScMod->GetColorConfig();
-    aBackConfigColor.SetColor( rColorConfig.GetColorValue(svx::DOCCOLOR).nColor );
-    aTextConfigColor.SetColor( rColorConfig.GetColorValue(svx::FONTCOLOR).nColor );
+    const svtools::ColorConfig& rColorConfig = pScMod->GetColorConfig();
+    aBackConfigColor.SetColor( rColorConfig.GetColorValue(svtools::DOCCOLOR).nColor );
+    aTextConfigColor.SetColor( rColorConfig.GetColorValue(svtools::FONTCOLOR).nColor );
 }
 
 ScDrawStringsVars::~ScDrawStringsVars()
@@ -535,6 +538,14 @@ void ScDrawStringsVars::SetHashText()
     pLastCell = NULL;       // derselbe Text kann in der naechsten Zelle wieder passen
 }
 
+BOOL ScDrawStringsVars::IsRightToLeftAttr() const
+{
+    SvxFrameDirection eCellDir = (SvxFrameDirection)((const SvxFrameDirectionItem&)
+                                    pPattern->GetItem( ATTR_WRITINGDIR, pCondSet )).GetValue();
+    return ( eCellDir == FRMDIR_HORI_RIGHT_TOP ||
+            ( eCellDir == FRMDIR_ENVIRONMENT && pOutput->nTabTextDirection == EE_HTEXTDIR_R2L ) );
+}
+
 //==================================================================
 
 double ScOutputData::GetStretch()
@@ -864,6 +875,59 @@ void ScOutputData::GetVisibleCell( USHORT nCol, USHORT nRow, USHORT nTab, ScBase
         rpCell = NULL;
 }
 
+BOOL ScOutputData::IsAvailable( USHORT nX, USHORT nY )
+{
+    //  apply the same logic here as in DrawStrings/DrawEdit:
+    //  Stop at non-empty or merged or overlapped cell,
+    //  where a note is empty as well as a cell that's hidden by protection settings
+
+    const ScBaseCell* pCell = pDoc->GetCell( ScAddress( nX, nY, nTab ) );
+    if ( pCell && pCell->GetCellType() != CELLTYPE_NOTE && !IsEmptyCellText( NULL, nX, nY ) )
+    {
+        return FALSE;
+    }
+
+    const ScPatternAttr* pPattern = pDoc->GetPattern( nX, nY, nTab );
+    if ( ((const ScMergeAttr&)pPattern->GetItem(ATTR_MERGE)).IsMerged() ||
+         ((const ScMergeFlagAttr&)pPattern->GetItem(ATTR_MERGE_FLAG)).IsOverlapped() )
+    {
+        return FALSE;
+    }
+
+    return TRUE;
+}
+
+long ScOutputData::GetAvailableWidth( USHORT nX, USHORT nY, long nNeeded )
+{
+    //  get the pixel width that's available for the cell's text,
+    //  including cells outside of the current screen area
+
+    long nAvailable = (long) ( pDoc->GetColWidth( nX, nTab ) * nPPTX );     // cell itself
+
+    const ScMergeAttr* pMerge = (const ScMergeAttr*)pDoc->GetAttr( nX, nY, nTab, ATTR_MERGE );
+    if ( pMerge->IsMerged() )
+    {
+        //  for merged cells, allow only the merged area
+        USHORT nCount = pMerge->GetColMerge();
+        for (USHORT nAdd=1; nAddGetColWidth( nX + nAdd, nTab ) * nPPTX );
+    }
+    else
+    {
+        //  look for empty cells into which the text can be extended
+        while ( nAvailable < nNeeded && nX < MAXCOL && IsAvailable( nX+1, nY ) )
+        {
+            ++nX;
+            nAvailable += (long) ( pDoc->GetColWidth( nX, nTab ) * nPPTX );
+        }
+    }
+
+    if ( bMarkClipped && nAvailable < nNeeded )
+        nAvailable -= (long)( SC_CLIPMARK_SIZE * nPPTX );
+
+    return nAvailable;
+}
+
 void ScOutputData::DrawStrings( BOOL bPixelToLogic )
 {
     DBG_ASSERT( pDev == pRefDevice ||
@@ -909,6 +973,9 @@ void ScOutputData::DrawStrings( BOOL bPixelToLogic )
                 CellInfo*   pInfo = &pThisRowInfo->pCellInfo[nX+1];
                 BOOL bEmpty = pInfo->bEmptyCellText;
 
+                USHORT nCellX = nX;                 // position where the cell really starts
+                USHORT nCellY = nY;
+
                 //
                 //  Teil von zusammengefasster Zelle ?
                 //
@@ -968,6 +1035,8 @@ void ScOutputData::DrawStrings( BOOL bPixelToLogic )
                                 nOutHeight = (long) (pDoc->GetRowHeight( nOverY, nTab ) * nPPTY);
 
                                 bMergeOver = TRUE;
+                                nCellX = nOverX;
+                                nCellY = nOverY;
                             }
                             else                            // Edit-Zelle
                             {
@@ -1056,6 +1125,8 @@ void ScOutputData::DrawStrings( BOOL bPixelToLogic )
                                         {
                                             bLeftOver = TRUE;
                                         }
+
+                                        nCellX = nTempX;
                                     }
                                 }
                             }
@@ -1091,7 +1162,7 @@ void ScOutputData::DrawStrings( BOOL bPixelToLogic )
                     Color aFontColor = ((const SvxColorItem&)pInfo->pPatternAttr->
                                             GetItem( ATTR_FONT_COLOR )).GetValue();
                     if ( ( aFontColor == COL_AUTO || bForceAutoColor ) && bUseStyleColor )
-                        aFontColor.SetColor( SC_MOD()->GetColorConfig().GetColorValue(svx::FONTCOLOR).nColor );
+                        aFontColor.SetColor( SC_MOD()->GetColorConfig().GetColorValue(svtools::FONTCOLOR).nColor );
                     pDev->DrawPixel( aPos, aFontColor );
                     bEmpty = TRUE;
                 }
@@ -1593,6 +1664,20 @@ void ScOutputData::DrawStrings( BOOL bPixelToLogic )
                         nJustPosY++;    // Passt sonst nicht zur EditEngine
 #endif
 
+                        BOOL bMoveClipped = bHClip && aVars.IsRightToLeftAttr();
+                        if ( bMoveClipped )
+                        {
+                            //  #i9731# if long text is clipped, and the cell is formatted as rtl,
+                            //  move the start position so the right end is visible
+
+                            long nNeeded = aVars.GetTextSize().Width() +
+                                        (long) ( aVars.GetLeftTotal() * nPPTX ) +
+                                        (long) ( aVars.GetMargin()->GetRightMargin() * nPPTX );
+                            long nAvailable = GetAvailableWidth( nCellX, nCellY, nNeeded );
+                            if ( nAvailable < nNeeded )
+                                nJustPosX -= nNeeded - nAvailable;      // move the start position
+                        }
+
                         Point aDrawTextPos( nJustPosX, nJustPosY );
                         if ( bPixelToLogic )
                         {
@@ -1717,7 +1802,7 @@ void ScOutputData::DrawEdit(BOOL bPixelToLogic)
     SvNumberFormatter* pFormatter = pDoc->GetFormatTable();
 
     ScModule* pScMod = SC_MOD();
-    sal_Int32 nConfBackColor = pScMod->GetColorConfig().GetColorValue(svx::DOCCOLOR).nColor;
+    sal_Int32 nConfBackColor = pScMod->GetColorConfig().GetColorValue(svtools::DOCCOLOR).nColor;
     //  #105733# SvtAccessibilityOptions::GetIsForBorders is no longer used (always assumed TRUE)
     BOOL bCellContrast = bUseStyleColor &&
             Application::GetSettings().GetStyleSettings().GetHighContrastMode();
@@ -2567,6 +2652,35 @@ void ScOutputData::DrawEdit(BOOL bPixelToLogic)
                                     }
                                 }
 
+                                BOOL bMoveClipped = FALSE;
+                                if ( bExtend )
+                                {
+                                    SvxFrameDirection eCellDir = (SvxFrameDirection)((const SvxFrameDirectionItem&)
+                                            pPattern->GetItem( ATTR_WRITINGDIR, pCondSet )).GetValue();
+                                    bMoveClipped = ( eCellDir == FRMDIR_HORI_RIGHT_TOP ||
+                                        ( eCellDir == FRMDIR_ENVIRONMENT && nTabTextDirection == EE_HTEXTDIR_R2L ) );
+                                }
+                                if ( bMoveClipped )
+                                {
+                                    //  #i9731# if long text is clipped, and the cell is formatted as rtl,
+                                    //  move the start position so the right end is visible
+
+                                    long nNeeded = bPixelToLogic ?
+                                            pRefDevice->LogicToPixel(Size(nEngineWidth,0)).Width() :
+                                            nEngineWidth;
+                                    nNeeded += (long) ( (pMargin->GetLeftMargin() + nIndent) * nPPTX ) +
+                                               (long) ( pMargin->GetRightMargin() * nPPTX );
+
+                                    long nAvailable = GetAvailableWidth( nX, nY, nNeeded );
+                                    if ( nAvailable < nNeeded )
+                                    {
+                                        long nDiff = nNeeded - nAvailable;
+                                        aLogicStart.X() -= bPixelToLogic ?
+                                                pRefDevice->PixelToLogic(Size(nDiff,0)).Width() :
+                                                nDiff;
+                                    }
+                                }
+
                                 if ( bSimClip && !nOriVal && !bAsianVertical )
                                 {
                                     //  kein hartes Clipping, aber nur die betroffenen
@@ -2624,7 +2738,7 @@ void ScOutputData::DrawRotated(BOOL bPixelToLogic)
     SvNumberFormatter* pFormatter = pDoc->GetFormatTable();
 
     ScModule* pScMod = SC_MOD();
-    sal_Int32 nConfBackColor = pScMod->GetColorConfig().GetColorValue(svx::DOCCOLOR).nColor;
+    sal_Int32 nConfBackColor = pScMod->GetColorConfig().GetColorValue(svtools::DOCCOLOR).nColor;
     //  #105733# SvtAccessibilityOptions::GetIsForBorders is no longer used (always assumed TRUE)
     BOOL bCellContrast = bUseStyleColor &&
             Application::GetSettings().GetStyleSettings().GetHighContrastMode();
diff --git a/sc/source/ui/view/preview.cxx b/sc/source/ui/view/preview.cxx
index c6d51e4443d2..37dc97c1a5f6 100644
--- a/sc/source/ui/view/preview.cxx
+++ b/sc/source/ui/view/preview.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: preview.cxx,v $
  *
- *  $Revision: 1.19 $
+ *  $Revision: 1.20 $
  *
- *  last change: $Author: nn $ $Date: 2002-12-10 17:24:59 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:48 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -71,7 +71,7 @@
 #include 
 #define ITEMID_FIELD EE_FEATURE_FIELD
 
-#include 
+#include 
 #include 
 #include 
 #include 
@@ -140,6 +140,7 @@ ScPreview::ScPreview( Window* pParent, ScDocShell* pDocSh, ScPreviewShell* pView
     nTabStart( 0 ),
     nDisplayStart( 0 )
 {
+    SetOutDevViewType( OUTDEV_VIEWTYPE_PRINTPREVIEW ); //#106611#
     SetBackground();
 
     SetHelpId( HID_SC_WIN_PREVIEW );
@@ -351,8 +352,8 @@ void ScPreview::DoPrint( ScPreviewLocationData* pFillLocation )
     BOOL bValidPage = ( nPageNo < nTotalPages );
 
     ScModule* pScMod = SC_MOD();
-    const svx::ColorConfig& rColorCfg = pScMod->GetColorConfig();
-    Color aBackColor( rColorCfg.GetColorValue(svx::APPBACKGROUND).nColor );
+    const svtools::ColorConfig& rColorCfg = pScMod->GetColorConfig();
+    Color aBackColor( rColorCfg.GetColorValue(svtools::APPBACKGROUND).nColor );
 
     if ( bDoPrint && ( aOffset.X() < 0 || aOffset.Y() < 0 ) && bValidPage )
     {
@@ -442,7 +443,7 @@ void ScPreview::DoPrint( ScPreviewLocationData* pFillLocation )
 
         if ( bValidPage )
         {
-            Color aBorderColor( SC_MOD()->GetColorConfig().GetColorValue(svx::FONTCOLOR).nColor );
+            Color aBorderColor( SC_MOD()->GetColorConfig().GetColorValue(svtools::FONTCOLOR).nColor );
 
             //  draw border
 
@@ -505,7 +506,28 @@ void __EXPORT ScPreview::Command( const CommandEvent& rCEvt )
 
 void __EXPORT ScPreview::KeyInput( const KeyEvent& rKEvt )
 {
-    if (!pViewShell->KeyInput(rKEvt))
+    //  The + and - keys can't be configured as accelerator entries, so they must be handled directly
+    //  (in ScPreview, not ScPreviewShell -> only if the preview window has the focus)
+
+    const KeyCode& rKeyCode = rKEvt.GetKeyCode();
+    USHORT nKey = rKeyCode.GetCode();
+    BOOL bHandled = FALSE;
+    if(!rKeyCode.GetModifier())
+    {
+        USHORT nSlot = 0;
+        switch(nKey)
+        {
+            case KEY_ADD:      nSlot = SID_PREVIEW_ZOOMIN;  break;
+            case KEY_SUBTRACT: nSlot = SID_PREVIEW_ZOOMOUT; break;
+        }
+        if(nSlot)
+        {
+            bHandled = TRUE;
+            pViewShell->GetViewFrame()->GetDispatcher()->Execute( nSlot, SFX_CALLMODE_ASYNCHRON );
+        }
+    }
+
+    if ( !bHandled && !pViewShell->KeyInput(rKEvt) )
         Window::KeyInput(rKEvt);
 }
 
diff --git a/sc/source/ui/view/prevloc.cxx b/sc/source/ui/view/prevloc.cxx
index 1a29c528d2c9..1ffb480d3b13 100644
--- a/sc/source/ui/view/prevloc.cxx
+++ b/sc/source/ui/view/prevloc.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: prevloc.cxx,v $
  *
- *  $Revision: 1.8 $
+ *  $Revision: 1.9 $
  *
- *  last change: $Author: sab $ $Date: 2002-05-24 14:57:27 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:48 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -247,7 +247,7 @@ void ScPreviewLocationData::AddCellRange( const Rectangle& rRect, const ScRange&
     DBG_ASSERT( nDrawRanges < SC_PREVIEW_MAXRANGES, "too many ranges" );
     if ( nDrawRanges < SC_PREVIEW_MAXRANGES )
     {
-        aDrawRectangle[nDrawRanges] = rRect;
+        aDrawRectangle[nDrawRanges] = aPixelRect;
         aDrawMapMode[nDrawRanges] = rDrawMap;
             if (bRepCol)
                 if (bRepRow)
diff --git a/sc/source/ui/view/prevwsh.cxx b/sc/source/ui/view/prevwsh.cxx
index 66c8aa2ec32f..a3cdbc11ba8a 100644
--- a/sc/source/ui/view/prevwsh.cxx
+++ b/sc/source/ui/view/prevwsh.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: prevwsh.cxx,v $
  *
- *  $Revision: 1.16 $
+ *  $Revision: 1.17 $
  *
- *  last change: $Author: nn $ $Date: 2002-11-21 19:10:48 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:49 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -73,6 +73,7 @@
 
 #include 
 #include 
+#include 
 #include 
 #include 
 #include 
@@ -174,6 +175,7 @@ ScPreviewShell::ScPreviewShell( SfxViewFrame* pViewFrame,
     SfxViewShell( pViewFrame, SFX_VIEW_MAXIMIZE_FIRST | SFX_VIEW_CAN_PRINT | SFX_VIEW_HAS_PRINTOPTIONS ),
     pDocShell( rWin.pDocShell ),
     aSourceData( rWin.aSourceData ),
+    nSourceDesignMode( rWin.nSourceDesignMode ),
     pAccessibilityBroadcaster( NULL )
 {
     Construct( &pViewFrame->GetWindow() );
@@ -183,6 +185,7 @@ ScPreviewShell::ScPreviewShell( SfxViewFrame* pViewFrame,
                                 Window *pParent ) :
     SfxViewShell( pViewFrame, SFX_VIEW_MAXIMIZE_FIRST | SFX_VIEW_CAN_PRINT | SFX_VIEW_HAS_PRINTOPTIONS ),
     pDocShell( (ScDocShell*)pViewFrame->GetObjectShell() ),
+    nSourceDesignMode( SC_FORCEMODE_NONE ),
     pAccessibilityBroadcaster( NULL )
 {
     Construct( pParent );
@@ -192,6 +195,7 @@ ScPreviewShell::ScPreviewShell( SfxViewFrame* pViewFrame,
                                 SfxViewShell* pOldSh ) :
     SfxViewShell( pViewFrame, SFX_VIEW_MAXIMIZE_FIRST | SFX_VIEW_CAN_PRINT | SFX_VIEW_HAS_PRINTOPTIONS ),
     pDocShell( (ScDocShell*)pViewFrame->GetObjectShell() ),
+    nSourceDesignMode( SC_FORCEMODE_NONE ),
     pAccessibilityBroadcaster( NULL )
 {
     Construct( &pViewFrame->GetWindow() );
@@ -202,9 +206,16 @@ ScPreviewShell::ScPreviewShell( SfxViewFrame* pViewFrame,
         //! store live ScViewData instead, and update on ScTablesHint?
         //! or completely forget aSourceData on ScTablesHint?
 
-        ScViewData* pData = ((ScTabViewShell*)pOldSh)->GetViewData();
+        ScTabViewShell* pTabViewShell = ((ScTabViewShell*)pOldSh);
+        ScViewData* pData = pTabViewShell->GetViewData();
         pData->WriteUserData( aSourceData );
         InitStartTable( pData->GetTabNo() );
+
+        //  #106334# also have to store the TabView's DesignMode state
+        //  (only if draw view exists)
+        SdrView* pDrawView = pTabViewShell->GetSdrView();
+        if ( pDrawView )
+            nSourceDesignMode = pDrawView->IsDesignMode();
     }
 }
 
diff --git a/sc/source/ui/view/printfun.cxx b/sc/source/ui/view/printfun.cxx
index bbbd3bd16d43..c36d7589c063 100644
--- a/sc/source/ui/view/printfun.cxx
+++ b/sc/source/ui/view/printfun.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: printfun.cxx,v $
  *
- *  $Revision: 1.27 $
+ *  $Revision: 1.28 $
  *
- *  last change: $Author: nn $ $Date: 2002-12-10 17:25:00 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:49 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -75,7 +75,7 @@
 #include 
 #include 
 #include 
-#include 
+#include 
 #include      // EE_CNTRL_RTFSTYLESHEETS
 #include 
 #include 
@@ -1171,7 +1171,45 @@ void lcl_DrawGraphic( const SvxBrushItem &rBrush, OutputDevice *pOut, OutputDevi
                         //  is duplicated into a bigger one for better performance)
 
                         GraphicObject aObject( *pGraphic );
-                        aObject.DrawTiled( pOut, rOrg, aGrfSize, Size(0,0) );
+
+                        if( pOut->GetPDFWriter() &&
+                            (aObject.GetType() == GRAPHIC_BITMAP || aObject.GetType() == GRAPHIC_DEFAULT) )
+                        {
+                            // #104004# For PDF export, every draw
+                            // operation for bitmaps takes a noticeable
+                            // amount of place (~50 characters). Thus,
+                            // optimize between tile bitmap size and
+                            // number of drawing operations here.
+                            //
+                            //                  A_out
+                            // n_chars = k1 *  ---------- + k2 * A_bitmap
+                            //                  A_bitmap
+                            //
+                            // minimum n_chars is obtained for (derive for
+                            // A_bitmap, set to 0, take positive
+                            // solution):
+                            //                   k1
+                            // A_bitmap = Sqrt( ---- A_out )
+                            //                   k2
+                            //
+                            // where k1 is the number of chars per draw
+                            // operation, and k2 is the number of chars
+                            // per bitmap pixel. This is approximately 50
+                            // and 7 for current PDF writer, respectively.
+                            //
+                            const double    k1( 50 );
+                            const double    k2( 7 );
+                            const Size      aSize( rOrg.GetSize() );
+                            const double    Abitmap( k1/k2 * aSize.Width()*aSize.Height() );
+
+                            aObject.DrawTiled( pOut, rOrg, aGrfSize, Size(0,0),
+                                               NULL, GRFMGR_DRAW_STANDARD,
+                                               ::std::max( 128, static_cast( sqrt(sqrt( Abitmap)) + .5 ) ) );
+                        }
+                        else
+                        {
+                            aObject.DrawTiled( pOut, rOrg, aGrfSize, Size(0,0) );
+                        }
 
                         bDraw = FALSE;
 //                      bRetouche = FALSE;
@@ -1264,7 +1302,7 @@ void ScPrintFunc::DrawBorder( long nScrX, long nScrY, long nScrW, long nScrH,
     if ( pShadow && pShadow->GetLocation() != SVX_SHADOW_NONE )
     {
         if ( bCellContrast )
-            pDev->SetFillColor( SC_MOD()->GetColorConfig().GetColorValue(svx::FONTCOLOR).nColor );
+            pDev->SetFillColor( SC_MOD()->GetColorConfig().GetColorValue(svtools::FONTCOLOR).nColor );
         else
             pDev->SetFillColor(pShadow->GetColor());
         pDev->SetLineColor();
@@ -1557,16 +1595,20 @@ void ScPrintFunc::PrintArea( USHORT nX1, USHORT nY1, USHORT nX2, USHORT nY2,
 
     Color aGridColor( COL_BLACK );
     if ( bUseStyleColor )
-        aGridColor.SetColor( SC_MOD()->GetColorConfig().GetColorValue(svx::FONTCOLOR).nColor );
+        aGridColor.SetColor( SC_MOD()->GetColorConfig().GetColorValue(svtools::FONTCOLOR).nColor );
     aOutputData.SetGridColor( aGridColor );
 
-    if ( !pPrinter && !bIsRender )      // when rendering (PDF), don't use printer
+    if ( !pPrinter )
     {
         OutputDevice* pRefDev = pDoc->GetPrinter();     // auch fuer Preview den Drucker nehmen
         Fraction aPrintFrac( nZoom, 100 );              // ohne nManualZoom
         //  MapMode, wie er beim Drucken herauskommen wuerde:
         pRefDev->SetMapMode( MapMode( MAP_100TH_MM, Point(), aPrintFrac, aPrintFrac ) );
-        aOutputData.SetRefDevice( pRefDev );
+
+        //  when rendering (PDF), don't use printer as ref device, but printer's MapMode
+        //  has to be set anyway, as charts still use it (#106409#)
+        if ( !bIsRender )
+            aOutputData.SetRefDevice( pRefDev );
     }
 
 //  aOutputData.SetMetaFileMode(TRUE);
@@ -1925,7 +1967,7 @@ long ScPrintFunc::PrintNotes( long nPageNo, long nNoteStart, BOOL bDoPrint, ScPr
 
         Color aBackgroundColor( COL_WHITE );
         if ( bUseStyleColor )
-            aBackgroundColor.SetColor( SC_MOD()->GetColorConfig().GetColorValue(svx::DOCCOLOR).nColor );
+            aBackgroundColor.SetColor( SC_MOD()->GetColorConfig().GetColorValue(svtools::DOCCOLOR).nColor );
 
         pDev->SetMapMode(aOffsetMode);
         pDev->SetLineColor();
@@ -1988,7 +2030,7 @@ void ScPrintFunc::PrintPage( long nPageNo, USHORT nX1, USHORT nY1, USHORT nX2, U
 
         Color aBackgroundColor( COL_WHITE );
         if ( bUseStyleColor )
-            aBackgroundColor.SetColor( SC_MOD()->GetColorConfig().GetColorValue(svx::DOCCOLOR).nColor );
+            aBackgroundColor.SetColor( SC_MOD()->GetColorConfig().GetColorValue(svtools::DOCCOLOR).nColor );
 
         pDev->SetMapMode(aOffsetMode);
         pDev->SetLineColor();
@@ -2207,7 +2249,7 @@ void ScPrintFunc::PrintPage( long nPageNo, USHORT nX1, USHORT nY1, USHORT nX2, U
 
     Color aGridColor( COL_BLACK );
     if ( bUseStyleColor )
-        aGridColor.SetColor( SC_MOD()->GetColorConfig().GetColorValue(svx::FONTCOLOR).nColor );
+        aGridColor.SetColor( SC_MOD()->GetColorConfig().GetColorValue(svtools::FONTCOLOR).nColor );
 
     if (aTableParam.bHeaders)
     {
@@ -2484,7 +2526,7 @@ void ScPrintFunc::InitModes()               // aus nZoom etc. die MapModes setze
     Fraction aZoomFract( nEffZoom,10000 );
     Fraction aHorFract = aZoomFract;
 
-    if (!pPrinter)                                          // Massstab anpassen fuer Preview
+    if ( !pPrinter && !bIsRender )                          // adjust scale for preview
     {
         double nFact = pDocShell->GetOutputFactor();
         aHorFract = Fraction( (long)( nEffZoom / nFact ), 10000 );
@@ -2510,26 +2552,19 @@ void ScPrintFunc::ApplyPrintSettings()
         //
 
         Size aEnumSize = aPageSize;
-        if ( bLandscape )
-        {
-            long nTemp = aEnumSize.Width();
-            aEnumSize.Width() = aEnumSize.Height();
-            aEnumSize.Height() = nTemp;
-        }
-        Paper ePaper = SvxPaperInfo::GetSvPaper( aEnumSize, MAP_TWIP, TRUE );
         USHORT nPaperBin = ((const SvxPaperBinItem&)pParamSet->Get(ATTR_PAGE_PAPERBIN)).GetValue();
 
-        pPrinter->SetPaper( ePaper );
-        if ( PAPER_USER == ePaper )
-        {
-            MapMode aPrinterMode = pPrinter->GetMapMode();
-            MapMode aLocalMode( MAP_TWIP );
-            pPrinter->SetMapMode( aLocalMode );
-            pPrinter->SetPaperSizeUser( aEnumSize );
-            pPrinter->SetMapMode( aPrinterMode );
-        }
-        pPrinter->SetPaperBin( nPaperBin );
         pPrinter->SetOrientation( bLandscape ? ORIENTATION_LANDSCAPE : ORIENTATION_PORTRAIT );
+
+        MapMode aPrinterMode = pPrinter->GetMapMode();
+        MapMode aLocalMode( MAP_TWIP );
+        pPrinter->SetMapMode( aLocalMode );
+
+        // Let VCL decide which printer paper should be used for printing
+        pPrinter->SetPaperSizeUser( aEnumSize );
+        pPrinter->SetMapMode( aPrinterMode );
+
+        pPrinter->SetPaperBin( nPaperBin );
     }
 }
 
diff --git a/sc/source/ui/view/tabview5.cxx b/sc/source/ui/view/tabview5.cxx
index 5144229e782b..c34c5e9bba82 100644
--- a/sc/source/ui/view/tabview5.cxx
+++ b/sc/source/ui/view/tabview5.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: tabview5.cxx,v $
  *
- *  $Revision: 1.9 $
+ *  $Revision: 1.10 $
  *
- *  last change: $Author: ssa $ $Date: 2002-09-17 09:43:17 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:49 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -230,7 +230,7 @@ __EXPORT ScTabView::~ScTabView()
     delete pTabControl;
 }
 
-void ScTabView::MakeDrawView()
+void ScTabView::MakeDrawView( BYTE nForceDesignMode )
 {
     if (!pDrawView)
     {
@@ -259,6 +259,11 @@ void ScTabView::MakeDrawView()
         SetDrawFuncPtr(new FuSelection( aViewData.GetViewShell(), GetActiveWin(), pDrawView,
                                         pLayer,aSfxRequest));
 
+        //  #106334# used when switching back from page preview: restore saved design mode state
+        //  (otherwise, keep the default from the draw view ctor)
+        if ( nForceDesignMode != SC_FORCEMODE_NONE )
+            pDrawView->SetDesignMode( (BOOL)nForceDesignMode );
+
         //  an der FormShell anmelden
         FmFormShell* pFormSh = aViewData.GetViewShell()->GetFormShell();
         if (pFormSh)
diff --git a/sc/source/ui/view/tabvwsh2.cxx b/sc/source/ui/view/tabvwsh2.cxx
index 1b20e337b7c1..4189c2c30ae1 100644
--- a/sc/source/ui/view/tabvwsh2.cxx
+++ b/sc/source/ui/view/tabvwsh2.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: tabvwsh2.cxx,v $
  *
- *  $Revision: 1.12 $
+ *  $Revision: 1.13 $
  *
- *  last change: $Author: nn $ $Date: 2002-12-11 14:13:00 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:49 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -76,6 +76,9 @@
 #include 
 #include 
 #include 
+#ifndef _SVTOOLS_LANGUAGEOPTIONS_HXX
+#include 
+#endif
 #include 
 
 #include "tabvwsh.hxx"
@@ -434,6 +437,11 @@ void ScTabViewShell::GetDrawState(SfxItemSet &rSet)
                          nPutId != SID_DRAW_CAPTION_VERTICAL )
                         nPutId = USHRT_MAX;
                     SfxAllEnumItem aItem( nWhich, nPutId );
+                    if ( !SvtLanguageOptions().IsVerticalTextEnabled() )
+                    {
+                        aItem.DisableValue( SID_DRAW_TEXT_VERTICAL );
+                        aItem.DisableValue( SID_DRAW_CAPTION_VERTICAL );
+                    }
                     rSet.Put( aItem );
                 }
                 break;
diff --git a/sc/source/ui/view/tabvwsh3.cxx b/sc/source/ui/view/tabvwsh3.cxx
index 8b4353f6e64c..63249194589e 100644
--- a/sc/source/ui/view/tabvwsh3.cxx
+++ b/sc/source/ui/view/tabvwsh3.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: tabvwsh3.cxx,v $
  *
- *  $Revision: 1.15 $
+ *  $Revision: 1.16 $
  *
- *  last change: $Author: nn $ $Date: 2002-09-20 10:07:33 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:50 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -79,6 +79,7 @@
 #include 
 #include 
 #include 
+#include 
 
 #include 
 #include 
@@ -250,6 +251,14 @@ void ScTabViewShell::Execute( SfxRequest& rReq )
                 if ( pReqArgs->GetItemState( FN_PARAM_1, TRUE, &pItem ) == SFX_ITEM_SET )
                     bUnmark = ((const SfxBoolItem*)pItem)->GetValue();
 
+                if ( nSlot == SID_JUMPTOMARK )
+                {
+                    //  #106586# URL has to be decoded for escaped characters (%20)
+                    aAddress = INetURLObject::decode( aAddress, INET_HEX_ESCAPE,
+                                               INetURLObject::DECODE_WITH_CHARSET,
+                                            RTL_TEXTENCODING_UTF8 );
+                }
+
                 BOOL bFound = FALSE;
                 ScViewData* pViewData = GetViewData();
                 ScDocument* pDoc      = pViewData->GetDocument();
diff --git a/sc/source/ui/view/tabvwsh4.cxx b/sc/source/ui/view/tabvwsh4.cxx
index eb0eed4ae1cc..a785fceebd70 100644
--- a/sc/source/ui/view/tabvwsh4.cxx
+++ b/sc/source/ui/view/tabvwsh4.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: tabvwsh4.cxx,v $
  *
- *  $Revision: 1.29 $
+ *  $Revision: 1.30 $
  *
- *  last change: $Author: nn $ $Date: 2002-12-12 19:04:16 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:50 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -1504,7 +1504,7 @@ FASTBOOL __EXPORT ScTabViewShell::KeyInput( const KeyEvent &rKeyEvent )
 
 //------------------------------------------------------------------
 
-void ScTabViewShell::Construct()
+void ScTabViewShell::Construct( BYTE nForceDesignMode )
 {
     SfxApplication* pSfxApp  = SFX_APP();
     ScDocShell* pDocSh = GetViewData()->GetDocShell();
@@ -1582,7 +1582,7 @@ void ScTabViewShell::Construct()
             //  DrawView darf nicht im TabView - ctor angelegt werden,
             //  wenn die ViewShell noch nicht kostruiert ist...
     if (pDoc->GetDrawLayer())
-        MakeDrawView();
+        MakeDrawView( nForceDesignMode );
     ViewOptionsHasChanged(FALSE);   // legt auch evtl. DrawView an
 
     SetUndoManager( pDocSh->GetUndoManager() );
@@ -1706,7 +1706,21 @@ ScTabViewShell::ScTabViewShell( SfxViewFrame* pViewFrame,
 
     const ScAppOptions& rAppOpt = SC_MOD()->GetAppOptions();
 
-    Construct();
+    //  if switching back from print preview,
+    //  restore the view settings that were active when creating the preview
+    //  #89897# ReadUserData must not happen from ctor, because the view's edit window
+    //  has to be shown by the sfx. ReadUserData is deferred until the first Activate call.
+    //  #106334# old DesignMode state from form layer must be restored, too
+
+    BYTE nForceDesignMode = SC_FORCEMODE_NONE;
+    if ( pOldSh && pOldSh->ISA( ScPreviewShell ) )
+    {
+        ScPreviewShell* pPreviewShell = ((ScPreviewShell*)pOldSh);
+        aPendingUserData = pPreviewShell->GetSourceData();      // used in Activate
+        nForceDesignMode = pPreviewShell->GetSourceDesignMode();
+    }
+
+    Construct( nForceDesignMode );
 
     if ( GetViewData()->GetDocShell()->IsPreview() )
     {
@@ -1725,14 +1739,6 @@ ScTabViewShell::ScTabViewShell( SfxViewFrame* pViewFrame,
         xFrame->setComponent( uno::Reference(), new ScTabViewObj( this ) );
 
     SetCurSubShell(OST_Cell);
-
-    //  if switching back from print preview,
-    //  restore the view settings that were active when creating the preview
-    //  #89897# ReadUserData must not happen from ctor, because the view's edit window
-    //  has to be shown by the sfx. ReadUserData is deferred until the first Activate call.
-
-    if ( pOldSh && pOldSh->ISA( ScPreviewShell ) )
-        aPendingUserData = ((ScPreviewShell*)pOldSh)->GetSourceData();      // used in Activate
 }
 
 #undef __INIT_ScTabViewShell
diff --git a/sc/source/ui/view/tabvwshb.cxx b/sc/source/ui/view/tabvwshb.cxx
index afd41e294afe..ce67faee2cc3 100644
--- a/sc/source/ui/view/tabvwshb.cxx
+++ b/sc/source/ui/view/tabvwshb.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: tabvwshb.cxx,v $
  *
- *  $Revision: 1.15 $
+ *  $Revision: 1.16 $
  *
- *  last change: $Author: bm $ $Date: 2002-09-09 07:49:33 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:50 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
diff --git a/sc/source/ui/view/tabvwshf.cxx b/sc/source/ui/view/tabvwshf.cxx
index 260f582decc9..47930f6f7fdf 100644
--- a/sc/source/ui/view/tabvwshf.cxx
+++ b/sc/source/ui/view/tabvwshf.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: tabvwshf.cxx,v $
  *
- *  $Revision: 1.4 $
+ *  $Revision: 1.5 $
  *
- *  last change: $Author: sab $ $Date: 2002-09-13 09:35:46 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:50 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -543,8 +543,9 @@ void ScTabViewShell::ExecuteTable( SfxRequest& rReq )
                                 if( pScSh->GetTitle() == aDocName )
                                 {
                                     nDoc = i;
-                                    nTableCount = pScSh->GetDocument()->GetTableCount();
-                                    bDoIt = TRUE;
+                                    ScDocument* pDestDoc = pScSh->GetDocument();
+                                    nTableCount = pDestDoc->GetTableCount();
+                                    bDoIt = pDestDoc->IsDocEditable();
                                     break;
                                 }
 
@@ -588,7 +589,14 @@ void ScTabViewShell::ExecuteTable( SfxRequest& rReq )
                         {
                             ScDocShell* pSh = ScDocShell::GetShellByNum( nDoc );
                             if (pSh)
+                            {
                                 aDocName = pSh->GetTitle();
+                                if ( !pSh->GetDocument()->IsDocEditable() )
+                                {
+                                    ErrorMessage(STR_READONLYERR);
+                                    bDoIt = FALSE;
+                                }
+                            }
                         }
                         rReq.AppendItem( SfxStringItem( FID_TAB_MOVE, aDocName ) );
                         //  Tabelle ist 1-basiert, wenn nicht APPEND
diff --git a/sc/source/ui/view/tabvwshg.cxx b/sc/source/ui/view/tabvwshg.cxx
index 70c0749f9fa6..6033c101841b 100644
--- a/sc/source/ui/view/tabvwshg.cxx
+++ b/sc/source/ui/view/tabvwshg.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: tabvwshg.cxx,v $
  *
- *  $Revision: 1.4 $
+ *  $Revision: 1.5 $
  *
- *  last change: $Author: oj $ $Date: 2002-12-02 14:28:33 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:51 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -84,6 +84,9 @@ using namespace com::sun::star;
 #include "document.hxx"
 #include "drawview.hxx"
 #include "globstr.hrc"
+#ifndef _SV_SOUND_HXX
+#include 
+#endif
 
 //------------------------------------------------------------------------
 
@@ -134,9 +137,13 @@ void ScTabViewShell::InsertURLButton( const String& rName, const String& rURL,
     form::FormButtonType eButtonType = form::FormButtonType_URL;
     aAny <<= eButtonType;
     xPropSet->setPropertyValue( rtl::OUString::createFromAscii( "ButtonType" ), aAny );
-    // #105638# OJ
-    aAny <<= sal_True;
-    xPropSet->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "DispatchURLInternal" )), aAny );
+
+    if ( Sound::IsSoundFile( rURL ) )
+    {
+        // #105638# OJ
+        aAny <<= sal_True;
+        xPropSet->setPropertyValue( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "DispatchURLInternal" )), aAny );
+    }
 
     Point aPos;
     if (pInsPos)
diff --git a/sc/source/ui/view/viewdata.cxx b/sc/source/ui/view/viewdata.cxx
index 458e7a01f808..fa87b9407a8e 100644
--- a/sc/source/ui/view/viewdata.cxx
+++ b/sc/source/ui/view/viewdata.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: viewdata.cxx,v $
  *
- *  $Revision: 1.36 $
+ *  $Revision: 1.37 $
  *
- *  last change: $Author: nn $ $Date: 2002-12-04 18:55:38 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:51 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -74,7 +74,7 @@
 #include 
 #include 
 #include 
-#include 
+#include 
 #include 
 #include 
 #include 
@@ -82,7 +82,7 @@
 
 #include 
 #include 
-#include 
+#include 
 
 #include "viewdata.hxx"
 #include "docoptio.hxx"
@@ -123,6 +123,9 @@ using namespace com::sun::star;
 
 // STATIC DATA -----------------------------------------------------------
 
+#define SC_GROWY_SMALL_EXTRA    100
+#define SC_GROWY_BIG_EXTRA      200
+
 #define TAG_TABBARWIDTH "tw:"
 
 static BOOL bMoveArea = FALSE;              //! Member?
@@ -973,7 +976,7 @@ void ScViewData::SetEditEngine( ScSplitPos eWhich,
 
         pNewEngine->SetStatusEventHdl( LINK( this, ScViewData, EditEngineHdl ) );
 
-        EditGrowY();        // an alten Text anpassen
+        EditGrowY( TRUE );      // adjust to existing text content
         EditGrowX();
 
         Point aDocPos = pEditView[eWhich]->GetWindowPosTopLeft(0);
@@ -995,7 +998,7 @@ void ScViewData::SetEditEngine( ScSplitPos eWhich,
     if ( aBackCol.GetTransparency() > 0 ||
             Application::GetSettings().GetStyleSettings().GetHighContrastMode() )
     {
-        aBackCol.SetColor( pScMod->GetColorConfig().GetColorValue(svx::DOCCOLOR).nColor );
+        aBackCol.SetColor( pScMod->GetColorConfig().GetColorValue(svtools::DOCCOLOR).nColor );
     }
     pEditView[eWhich]->SetBackgroundColor( aBackCol );
 
@@ -1090,7 +1093,7 @@ void ScViewData::EditGrowX()
     }
 }
 
-void ScViewData::EditGrowY()
+void ScViewData::EditGrowY( BOOL bInitial )
 {
     ScSplitPos eWhich = GetActivePart();
     ScVSplitPos eVWhich = WhichV(eWhich);
@@ -1119,9 +1122,26 @@ void ScViewData::EditGrowY()
     long        nOldBottom = aArea.Bottom();
     long        nTextHeight = pEngine->GetTextHeight();
 
+    //  #106635# When editing a formula in a cell with optimal height, allow a larger portion
+    //  to be clipped before extending to following rows, to avoid obscuring cells for
+    //  reference input (next row is likely to be useful in formulas).
+    long nAllowedExtra = SC_GROWY_SMALL_EXTRA;
+    if ( nEditEndRow == nEditRow && !( pDoc->GetRowFlags( nEditRow, nTabNo ) & CR_MANUALSIZE ) &&
+            pEngine->GetParagraphCount() <= 1 )
+    {
+        //  If the (only) paragraph starts with a '=', it's a formula.
+        //  If this is the initial call and the text is empty, allow the larger value, too,
+        //  because this occurs in the normal progress of editing a formula.
+        //  Subsequent calls with empty text might involve changed attributes (including
+        //  font height), so they are treated like normal text.
+        String aText = pEngine->GetText( (USHORT) 0 );
+        if ( ( aText.Len() == 0 && bInitial ) || aText.GetChar(0) == (sal_Unicode)'=' )
+            nAllowedExtra = SC_GROWY_BIG_EXTRA;
+    }
+
     BOOL bChanged = FALSE;
     BOOL bMaxReached = FALSE;
-    while (aArea.GetHeight() + 100 < nTextHeight && nEditEndRow < nBottom && !bMaxReached)
+    while (aArea.GetHeight() + nAllowedExtra < nTextHeight && nEditEndRow < nBottom && !bMaxReached)
     {
         ++nEditEndRow;
         ScDocument* pDoc = GetDocument();
@@ -1135,6 +1155,7 @@ void ScViewData::EditGrowY()
         }
 
         bChanged = TRUE;
+        nAllowedExtra = SC_GROWY_SMALL_EXTRA;   // larger value is only for first row
     }
 
     if (bChanged)
@@ -1878,7 +1899,7 @@ void ScViewData::CalcPPT()
                 //  if one column is smaller than the column count,
                 //  rounding errors are likely to add up to a whole column.
 
-                double fRounded = SolarMath::ApproxFloor( fOriginal + 0.5 );
+                double fRounded = ::rtl::math::approxFloor( fOriginal + 0.5 );
                 if ( fRounded > 0.0 )
                 {
                     double fScale = fRounded / fOriginal + 1E-6;
diff --git a/sc/source/ui/view/viewfun5.cxx b/sc/source/ui/view/viewfun5.cxx
index bceef3459e18..cd44a9e7538b 100644
--- a/sc/source/ui/view/viewfun5.cxx
+++ b/sc/source/ui/view/viewfun5.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: viewfun5.cxx,v $
  *
- *  $Revision: 1.22 $
+ *  $Revision: 1.23 $
  *
- *  last change: $Author: nn $ $Date: 2002-12-04 10:08:52 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:51 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
diff --git a/sc/source/ui/view/viewfunc.cxx b/sc/source/ui/view/viewfunc.cxx
index 1a145067f169..16938da5c959 100644
--- a/sc/source/ui/view/viewfunc.cxx
+++ b/sc/source/ui/view/viewfunc.cxx
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: viewfunc.cxx,v $
  *
- *  $Revision: 1.17 $
+ *  $Revision: 1.18 $
  *
- *  last change: $Author: er $ $Date: 2002-11-28 16:15:54 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:06:51 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -154,30 +154,17 @@ void ScViewFunc::StartFormatArea()
     if ( !SC_MOD()->GetInputOptions().GetExtendFormat() )
         return;
 
-    USHORT nTab = GetViewData()->GetTabNo();
-    ScAddress aPos( GetViewData()->GetCurX(), GetViewData()->GetCurY(), nTab );
-    BOOL bOk = TRUE;
-
-    ScMarkData& rMark = GetViewData()->GetMarkData();
-    if ( rMark.IsMultiMarked() )
-        rMark.MarkToSimple();
-    if ( rMark.IsMultiMarked() )
+    //  start only with single cell (marked or cursor position)
+    ScRange aMarkRange;
+    BOOL bOk = GetViewData()->GetSimpleArea( aMarkRange );
+    if ( bOk && aMarkRange.aStart != aMarkRange.aEnd )
         bOk = FALSE;
-    else if ( rMark.IsMarked() )
-    {
-        ScRange aMarkRange;
-        rMark.GetMarkArea( aMarkRange );
-        if ( aMarkRange.aStart == aMarkRange.aEnd )
-            aPos = aMarkRange.aStart;
-        else
-            bOk = FALSE;
-    }
 
     if (bOk)
     {
         bFormatValid = TRUE;
-        aFormatSource = aPos;
-        aFormatArea = ScRange( aPos );
+        aFormatSource = aMarkRange.aStart;
+        aFormatArea = ScRange( aFormatSource );
     }
     else
         bFormatValid = FALSE;       // keinen alten Bereich behalten
@@ -1091,8 +1078,8 @@ void ScViewFunc::ApplyAttributes( const SfxItemSet* pDialogSet,
         // wenn neue Items Default-Items sind, so muessen die
         // alten Items geputtet werden:
 
-        BOOL bDefNewOuter = ( SFX_ITEMS_STATICDEFAULT == pNewOuter->GetRef() );
-        BOOL bDefNewInner = ( SFX_ITEMS_STATICDEFAULT == pNewInner->GetRef() );
+        BOOL bDefNewOuter = ( SFX_ITEMS_STATICDEFAULT == pNewOuter->GetKind() );
+        BOOL bDefNewInner = ( SFX_ITEMS_STATICDEFAULT == pNewInner->GetKind() );
 
         ApplyPatternLines( aNewAttrs,
                            bDefNewOuter ? pOldOuter : pNewOuter,
@@ -1730,7 +1717,8 @@ void ScViewFunc::DeleteContents( USHORT nFlags, BOOL bRecord )
             bSimple = TRUE;
     }
 
-    rMark.SetMarking(FALSE);        // fuer MarkToMulti
+    rMark.SetMarking(FALSE);        // for MarkToMulti
+    rMark.MarkToSimple();           // before bMulti test below
 
     DBG_ASSERT( rMark.IsMarked() || rMark.IsMultiMarked() || bSimple, "was denn loeschen ???" )
 
diff --git a/sc/util/hidother.src b/sc/util/hidother.src
index 6491c0ccae75..b07e8cac715e 100644
--- a/sc/util/hidother.src
+++ b/sc/util/hidother.src
@@ -2,9 +2,9 @@
  *
  *  $RCSfile: hidother.src,v $
  *
- *  $Revision: 1.16 $
+ *  $Revision: 1.17 $
  *
- *  last change: $Author: nn $ $Date: 2002-12-03 15:27:11 $
+ *  last change: $Author: hr $ $Date: 2003-03-26 18:07:00 $
  *
  *  The Contents of this file are made available subject to the terms of
  *  either of the following licenses
@@ -125,11 +125,11 @@ hidspecial HID_SELECTTABLES      { HelpId = HID_SELECTTABLES; };
 hidspecial HID_SC_REPLCELLSWARN  { HelpId = HID_SC_REPLCELLSWARN; };
 
 hidspecial HID_SC_DPLAY_COLUMN   { HelpId = HID_SC_DPLAY_COLUMN; };
-hidspecial HID_SC_DPLAY_ROW      { HelpId = HID_SC_DPLAY_ROW };
-hidspecial HID_SC_DPLAY_DATA     { HelpId = HID_SC_DPLAY_DATA };
-hidspecial HID_SC_DPLAY_SELECT   { HelpId = HID_SC_DPLAY_SELECT };
+hidspecial HID_SC_DPLAY_ROW      { HelpId = HID_SC_DPLAY_ROW; };
+hidspecial HID_SC_DPLAY_DATA     { HelpId = HID_SC_DPLAY_DATA; };
+hidspecial HID_SC_DPLAY_SELECT   { HelpId = HID_SC_DPLAY_SELECT; };
 
-hidspecial HID_SC_DRAW_RENAME    { HelpId = HID_SC_DRAW_RENAME };
+hidspecial HID_SC_DRAW_RENAME    { HelpId = HID_SC_DRAW_RENAME; };
 
 
 //  2. Seite Funktionsautopilot: nur als Unique-IDs
diff --git a/sc/util/makefile.mk b/sc/util/makefile.mk
index e30a8b2d4bc6..712e94e08490 100644
--- a/sc/util/makefile.mk
+++ b/sc/util/makefile.mk
@@ -2,9 +2,9 @@
 #
 #   $RCSfile: makefile.mk,v $
 #
-#   $Revision: 1.14 $
+#   $Revision: 1.15 $
 #
-#   last change: $Author: dr $ $Date: 2002-11-21 12:23:15 $
+#   last change: $Author: hr $ $Date: 2003-03-26 18:07:00 $
 #
 #   The Contents of this file are made available subject to the terms of
 #   either of the following licenses
@@ -66,10 +66,12 @@ PRJNAME=SC
 TARGET=scalc3
 #LIBTARGET=NO
 GEN_HID=TRUE
+GEN_HID_OTHER=TRUE
 
 # --- Settings -----------------------------------------------------------
 
 .INCLUDE :  svpre.mk
+.INCLUDE :  connectivity/version.mk
 .INCLUDE :  settings.mk
 .INCLUDE :  sv.mk
 
@@ -217,7 +219,6 @@ LIB5OBJFILES=$(OBJ)$/sclib.obj
 
 .IF "$(depend)" == ""
 ALL:	\
-    $(SRS)$/hidother.hid\
     $(MISC)$/linkinc.ls \
     ALLTAR	\
        ea
@@ -345,18 +346,6 @@ $(MISCX)$/$(SHL1TARGET).flt:
     @echo LibMain>>$@
 
 
-$(MISC)$/$(PRJNAME).hid : $(SRS)$/hidother.hid
-
-$(SRS)$/hidother.hid: hidother.src
-.IF "$(GUI)"=="WNT"
-.IF "$(BUILD_SOSL)"==""
-    @+-mhids hidother.src $(SRS) $(PRJNAME) dummy $(INCLUDE)
-    @+echo NO HIDS !!!!
-.ENDIF
-.ELSE
-    @echo nix
-.ENDIF
-
 ea:
 .IF "$(GUI)" == "OS2"
     @+echo extended attributes? siehe sw\util.
diff --git a/sc/xml/ScDrawPageObj.xml b/sc/xml/ScDrawPageObj.xml
new file mode 100644
index 000000000000..5777913bc915
--- /dev/null
+++ b/sc/xml/ScDrawPageObj.xml
@@ -0,0 +1,296 @@
+
+
+
+    sc
+    
+        Sascha Ballach
+        com.sun.star.comp.office.ScDrawPageObj
+        
+    This component provides access to the DrawPage of a sheet in a spreadsheet document.
+
+        com.sun.star.loader.SharedLibrary
+        c++
+        
+        com.sun.star.sheet.SpreadsheetDrawPage
+        com.sun.star.awt.DeviceInfo
+        com.sun.star.awt.FocusEvent
+        com.sun.star.awt.FontDescriptor
+        com.sun.star.awt.FontSlant
+        com.sun.star.awt.Gradient
+        com.sun.star.awt.GradientStyle
+        com.sun.star.awt.InputEvent
+        com.sun.star.awt.KeyEvent
+        com.sun.star.awt.MouseEvent
+        com.sun.star.awt.PaintEvent
+        com.sun.star.awt.Point
+        com.sun.star.awt.RasterOperation
+        com.sun.star.awt.Rectangle
+        com.sun.star.awt.SimpleFontMetric
+        com.sun.star.awt.Size
+        com.sun.star.awt.WindowClass
+        com.sun.star.awt.WindowDescriptor
+        com.sun.star.awt.WindowEvent
+        com.sun.star.awt.XBitmap
+        com.sun.star.awt.XControl
+        com.sun.star.awt.XControlContainer
+        com.sun.star.awt.XControlModel
+        com.sun.star.awt.XDevice
+        com.sun.star.awt.XDisplayBitmap
+        com.sun.star.awt.XFocusListener
+        com.sun.star.awt.XFont
+        com.sun.star.awt.XGraphics
+        com.sun.star.awt.XImageConsumer
+        com.sun.star.awt.XImageProducer
+        com.sun.star.awt.XKeyListener
+        com.sun.star.awt.XMouseListener
+        com.sun.star.awt.XMouseMotionListener
+        com.sun.star.awt.XPaintListener
+        com.sun.star.awt.XPointer
+        com.sun.star.awt.XRegion
+        com.sun.star.awt.XTabController
+        com.sun.star.awt.XTabControllerModel
+        com.sun.star.awt.XToolkit
+        com.sun.star.awt.XView
+        com.sun.star.awt.XWindow
+        com.sun.star.awt.XWindowListener
+        com.sun.star.awt.XWindowPeer
+        com.sun.star.beans.IllegalTypeException
+        com.sun.star.beans.NotRemoveableException
+        com.sun.star.beans.Property
+        com.sun.star.beans.PropertyAttribute
+        com.sun.star.beans.PropertyChangeEvent
+        com.sun.star.beans.PropertyExistException
+        com.sun.star.beans.PropertyState
+        com.sun.star.beans.PropertyStateChangeEvent
+        com.sun.star.beans.PropertyValue
+        com.sun.star.beans.PropertyValues
+        com.sun.star.beans.PropertyVetoException
+        com.sun.star.beans.UnknownPropertyException
+        com.sun.star.beans.XFastPropertySet
+        com.sun.star.beans.XMultiPropertySet
+        com.sun.star.beans.XPropertiesChangeListener
+        com.sun.star.beans.XPropertyAccess
+        com.sun.star.beans.XPropertyChangeListener
+        com.sun.star.beans.XPropertyContainer
+        com.sun.star.beans.XPropertySet
+        com.sun.star.beans.XPropertySetInfo
+        com.sun.star.beans.XPropertyState
+        com.sun.star.beans.XPropertyStateChangeListener
+        com.sun.star.beans.XVetoableChangeListener
+        com.sun.star.chart.ChartDataChangeEvent
+        com.sun.star.chart.ChartDataChangeType
+        com.sun.star.chart.XChartData
+        com.sun.star.chart.XChartDataArray
+        com.sun.star.chart.XChartDataChangeEventListener
+        com.sun.star.container.ElementExistException
+        com.sun.star.container.NoSuchElementException
+        com.sun.star.container.XChild
+        com.sun.star.container.XContentEnumerationAccess
+        com.sun.star.container.XElementAccess
+        com.sun.star.container.XEnumeration
+        com.sun.star.container.XEnumerationAccess
+        com.sun.star.container.XHierarchicalNameAccess
+        com.sun.star.container.XIndexAccess
+        com.sun.star.container.XNameAccess
+        com.sun.star.container.XNameContainer
+        com.sun.star.container.XNameReplace
+        com.sun.star.container.XNamed
+        com.sun.star.document.XActionLockable
+        com.sun.star.document.XDocumentInfo
+        com.sun.star.document.XDocumentInfoSupplier
+        com.sun.star.document.XLinkTargetSupplier
+        com.sun.star.drawing.XDrawPage
+        com.sun.star.drawing.XDrawPageSupplier
+        com.sun.star.drawing.XDrawPages
+        com.sun.star.drawing.XDrawPagesSupplier
+        com.sun.star.drawing.XShape
+        com.sun.star.drawing.XShapeBinder
+        com.sun.star.drawing.XShapeCombiner
+        com.sun.star.drawing.XShapeDescriptor
+        com.sun.star.drawing.XShapeGroup
+        com.sun.star.drawing.XShapeGrouper
+        com.sun.star.drawing.XShapes
+        com.sun.star.form.XForm
+        com.sun.star.form.XFormComponent
+        com.sun.star.form.XFormController
+        com.sun.star.form.XFormControllerListener
+        com.sun.star.form.XFormsSupplier
+        com.sun.star.form.XImageProducerSupplier
+        com.sun.star.frame.FrameAction
+        com.sun.star.frame.FrameActionEvent
+        com.sun.star.frame.XController
+        com.sun.star.frame.XFrame
+        com.sun.star.frame.XFrameActionListener
+        com.sun.star.frame.XFrames
+        com.sun.star.frame.XFramesSupplier
+        com.sun.star.frame.XModel
+        com.sun.star.frame.XStorable
+        com.sun.star.io.IOException
+        com.sun.star.lang.ArrayIndexOutOfBoundsException
+        com.sun.star.lang.EventObject
+        com.sun.star.lang.IllegalArgumentException
+        com.sun.star.lang.IndexOutOfBoundsException
+        com.sun.star.lang.KCharacterType
+        com.sun.star.lang.KParseTokens
+        com.sun.star.lang.KParseType
+        com.sun.star.lang.Locale
+        com.sun.star.lang.NoSupportException
+        com.sun.star.lang.ParseResult
+        com.sun.star.lang.WrappedTargetException
+        com.sun.star.lang.XCharacterClassification
+        com.sun.star.lang.XComponent
+        com.sun.star.lang.XEventListener
+        com.sun.star.lang.XMultiServiceFactory
+        com.sun.star.lang.XServiceInfo
+        com.sun.star.lang.XServiceName
+        com.sun.star.lang.XSingleServiceFactory
+        com.sun.star.lang.XTypeProvider
+        com.sun.star.lang.XUnoTunnel
+        com.sun.star.registry.InvalidRegistryException
+        com.sun.star.registry.InvalidValueException
+        com.sun.star.registry.RegistryKeyType
+        com.sun.star.registry.RegistryValueType
+        com.sun.star.registry.XRegistryKey
+        com.sun.star.sheet.Border
+        com.sun.star.sheet.CellDeleteMode
+        com.sun.star.sheet.CellInsertMode
+        com.sun.star.sheet.FillDateMode
+        com.sun.star.sheet.FillDirection
+        com.sun.star.sheet.FillMode
+        com.sun.star.sheet.FilterConnection
+        com.sun.star.sheet.FilterOperator
+        com.sun.star.sheet.GeneralFunction
+        com.sun.star.sheet.GoalResult
+        com.sun.star.sheet.SheetLinkMode
+        com.sun.star.sheet.SubTotalColumn
+        com.sun.star.sheet.TableFilterField
+        com.sun.star.sheet.TableOperationMode
+        com.sun.star.sheet.TablePageBreakData
+        com.sun.star.sheet.XAreaLink
+        com.sun.star.sheet.XAreaLinks
+        com.sun.star.sheet.XArrayFormulaRange
+        com.sun.star.sheet.XCalculatable
+        com.sun.star.sheet.XCellAddressable
+        com.sun.star.sheet.XCellFormatRangesSupplier
+        com.sun.star.sheet.XCellRangeAddressable
+        com.sun.star.sheet.XCellRangeMovement
+        com.sun.star.sheet.XCellRangeReferrer
+        com.sun.star.sheet.XCellRangesQuery
+        com.sun.star.sheet.XCellSeries
+        com.sun.star.sheet.XConsolidatable
+        com.sun.star.sheet.XConsolidationDescriptor
+        com.sun.star.sheet.XDDELink
+        com.sun.star.sheet.XDataPilotDescriptor
+        com.sun.star.sheet.XDataPilotTables
+        com.sun.star.sheet.XDataPilotTablesSupplier
+        com.sun.star.sheet.XDatabaseRange
+        com.sun.star.sheet.XDatabaseRanges
+        com.sun.star.sheet.XDocumentAuditing
+        com.sun.star.sheet.XFillAcrossSheet
+        com.sun.star.sheet.XFormulaQuery
+        com.sun.star.sheet.XGoalSeek
+        com.sun.star.sheet.XLabelRange
+        com.sun.star.sheet.XLabelRanges
+        com.sun.star.sheet.XMultipleOperation
+        com.sun.star.sheet.XNamedRange
+        com.sun.star.sheet.XNamedRanges
+        com.sun.star.sheet.XPrintAreas
+        com.sun.star.sheet.XScenario
+        com.sun.star.sheet.XScenarios
+        com.sun.star.sheet.XScenariosSupplier
+        com.sun.star.sheet.XSheetAnnotation
+        com.sun.star.sheet.XSheetAnnotationAnchor
+        com.sun.star.sheet.XSheetAnnotations
+        com.sun.star.sheet.XSheetAnnotationsSupplier
+        com.sun.star.sheet.XSheetAuditing
+        com.sun.star.sheet.XSheetCellCursor
+        com.sun.star.sheet.XSheetCellRange
+        com.sun.star.sheet.XSheetCellRanges
+        com.sun.star.sheet.XSheetFilterDescriptor
+        com.sun.star.sheet.XSheetFilterable
+        com.sun.star.sheet.XSheetFilterableEx
+        com.sun.star.sheet.XSheetLinkable
+        com.sun.star.sheet.XSheetOperation
+        com.sun.star.sheet.XSheetOutline
+        com.sun.star.sheet.XSheetPageBreak
+        com.sun.star.sheet.XSpreadsheet
+        com.sun.star.sheet.XSpreadsheetDocument
+        com.sun.star.sheet.XSpreadsheets
+        com.sun.star.sheet.XSubTotalCalculatable
+        com.sun.star.sheet.XSubTotalDescriptor
+        com.sun.star.sheet.XSubTotalField
+        com.sun.star.sheet.XUsedAreaCursor
+        com.sun.star.style.XStyle
+        com.sun.star.style.XStyleFamiliesSupplier
+        com.sun.star.style.XStyleLoader
+        com.sun.star.table.CellAddress
+        com.sun.star.table.CellContentType
+        com.sun.star.table.CellRangeAddress
+        com.sun.star.table.TableOrientation
+        com.sun.star.table.XAutoFormattable
+        com.sun.star.table.XCell
+        com.sun.star.table.XCellRange
+        com.sun.star.table.XColumnRowRange
+        com.sun.star.table.XTableCharts
+        com.sun.star.table.XTableChartsSupplier
+        com.sun.star.table.XTableColumns
+        com.sun.star.table.XTableRows
+        com.sun.star.text.XSimpleText
+        com.sun.star.text.XText
+        com.sun.star.text.XTextContent
+        com.sun.star.text.XTextCursor
+        com.sun.star.text.XTextFieldsSupplier
+        com.sun.star.text.XTextRange
+        com.sun.star.uno.Any
+        com.sun.star.uno.Exception
+        com.sun.star.uno.Reference
+        com.sun.star.uno.RuntimeException
+        com.sun.star.uno.Sequence
+        com.sun.star.uno.Type
+        com.sun.star.uno.TypeClass
+        com.sun.star.uno.XAdapter
+        com.sun.star.uno.XAggregation
+        com.sun.star.uno.XInterface
+        com.sun.star.uno.XReference
+        com.sun.star.uno.XWeak
+        com.sun.star.uno.genfunc
+        com.sun.star.util.Date
+        com.sun.star.util.MalformedNumberFormatException
+        com.sun.star.util.URL
+        com.sun.star.util.XImportable
+        com.sun.star.util.XIndent
+        com.sun.star.util.XMergeable
+        com.sun.star.util.XModifiable
+        com.sun.star.util.XModifyBroadcaster
+        com.sun.star.util.XModifyListener
+        com.sun.star.util.XNumberFormats
+        com.sun.star.util.XNumberFormatsSupplier
+        com.sun.star.util.XProtectable
+        com.sun.star.util.XRefreshListener
+        com.sun.star.util.XRefreshable
+        com.sun.star.util.XReplaceDescriptor
+        com.sun.star.util.XReplaceable
+        com.sun.star.util.XSearchDescriptor
+        com.sun.star.util.XSearchable
+        com.sun.star.util.XSortable
+        com.sun.star.view.XPrintable
+    
+    cppu
+    cppuhelper
+    osl
+    rsc
+    rtl
+    sal
+    sfx2
+    so3
+    sot
+    stl
+    svtools
+    svx
+    tools
+    typelib
+    uno
+    unotools
+    vcl
+    vos
+
-- 
cgit