From: John Darrington Date: Sun, 17 Oct 2010 19:04:28 +0000 (+0200) Subject: Merge commit 'origin/master' into sso X-Git-Tag: v0.7.9~159^2~1 X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=a258e53c63a08b0ec48aea8f03808eb651729424;hp=ca5f6bb9df6d4019d777b52da0419d917d4dfc52;p=pspp-builds.git Merge commit 'origin/master' into sso Conflicts: src/ui/gui/psppire-syntax-window.c --- diff --git a/NEWS b/NEWS index a6192187..3c09bf8b 100644 --- a/NEWS +++ b/NEWS @@ -1,17 +1,25 @@ PSPP NEWS -- history of user-visible changes. -Time-stamp: <2010-08-04 22:26:05 blp> +Time-stamp: <2010-10-16 13:05:30 blp> Copyright (C) 1996-9, 2000, 2008, 2009, 2010 Free Software Foundation, Inc. See the end for copying conditions. Please send PSPP bug reports to bug-gnu-pspp@gnu.org. -Changes from 0.7.3 to 0.7.5: +Changes from 0.7.3 to 0.7.6: + + * NPAR TESTS now supports the /KRUSKAL-WALLIS subcommand. + + * AUTORECODE now supports the /GROUP subcommand. * The MRSETS command is now implemented. * SAVE TRANSLATE is now implemented, with initial support for saving data in comma-separated value and tab-delimited formats. + * The PRESERVE and RESTORE commands are now implemented. + + * The HOST command has been updated to use more modern syntax. + Changes from 0.7.2 to 0.7.3: * Charts are now produced with Cairo and Pango, instead of libplot. diff --git a/README.Git b/README.Git index 2cbdb579..70a29ecd 100644 --- a/README.Git +++ b/README.Git @@ -34,11 +34,15 @@ This version of PSPP should work with the Gnulib commit shown below. Gnulib does not maintain a stable API or ABI, so it is possible that PSPP will not work with older or newer versions of Gnulib. - commit b3c3b08eab509ef08c9303b05375088575f8cc1b - Author: Karl Berry - Date: Wed Jun 16 17:30:50 2010 -0700 - update from texinfo + commit 52a32bbd66601d12627e104cd82d9b9094d942c3 + Author: Bruno Haible + Date: Fri Sep 24 14:36:26 2010 +0200 + + unistr/u8-strchr: Fix a test failure on i586 glibc systems. + + * tests/unistr/test-strchr.h (test_strchr): Disable an invalid check. + To clone Gnulib into a directory named "gnulib" using Git, and then check out this particular commit, run these commands: diff --git a/Smake b/Smake index 5362c276..3ca11875 100644 --- a/Smake +++ b/Smake @@ -97,7 +97,7 @@ all: $(GNULIB_TOOL) --import --no-changelog --m4-base=gl/m4 \ --source-base=gl --lib=libgl --tests-base=tests \ --doc-base=gl/doc --aux-dir=build-aux --import \ - $(GNULIB_MODULES) + --libtool $(GNULIB_MODULES) libtoolize --force --automake aclocal -I m4 -I gl/m4 autoconf diff --git a/build-aux/.gitignore b/build-aux/.gitignore new file mode 100644 index 00000000..5a300339 --- /dev/null +++ b/build-aux/.gitignore @@ -0,0 +1,9 @@ +/arg-nonnull.h +/c++defs.h +/config.libpath +/config.rpath +/gitlog-to-changelog +/install-reloc +/reloc-ldflags +/unused-parameter.h +/warn-on-use.h diff --git a/configure.ac b/configure.ac index 177ca576..abf7afad 100644 --- a/configure.ac +++ b/configure.ac @@ -2,7 +2,7 @@ dnl Process this file with autoconf to produce a configure script. dnl Initialize. AC_PREREQ(2.63) -AC_INIT([GNU PSPP], [0.7.5], [bug-gnu-pspp@gnu.org], [pspp]) +AC_INIT([GNU PSPP], [0.7.6], [bug-gnu-pspp@gnu.org], [pspp]) AC_CONFIG_AUX_DIR([build-aux]) AC_CONFIG_HEADERS([config.h]) AC_CONFIG_TESTDIR([tests]) @@ -150,19 +150,22 @@ if test x"$with_libpq" != x"no" && test -n "$PG_CONFIG" ; then LDFLAGS=$save_LDFLAGS]) if test $pspp_cv_have_libpq = yes; then + PSQL_SUPPORT=yes AC_DEFINE([PSQL_SUPPORT], [1], [Define to 1 if building in support for reading from postgres databases.]) else + PSQL_SUPPORT=no PG_CONFIG= PG_CFLAGS= PG_LDFLAGS= PG_LIBS= fi else + PSQL_SUPPORT=no pspp_cv_have_libpq=no fi -AM_CONDITIONAL(PSQL_SUPPORT, test $pspp_cv_have_libpq = yes) +AC_SUBST([PSQL_SUPPORT]) dnl Check for libxml2 PKG_CHECK_MODULES( @@ -204,7 +207,7 @@ if test $HAVE_LIBXML2 = yes && test $HAVE_ZLIB = yes; then else GNM_SUPPORT=no fi -AM_CONDITIONAL([GNM_SUPPORT], [test $GNM_SUPPORT = yes]) +AC_SUBST([GNM_SUPPORT]) dnl ODT support requires libxml2. if test $HAVE_LIBXML2 = yes; then @@ -239,7 +242,9 @@ AC_SUBST([WITH_PERL_MODULE]) AM_CONDITIONAL(WITH_PERL_MODULE, test $WITH_PERL_MODULE = yes) AC_SEARCH_LIBS([cblas_dsdot], [gslcblas],,[PSPP_REQUIRED_PREREQ([libgslcblas])]) -PKG_CHECK_MODULES([GSL], [gsl >= 1.12], [], [PSPP_REQUIRED_PREREQ([gsl 2.0 version 1.12 or later])]) +PKG_CHECK_MODULES([GSL], [gsl >= 1.12], [], + AC_SEARCH_LIBS([gsl_linalg_cholesky_invert], [gsl],,[PSPP_REQUIRED_PREREQ([gsl 2.0 version 1.12 or later])])) + PSPP_GSL_NEEDS_FGNU89_INLINE diff --git a/doc/automake.mk b/doc/automake.mk index af99930f..d3c91a26 100644 --- a/doc/automake.mk +++ b/doc/automake.mk @@ -43,11 +43,11 @@ doc_pspp_dev_TEXINFOS = doc/version-dev.texi \ EXTRA_DIST += doc/pspp.man \ doc/get-commands.pl -doc/ni.texi: $(top_srcdir)/src/language/command.def doc/get-commands.pl +$(srcdir)/doc/ni.texi: $(top_srcdir)/src/language/command.def doc/get-commands.pl @$(MKDIR_P) doc $(PERL) $(top_srcdir)/doc/get-commands.pl $(top_srcdir)/src/language/command.def > $@ -doc/tut.texi: +$(srcdir)/doc/tut.texi: @$(MKDIR_P) doc echo "@set example-dir $(examplesdir)" > $@ diff --git a/doc/files.texi b/doc/files.texi index 707447e0..5f0c527c 100644 --- a/doc/files.texi +++ b/doc/files.texi @@ -485,7 +485,7 @@ The following syntax reads a file in the format used by @samp{/etc/passwd}: @c If you change this example, change the regression test in -@c tests/command/get-data-txt-examples.sh to match. +@c tests/language/data-io/get-data.at to match. @example GET DATA /TYPE=TXT /FILE='/etc/passwd' /DELIMITERS=':' /VARIABLES=username A20 @@ -512,7 +512,7 @@ Accord 2002 26613 17900 EX 1 The following syntax can be used to read the used car data: @c If you change this example, change the regression test in -@c tests/command/get-data-txt-examples.sh to match. +@c tests/language/data-io/get-data.at to match. @example GET DATA /TYPE=TXT /FILE='cars.data' /DELIMITERS=' ' /FIRSTCASE=2 /VARIABLES=model A8 @@ -539,7 +539,7 @@ Consider the following information on animals in a pet store: The following syntax can be used to read the pet store data: @c If you change this example, change the regression test in -@c tests/command/get-data-txt-examples.sh to match. +@c tests/language/data-io/get-data.at to match. @example GET DATA /TYPE=TXT /FILE='pets.data' /DELIMITERS=', ' /QUALIFIER='''"' /ESCAPE /FIRSTCASE=3 @@ -608,7 +608,7 @@ Accord 2002 26613 17900 EX 1 The following syntax can be used to read the used car data: @c If you change this example, change the regression test in -@c tests/command/get-data-txt-examples.sh to match. +@c tests/language/data-io/get-data.at to match. @example GET DATA /TYPE=TXT /FILE='cars.data' /ARRANGEMENT=FIXED /FIRSTCASE=2 /VARIABLES=model 0-7 A diff --git a/doc/not-implemented.texi b/doc/not-implemented.texi index 42e02b7c..39c3a670 100644 --- a/doc/not-implemented.texi +++ b/doc/not-implemented.texi @@ -7,5 +7,5 @@ implemented. @cindex unimplemented commands @cindex commands, unimplemented -@include doc/ni.texi +@include ni.texi diff --git a/doc/statistics.texi b/doc/statistics.texi index c475f306..be696009 100644 --- a/doc/statistics.texi +++ b/doc/statistics.texi @@ -681,6 +681,7 @@ is used. @menu * BINOMIAL:: Binomial Test * CHISQUARE:: Chisquare Test +* KRUSKAL-WALLIS:: Kruskal-Wallis Test * WILCOXON:: Wilcoxon Signed Ranks Test * SIGN:: The Sign Test @end menu @@ -762,6 +763,32 @@ sum of the frequencies need not be 1. If no /EXPECTED subcommand is given, then then equal frequencies are expected. + +@node KRUSKAL-WALLIS +@subsection Kruskal-Wallis Test +@comment node-name, next, previous, up +@vindex KRUSKAL-WALLIS +@vindex K-W +@cindex Kruskal-Wallis test + +@display + [ /KRUSKAL-WALLIS = varlist BY var (lower, upper) ] +@end display + +The Kruskal-Wallis test is used to compare data from an +arbitrary number of populations. It does not assume normality. +The data to be compared are specified by @var{varlist}. +The categorical variable determining the groups to which the +data belongs is given by @var{var}. The limits @var{lower} and +@var{upper} specify the valid range of @var{var}. Any cases for +which @var{var} falls outside [@var{lower}, @var{upper}] will be +ignored. + +The mean rank of each group as well as the chi-squared value and significance +of the test will be printed. +The abbreviated subcommand K-W may be used in place of KRUSKAL-WALLIS. + + @node WILCOXON @subsection Wilcoxon Matched Pairs Signed Ranks Test @comment node-name, next, previous, up diff --git a/doc/transformation.texi b/doc/transformation.texi index 27181b3c..6964facd 100644 --- a/doc/transformation.texi +++ b/doc/transformation.texi @@ -219,8 +219,9 @@ settings (@pxref{SPLIT FILE}). @display AUTORECODE VARIABLES=src_vars INTO dest_vars - /DESCENDING - /PRINT + [ /DESCENDING ] + [ /PRINT ] + [ /GROUP ] @end display The @cmd{AUTORECODE} procedure considers the @var{n} values that a variable @@ -241,6 +242,10 @@ to 1), specify DESCENDING. PRINT is currently ignored. +The GROUP subcommand is relevant only if more than one variable is to be +recoded. It causes a single mapping between source and target values to +be used, instead of one map per variable. + @cmd{AUTORECODE} is a procedure. It causes the data to be read. @node COMPUTE diff --git a/doc/tutorial.texi b/doc/tutorial.texi index 994c0a7f..2432dc3e 100644 --- a/doc/tutorial.texi +++ b/doc/tutorial.texi @@ -1,6 +1,6 @@ @alias prompt = sansserif -@include doc/tut.texi +@include tut.texi @node Using PSPP @chapter Using PSPP diff --git a/doc/utilities.texi b/doc/utilities.texi index 6b248e62..9f57a767 100644 --- a/doc/utilities.texi +++ b/doc/utilities.texi @@ -25,6 +25,7 @@ encountered in the input. * INCLUDE:: Include a file within the current one. * INSERT:: Insert a file within the current one. * PERMISSIONS:: Change permissions on a file. +* PRESERVE and RESTORE:: Saving settings and restoring them later. * SET:: Adjust PSPP runtime parameters. * SHOW:: Display runtime parameters. * SUBTITLE:: Provide a document subtitle. @@ -211,12 +212,19 @@ control to the operating system. @display HOST. +HOST COMMAND=['command'...]. @end display @cmd{HOST} suspends the current PSPP session and temporarily returns control to the operating system. This command cannot be used if the SAFER setting is active. +If the COMMAND subcommand is specified, as a sequence of shell +commands as quoted strings within square brackets, then PSPP executes +them together in a single subshell. + +If no subcommands are specified, then PSPP invokes an interactive +subshell. @node INCLUDE @section INCLUDE @@ -308,6 +316,22 @@ unchanged. This command cannot be used if the SAFER setting is active. +@node PRESERVE and RESTORE +@section PRESERVE and RESTORE +@vindex PRESERVE +@vindex RESTORE + +@display +PRESERVE. +@dots{} +RESTORE. +@end display + +@cmd{PRESERVE} saves all of the settings that @cmd{SET} (@pxref{SET}) +can adjust. A later @cmd{RESTORE} command restores those settings. + +@cmd{PRESERVE} can be nested up to five levels deep. + @node SET @section SET @vindex SET diff --git a/lib/linreg/sweep.c b/lib/linreg/sweep.c index 0dfa71fb..b72d24a7 100644 --- a/lib/linreg/sweep.c +++ b/lib/linreg/sweep.c @@ -169,8 +169,8 @@ reg_sweep (gsl_matrix * A, int last_col) } } gsl_matrix_free (B); - return GSL_SUCCESS; free (ordered_cols); + return GSL_SUCCESS; } return GSL_ENOTSQR; } diff --git a/perl-module/Makefile.PL b/perl-module/Makefile.PL index a3b7b465..a315abbe 100644 --- a/perl-module/Makefile.PL +++ b/perl-module/Makefile.PL @@ -19,7 +19,7 @@ WriteMakefile( PREREQ_PM => {POSIX=>0}, PM => {"lib/PSPP.pm", "\$(INST_LIBDIR)/PSPP.pm"}, ($] >= 5.005 ? ## Add these new keywords supported since 5.005 - (ABSTRACT_FROM => 'lib/PSPP.pm', # retrieve abstract from module + (ABSTRACT => 'Perl extension to PSPP', AUTHOR => 'John Darrington ') : ()), INC => "-I $Locations{SourceDir} -I $Locations{SourceDir}/src -I $Locations{SourceDir}/gl -I $Locations{BuildDir}/gl -I $Locations{BuildDir}", MYEXTLIB => "$Locations{BuildDir}/src/.libs/libpspp-core.\$(SO)", diff --git a/perl-module/PSPP.xs b/perl-module/PSPP.xs index ca3f873a..400aeda7 100644 --- a/perl-module/PSPP.xs +++ b/perl-module/PSPP.xs @@ -166,6 +166,8 @@ MODULE = PSPP MODULE = PSPP PACKAGE = PSPP +PROTOTYPES: ENABLE + void onBoot (ver) const char *ver @@ -654,10 +656,16 @@ CODE: if ( ifmt ) { struct substring ss = ss_cstr (SvPV_nolen (sv)); - if ( ! data_in (ss, LEGACY_NATIVE, ifmt->type, 0, 0, 0, - sfi->dict, - case_data_rw (c, v), - var_get_width (v)) ) + char *error; + bool ok; + + error = data_in (ss, LEGACY_NATIVE, ifmt->type, + case_data_rw (c, v), var_get_width (v), + dict_get_encoding (sfi->dict)); + ok = error == NULL; + free (error); + + if ( !ok ) { RETVAL = 0; goto finish; diff --git a/perl-module/automake.mk b/perl-module/automake.mk index becee71b..93b9bc0e 100644 --- a/perl-module/automake.mk +++ b/perl-module/automake.mk @@ -31,12 +31,12 @@ perl-module/PSPP-Perl-$(VERSION_FOR_PERL).tar.gz: $(module_sources) perl-module/ cd perl-module && $(MAKE) $(AM_MAKEFLAGS) tardist PHONY += module-make -module-make: perl-module/Makefile src/libpspp-core.la +module-make: perl-module/Makefile cd perl-module && $(MAKE) $(AM_MAKEFLAGS) ALL_LOCAL += perl_module_tarball -perl_module_tarball: $(module_sources) - if test x"$(top_builddir)" != x"$(top_srcdir)" ; then \ +perl_module_tarball: $(module_sources) src/libpspp-core.la + @if test x"$(top_builddir)" != x"$(top_srcdir)" ; then \ for f in $(module_sources); do \ destdir=`dirname $$f` ;\ mkdir -p $$destdir ;\ diff --git a/perl-module/t/Pspp.t b/perl-module/t/Pspp.t index d2d473d2..fce5b74d 100644 --- a/perl-module/t/Pspp.t +++ b/perl-module/t/Pspp.t @@ -533,7 +533,7 @@ SYNTAX ok ( !ref $sf, "Returns undef on opening failure"); - ok ("$PSPP::errstr" eq "Error opening \"$tempdir/no-such-file.sav\" for reading as a system file: No such file or directory.", + ok ("$PSPP::errstr" eq "Error opening `$tempdir/no-such-file.sav' for reading as a system file: No such file or directory.", "Error string on open failure"); } diff --git a/po/ca.po b/po/ca.po index a0e3deb2..464b68b9 100644 --- a/po/ca.po +++ b/po/ca.po @@ -4,14 +4,14 @@ # Francisco J. Miguel Quesada , 2009. # Palmira Payá Sanchez, 2009. # Javier Gómez Serrano, 2009. -# +# F. J. Miguel Quesada , 2010. # msgid "" msgstr "" -"Project-Id-Version: pspp-0.7.2-pre1\n" +"Project-Id-Version: pspp-0.7.5\n" "Report-Msgid-Bugs-To: pspp-dev@gnu.org\n" -"POT-Creation-Date: 2010-05-21 12:02+0200\n" -"PO-Revision-Date: 2010-01-24 16:28+0100\n" +"POT-Creation-Date: 2010-05-21 16:40-0700\n" +"PO-Revision-Date: 2010-10-11 13:23+0200\n" "Last-Translator: Francesc Josep Miguel Quesada \n" "Language-Team: Catalan \n" "MIME-Version: 1.0\n" @@ -62,9 +62,9 @@ msgid "Prefer variable labels" msgstr "Prefereixo les etiquetes de variable" #: src/ui/gui/psppire-var-view.c:193 -#, fuzzy, c-format +#, c-format msgid "Var%d" -msgstr "Parell %d" +msgstr "Var%d" #: src/data/any-reader.c:56 #, c-format @@ -93,17 +93,11 @@ msgstr "El dia %d no hi és a l'interval acceptable de 0 a 31." #: src/data/calendar.c:96 #, c-format msgid "Date %04d-%d-%d is before the earliest acceptable date of 1582-10-15." -msgstr "" -"La data %04d-%d-%d és anterior de la data acceptada més antiga, 1582-10-15." +msgstr "La data %04d-%d-%d és anterior de la data acceptada més antiga, 1582-10-15." #: src/data/casereader-filter.c:221 -msgid "" -"At least one case in the data read had a weight value that was user-missing, " -"system-missing, zero, or negative. These case(s) were ignored." -msgstr "" -"Almenys un cas a la lectura de dades tenia un valor de ponderació que és " -"perdut d'usuari, de sistema, zero o negatiu. Aquest(s) cas(os) van ser " -"ignorat(s)." +msgid "At least one case in the data read had a weight value that was user-missing, system-missing, zero, or negative. These case(s) were ignored." +msgstr "Almenys un cas a la lectura de dades tenia un valor de ponderació que és perdut d'usuari, de sistema, zero o negatiu. Aquest(s) cas(os) van ser ignorat(s)." #: src/data/data-in.c:274 src/data/data-in.c:464 msgid "Field contents are not numeric." @@ -155,12 +149,8 @@ msgid "Delimiter expected between fields in date." msgstr "A la data s'espera un delimitador entre els camps." #: src/data/data-in.c:837 -msgid "" -"Unrecognized month format. Months may be specified as Arabic or Roman " -"numerals or as at least 3 letters of their English names." -msgstr "" -"Format de mes no reconegut. Els mesos poden ser especificats com a números " -"Aràbics o Romans, o com a mínim 3 lletres dels seus noms en Anglès." +msgid "Unrecognized month format. Months may be specified as Arabic or Roman numerals or as at least 3 letters of their English names." +msgstr "Format de mes no reconegut. Els mesos poden ser especificats com a números Aràbics o Romans, o com a mínim 3 lletres dels seus noms en Anglès." #: src/data/data-in.c:864 #, c-format @@ -201,12 +191,8 @@ msgid "Minute (%ld) must be between 0 and 59." msgstr "Minut (%ld) ha de ser entre 0 i 59." #: src/data/data-in.c:1014 -msgid "" -"Unrecognized weekday name. At least the first two letters of an English " -"weekday name must be specified." -msgstr "" -"Dia de la setmana no reconegut. Al menys s'han d'especificar les dues " -"primeres lletres del nom en anglès." +msgid "Unrecognized weekday name. At least the first two letters of an English weekday name must be specified." +msgstr "Dia de la setmana no reconegut. Al menys s'han d'especificar les dues primeres lletres del nom en anglès." #: src/data/data-in.c:1152 #, c-format @@ -251,12 +237,8 @@ msgid "scratch" msgstr "zero" #: src/data/dictionary.c:980 -msgid "" -"At least one case in the data file had a weight value that was user-missing, " -"system-missing, zero, or negative. These case(s) were ignored." -msgstr "" -"Almenys un cas a l'arxiu de dades tenia un valor de ponderació que és perdut " -"d'usuari, de sistema, zero o negatiu. Aquest(s) cas(os) van ser ignorat(s)." +msgid "At least one case in the data file had a weight value that was user-missing, system-missing, zero, or negative. These case(s) were ignored." +msgstr "Almenys un cas a l'arxiu de dades tenia un valor de ponderació que és perdut d'usuari, de sistema, zero o negatiu. Aquest(s) cas(os) van ser ignorat(s)." #: src/data/dictionary.c:1283 #, c-format @@ -266,8 +248,7 @@ msgstr "Línia de document tallada a %d bytes." #: src/data/file-handle-def.c:462 #, c-format msgid "Can't read from %s as a %s because it is already being read as a %s." -msgstr "" -"No es pot llegir de %s com una %s perquè ja està sent llegit com una %s." +msgstr "No es pot llegir de %s com una %s perquè ja està sent llegit com una %s." #: src/data/file-handle-def.c:466 #, c-format @@ -282,8 +263,7 @@ msgstr "No es pot tornar a obrir %s com a %s." #: src/data/file-name.c:168 #, c-format msgid "Not opening pipe file `%s' because SAFER option set." -msgstr "" -"No obrir l'arxiu de transferència '%s' perquè l'opció SAFER està activada." +msgstr "No obrir l'arxiu de transferència '%s' perquè l'opció SAFER està activada." #: src/data/format.c:235 msgid "Input format" @@ -306,44 +286,28 @@ msgstr "%s especifica amplada %d, però %s requereix una amplada parell." #: src/data/format.c:260 #, c-format msgid "%s %s specifies width %d, but %s requires a width between %d and %d." -msgstr "" -"%s %s especifica amplada %d, però %s requereix una amplada entre %d i %d." +msgstr "%s %s especifica amplada %d, però %s requereix una amplada entre %d i %d." #: src/data/format.c:269 #, c-format msgid "%s %s specifies %d decimal place, but %s does not allow any decimals." -msgid_plural "" -"%s %s specifies %d decimal places, but %s does not allow any decimals." +msgid_plural "%s %s specifies %d decimal places, but %s does not allow any decimals." msgstr[0] "%s %s especifica %d lloc decimal, però %s no en permet cap." msgstr[1] "%s %s especifica %d llocs decimals, però %s no en permet cap." #: src/data/format.c:280 #, c-format -msgid "" -"%s %s specifies %d decimal place, but the given width allows at most %d " -"decimals." -msgid_plural "" -"%s %s specifies %d decimal places, but the given width allows at most %d " -"decimals." -msgstr[0] "" -"%s %s especifica %d lloc decimal, però l'amplada donada permet com a molt %d " -"decimals." -msgstr[1] "" -"%s %s especifica %d llocs decimals, però l'amplada donada permet com a molt %" -"d decimals." +msgid "%s %s specifies %d decimal place, but the given width allows at most %d decimals." +msgid_plural "%s %s specifies %d decimal places, but the given width allows at most %d decimals." +msgstr[0] "%s %s especifica %d lloc decimal, però l'amplada donada permet com a molt %d decimals." +msgstr[1] "%s %s especifica %d llocs decimals, però l'amplada donada permet com a molt %d decimals." #: src/data/format.c:287 #, c-format -msgid "" -"%s %s specifies %d decimal place, but the given width does not allow for any " -"decimals." -msgid_plural "" -"%s %s specifies %d decimal places, but the given width does not allow for " -"any decimals." -msgstr[0] "" -"%s %s especifica %d lloc decimal, però l'amplada donada no en permet cap." -msgstr[1] "" -"%s %s especifica %d llocs decimals, però l'amplada donada no en permet cap." +msgid "%s %s specifies %d decimal place, but the given width does not allow for any decimals." +msgid_plural "%s %s specifies %d decimal places, but the given width does not allow for any decimals." +msgstr[0] "%s %s especifica %d lloc decimal, però l'amplada donada no en permet cap." +msgstr[1] "%s %s especifica %d llocs decimals, però l'amplada donada no en permet cap." #: src/data/format.c:326 #, c-format @@ -386,11 +350,8 @@ msgid "String variable with width %d is not compatible with format %s." msgstr "Variable de cadena amb amplada %d no és compatible amb el format %s." #: src/data/gnumeric-reader.c:36 -msgid "" -"Support for Gnumeric files was not compiled into this installation of PSPP" -msgstr "" -"Suport per a arxius Gnumeric no va ser compilat en aquesta instal·lació de " -"PSPP" +msgid "Support for Gnumeric files was not compiled into this installation of PSPP" +msgstr "Suport per a arxius Gnumeric no va ser compilat en aquesta instal·lació de PSPP" #: src/data/gnumeric-reader.c:364 #, c-format @@ -458,14 +419,14 @@ msgid "Removing %s: %s." msgstr "Eliminant %s: %s." #: src/data/por-file-reader.c:99 -#, fuzzy, c-format +#, c-format msgid "portable file %s corrupt at offset 0x%llx: " -msgstr "arxiu portàtil %s corromput a la posició 0x%lx: " +msgstr "l'arxiu portàtil %s és trencat a la posició 0x%llx: " #: src/data/por-file-reader.c:128 -#, fuzzy, c-format +#, c-format msgid "reading portable file %s at offset 0x%llx: " -msgstr "llegint l'arxiu portàtil %s en la posició 0x%lx: " +msgstr "Llegint l'arxiu portàtil %s en la posició 0x%llx: " #: src/data/por-file-reader.c:156 #, c-format @@ -484,8 +445,7 @@ msgstr "arxiu portàtil" #: src/data/por-file-reader.c:275 #, c-format -msgid "" -"An error occurred while opening \"%s\" for reading as a portable file: %s." +msgid "An error occurred while opening \"%s\" for reading as a portable file: %s." msgstr "Error en obrir \"%s\" per a la lectura com a arxiu portàtil: %s." #: src/data/por-file-reader.c:296 @@ -531,12 +491,8 @@ msgstr "Longitud de cadena de temps %zu invàlida." #: src/data/por-file-reader.c:593 #, c-format -msgid "" -"%s: Bad format specifier byte (%d). Variable will be assigned a default " -"format." -msgstr "" -"%s: Byte especificador de format invàlid (%d). S'assignarà el format " -"predeterminat a la variable." +msgid "%s: Bad format specifier byte (%d). Variable will be assigned a default format." +msgstr "%s: Byte especificador de format invàlid (%d). S'assignarà el format predeterminat a la variable." #: src/data/por-file-reader.c:614 #, c-format @@ -546,9 +502,7 @@ msgstr "La variable numèrica %s té una especificació de format invàlida %s." #: src/data/por-file-reader.c:618 #, c-format msgid "String variable %s with width %d has invalid format specifier %s." -msgstr "" -"La variable en cadena %s amb longitud %d té una especificació de format " -"invàlida %s." +msgstr "La variable en cadena %s amb longitud %d té una especificació de format invàlida %s." #: src/data/por-file-reader.c:642 msgid "Expected variable count record." @@ -605,11 +559,8 @@ msgstr "Variable %s desconeguda mentre s'analitzaven les etiquetes de valor." #: src/data/por-file-reader.c:797 #, c-format -msgid "" -"Cannot assign value labels to %s and %s, which have different variable types." -msgstr "" -"No es pot assignar etiquetes de valor a %s i %s, que tenen diferent tipus de " -"variables." +msgid "Cannot assign value labels to %s and %s, which have different variable types." +msgstr "No es pot assignar etiquetes de valor a %s i %s, que tenen diferent tipus de variables." #: src/data/por-file-writer.c:141 #, c-format @@ -627,12 +578,8 @@ msgid "An I/O error occurred writing portable file \"%s\"." msgstr "Error I/O en escriure l'arxiu portàtil \"%s\"." #: src/data/psql-reader.c:46 -msgid "" -"Support for reading postgres databases was not compiled into this " -"installation of PSPP" -msgstr "" -"El suport per a la lectura de les bases de dades postgres no va ser compilat " -"en aquesta instal·lació de PSPP" +msgid "Support for reading postgres databases was not compiled into this installation of PSPP" +msgstr "El suport per a la lectura de les bases de dades postgres no va ser compilat en aquesta instal·lació de PSPP" #: src/data/psql-reader.c:242 msgid "Memory error whilst opening psql source" @@ -645,20 +592,12 @@ msgstr "Error obrint la font psql: %s." #: src/data/psql-reader.c:263 #, c-format -msgid "" -"Postgres server is version %s. Reading from versions earlier than 8.0 is not " -"supported." -msgstr "" -"La versió del servidor Postgres és la %s. No es possible la lectura des de " -"versions anteriors a la 8.0." +msgid "Postgres server is version %s. Reading from versions earlier than 8.0 is not supported." +msgstr "La versió del servidor Postgres és la %s. No es possible la lectura des de versions anteriors a la 8.0." #: src/data/psql-reader.c:283 -msgid "" -"Connection is unencrypted, but unencrypted connections have not been " -"permitted." -msgstr "" -"La connexió no està xifrada, però les connexions sense xifrar no estan " -"permeses." +msgid "Connection is unencrypted, but unencrypted connections have not been permitted." +msgstr "La connexió no està xifrada, però les connexions sense xifrar no estan permeses." #: src/data/psql-reader.c:322 src/data/psql-reader.c:347 #: src/data/psql-reader.c:357 @@ -673,12 +612,8 @@ msgstr "OID %d no admès. Valors SYSMIS seran inserits." #: src/data/scratch-reader.c:54 #, c-format -msgid "" -"Scratch file handle %s has not yet been written, using SAVE or another " -"procedure, so it cannot yet be used for reading." -msgstr "" -"El manipulador de l'arxius de treball %s encara no s'ha escrit, utilitzant " -"SAVE o altre procediment, de manera que encara no es pot llegir." +msgid "Scratch file handle %s has not yet been written, using SAVE or another procedure, so it cannot yet be used for reading." +msgstr "El manipulador de l'arxius de treball %s encara no s'ha escrit, utilitzant SAVE o altre procediment, de manera que encara no es pot llegir." #. TRANSLATORS: this fragment will be interpolated into #. messages in fh_lock() that identify types of files. @@ -688,12 +623,8 @@ msgstr "arxiu de treball" #: src/data/settings.c:608 #, c-format -msgid "" -"%s: Custom currency string `%s' does not contain exactly three periods or " -"commas (or it contains both)." -msgstr "" -"%s: Cadena de moneda personalitzada '%s' no conté exactament tres punts o " -"comes (o els conté ambdós)." +msgid "%s: Custom currency string `%s' does not contain exactly three periods or commas (or it contains both)." +msgstr "%s: Cadena de moneda personalitzada '%s' no conté exactament tres punts o comes (o els conté ambdós)." #: src/data/short-names.c:52 msgid "Variable suffix too large." @@ -702,9 +633,7 @@ msgstr "Sufix de la variable massa gran." #: src/data/sys-file-reader.c:226 #, c-format msgid "Recoded variable name duplicates an existing `%s' within system file." -msgstr "" -"El nom de la variable recodificada duplica `%s' existent dins de l'arxiu de " -"sistema." +msgstr "El nom de la variable recodificada duplica `%s' existent dins de l'arxiu de sistema." #. TRANSLATORS: this fragment will be interpolated into #. messages in fh_lock() that identify types of files. @@ -729,9 +658,7 @@ msgstr "Tipus de registre %d no reconegut." #: src/data/sys-file-reader.c:388 #, c-format msgid "File header claims %d variable positions but %d were read from file." -msgstr "" -"Capçalera de l'arxiu requereix %d posicions de variable, però s'han llegit %" -"d des de l'arxiu." +msgstr "Capçalera de l'arxiu requereix %d posicions de variable, però s'han llegit %d des de l'arxiu." #: src/data/sys-file-reader.c:428 #, c-format @@ -744,12 +671,8 @@ msgid "This is not an SPSS system file." msgstr "Això no és un arxiu de sistema de SPSS." #: src/data/sys-file-reader.c:525 tests/dissect-sysfile.c:227 -msgid "" -"Compression bias is not the usual value of 100, or system file uses " -"unrecognized floating-point format." -msgstr "" -"El biaix de compressió no és el valor habitual de 100, o l'arxiu de sistema " -"utilitza un format de punt flotant no reconegut." +msgid "Compression bias is not the usual value of 100, or system file uses unrecognized floating-point format." +msgstr "El biaix de compressió no és el valor habitual de 100, o l'arxiu de sistema utilitza un format de punt flotant no reconegut." #: src/data/sys-file-reader.c:602 #, c-format @@ -767,8 +690,7 @@ msgstr "Camp indicador d'etiqueta de variable no és 0 o 1." #: src/data/sys-file-reader.c:649 tests/dissect-sysfile.c:387 msgid "Numeric missing value indicator field is not -3, -2, 0, 1, 2, or 3." -msgstr "" -"Camp d'indicador de valors perduts numèrics no és -3, -2, 0, 1, 2 o 3." +msgstr "Camp d'indicador de valors perduts numèrics no és -3, -2, 0, 1, 2 o 3." #: src/data/sys-file-reader.c:667 tests/dissect-sysfile.c:402 msgid "String missing value indicator field is not 0, 1, 2, or 3." @@ -819,45 +741,31 @@ msgstr "Una línia del document conté un byte nul." #: src/data/sys-file-reader.c:893 #, c-format -msgid "" -"Unrecognized record type 7, subtype %d. Please send a copy of this file, " -"and the syntax which created it to %s" -msgstr "" -"Registre de tipus 7, subtipus %d , no reconegut. Si us plau envieu una còpia " -"d'aquest arxiu, així com de la sintaxi que el va crear a %s" +msgid "Unrecognized record type 7, subtype %d. Please send a copy of this file, and the syntax which created it to %s" +msgstr "Registre de tipus 7, subtipus %d , no reconegut. Si us plau envieu una còpia d'aquest arxiu, així com de la sintaxi que el va crear a %s" #: src/data/sys-file-reader.c:920 tests/dissect-sysfile.c:594 #, c-format msgid "Bad size (%zu) or count (%zu) field on record type 7, subtype 3." -msgstr "" -"Camp de longitud (%zu) o quantitat (%zu) invàlids en el registre tipus 7, " -"subtipus 3." +msgstr "Camp de longitud (%zu) o quantitat (%zu) invàlids en el registre tipus 7, subtipus 3." #: src/data/sys-file-reader.c:940 #, c-format -msgid "" -"Floating-point representation indicated by system file (%d) differs from " -"expected (%d)." -msgstr "" -"Representació del punt flotant indicat per l'arxiu de sistema (%d) difereix " -"de l'esperat (%d)." +msgid "Floating-point representation indicated by system file (%d) differs from expected (%d)." +msgstr "Representació del punt flotant indicat per l'arxiu de sistema (%d) difereix de l'esperat (%d)." #: src/data/sys-file-reader.c:953 src/language/dictionary/sys-file-info.c:110 -#, fuzzy msgid "Little Endian" -msgstr "Little Endian." +msgstr "Tipus Little-Endian." #: src/data/sys-file-reader.c:953 src/language/dictionary/sys-file-info.c:109 -#, fuzzy msgid "Big Endian" -msgstr "Big Endian." +msgstr "Tipus Big-Endian." #: src/data/sys-file-reader.c:954 #, c-format -msgid "" -"Integer format indicated by system file (%s) differs from expected (%s)." -msgstr "" -"Format enter indicat per l'arxiu de sistema (%s) difereix de l'esperat (%s)." +msgid "Integer format indicated by system file (%s) differs from expected (%s)." +msgstr "Format enter indicat per l'arxiu de sistema (%s) difereix de l'esperat (%s)." #: src/data/sys-file-reader.c:1011 tests/dissect-sysfile.c:625 #, c-format @@ -874,51 +782,47 @@ msgstr "L'arxiu especifica un valor inesperat %g com a %s." #: src/data/sys-file-reader.c:1056 #, c-format msgid "Missing space following 'C' at offset %zu in MRSETS record" -msgstr "" +msgstr "Espai perdut darrera 'C' en la possició %zu a registre MRSETS" #: src/data/sys-file-reader.c:1074 tests/dissect-sysfile.c:691 #, c-format msgid "Missing space following 'E' at offset %zu in MRSETS record" -msgstr "" +msgstr "Espai perdut darrera 'E' en la possició %zu a registre MRSETS" #: src/data/sys-file-reader.c:1083 tests/dissect-sysfile.c:700 #, c-format -msgid "" -"Unexpected label source value \"%s\" following 'E' at offset %zu in MRSETS " -"record" -msgstr "" +msgid "Unexpected label source value \"%s\" following 'E' at offset %zu in MRSETS record" +msgstr "Valor d'etiqueta no esperat \"%s\" darrera 'E' en la possició %zu a registre MRSETS" #: src/data/sys-file-reader.c:1089 #, c-format msgid "Missing 'C', 'D', or 'E' at offset %zu in MRSETS record." -msgstr "" +msgstr "Manca 'C', 'D' o 'E' en la possició %zu a registre MRSETS" #: src/data/sys-file-reader.c:1118 #, c-format msgid "Missing new-line parsing variable names at offset %zu in MRSETS record." -msgstr "" +msgstr "Manca nom de variables de nova línia en la possició %zu a registre MRSETS" #: src/data/sys-file-reader.c:1129 -#, fuzzy, c-format +#, c-format msgid "Duplicate variable name %s at offset %zu in MRSETS record." -msgstr "Nom de la variable %s duplicat en la posició %d." +msgstr "Nom de la variable %s duplicat en la posició %zu a registre MRSET." #: src/data/sys-file-reader.c:1142 -#, fuzzy, c-format +#, c-format msgid "MRSET %s contains both string and numeric variables." -msgstr "" -"Ignorant el registre del valor de cadena llarga per a la variable numèrica %" -"s." +msgstr "MRSET %s contè variables textuals i numeriques." #: src/data/sys-file-reader.c:1157 #, c-format msgid "MRSET %s has only %zu variables." -msgstr "" +msgstr "MRSET %s nomès te %zu variables." #: src/data/sys-file-reader.c:1194 tests/dissect-sysfile.c:758 #, c-format msgid "Bad size %zu on extension 11." -msgstr "Longitud no vàlid %zu en l'extensió 11." +msgstr "Amplada no vàlida %zu en l'extensió 11." #: src/data/sys-file-reader.c:1206 tests/dissect-sysfile.c:770 #, c-format @@ -927,19 +831,13 @@ msgstr "Extensió 11 té un recompte invàlid %zu (per a %zu variables)." #: src/data/sys-file-reader.c:1227 #, c-format -msgid "" -"Invalid variable display parameters for variable %zu (%s). Default " -"parameters substituted." -msgstr "" -"Paràmetres de visualització de variable no vàlids per a la variable %zu (%" -"s). Substitució pels paràmetres per defecte." +msgid "Invalid variable display parameters for variable %zu (%s). Default parameters substituted." +msgstr "Paràmetres de visualització de variable no vàlids per a la variable %zu (%s). Substitució pels paràmetres per defecte." #: src/data/sys-file-reader.c:1271 #, c-format msgid "Long variable mapping from %s to invalid variable name `%s'." -msgstr "" -"Identificació de variable llarga des de %s cap a un nom de variable invàlid " -"'%s'." +msgstr "Identificació de variable llarga des de %s cap a un nom de variable invàlid '%s'." #: src/data/sys-file-reader.c:1281 #, c-format @@ -949,18 +847,12 @@ msgstr "Nom de la variable llarga '%s' duplicat dins de l'arxiu de sistema." #: src/data/sys-file-reader.c:1334 #, c-format msgid "%s listed as string of invalid length %s in very length string record." -msgstr "" -"%s figura com a cadena de longitud no vàlida %s en un registre de cadena " -"molt llarg." +msgstr "%s figura com a cadena de longitud no vàlida %s en un registre de cadena molt llarg." #: src/data/sys-file-reader.c:1344 #, c-format -msgid "" -"%s listed in very long string record with width %s, which requires only one " -"segment." -msgstr "" -"%s figura en el registre de cadena molt llarga amb longitud %s, que " -"requereix només un segment." +msgid "%s listed in very long string record with width %s, which requires only one segment." +msgstr "%s figura en el registre de cadena molt llarga amb longitud %s, que requereix només un segment." #: src/data/sys-file-reader.c:1350 #, c-format @@ -969,11 +861,8 @@ msgstr "Cadena molt llarga %s desborda el diccionari." #: src/data/sys-file-reader.c:1364 #, c-format -msgid "" -"Very long string with width %ld has segment %d of width %d (expected %d)" -msgstr "" -"Cadena molt llarga amb una longitud de %ld té un segment %d de longitud %d " -"(s'espera %d)" +msgid "Very long string with width %ld has segment %d of width %d (expected %d)" +msgstr "Cadena molt llarga amb una longitud de %ld té un segment %d de longitud %d (s'espera %d)" #: src/data/sys-file-reader.c:1410 #, c-format @@ -981,39 +870,23 @@ msgid "Invalid number of labels: %d. Ignoring labels." msgstr "Nombre d'etiquetes invàlid: %d. Ignorant etiquetes." #: src/data/sys-file-reader.c:1441 tests/dissect-sysfile.c:468 -msgid "" -"Variable index record (type 4) does not immediately follow value label " -"record (type 3) as it should." -msgstr "" -"Registre d'índex de variable (tipus 4) no és seguit immediatament pel " -"registre d'etiquetes de valors (tipus 3) com hauria." +msgid "Variable index record (type 4) does not immediately follow value label record (type 3) as it should." +msgstr "Registre d'índex de variable (tipus 4) no és seguit immediatament pel registre d'etiquetes de valors (tipus 3) com hauria." #: src/data/sys-file-reader.c:1448 #, c-format -msgid "" -"Number of variables associated with a value label (%d) is not between 1 and " -"the number of variables (%zu)." -msgstr "" -"Nombre de variables associades amb una etiqueta de valors (%d) no està entre " -"1 i el nombre de variables (%zu)." +msgid "Number of variables associated with a value label (%d) is not between 1 and the number of variables (%zu)." +msgstr "Nombre de variables associades amb una etiqueta de valors (%d) no està entre 1 i el nombre de variables (%zu)." #: src/data/sys-file-reader.c:1459 #, c-format -msgid "" -"Value labels may not be added to long string variables (e.g. %s) using " -"records types 3 and 4." -msgstr "" -"No es pot afegir etiquetes dels valors a les variables de cadena llarga (e." -"g. %s) utilitzant els tipus de registres 3 i 4." +msgid "Value labels may not be added to long string variables (e.g. %s) using records types 3 and 4." +msgstr "No es pot afegir etiquetes dels valors a les variables de cadena llarga (e.g. %s) utilitzant els tipus de registres 3 i 4." #: src/data/sys-file-reader.c:1468 #, c-format -msgid "" -"Variables associated with value label are not all of identical type. " -"Variable %s is %s, but variable %s is %s." -msgstr "" -"Les variables associades amb etiqueta de valors no són totes del mateix " -"tipus. La variable %s és %s, però la variable %s és %s." +msgid "Variables associated with value label are not all of identical type. Variable %s is %s, but variable %s is %s." +msgstr "Les variables associades amb etiqueta de valors no són totes del mateix tipus. La variable %s és %s, però la variable %s és %s." #: src/data/sys-file-reader.c:1502 #, c-format @@ -1037,44 +910,28 @@ msgstr "El valor de l'atribut %s[%d] no esta entre cometes: %s" #: src/data/sys-file-reader.c:1620 tests/dissect-sysfile.c:936 #, c-format -msgid "" -"Variable name length in long string value label record (%d) exceeds %d-byte " -"limit." -msgstr "" -"La longitud del nom de la variable al registre de l'etiqueta del valor de " -"cadena llarga (%d) supera el límit %d-byte." +msgid "Variable name length in long string value label record (%d) exceeds %d-byte limit." +msgstr "La longitud del nom de la variable al registre de l'etiqueta del valor de cadena llarga (%d) supera el límit %d-byte." #: src/data/sys-file-reader.c:1630 #, c-format msgid "Ignoring long string value record for unknown variable %s." -msgstr "" -"Ignorant el registre del valor de cadena llarga per a la variable " -"desconeguda %s." +msgstr "Ignorant el registre del valor de cadena llarga per a la variable desconeguda %s." #: src/data/sys-file-reader.c:1637 #, c-format msgid "Ignoring long string value record for numeric variable %s." -msgstr "" -"Ignorant el registre del valor de cadena llarga per a la variable numèrica %" -"s." +msgstr "Ignorant el registre del valor de cadena llarga per a la variable numèrica %s." #: src/data/sys-file-reader.c:1644 #, c-format -msgid "" -"Ignoring long string value record for variable %s because the record's width " -"(%d) does not match the variable's width (%d)" -msgstr "" -"Ignorant el registre del valor de cadena llarga %s ja que l'amplada del " -"registre (%d) no coincideix amb l'amplada de la variable (%d)" +msgid "Ignoring long string value record for variable %s because the record's width (%d) does not match the variable's width (%d)" +msgstr "Ignorant el registre del valor de cadena llarga %s ja que l'amplada del registre (%d) no coincideix amb l'amplada de la variable (%d)" #: src/data/sys-file-reader.c:1666 #, c-format -msgid "" -"Ignoring long string value %zu for variable %s, with width %d, that has bad " -"value width %zu." -msgstr "" -"Ignorant el valor de cadena llarga %zu per a la variable %s, d'amplada %d, " -"que té una amplada de valor incorrecta %zu." +msgid "Ignoring long string value %zu for variable %s, with width %d, that has bad value width %zu." +msgstr "Ignorant el valor de cadena llarga %zu per a la variable %s, d'amplada %d, que té una amplada de valor incorrecta %zu." #: src/data/sys-file-reader.c:1781 msgid "File ends in partial case." @@ -1086,17 +943,13 @@ msgid "Error reading case from file %s." msgstr "Error llegint un cas de l'arxiu %s." #: src/data/sys-file-reader.c:1890 -msgid "" -"Possible compressed data corruption: compressed spaces appear in numeric " -"field." -msgstr "" +msgid "Possible compressed data corruption: compressed spaces appear in numeric field." +msgstr "Possible corrupció de dades comprimides: apareixen espais comprimits a un camp numeric." #: src/data/sys-file-reader.c:1943 #, c-format -msgid "" -"Possible compressed data corruption: string contains compressed integer " -"(opcode %d)" -msgstr "" +msgid "Possible compressed data corruption: string contains compressed integer (opcode %d)" +msgstr "Possible corrupció de dades comprimides: una cadena textual contè un enter comprimit (opcode %d)." #: src/data/sys-file-reader.c:2035 #, c-format @@ -1106,8 +959,7 @@ msgstr "Índex de la variable %d no en l'interval vàlid de 1...%d." #: src/data/sys-file-reader.c:2040 #, c-format msgid "Variable index %d refers to long string continuation." -msgstr "" -"Índex de la variable %d es refereix a una continuació de cadena llarga." +msgstr "Índex de la variable %d es refereix a una continuació de cadena llarga." #: src/data/sys-file-reader.c:2108 #, c-format @@ -1115,29 +967,29 @@ msgid "Suppressed %d additional related warnings." msgstr "Suprimides %d advertències addicionals." #: src/data/sys-file-reader.c:2153 src/data/sys-file-reader.c:2170 -#, fuzzy, c-format +#, c-format msgid "Dictionary record refers to unknown variable %s." -msgstr "Mapa de la variable es refereix a una variable desconeguda %s." +msgstr "El registre diccionari es refereix a la variable desconeguda %s." #: src/data/sys-file-reader.c:2231 #, c-format msgid "Expecting digit at offset %zu in MRSETS record." -msgstr "" +msgstr "S'espera un dígit en la posició %zu a registre MRSETS." #: src/data/sys-file-reader.c:2238 #, c-format msgid "Expecting space at offset %zu in MRSETS record." -msgstr "" +msgstr "S'espera un espai en la posició %zu a registre MRSETS." #: src/data/sys-file-reader.c:2245 #, c-format msgid "%zu-byte string starting at offset %zu exceeds record length %zu." -msgstr "" +msgstr "El text de %zu-byte que comença en la posició %zu excedeix la llargada del registre %zu. " #: src/data/sys-file-reader.c:2255 #, c-format msgid "Expecting space at offset %zu following %zu-byte string." -msgstr "" +msgstr "S'espera un espai en la posició %zu darrera dun text %zu-byte." #: src/data/sys-file-reader.c:2347 tests/dissect-sysfile.c:1341 #, c-format @@ -1165,12 +1017,8 @@ msgstr "S'ha produït un error de E/S al desar l'arxiu de sistema \"%s\"." #: src/data/variable.c:206 #, c-format -msgid "" -"Character `%c' (in %s) may not appear as the first character in a variable " -"name." -msgstr "" -"Caràcter '%c' (em %s) no pot aparèixer com el primer caràcter en un nom de " -"variable." +msgid "Character `%c' (in %s) may not appear as the first character in a variable name." +msgstr "Caràcter '%c' (em %s) no pot aparèixer com el primer caràcter en un nom de variable." #: src/data/variable.c:218 #, c-format @@ -1189,9 +1037,7 @@ msgstr "El nom de la variable %s supera el límit de %d caràcters." #: src/data/variable.c:258 #, c-format msgid "`%s' may not be used as a variable name because it is a reserved word." -msgstr "" -"'%s' no pot ser utilitzat com a nom de variable perquè es una paraula " -"reservada." +msgstr "'%s' no pot ser utilitzat com a nom de variable perquè es una paraula reservada." #: src/language/syntax-file.c:95 #, c-format @@ -1259,38 +1105,23 @@ msgstr "%s només es permet dins de FILE TYPE." #: src/language/command.c:642 #, c-format -msgid "" -"%s is allowed only before the active file has been defined or inside INPUT " -"PROGRAM." -msgstr "" -"%s només es permet abans que l'arxiu actiu s'ha definit o dins de INPUT " -"PROGRAM." +msgid "%s is allowed only before the active file has been defined or inside INPUT PROGRAM." +msgstr "%s només es permet abans que l'arxiu actiu s'ha definit o dins de INPUT PROGRAM." #: src/language/command.c:646 #, c-format -msgid "" -"%s is allowed only before the active file has been defined or inside FILE " -"TYPE." -msgstr "" -"%s només es permet abans que l'arxiu actiu s'ha definit o dins de FILE TYPE." +msgid "%s is allowed only before the active file has been defined or inside FILE TYPE." +msgstr "%s només es permet abans que l'arxiu actiu s'ha definit o dins de FILE TYPE." #: src/language/command.c:650 #, c-format -msgid "" -"%s is allowed only after the active file has been defined or inside INPUT " -"PROGRAM." -msgstr "" -"%s només es permet després que l'arxiu actiu s'ha definit, o dins de INPUT " -"PROGRAM." +msgid "%s is allowed only after the active file has been defined or inside INPUT PROGRAM." +msgstr "%s només es permet després que l'arxiu actiu s'ha definit, o dins de INPUT PROGRAM." #: src/language/command.c:654 #, c-format -msgid "" -"%s is allowed only after the active file has been defined or inside FILE " -"TYPE." -msgstr "" -"%s només es permet després que l'arxiu actiu s'ha definit, o dins de FILE " -"TYPE." +msgid "%s is allowed only after the active file has been defined or inside FILE TYPE." +msgstr "%s només es permet després que l'arxiu actiu s'ha definit, o dins de FILE TYPE." #: src/language/command.c:658 #, c-format @@ -1299,26 +1130,18 @@ msgstr "%s només es permet dins de INPUT PROGRAM o FILE TYPE." #: src/language/command.c:664 #, c-format -msgid "" -"%s is allowed only after the active file has been defined, inside INPUT " -"PROGRAM, or inside FILE TYPE." -msgstr "" -"%s només es permet després que l'arxiu actiu s'ha definit, dins de INPUT " -"PROGRAM, o FILE TYPE." +msgid "%s is allowed only after the active file has been defined, inside INPUT PROGRAM, or inside FILE TYPE." +msgstr "%s només es permet després que l'arxiu actiu s'ha definit, dins de INPUT PROGRAM, o FILE TYPE." #: src/language/command.c:669 #, c-format -msgid "" -"%s is allowed only before the active file has been defined, inside INPUT " -"PROGRAM, or inside FILE TYPE." -msgstr "" -"%s només es permet abans que l'arxiu actiu s'ha definit, dins de INPUT " -"PROGRAM, o FILE TYPE." +msgid "%s is allowed only before the active file has been defined, inside INPUT PROGRAM, or inside FILE TYPE." +msgstr "%s només es permet abans que l'arxiu actiu s'ha definit, dins de INPUT PROGRAM, o FILE TYPE." #: src/language/command.c:687 src/language/command.c:689 -#, fuzzy, c-format +#, c-format msgid "%s is not allowed inside %s." -msgstr "%s no es permet dins de FILE TYPE." +msgstr "%s no és permes dins de %s." #: src/language/command.c:768 src/language/command.c:876 #: src/language/utilities/permissions.c:98 @@ -1460,12 +1283,8 @@ msgstr "esperant el tipus de format" #: src/language/lexer/value-parser.c:60 #, c-format -msgid "" -"Low end of range (%g) is below high end (%g). The range will be treated as " -"reversed." -msgstr "" -"El límit inferior de l'interval (%g) està per sota del límit superior (%g). " -"L' interval serà invertit." +msgid "Low end of range (%g) is below high end (%g). The range will be treated as reversed." +msgstr "El límit inferior de l'interval (%g) està per sota del límit superior (%g). L' interval serà invertit." #: src/language/lexer/value-parser.c:68 #, c-format @@ -1495,17 +1314,13 @@ msgstr "%s no és un nom de variable." #: src/language/lexer/variable-parser.c:178 #, c-format -msgid "" -"%s is not a numeric variable. It will not be included in the variable list." -msgstr "" -"%s no és una variable numèrica. No serà inclosa a la llista de variables." +msgid "%s is not a numeric variable. It will not be included in the variable list." +msgstr "%s no és una variable numèrica. No serà inclosa a la llista de variables." #: src/language/lexer/variable-parser.c:181 #, c-format -msgid "" -"%s is not a string variable. It will not be included in the variable list." -msgstr "" -"%s no és una variable de cadena. No serà inclosa a la llista de variables." +msgid "%s is not a string variable. It will not be included in the variable list." +msgstr "%s no és una variable de cadena. No serà inclosa a la llista de variables." #: src/language/lexer/variable-parser.c:185 #, c-format @@ -1514,21 +1329,13 @@ msgstr "Les variables de treball (com ara %s) no estan permeses aquí." #: src/language/lexer/variable-parser.c:189 #, c-format -msgid "" -"%s and %s are not the same type. All variables in this variable list must " -"be of the same type. %s will be omitted from the list." -msgstr "" -"%s i %s no són del mateix tipus. Totes les variables d'aquesta llista han de " -"ser del mateix tipus. %s serà omesa de la llista." +msgid "%s and %s are not the same type. All variables in this variable list must be of the same type. %s will be omitted from the list." +msgstr "%s i %s no són del mateix tipus. Totes les variables d'aquesta llista han de ser del mateix tipus. %s serà omesa de la llista." #: src/language/lexer/variable-parser.c:195 #, c-format -msgid "" -"%s and %s are string variables with different widths. All variables in this " -"variable list must have the same width. %s will be omitted from the list." -msgstr "" -"%s i %s són variables de cadena amb tamanys diferents. Totes les variables " -"d'aquesta llista han de tenir la mateixa amplada. %s serà omesa de la llista." +msgid "%s and %s are string variables with different widths. All variables in this variable list must have the same width. %s will be omitted from the list." +msgstr "%s i %s són variables de cadena amb tamanys diferents. Totes les variables d'aquesta llista han de tenir la mateixa amplada. %s serà omesa de la llista." #: src/language/lexer/variable-parser.c:200 #: src/language/lexer/variable-parser.c:496 @@ -1539,19 +1346,12 @@ msgstr "La variable %s apareix dues vegades en la llista de variables." #: src/language/lexer/variable-parser.c:313 #, c-format msgid "%s TO %s is not valid syntax since %s precedes %s in the dictionary." -msgstr "" -"%s TO %s no és una sintaxi vàlida atès que %s precedeix %s en el diccionari." +msgstr "%s TO %s no és una sintaxi vàlida atès que %s precedeix %s en el diccionari." #: src/language/lexer/variable-parser.c:321 #, c-format -msgid "" -"When using the TO keyword to specify several variables, both variables must " -"be from the same variable dictionaries, of either ordinary, scratch, or " -"system variables. %s is a %s variable, whereas %s is %s." -msgstr "" -"Quan s'utilitza la paraula clau TO per especificar diverses variables, " -"ambdues han de ser del mateix diccionari de variables, ja siguin ordinals, " -"scratch, o variables de sistema. %s és una variable %s, atès que %s és %s." +msgid "When using the TO keyword to specify several variables, both variables must be from the same variable dictionaries, of either ordinary, scratch, or system variables. %s is a %s variable, whereas %s is %s." +msgstr "Quan s'utilitza la paraula clau TO per especificar diverses variables, ambdues han de ser del mateix diccionari de variables, ja siguin ordinals, scratch, o variables de sistema. %s és una variable %s, atès que %s és %s." #: src/language/lexer/variable-parser.c:395 msgid "incorrect use of TO convention" @@ -1571,19 +1371,13 @@ msgstr "Límits incorrectes en l'ús de la convenció TO." #: src/language/xforms/compute.c:149 src/language/xforms/compute.c:203 #, c-format -msgid "" -"When executing COMPUTE: SYSMIS is not a valid value as an index into vector %" -"s." -msgstr "" -"Quan s'executa COMPUTE: SYSMIS no és un valor vàlid com a índex en el vector " -"%s." +msgid "When executing COMPUTE: SYSMIS is not a valid value as an index into vector %s." +msgstr "Quan s'executa COMPUTE: SYSMIS no és un valor vàlid com a índex en el vector %s." #: src/language/xforms/compute.c:153 src/language/xforms/compute.c:210 #, c-format -msgid "" -"When executing COMPUTE: %g is not a valid value as an index into vector %s." -msgstr "" -"Quan s'executa COMPUTE: %g no és un valor vàlid com a índex en el vector %s." +msgid "When executing COMPUTE: %g is not a valid value as an index into vector %s." +msgstr "Quan s'executa COMPUTE: %g no és un valor vàlid com a índex en el vector %s." #: src/language/xforms/compute.c:353 #, c-format @@ -1604,17 +1398,12 @@ msgid "Cannot sample %d observations from a population of %d." msgstr "No es pot fer una mostra de %d observacions d'una població de %d." #: src/language/xforms/recode.c:248 -msgid "" -"Inconsistent target variable types. Target variables must be all numeric or " -"all string." -msgstr "" -"Tipus inconsistent de variables objectiu. Les variables objectiu han de ser " -"totes, o bé de cadena o bé numèriques." +msgid "Inconsistent target variable types. Target variables must be all numeric or all string." +msgstr "Tipus inconsistent de variables objectiu. Les variables objectiu han de ser totes, o bé de cadena o bé numèriques." #: src/language/xforms/recode.c:269 msgid "CONVERT requires string input values and numeric output values." -msgstr "" -"CONVERT requereix valors d'entrada de cadena i valors de sortida numèrics. " +msgstr "CONVERT requereix valors d'entrada de cadena i valors de sortida numèrics. " #: src/language/xforms/recode.c:324 msgid "THRU is not allowed with string variables." @@ -1626,22 +1415,13 @@ msgstr "esperant el valor de sortida" #: src/language/xforms/recode.c:460 #, c-format -msgid "" -"%zu variable(s) cannot be recoded into %zu variable(s). Specify the same " -"number of variables as source and target variables." -msgstr "" -"%zu variable(s) no poden ser recodificades a %zu variable(s). Especifiqueu " -"el mateix nombre de variables com a origen i destinació." +msgid "%zu variable(s) cannot be recoded into %zu variable(s). Specify the same number of variables as source and target variables." +msgstr "%zu variable(s) no poden ser recodificades a %zu variable(s). Especifiqueu el mateix nombre de variables com a origen i destinació." #: src/language/xforms/recode.c:475 #, c-format -msgid "" -"There is no variable named %s. (All string variables specified on INTO must " -"already exist. Use the STRING command to create a string variable.)" -msgstr "" -"No existeix cap variable anomenada %s. (Totes les variables de cadena " -"especificades a INTO ja han d'existir. Utilitzeu el comandament STRING per " -"crear una variable de cadena.)" +msgid "There is no variable named %s. (All string variables specified on INTO must already exist. Use the STRING command to create a string variable.)" +msgstr "No existeix cap variable anomenada %s. (Totes les variables de cadena especificades a INTO ja han d'existir. Utilitzeu el comandament STRING per crear una variable de cadena.)" #: src/language/xforms/recode.c:491 #, c-format @@ -1673,8 +1453,7 @@ msgstr "%s sense %s." #: src/language/control/control-stack.c:55 #, c-format msgid "This command must appear inside %s...%s, without intermediate %s...%s." -msgstr "" -"Aquesta ordre ha d'aparèixer dins de %s...%s, sense intermediaris %s...%s." +msgstr "Aquesta ordre ha d'aparèixer dins de %s...%s, sense intermediaris %s...%s." #: src/language/control/control-stack.c:72 #, c-format @@ -1690,19 +1469,13 @@ msgid "Only one index clause may be specified." msgstr "Només pot ser especificada una clàusula d'índex." #: src/language/control/temporary.c:46 -msgid "" -"This command may only appear once between procedures and procedure-like " -"commands." -msgstr "" -"Aquesta ordre només pot aparèixer una vegada entre les ordres de " -"procediments i quasi-procediments." +msgid "This command may only appear once between procedures and procedure-like commands." +msgstr "Aquesta ordre només pot aparèixer una vegada entre les ordres de procediments i quasi-procediments." #: src/language/control/repeat.c:172 #, c-format msgid "Dummy variable name \"%s\" hides dictionary variable \"%s\"." -msgstr "" -"El nom de la variable fictícia \"%s\" oculta la variable de diccionari \"%s" -"\"." +msgstr "El nom de la variable fictícia \"%s\" oculta la variable de diccionari \"%s\"." #: src/language/control/repeat.c:177 #, c-format @@ -1711,12 +1484,8 @@ msgstr "El nom de la variable fictícia \"%s\" es dóna dues vegades." #: src/language/control/repeat.c:223 #, c-format -msgid "" -"Dummy variable \"%.*s\" had %d substitutions, so \"%.*s\" must also, but %d " -"were specified." -msgstr "" -"Una variable fictícia \"%.*s\" en te %d substitucions, de manera que \"%.*s" -"\" també n'hauria de tenir-les, però es van especificar %d." +msgid "Dummy variable \"%.*s\" had %d substitutions, so \"%.*s\" must also, but %d were specified." +msgstr "Una variable fictícia \"%.*s\" en te %d substitucions, de manera que \"%.*s\" també n'hauria de tenir-les, però es van especificar %d." #: src/language/control/repeat.c:335 msgid "DO REPEAT may not nest in compatibility mode." @@ -1750,30 +1519,19 @@ msgstr "esperant ATTRIBUTE= o DELETE=" #: src/language/dictionary/apply-dictionary.c:75 #, c-format msgid "Variable %s is %s in target file, but %s in source file." -msgstr "" -"La variable %s és %s en l'arxiu de destinació, però %s en l'arxiu d'origen." +msgstr "La variable %s és %s en l'arxiu de destinació, però %s en l'arxiu d'origen." #: src/language/dictionary/apply-dictionary.c:115 msgid "No matching variables found between the source and target files." -msgstr "" -"No s'han trobat coincidències de variables entre els arxius d'origen i de " -"destinació." +msgstr "No s'han trobat coincidències de variables entre els arxius d'origen i de destinació." #: src/language/dictionary/delete-variables.c:40 -msgid "" -"DELETE VARIABLES may not be used after TEMPORARY. Temporary transformations " -"will be made permanent." -msgstr "" -"DELETE VARIABLES no pot ser utilitzat després de TEMPORARY. Les " -"transformacions temporals seran permanents." +msgid "DELETE VARIABLES may not be used after TEMPORARY. Temporary transformations will be made permanent." +msgstr "DELETE VARIABLES no pot ser utilitzat després de TEMPORARY. Les transformacions temporals seran permanents." #: src/language/dictionary/delete-variables.c:48 -msgid "" -"DELETE VARIABLES may not be used to delete all variables from the active " -"file dictionary. Use NEW FILE instead." -msgstr "" -"DELETE VARIABLES no pot ser utilitzar per esborrar totes les variables de " -"l'arxiu de diccionari actiu. Utilitzar NEW FILE en el seu lloc." +msgid "DELETE VARIABLES may not be used to delete all variables from the active file dictionary. Use NEW FILE instead." +msgstr "DELETE VARIABLES no pot ser utilitzar per esborrar totes les variables de l'arxiu de diccionari actiu. Utilitzar NEW FILE en el seu lloc." #: src/language/dictionary/formats.c:90 msgid "`(' expected after variable list." @@ -1790,12 +1548,8 @@ msgstr "esperant `('" #: src/language/dictionary/missing-values.c:72 #, c-format -msgid "" -"Cannot mix numeric variables (e.g. %s) and string variables (e.g. %s) within " -"a single list." -msgstr "" -"No es poden barrejar les variables numèriques (e.g. %s) i les variables de " -"cadena (e.g. %s) dins d'una llista única." +msgid "Cannot mix numeric variables (e.g. %s) and string variables (e.g. %s) within a single list." +msgstr "No es poden barrejar les variables numèriques (e.g. %s) i les variables de cadena (e.g. %s) dins d'una llista única." #: src/language/dictionary/missing-values.c:116 #, c-format @@ -1805,79 +1559,53 @@ msgstr "Truncant el valor perdut a la longitud màxima acceptable (%d bytes)." #: src/language/dictionary/missing-values.c:138 #, c-format msgid "Missing values provided are too long to assign to variable of width %d." -msgstr "" -"Els valors perduts donats són massa llargs per assignar a la variable " -"d'amplada %d." +msgstr "Els valors perduts donats són massa llargs per assignar a la variable d'amplada %d." #: src/language/dictionary/modify-variables.c:92 -msgid "" -"MODIFY VARS may not be used after TEMPORARY. Temporary transformations will " -"be made permanent." -msgstr "" -"MODIFY VARS no pot ser utilitzar després de TEMPORARY. Les transformacions " -"temporals seran permanents." +msgid "MODIFY VARS may not be used after TEMPORARY. Temporary transformations will be made permanent." +msgstr "MODIFY VARS no pot ser utilitzar després de TEMPORARY. Les transformacions temporals seran permanents." #: src/language/dictionary/modify-variables.c:114 #: src/language/dictionary/modify-variables.c:177 -#, fuzzy, c-format +#, c-format msgid "%s subcommand may be given at most once." -msgstr "El subcomando RENAME pot ser utilitzat només una vegada." +msgstr "El subcomando %s pot ser utilitzat només una vegada." #: src/language/dictionary/modify-variables.c:137 msgid "Cannot specify ALL after specifying a set of variables." -msgstr "" -"No es pot especificar ALL després de l'especificació d'un conjunt de " -"variables." +msgstr "No es pot especificar ALL després de l'especificació d'un conjunt de variables." #: src/language/dictionary/modify-variables.c:147 #: src/language/dictionary/modify-variables.c:190 -#, fuzzy, c-format +#, c-format msgid "`(' expected on %s subcommand." -msgstr "`(' esperat al subcomando RENAME." +msgstr "S'espera `(' al subcomando %s." #: src/language/dictionary/modify-variables.c:159 msgid "`)' expected following variable names on REORDER subcommand." -msgstr "" -"`)' s'esperava seguit dels noms de la variable en el subcomando REORDER." +msgstr "`)' s'esperava seguit dels noms de la variable en el subcomando REORDER." #: src/language/dictionary/modify-variables.c:199 -msgid "" -"`=' expected between lists of new and old variable names on RENAME " -"subcommand." -msgstr "" -"`=' esperat entre les llistes de noms de variables noves i velles en el " -"subcomando RENAME." +msgid "`=' expected between lists of new and old variable names on RENAME subcommand." +msgstr "`=' esperat entre les llistes de noms de variables noves i velles en el subcomando RENAME." #: src/language/dictionary/modify-variables.c:208 #: src/language/dictionary/rename-variables.c:77 #, c-format -msgid "" -"Differing number of variables in old name list (%zu) and in new name list (%" -"zu)." -msgstr "" -"Diferent nombre de variables en la llista de noms antiga (%zu) i en la " -"llista de noms nova (%zu)." +msgid "Differing number of variables in old name list (%zu) and in new name list (%zu)." +msgstr "Diferent nombre de variables en la llista de noms antiga (%zu) i en la llista de noms nova (%zu)." #: src/language/dictionary/modify-variables.c:219 msgid "`)' expected after variable lists on RENAME subcommand." -msgstr "" -"`)' esperat després de les llistes de variables en el subcomando RENAME." +msgstr "`)' esperat després de les llistes de variables en el subcomando RENAME." #: src/language/dictionary/modify-variables.c:233 -msgid "" -"KEEP subcommand may be given at most once. It may not be given in " -"conjunction with the DROP subcommand." -msgstr "" -"El subcomando KEEP pot ser emès més d'una vegada. Pot ser que no sigui " -"facilitada en relació amb el subcomando DROP." +msgid "KEEP subcommand may be given at most once. It may not be given in conjunction with the DROP subcommand." +msgstr "El subcomando KEEP pot ser emès més d'una vegada. Pot ser que no sigui facilitada en relació amb el subcomando DROP." #: src/language/dictionary/modify-variables.c:276 -msgid "" -"DROP subcommand may be given at most once. It may not be given in " -"conjunction with the KEEP subcommand." -msgstr "" -"El subcomando DROP pot ser utilitzat només una vegada. No pot ser utilitzat " -"conjuntament amb el subcomando KEEP." +msgid "DROP subcommand may be given at most once. It may not be given in conjunction with the KEEP subcommand." +msgstr "El subcomando DROP pot ser utilitzat només una vegada. No pot ser utilitzat conjuntament amb el subcomando KEEP." #: src/language/dictionary/modify-variables.c:302 #, c-format @@ -1894,103 +1622,76 @@ msgstr "'/' o '.' esperat." #: src/language/dictionary/mrsets.c:98 #, c-format -msgid "" -"%s is not a valid name for a multiple response set. Multiple response set " -"names must begin with `$'." -msgstr "" +msgid "%s is not a valid name for a multiple response set. Multiple response set names must begin with `$'." +msgstr "%s no és un nom vàlid de variable per a un conjunt de resposta múltiple. Els conjunts de resposta múltiple han de començar amb `$'." #: src/language/dictionary/mrsets.c:120 #, c-format -msgid "" -"VARIABLES specified only variable %s on %s, but at least two variables are " -"required." -msgstr "" +msgid "VARIABLES specified only variable %s on %s, but at least two variables are required." +msgstr "VARIABLES especifica només la variable %s a %s, però es requereixen al menys dues variables." #: src/language/dictionary/mrsets.c:153 msgid "Numeric VALUE must be an integer." -msgstr "" +msgstr "VALUE numèric ha de ser un enter." #: src/language/dictionary/mrsets.c:207 src/language/dictionary/mrsets.c:213 #: src/language/dictionary/mrsets.c:223 #, c-format msgid "Required %s specification missing from %s subcommand." -msgstr "" +msgstr "Manca la especificació %s requerida pel subcomando %s." #: src/language/dictionary/mrsets.c:231 src/language/dictionary/mrsets.c:269 #, c-format -msgid "" -"MDGROUP subcommand for group %s specifies a string VALUE, but the variables " -"specified for this group are numeric." -msgstr "" +msgid "MDGROUP subcommand for group %s specifies a string VALUE, but the variables specified for this group are numeric." +msgstr "El subcomando MDGROUPS pel grup %s especifica un VALUE textual, però les variables especificades per aquest grup son numèriques." #: src/language/dictionary/mrsets.c:255 #, c-format -msgid "" -"VALUE string on MDGROUP subcommand for group %s is %d bytes long, but it " -"must be no longer than the narrowest variable in the group, which is %s with " -"a width of %d bytes." -msgstr "" +msgid "VALUE string on MDGROUP subcommand for group %s is %d bytes long, but it must be no longer than the narrowest variable in the group, which is %s with a width of %d bytes." +msgstr "El VALUE textual al subcomando MDGROUP pel grup %s té %d bytes, però no pot ser més llarg que la variable més curta al grup, que és %s amb llargada %d bytes." #: src/language/dictionary/mrsets.c:281 #, c-format -msgid "" -"MDGROUP subcommand for group %s specifies LABELSOURCE=VARLABEL but not " -"CATEGORYLABELS=COUNTEDVALUES. Ignoring LABELSOURCE." -msgstr "" +msgid "MDGROUP subcommand for group %s specifies LABELSOURCE=VARLABEL but not CATEGORYLABELS=COUNTEDVALUES. Ignoring LABELSOURCE." +msgstr "El subcomando MDGROUP pel grup %s espeficifica LABELSOURCE=VARLABEL però no CATEGORYLABELS=COUNTEDVALUES. S'ignorarà LABELSOURCE." #: src/language/dictionary/mrsets.c:287 #, c-format -msgid "" -"MDGROUP subcommand for group %s specifies both LABEL and LABELSOURCE, but " -"only one of these subcommands may be used at a time. Ignoring LABELSOURCE." -msgstr "" +msgid "MDGROUP subcommand for group %s specifies both LABEL and LABELSOURCE, but only one of these subcommands may be used at a time. Ignoring LABELSOURCE." +msgstr "El subcomando MDGROUP pel grup %s espeficifica LABEL i LABELSOURCE, però només un d'aquests subcomandos pot ser utilitzat alhora. S'ignorarà LABELSOURCE." #: src/language/dictionary/mrsets.c:327 #, c-format -msgid "" -"Variables %s and %s specified as part of multiple dichotomy group %s have " -"the same variable label. Categories represented by these variables will not " -"be distinguishable in output." -msgstr "" +msgid "Variables %s and %s specified as part of multiple dichotomy group %s have the same variable label. Categories represented by these variables will not be distinguishable in output." +msgstr "Les variables %s i %s especificades com a part del grup dicotòmic múltiple %s tenen la mateixa etiqueta de variable. Les categories representades per aquestes variables no seran distingibles als resultats." #: src/language/dictionary/mrsets.c:357 #, c-format -msgid "" -"Variable %s specified as part of multiple dichotomy group %s (which has " -"CATEGORYLABELS=COUNTEDVALUES) has no value label for its counted value. " -"This category will not be distinguishable in output." -msgstr "" +msgid "Variable %s specified as part of multiple dichotomy group %s (which has CATEGORYLABELS=COUNTEDVALUES) has no value label for its counted value. This category will not be distinguishable in output." +msgstr "La variable %s especificada com a part del grup dicotòmic múltiple %s (que té CATEGORYLABELS=COUNTEDVALUES) no en té etiqueta de valor pel seu valor de recompte. Aquesta categoria no serà distingible als resultats." #: src/language/dictionary/mrsets.c:370 #, c-format -msgid "" -"Variables %s and %s specified as part of multiple dichotomy group %s (which " -"has CATEGORYLABELS=COUNTEDVALUES) have the same value label for the the " -"group's counted value. These categories will not be distinguishable in " -"output." -msgstr "" +msgid "Variables %s and %s specified as part of multiple dichotomy group %s (which has CATEGORYLABELS=COUNTEDVALUES) have the same value label for the the group's counted value. These categories will not be distinguishable in output." +msgstr "Les variables %s i %s especificades com a part del grup dicotòmic múltiple %s (que té CATEGORYLABELS=COUNTEDVALUES) té la mateixa etiqueta de valor pel valor de recompte del grup. Aquestes categories no seran distingible als resultats." #: src/language/dictionary/mrsets.c:427 #, c-format -msgid "" -"Variables specified on MCGROUP should have the same categories, but %s and %" -"s (and possibly others) in multiple category group %s have different value " -"labels for value %s." -msgstr "" +msgid "Variables specified on MCGROUP should have the same categories, but %s and %s (and possibly others) in multiple category group %s have different value labels for value %s." +msgstr "Variables especificades a MDGROUP han de tenir les mateixes categories, però %s i %s (i posiblement d'altres) al grup de caterories múltiple %s té diferents etiquetes de valors pel valor %s." #: src/language/dictionary/mrsets.c:484 -#, fuzzy, c-format +#, c-format msgid "No multiple response set named %s." -msgstr "Cap funció o vector anomenat %s." +msgstr "Cap conjunt multiresposta anomenat %s." #: src/language/dictionary/mrsets.c:538 -#, fuzzy msgid "The active file dictionary does not contain any multiple response sets." -msgstr "El diccionari de l'arxiu actiu no conté cap document. " +msgstr "El diccionari de l'arxiu actiu no conté cap conjunt de multi-resposta. " #: src/language/dictionary/mrsets.c:548 msgid "Multiple Response Sets" -msgstr "" +msgstr "Conjunts Multi-Resposta" #: src/language/dictionary/mrsets.c:549 src/ui/gui/psppire-var-sheet.c:534 #: src/ui/gui/psppire-var-store.c:832 @@ -2002,17 +1703,16 @@ msgid "Variables" msgstr "Variables:" #: src/language/dictionary/mrsets.c:551 -#, fuzzy msgid "Details" -msgstr "Decimals" +msgstr "Detalls" #: src/language/dictionary/mrsets.c:565 msgid "Multiple dichotomy set" -msgstr "" +msgstr "Conjunt de Dicotomies Múltiples" #: src/language/dictionary/mrsets.c:566 msgid "Multiple category set" -msgstr "" +msgstr "Conjunt de Categories Múltiples" #: src/language/dictionary/mrsets.c:568 #: src/language/dictionary/split-file.c:84 @@ -2024,36 +1724,32 @@ msgid "Label" msgstr "Etiqueta" #: src/language/dictionary/mrsets.c:572 -#, fuzzy msgid "Label source" -msgstr "Etiqueta: %s\n" +msgstr "Font d'etiqueta" #: src/language/dictionary/mrsets.c:574 -#, fuzzy msgid "First variable label among variables" -msgstr "Duplicar el nom de la variable %s entre les variables de destí." +msgstr "Primera etiqueta de variable entre les variables" #: src/language/dictionary/mrsets.c:575 msgid "Provided by user" -msgstr "" +msgstr "Proporcionat per l'usuari" #: src/language/dictionary/mrsets.c:576 -#, fuzzy msgid "Counted value" -msgstr "Copiar els valors antics" +msgstr "Valor de recompte" #: src/language/dictionary/mrsets.c:582 msgid "Category label source" -msgstr "" +msgstr "Font d'etiquetes de categoria" #: src/language/dictionary/mrsets.c:584 -#, fuzzy msgid "Variable labels" -msgstr "Prefereixo les etiquetes de variable" +msgstr "Etiquetes de variable" #: src/language/dictionary/mrsets.c:585 msgid "Value labels of counted value" -msgstr "" +msgstr "Etiquetes de valor del valor de recompte" #: src/language/dictionary/numeric.c:67 #, c-format @@ -2071,12 +1767,8 @@ msgid "Format type %s may not be used with a string variable." msgstr "Tipus de format %s no pot ser utilitzat amb una variable de cadena. " #: src/language/dictionary/rename-variables.c:49 -msgid "" -"RENAME VARS may not be used after TEMPORARY. Temporary transformations will " -"be made permanent." -msgstr "" -"RENAME VARS no pot ser utilitzat després de TEMPORARY. Les transformacions " -"temporals seran permanents." +msgid "RENAME VARS may not be used after TEMPORARY. Temporary transformations will be made permanent." +msgstr "RENAME VARS no pot ser utilitzat després de TEMPORARY. Les transformacions temporals seran permanents." #: src/language/dictionary/rename-variables.c:59 msgid "`(' expected." @@ -2171,7 +1863,7 @@ msgid "Type:" msgstr "Tipus:" #: src/language/dictionary/sys-file-info.c:128 -#: src/ui/gui/psppire-data-window.c:631 +#: src/ui/gui/psppire-data-window.c:634 msgid "System File" msgstr "Arxiu de Sistema" @@ -2343,9 +2035,7 @@ msgstr "El nom del vector %s es dóna dues vegades." #: src/language/dictionary/vector.c:96 msgid "A slash must separate each vector specification in VECTOR's long form." -msgstr "" -"Una barra ha de separar cada especificació de vector en la forma llarga de " -"VECTOR." +msgstr "Una barra ha de separar cada especificació de vector en la forma llarga de VECTOR." #: src/language/dictionary/vector.c:129 msgid "Vectors must have at least one element." @@ -2388,12 +2078,8 @@ msgstr "Constant hexadecimal flotant massa llarga." #: src/language/tests/float-format.c:201 #, c-format -msgid "" -"%s conversion of %s from %s to %s should have produced %s but actually " -"produced %s." -msgstr "" -"conversió %s de %s desde %s a %s s'hauria d'haver produït %s però actualment " -"ha produït %s." +msgid "%s conversion of %s from %s to %s should have produced %s but actually produced %s." +msgstr "conversió %s de %s desde %s a %s s'hauria d'haver produït %s però actualment ha produït %s." #: src/language/tests/float-format.c:247 msgid "Too many values in single command." @@ -2472,13 +2158,8 @@ msgid "expecting BREAK" msgstr "esperant BREAK" #: src/language/stats/aggregate.c:252 -msgid "" -"When PRESORTED is specified, specifying sorting directions with (A) or (D) " -"has no effect. Output data will be sorted the same way as the input data." -msgstr "" -"Quan s'especifica PRESORTED, donar directives d'ordenació amb (A) o (D) no " -"té efecte. Les dades de sortida seran ordenades de la mateixa manera que les " -"d'entrada." +msgid "When PRESORTED is specified, specifying sorting directions with (A) or (D) has no effect. Output data will be sorted the same way as the input data." +msgstr "Quan s'especifica PRESORTED, donar directives d'ordenació amb (A) o (D) no té efecte. Les dades de sortida seran ordenades de la mateixa manera que les d'entrada." #: src/language/stats/aggregate.c:424 msgid "expecting aggregation function" @@ -2497,9 +2178,7 @@ msgstr "Argument perdut %zu per a %s." #: src/language/stats/aggregate.c:507 #, c-format msgid "Arguments to %s must be of same type as source variables." -msgstr "" -"Els arguments per a %s han de ser del mateix tipus que les variables " -"d'origen." +msgstr "Els arguments per a %s han de ser del mateix tipus que les variables d'origen." #: src/language/stats/aggregate.c:517 src/language/expressions/parse.c:885 msgid "expecting `)'" @@ -2507,37 +2186,23 @@ msgstr "esperant `)'" #: src/language/stats/aggregate.c:529 #, c-format -msgid "" -"Number of source variables (%zu) does not match number of target variables (%" -"zu)." -msgstr "" -"Nombre de variables d'origen (%zu) no coincideix amb el nombre de variables " -"de destinació (%zu)." +msgid "Number of source variables (%zu) does not match number of target variables (%zu)." +msgstr "Nombre de variables d'origen (%zu) no coincideix amb el nombre de variables de destinació (%zu)." #: src/language/stats/aggregate.c:545 #, c-format -msgid "" -"The value arguments passed to the %s function are out-of-order. They will " -"be treated as if they had been specified in the correct order." -msgstr "" -"El valor dels arguments passats a la funció %s estan fora d'ordre. Seran " -"tractats com si haguessin estat especificats en l'ordre correcte." +msgid "The value arguments passed to the %s function are out-of-order. They will be treated as if they had been specified in the correct order." +msgstr "El valor dels arguments passats a la funció %s estan fora d'ordre. Seran tractats com si haguessin estat especificats en l'ordre correcte." #: src/language/stats/aggregate.c:615 #, c-format -msgid "" -"Variable name %s is not unique within the aggregate file dictionary, which " -"contains the aggregate variables and the break variables." -msgstr "" -"El nom de variable %s no és únic dins l'arxiu de diccionari agregat, que " -"conté les variables agregades i les variables de tall." +msgid "Variable name %s is not unique within the aggregate file dictionary, which contains the aggregate variables and the break variables." +msgstr "El nom de variable %s no és únic dins l'arxiu de diccionari agregat, que conté les variables agregades i les variables de tall." #: src/language/stats/autorecode.c:116 #, c-format msgid "Source variable count (%zu) does not match target variable count (%zu)." -msgstr "" -"El recompte de la variable d'origen (%zu) no coincideix amb el recompte de " -"la variable de destí (%zu)." +msgstr "El recompte de la variable d'origen (%zu) no coincideix amb el recompte de la variable de destí (%zu)." #: src/language/stats/autorecode.c:128 #, c-format @@ -2603,12 +2268,8 @@ msgstr "Sig. Exact.(%d-tailed)" #: src/language/stats/chisquare.c:150 #, c-format -msgid "" -"CHISQUARE test specified %d expected values, but %d distinct values were " -"encountered in variable %s." -msgstr "" -"Prova CHISQUARE especifica %d valors esperats, però %d diferents valors es " -"van trobar a la variable %s." +msgid "CHISQUARE test specified %d expected values, but %d distinct values were encountered in variable %s." +msgstr "Prova CHISQUARE especifica %d valors esperats, però %d diferents valors es van trobar a la variable %s." #: src/language/stats/chisquare.c:161 src/language/stats/chisquare.c:200 msgid "Observed N" @@ -2672,14 +2333,12 @@ msgid "Std. Deviation" msgstr "Desviació Est." #: src/language/stats/correlations.c:190 src/language/stats/factor.c:1620 -#, fuzzy msgid "Correlations" -msgstr "Correlació" +msgstr "Correlacions" #: src/language/stats/correlations.c:216 -#, fuzzy msgid "Pearson Correlation" -msgstr "Correlació de Spearman" +msgstr "Correlació de Pearson" #: src/language/stats/correlations.c:218 src/language/stats/oneway.q:686 #: src/language/stats/t-test.q:753 src/language/stats/t-test.q:924 @@ -2688,16 +2347,14 @@ msgid "Sig. (2-tailed)" msgstr "Sig. (2-cues)" #: src/language/stats/correlations.c:218 -#, fuzzy msgid "Sig. (1-tailed)" -msgstr "Sig. (2-cues)" +msgstr "Sig. (1-cua)" #: src/language/stats/correlations.c:222 msgid "Cross-products" -msgstr "" +msgstr "Productes-creuats" #: src/language/stats/correlations.c:223 -#, fuzzy msgid "Covariance" msgstr "Covariància" @@ -2777,12 +2434,8 @@ msgid "expecting statistic name: reverting to default" msgstr "esperant nom de l'estadístic: torna a aplicar el defecte" #: src/language/stats/descriptives.c:523 -msgid "" -"Ran out of generic names for Z-score variables. There are only 126 generic " -"names: ZSC001-ZSC0999, STDZ01-STDZ09, ZZZZ01-ZZZZ09, ZQZQ01-ZQZQ09." -msgstr "" -"S'han esgotat els noms genèrics per les variables Z. Només hi ha 126 noms " -"genèrics: ZSC001-ZSC0999, STDZ01-STDZ09, ZZZZ01-ZZZZ09, ZQZQ01-ZQZQ09." +msgid "Ran out of generic names for Z-score variables. There are only 126 generic names: ZSC001-ZSC0999, STDZ01-STDZ09, ZZZZ01-ZZZZ09, ZQZQ01-ZQZQ09." +msgstr "S'han esgotat els noms genèrics per les variables Z. Només hi ha 126 noms genèrics: ZSC001-ZSC0999, STDZ01-STDZ09, ZZZZ01-ZZZZ09, ZQZQ01-ZQZQ09." #: src/language/stats/descriptives.c:555 msgid "Mapping of variables to corresponding Z-scores." @@ -2833,40 +2486,35 @@ msgstr "La variable %s s'especifica dues vegades als criteris d'ordenació." #: src/language/stats/factor.c:803 msgid "Factor analysis on a single variable is not useful." -msgstr "" +msgstr "L'anàlisi factorial per a una única variable és inútil." #: src/language/stats/factor.c:1206 -#, fuzzy msgid "Component Number" -msgstr "Columna Numero: 0" +msgstr "Número de Component" #: src/language/stats/factor.c:1206 -#, fuzzy msgid "Factor Number" -msgstr "Número de Cas" +msgstr "Número de Factor" #: src/language/stats/factor.c:1237 -#, fuzzy msgid "Communalities" -msgstr "Comentaris:" +msgstr "Comunalitats" #: src/language/stats/factor.c:1243 msgid "Initial" -msgstr "" +msgstr "Inicial" #: src/language/stats/factor.c:1246 msgid "Extraction" -msgstr "" +msgstr "Extracció" #: src/language/stats/factor.c:1310 src/language/stats/factor.c:1437 -#, fuzzy msgid "Component" -msgstr "Comentaris:" +msgstr "Component" #: src/language/stats/factor.c:1315 src/language/stats/factor.c:1439 -#, fuzzy msgid "Factor" -msgstr "_Factor:" +msgstr "Factor" #: src/language/stats/factor.c:1347 src/language/stats/factor.c:1495 #: src/ui/gui/psppire-data-store.c:755 src/ui/gui/psppire-var-store.c:699 @@ -2878,83 +2526,72 @@ msgstr "%d" #: src/language/stats/factor.c:1412 msgid "Total Variance Explained" -msgstr "" +msgstr "Variancia Total Explicada" #: src/language/stats/factor.c:1444 msgid "Initial Eigenvalues" -msgstr "" +msgstr "Valors propis Inicials" #: src/language/stats/factor.c:1450 msgid "Extraction Sums of Squared Loadings" -msgstr "" +msgstr "Extracció: Sumes de Carregues al Quadrat" #: src/language/stats/factor.c:1456 msgid "Rotation Sums of Squared Loadings" -msgstr "" +msgstr "Rotació: Sumes de Carregues al Quadrat " #: src/language/stats/factor.c:1464 -#, fuzzy, no-c-format +#, no-c-format msgid "% of Variance" -msgstr "Variància" +msgstr "% de Variància" #: src/language/stats/factor.c:1465 msgid "Cumulative %" -msgstr "" +msgstr "% Acumulat" #: src/language/stats/factor.c:1578 -#, fuzzy msgid "Correlation Matrix" -msgstr "Correlació" +msgstr "Matriu de Correlació" #: src/language/stats/factor.c:1632 -#, fuzzy msgid "Sig. 1-tailed" -msgstr "Sig. (2-cues)" +msgstr "Sig. (1-cua)" #: src/language/stats/factor.c:1666 -#, fuzzy msgid "Determinant" -msgstr "Dependent" +msgstr "Determinant" #: src/language/stats/factor.c:1743 msgid "Analysis N" -msgstr "" +msgstr "N Anàlisis" #: src/language/stats/factor.c:1776 -msgid "" -"The FACTOR criteria result in zero factors extracted. Therefore no analysis " -"will be performed." -msgstr "" +msgid "The FACTOR criteria result in zero factors extracted. Therefore no analysis will be performed." +msgstr "El criteri FACTOR resulta en l'extracció de cero factors. No es pot realitzar cap anàlisi." #: src/language/stats/factor.c:1782 -msgid "" -"The FACTOR criteria result in more factors than variables, which is not " -"meaningful. No analysis will be performed." -msgstr "" +msgid "The FACTOR criteria result in more factors than variables, which is not meaningful. No analysis will be performed." +msgstr "El criteri FACTOR resulta en més factors que variables, i això no té cap sentit. No es realitza cap anàlisi." #: src/language/stats/factor.c:1865 msgid "Component Matrix" -msgstr "" +msgstr "Matriu de Components" #: src/language/stats/factor.c:1865 -#, fuzzy msgid "Factor Matrix" -msgstr "Llista de Factors:" +msgstr "Matriu de Factors" #: src/language/stats/factor.c:1871 msgid "Rotated Component Matrix" -msgstr "" +msgstr "Matriu Rotada de Components" #: src/language/stats/factor.c:1871 -#, fuzzy msgid "Rotated Factor Matrix" -msgstr "Llista de Factors:" +msgstr "Matriu Rotada de Factors" #: src/language/stats/flip.c:98 -msgid "" -"FLIP ignores TEMPORARY. Temporary transformations will be made permanent." -msgstr "" -"FLIP ignora TEMPORARY. Les transformacions temporals seran permanents." +msgid "FLIP ignores TEMPORARY. Temporary transformations will be made permanent." +msgstr "FLIP ignora TEMPORARY. Les transformacions temporals seran permanents." #: src/language/stats/flip.c:150 msgid "Could not create temporary file for FLIP." @@ -3170,17 +2807,11 @@ msgstr "Sig. Asimp. (2-cues)" #: src/language/data-io/combine-files.c:210 msgid "Cannot specify the active file since no active file has been defined." -msgstr "" -"No es pot especificar el fitxer actiu ja que cap fitxer actiu ha estat " -"definit." +msgstr "No es pot especificar el fitxer actiu ja que cap fitxer actiu ha estat definit." #: src/language/data-io/combine-files.c:216 -msgid "" -"This command may not be used after TEMPORARY when the active file is an " -"input source. Temporary transformations will be made permanent." -msgstr "" -"Aquest comando no pot ser utilitzat després de TEMPORARY quan l'arxiu actiu " -"és una font d'entrada. Les transformacions temporals seran permanents." +msgid "This command may not be used after TEMPORARY when the active file is an input source. Temporary transformations will be made permanent." +msgstr "Aquest comando no pot ser utilitzat després de TEMPORARY quan l'arxiu actiu és una font d'entrada. Les transformacions temporals seran permanents." #: src/language/data-io/combine-files.c:250 msgid "Multiple IN subcommands for a single FILE or TABLE." @@ -3202,26 +2833,18 @@ msgstr "Es necessita el subcomando BY." #: src/language/data-io/combine-files.c:381 #: src/language/data-io/combine-files.c:386 -#, fuzzy, c-format +#, c-format msgid "BY is required when %s is specified." -msgstr "BY és necessari quan SORT s'especifica." +msgstr "BY és necessari quan s'especifica %s." #: src/language/data-io/combine-files.c:513 -msgid "" -"Combining files with incompatible encodings. String data may not be " -"represented correctly." -msgstr "" -"Combinant arxius amb codificacions incompatibles. Les dades de la cadena no " -"podran estar representades correctament." +msgid "Combining files with incompatible encodings. String data may not be represented correctly." +msgstr "Combinant arxius amb codificacions incompatibles. Les dades de la cadena no podran estar representades correctament." #: src/language/data-io/combine-files.c:545 #, c-format -msgid "" -"Variable %s in file %s has different type or width from the same variable in " -"earlier file." -msgstr "" -"La variable %s a l'arxiu %s és de tipus o amplada diferent respecte de la " -"mateixa variable en l'arxiu anterior. " +msgid "Variable %s in file %s has different type or width from the same variable in earlier file." +msgstr "La variable %s a l'arxiu %s és de tipus o amplada diferent respecte de la mateixa variable en l'arxiu anterior. " #: src/language/data-io/combine-files.c:551 #, c-format @@ -3241,17 +2864,12 @@ msgstr "En un arxiu anterior, %s era numèric." #: src/language/data-io/combine-files.c:562 #, c-format msgid "In an earlier file, %s was a string variable with width %d." -msgstr "" -"En un arxiu anterior, %s era una variable cadena amb una amplada de %d." +msgstr "En un arxiu anterior, %s era una variable cadena amb una amplada de %d." #: src/language/data-io/combine-files.c:601 #, c-format -msgid "" -"Variable name %s specified on %s subcommand duplicates an existing variable " -"name." -msgstr "" -"Nom de la variable %s especificat al subcomando %s duplica el nom de la " -"variable existent." +msgid "Variable name %s specified on %s subcommand duplicates an existing variable name." +msgstr "Nom de la variable %s especificat al subcomando %s duplica el nom de la variable existent." #: src/language/data-io/combine-files.c:762 #, c-format @@ -3272,9 +2890,7 @@ msgstr "Només un de FIXED, FREE, o LIST pot ser especificat." #: src/language/data-io/data-list.c:243 msgid "Encoding should not be specified for inline data. It will be ignored." -msgstr "" -"La codificació no ha de ser especificada per les dades en línia. Serà " -"ignorada." +msgstr "La codificació no ha de ser especificada per les dades en línia. Serà ignorada." #: src/language/data-io/data-list.c:254 msgid "The END subcommand may be used only with DATA LIST FIXED." @@ -3303,9 +2919,7 @@ msgstr "Ja existeix una cadena de la variable %s d'amplada diferent." #: src/language/data-io/data-list.c:390 #, c-format msgid "Cannot place variable %s on record %d when RECORDS=%d is specified." -msgstr "" -"No es pot posar la variable %s en el registre %d quan RECORDS=%d està " -"especificat." +msgstr "No es pot posar la variable %s en el registre %d quan RECORDS=%d està especificat." #: src/language/data-io/data-parser.c:460 #: src/language/data-io/data-parser.c:469 @@ -3324,12 +2938,8 @@ msgstr "Cas parcial descartat. La primera variable que faltava era %s." #: src/language/data-io/data-parser.c:610 #, c-format -msgid "" -"Missing value(s) for all variables from %s onward. These will be filled " -"with the system-missing value or blanks, as appropriate." -msgstr "" -"Valor(s) perdut(s) per a totes les variables des de %st. Aquests s'omplen " -"amb el valor perdut del sistema o espais en blanc, segons correspongui." +msgid "Missing value(s) for all variables from %s onward. These will be filled with the system-missing value or blanks, as appropriate." +msgstr "Valor(s) perdut(s) per a totes les variables des de %st. Aquests s'omplen amb el valor perdut del sistema o espais en blanc, segons correspongui." #: src/language/data-io/data-parser.c:630 msgid "Record ends in data not part of any field." @@ -3375,15 +2985,8 @@ msgid "Could not open \"%s\" for reading as a data file: %s." msgstr "No s'ha pogut obrir \"%s\" per a la lectura com un arxiu de dades: %s." #: src/language/data-io/data-reader.c:192 -msgid "" -"Unexpected end-of-file while reading data in BEGIN DATA. This probably " -"indicates a missing or misformatted END DATA command. END DATA must appear " -"by itself on a single line with exactly one space between words." -msgstr "" -"Final d'arxiu inesperat durant la lectura de dades en BEGIN DATA. Això " -"probablement indica una pérdua o format erroni del comando END DATA. END " -"DATA ha d'aparèixer per si mateix en una sola línia amb exactament un espai " -"entre les paraules." +msgid "Unexpected end-of-file while reading data in BEGIN DATA. This probably indicates a missing or misformatted END DATA command. END DATA must appear by itself on a single line with exactly one space between words." +msgstr "Final d'arxiu inesperat durant la lectura de dades en BEGIN DATA. Això probablement indica una pérdua o format erroni del comando END DATA. END DATA ha d'aparèixer per si mateix en una sola línia amb exactament un espai entre les paraules." #: src/language/data-io/data-reader.c:217 #, c-format @@ -3429,19 +3032,13 @@ msgid "Attempt to read beyond END DATA." msgstr "Intent de llegir més enllà de END DATA." #: src/language/data-io/data-reader.c:708 -msgid "" -"This command is not valid here since the current input program does not " -"access the inline file." -msgstr "" -"Aquesta ordre no es vàlida ja que el programa d'entrada actual no té accés a " -"l'arxiu en línia." +msgid "This command is not valid here since the current input program does not access the inline file." +msgstr "Aquesta ordre no es vàlida ja que el programa d'entrada actual no té accés a l'arxiu en línia." #: src/language/data-io/data-writer.c:74 #, c-format msgid "An error occurred while opening \"%s\" for writing as a data file: %s." -msgstr "" -"S'ha produït un error en obrir \"%s\" per a escriure'l com un arxiu de " -"dades: %s." +msgstr "S'ha produït un error en obrir \"%s\" per a escriure'l com un arxiu de dades: %s." #: src/language/data-io/data-writer.c:191 #, c-format @@ -3455,12 +3052,8 @@ msgstr "TYPE %s no admès" #: src/language/data-io/get-data.c:260 #, c-format -msgid "" -"%s is allowed only with %s arrangement, but %s arrangement was stated or " -"implied earlier in this command." -msgstr "" -"%s només es permet amb configuració %s, però prèviament en aquest comando " -"s'ha establit la configuració %s." +msgid "%s is allowed only with %s arrangement, but %s arrangement was stated or implied earlier in this command." +msgstr "%s només es permet amb configuració %s, però prèviament en aquest comando s'ha establit la configuració %s." #: src/language/data-io/get-data.c:315 msgid "expecting FIXED or DELIMITED" @@ -3487,12 +3080,8 @@ msgid "Value of PERCENT must be between 1 and 100." msgstr "Valor de PERCENT ha de ser entre 1 i 100." #: src/language/data-io/get-data.c:447 -msgid "" -"In compatible syntax mode, the QUALIFIER string must contain exactly one " -"character." -msgstr "" -"En el mode de sintaxi compatible, la cadena QUALIFIER ha de contenir " -"exactament un caràcter." +msgid "In compatible syntax mode, the QUALIFIER string must contain exactly one character." +msgstr "En el mode de sintaxi compatible, la cadena QUALIFIER ha de contenir exactament un caràcter." #: src/language/data-io/get-data.c:462 msgid "expecting VARIABLES" @@ -3501,22 +3090,13 @@ msgstr "esperant VARIABLES" #: src/language/data-io/get-data.c:484 #: src/language/data-io/placement-parser.c:378 #, c-format -msgid "" -"The record number specified, %ld, is at or before the previous record, %d. " -"Data fields must be listed in order of increasing record number." -msgstr "" -"El nombre de registre especificat, %ld, és a o abans del registre anterior, %" -"d. Els camps de dades han de ser llistats en ordre incremental del número " -"de registre." +msgid "The record number specified, %ld, is at or before the previous record, %d. Data fields must be listed in order of increasing record number." +msgstr "El nombre de registre especificat, %ld, és a o abans del registre anterior, %d. Els camps de dades han de ser llistats en ordre incremental del número de registre." #: src/language/data-io/get-data.c:493 #, c-format -msgid "" -"The record number specified, %ld, exceeds the number of records per case " -"specified on FIXCASE, %d." -msgstr "" -"El nombre de registre especificat , %ld, excedeix el nombre de registres per " -"cas especificats a FIXCASE, %d." +msgid "The record number specified, %ld, exceeds the number of records per case specified on FIXCASE, %d." +msgstr "El nombre de registre especificat , %ld, excedeix el nombre de registres per cas especificats a FIXCASE, %d." #: src/language/data-io/get.c:99 msgid "expecting COMM or TAPE" @@ -3535,34 +3115,22 @@ msgid "COLUMN subcommand multiply specified." msgstr "subcomando COLUMN especificat múltiples vegades." #: src/language/data-io/inpt-pgm.c:338 -msgid "" -"REREAD: Column numbers must be positive finite numbers. Column set to 1." -msgstr "" -"REREAD: Els nombres de columna han de ser nombres positius finits. La " -"columna s'estableix en 1." +msgid "REREAD: Column numbers must be positive finite numbers. Column set to 1." +msgstr "REREAD: Els nombres de columna han de ser nombres positius finits. La columna s'estableix en 1." #: src/language/data-io/placement-parser.c:87 #, c-format -msgid "" -"Number of variables specified (%zu) differs from number of variable formats " -"(%zu)." -msgstr "" -"Nombre de variables especificades (%zu) difereix del nombre de formats de la " -"variable (%zu)." +msgid "Number of variables specified (%zu) differs from number of variable formats (%zu)." +msgstr "Nombre de variables especificades (%zu) difereix del nombre de formats de la variable (%zu)." #: src/language/data-io/placement-parser.c:97 -msgid "" -"SPSS-like or Fortran-like format specification expected after variable names." -msgstr "" -"Després del nom de les variables s'esperen especificacions en format tipus-" -"SPSS o tipus-Fortran." +msgid "SPSS-like or Fortran-like format specification expected after variable names." +msgstr "Després del nom de les variables s'esperen especificacions en format tipus-SPSS o tipus-Fortran." #: src/language/data-io/placement-parser.c:119 #, c-format msgid "The %d columns %d-%d can't be evenly divided into %zu fields." -msgstr "" -"Les %d columnes %d-%d no poden ser uniformement dividides entre els camps %" -"zu." +msgstr "Les %d columnes %d-%d no poden ser uniformement dividides entre els camps %zu." #: src/language/data-io/placement-parser.c:305 msgid "Column positions for fields must be positive." @@ -3592,23 +3160,21 @@ msgstr "esperant un subcomando vàlid" #: src/language/data-io/print.c:267 #, c-format msgid "Output calls for %d records but %zu specified on RECORDS subcommand." -msgstr "" -"Resultats obtinguts per a %d registres, però %zu especificats al subcomando " -"RECORDS." +msgstr "Resultats obtinguts per a %d registres, però %zu especificats al subcomando RECORDS." #: src/language/data-io/print.c:436 -#, fuzzy, c-format +#, c-format msgid "Writing %zu record to %s." msgid_plural "Writing %zu records to %s." -msgstr[0] "Escribint %d registre a %s." -msgstr[1] "Escribint %d registres a %s." +msgstr[0] "Escribint el registre %zu a %s." +msgstr[1] "Escribint %zu registres a %s." #: src/language/data-io/print.c:440 -#, fuzzy, c-format +#, c-format msgid "Writing %zu record." msgid_plural "Writing %zu records." -msgstr[0] "Escribint %d registre." -msgstr[1] "Escrivint %d registres." +msgstr[0] "Escribint el registre %zu." +msgstr[1] "Escrivint %zu registres." #: src/language/data-io/save.c:223 src/language/data-io/save.c:238 #: src/language/data-io/save.c:266 @@ -3618,15 +3184,8 @@ msgstr "esperant %s o %s" #: src/language/data-io/trim.c:88 #, c-format -msgid "" -"Cannot rename %s as %s because there already exists a variable named %s. To " -"rename variables with overlapping names, use a single RENAME subcommand such " -"as \"/RENAME (A=B)(B=C)(C=A)\", or equivalently, \"/RENAME (A B C=B C A)\"." -msgstr "" -"No es pot canviar el nom %s per %s perquè ja hi ha una variable anomenada %" -"s. Per canviar el nom de les variables amb noms superposats, utilitzeu el " -"subcomando RENAME només com a \"/RENAME (A=B)(B=C)(C=A)\", o equivalentment, " -"\"/RENAME (A B C=B C A)\"." +msgid "Cannot rename %s as %s because there already exists a variable named %s. To rename variables with overlapping names, use a single RENAME subcommand such as \"/RENAME (A=B)(B=C)(C=A)\", or equivalently, \"/RENAME (A B C=B C A)\"." +msgstr "No es pot canviar el nom %s per %s perquè ja hi ha una variable anomenada %s. Per canviar el nom de les variables amb noms superposats, utilitzeu el subcomando RENAME només com a \"/RENAME (A=B)(B=C)(C=A)\", o equivalentment, \"/RENAME (A B C=B C A)\"." #: src/language/data-io/trim.c:114 msgid "`=' expected after variable list." @@ -3634,14 +3193,8 @@ msgstr "`=' esperat després de llista de variables." #: src/language/data-io/trim.c:122 #, c-format -msgid "" -"Number of variables on left side of `=' (%zu) does not match number of " -"variables on right side (%zu), in parenthesized group %d of RENAME " -"subcommand." -msgstr "" -"El nombre de variables en el costat esquerre de `=' (%zu) no coincideix amb " -"el nombre de variables al costat dret (%zu), en el grup entre parèntesi %d " -"del subcomando RENAME." +msgid "Number of variables on left side of `=' (%zu) does not match number of variables on right side (%zu), in parenthesized group %d of RENAME subcommand." +msgstr "El nombre de variables en el costat esquerre de `=' (%zu) no coincideix amb el nombre de variables al costat dret (%zu), en el grup entre parèntesi %d del subcomando RENAME." #: src/language/data-io/trim.c:135 #, c-format @@ -3662,114 +3215,60 @@ msgid "Duplicate variable name %s." msgstr "Nom de la variable %s duplicat." #: src/language/expressions/helpers.c:51 -msgid "" -"One of the arguments to a DATE function is not an integer. The result will " -"be system-missing." -msgstr "" -"Un dels arguments per a funció DATE no és un enter. El resultat serà perdut " -"del sistema." +msgid "One of the arguments to a DATE function is not an integer. The result will be system-missing." +msgstr "Un dels arguments per a funció DATE no és un enter. El resultat serà perdut del sistema." #: src/language/expressions/helpers.c:73 -msgid "" -"The week argument to DATE.WKYR is not an integer. The result will be system-" -"missing." -msgstr "" -"L'argument de setmana per DATE.WKYR no és un enter. El resultat serà perdut " -"pel sistema." +msgid "The week argument to DATE.WKYR is not an integer. The result will be system-missing." +msgstr "L'argument de setmana per DATE.WKYR no és un enter. El resultat serà perdut pel sistema." #: src/language/expressions/helpers.c:79 -msgid "" -"The week argument to DATE.WKYR is outside the acceptable range of 1 to 53. " -"The result will be system-missing." -msgstr "" -"L'argument de setmana per DATE.WKYR és fora de l'interval acceptable entre 1 " -"i 53. El resultat serà perdut pel sistema." +msgid "The week argument to DATE.WKYR is outside the acceptable range of 1 to 53. The result will be system-missing." +msgstr "L'argument de setmana per DATE.WKYR és fora de l'interval acceptable entre 1 i 53. El resultat serà perdut pel sistema." #: src/language/expressions/helpers.c:101 -msgid "" -"The day argument to DATE.YRDAY is not an integer. The result will be system-" -"missing." -msgstr "" -"L'argument de dia per DATE.YRDAY no és un enter. El resultat serà perdut " -"pel sistema." +msgid "The day argument to DATE.YRDAY is not an integer. The result will be system-missing." +msgstr "L'argument de dia per DATE.YRDAY no és un enter. El resultat serà perdut pel sistema." #: src/language/expressions/helpers.c:107 -msgid "" -"The day argument to DATE.YRDAY is outside the acceptable range of 1 to 366. " -"The result will be system-missing." -msgstr "" -"L'argument de dia per DATE.YRDAY és fora de l'interval acceptable entre 1 i " -"366. El resultat serà perdut al sistema." +msgid "The day argument to DATE.YRDAY is outside the acceptable range of 1 to 366. The result will be system-missing." +msgstr "L'argument de dia per DATE.YRDAY és fora de l'interval acceptable entre 1 i 366. El resultat serà perdut al sistema." #: src/language/expressions/helpers.c:129 -msgid "" -"The year argument to YRMODA is greater than 47516. The result will be " -"system-missing." -msgstr "" -"L'argument d'any per YRMODA és més gran que 47516. El resultat será perdut " -"al sistema." +msgid "The year argument to YRMODA is greater than 47516. The result will be system-missing." +msgstr "L'argument d'any per YRMODA és més gran que 47516. El resultat será perdut al sistema." #: src/language/expressions/helpers.c:182 #, c-format -msgid "" -"Unrecognized date unit \"%.*s\". Valid date units are \"years\", \"quarters" -"\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", and \"seconds\"." -msgstr "" -"Unitat de dates \"%.*s\" no reconeguda. Les unitats de data vàlides són " -"\"anys\", \"trimestres\", \"mesos\", \"setmanes\", \"dies\", \"hores\", " -"\"minuts\", i \"segons\"." +msgid "Unrecognized date unit \"%.*s\". Valid date units are \"years\", \"quarters\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", and \"seconds\"." +msgstr "Unitat de dates \"%.*s\" no reconeguda. Les unitats de data vàlides són \"anys\", \"trimestres\", \"mesos\", \"setmanes\", \"dies\", \"hores\", \"minuts\", i \"segons\"." #: src/language/expressions/helpers.c:332 -msgid "" -"Invalid DATESUM method. Valid choices are \"closest\" and \"rollover\"." -msgstr "" -"Mètode DATESUM invàlid. Les opcions vàlides són \"propera\" i \"acomplida\"." +msgid "Invalid DATESUM method. Valid choices are \"closest\" and \"rollover\"." +msgstr "Mètode DATESUM invàlid. Les opcions vàlides són \"propera\" i \"acomplida\"." #: src/language/expressions/parse.c:259 #, c-format -msgid "" -"Type mismatch: expression has %s type, but a numeric value is required here." -msgstr "" -"Incompatibilitat de tipus: l'expressió té tipus %s, però aquí es demana un " -"valor numèric." +msgid "Type mismatch: expression has %s type, but a numeric value is required here." +msgstr "Incompatibilitat de tipus: l'expressió té tipus %s, però aquí es demana un valor numèric." #: src/language/expressions/parse.c:271 #, c-format -msgid "" -"Type mismatch: expression has %s type, but a string value is required here." -msgstr "" -"Incompatibilitat de tipus: l'expressió té tipus %s, però aquí es demana un " -"valor de cadena." +msgid "Type mismatch: expression has %s type, but a string value is required here." +msgstr "Incompatibilitat de tipus: l'expressió té tipus %s, però aquí es demana un valor de cadena." #: src/language/expressions/parse.c:427 #, c-format msgid "Type mismatch while applying %s operator: cannot convert %s to %s." -msgstr "" -"Incompatibilitat dels tipus mentre que s'aplica l'operador %s: no es pot " -"convertir %s a %s." +msgstr "Incompatibilitat dels tipus mentre que s'aplica l'operador %s: no es pot convertir %s a %s." #: src/language/expressions/parse.c:643 -msgid "" -"Chaining relational operators (e.g. \"a < b < c\") will not produce the " -"mathematically expected result. Use the AND logical operator to fix the " -"problem (e.g. \"a < b AND b < c\"). If chaining is really intended, " -"parentheses will disable this warning (e.g. \"(a < b) < c\".)" -msgstr "" -"L'encadenament d'operadors relacionals (p.e. \"a < b < c\") no produirà el " -"resultat esperat matemàticament. Utilitzar l'operador lògic AND per " -"solucionar el problema (p.e. \"a < b AND b < c\"). Si l'encadenament és " -"realment intencionat, els parèntesis desactivaran aquesta alerta (p.e. \"(a " -"< b) < c\".)" +msgid "Chaining relational operators (e.g. \"a < b < c\") will not produce the mathematically expected result. Use the AND logical operator to fix the problem (e.g. \"a < b AND b < c\"). If chaining is really intended, parentheses will disable this warning (e.g. \"(a < b) < c\".)" +msgstr "L'encadenament d'operadors relacionals (p.e. \"a < b < c\") no produirà el resultat esperat matemàticament. Utilitzar l'operador lògic AND per solucionar el problema (p.e. \"a < b AND b < c\"). Si l'encadenament és realment intencionat, els parèntesis desactivaran aquesta alerta (p.e. \"(a < b) < c\".)" #: src/language/expressions/parse.c:744 -msgid "" -"The exponentiation operator (\"**\") is left-associative, even though right-" -"associative semantics are more useful. That is, \"a**b**c\" equals \"(a**b)" -"**c\", not as \"a**(b**c)\". To disable this warning, insert parentheses." -msgstr "" -"L'operador d'exponenciació (\"**\") apareix a l'esquerra, tot i que si " -"apareix a la dreta és més útil. És a dir, \"a**b**c\" és igual a \"(a**b)**c" -"\", no a \"a**(b**c)\". Per desactivar aquesta alerta, insereix parèntesis." +msgid "The exponentiation operator (\"**\") is left-associative, even though right-associative semantics are more useful. That is, \"a**b**c\" equals \"(a**b)**c\", not as \"a**(b**c)\". To disable this warning, insert parentheses." +msgstr "L'operador d'exponenciació (\"**\") apareix a l'esquerra, tot i que si apareix a la dreta és més útil. És a dir, \"a**b**c\" és igual a \"(a**b)**c\", no a \"a**(b**c)\". Per desactivar aquesta alerta, insereix parèntesis." #: src/language/expressions/parse.c:809 #, c-format @@ -3812,12 +3311,8 @@ msgstr "%s requereix com a mínim %d arguments vàlids en la llista." #: src/language/expressions/parse.c:1110 #, c-format -msgid "" -"With %s, using minimum valid argument count of %d does not make sense when " -"passing only %d arguments in list." -msgstr "" -"Amb %s, utilitzar el mínim recompte d'argument vàlid %d no té sentit quan es " -"passen només %d arguments en la llista." +msgid "With %s, using minimum valid argument count of %d does not make sense when passing only %d arguments in list." +msgstr "Amb %s, utilitzar el mínim recompte d'argument vàlid %d no té sentit quan es passen només %d arguments en la llista." #: src/language/expressions/parse.c:1164 #, c-format @@ -3866,9 +3361,8 @@ msgid "warning" msgstr "avís" #: src/libpspp/message.c:135 -#, fuzzy msgid "note" -msgstr "Centre" +msgstr "anotació" #: src/libpspp/tmpfile.c:56 msgid "failed to create temporary file" @@ -3891,14 +3385,14 @@ msgid "writing to temporary file" msgstr "escrivint a un arxiu temporal" #: src/libpspp/zip-writer.c:91 -#, fuzzy, c-format +#, c-format msgid "%s: error opening output file" -msgstr "ascii: obrint l'arxiu de resultats \"%s\"" +msgstr "%s: error obrint l'arxiu de resultats" #: src/libpspp/zip-writer.c:224 -#, fuzzy, c-format +#, c-format msgid "%s: write failed" -msgstr "%s: No és un arxiu portàtil." +msgstr "%s: error en escriure" #: src/math/percentiles.c:36 msgid "HAverage" @@ -3923,17 +3417,12 @@ msgstr "Empíric amb mitjanes" #: src/output/ascii.c:278 #, c-format msgid "%s: %s must be positive integer or `auto'" -msgstr "" +msgstr "%s: %s ha de ser enter positiu o `auto'" #: src/output/ascii.c:311 -#, fuzzy, c-format -msgid "" -"ascii: page excluding margins and headers must be at least %d characters " -"wide by %d lines long, but as configured is only %d characters by %d lines" -msgstr "" -"ascii: la pàgina excloent els marges i encapçalaments ha de ser com a mínim " -"de 59 caràcters d'ample per 15 línies de llarg, però tal com està " -"configurada la pàgina només hi ha %d caràcters i %d línies" +#, c-format +msgid "ascii: page excluding margins and headers must be at least %d characters wide by %d lines long, but as configured is only %d characters by %d lines" +msgstr "ascii: excloent els marges i encapçalaments la pàgina ha de tenir com a mínim %d caràcters d'ample per %d línies de llarg, però tal com està configurada, només n'hi ha %d caràcters i %d línies" #: src/output/ascii.c:360 #, c-format @@ -3943,7 +3432,7 @@ msgstr "ascii: tancant l'arxiu de sortida \"%s\"" #: src/output/ascii.c:503 #, c-format msgid "See %s for a chart." -msgstr "" +msgstr "Veure %s per a gràfica." #: src/output/ascii.c:806 #, c-format @@ -3957,29 +3446,28 @@ msgstr "%s - Pàgina %d" #: src/output/csv.c:87 src/output/html.c:106 src/output/journal.c:93 #: src/output/msglog.c:66 -#, fuzzy, c-format +#, c-format msgid "error opening output file \"%s\"" -msgstr "ascii: obrint l'arxiu de resultats \"%s\"" +msgstr "error obrint l'arxiu de resultats \"%s\"" #: src/output/driver.c:330 #, c-format -msgid "" -"%s is not a valid device type (the choices are \"terminal\" and \"listing\")" -msgstr "" +msgid "%s is not a valid device type (the choices are \"terminal\" and \"listing\")" +msgstr "%s no és un tipus de dispositiu vàlid (les opcions son \"terminal\" i \"llistat\")" #: src/output/driver.c:343 -#, fuzzy, c-format +#, c-format msgid "%s: unknown option \"%s\"" -msgstr "ascii: paràmetre desconegut `%s'" +msgstr "%s: opció desconeguda \"%s\"" #: src/output/html.c:114 msgid "PSPP Output" msgstr "Resultat de PSPP" #: src/output/journal.c:67 -#, fuzzy, c-format +#, c-format msgid "error writing output file \"%s\"" -msgstr "error en escriure \"%s\"" +msgstr "error en escriure l'arxiu de resultats \"%s\"" #: src/output/measure.c:65 #, c-format @@ -3997,14 +3485,14 @@ msgid "unknown paper type `%.*s'" msgstr "tipus de paper desconegut `%.*s'" #: src/output/measure.c:248 -#, fuzzy, c-format +#, c-format msgid "error opening input file \"%s\"" -msgstr "error en obrir \"%s\"" +msgstr "error en obrir l'arxiu de dades \"%s\"" #: src/output/measure.c:259 -#, fuzzy, c-format +#, c-format msgid "error reading file \"%s\"" -msgstr "error de lectura \"%s\"" +msgstr "error llegint l'arxiu \"%s\"" #: src/output/measure.c:276 #, c-format @@ -4014,42 +3502,42 @@ msgstr "l'arxiu de mida de paper \"%s\" no indica una mida de paper" #: src/output/options.c:113 #, c-format msgid "%s: \"%s\" is \"%s\" but a Boolean value is required" -msgstr "" +msgstr "%s: \"%s\" és \"%s\", però es requereix un valor Booleà" #: src/output/options.c:188 #, c-format msgid "%s: \"%s\" is \"%s\" but one of the following is required: %s" -msgstr "" +msgstr "%s: \"%s\" és \"%s\", però es requereix un del sequents: %s " #: src/output/options.c:232 #, c-format msgid "%s: \"%s\" is \"%s\" but a nonnegative integer is required" -msgstr "" +msgstr "%s: \"%s\" és \"%s\", però es requereix un enter no negatiu" #: src/output/options.c:236 #, c-format msgid "%s: \"%s\" is \"%s\" but a positive integer is required" -msgstr "" +msgstr "%s: \"%s\" és \"%s\", però es requereix un enter positiu" #: src/output/options.c:239 #, c-format msgid "%s: \"%s\" is \"%s\" but an integer is required" -msgstr "" +msgstr "%s: \"%s\" és \"%s\", però es requereix un enter" #: src/output/options.c:242 #, c-format msgid "%s: \"%s\" is \"%s\" but an integer greater than %d is required" -msgstr "" +msgstr "%s: \"%s\" és \"%s\", però es requereix un enter més gran que %d" #: src/output/options.c:247 #, c-format msgid "%s: \"%s\" is \"%s\" but an integer between %d and %d is required" -msgstr "" +msgstr "%s: \"%s\" és \"%s\", però es requereix un enter entre %d i %d" #: src/output/options.c:326 #, c-format msgid "%s: \"%s\" is \"%s\" but a file name that contains \"#\" is required." -msgstr "" +msgstr "%s: \"%s\" és \"%s\", però es requereix un nom d'arxiu que contingui \"#\"." #: src/output/tab.c:206 #, c-format @@ -4057,48 +3545,34 @@ msgid "bad vline: x=%d+%d=%d y=(%d+%d=%d,%d+%d=%d) in table size (%d,%d)\n" msgstr "bad vline: x=%d+%d=%d y=(%d+%d=%d,%d+%d=%d) a taula de mida (%d,%d)\n" #: src/output/tab.c:244 -#, fuzzy, c-format +#, c-format msgid "bad hline: x=(%d+%d=%d,%d+%d=%d) y=%d+%d=%d in table size (%d,%d)\n" -msgstr "bad vline: x=%d+%d=%d y=(%d+%d=%d,%d+%d=%d) a taula de mida (%d,%d)\n" +msgstr "incorrecta hline: x=(%d+%d=%d,%d+%d=%d) y=%d+%d=%d a taula de mida (%d,%d)\n" #: src/output/tab.c:288 #, c-format -msgid "" -"bad box: (%d+%d=%d,%d+%d=%d)-(%d+%d=%d,%d+%d=%d) in table size (%d,%d)\n" -msgstr "" -"bad box: (%d+%d=%d,%d+%d=%d)-(%d+%d=%d,%d+%d=%d) en taula amb mida (%d,%d)\n" +msgid "bad box: (%d+%d=%d,%d+%d=%d)-(%d+%d=%d,%d+%d=%d) in table size (%d,%d)\n" +msgstr "bad box: (%d+%d=%d,%d+%d=%d)-(%d+%d=%d,%d+%d=%d) en taula amb mida (%d,%d)\n" #: src/output/cairo.c:295 -#, fuzzy, c-format +#, c-format msgid "error opening output file \"%s\": %s" -msgstr "ascii: obrint l'arxiu de resultats \"%s\"" +msgstr "error obrint l'arxiu de resultats \"%s\": %s" #: src/output/cairo.c:312 -#, fuzzy, c-format -msgid "" -"The defined page is not wide enough to hold at least %d characters in the " -"default font. In fact, there's only room for %d characters." -msgstr "" -"La pàgina PostScript definida no és prou extensa com per contenir marges i " -"capçaleres, a més d'almenys 15 línies amb les fonts per defecte. De fet, " -"només hi ha espai per %d línies de cada font en la mida per defecte de %d.%" -"03d punts." +#, c-format +msgid "The defined page is not wide enough to hold at least %d characters in the default font. In fact, there's only room for %d characters." +msgstr "La pàgina definida no és prou ampla com per contenir al més d'almenys %d caracters en la font per defecte. De fet, només n'hi ha espai per %d caracters." #: src/output/cairo.c:322 -#, fuzzy, c-format -msgid "" -"The defined page is not long enough to hold margins and headers, plus least %" -"d lines of the default fonts. In fact, there's only room for %d lines." -msgstr "" -"La pàgina PostScript definida no és prou extensa com per contenir marges i " -"capçaleres, a més d'almenys 15 línies amb les fonts per defecte. De fet, " -"només hi ha espai per %d línies de cada font en la mida per defecte de %d.%" -"03d punts." +#, c-format +msgid "The defined page is not long enough to hold margins and headers, plus least %d lines of the default fonts. In fact, there's only room for %d lines." +msgstr "La pàgina definida no és prou llarga com per contenir marges i capçaleres, a més d'almenys %d línies amb les fonts per defecte. De fet, només n'hi ha espai per %d línies." #: src/output/cairo.c:376 -#, fuzzy, c-format +#, c-format msgid "error drawing output for %s driver: %s" -msgstr "error de sintaxi analitzant opcions pel controlador \"%s\"" +msgstr "error dibuixant resultats pel controlador %s: \"%s\"" #: src/output/cairo.c:864 #, c-format @@ -4106,9 +3580,9 @@ msgid "\"%s\": bad font specification" msgstr "\"%s\": especificació de caràcter no vàlida" #: src/output/cairo.c:1084 -#, fuzzy, c-format +#, c-format msgid "error writing output file \"%s\": %s" -msgstr "Error en tancar l'arxiu portàtil \"%s\": %s." +msgstr "Error escribint l'arxiu de resultats \"%s\": %s." #: src/output/charts/np-plot-cairo.c:37 #, c-format @@ -4147,16 +3621,15 @@ msgstr "Corba ROC" #: src/output/charts/scree-cairo.c:36 msgid "Scree Plot" -msgstr "" +msgstr "Grafic de Sedimentació" #: src/output/charts/scree-cairo.c:38 msgid "Eigenvalue" -msgstr "" +msgstr "Valor-propi" #: src/output/odt.c:93 -#, fuzzy msgid "error creating temporary file" -msgstr "llegint arxiu temporal" +msgstr "error creant arxiu temporal" #: src/ui/source-init-opts.c:78 msgid "Algorithm must be either \"compatible\" or \"enhanced\"." @@ -4167,17 +3640,13 @@ msgid "Syntax must be either \"compatible\" or \"enhanced\"." msgstr "La sintaxi ha de ser o \"compatible\" o \"ampliada\"." #: src/ui/terminal/main.c:128 -msgid "" -"Stopping syntax file processing here to avoid a cascade of dependent command " -"failures." -msgstr "" -"Aturant el processament de l'arxiu de sintaxi aquí per evitar una cascada " -"d'errors derivats." +msgid "Stopping syntax file processing here to avoid a cascade of dependent command failures." +msgstr "Aturant el processament de l'arxiu de sintaxi aquí per evitar una cascada d'errors derivats." #: src/ui/terminal/msg-ui.c:127 #, c-format msgid "Notes (%d) exceed limit (%d). Suppressing further notes." -msgstr "" +msgstr "Les anotacions (%d) han superat el límit (%d). Es suprimeixen les posteriors." #: src/ui/terminal/msg-ui.c:135 #, c-format @@ -4185,9 +3654,9 @@ msgid "Warnings (%d) exceed limit (%d)." msgstr "Avisos (%d) excedeixen el límit (%d)." #: src/ui/terminal/msg-ui.c:138 -#, fuzzy, c-format +#, c-format msgid "Errors (%d) exceed limit (%d)." -msgstr "Errors (%d) excedeixen el límit (%d)." +msgstr "Els errors (%d) excedeixen el límit (%d)." #: src/ui/terminal/terminal.c:72 #, c-format @@ -4197,12 +3666,12 @@ msgstr "no es pot accedir a la definició per a terminal `%s'" #: src/ui/terminal/terminal-opts.c:119 #, c-format msgid "%s: output option missing `='" -msgstr "" +msgstr "%s: manca opció de resultat `='" #: src/ui/terminal/terminal-opts.c:126 #, c-format msgid "%s: output option specified more than once" -msgstr "" +msgstr "%s: opció de resultat especificada més d'una vegada" #: src/ui/gui/checkbox-treeview.c:92 src/language/stats/crosstabs.q:1213 #: src/language/stats/crosstabs.q:1240 src/language/stats/crosstabs.q:1263 @@ -4314,7 +3783,7 @@ msgstr "Expressió regular incorrecta: %s" #: src/ui/gui/factor-dialog.c:344 #, c-format msgid "Eigenvalues over %4.2f times the mean eigenvalue" -msgstr "" +msgstr "Valors-propis per sobre de %4.2f vegades el valor-propi mitjà" #: src/ui/gui/frequencies-dialog.c:45 msgid "Standard error of the mean" @@ -4353,10 +3822,8 @@ msgstr "F.J. Miguel, J. Gómez, P. Payà" #: src/ui/gui/help-menu.c:98 #, c-format -msgid "" -"Cannot open reference manual: %s. The PSPP user manual is also available at " -"http://www.gnu.org/software/pspp/documentation.html" -msgstr "" +msgid "Cannot open reference manual: %s. The PSPP user manual is also available at http://www.gnu.org/software/pspp/documentation.html" +msgstr "No es pot obrir el manula de referència: %s. El manual d'usuari de PSPP es tambè disponible a http://www.gnu.org/software/pspp/documentation.html" #: src/ui/gui/help-menu.c:117 msgid "_Help" @@ -4434,15 +3901,14 @@ msgid "Open" msgstr "Obert" #: src/ui/gui/psppire-data-window.c:392 -#, fuzzy msgid "Data and Syntax Files" -msgstr "No es pot obrir l'arxiu de sintaxi \"%s\"" +msgstr "Arxius de Dades i Sintaxi" -#: src/ui/gui/psppire-data-window.c:402 src/ui/gui/psppire-data-window.c:611 +#: src/ui/gui/psppire-data-window.c:402 src/ui/gui/psppire-data-window.c:614 msgid "System Files (*.sav)" msgstr "Arxius de Sistema (*.sav)" -#: src/ui/gui/psppire-data-window.c:408 src/ui/gui/psppire-data-window.c:617 +#: src/ui/gui/psppire-data-window.c:408 src/ui/gui/psppire-data-window.c:620 msgid "Portable Files (*.por) " msgstr "Arxius Portables (*.por)" @@ -4450,57 +3916,54 @@ msgstr "Arxius Portables (*.por)" msgid "Syntax Files (*.sps) " msgstr "Arxius de Sintàxi (*.sps) " -#: src/ui/gui/psppire-data-window.c:420 src/ui/gui/psppire-data-window.c:623 +#: src/ui/gui/psppire-data-window.c:420 src/ui/gui/psppire-data-window.c:626 #: src/ui/gui/psppire-syntax-window.c:298 msgid "All Files" msgstr "Tots els arxius" -#: src/ui/gui/psppire-data-window.c:603 +#: src/ui/gui/psppire-data-window.c:606 msgid "Save" msgstr "Desar" -#: src/ui/gui/psppire-data-window.c:636 +#: src/ui/gui/psppire-data-window.c:639 msgid "Portable File" msgstr "Arxiu Portable" -#: src/ui/gui/psppire-data-window.c:773 +#: src/ui/gui/psppire-data-window.c:776 msgid "Font Selection" msgstr "Selecció de font" -#: src/ui/gui/psppire-data-window.c:1261 +#: src/ui/gui/psppire-data-window.c:1264 msgid "Data Editor" msgstr "Editor de Dades" #: src/ui/gui/psppire-output-window.c:458 msgid "Export Output" -msgstr "" +msgstr "Exporta Resultats" #: src/ui/gui/psppire-output-window.c:466 -#, fuzzy msgid "PDF Files (*.pdf)" -msgstr "Arxius Portables (*.por)" +msgstr "Arxius PDF (*.pdf)" #: src/ui/gui/psppire-output-window.c:467 msgid "HTML Files (*.html)" -msgstr "" +msgstr "Arxius HTML (*.html)" #: src/ui/gui/psppire-output-window.c:468 msgid "OpenDocument Files (*.odt)" -msgstr "" +msgstr "Arxius OpenDocument (*.odt)" #: src/ui/gui/psppire-output-window.c:469 -#, fuzzy msgid "Text Files (*.txt)" -msgstr "Arxius de Sistema (*.sav)" +msgstr "Arxius de Text (*.txt)" #: src/ui/gui/psppire-output-window.c:470 -#, fuzzy msgid "PostScript Files (*.ps)" -msgstr "Arxius Portables (*.por)" +msgstr "Arxius PostScript (*.ps)" #: src/ui/gui/psppire-output-window.c:471 msgid "Comma-Separated Value Files (*.csv)" -msgstr "" +msgstr "Arxius de Valors Separats per Comes (*.csv)" #: src/ui/gui/psppire-output-window.c:605 msgid "Output Viewer" @@ -4592,11 +4055,8 @@ msgstr "Desa el canvis a \"%s\" abans de sortir?" #: src/ui/gui/psppire-window.c:475 #, c-format -msgid "" -"If you don't save, changes from the last %ld seconds will be permanently " -"lost." -msgstr "" -"Si no es desa, els canvis dels darrers %ld segons es perdran permanentment." +msgid "If you don't save, changes from the last %ld seconds will be permanently lost." +msgstr "Si no es desa, els canvis dels darrers %ld segons es perdran permanentment." #: src/ui/gui/psppire-window.c:479 msgid "Close _without saving" @@ -4669,12 +4129,8 @@ msgstr "Error leyendo \"%s\": %s" #: src/ui/gui/text-data-import-dialog.c:480 #, c-format -msgid "" -"Failed to read \"%s\", because it contains a line over %d bytes long and " -"therefore appears not to be a text file." -msgstr "" -"Error en llegir \"%s\", perquè conté una linia per sobre dels %d bytes i per " -"tant sembla que no es un arxiu de text." +msgid "Failed to read \"%s\", because it contains a line over %d bytes long and therefore appears not to be a text file." +msgstr "Error en llegir \"%s\", perquè conté una linia per sobre dels %d bytes i per tant sembla que no es un arxiu de text." #: src/ui/gui/text-data-import-dialog.c:494 #, c-format @@ -4691,14 +4147,10 @@ msgstr "Important dades de text deliminatat" #: src/ui/gui/text-data-import-dialog.c:749 msgid "" -"This assistant will guide you through the process of importing data into " -"PSPP from a text file with one line per case, in which fields are separated " -"by tabs, commas, or other delimiters.\n" +"This assistant will guide you through the process of importing data into PSPP from a text file with one line per case, in which fields are separated by tabs, commas, or other delimiters.\n" "\n" msgstr "" -"Aquest asistent t'acompanyarà per tot el procés d'importar dades cap al PSPP " -"a partir d'un arxiu de text amb una linia per cas, al qual els camps estan " -"separats per tabuladors, comes, o altres delimitadors.\n" +"Aquest asistent t'acompanyarà per tot el procés d'importar dades cap al PSPP a partir d'un arxiu de text amb una linia per cas, al qual els camps estan separats per tabuladors, comes, o altres delimitadors.\n" "\n" #: src/ui/gui/text-data-import-dialog.c:755 @@ -4717,18 +4169,10 @@ msgstr[1] "L'arxiu seleccionat conté aproximadament %lu linies de text. " #: src/ui/gui/text-data-import-dialog.c:769 #, c-format -msgid "" -"Only the first %zu line of the file will be shown for preview purposes in " -"the following screens. " -msgid_plural "" -"Only the first %zu lines of the file will be shown for preview purposes in " -"the following screens. " -msgstr[0] "" -"Només les primeres %zu linies de l'arxiu es previsualitzaran a les seguents " -"pantalles. " -msgstr[1] "" -"Només les primeres %zu linies de l'arxiu es previsualitzaran a les seguents " -"pantalles. " +msgid "Only the first %zu line of the file will be shown for preview purposes in the following screens. " +msgid_plural "Only the first %zu lines of the file will be shown for preview purposes in the following screens. " +msgstr[0] "Només les primeres %zu linies de l'arxiu es previsualitzaran a les seguents pantalles. " +msgstr[1] "Només les primeres %zu linies de l'arxiu es previsualitzaran a les seguents pantalles. " #: src/ui/gui/text-data-import-dialog.c:776 msgid "You may choose below how much of the file should actually be imported." @@ -4804,14 +4248,14 @@ msgid "%s: Attribute value %s[%d] is not quoted: %s" msgstr "%s: El valor de l'atribut %s[%d] no esta entre cometes: %s" #: tests/dissect-sysfile.c:880 -#, fuzzy, c-format +#, c-format msgid "Bad size %zu for extended number of cases." -msgstr "Longitud no vàlid %zu en l'extensió 11." +msgstr "Longitud no vàlid %zu per nombre extens de casos." #: tests/dissect-sysfile.c:886 #, c-format msgid "Bad count %zu for extended number of cases." -msgstr "" +msgstr "Recompte incorrecte %zu per nombre extens de casos." #: src/language/utilities/set.q:188 msgid "WORKSPACE must be at least 1MB" @@ -4853,12 +4297,8 @@ msgstr "WIDTH ha de ser com a mínim 40." #: src/language/utilities/set.q:490 #, c-format -msgid "" -"FORMAT requires numeric output format as an argument. Specified format %s " -"is of type string." -msgstr "" -"FORMAT requereix format de resultat numeric com a argument. El format %s " -"especificat es de tipus cadena." +msgid "FORMAT requires numeric output format as an argument. Specified format %s is of type string." +msgstr "FORMAT requereix format de resultat numeric com a argument. El format %s especificat es de tipus cadena." #: src/language/utilities/set.q:707 msgid "ISL (32-bit IEEE 754 single, little-endian)" @@ -4902,11 +4342,8 @@ msgid "%s is %s." msgstr "%s és %s." #: src/language/stats/crosstabs.q:289 -msgid "" -"Missing mode REPORT not allowed in general mode. Assuming MISSING=TABLE." -msgstr "" -"L'INFORME de perduts no esta disponible el mode general. S'assumeix " -"MISSING=TABLE." +msgid "Missing mode REPORT not allowed in general mode. Assuming MISSING=TABLE." +msgstr "L'INFORME de perduts no esta disponible el mode general. S'assumeix MISSING=TABLE." #: src/language/stats/crosstabs.q:399 msgid "Too many cross-tabulation variables or dimensions." @@ -5142,9 +4579,8 @@ msgid "%s Dependent" msgstr "%s Dependent" #: src/language/stats/examine.q:357 -#, fuzzy msgid "Not creating NP plot because data set is empty." -msgstr "No es crea el gràfic perquè el conjunt de dades es buit." +msgstr "No es crearà el gràfic NP perquè el conjunt de dades es buit." #: src/language/stats/examine.q:442 src/language/stats/examine.q:949 msgid "Not creating plot because data set is empty." @@ -5213,27 +4649,18 @@ msgid "%g" msgstr "%g" #: src/language/stats/frequencies.q:382 -#, fuzzy msgid "Bar charts are not implemented." -msgstr "%s no està implementat." +msgstr "El gràfic de barres no està implementat." #: src/language/stats/frequencies.q:399 -#, fuzzy, c-format -msgid "" -"MAX for histogram must be greater than or equal to MIN, but MIN was " -"specified as %.15g and MAX as %.15g. MIN and MAX will be ignored." -msgstr "" -"MAX ha de ser major o igual a MIN, si tots dos s'especifiquen. Però, MIN " -"s'ha especificat com a %g i MAX com a %g. MIN i MAX son ignorats." +#, c-format +msgid "MAX for histogram must be greater than or equal to MIN, but MIN was specified as %.15g and MAX as %.15g. MIN and MAX will be ignored." +msgstr "Per l'histograma, MAX ha de ser major o igual a MIN, però MIN s'ha especificat com a %.15g i MAX com a %.15g. MIN i MAX seràn ignorats." #: src/language/stats/frequencies.q:420 -#, fuzzy, c-format -msgid "" -"MAX for pie chart must be greater than or equal to MIN, but MIN was " -"specified as %.15g and MAX as %.15g. MIN and MAX will be ignored." -msgstr "" -"MAX ha de ser major o igual a MIN, si tots dos s'especifiquen. Però, MIN " -"s'ha especificat com a %g i MAX com a %g. MIN i MAX son ignorats." +#, c-format +msgid "MAX for pie chart must be greater than or equal to MIN, but MIN was specified as %.15g and MAX as %.15g. MIN and MAX will be ignored." +msgstr "Per grafica de sectors, MAX ha de ser major o igual a MIN, però MIN s'ha especificat com a %.15g i MAX com a %.15g. MIN i MAX seràn ignorats." #: src/language/stats/frequencies.q:703 msgid "`)' expected after GROUPED interval list." @@ -5254,20 +4681,17 @@ msgid "Value Label" msgstr "Etiqueta de Valor" #: src/language/stats/frequencies.q:816 -#, fuzzy msgid "Valid Percent" -msgstr "Percentatge" +msgstr "Percentatge Vàlid" #: src/language/stats/frequencies.q:817 -#, fuzzy msgid "Cum Percent" -msgstr "Percentatge" +msgstr "Percentatge Acumulat" #: src/language/stats/frequencies.q:1008 #, c-format msgid "No valid data for variable %s; statistics not displayed." -msgstr "" -"No hi ha dades vàlides per a la variable %s; not es mostren estadístiques." +msgstr "No hi ha dades vàlides per a la variable %s; not es mostren estadístiques." #: src/language/stats/frequencies.q:1054 msgid "50 (Median)" @@ -5276,14 +4700,14 @@ msgstr "50 (Mediana)" #: src/language/stats/frequencies.q:1209 #, c-format msgid "Omitting pie chart for %s, which has only %d unique values." -msgstr "" +msgstr "S'omet grafic de sectors per a %s, que només té %d valors únics. " #: src/language/stats/frequencies.q:1212 #, c-format msgid "Omitting pie chart for %s, which has over 50 unique values." -msgstr "" +msgstr "S'omet grafic de sectors per a %s, que té més de 50 valors únics. " -#: src/language/stats/glm.q:248 +#: src/language/stats/glm.q:247 msgid "Multivariate GLM not yet supported" msgstr "GLM multivariable encara no disponible" @@ -5301,33 +4725,22 @@ msgstr "Actualment no está implenetat el subcomandament NPAR." #: src/language/stats/npar.q:256 #, c-format -msgid "" -"The specified value of HI (%d) is lower than the specified value of LO (%d)" -msgstr "" -"El valor especificatper a HI (%d) és menor que l'especificat per a LO (%d)" +msgid "The specified value of HI (%d) is lower than the specified value of LO (%d)" +msgstr "El valor especificatper a HI (%d) és menor que l'especificat per a LO (%d)" #: src/language/stats/npar.q:311 #, c-format -msgid "" -"%d expected values were given, but the specified range (%d-%d) requires " -"exactly %d values." -msgstr "" -"S'han proporcionat %d valors esperats, però l'interval especificat (%d-%d) " -"requereix exactament %d valors." +msgid "%d expected values were given, but the specified range (%d-%d) requires exactly %d values." +msgstr "S'han proporcionat %d valors esperats, però l'interval especificat (%d-%d) requereix exactament %d valors." #: src/language/stats/npar.q:453 src/language/stats/t-test.q:380 #, c-format -msgid "" -"PAIRED was specified but the number of variables preceding WITH (%zu) did " -"not match the number following (%zu)." -msgstr "" -"S'ha especificat PAIRED però el nombre de variables abans de WITH (%zu) not " -"conicideixen amb en nombre de variables seguents (%zu)." +msgid "PAIRED was specified but the number of variables preceding WITH (%zu) did not match the number following (%zu)." +msgstr "S'ha especificat PAIRED però el nombre de variables abans de WITH (%zu) not conicideixen amb en nombre de variables seguents (%zu)." #: src/language/stats/oneway.q:170 msgid "Number of contrast coefficients must equal the number of groups" -msgstr "" -"El nombre de coeficients de contrast ha de ser igual al nombre de grups." +msgstr "El nombre de coeficients de contrast ha de ser igual al nombre de grups." #: src/language/stats/oneway.q:179 #, c-format @@ -5427,8 +4840,7 @@ msgstr "%s de %s" #: src/language/stats/rank.q:600 msgid "Cannot create new rank variable. All candidates in use." -msgstr "" -"No es pot crear la nova variable de rangs. Tots els candidats estan en ús." +msgstr "No es pot crear la nova variable de rangs. Tots els candidats estan en ús." #: src/language/stats/rank.q:693 msgid "Variables Created By RANK" @@ -5455,12 +4867,8 @@ msgid "%s into %s(%s of %s)" msgstr "%s en %s(%s de %s)" #: src/language/stats/rank.q:761 -msgid "" -"FRACTION has been specified, but NORMAL and PROPORTION rank functions have " -"not been requested. The FRACTION subcommand will be ignored." -msgstr "" -"S'ha especificat FRACTION, però no s'ahn demanat funcions de rang NORMAL o " -"PROPORTION. La subordre FRACTION será ignorada." +msgid "FRACTION has been specified, but NORMAL and PROPORTION rank functions have not been requested. The FRACTION subcommand will be ignored." +msgstr "S'ha especificat FRACTION, però no s'ahn demanat funcions de rang NORMAL o PROPORTION. La subordre FRACTION será ignorada." #: src/language/stats/rank.q:852 #, c-format @@ -5520,18 +4928,12 @@ msgid "Coefficient Correlations" msgstr "Correlacions de Coeficients" #: src/language/stats/regression.q:793 -msgid "" -"The dependent variable is equal to the independent variable.The least " -"squares line is therefore Y=X.Standard errors and related statistics may be " -"meaningless." -msgstr "" -"La variable dependiente es igual a la variable independiente. La línea de " -"minimos cuadrados es por tanto Y=X. Los errores estàndard i els estadistics " -"relacionats podríen ser irrellevants." +msgid "The dependent variable is equal to the independent variable.The least squares line is therefore Y=X.Standard errors and related statistics may be meaningless." +msgstr "La variable dependiente es igual a la variable independiente. La línea de minimos cuadrados es por tanto Y=X. Los errores estàndard i els estadistics relacionats podríen ser irrellevants." #: src/language/stats/regression.q:891 msgid "REGRESSION requires numeric variables." -msgstr "" +msgstr "REGRESSION requereix variables numèriques." #: src/language/stats/regression.q:962 msgid "No valid data found. This command was skipped." @@ -5612,9 +5014,7 @@ msgstr "%" #: src/language/stats/t-test.q:190 msgid "Exactly one of TESTVAL, GROUPS and PAIRS subcommands must be specified." -msgstr "" -"Exactamente un dels subcomanaments TESTVAL, GROUPS y PAIRS ha " -"d'especificarse." +msgstr "Exactamente un dels subcomanaments TESTVAL, GROUPS y PAIRS ha d'especificarse." #: src/language/stats/t-test.q:211 msgid "VARIABLES subcommand may not be used with PAIRS." @@ -5625,11 +5025,8 @@ msgid "One or more VARIABLES must be specified." msgstr "Una o més VARIABLES han de ser especificades." #: src/language/stats/t-test.q:324 -msgid "" -"When applying GROUPS to a string variable, two values must be specified." -msgstr "" -"Quan s'aplica GROUPS a una variable alfabetica, s'han d'especificar dos " -"valors." +msgid "When applying GROUPS to a string variable, two values must be specified." +msgstr "Quan s'aplica GROUPS a una variable alfabetica, s'han d'especificar dos valors." #: src/language/stats/t-test.q:395 msgid "At least two variables must be specified on PAIRS." @@ -5727,33 +5124,22 @@ msgstr "%s & %s" #: src/language/data-io/file-handle.q:65 #, c-format -msgid "" -"File handle %s is already defined. Use CLOSE FILE HANDLE before redefining " -"a file handle." -msgstr "" -"El manipulador d'arxiu %s ja ha esta definit. Utilitzar CLOSE FILE HANDLE " -"abans de redefinir un manipulador d'arxius." +msgid "File handle %s is already defined. Use CLOSE FILE HANDLE before redefining a file handle." +msgstr "El manipulador d'arxiu %s ja ha esta definit. Utilitzar CLOSE FILE HANDLE abans de redefinir un manipulador d'arxius." #: src/language/data-io/file-handle.q:120 msgid "RECFORM must be specified with MODE=360." msgstr "RECFORM ha de ser espeficat amb MODE=360." #: src/language/data-io/file-handle.q:131 -#, fuzzy, c-format -msgid "" -"The specified file mode requires LRECL. Assuming %zu-character records." -msgstr "" -"El mode d'arxiu especificat requereix LRECL. S'asumeix %d-registres de " -"caracter." +#, c-format +msgid "The specified file mode requires LRECL. Assuming %zu-character records." +msgstr "El mode d'arxiu especificat requereix LRECL. S'asumeix registres de %zu caracters." #: src/language/data-io/file-handle.q:135 #, c-format -msgid "" -"Record length (%ld) must be between 1 and %lu bytes. Assuming %d-character " -"records." -msgstr "" -"L'amplada de registre (%ld) ha d'estar entre 1 i %lu bytes. S'asumeix %d-" -"registres de caracter." +msgid "Record length (%ld) must be between 1 and %lu bytes. Assuming %d-character records." +msgstr "L'amplada de registre (%ld) ha d'estar entre 1 i %lu bytes. S'asumeix %d-registres de caracter." #: src/language/data-io/file-handle.q:177 msgid "file" @@ -5774,26 +5160,18 @@ msgstr "Aquí no està permès un manipulador per a %s." #: src/language/data-io/list.q:99 #, c-format -msgid "" -"The first case (%ld) specified precedes the last case (%ld) specified. The " -"values will be swapped." -msgstr "" -"El primer cas (%ld) especificat precedeix a l'ultim cas (%ld) especificat. " -"Els valors s'intercanviaran." +msgid "The first case (%ld) specified precedes the last case (%ld) specified. The values will be swapped." +msgstr "El primer cas (%ld) especificat precedeix a l'ultim cas (%ld) especificat. Els valors s'intercanviaran." #: src/language/data-io/list.q:107 #, c-format -msgid "" -"The first case (%ld) to list is less than 1. The value is being reset to 1." -msgstr "" -"EL primer cas (%ld) per llistar es menor que 1. El valor es retorna a 1." +msgid "The first case (%ld) to list is less than 1. The value is being reset to 1." +msgstr "EL primer cas (%ld) per llistar es menor que 1. El valor es retorna a 1." #: src/language/data-io/list.q:113 #, c-format -msgid "" -"The last case (%ld) to list is less than 1. The value is being reset to 1." -msgstr "" -"L'últim cas (%ld) per llistar es menor que 1. El valor es restaura a 1.." +msgid "The last case (%ld) to list is less than 1. The value is being reset to 1." +msgstr "L'últim cas (%ld) per llistar es menor que 1. El valor es restaura a 1.." #: src/language/data-io/list.q:119 #, c-format @@ -5801,13 +5179,12 @@ msgid "The step value %ld is less than 1. The value is being reset to 1." msgstr "El valor del pas %ld es menor que 1. el valor es retorna a 1." #: src/ui/gui/binomial.ui:57 src/ui/gui/chi-square.ui:57 -#, fuzzy msgid "_Test Variable List:" -msgstr "Variable(s) de prova:" +msgstr "Lista de Variable _Test:" #: src/ui/gui/binomial.ui:126 src/ui/gui/chi-square.ui:126 msgid "_Get from data" -msgstr "" +msgstr "Obtenció des de dades" #: src/ui/gui/binomial.ui:143 src/ui/gui/t-test.ui:333 msgid "_Cut point:" @@ -5815,60 +5192,51 @@ msgstr "Punt de tall:" #: src/ui/gui/binomial.ui:178 msgid "Define Dichotomy" -msgstr "" +msgstr "Defineix Dicotomia" #: src/ui/gui/binomial.ui:197 -#, fuzzy msgid "Test _Proportion:" -msgstr "Test Prop." +msgstr "Test _Proporció:" #: src/ui/gui/correlation.ui:7 -#, fuzzy msgid "Bivariate Correlations" -msgstr "Correlació de Spearman" +msgstr "Correlacions Bivariades" #: src/ui/gui/correlation.ui:108 -#, fuzzy msgid "Pearso_n" -msgstr "R de Pearson" +msgstr "Pearso_n" #: src/ui/gui/correlation.ui:123 -#, fuzzy msgid "_Kendall's tau-b" -msgstr "Tau-B de Kendall" +msgstr "Tau-b de _Kendall" #: src/ui/gui/correlation.ui:138 msgid "_Spearman" -msgstr "" +msgstr "_Spearman" #: src/ui/gui/correlation.ui:158 -#, fuzzy msgid "Correlation Coefficients" -msgstr "Coeficinents de Contrast" +msgstr "Coeficients de Correlació" #: src/ui/gui/correlation.ui:182 -#, fuzzy msgid "_Two-tailed" -msgstr "Total" +msgstr "Dues cues" #: src/ui/gui/correlation.ui:198 msgid "One-tai_led" -msgstr "" +msgstr "Una cua" #: src/ui/gui/correlation.ui:220 -#, fuzzy msgid "Test of Significance" -msgstr "Significativitat" +msgstr "Test de Significativitat" #: src/ui/gui/correlation.ui:232 -#, fuzzy msgid "_Flag significant correlations" -msgstr "Correlacions de Coeficients" +msgstr "Marca correlacions significants" #: src/ui/gui/crosstabs.ui:7 -#, fuzzy msgid "Crosstabs" -msgstr "_Creuaments tabulars" +msgstr "Taules _Creuades" #: src/ui/gui/crosstabs.ui:50 msgid "Rows" @@ -5888,9 +5256,8 @@ msgid "Cells..." msgstr "Cel.les..." #: src/ui/gui/crosstabs.ui:227 -#, fuzzy msgid "Crosstabs: Format" -msgstr "_Creuaments tabulars" +msgstr "Taules Creuades: Format" #: src/ui/gui/crosstabs.ui:241 msgid "Print tables" @@ -5917,18 +5284,16 @@ msgid "Labeling" msgstr "Etiquetant" #: src/ui/gui/crosstabs.ui:369 -#, fuzzy msgid "Crosstabs: Cells" -msgstr "_Creuaments tabulars" +msgstr "Taules Creuades: Cel·les" #: src/ui/gui/crosstabs.ui:402 msgid "Cell Display" msgstr "Contingut de cel.la" #: src/ui/gui/crosstabs.ui:430 -#, fuzzy msgid "Crosstabs: Statistics" -msgstr "Proves Estad." +msgstr "Taules Creuades: Estadístics" #: src/ui/gui/crosstabs.ui:463 src/ui/gui/oneway.ui:222 #: src/ui/gui/regression.ui:340 @@ -5936,43 +5301,36 @@ msgid "Statistics" msgstr "Estatísticas" #: src/ui/gui/chi-square.ui:13 -#, fuzzy msgid "Chi-Square Test" -msgstr "Proves Chi-quadrat." +msgstr "Test Chi-quadrat." #: src/ui/gui/chi-square.ui:140 -#, fuzzy msgid "Use _specified range" -msgstr "Utilitza valors especificats:" +msgstr "Utilitza rang e_specificat" #: src/ui/gui/chi-square.ui:162 -#, fuzzy msgid "_Lower:" -msgstr "Inferior" +msgstr "Mínim:" #: src/ui/gui/chi-square.ui:170 -#, fuzzy msgid "_Upper:" -msgstr "Superior" +msgstr "Màxim:" #: src/ui/gui/chi-square.ui:214 -#, fuzzy msgid "Expected Range:" -msgstr "N esperat" +msgstr "Rang esperat:" #: src/ui/gui/chi-square.ui:240 msgid "All categor_ies equal" -msgstr "" +msgstr "Igual totes categories" #: src/ui/gui/chi-square.ui:257 -#, fuzzy msgid "_Values" -msgstr "Valores" +msgstr "_Valors" #: src/ui/gui/chi-square.ui:301 -#, fuzzy msgid "Expected Values:" -msgstr "Valor extrems" +msgstr "Valors Esperats:" #: src/ui/gui/descriptives.ui:130 src/ui/gui/frequencies.ui:140 msgid "Statistics:" @@ -5995,9 +5353,8 @@ msgid "Options:" msgstr "Opcions:" #: src/ui/gui/examine.ui:8 -#, fuzzy msgid "Explore" -msgstr "_Explorar" +msgstr "Explorar" #: src/ui/gui/examine.ui:51 msgid "Label Cases by:" @@ -6017,9 +5374,8 @@ msgid "Options..." msgstr "Opcions..." #: src/ui/gui/examine.ui:302 -#, fuzzy msgid "Explore: Statistics" -msgstr "Proves Estad." +msgstr "Explorar: Estadístics" #: src/ui/gui/examine.ui:332 msgid "Extremes" @@ -6027,7 +5383,7 @@ msgstr "Extrems" #: src/ui/gui/examine.ui:381 msgid "Explore: Options" -msgstr "" +msgstr "Explorar: Opcions" #: src/ui/gui/examine.ui:405 msgid "Exclude cases listwise" @@ -6047,112 +5403,96 @@ msgid "Missing Values" msgstr "Valors perduts" #: src/ui/gui/factor.ui:21 -#, fuzzy msgid "Factor Analysis" -msgstr "Llista de Factors:" +msgstr "Anàlisi Factorial" #: src/ui/gui/factor.ui:47 -#, fuzzy msgid "_Descriptives..." -msgstr "Descriptives" +msgstr "_Descriptius..." #: src/ui/gui/factor.ui:60 -#, fuzzy msgid "_Extraction..." -msgstr "Opcions..." +msgstr "_Extracció..." #: src/ui/gui/factor.ui:74 -#, fuzzy msgid "_Rotations..." -msgstr "Opcions..." +msgstr "Rotacions..." #: src/ui/gui/factor.ui:192 msgid "Factor Analysis: Extraction" -msgstr "" +msgstr "Anàlisi Factorial: Extracció" #: src/ui/gui/factor.ui:216 -#, fuzzy msgid "Method: " -msgstr "Mode:" +msgstr "Mètode: " #: src/ui/gui/factor.ui:266 -#, fuzzy msgid "Correlation matrix" -msgstr "Correlació" +msgstr "Matriu de Correlació" #: src/ui/gui/factor.ui:280 -#, fuzzy msgid "Covariance matrix" -msgstr "Covariància" +msgstr "Matriu de Covariància" #: src/ui/gui/factor.ui:300 -#, fuzzy msgid "Analyse" -msgstr "_Analitzar" +msgstr "Analitzar" #: src/ui/gui/factor.ui:324 msgid "Unrotatated factor solution" -msgstr "" +msgstr "Solució factorial no rotada" #: src/ui/gui/factor.ui:338 msgid "Scree plot" -msgstr "" +msgstr "Gràfic de sedimentació" #: src/ui/gui/factor.ui:357 src/ui/gui/roc.ui:286 -#, fuzzy msgid "Display" -msgstr "Contingut de cel.la" +msgstr "Contingut" #: src/ui/gui/factor.ui:430 msgid "Number of factors:" -msgstr "" +msgstr "Nombre de factors:" #: src/ui/gui/factor.ui:460 -#, fuzzy msgid "Extract" -msgstr "Eta" +msgstr "Extracció" #: src/ui/gui/factor.ui:475 src/ui/gui/factor.ui:665 msgid "Maximum iterations for convergence:" -msgstr "" +msgstr "Iteracions màximes per convergència:" #: src/ui/gui/factor.ui:538 -#, fuzzy msgid "Factor Analysis: Rotation" -msgstr "Llista de Factors:" +msgstr "Anàlisi Factorial: Rotació" #: src/ui/gui/factor.ui:571 -#, fuzzy msgid "_None" -msgstr "Cap" +msgstr "_No res" #: src/ui/gui/factor.ui:582 -#, fuzzy msgid "_Varimax" -msgstr "_Variables:" +msgstr "_Varimax" #: src/ui/gui/factor.ui:598 msgid "_Quartimax" -msgstr "" +msgstr "_Quartimax" #: src/ui/gui/factor.ui:614 msgid "_Equimax" -msgstr "" +msgstr "_Equimax" #: src/ui/gui/factor.ui:637 -#, fuzzy msgid "Method" -msgstr "Mode:" +msgstr "Mètode" #: src/ui/gui/factor.ui:648 -#, fuzzy msgid "_Display rotated solution" -msgstr "Mostra _informació de l'arxiu de dades" +msgstr "Mostra solució rotada" #: src/ui/gui/find.ui:8 -#, fuzzy msgid "Find Case" -msgstr "Rang de cassos" +msgstr "Cerca cas" #: src/ui/gui/find.ui:88 msgid "Variable:" @@ -6189,133 +5529,112 @@ msgid "Variable(s):" msgstr "Variable(s):" #: src/ui/gui/frequencies.ui:151 -#, fuzzy msgid "Include missing values" -msgstr "Sense valors perduts" +msgstr "Inclou valors perduts" #: src/ui/gui/frequencies.ui:189 -#, fuzzy msgid "Charts..." -msgstr "_Contrasts..." +msgstr "Gràfics..." #: src/ui/gui/frequencies.ui:201 -#, fuzzy msgid "Frequency Tables..." -msgstr "Variable de Freqüència" +msgstr "Taules de Freqüències..." #: src/ui/gui/frequencies.ui:251 -#, fuzzy msgid "Frequencies: Frequency Tables" -msgstr "Mostrar la taula de freqüències" +msgstr "Freqüències: Taules de freqüències" #: src/ui/gui/frequencies.ui:281 msgid "Always" -msgstr "" +msgstr "Sempre" #: src/ui/gui/frequencies.ui:297 -#, fuzzy msgid "Never" -msgstr "Negatiu" +msgstr "Mai" #: src/ui/gui/frequencies.ui:316 msgid "If no more than " -msgstr "" +msgstr "Si no més de " #: src/ui/gui/frequencies.ui:347 -#, fuzzy msgid "values" -msgstr "Valores" +msgstr "Valors" #: src/ui/gui/frequencies.ui:368 -#, fuzzy msgid "Display frequency tables" -msgstr "Mostrar la taula de freqüències" +msgstr "Mostra taula de freqüències" #: src/ui/gui/frequencies.ui:396 -#, fuzzy msgid "Ascending value" -msgstr "Ascendent" +msgstr "Valor Ascendent" #: src/ui/gui/frequencies.ui:412 -#, fuzzy msgid "Descending value" -msgstr "Descendent" +msgstr "Valor Descendent" #: src/ui/gui/frequencies.ui:428 -#, fuzzy msgid "Ascending frequency" -msgstr "Ordre Ascendent" +msgstr "Freqüència Ascendent" #: src/ui/gui/frequencies.ui:444 -#, fuzzy msgid "Descending frequency" -msgstr "Ordre Descendent" +msgstr "Freqüència Descendent" #: src/ui/gui/frequencies.ui:466 msgid "Order by" msgstr "Ordenat per" #: src/ui/gui/frequencies.ui:508 -#, fuzzy msgid "Frequencies: Charts" -msgstr "Freqüències" +msgstr "Freqüències: Gràfics" #: src/ui/gui/frequencies.ui:536 -#, fuzzy msgid "Exclude values below " -msgstr "Exclou casos segons llista" +msgstr "Excloure valors per sota " #: src/ui/gui/frequencies.ui:571 -#, fuzzy msgid "Exclude values above " -msgstr "Excloure casos per parelles" +msgstr "Excloure valors per sobre " #: src/ui/gui/frequencies.ui:609 -#, fuzzy msgid "Chart Formatting" -msgstr "Comilles" +msgstr "Format de Gràfics" #: src/ui/gui/frequencies.ui:633 msgid "Draw histograms" -msgstr "" +msgstr "Dibuixa histogrames" #: src/ui/gui/frequencies.ui:645 msgid "Superimpose normal curve" -msgstr "" +msgstr "Sobreimposa curva normal" #: src/ui/gui/frequencies.ui:661 -#, fuzzy msgid "Scale:" -msgstr "Escala" +msgstr "Escala:" #: src/ui/gui/frequencies.ui:682 -#, fuzzy msgid "Percentages" -msgstr "Percentils" +msgstr "Percentatges" #: src/ui/gui/frequencies.ui:705 -#, fuzzy msgid "Histograms" -msgstr "Separadors" +msgstr "Histogrames" #: src/ui/gui/frequencies.ui:729 msgid "Draw pie charts" -msgstr "" +msgstr "Dibuixa gràfiques de sectors" #: src/ui/gui/frequencies.ui:741 -#, fuzzy msgid "Include slices for missing values" -msgstr "Valors perduts _Discrets" +msgstr "Incloure sectors pels valors perduts" #: src/ui/gui/frequencies.ui:758 -#, fuzzy msgid "Pie Charts" -msgstr "Separadors" +msgstr "Gràfiques de Sectors" #: src/ui/gui/oneway.ui:8 -#, fuzzy msgid "One-Way ANOVA" -msgstr "_ANOVA d'un factor" +msgstr "ANOVA d'un factor" #: src/ui/gui/oneway.ui:31 msgid "_Factor:" @@ -6338,9 +5657,8 @@ msgid "_Contrasts..." msgstr "_Contrasts..." #: src/ui/gui/oneway.ui:292 -#, fuzzy msgid "One-Way ANOVA: Contrasts" -msgstr "_ANOVA d'un factor" +msgstr "ANOVA d'un factor: Contrasts" #: src/ui/gui/oneway.ui:369 msgid "_Coefficients:" @@ -6371,9 +5689,8 @@ msgid "Current Status: " msgstr "Estatus actual: " #: src/ui/gui/psppire.ui:195 -#, fuzzy msgid "Transpose" -msgstr "_Transposar" +msgstr "Trasposar" #: src/ui/gui/psppire.ui:247 msgid "Name Variable:" @@ -6416,9 +5733,8 @@ msgid "Analysis by groups is off" msgstr "L'anàlisi per grups està activat" #: src/ui/gui/psppire.ui:709 -#, fuzzy msgid "Compute Variable" -msgstr "Variables de sortida" +msgstr "Calcular Variable" #: src/ui/gui/psppire.ui:742 msgid "Target Variable:" @@ -6494,9 +5810,8 @@ msgid "Unselected Cases Are" msgstr "Els casos no seleccionats son" #: src/ui/gui/psppire.ui:1585 -#, fuzzy msgid "Data File Comments" -msgstr "_Comentaris arxiu de dades" +msgstr "Comentaris de l'arxiu de dades" #: src/ui/gui/psppire.ui:1609 msgid "Comments:" @@ -6511,9 +5826,8 @@ msgid "Column Number: 0" msgstr "Columna Numero: 0" #: src/ui/gui/psppire.ui:1703 -#, fuzzy msgid "Select Cases: Range" -msgstr "Seleccionar casos" +msgstr "Seleccionar casos: Rang" #: src/ui/gui/psppire.ui:1750 msgid "First case" @@ -6529,25 +5843,23 @@ msgstr "Observació" #: src/ui/gui/psppire.ui:1808 msgid "Compute Variable: Type and Label" -msgstr "" +msgstr "Calcular Variable: Tipus i Etiqueta" #: src/ui/gui/psppire.ui:1843 msgid "Use expression as label" msgstr "Utilitza l'expressio com a etiqueta" #: src/ui/gui/psppire.ui:2088 -#, fuzzy msgid "Goto Case" -msgstr "Anar a" +msgstr "Anar a Cas" #: src/ui/gui/psppire.ui:2106 msgid "Goto Case Number:" msgstr "Anar al cas número:" #: src/ui/gui/psppire.ui:2149 -#, fuzzy msgid "Select Cases: Random Sample" -msgstr "Seleccionar casos" +msgstr "Seleccionar casos: Mostra aleatoria" #: src/ui/gui/psppire.ui:2247 msgid "Sample Size" @@ -6586,9 +5898,8 @@ msgid "_Ties..." msgstr "Vincles..." #: src/ui/gui/rank.ui:346 -#, fuzzy msgid "Rank Cases: Types" -msgstr "Rang de cassos" +msgstr "Rang de cassos: Tipus" #: src/ui/gui/rank.ui:366 msgid "Sum of case weights" @@ -6643,9 +5954,8 @@ msgid "Proportion Estimation Formula" msgstr "Formula d'estimació de Porporcións" #: src/ui/gui/rank.ui:625 -#, fuzzy msgid "Rank Cases: Ties" -msgstr "Rang de cassos" +msgstr "Rang de cassos: Vincles" #: src/ui/gui/rank.ui:651 msgid "_Mean" @@ -6668,9 +5978,8 @@ msgid "Rank Assigned to Ties" msgstr "Rang assignat a empats" #: src/ui/gui/sort.ui:8 -#, fuzzy msgid "Sort Cases" -msgstr "_Ordenar Casos" +msgstr "Ordenar Casos" #: src/ui/gui/sort.ui:79 msgid "Sort by:" @@ -6689,7 +5998,6 @@ msgid "System Missing" msgstr "Perdut del Sistema" #: src/ui/gui/recode.ui:199 -#, fuzzy msgid "System or User Missing" msgstr "Perdut de sistema o d'usuari" @@ -6774,9 +6082,8 @@ msgid "Independent" msgstr "Independent" #: src/ui/gui/regression.ui:236 -#, fuzzy msgid "Regression: Save" -msgstr "Regressió" +msgstr "Regressió: Desar" #: src/ui/gui/regression.ui:250 msgid "Predicted values" @@ -6787,9 +6094,8 @@ msgid "Residuals" msgstr "Residuals" #: src/ui/gui/regression.ui:298 -#, fuzzy msgid "Regression: Statistics" -msgstr "Proves Estad." +msgstr "Regresió: Estadìstics" #: src/ui/gui/reliability.ui:27 msgid "Reliability Analysis" @@ -6808,43 +6114,36 @@ msgid "Variables in first split:" msgstr "Variables a primera divissió:" #: src/ui/gui/roc.ui:115 -#, fuzzy msgid "_Test Variable:" -msgstr "Variable(s) de prova:" +msgstr "Variable de prova:" #: src/ui/gui/roc.ui:147 -#, fuzzy msgid "_State Variable:" -msgstr "Nom de Variable:" +msgstr "Variable d'Estat:" #: src/ui/gui/roc.ui:172 -#, fuzzy msgid "_Value of state variable:" -msgstr "Utilitzar variable de filtre" +msgstr "_Valor de la variable d'estat:" #: src/ui/gui/roc.ui:209 -#, fuzzy msgid "ROC C_urve" msgstr "Corba ROC" #: src/ui/gui/roc.ui:227 msgid "_With diagonal reference line" -msgstr "" +msgstr "Amb línia de referència diagonal" #: src/ui/gui/roc.ui:251 -#, fuzzy msgid "Standard _Error and Confidence Interval" -msgstr "Interval de Confiança del 95%%" +msgstr "_Error típic i Interval de Confiança" #: src/ui/gui/roc.ui:266 -#, fuzzy msgid "_Coordinate points of the ROC Curve" -msgstr "Coordenades de la Corba" +msgstr "_Coordenades de la Corba ROC" #: src/ui/gui/t-test.ui:8 -#, fuzzy msgid "Independent-Samples T Test" -msgstr "Prova T per mostres _Independents" +msgstr "Prova T per mostres Independents" #: src/ui/gui/t-test.ui:54 src/ui/gui/t-test.ui:175 src/ui/gui/t-test.ui:231 msgid "Define Groups" @@ -6867,9 +6166,8 @@ msgid "_Use specified values:" msgstr "Utilitza valors especificats:" #: src/ui/gui/t-test.ui:420 -#, fuzzy msgid "Options" -msgstr "Opcions:" +msgstr "Opcions" #: src/ui/gui/t-test.ui:452 msgid "Exclude cases _analysis by analysis" @@ -6880,7 +6178,6 @@ msgid "Exclude cases _listwise" msgstr "Exclure casos per _llista" #: src/ui/gui/t-test.ui:529 -#, fuzzy msgid "One - Sample T Test" msgstr "Prova T per una mostra" @@ -6889,9 +6186,8 @@ msgid "Test Value: " msgstr "Valor de prova: " #: src/ui/gui/t-test.ui:704 -#, fuzzy msgid "Paired Samples T Test" -msgstr "Prova T per mostres A_parellades" +msgstr "Prova T per mostres Aparellades" #: src/ui/gui/text-data-import.ui:8 msgid "Importing Textual Data" @@ -6899,21 +6195,13 @@ msgstr "Important dades textuals" #: src/ui/gui/text-data-import.ui:19 msgid "" -"This assistant will guide you through the process of importing data into " -"PSPP from a text file with one line per case, in which fields are separated " -"by tabs, commas, or other delimiters.\n" +"This assistant will guide you through the process of importing data into PSPP from a text file with one line per case, in which fields are separated by tabs, commas, or other delimiters.\n" "\n" -"The selected file contains N lines of text. Only the first M of these will " -"be shown for preview purposes in the following screens. You may choose " -"below how much of the file should actually be imported." +"The selected file contains N lines of text. Only the first M of these will be shown for preview purposes in the following screens. You may choose below how much of the file should actually be imported." msgstr "" -"Aquest assitent t'acompanyarà per tot el procés d'importar dades al PSPP des " -"d'un arxiu de text amb una linia per cas, al qual els camps estan separats " -"per tabuladors, comas, o altres delimitadors.\n" +"Aquest assitent t'acompanyarà per tot el procés d'importar dades al PSPP des d'un arxiu de text amb una linia per cas, al qual els camps estan separats per tabuladors, comas, o altres delimitadors.\n" "\n" -"L'arxiu seleccionat conté N linies de text. Només les primeres M seran " -"mostrades per previsualització a les pantalles seguents. Pots triar a " -"continuació quina part de l'arxiu ha de ser importat." +"L'arxiu seleccionat conté N linies de text. Només les primeres M seran mostrades per previsualització a les pantalles seguents. Pots triar a continuació quina part de l'arxiu ha de ser importat." #: src/ui/gui/text-data-import.ui:52 msgid "All cases" @@ -7016,12 +6304,8 @@ msgid "Adjust Variable Formats" msgstr "Ajustar formats de variables" #: src/ui/gui/text-data-import.ui:618 -msgid "" -"Check the data formats displayed below and fix any that are incorrect. You " -"may set other variable properties now or later." -msgstr "" -"Comprovar les formats de les dades mostrades a continuació i corregir els " -"problemes. Es pot asignar altres propietats de les variables ara o més tard." +msgid "Check the data formats displayed below and fix any that are incorrect. You may set other variable properties now or later." +msgstr "Comprovar les formats de les dades mostrades a continuació i corregir els problemes. Es pot asignar altres propietats de les variables ara o més tard." #: src/ui/gui/text-data-import.ui:662 msgid "Variables" @@ -7173,9 +6457,8 @@ msgid "Go To Case" msgstr "Anar a" #: src/ui/gui/data-editor.ui:134 -#, fuzzy msgid "Jump to a case in the data sheet" -msgstr "Anar a un cas a la Matriu de Dades" +msgstr "Anar a un cas a la matriu de Dades" #: src/ui/gui/data-editor.ui:160 msgid "Cl_ear Variables" @@ -7322,14 +6605,12 @@ msgid "One Way _ANOVA" msgstr "_ANOVA d'un factor" #: src/ui/gui/data-editor.ui:376 -#, fuzzy msgid "Bivariate _Correlation..." -msgstr "Correlació de Spearman" +msgstr "_Correlació Bivariada..." #: src/ui/gui/data-editor.ui:382 -#, fuzzy msgid "Factor _Analysis" -msgstr "Llista de Factors:" +msgstr "_Anàlisi Factorial" #: src/ui/gui/data-editor.ui:388 msgid "Re_liability" @@ -7352,9 +6633,8 @@ msgid "_Binomial" msgstr "_Binomial" #: src/ui/gui/data-editor.ui:418 -#, fuzzy msgid "ROC Cur_ve..." -msgstr "Corba ROC" +msgstr "Corba ROC..." #: src/ui/gui/data-editor.ui:424 msgid "_Utilities" @@ -7407,9 +6687,8 @@ msgid "Split File Status Area" msgstr "Area de Divisió" #: src/ui/gui/output-viewer.ui:22 -#, fuzzy msgid "_Export" -msgstr "_Explorar" +msgstr "_Exportar" #: src/ui/gui/syntax-editor.ui:100 msgid "_Run" @@ -7431,15 +6710,6 @@ msgstr "Linia actual" msgid "To End" msgstr "Fins al final" -#~ msgid "Dependent variable must be numeric." -#~ msgstr "La variable dependent ha de ser numèrica." - -#~ msgid "Variable %s has label of invalid length %zu." -#~ msgstr "Variable %s té una etiqueta de longitud no vàlida %zu." - -#~ msgid "_About" -#~ msgstr "Qu_ant a..." - #~ msgid "Buttons" #~ msgstr "Botons" @@ -7464,6 +6734,9 @@ msgstr "Fins al final" #~ msgid "...not found" #~ msgstr "...no es troba" +#~ msgid "Variable %s has label of invalid length %zu." +#~ msgstr "Variable %s té una etiqueta de longitud no vàlida %zu." + #~ msgid "little-endian" #~ msgstr "little-endian" @@ -7554,27 +6827,20 @@ msgstr "Fins al final" #~ msgid "unexpected end of line expecting string" #~ msgstr "final de línia inesperat quan s'esperava una cadena" -#~ msgid "" -#~ "ascii: bad index value for `box' key: syntax is box[INDEX], 0 <= INDEX < %" -#~ "d decimal, with INDEX expressed in base 4" -#~ msgstr "" -#~ "ascii: índex de valor defectuós per a la clau `box' : la sintaxi és la box" -#~ "[INDEX], 0 <= INDEX < %d decimal, amb INDEX expressat en base 4" +#~ msgid "ascii: bad index value for `box' key: syntax is box[INDEX], 0 <= INDEX < %d decimal, with INDEX expressed in base 4" +#~ msgstr "ascii: índex de valor defectuós per a la clau `box' : la sintaxi és la box[INDEX], 0 <= INDEX < %d decimal, amb INDEX expressat en base 4" #~ msgid "ascii: multiple values for %s" #~ msgstr "ascii: valors múltiples per a %s" #~ msgid "ascii: only screen devices may have `auto' length or width" -#~ msgstr "" -#~ "ascii: només els dispositius de pantalla poden tenir longitud o amplada " -#~ "`auto'" +#~ msgstr "ascii: només els dispositius de pantalla poden tenir longitud o amplada `auto'" #~ msgid "ascii: positive integer required as `%s' value" #~ msgstr "ascii: enter positiu requerit com a valor `%s'" #~ msgid "ascii: `emphasis' value must be `bold', `underline', or `none'" -#~ msgstr "" -#~ "ascii: el valor d' `emphasis' ha de ser `bold', `underline', o `none'" +#~ msgstr "ascii: el valor d' `emphasis' ha de ser `bold', `underline', o `none'" #~ msgid "ascii: zero or positive integer required as `%s' value" #~ msgstr "ascii: zero o enter positiu requerit com a valor `%s'" @@ -7592,9 +6858,7 @@ msgstr "Fins al final" #~ msgstr "obrint arxiu de resultat HTML: %s" #~ msgid "unknown configuration parameter `%s' for HTML device driver" -#~ msgstr "" -#~ "paràmetre de configuració `%s' desconegut per al dispositiu controlador " -#~ "HTML" +#~ msgstr "paràmetre de configuració `%s' desconegut per al dispositiu controlador HTML" #~ msgid "error creating \"%s\"" #~ msgstr "error en crear \"%s\"" @@ -7608,11 +6872,8 @@ msgstr "Fins al final" #~ msgid "using default output driver configuration" #~ msgstr "utilitzant controlador de configuració de resultats per defecte" -#~ msgid "" -#~ "cannot find output initialization file (use `-vv' to view search path)" -#~ msgstr "" -#~ "no es pot trobar l'arxiu d'inicialització de resultats (utilitzar `-vv' " -#~ "per a veure la ruta de cerca)" +#~ msgid "cannot find output initialization file (use `-vv' to view search path)" +#~ msgstr "no es pot trobar l'arxiu d'inicialització de resultats (utilitzar `-vv' per a veure la ruta de cerca)" #~ msgid "cannot open \"%s\"" #~ msgstr "no es pot obrir \"%s\"" @@ -7639,22 +6900,14 @@ msgstr "Fins al final" #~ "Clases de controlador:\n" #~ "\t" -#~ msgid "" -#~ "reached end of options inside quoted string parsing options for \"%s\" " -#~ "driver" -#~ msgstr "" -#~ "Arribat al final d'opcions dins de la cadena entre cometes tot analitzant " -#~ "opcions pel controlador \"%s\"" +#~ msgid "reached end of options inside quoted string parsing options for \"%s\" driver" +#~ msgstr "Arribat al final d'opcions dins de la cadena entre cometes tot analitzant opcions pel controlador \"%s\"" #~ msgid "syntax error in string constant parsing options for \"%s\" driver" -#~ msgstr "" -#~ "error de sintaxi en una constant de cadena analitzant opcions pel " -#~ "controlador \"%s\"" +#~ msgstr "error de sintaxi en una constant de cadena analitzant opcions pel controlador \"%s\"" #~ msgid "syntax error expecting `=' parsing options for driver \"%s\"" -#~ msgstr "" -#~ "error de sintaxi quan s'esperava `=' analitzant les opcions pel " -#~ "controlador \"%s\"" +#~ msgstr "error de sintaxi quan s'esperava `=' analitzant les opcions pel controlador \"%s\"" #~ msgid "unknown output driver class `%.*s'" #~ msgstr "controlador de sortida de classe desconeguda `%.*s'" @@ -7663,13 +6916,10 @@ msgstr "Fins al final" #~ msgstr "tipus de dispositiu desconegut `%.*s'" #~ msgid "cannot initialize output driver `%s' of class `%s'" -#~ msgstr "" -#~ "no pot inicialitzar el controlador de sortida `%s' de la classe `%s'" +#~ msgstr "no pot inicialitzar el controlador de sortida `%s' de la classe `%s'" #~ msgid "driver definition line missing driver name or class name" -#~ msgstr "" -#~ "línia de definició del controlador sense nom del controlador o nom de la " -#~ "classe" +#~ msgstr "línia de definició del controlador sense nom del controlador o nom de la classe" #~ msgid "opening PostScript output file \"%s\"" #~ msgstr "obrir l'arxiu de sortida PostScript \"%s\"" @@ -7678,16 +6928,10 @@ msgstr "Fins al final" #~ msgstr "tanqui l'arxiu de sortida PostScript \"%s\"" #~ msgid "unknown configuration parameter `%s' for PostScript device driver" -#~ msgstr "" -#~ "paràmetre de configuració desconegut`%s' pel controlador del dispositiu " -#~ "PostScript" +#~ msgstr "paràmetre de configuració desconegut`%s' pel controlador del dispositiu PostScript" -#~ msgid "" -#~ "unknown orientation `%s' (valid orientations are `portrait' and " -#~ "`landscape')" -#~ msgstr "" -#~ "orientació desconeguda `%s' (les orientacions vàlides són `retrat' i " -#~ "`paisatge')" +#~ msgid "unknown orientation `%s' (valid orientations are `portrait' and `landscape')" +#~ msgstr "orientació desconeguda `%s' (les orientacions vàlides són `retrat' i `paisatge')" #~ msgid "boolean value expected for %s" #~ msgstr "valor booleà esperat per a %s" @@ -7695,11 +6939,8 @@ msgstr "Fins al final" #~ msgid "positive integer value required for `%s'" #~ msgstr "valor enter positiu necessari per a `%s'" -#~ msgid "" -#~ "default font size must be at least 1 point (value of 1000 for key `%s')" -#~ msgstr "" -#~ "la mida de caràcter per defecte ha de ser com a mínim 1 punt (valor de " -#~ "1000 per la clau `%s')" +#~ msgid "default font size must be at least 1 point (value of 1000 for key `%s')" +#~ msgstr "la mida de caràcter per defecte ha de ser com a mínim 1 punt (valor de 1000 per la clau `%s')" #~ msgid "could not find AFM file \"%s\"" #~ msgstr "no es pot trobar l'arxiu AFM \"%s\"" @@ -7728,11 +6969,8 @@ msgstr "Fins al final" #~ msgid "creating \"%s\"" #~ msgstr "creant \"%s\"" -#~ msgid "" -#~ "set to `compatible' if you want output calculated from broken algorithms" -#~ msgstr "" -#~ "activeu `compatible' si voleu obtenir resultats calculat a partir " -#~ "d'algorismes trencats" +#~ msgid "set to `compatible' if you want output calculated from broken algorithms" +#~ msgstr "activeu `compatible' si voleu obtenir resultats calculat a partir d'algorismes trencats" #~ msgid "Append DIR to include path" #~ msgstr "Adjuntar DIR a la ruta d'inclusió" @@ -7749,11 +6987,8 @@ msgstr "Fins al final" #~ msgid "Don't allow some unsafe operations" #~ msgstr "No permet algunes operacions insegures" -#~ msgid "" -#~ "Set to `compatible' if you want only to accept SPSS compatible syntax" -#~ msgstr "" -#~ "Activeu `compatible' si només voleu acceptar la sintaxi compatible de " -#~ "l'SPSS" +#~ msgid "Set to `compatible' if you want only to accept SPSS compatible syntax" +#~ msgstr "Activeu `compatible' si només voleu acceptar la sintaxi compatible de l'SPSS" #~ msgid "PSPP --- A program for statistical analysis" #~ msgstr "PSPP ---Un programa d'anàlisi estadística" @@ -7771,8 +7006,7 @@ msgstr "Fins al final" #~ msgstr "Opcions que afecten a la sintaxi i al comportament:" #~ msgid "Cannot open %s (%s). Writing errors to stdout instead.\n" -#~ msgstr "" -#~ "No es pot obrir %s (%s). Alternativament, escrivint errors a stdout.\n" +#~ msgstr "No es pot obrir %s (%s). Alternativament, escrivint errors a stdout.\n" #~ msgid "Terminating execution of syntax file due to error." #~ msgstr "Finalitzant l'execució de l'arxiu de sintaxi degut a un error." @@ -7784,13 +7018,10 @@ msgstr "Fins al final" #~ msgstr "Enviar missatges d'error a FILE (annexa)" #~ msgid "Select output driver DEVICE and disable defaults" -#~ msgstr "" -#~ "Seleccionar el controlador de sortida DEVICE i desactivar els valors per " -#~ "defecte" +#~ msgstr "Seleccionar el controlador de sortida DEVICE i desactivar els valors per defecte" #~ msgid "Print a list of known driver classes, then exit" -#~ msgstr "" -#~ "Imprimir una llista de classes de controladors coneguts, després sortir" +#~ msgstr "Imprimir una llista de classes de controladors coneguts, després sortir" #~ msgid "Start an interactive session" #~ msgstr "Inici d'una sessió interactiva" @@ -7924,6 +7155,9 @@ msgstr "Fins al final" #~ msgid "gtk-find" #~ msgstr "gtk-find" +#~ msgid "_About" +#~ msgstr "Qu_ant a..." + #~ msgid "Print" #~ msgstr "Iimprimir" @@ -7957,12 +7191,8 @@ msgstr "Fins al final" #~ msgid "Messages Reported" #~ msgstr "S'han generat missatges" -#~ msgid "" -#~ "The PSPP processor reported # errors. The first # and last # are shown " -#~ "below:" -#~ msgstr "" -#~ "El processador d'PSPP ha genrat # errors. Els primers # y els darrers # " -#~ "es mostren a continuació:" +#~ msgid "The PSPP processor reported # errors. The first # and last # are shown below:" +#~ msgstr "El processador d'PSPP ha genrat # errors. Els primers # y els darrers # es mostren a continuació:" #~ msgid "gtk-close" #~ msgstr "tanca-gtk" @@ -7992,18 +7222,11 @@ msgstr "Fins al final" #~ "Alpha\n" #~ "Dividit" -#~ msgid "" -#~ "At most one of BARCHART, HISTOGRAM, or HBAR should be given. HBAR will " -#~ "be assumed. Argument values will be given precedence increasing along " -#~ "the order given." -#~ msgstr "" -#~ "Al menys s'ha de donar algun BARCHART, HISTOGRAM o HBAR. S'assumeix " -#~ "HBAR. Els valors d'arguments Argument tindrán preferencia creixent en " -#~ "aquest mateix ordre)." +#~ msgid "At most one of BARCHART, HISTOGRAM, or HBAR should be given. HBAR will be assumed. Argument values will be given precedence increasing along the order given." +#~ msgstr "Al menys s'ha de donar algun BARCHART, HISTOGRAM o HBAR. S'assumeix HBAR. Els valors d'arguments Argument tindrán preferencia creixent en aquest mateix ordre)." #~ msgid "Variable %s specified multiple times on VARIABLES subcommand." -#~ msgstr "" -#~ "La variable %s s'ha especificat més d'una vegada a l'ordre VARIABLES." +#~ msgstr "La variable %s s'ha especificat més d'una vegada a l'ordre VARIABLES." #~ msgid "Cum" #~ msgstr "Acumulat" @@ -8014,6 +7237,9 @@ msgstr "Fins al final" #~ msgid "Pct" #~ msgstr "Pct" +#~ msgid "Dependent variable must be numeric." +#~ msgstr "La variable dependent ha de ser numèrica." + #~ msgid "N of items" #~ msgstr "N d'elements" diff --git a/po/en_GB.po b/po/en_GB.po index b2244835..e45dbf14 100644 --- a/po/en_GB.po +++ b/po/en_GB.po @@ -1,19 +1,24 @@ # British translations for PSPP -# Copyright (C) 2007, 2008 Free Software Foundation, Inc. +# Copyright (C) 2007, 2008, 2010 Free Software Foundation, Inc. # This file is distributed under the same licence as the PSPP package. # msgid "" msgstr "" -"Project-Id-Version: PSPP 0.7.0\n" +"Project-Id-Version: PSPP 0.7.6\n" "Report-Msgid-Bugs-To: pspp-dev@gnu.org\n" -"POT-Creation-Date: 2010-06-01 17:55+0200\n" -"PO-Revision-Date: 2008-11-05 08:17+0900\n" +"POT-Creation-Date: 2010-10-17 16:50+0200\n" +"PO-Revision-Date: 2010-10-17 16:51+0200\n" "Last-Translator: John Darrington \n" "Language-Team: John Darrington \n" +"Language: \n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +#: src/ui/gui/helper.c:194 +msgid "Sorry. The help system hasn't yet been implemented." +msgstr "" + #: src/ui/gui/psppire-buttonbox.c:275 src/ui/gui/psppire-buttonbox.c:437 msgid "Continue" msgstr "" @@ -43,12 +48,12 @@ msgid "Paste" msgstr "" #: src/ui/gui/psppire-dictview.c:466 src/language/dictionary/split-file.c:82 -#: src/language/dictionary/sys-file-info.c:150 -#: src/language/dictionary/sys-file-info.c:340 -#: src/language/dictionary/sys-file-info.c:664 +#: src/language/dictionary/sys-file-info.c:149 +#: src/language/dictionary/sys-file-info.c:339 +#: src/language/dictionary/sys-file-info.c:663 #: src/language/stats/descriptives.c:881 -#: src/language/data-io/data-parser.c:649 -#: src/language/data-io/data-parser.c:688 src/language/data-io/print.c:403 +#: src/language/data-io/data-parser.c:682 +#: src/language/data-io/data-parser.c:721 src/language/data-io/print.c:403 msgid "Variable" msgstr "" @@ -63,13 +68,13 @@ msgstr "" #: src/data/any-reader.c:56 #, c-format -msgid "An error occurred while opening \"%s\": %s." -msgstr "" +msgid "An error occurred while opening `%s': %s." +msgstr "An error occurred while opening ‘%s’: %s." #: src/data/any-reader.c:101 #, c-format -msgid "\"%s\" is not a system or portable file." -msgstr "" +msgid "`%s' is not a system or portable file." +msgstr "‘%s’ is not a system or portable file." #: src/data/any-reader.c:107 src/data/any-writer.c:63 msgid "The inline file is not allowed here." @@ -80,12 +85,12 @@ msgstr "" msgid "Month %d is not in acceptable range of 0 to 13." msgstr "" -#: src/data/calendar.c:89 +#: src/data/calendar.c:91 #, c-format msgid "Day %d is not in acceptable range of 0 to 31." msgstr "" -#: src/data/calendar.c:96 +#: src/data/calendar.c:100 #, c-format msgid "Date %04d-%d-%d is before the earliest acceptable date of 1582-10-15." msgstr "" @@ -96,56 +101,85 @@ msgid "" "system-missing, zero, or negative. These case(s) were ignored." msgstr "" -#: src/data/data-in.c:274 src/data/data-in.c:464 +#. TRANSLATORS: this fragment will be interpolated into messages in fh_lock() +#. that identify types of files. +#: src/data/csv-file-writer.c:152 +msgid "CSV file" +msgstr "" + +#: src/data/csv-file-writer.c:161 src/data/sys-file-writer.c:218 +#, c-format +msgid "Error opening `%s' for writing as a system file: %s." +msgstr "Error opening ‘%s’ for writing as a system file: %s." + +#: src/data/csv-file-writer.c:462 +#, c-format +msgid "An I/O error occurred writing CSV file `%s'." +msgstr "An I/O error occurred writing CSV file ‘%s’." + +#: src/data/data-in.c:172 +#, c-format +msgid "Data is not valid as format %s: %s" +msgstr "" + +#: src/data/data-in.c:377 src/data/data-in.c:553 msgid "Field contents are not numeric." msgstr "" -#: src/data/data-in.c:276 src/data/data-in.c:466 +#: src/data/data-in.c:379 src/data/data-in.c:555 msgid "Number followed by garbage." msgstr "" -#: src/data/data-in.c:287 +#: src/data/data-in.c:392 msgid "Invalid numeric syntax." msgstr "" -#: src/data/data-in.c:296 src/data/data-in.c:479 +#: src/data/data-in.c:400 src/data/data-in.c:571 msgid "Too-large number set to system-missing." msgstr "" -#: src/data/data-in.c:301 src/data/data-in.c:484 +#: src/data/data-in.c:406 src/data/data-in.c:577 msgid "Too-small number set to zero." msgstr "" -#: src/data/data-in.c:327 +#: src/data/data-in.c:426 msgid "All characters in field must be digits." msgstr "" -#: src/data/data-in.c:350 +#: src/data/data-in.c:445 msgid "Unrecognized character in field." msgstr "Unrecognised character in field." -#: src/data/data-in.c:374 src/data/data-in.c:650 +#: src/data/data-in.c:466 src/data/data-in.c:729 msgid "Field must have even length." msgstr "" -#: src/data/data-in.c:379 src/data/data-in.c:661 +#: src/data/data-in.c:468 src/data/data-in.c:732 msgid "Field must contain only hex digits." msgstr "" -#: src/data/data-in.c:700 src/data/data-in.c:747 +#: src/data/data-in.c:544 +msgid "Invalid zoned decimal syntax." +msgstr "" + +#: src/data/data-in.c:644 src/data/data-in.c:650 +msgid "Invalid syntax for P field." +msgstr "" + +#: src/data/data-in.c:768 src/data/data-in.c:814 msgid "Syntax error in date field." msgstr "" -#: src/data/data-in.c:716 +#: src/data/data-in.c:783 #, c-format msgid "Day (%ld) must be between 1 and 31." msgstr "" -#: src/data/data-in.c:763 +#: src/data/data-in.c:828 msgid "Delimiter expected between fields in date." msgstr "" -#: src/data/data-in.c:837 +#: src/data/data-in.c:902 msgid "" "Unrecognized month format. Months may be specified as Arabic or Roman " "numerals or as at least 3 letters of their English names." @@ -153,45 +187,45 @@ msgstr "" "Unrecognised month format. Months may be specified as Arabic or Roman \n" "numerals or as at least 3 letters of their English names." -#: src/data/data-in.c:864 +#: src/data/data-in.c:929 #, c-format msgid "Year (%ld) must be between 1582 and 19999." msgstr "" -#: src/data/data-in.c:876 +#: src/data/data-in.c:940 #, c-format -msgid "Trailing garbage \"%.*s\" following date." -msgstr "" +msgid "Trailing garbage `%.*s' following date." +msgstr "Trailing garbage ‘%.*s’ following date." -#: src/data/data-in.c:892 +#: src/data/data-in.c:954 msgid "Julian day must have exactly three digits." msgstr "" -#: src/data/data-in.c:897 +#: src/data/data-in.c:956 #, c-format msgid "Julian day (%ld) must be between 1 and 366." msgstr "" -#: src/data/data-in.c:921 +#: src/data/data-in.c:980 #, c-format msgid "Quarter (%ld) must be between 1 and 4." msgstr "" -#: src/data/data-in.c:941 +#: src/data/data-in.c:1001 #, c-format msgid "Week (%ld) must be between 1 and 53." msgstr "" -#: src/data/data-in.c:954 +#: src/data/data-in.c:1013 msgid "Delimiter expected between fields in time." msgstr "" -#: src/data/data-in.c:974 +#: src/data/data-in.c:1033 #, c-format msgid "Minute (%ld) must be between 0 and 59." msgstr "" -#: src/data/data-in.c:1014 +#: src/data/data-in.c:1071 msgid "" "Unrecognized weekday name. At least the first two letters of an English " "weekday name must be specified." @@ -199,25 +233,10 @@ msgstr "" "Unrecognised weekday name. At least the first two letters of an English " "weekday name must be specified." -#: src/data/data-in.c:1152 +#: src/data/data-in.c:1197 #, c-format msgid "`%c' expected in date field." -msgstr "" - -#: src/data/data-in.c:1193 -#, c-format -msgid "column %d" -msgstr "" - -#: src/data/data-in.c:1195 -#, c-format -msgid "columns %d-%d" -msgstr "" - -#: src/data/data-in.c:1199 -#, c-format -msgid "%s field) " -msgstr "" +msgstr "‘%c’ expected in date field." #: src/data/data-out.c:481 #, c-format @@ -241,28 +260,28 @@ msgstr "" msgid "scratch" msgstr "" -#: src/data/dictionary.c:980 +#: src/data/dictionary.c:981 msgid "" "At least one case in the data file had a weight value that was user-missing, " "system-missing, zero, or negative. These case(s) were ignored." msgstr "" -#: src/data/dictionary.c:1283 +#: src/data/dictionary.c:1284 #, c-format msgid "Truncating document line to %d bytes." msgstr "" -#: src/data/file-handle-def.c:462 +#: src/data/file-handle-def.c:471 #, c-format msgid "Can't read from %s as a %s because it is already being read as a %s." msgstr "" -#: src/data/file-handle-def.c:466 +#: src/data/file-handle-def.c:475 #, c-format msgid "Can't write to %s as a %s because it is already being written as a %s." msgstr "" -#: src/data/file-handle-def.c:473 +#: src/data/file-handle-def.c:482 #, c-format msgid "Can't re-open %s as a %s." msgstr "" @@ -270,32 +289,32 @@ msgstr "" #: src/data/file-name.c:168 #, c-format msgid "Not opening pipe file `%s' because SAFER option set." -msgstr "" +msgstr "Not opening pipe file ‘%s’ because SAFER option set." -#: src/data/format.c:235 +#: src/data/format.c:314 msgid "Input format" msgstr "" -#: src/data/format.c:235 +#: src/data/format.c:314 msgid "Output format" msgstr "" -#: src/data/format.c:244 +#: src/data/format.c:323 #, c-format msgid "Format %s may not be used for input." msgstr "" -#: src/data/format.c:251 +#: src/data/format.c:330 #, c-format msgid "%s specifies width %d, but %s requires an even width." msgstr "" -#: src/data/format.c:260 +#: src/data/format.c:339 #, c-format msgid "%s %s specifies width %d, but %s requires a width between %d and %d." msgstr "" -#: src/data/format.c:269 +#: src/data/format.c:348 #, c-format msgid "%s %s specifies %d decimal place, but %s does not allow any decimals." msgid_plural "" @@ -303,7 +322,7 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/data/format.c:280 +#: src/data/format.c:359 #, c-format msgid "" "%s %s specifies %d decimal place, but the given width allows at most %d " @@ -314,7 +333,7 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/data/format.c:287 +#: src/data/format.c:366 #, c-format msgid "" "%s %s specifies %d decimal place, but the given width does not allow for any " @@ -325,42 +344,42 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/data/format.c:326 +#: src/data/format.c:405 #, c-format msgid "%s variables are not compatible with %s format %s." msgstr "" -#: src/data/format.c:327 src/data/sys-file-reader.c:752 -#: src/ui/gui/psppire-var-store.c:628 src/ui/gui/psppire.ui:1960 +#: src/data/format.c:406 src/data/sys-file-reader.c:751 +#: src/ui/gui/psppire-var-store.c:628 src/ui/gui/compute.ui:503 #: src/ui/gui/var-sheet-dialogs.ui:139 msgid "String" msgstr "" -#: src/data/format.c:327 src/data/sys-file-reader.c:752 -#: src/ui/gui/psppire-var-store.c:621 src/ui/gui/psppire.ui:2040 +#: src/data/format.c:406 src/data/sys-file-reader.c:751 +#: src/ui/gui/psppire-var-store.c:621 src/ui/gui/compute.ui:584 #: src/ui/gui/var-sheet-dialogs.ui:27 msgid "Numeric" msgstr "" -#: src/data/format.c:328 src/data/sys-file-reader.c:1472 -#: src/data/sys-file-reader.c:1474 src/language/xforms/recode.c:493 -#: src/language/xforms/recode.c:494 src/language/xforms/recode.c:506 -#: src/language/xforms/recode.c:507 +#: src/data/format.c:407 src/data/sys-file-reader.c:1472 +#: src/data/sys-file-reader.c:1474 src/language/xforms/recode.c:496 +#: src/language/xforms/recode.c:497 src/language/xforms/recode.c:509 +#: src/language/xforms/recode.c:510 +#: src/language/dictionary/apply-dictionary.c:77 #: src/language/dictionary/apply-dictionary.c:78 -#: src/language/dictionary/apply-dictionary.c:79 msgid "numeric" msgstr "" -#: src/data/format.c:328 src/data/sys-file-reader.c:1472 -#: src/data/sys-file-reader.c:1474 src/language/xforms/recode.c:493 -#: src/language/xforms/recode.c:494 src/language/xforms/recode.c:506 -#: src/language/xforms/recode.c:507 +#: src/data/format.c:407 src/data/sys-file-reader.c:1472 +#: src/data/sys-file-reader.c:1474 src/language/xforms/recode.c:496 +#: src/language/xforms/recode.c:497 src/language/xforms/recode.c:509 +#: src/language/xforms/recode.c:510 +#: src/language/dictionary/apply-dictionary.c:77 #: src/language/dictionary/apply-dictionary.c:78 -#: src/language/dictionary/apply-dictionary.c:79 msgid "string" msgstr "" -#: src/data/format.c:346 +#: src/data/format.c:425 #, c-format msgid "String variable with width %d is not compatible with format %s." msgstr "" @@ -372,13 +391,13 @@ msgstr "" #: src/data/gnumeric-reader.c:364 #, c-format -msgid "Error opening \"%s\" for reading as a Gnumeric file: %s." -msgstr "" +msgid "Error opening `%s' for reading as a Gnumeric file: %s." +msgstr "Error opening ‘%s’ for reading as a Gnumeric file: %s." #: src/data/gnumeric-reader.c:384 #, c-format -msgid "Invalid cell range \"%s\"" -msgstr "" +msgid "Invalid cell range `%s'" +msgstr "Invalid cell range ‘%s’" #: src/data/gnumeric-reader.c:516 src/data/psql-reader.c:187 #, c-format @@ -387,216 +406,206 @@ msgstr "" #: src/data/gnumeric-reader.c:528 #, c-format -msgid "Selected sheet or range of spreadsheet \"%s\" is empty." -msgstr "" - -#: src/data/make-file.c:68 -#, c-format -msgid "%s: Creating temporary file: %s." -msgstr "" - -#: src/data/make-file.c:110 -#, c-format -msgid "%s: Creating file: %s." -msgstr "" +msgid "Selected sheet or range of spreadsheet `%s' is empty." +msgstr "Selected sheet or range of spreadsheet ‘%s’ is empty." -#: src/data/make-file.c:148 +#: src/data/make-file.c:71 #, c-format msgid "Opening %s for writing: %s." msgstr "" -#: src/data/make-file.c:157 +#: src/data/make-file.c:80 #, c-format msgid "Opening stream for %s: %s." msgstr "" -#: src/data/make-file.c:186 +#: src/data/make-file.c:109 #, c-format msgid "Creating temporary file to replace %s: %s." msgstr "" -#: src/data/make-file.c:197 +#: src/data/make-file.c:120 #, c-format msgid "Creating temporary file %s: %s." msgstr "" -#: src/data/make-file.c:209 +#: src/data/make-file.c:132 #, c-format msgid "Opening stream for temporary file %s: %s." msgstr "" -#: src/data/make-file.c:250 +#: src/data/make-file.c:173 #, c-format msgid "Replacing %s by %s: %s." msgstr "" -#: src/data/make-file.c:278 +#: src/data/make-file.c:201 #, c-format msgid "Removing %s: %s." msgstr "" -#: src/data/por-file-reader.c:99 +#: src/data/por-file-reader.c:98 #, c-format msgid "portable file %s corrupt at offset 0x%llx: " msgstr "" -#: src/data/por-file-reader.c:128 +#: src/data/por-file-reader.c:129 #, c-format msgid "reading portable file %s at offset 0x%llx: " msgstr "" -#: src/data/por-file-reader.c:156 +#: src/data/por-file-reader.c:159 #, c-format -msgid "Error closing portable file \"%s\": %s." -msgstr "" +msgid "Error closing portable file `%s': %s." +msgstr "Error closing portable file ‘%s’: %s." -#: src/data/por-file-reader.c:208 +#: src/data/por-file-reader.c:211 msgid "unexpected end of file" msgstr "" #. TRANSLATORS: this fragment will be interpolated into #. messages in fh_lock() that identify types of files. -#: src/data/por-file-reader.c:267 src/data/por-file-writer.c:149 +#: src/data/por-file-reader.c:270 src/data/por-file-writer.c:148 msgid "portable file" msgstr "" -#: src/data/por-file-reader.c:275 +#: src/data/por-file-reader.c:278 #, c-format msgid "" -"An error occurred while opening \"%s\" for reading as a portable file: %s." +"An error occurred while opening `%s' for reading as a portable file: %s." msgstr "" -#: src/data/por-file-reader.c:296 +#: src/data/por-file-reader.c:299 msgid "Data record expected." msgstr "" -#: src/data/por-file-reader.c:378 +#: src/data/por-file-reader.c:381 msgid "Number expected." msgstr "" -#: src/data/por-file-reader.c:406 +#: src/data/por-file-reader.c:409 msgid "Missing numeric terminator." msgstr "" -#: src/data/por-file-reader.c:429 +#: src/data/por-file-reader.c:432 msgid "Invalid integer." msgstr "" -#: src/data/por-file-reader.c:440 src/data/por-file-reader.c:460 +#: src/data/por-file-reader.c:443 src/data/por-file-reader.c:463 #, c-format msgid "Bad string length %d." msgstr "" -#: src/data/por-file-reader.c:523 +#: src/data/por-file-reader.c:526 #, c-format msgid "%s: Not a portable file." msgstr "" -#: src/data/por-file-reader.c:540 +#: src/data/por-file-reader.c:543 #, c-format msgid "Unrecognized version code `%c'." msgstr "Unrecognised version code `%c'." -#: src/data/por-file-reader.c:549 +#: src/data/por-file-reader.c:552 #, c-format msgid "Bad date string length %zu." msgstr "" -#: src/data/por-file-reader.c:551 +#: src/data/por-file-reader.c:554 #, c-format msgid "Bad time string length %zu." msgstr "" -#: src/data/por-file-reader.c:593 +#: src/data/por-file-reader.c:596 #, c-format msgid "" "%s: Bad format specifier byte (%d). Variable will be assigned a default " "format." msgstr "" -#: src/data/por-file-reader.c:614 +#: src/data/por-file-reader.c:617 #, c-format msgid "Numeric variable %s has invalid format specifier %s." msgstr "" -#: src/data/por-file-reader.c:618 +#: src/data/por-file-reader.c:621 #, c-format msgid "String variable %s with width %d has invalid format specifier %s." msgstr "" -#: src/data/por-file-reader.c:642 +#: src/data/por-file-reader.c:645 msgid "Expected variable count record." msgstr "" -#: src/data/por-file-reader.c:646 +#: src/data/por-file-reader.c:649 #, c-format msgid "Invalid number of variables %d." msgstr "" -#: src/data/por-file-reader.c:655 +#: src/data/por-file-reader.c:658 #, c-format msgid "Weight variable name (%s) truncated." msgstr "" -#: src/data/por-file-reader.c:670 +#: src/data/por-file-reader.c:673 msgid "Expected variable record." msgstr "" -#: src/data/por-file-reader.c:674 +#: src/data/por-file-reader.c:677 #, c-format msgid "Invalid variable width %d." msgstr "" -#: src/data/por-file-reader.c:681 +#: src/data/por-file-reader.c:684 #, c-format msgid "Invalid variable name `%s' in position %d." -msgstr "" +msgstr "Invalid variable name ‘%s’ in position %d." -#: src/data/por-file-reader.c:685 src/data/sys-file-reader.c:606 +#: src/data/por-file-reader.c:688 src/data/sys-file-reader.c:605 #, c-format msgid "Bad width %d for variable %s." msgstr "" -#: src/data/por-file-reader.c:700 +#: src/data/por-file-reader.c:703 #, c-format msgid "Duplicate variable name %s in position %d." msgstr "" -#: src/data/por-file-reader.c:701 +#: src/data/por-file-reader.c:704 #, c-format msgid "Duplicate variable name %s in position %d renamed to %s." msgstr "" -#: src/data/por-file-reader.c:750 +#: src/data/por-file-reader.c:753 #, c-format msgid "Weighting variable %s not present in dictionary." msgstr "" -#: src/data/por-file-reader.c:794 +#: src/data/por-file-reader.c:797 #, c-format msgid "Unknown variable %s while parsing value labels." msgstr "" -#: src/data/por-file-reader.c:797 +#: src/data/por-file-reader.c:800 #, c-format msgid "" "Cannot assign value labels to %s and %s, which have different variable types." msgstr "" -#: src/data/por-file-writer.c:141 +#: src/data/por-file-writer.c:140 #, c-format msgid "Invalid decimal digits count %d. Treating as %d." msgstr "" -#: src/data/por-file-writer.c:161 +#: src/data/por-file-writer.c:160 #, c-format -msgid "Error opening \"%s\" for writing as a portable file: %s." -msgstr "" +msgid "Error opening `%s' for writing as a portable file: %s." +msgstr "Error opening ‘%s’ for writing as a portable file: %s." -#: src/data/por-file-writer.c:506 +#: src/data/por-file-writer.c:505 #, c-format -msgid "An I/O error occurred writing portable file \"%s\"." -msgstr "" +msgid "An I/O error occurred writing portable file `%s'." +msgstr "An I/O error occurred writing portable file ‘%s’." #: src/data/psql-reader.c:46 msgid "" @@ -626,13 +635,13 @@ msgid "" "permitted." msgstr "" -#: src/data/psql-reader.c:322 src/data/psql-reader.c:347 -#: src/data/psql-reader.c:357 +#: src/data/psql-reader.c:321 src/data/psql-reader.c:346 +#: src/data/psql-reader.c:356 #, c-format msgid "Error from psql source: %s." msgstr "" -#: src/data/psql-reader.c:452 +#: src/data/psql-reader.c:451 #, c-format msgid "Unsupported OID %d. SYSMIS values will be inserted." msgstr "" @@ -650,7 +659,20 @@ msgstr "" msgid "scratch file" msgstr "" -#: src/data/settings.c:608 +#: src/data/settings.c:388 +msgid "" +"MXWARNS set to zero. No further warnings will be given even when " +"potentially problematic situations are encountered." +msgstr "" + +#: src/data/settings.c:395 +#, c-format +msgid "" +"Warnings re-enabled. %d warnings will be issued before aborting syntax " +"processing." +msgstr "" + +#: src/data/settings.c:639 #, c-format msgid "" "%s: Custom currency string `%s' does not contain exactly three periods or " @@ -661,47 +683,47 @@ msgstr "" msgid "Variable suffix too large." msgstr "" -#: src/data/sys-file-reader.c:226 +#: src/data/sys-file-reader.c:225 #, c-format msgid "Recoded variable name duplicates an existing `%s' within system file." -msgstr "" +msgstr "Recoded variable name duplicates an existing ‘%s’ within system file." #. TRANSLATORS: this fragment will be interpolated into #. messages in fh_lock() that identify types of files. -#: src/data/sys-file-reader.c:290 src/data/sys-file-writer.c:207 +#: src/data/sys-file-reader.c:289 src/data/sys-file-writer.c:206 msgid "system file" msgstr "" -#: src/data/sys-file-reader.c:297 +#: src/data/sys-file-reader.c:296 #, c-format -msgid "Error opening \"%s\" for reading as a system file: %s." -msgstr "" +msgid "Error opening `%s' for reading as a system file: %s." +msgstr "Error opening ‘%s’ for reading as a system file: %s." -#: src/data/sys-file-reader.c:336 tests/dissect-sysfile.c:155 +#: src/data/sys-file-reader.c:335 tests/dissect-sysfile.c:155 msgid "Misplaced type 4 record." msgstr "" -#: src/data/sys-file-reader.c:347 tests/dissect-sysfile.c:166 +#: src/data/sys-file-reader.c:346 tests/dissect-sysfile.c:166 #, c-format msgid "Unrecognized record type %d." msgstr "Unrecognised record type %d." -#: src/data/sys-file-reader.c:388 +#: src/data/sys-file-reader.c:387 #, c-format msgid "File header claims %d variable positions but %d were read from file." msgstr "" -#: src/data/sys-file-reader.c:428 +#: src/data/sys-file-reader.c:427 #, c-format -msgid "Error closing system file \"%s\": %s." -msgstr "" +msgid "Error closing system file `%s': %s." +msgstr "Error closing system file ‘%s’: %s." -#: src/data/sys-file-reader.c:493 src/data/sys-file-reader.c:503 +#: src/data/sys-file-reader.c:492 src/data/sys-file-reader.c:502 #: tests/dissect-sysfile.c:203 tests/dissect-sysfile.c:213 msgid "This is not an SPSS system file." msgstr "" -#: src/data/sys-file-reader.c:525 tests/dissect-sysfile.c:228 +#: src/data/sys-file-reader.c:524 tests/dissect-sysfile.c:228 msgid "" "Compression bias is not the usual value of 100, or system file uses " "unrecognized floating-point format." @@ -709,154 +731,155 @@ msgstr "" "Compression bias is not the usual value of 100, or system file uses \n" "unrecognised floating-point format." -#: src/data/sys-file-reader.c:602 +#: src/data/sys-file-reader.c:598 +#, c-format +msgid "Variable name begins with invalid character `%c'." +msgstr "Variable name begins with invalid character ‘%c’." + +#: src/data/sys-file-reader.c:601 #, c-format msgid "Invalid variable name `%s'." -msgstr "" +msgstr "Invalid variable name ‘%s’." -#: src/data/sys-file-reader.c:610 +#: src/data/sys-file-reader.c:609 #, c-format msgid "Duplicate variable name `%s' within system file." -msgstr "" +msgstr "Duplicate variable name ‘%s’ within system file." -#: src/data/sys-file-reader.c:618 tests/dissect-sysfile.c:357 +#: src/data/sys-file-reader.c:617 tests/dissect-sysfile.c:357 msgid "Variable label indicator field is not 0 or 1." msgstr "" -#: src/data/sys-file-reader.c:649 tests/dissect-sysfile.c:388 +#: src/data/sys-file-reader.c:648 tests/dissect-sysfile.c:388 msgid "Numeric missing value indicator field is not -3, -2, 0, 1, 2, or 3." msgstr "" -#: src/data/sys-file-reader.c:667 tests/dissect-sysfile.c:403 +#: src/data/sys-file-reader.c:666 tests/dissect-sysfile.c:403 msgid "String missing value indicator field is not 0, 1, 2, or 3." msgstr "" -#: src/data/sys-file-reader.c:699 +#: src/data/sys-file-reader.c:698 msgid "Missing string continuation record." msgstr "" -#: src/data/sys-file-reader.c:733 +#: src/data/sys-file-reader.c:732 #, c-format msgid "Unknown variable format %." msgstr "" -#: src/data/sys-file-reader.c:751 +#: src/data/sys-file-reader.c:750 #, c-format msgid "%s variable %s has invalid %s format %s." msgstr "" -#: src/data/sys-file-reader.c:754 +#: src/data/sys-file-reader.c:753 msgid "print" msgstr "" -#: src/data/sys-file-reader.c:754 +#: src/data/sys-file-reader.c:753 msgid "write" msgstr "" -#: src/data/sys-file-reader.c:758 +#: src/data/sys-file-reader.c:757 msgid "Suppressing further invalid format warnings." msgstr "" -#: src/data/sys-file-reader.c:776 +#: src/data/sys-file-reader.c:775 msgid "Weighting variable must be numeric." msgstr "" -#: src/data/sys-file-reader.c:790 +#: src/data/sys-file-reader.c:789 msgid "Multiple type 6 (document) records." msgstr "" -#: src/data/sys-file-reader.c:794 +#: src/data/sys-file-reader.c:793 #, c-format msgid "Number of document lines (%d) must be greater than 0." msgstr "" -#: src/data/sys-file-reader.c:802 +#: src/data/sys-file-reader.c:801 msgid "Document line contains null byte." msgstr "" -#: src/data/sys-file-reader.c:893 +#: src/data/sys-file-reader.c:892 #, c-format msgid "" "Unrecognized record type 7, subtype %d. Please send a copy of this file, " "and the syntax which created it to %s" msgstr "" -#: src/data/sys-file-reader.c:920 tests/dissect-sysfile.c:595 +#: src/data/sys-file-reader.c:919 tests/dissect-sysfile.c:595 #, c-format msgid "Bad size (%zu) or count (%zu) field on record type 7, subtype 3." msgstr "" -#: src/data/sys-file-reader.c:940 +#: src/data/sys-file-reader.c:939 #, c-format msgid "" "Floating-point representation indicated by system file (%d) differs from " "expected (%d)." msgstr "" -#: src/data/sys-file-reader.c:953 src/language/dictionary/sys-file-info.c:110 +#: src/data/sys-file-reader.c:952 src/language/dictionary/sys-file-info.c:109 msgid "Little Endian" msgstr "" -#: src/data/sys-file-reader.c:953 src/language/dictionary/sys-file-info.c:109 +#: src/data/sys-file-reader.c:952 src/language/dictionary/sys-file-info.c:108 msgid "Big Endian" msgstr "" -#: src/data/sys-file-reader.c:954 +#: src/data/sys-file-reader.c:953 #, c-format msgid "" "Integer format indicated by system file (%s) differs from expected (%s)." msgstr "" -#: src/data/sys-file-reader.c:1011 tests/dissect-sysfile.c:626 +#: src/data/sys-file-reader.c:1010 tests/dissect-sysfile.c:626 #, c-format msgid "Bad size (%zu) or count (%zu) on extension 4." msgstr "" -#: src/data/sys-file-reader.c:1015 src/data/sys-file-reader.c:1019 -#: src/data/sys-file-reader.c:1023 tests/dissect-sysfile.c:631 +#: src/data/sys-file-reader.c:1014 src/data/sys-file-reader.c:1018 +#: src/data/sys-file-reader.c:1022 tests/dissect-sysfile.c:631 #: tests/dissect-sysfile.c:636 tests/dissect-sysfile.c:641 #, c-format msgid "File specifies unexpected value %g as %s." msgstr "" -#: src/data/sys-file-reader.c:1056 -#, c-format -msgid "Missing space following 'C' at offset %zu in MRSETS record" -msgstr "" - -#: src/data/sys-file-reader.c:1074 tests/dissect-sysfile.c:692 +#: src/data/sys-file-reader.c:1055 src/data/sys-file-reader.c:1073 +#: tests/dissect-sysfile.c:692 #, c-format -msgid "Missing space following 'E' at offset %zu in MRSETS record" +msgid "Missing space following `%c' at offset %zu in MRSETS record" msgstr "" -#: src/data/sys-file-reader.c:1083 tests/dissect-sysfile.c:701 +#: src/data/sys-file-reader.c:1082 tests/dissect-sysfile.c:701 #, c-format msgid "" -"Unexpected label source value \"%s\" following 'E' at offset %zu in MRSETS " +"Unexpected label source value `%s' following `E' at offset %zu in MRSETS " "record" msgstr "" -#: src/data/sys-file-reader.c:1089 +#: src/data/sys-file-reader.c:1088 #, c-format -msgid "Missing 'C', 'D', or 'E' at offset %zu in MRSETS record." +msgid "Missing `C', `D', or `E' at offset %zu in MRSETS record." msgstr "" -#: src/data/sys-file-reader.c:1118 +#: src/data/sys-file-reader.c:1117 #, c-format msgid "Missing new-line parsing variable names at offset %zu in MRSETS record." msgstr "" -#: src/data/sys-file-reader.c:1129 +#: src/data/sys-file-reader.c:1128 #, c-format msgid "Duplicate variable name %s at offset %zu in MRSETS record." msgstr "" -#: src/data/sys-file-reader.c:1142 +#: src/data/sys-file-reader.c:1141 #, c-format msgid "MRSET %s contains both string and numeric variables." msgstr "" -#: src/data/sys-file-reader.c:1157 +#: src/data/sys-file-reader.c:1156 #, c-format msgid "MRSET %s has only %zu variables." msgstr "" @@ -881,12 +904,12 @@ msgstr "" #: src/data/sys-file-reader.c:1271 #, c-format msgid "Long variable mapping from %s to invalid variable name `%s'." -msgstr "" +msgstr "Long variable mapping from %s to invalid variable name ‘%s’." #: src/data/sys-file-reader.c:1281 #, c-format msgid "Duplicate long variable name `%s' within system file." -msgstr "" +msgstr "Duplicate long variable name ‘%s’ within system file." #: src/data/sys-file-reader.c:1334 #, c-format @@ -950,8 +973,8 @@ msgstr "" #: src/data/sys-file-reader.c:1505 src/data/sys-file-reader.c:1686 #, c-format -msgid "Duplicate value label for \"%.*s\" on %s." -msgstr "" +msgid "Duplicate value label for `%.*s' on %s." +msgstr "Duplicate value label for ‘%.*s’ on %s." #: src/data/sys-file-reader.c:1543 #, c-format @@ -1056,29 +1079,24 @@ msgstr "" msgid "Expecting space at offset %zu following %zu-byte string." msgstr "" -#: src/data/sys-file-reader.c:2347 tests/dissect-sysfile.c:1356 +#: src/data/sys-file-reader.c:2349 tests/dissect-sysfile.c:1356 #, c-format msgid "System error: %s." msgstr "" -#: src/data/sys-file-reader.c:2349 tests/dissect-sysfile.c:1358 +#: src/data/sys-file-reader.c:2351 tests/dissect-sysfile.c:1358 msgid "Unexpected end of file." msgstr "" -#: src/data/sys-file-writer.c:180 +#: src/data/sys-file-writer.c:179 #, c-format msgid "Unknown system file version %d. Treating as version %d." msgstr "" -#: src/data/sys-file-writer.c:219 +#: src/data/sys-file-writer.c:985 #, c-format -msgid "Error opening \"%s\" for writing as a system file: %s." -msgstr "" - -#: src/data/sys-file-writer.c:989 -#, c-format -msgid "An I/O error occurred writing system file \"%s\"." -msgstr "" +msgid "An I/O error occurred writing system file `%s'." +msgstr "An I/O error occurred writing system file ‘%s’." #: src/data/variable.c:206 #, c-format @@ -1090,7 +1108,7 @@ msgstr "" #: src/data/variable.c:218 #, c-format msgid "Character `%c' (in %s) may not appear in a variable name." -msgstr "" +msgstr "Character ‘%c’ (in %s) may not appear in a variable name." #: src/data/variable.c:244 msgid "Variable name cannot be empty string." @@ -1104,241 +1122,227 @@ msgstr "" #: src/data/variable.c:258 #, c-format msgid "`%s' may not be used as a variable name because it is a reserved word." -msgstr "" - -#: src/language/syntax-file.c:95 -#, c-format -msgid "Opening `%s': %s." -msgstr "" +msgstr "‘%s’ may not be used as a variable name because it is a reserved word." -#: src/language/syntax-file.c:109 +#: src/language/syntax-file.c:100 #, c-format msgid "Reading `%s': %s." -msgstr "" +msgstr "Reading ‘%s’: %s." -#: src/language/syntax-file.c:126 +#: src/language/syntax-file.c:117 #, c-format msgid "Closing `%s': %s." -msgstr "" +msgstr "Closing ‘%s’: %s." -#: src/language/command.c:205 src/language/expressions/parse.c:1267 +#: src/language/syntax-file.c:138 +#, c-format +msgid "Opening `%s': %s." +msgstr "Opening ‘%s’: %s." + +#: src/language/command.c:197 src/language/expressions/parse.c:1270 #: src/language/utilities/set.q:213 #, c-format msgid "%s is not yet implemented." msgstr "" -#: src/language/command.c:210 +#: src/language/command.c:202 #, c-format msgid "%s may be used only in testing mode." msgstr "" -#: src/language/command.c:215 +#: src/language/command.c:207 #, c-format msgid "%s may be used only in enhanced syntax mode." msgstr "" -#: src/language/command.c:239 +#: src/language/command.c:231 msgid "Error encountered while ERROR=STOP is effective." msgstr "" -#: src/language/command.c:484 +#: src/language/command.c:476 msgid "expecting command name" msgstr "" -#: src/language/command.c:498 +#: src/language/command.c:490 #, c-format msgid "Unknown command %s." msgstr "" -#: src/language/command.c:623 +#: src/language/command.c:615 #, c-format msgid "%s is allowed only before the active file has been defined." msgstr "" -#: src/language/command.c:627 +#: src/language/command.c:619 #, c-format msgid "%s is allowed only after the active file has been defined." msgstr "" -#: src/language/command.c:631 +#: src/language/command.c:623 #, c-format msgid "%s is allowed only inside INPUT PROGRAM." msgstr "" -#: src/language/command.c:635 +#: src/language/command.c:627 #, c-format msgid "%s is allowed only inside FILE TYPE." msgstr "" -#: src/language/command.c:642 +#: src/language/command.c:634 #, c-format msgid "" "%s is allowed only before the active file has been defined or inside INPUT " "PROGRAM." msgstr "" -#: src/language/command.c:646 +#: src/language/command.c:638 #, c-format msgid "" "%s is allowed only before the active file has been defined or inside FILE " "TYPE." msgstr "" -#: src/language/command.c:650 +#: src/language/command.c:642 #, c-format msgid "" "%s is allowed only after the active file has been defined or inside INPUT " "PROGRAM." msgstr "" -#: src/language/command.c:654 +#: src/language/command.c:646 #, c-format msgid "" "%s is allowed only after the active file has been defined or inside FILE " "TYPE." msgstr "" -#: src/language/command.c:658 +#: src/language/command.c:650 #, c-format msgid "%s is allowed only inside INPUT PROGRAM or inside FILE TYPE." msgstr "" -#: src/language/command.c:664 +#: src/language/command.c:656 #, c-format msgid "" "%s is allowed only after the active file has been defined, inside INPUT " "PROGRAM, or inside FILE TYPE." msgstr "" -#: src/language/command.c:669 +#: src/language/command.c:661 #, c-format msgid "" "%s is allowed only before the active file has been defined, inside INPUT " "PROGRAM, or inside FILE TYPE." msgstr "" -#: src/language/command.c:687 src/language/command.c:689 +#: src/language/command.c:679 src/language/command.c:681 #, c-format msgid "%s is not allowed inside %s." msgstr "" -#: src/language/command.c:768 src/language/command.c:876 -#: src/language/utilities/permissions.c:98 +#: src/language/command.c:760 src/language/utilities/host.c:128 +#: src/language/utilities/permissions.c:101 msgid "This command not allowed when the SAFER option is set." msgstr "" -#: src/language/command.c:780 +#: src/language/command.c:772 #, c-format msgid "Error removing `%s': %s." -msgstr "" - -#: src/language/command.c:830 -#, c-format -msgid "Couldn't fork: %s." -msgstr "" - -#: src/language/command.c:845 -msgid "Interactive shell not supported on this platform." -msgstr "" - -#: src/language/command.c:857 -msgid "Command shell not supported on this platform." -msgstr "" - -#: src/language/command.c:863 -#, c-format -msgid "Error executing command: %s." -msgstr "" +msgstr "Error removing ‘%s’: %s." -#: src/language/lexer/lexer.c:284 +#: src/language/lexer/lexer.c:263 #, c-format msgid "%s does not form a valid number." msgstr "" -#: src/language/lexer/lexer.c:390 +#: src/language/lexer/lexer.c:369 #, c-format msgid "Bad character in input: `%s'." -msgstr "" +msgstr "Bad character in input: ‘%s’." -#: src/language/lexer/lexer.c:427 +#: src/language/lexer/lexer.c:402 #, c-format msgid "Subcommand %s may only be specified once." msgstr "" -#: src/language/lexer/lexer.c:435 +#: src/language/lexer/lexer.c:410 #, c-format msgid "missing required subcommand %s" msgstr "" -#: src/language/lexer/lexer.c:464 -#, c-format -msgid "Syntax error %s at %s." +#: src/language/lexer/lexer.c:423 +msgid "Syntax error at end of file" msgstr "" -#: src/language/lexer/lexer.c:467 -#, c-format -msgid "Syntax error at %s." +#: src/language/lexer/lexer.c:425 +msgid "Syntax error at end of command" msgstr "" -#: src/language/lexer/lexer.c:479 src/language/xforms/select-if.c:60 -#: src/language/stats/autorecode.c:144 src/language/data-io/print-space.c:73 +#: src/language/lexer/lexer.c:429 +#, c-format +msgid "Syntax error at `%s'" +msgstr "Syntax error at ‘%s’" + +#: src/language/lexer/lexer.c:457 src/language/xforms/select-if.c:60 +#: src/language/stats/autorecode.c:161 src/language/stats/npar.c:310 +#: src/language/data-io/print-space.c:73 msgid "expecting end of command" msgstr "" -#: src/language/lexer/lexer.c:601 src/language/lexer/lexer.c:618 +#: src/language/lexer/lexer.c:579 src/language/lexer/lexer.c:596 #, c-format msgid "expecting `%s'" -msgstr "" +msgstr "expecting ‘%s’" -#: src/language/lexer/lexer.c:632 +#: src/language/lexer/lexer.c:610 msgid "expecting string" msgstr "" -#: src/language/lexer/lexer.c:646 +#: src/language/lexer/lexer.c:624 msgid "expecting integer" msgstr "" -#: src/language/lexer/lexer.c:659 +#: src/language/lexer/lexer.c:637 msgid "expecting number" msgstr "" -#: src/language/lexer/lexer.c:671 +#: src/language/lexer/lexer.c:649 msgid "expecting identifier" msgstr "" -#: src/language/lexer/lexer.c:1065 +#: src/language/lexer/lexer.c:1042 msgid "binary" msgstr "" -#: src/language/lexer/lexer.c:1070 +#: src/language/lexer/lexer.c:1047 msgid "octal" msgstr "" -#: src/language/lexer/lexer.c:1075 +#: src/language/lexer/lexer.c:1052 msgid "hex" msgstr "" -#: src/language/lexer/lexer.c:1085 +#: src/language/lexer/lexer.c:1062 #, c-format msgid "String of %s digits has %zu characters, which is not a multiple of %d." msgstr "" -#: src/language/lexer/lexer.c:1114 +#: src/language/lexer/lexer.c:1091 #, c-format msgid "`%c' is not a valid %s digit." -msgstr "" +msgstr "‘%c’ is not a valid %s digit." -#: src/language/lexer/lexer.c:1148 +#: src/language/lexer/lexer.c:1125 msgid "Unterminated string constant." msgstr "" -#: src/language/lexer/lexer.c:1202 +#: src/language/lexer/lexer.c:1179 msgid "Unexpected end of file in string concatenation." msgstr "" -#: src/language/lexer/lexer.c:1210 +#: src/language/lexer/lexer.c:1187 msgid "String expected following `+'." -msgstr "" +msgstr "String expected following ‘+’." #: src/language/lexer/format-parser.c:88 msgid "expecting valid format specifier" @@ -1348,34 +1352,34 @@ msgstr "" #: src/language/lexer/format-parser.c:126 #: src/language/data-io/placement-parser.c:226 #, c-format -msgid "Unknown format type \"%s\"." -msgstr "" +msgid "Unknown format type `%s'." +msgstr "Unknown format type ‘%s’." #: src/language/lexer/format-parser.c:121 msgid "expecting format type" msgstr "" -#: src/language/lexer/value-parser.c:60 +#: src/language/lexer/value-parser.c:64 #, c-format msgid "" "Low end of range (%g) is below high end (%g). The range will be treated as " "reversed." msgstr "" -#: src/language/lexer/value-parser.c:68 +#: src/language/lexer/value-parser.c:72 #, c-format msgid "Ends of range are equal (%g)." msgstr "" -#: src/language/lexer/value-parser.c:76 +#: src/language/lexer/value-parser.c:80 msgid "LO or LOWEST must be part of a range." msgstr "" -#: src/language/lexer/value-parser.c:109 +#: src/language/lexer/value-parser.c:117 msgid "System-missing value is not valid here." msgstr "" -#: src/language/lexer/value-parser.c:117 +#: src/language/lexer/value-parser.c:125 msgid "expecting number or data string" msgstr "" @@ -1454,20 +1458,20 @@ msgstr "" msgid "Bad bounds in use of TO convention." msgstr "" -#: src/language/xforms/compute.c:149 src/language/xforms/compute.c:203 +#: src/language/xforms/compute.c:149 src/language/xforms/compute.c:204 #, c-format msgid "" -"When executing COMPUTE: SYSMIS is not a valid value as an index into vector %" -"s." +"When executing COMPUTE: SYSMIS is not a valid value as an index into vector " +"%s." msgstr "" -#: src/language/xforms/compute.c:153 src/language/xforms/compute.c:210 +#: src/language/xforms/compute.c:153 src/language/xforms/compute.c:211 #, c-format msgid "" "When executing COMPUTE: %g is not a valid value as an index into vector %s." msgstr "" -#: src/language/xforms/compute.c:353 +#: src/language/xforms/compute.c:355 #, c-format msgid "There is no vector named %s." msgstr "" @@ -1485,44 +1489,44 @@ msgstr "" msgid "Cannot sample %d observations from a population of %d." msgstr "" -#: src/language/xforms/recode.c:248 +#: src/language/xforms/recode.c:250 msgid "" "Inconsistent target variable types. Target variables must be all numeric or " "all string." msgstr "" -#: src/language/xforms/recode.c:269 +#: src/language/xforms/recode.c:271 msgid "CONVERT requires string input values and numeric output values." msgstr "" -#: src/language/xforms/recode.c:324 +#: src/language/xforms/recode.c:326 msgid "THRU is not allowed with string variables." msgstr "" -#: src/language/xforms/recode.c:403 +#: src/language/xforms/recode.c:406 msgid "expecting output value" msgstr "" -#: src/language/xforms/recode.c:460 +#: src/language/xforms/recode.c:463 #, c-format msgid "" "%zu variable(s) cannot be recoded into %zu variable(s). Specify the same " "number of variables as source and target variables." msgstr "" -#: src/language/xforms/recode.c:475 +#: src/language/xforms/recode.c:478 #, c-format msgid "" "There is no variable named %s. (All string variables specified on INTO must " "already exist. Use the STRING command to create a string variable.)" msgstr "" -#: src/language/xforms/recode.c:491 +#: src/language/xforms/recode.c:494 #, c-format msgid "INTO is required with %s input values and %s output values." msgstr "" -#: src/language/xforms/recode.c:504 +#: src/language/xforms/recode.c:507 #, c-format msgid "Type mismatch. Cannot store %s data in %s variable %s." msgstr "" @@ -1562,7 +1566,7 @@ msgstr "" msgid "Only one index clause may be specified." msgstr "" -#: src/language/control/temporary.c:46 +#: src/language/control/temporary.c:45 msgid "" "This command may only appear once between procedures and procedure-like " "commands." @@ -1570,39 +1574,43 @@ msgstr "" #: src/language/control/repeat.c:172 #, c-format -msgid "Dummy variable name \"%s\" hides dictionary variable \"%s\"." -msgstr "" +msgid "Dummy variable name `%s' hides dictionary variable `%s'." +msgstr "Dummy variable name ‘%s’ hides dictionary variable ‘%s’." #: src/language/control/repeat.c:177 #, c-format -msgid "Dummy variable name \"%s\" is given twice." -msgstr "" +msgid "Dummy variable name `%s' is given twice." +msgstr "Dummy variable name ‘%s’ is given twice." #: src/language/control/repeat.c:223 #, c-format msgid "" -"Dummy variable \"%.*s\" had %d substitutions, so \"%.*s\" must also, but %d " -"were specified." +"Dummy variable `%.*s' had %d substitutions, so `%.*s' must also, but %d were " +"specified." +msgstr "" + +#: src/language/control/repeat.c:310 +msgid "DO REPEAT without END REPEAT." msgstr "" -#: src/language/control/repeat.c:335 +#: src/language/control/repeat.c:338 msgid "DO REPEAT may not nest in compatibility mode." msgstr "" -#: src/language/control/repeat.c:437 +#: src/language/control/repeat.c:440 msgid "Ranges may only have integer bounds" msgstr "" -#: src/language/control/repeat.c:446 +#: src/language/control/repeat.c:449 #, c-format msgid "%g TO %g is an invalid range." msgstr "" -#: src/language/control/repeat.c:481 +#: src/language/control/repeat.c:484 msgid "String expected." msgstr "" -#: src/language/control/repeat.c:500 +#: src/language/control/repeat.c:503 msgid "No matching DO REPEAT." msgstr "" @@ -1611,15 +1619,24 @@ msgid "Attribute array index must be between 1 and 65535." msgstr "" #: src/language/dictionary/attributes.c:189 -msgid "expecting ATTRIBUTE= or DELETE=" +#: src/language/data-io/get-data.c:314 src/language/data-io/get-data.c:352 +#: src/language/data-io/get.c:99 src/language/data-io/save-translate.c:118 +#: src/language/data-io/save-translate.c:135 +#: src/language/data-io/save-translate.c:148 +#: src/language/data-io/save-translate.c:194 +#: src/language/data-io/save-translate.c:208 +#: src/language/data-io/save-translate.c:226 src/language/data-io/save.c:216 +#: src/language/data-io/save.c:231 src/language/data-io/save.c:259 +#, c-format +msgid "expecting %s or %s" msgstr "" -#: src/language/dictionary/apply-dictionary.c:75 +#: src/language/dictionary/apply-dictionary.c:74 #, c-format msgid "Variable %s is %s in target file, but %s in source file." msgstr "" -#: src/language/dictionary/apply-dictionary.c:115 +#: src/language/dictionary/apply-dictionary.c:114 msgid "No matching variables found between the source and target files." msgstr "" @@ -1637,102 +1654,98 @@ msgstr "" #: src/language/dictionary/formats.c:90 msgid "`(' expected after variable list." -msgstr "" +msgstr "‘(’ expected after variable list." #: src/language/dictionary/formats.c:100 src/language/dictionary/numeric.c:74 msgid "`)' expected after output format." -msgstr "" +msgstr "‘)’ expected after output format." -#: src/language/dictionary/missing-values.c:56 -#: src/language/stats/aggregate.c:459 -msgid "expecting `('" -msgstr "" - -#: src/language/dictionary/missing-values.c:72 +#: src/language/dictionary/missing-values.c:69 #, c-format msgid "" "Cannot mix numeric variables (e.g. %s) and string variables (e.g. %s) within " "a single list." msgstr "" -#: src/language/dictionary/missing-values.c:116 +#: src/language/dictionary/missing-values.c:113 #, c-format msgid "Truncating missing value to maximum acceptable length (%d bytes)." msgstr "" -#: src/language/dictionary/missing-values.c:138 +#: src/language/dictionary/missing-values.c:135 #, c-format msgid "Missing values provided are too long to assign to variable of width %d." msgstr "" -#: src/language/dictionary/modify-variables.c:92 +#: src/language/dictionary/modify-variables.c:91 msgid "" "MODIFY VARS may not be used after TEMPORARY. Temporary transformations will " "be made permanent." msgstr "" -#: src/language/dictionary/modify-variables.c:114 -#: src/language/dictionary/modify-variables.c:177 +#: src/language/dictionary/modify-variables.c:113 +#: src/language/dictionary/modify-variables.c:176 +#: src/language/data-io/inpt-pgm.c:288 #, c-format msgid "%s subcommand may be given at most once." msgstr "" -#: src/language/dictionary/modify-variables.c:137 +#: src/language/dictionary/modify-variables.c:136 msgid "Cannot specify ALL after specifying a set of variables." msgstr "" -#: src/language/dictionary/modify-variables.c:147 -#: src/language/dictionary/modify-variables.c:190 +#: src/language/dictionary/modify-variables.c:146 +#: src/language/dictionary/modify-variables.c:189 #, c-format msgid "`(' expected on %s subcommand." -msgstr "" +msgstr "‘(’ expected on %s subcommand." -#: src/language/dictionary/modify-variables.c:159 +#: src/language/dictionary/modify-variables.c:158 msgid "`)' expected following variable names on REORDER subcommand." -msgstr "" +msgstr "‘)’ expected following variable names on REORDER subcommand." -#: src/language/dictionary/modify-variables.c:199 +#: src/language/dictionary/modify-variables.c:198 msgid "" "`=' expected between lists of new and old variable names on RENAME " "subcommand." msgstr "" -#: src/language/dictionary/modify-variables.c:208 -#: src/language/dictionary/rename-variables.c:77 +#: src/language/dictionary/modify-variables.c:207 +#: src/language/dictionary/rename-variables.c:76 #, c-format msgid "" -"Differing number of variables in old name list (%zu) and in new name list (%" -"zu)." +"Differing number of variables in old name list (%zu) and in new name list " +"(%zu)." msgstr "" -#: src/language/dictionary/modify-variables.c:219 +#: src/language/dictionary/modify-variables.c:218 msgid "`)' expected after variable lists on RENAME subcommand." -msgstr "" +msgstr "‘)’ expected after variable lists on RENAME subcommand." -#: src/language/dictionary/modify-variables.c:233 +#: src/language/dictionary/modify-variables.c:232 msgid "" "KEEP subcommand may be given at most once. It may not be given in " "conjunction with the DROP subcommand." msgstr "" -#: src/language/dictionary/modify-variables.c:276 +#: src/language/dictionary/modify-variables.c:275 msgid "" "DROP subcommand may be given at most once. It may not be given in " "conjunction with the KEEP subcommand." msgstr "" -#: src/language/dictionary/modify-variables.c:302 +#: src/language/dictionary/modify-variables.c:301 #, c-format msgid "Unrecognized subcommand name `%s'." msgstr "Unrecognised subcommand name `%s'." -#: src/language/dictionary/modify-variables.c:304 +#: src/language/dictionary/modify-variables.c:303 msgid "Subcommand name expected." msgstr "" -#: src/language/dictionary/modify-variables.c:312 +#: src/language/dictionary/modify-variables.c:311 msgid "`/' or `.' expected." -msgstr "" +msgstr "‘/’ or ‘.’ expected." #: src/language/dictionary/mrsets.c:98 #, c-format @@ -1815,8 +1828,8 @@ msgstr "" #: src/language/dictionary/mrsets.c:427 #, c-format msgid "" -"Variables specified on MCGROUP should have the same categories, but %s and %" -"s (and possibly others) in multiple category group %s have different value " +"Variables specified on MCGROUP should have the same categories, but %s and " +"%s (and possibly others) in multiple category group %s have different value " "labels for value %s." msgstr "" @@ -1856,10 +1869,10 @@ msgstr "" #: src/language/dictionary/mrsets.c:568 #: src/language/dictionary/split-file.c:84 -#: src/language/dictionary/sys-file-info.c:344 -#: src/language/dictionary/sys-file-info.c:583 +#: src/language/dictionary/sys-file-info.c:343 +#: src/language/dictionary/sys-file-info.c:582 #: src/ui/gui/psppire-var-sheet.c:538 src/ui/gui/psppire-var-store.c:836 -#: src/ui/gui/crosstabs.ui:292 src/ui/gui/psppire.ui:1924 +#: src/ui/gui/compute.ui:467 src/ui/gui/crosstabs.ui:292 msgid "Label" msgstr "" @@ -1906,262 +1919,258 @@ msgstr "" msgid "Format type %s may not be used with a string variable." msgstr "" -#: src/language/dictionary/rename-variables.c:49 +#: src/language/dictionary/rename-variables.c:48 msgid "" "RENAME VARS may not be used after TEMPORARY. Temporary transformations will " "be made permanent." msgstr "" -#: src/language/dictionary/rename-variables.c:59 +#: src/language/dictionary/rename-variables.c:58 msgid "`(' expected." -msgstr "" +msgstr "‘(’ expected." -#: src/language/dictionary/rename-variables.c:67 +#: src/language/dictionary/rename-variables.c:66 msgid "`=' expected between lists of new and old variable names." -msgstr "" +msgstr "‘=’ expected between lists of new and old variable names." -#: src/language/dictionary/rename-variables.c:88 +#: src/language/dictionary/rename-variables.c:87 msgid "`)' expected after variable names." -msgstr "" +msgstr "‘)’ expected after variable names." -#: src/language/dictionary/rename-variables.c:98 +#: src/language/dictionary/rename-variables.c:97 #, c-format msgid "Renaming would duplicate variable name %s." msgstr "" #: src/language/dictionary/split-file.c:83 -#: src/language/dictionary/sys-file-info.c:429 -#: src/language/dictionary/sys-file-info.c:582 -#: src/language/stats/crosstabs.q:1214 src/language/stats/crosstabs.q:1241 -#: src/language/stats/crosstabs.q:1264 src/language/stats/crosstabs.q:1289 +#: src/language/dictionary/sys-file-info.c:428 +#: src/language/dictionary/sys-file-info.c:581 +#: src/language/stats/reliability.c:758 src/language/stats/reliability.c:769 +#: src/language/stats/crosstabs.q:1206 src/language/stats/crosstabs.q:1233 +#: src/language/stats/crosstabs.q:1256 src/language/stats/crosstabs.q:1281 #: src/language/stats/examine.q:1841 src/language/stats/frequencies.q:813 -#: src/language/stats/reliability.q:568 src/language/stats/reliability.q:579 msgid "Value" msgstr "" -#: src/language/dictionary/sys-file-info.c:95 +#: src/language/dictionary/sys-file-info.c:94 msgid "File:" msgstr "" -#: src/language/dictionary/sys-file-info.c:97 src/ui/gui/psppire.ui:1862 +#: src/language/dictionary/sys-file-info.c:96 src/ui/gui/compute.ui:405 #: src/ui/gui/recode.ui:859 msgid "Label:" msgstr "" -#: src/language/dictionary/sys-file-info.c:101 +#: src/language/dictionary/sys-file-info.c:100 msgid "No label." msgstr "" -#: src/language/dictionary/sys-file-info.c:104 +#: src/language/dictionary/sys-file-info.c:103 msgid "Created:" msgstr "" -#: src/language/dictionary/sys-file-info.c:107 +#: src/language/dictionary/sys-file-info.c:106 msgid "Integer Format:" msgstr "" -#: src/language/dictionary/sys-file-info.c:111 -#: src/language/dictionary/sys-file-info.c:119 -#: src/language/dictionary/sys-file-info.c:124 -#: src/language/dictionary/sys-file-info.c:143 +#: src/language/dictionary/sys-file-info.c:110 +#: src/language/dictionary/sys-file-info.c:118 +#: src/language/dictionary/sys-file-info.c:123 +#: src/language/dictionary/sys-file-info.c:142 msgid "Unknown" msgstr "" -#: src/language/dictionary/sys-file-info.c:112 +#: src/language/dictionary/sys-file-info.c:111 msgid "Real Format:" msgstr "" -#: src/language/dictionary/sys-file-info.c:114 +#: src/language/dictionary/sys-file-info.c:113 msgid "IEEE 754 LE." msgstr "" -#: src/language/dictionary/sys-file-info.c:115 +#: src/language/dictionary/sys-file-info.c:114 msgid "IEEE 754 BE." msgstr "" -#: src/language/dictionary/sys-file-info.c:116 +#: src/language/dictionary/sys-file-info.c:115 msgid "VAX D." msgstr "" -#: src/language/dictionary/sys-file-info.c:117 +#: src/language/dictionary/sys-file-info.c:116 msgid "VAX G." msgstr "" -#: src/language/dictionary/sys-file-info.c:118 +#: src/language/dictionary/sys-file-info.c:117 msgid "IBM 390 Hex Long." msgstr "" -#: src/language/dictionary/sys-file-info.c:120 src/ui/gui/descriptives.ui:85 -#: src/ui/gui/factor.ui:173 src/ui/gui/recode.ui:960 +#: src/language/dictionary/sys-file-info.c:119 src/ui/gui/descriptives.ui:85 +#: src/ui/gui/factor.ui:181 src/ui/gui/recode.ui:960 msgid "Variables:" msgstr "" -#: src/language/dictionary/sys-file-info.c:122 +#: src/language/dictionary/sys-file-info.c:121 msgid "Cases:" msgstr "" -#: src/language/dictionary/sys-file-info.c:127 +#: src/language/dictionary/sys-file-info.c:126 msgid "Type:" msgstr "" -#: src/language/dictionary/sys-file-info.c:128 -#: src/ui/gui/psppire-data-window.c:634 +#: src/language/dictionary/sys-file-info.c:127 +#: src/ui/gui/psppire-data-window.c:635 msgid "System File" msgstr "" -#: src/language/dictionary/sys-file-info.c:129 +#: src/language/dictionary/sys-file-info.c:128 msgid "Weight:" msgstr "" -#: src/language/dictionary/sys-file-info.c:134 +#: src/language/dictionary/sys-file-info.c:133 msgid "Not weighted." msgstr "" -#: src/language/dictionary/sys-file-info.c:136 +#: src/language/dictionary/sys-file-info.c:135 msgid "Mode:" msgstr "" -#: src/language/dictionary/sys-file-info.c:138 +#: src/language/dictionary/sys-file-info.c:137 #, c-format msgid "Compression %s." msgstr "" -#: src/language/dictionary/sys-file-info.c:138 +#: src/language/dictionary/sys-file-info.c:137 msgid "on" msgstr "" -#: src/language/dictionary/sys-file-info.c:138 +#: src/language/dictionary/sys-file-info.c:137 msgid "off" msgstr "" -#: src/language/dictionary/sys-file-info.c:141 +#: src/language/dictionary/sys-file-info.c:140 msgid "Charset:" msgstr "" -#: src/language/dictionary/sys-file-info.c:151 -#: src/language/dictionary/sys-file-info.c:344 +#: src/language/dictionary/sys-file-info.c:150 +#: src/language/dictionary/sys-file-info.c:343 msgid "Description" msgstr "" -#: src/language/dictionary/sys-file-info.c:152 -#: src/language/dictionary/sys-file-info.c:346 -#: src/language/dictionary/sys-file-info.c:663 +#: src/language/dictionary/sys-file-info.c:151 +#: src/language/dictionary/sys-file-info.c:345 +#: src/language/dictionary/sys-file-info.c:662 msgid "Position" msgstr "" -#: src/language/dictionary/sys-file-info.c:199 +#: src/language/dictionary/sys-file-info.c:198 msgid "The active file does not have a file label." msgstr "" -#: src/language/dictionary/sys-file-info.c:202 +#: src/language/dictionary/sys-file-info.c:201 msgid "File label:" msgstr "" -#: src/language/dictionary/sys-file-info.c:277 +#: src/language/dictionary/sys-file-info.c:276 msgid "No variables to display." msgstr "" -#: src/language/dictionary/sys-file-info.c:291 +#: src/language/dictionary/sys-file-info.c:290 msgid "Macros not supported." msgstr "" -#: src/language/dictionary/sys-file-info.c:300 +#: src/language/dictionary/sys-file-info.c:299 msgid "The active file dictionary does not contain any documents." msgstr "" -#: src/language/dictionary/sys-file-info.c:308 +#: src/language/dictionary/sys-file-info.c:307 msgid "Documents in the active file:" msgstr "" -#: src/language/dictionary/sys-file-info.c:428 +#: src/language/dictionary/sys-file-info.c:427 msgid "Attribute" msgstr "" -#: src/language/dictionary/sys-file-info.c:484 +#: src/language/dictionary/sys-file-info.c:483 #, c-format msgid "Format: %s" msgstr "" -#: src/language/dictionary/sys-file-info.c:491 +#: src/language/dictionary/sys-file-info.c:490 #, c-format msgid "Print Format: %s" msgstr "" -#: src/language/dictionary/sys-file-info.c:495 +#: src/language/dictionary/sys-file-info.c:494 #, c-format msgid "Write Format: %s" msgstr "" -#: src/language/dictionary/sys-file-info.c:508 +#: src/language/dictionary/sys-file-info.c:507 #, c-format msgid "Measure: %s" msgstr "" -#: src/language/dictionary/sys-file-info.c:509 +#: src/language/dictionary/sys-file-info.c:508 #: src/ui/gui/psppire-var-sheet.c:111 msgid "Nominal" msgstr "" -#: src/language/dictionary/sys-file-info.c:510 +#: src/language/dictionary/sys-file-info.c:509 #: src/ui/gui/psppire-var-sheet.c:112 msgid "Ordinal" msgstr "" -#: src/language/dictionary/sys-file-info.c:511 +#: src/language/dictionary/sys-file-info.c:510 #: src/ui/gui/psppire-var-sheet.c:113 msgid "Scale" msgstr "" -#: src/language/dictionary/sys-file-info.c:514 +#: src/language/dictionary/sys-file-info.c:513 #, c-format msgid "Display Alignment: %s" msgstr "" -#: src/language/dictionary/sys-file-info.c:515 +#: src/language/dictionary/sys-file-info.c:514 #: src/ui/gui/psppire-var-sheet.c:104 msgid "Left" msgstr "" -#: src/language/dictionary/sys-file-info.c:516 +#: src/language/dictionary/sys-file-info.c:515 #: src/ui/gui/psppire-var-sheet.c:106 msgid "Center" msgstr "Centre" -#: src/language/dictionary/sys-file-info.c:517 +#: src/language/dictionary/sys-file-info.c:516 #: src/ui/gui/psppire-var-sheet.c:105 msgid "Right" msgstr "" -#: src/language/dictionary/sys-file-info.c:520 +#: src/language/dictionary/sys-file-info.c:519 #, c-format msgid "Display Width: %d" msgstr "" -#: src/language/dictionary/sys-file-info.c:534 +#: src/language/dictionary/sys-file-info.c:533 msgid "Missing Values: " msgstr "" -#: src/language/dictionary/sys-file-info.c:643 +#: src/language/dictionary/sys-file-info.c:642 msgid "No vectors defined." msgstr "" -#: src/language/dictionary/sys-file-info.c:662 +#: src/language/dictionary/sys-file-info.c:661 msgid "Vector" msgstr "" -#: src/language/dictionary/sys-file-info.c:665 +#: src/language/dictionary/sys-file-info.c:664 msgid "Print Format" msgstr "" -#: src/language/dictionary/value-labels.c:150 +#: src/language/dictionary/value-labels.c:149 msgid "Truncating value label to 60 characters." msgstr "" -#: src/language/dictionary/variable-label.c:51 -msgid "String expected for variable label." -msgstr "" - -#: src/language/dictionary/variable-label.c:59 +#: src/language/dictionary/variable-label.c:58 msgid "Truncating variable label to 255 characters." msgstr "" @@ -2242,178 +2251,267 @@ msgstr "" msgid "Only USE ALL is currently implemented." msgstr "" -#: src/language/utilities/title.c:103 +#: src/language/utilities/host.c:85 #, c-format -msgid " (Entered %s)" +msgid "Couldn't fork: %s." +msgstr "" + +#: src/language/utilities/host.c:100 +msgid "Interactive shell not supported on this platform." +msgstr "" + +#: src/language/utilities/host.c:112 +msgid "Command shell not supported on this platform." msgstr "" -#: src/language/utilities/include.c:95 -msgid "Expecting BATCH or INTERACTIVE after SYNTAX." +#: src/language/utilities/host.c:118 +#, c-format +msgid "Error executing command: %s." msgstr "" -#: src/language/utilities/include.c:112 -msgid "Expecting YES or NO after CD." +#: src/language/utilities/title.c:103 +#, c-format +msgid " (Entered %s)" msgstr "" -#: src/language/utilities/include.c:129 -msgid "Expecting CONTINUE or STOP after ERROR." +#: src/language/utilities/include.c:94 src/language/utilities/include.c:112 +#: src/language/utilities/include.c:130 +#, c-format +msgid "expecting %s or %s after %s" msgstr "" -#: src/language/utilities/include.c:136 +#: src/language/utilities/include.c:138 #, c-format msgid "Unexpected token: `%s'." -msgstr "" +msgstr "Unexpected token: ‘%s’." -#: src/language/utilities/include.c:181 +#: src/language/utilities/include.c:183 msgid "expecting file name" msgstr "" -#: src/language/utilities/include.c:193 +#: src/language/utilities/include.c:195 #, c-format msgid "Can't find `%s' in include file search path." -msgstr "" +msgstr "Can’t find ‘%s’ in include file search path." -#: src/language/utilities/include.c:201 +#: src/language/utilities/include.c:203 #, c-format msgid "Unable to open `%s': %s." -msgstr "" +msgstr "Unable to open ‘%s’: %s." -#: src/language/utilities/permissions.c:73 +#: src/language/utilities/permissions.c:76 #, c-format msgid "Expecting %s or %s." msgstr "" -#: src/language/utilities/permissions.c:106 +#: src/language/utilities/permissions.c:109 #, c-format msgid "Cannot stat %s: %s" msgstr "" -#: src/language/utilities/permissions.c:119 +#: src/language/utilities/permissions.c:122 #, c-format msgid "Cannot change mode of %s: %s" msgstr "" -#: src/language/stats/aggregate.c:220 -msgid "while expecting COLUMNWISE" +#: src/language/stats/aggregate.c:94 +msgid "Sum of values" +msgstr "" + +#: src/language/stats/aggregate.c:95 +msgid "Mean average" +msgstr "" + +#: src/language/stats/aggregate.c:96 +msgid "Median average" +msgstr "" + +#: src/language/stats/aggregate.c:97 src/ui/gui/descriptives-dialog.c:41 +#: src/ui/gui/frequencies-dialog.c:42 +msgid "Standard deviation" +msgstr "" + +#: src/language/stats/aggregate.c:98 +msgid "Maximum value" +msgstr "" + +#: src/language/stats/aggregate.c:99 +msgid "Minimum value" +msgstr "" + +#: src/language/stats/aggregate.c:100 +msgid "Percentage greater than" +msgstr "" + +#: src/language/stats/aggregate.c:101 +msgid "Percentage less than" +msgstr "" + +#: src/language/stats/aggregate.c:102 +msgid "Percentage included in range" +msgstr "" + +#: src/language/stats/aggregate.c:103 +msgid "Percentage excluded from range" +msgstr "" + +#: src/language/stats/aggregate.c:104 +msgid "Fraction greater than" +msgstr "" + +#: src/language/stats/aggregate.c:105 +msgid "Fraction less than" +msgstr "" + +#: src/language/stats/aggregate.c:106 +msgid "Fraction included in range" +msgstr "" + +#: src/language/stats/aggregate.c:107 +msgid "Fraction excluded from range" +msgstr "" + +#: src/language/stats/aggregate.c:108 +msgid "Number of cases" +msgstr "" + +#: src/language/stats/aggregate.c:109 +msgid "Number of cases (unweighted)" +msgstr "" + +#: src/language/stats/aggregate.c:110 +msgid "Number of missing values" +msgstr "" + +#: src/language/stats/aggregate.c:111 +msgid "Number of missing values (unweighted)" +msgstr "" + +#: src/language/stats/aggregate.c:112 +msgid "First non-missing value" +msgstr "" + +#: src/language/stats/aggregate.c:113 +msgid "Last non-missing value" msgstr "" -#: src/language/stats/aggregate.c:247 -msgid "expecting BREAK" +#: src/language/stats/aggregate.c:225 src/language/data-io/get-data.c:461 +#, c-format +msgid "expecting %s" msgstr "" -#: src/language/stats/aggregate.c:252 +#: src/language/stats/aggregate.c:256 msgid "" "When PRESORTED is specified, specifying sorting directions with (A) or (D) " "has no effect. Output data will be sorted the same way as the input data." msgstr "" -#: src/language/stats/aggregate.c:424 +#: src/language/stats/aggregate.c:450 msgid "expecting aggregation function" msgstr "" -#: src/language/stats/aggregate.c:442 +#: src/language/stats/aggregate.c:462 #, c-format msgid "Unknown aggregation function %s." msgstr "" -#: src/language/stats/aggregate.c:498 +#: src/language/stats/aggregate.c:514 #, c-format msgid "Missing argument %zu to %s." msgstr "" -#: src/language/stats/aggregate.c:507 +#: src/language/stats/aggregate.c:523 #, c-format msgid "Arguments to %s must be of same type as source variables." msgstr "" -#: src/language/stats/aggregate.c:517 src/language/expressions/parse.c:885 -msgid "expecting `)'" -msgstr "" - -#: src/language/stats/aggregate.c:529 +#: src/language/stats/aggregate.c:542 #, c-format msgid "" -"Number of source variables (%zu) does not match number of target variables (%" -"zu)." +"Number of source variables (%zu) does not match number of target variables " +"(%zu)." msgstr "" -#: src/language/stats/aggregate.c:545 +#: src/language/stats/aggregate.c:558 #, c-format msgid "" "The value arguments passed to the %s function are out-of-order. They will " "be treated as if they had been specified in the correct order." msgstr "" -#: src/language/stats/aggregate.c:615 +#: src/language/stats/aggregate.c:632 #, c-format msgid "" "Variable name %s is not unique within the aggregate file dictionary, which " "contains the aggregate variables and the break variables." msgstr "" -#: src/language/stats/autorecode.c:116 +#: src/language/stats/autorecode.c:127 #, c-format msgid "Source variable count (%zu) does not match target variable count (%zu)." msgstr "" -#: src/language/stats/autorecode.c:128 +#: src/language/stats/autorecode.c:139 #, c-format msgid "Target variable %s duplicates existing variable %s." msgstr "" -#: src/language/stats/binomial.c:141 +#: src/language/stats/binomial.c:139 #, c-format msgid "Variable %s is not dichotomous" msgstr "" -#: src/language/stats/binomial.c:192 src/ui/gui/binomial.ui:13 +#: src/language/stats/binomial.c:190 src/ui/gui/binomial.ui:13 msgid "Binomial Test" msgstr "" -#: src/language/stats/binomial.c:222 +#: src/language/stats/binomial.c:220 msgid "Group1" msgstr "" -#: src/language/stats/binomial.c:223 +#: src/language/stats/binomial.c:221 msgid "Group2" msgstr "" -#: src/language/stats/binomial.c:224 src/language/stats/chisquare.c:177 +#: src/language/stats/binomial.c:222 src/language/stats/chisquare.c:177 #: src/language/stats/chisquare.c:236 src/language/stats/factor.c:1464 -#: src/language/stats/sign.c:92 src/language/stats/wilcoxon.c:260 -#: src/ui/gui/crosstabs-dialog.c:60 src/language/stats/crosstabs.q:823 -#: src/language/stats/crosstabs.q:1151 src/language/stats/crosstabs.q:1528 -#: src/language/stats/examine.q:1105 src/language/stats/frequencies.q:871 -#: src/language/stats/oneway.q:302 src/language/stats/oneway.q:472 -#: src/language/stats/regression.q:291 src/language/stats/reliability.q:702 +#: src/language/stats/glm.c:343 src/language/stats/kruskal-wallis.c:294 +#: src/language/stats/oneway.c:622 src/language/stats/oneway.c:792 +#: src/language/stats/reliability.c:538 src/language/stats/sign.c:93 +#: src/language/stats/wilcoxon.c:255 src/ui/gui/crosstabs-dialog.c:60 +#: src/language/stats/crosstabs.q:815 src/language/stats/crosstabs.q:1143 +#: src/language/stats/crosstabs.q:1522 src/language/stats/examine.q:1105 +#: src/language/stats/frequencies.q:871 src/language/stats/regression.q:291 msgid "Total" msgstr "" -#: src/language/stats/binomial.c:257 src/language/stats/chisquare.c:199 -#: src/language/stats/crosstabs.q:1239 src/language/stats/crosstabs.q:1286 +#: src/language/stats/binomial.c:255 src/language/stats/chisquare.c:199 +#: src/language/stats/crosstabs.q:1231 src/language/stats/crosstabs.q:1278 msgid "Category" msgstr "" -#: src/language/stats/binomial.c:258 src/language/stats/correlations.c:119 -#: src/language/stats/correlations.c:227 src/language/stats/npar-summary.c:122 -#: src/language/stats/sign.c:72 src/language/stats/wilcoxon.c:243 -#: src/language/stats/crosstabs.q:830 src/language/stats/examine.q:1176 -#: src/language/stats/frequencies.q:1034 src/language/stats/oneway.q:385 -#: src/language/stats/reliability.q:705 src/language/stats/t-test.q:505 -#: src/language/stats/t-test.q:525 src/language/stats/t-test.q:625 -#: src/language/stats/t-test.q:1101 +#: src/language/stats/binomial.c:256 src/language/stats/correlations.c:119 +#: src/language/stats/correlations.c:227 +#: src/language/stats/kruskal-wallis.c:259 +#: src/language/stats/npar-summary.c:120 src/language/stats/oneway.c:692 +#: src/language/stats/reliability.c:541 src/language/stats/sign.c:72 +#: src/language/stats/wilcoxon.c:238 src/language/stats/crosstabs.q:822 +#: src/language/stats/examine.q:1176 src/language/stats/frequencies.q:1034 +#: src/language/stats/t-test.q:505 src/language/stats/t-test.q:525 +#: src/language/stats/t-test.q:625 src/language/stats/t-test.q:1101 msgid "N" msgstr "" -#: src/language/stats/binomial.c:259 +#: src/language/stats/binomial.c:257 msgid "Observed Prop." msgstr "" -#: src/language/stats/binomial.c:260 +#: src/language/stats/binomial.c:258 msgid "Test Prop." msgstr "" -#: src/language/stats/binomial.c:263 +#: src/language/stats/binomial.c:261 src/language/stats/crosstabs.q:1211 +#: src/language/stats/crosstabs.q:1213 #, c-format msgid "Exact Sig. (%d-tailed)" msgstr "" @@ -2443,44 +2541,45 @@ msgstr "" msgid "Frequencies" msgstr "" -#: src/language/stats/chisquare.c:249 src/language/stats/sign.c:111 -#: src/language/stats/wilcoxon.c:309 +#: src/language/stats/chisquare.c:249 src/language/stats/kruskal-wallis.c:312 +#: src/language/stats/sign.c:112 src/language/stats/wilcoxon.c:304 msgid "Test Statistics" msgstr "" -#: src/language/stats/chisquare.c:263 +#: src/language/stats/chisquare.c:263 src/language/stats/kruskal-wallis.c:315 msgid "Chi-Square" msgstr "" -#: src/language/stats/chisquare.c:264 src/language/stats/crosstabs.q:1215 -#: src/language/stats/oneway.q:275 src/language/stats/oneway.q:685 +#: src/language/stats/chisquare.c:264 src/language/stats/glm.c:308 +#: src/language/stats/kruskal-wallis.c:318 src/language/stats/oneway.c:599 +#: src/language/stats/oneway.c:1008 src/language/stats/crosstabs.q:1207 #: src/language/stats/regression.q:284 src/language/stats/t-test.q:752 #: src/language/stats/t-test.q:923 src/language/stats/t-test.q:1010 msgid "df" msgstr "" -#: src/language/stats/chisquare.c:265 +#: src/language/stats/chisquare.c:265 src/language/stats/kruskal-wallis.c:321 msgid "Asymp. Sig." msgstr "" -#: src/language/stats/correlations.c:96 src/language/stats/factor.c:1722 -#: src/language/stats/npar-summary.c:108 +#: src/language/stats/correlations.c:96 src/language/stats/factor.c:1728 +#: src/language/stats/npar-summary.c:106 msgid "Descriptive Statistics" msgstr "" #: src/language/stats/correlations.c:117 src/language/stats/descriptives.c:101 -#: src/language/stats/factor.c:1743 src/language/stats/npar-summary.c:125 -#: src/ui/gui/descriptives-dialog.c:40 src/ui/gui/frequencies-dialog.c:41 -#: src/language/stats/examine.q:1444 src/language/stats/frequencies.q:105 -#: src/language/stats/oneway.q:386 src/language/stats/t-test.q:506 +#: src/language/stats/factor.c:1749 src/language/stats/npar-summary.c:123 +#: src/language/stats/oneway.c:693 src/ui/gui/descriptives-dialog.c:40 +#: src/ui/gui/frequencies-dialog.c:41 src/language/stats/examine.q:1444 +#: src/language/stats/frequencies.q:105 src/language/stats/t-test.q:506 #: src/language/stats/t-test.q:526 src/language/stats/t-test.q:624 #: src/language/stats/t-test.q:917 msgid "Mean" msgstr "" -#: src/language/stats/correlations.c:118 src/language/stats/factor.c:1744 -#: src/language/stats/npar-summary.c:128 src/language/stats/examine.q:1479 -#: src/language/stats/oneway.q:387 src/language/stats/t-test.q:507 +#: src/language/stats/correlations.c:118 src/language/stats/factor.c:1750 +#: src/language/stats/npar-summary.c:126 src/language/stats/oneway.c:694 +#: src/language/stats/examine.q:1479 src/language/stats/t-test.q:507 #: src/language/stats/t-test.q:527 src/language/stats/t-test.q:626 #: src/language/stats/t-test.q:918 msgid "Std. Deviation" @@ -2494,13 +2593,13 @@ msgstr "" msgid "Pearson Correlation" msgstr "" -#: src/language/stats/correlations.c:218 src/language/stats/oneway.q:686 +#: src/language/stats/correlations.c:218 src/language/stats/oneway.c:1009 #: src/language/stats/t-test.q:753 src/language/stats/t-test.q:924 #: src/language/stats/t-test.q:1011 msgid "Sig. (2-tailed)" msgstr "" -#: src/language/stats/correlations.c:218 +#: src/language/stats/correlations.c:218 src/language/stats/factor.c:1634 msgid "Sig. (1-tailed)" msgstr "" @@ -2559,17 +2658,17 @@ msgstr "" msgid "Range" msgstr "" -#: src/language/stats/descriptives.c:110 src/language/stats/npar-summary.c:131 -#: src/ui/gui/descriptives-dialog.c:42 src/ui/gui/frequencies-dialog.c:43 -#: src/language/stats/examine.q:1484 src/language/stats/frequencies.q:116 -#: src/language/stats/oneway.q:400 +#: src/language/stats/descriptives.c:110 src/language/stats/npar-summary.c:129 +#: src/language/stats/oneway.c:707 src/ui/gui/descriptives-dialog.c:42 +#: src/ui/gui/frequencies-dialog.c:43 src/language/stats/examine.q:1484 +#: src/language/stats/frequencies.q:116 msgid "Minimum" msgstr "" -#: src/language/stats/descriptives.c:111 src/language/stats/npar-summary.c:134 -#: src/ui/gui/descriptives-dialog.c:43 src/ui/gui/frequencies-dialog.c:44 -#: src/language/stats/examine.q:1489 src/language/stats/frequencies.q:117 -#: src/language/stats/oneway.q:401 +#: src/language/stats/descriptives.c:111 src/language/stats/npar-summary.c:132 +#: src/language/stats/oneway.c:708 src/ui/gui/descriptives-dialog.c:43 +#: src/ui/gui/frequencies-dialog.c:44 src/language/stats/examine.q:1489 +#: src/language/stats/frequencies.q:117 msgid "Maximum" msgstr "" @@ -2597,7 +2696,7 @@ msgstr "" msgid "Mapping of variables to corresponding Z-scores." msgstr "" -#: src/language/stats/descriptives.c:559 +#: src/language/stats/descriptives.c:559 src/language/stats/glm.c:304 msgid "Source" msgstr "" @@ -2623,29 +2722,12 @@ msgstr "" msgid "Valid cases = %g; cases with missing value(s) = %g." msgstr "" -#: src/language/stats/sort-cases.c:64 -msgid "Buffer limit must be at least 2." +#: src/language/stats/factor.c:805 +msgid "Factor analysis on a single variable is not useful." msgstr "" -#: src/language/stats/sort-criteria.c:74 -msgid "`A' or `D' expected inside parentheses." -msgstr "" - -#: src/language/stats/sort-criteria.c:79 -msgid "`)' expected." -msgstr "" - -#: src/language/stats/sort-criteria.c:92 -#, c-format -msgid "Variable %s specified twice in sort criteria." -msgstr "" - -#: src/language/stats/factor.c:805 -msgid "Factor analysis on a single variable is not useful." -msgstr "" - -#: src/language/stats/factor.c:1208 -msgid "Component Number" +#: src/language/stats/factor.c:1208 +msgid "Component Number" msgstr "" #: src/language/stats/factor.c:1208 @@ -2709,43 +2791,44 @@ msgstr "" msgid "Correlation Matrix" msgstr "" -#: src/language/stats/factor.c:1634 -msgid "Sig. 1-tailed" -msgstr "" - #: src/language/stats/factor.c:1668 msgid "Determinant" msgstr "" -#: src/language/stats/factor.c:1745 +#: src/language/stats/factor.c:1699 +msgid "" +"The dataset contains no complete observations. No analysis will be performed." +msgstr "" + +#: src/language/stats/factor.c:1751 msgid "Analysis N" msgstr "" -#: src/language/stats/factor.c:1778 +#: src/language/stats/factor.c:1784 msgid "" "The FACTOR criteria result in zero factors extracted. Therefore no analysis " "will be performed." msgstr "" -#: src/language/stats/factor.c:1784 +#: src/language/stats/factor.c:1790 msgid "" "The FACTOR criteria result in more factors than variables, which is not " "meaningful. No analysis will be performed." msgstr "" -#: src/language/stats/factor.c:1867 +#: src/language/stats/factor.c:1873 msgid "Component Matrix" msgstr "" -#: src/language/stats/factor.c:1867 +#: src/language/stats/factor.c:1873 msgid "Factor Matrix" msgstr "" -#: src/language/stats/factor.c:1873 +#: src/language/stats/factor.c:1879 msgid "Rotated Component Matrix" msgstr "" -#: src/language/stats/factor.c:1873 +#: src/language/stats/factor.c:1879 msgid "Rotated Factor Matrix" msgstr "" @@ -2758,211 +2841,474 @@ msgstr "" msgid "Could not create temporary file for FLIP." msgstr "" -#: src/language/stats/flip.c:327 +#: src/language/stats/flip.c:325 #, c-format msgid "Error rewinding FLIP file: %s." msgstr "" -#: src/language/stats/flip.c:334 +#: src/language/stats/flip.c:332 msgid "Error creating FLIP source file." msgstr "" -#: src/language/stats/flip.c:347 +#: src/language/stats/flip.c:345 #, c-format msgid "Error reading FLIP file: %s." msgstr "" -#: src/language/stats/flip.c:349 +#: src/language/stats/flip.c:347 msgid "Unexpected end of file reading FLIP file." msgstr "" -#: src/language/stats/flip.c:365 +#: src/language/stats/flip.c:363 #, c-format msgid "Error seeking FLIP source file: %s." msgstr "" -#: src/language/stats/flip.c:373 +#: src/language/stats/flip.c:371 #, c-format msgid "Error writing FLIP source file: %s." msgstr "" -#: src/language/stats/flip.c:384 -#, c-format -msgid "Error closing FLIP source file: %s." -msgstr "" - -#: src/language/stats/flip.c:392 +#: src/language/stats/flip.c:386 #, c-format msgid "Error rewinding FLIP source file: %s." msgstr "" -#: src/language/stats/flip.c:426 +#: src/language/stats/flip.c:419 #, c-format msgid "Error reading FLIP temporary file: %s." msgstr "" -#: src/language/stats/flip.c:429 +#: src/language/stats/flip.c:422 msgid "Unexpected end of file reading FLIP temporary file." msgstr "" -#: src/language/stats/npar-summary.c:141 src/language/stats/examine.q:1996 +#: src/language/stats/glm.c:108 +msgid "Multivariate analysis is not yet implemented" +msgstr "" + +#: src/language/stats/glm.c:291 +msgid "Tests of Between-Subjects Effects" +msgstr "" + +#. TRANSLATORS: The parameter is a roman numeral +#: src/language/stats/glm.c:307 +#, c-format +msgid "Type %s Sum of Squares" +msgstr "" + +#: src/language/stats/glm.c:309 src/language/stats/oneway.c:600 +#: src/language/stats/regression.q:285 +msgid "Mean Square" +msgstr "" + +#: src/language/stats/glm.c:310 src/language/stats/oneway.c:601 +#: src/language/stats/regression.q:286 src/language/stats/t-test.q:749 +msgid "F" +msgstr "" + +#: src/language/stats/glm.c:311 src/language/stats/t-test.q:750 +#: src/language/stats/t-test.q:1103 +msgid "Sig." +msgstr "" + +#: src/language/stats/glm.c:314 +msgid "Corrected Model" +msgstr "" + +#: src/language/stats/glm.c:323 +msgid "Intercept" +msgstr "" + +#: src/language/stats/glm.c:337 +msgid "Error" +msgstr "" + +#: src/language/stats/glm.c:350 +msgid "Corrected Total" +msgstr "" + +#: src/language/stats/kruskal-wallis.c:244 src/language/stats/wilcoxon.c:225 +msgid "Ranks" +msgstr "" + +#: src/language/stats/kruskal-wallis.c:258 src/language/stats/wilcoxon.c:239 +msgid "Mean Rank" +msgstr "" + +#: src/language/stats/npar.c:233 src/language/stats/npar.c:260 +#, c-format +msgid "The %s subcommand may be given only once." +msgstr "" + +#: src/language/stats/npar.c:343 +msgid "NPAR subcommand not currently implemented." +msgstr "" + +#: src/language/stats/npar.c:496 +#, c-format +msgid "" +"The specified value of HI (%d) is lower than the specified value of LO (%d)" +msgstr "" + +#: src/language/stats/npar.c:551 +#, c-format +msgid "" +"%d expected values were given, but the specified range (%d-%d) requires " +"exactly %d values." +msgstr "" + +#: src/language/stats/npar.c:690 src/language/stats/t-test.q:380 +#, c-format +msgid "" +"PAIRED was specified but the number of variables preceding WITH (%zu) did " +"not match the number following (%zu)." +msgstr "" + +#: src/language/stats/npar-summary.c:139 src/language/stats/examine.q:1996 #: src/language/stats/examine.q:2013 src/language/stats/frequencies.q:1050 #: src/ui/gui/examine.ui:345 msgid "Percentiles" msgstr "" -#: src/language/stats/npar-summary.c:145 +#: src/language/stats/npar-summary.c:143 msgid "25th" msgstr "" -#: src/language/stats/npar-summary.c:148 +#: src/language/stats/npar-summary.c:146 msgid "50th (Median)" msgstr "" -#: src/language/stats/npar-summary.c:151 +#: src/language/stats/npar-summary.c:149 msgid "75th" msgstr "" -#: src/language/stats/roc.c:935 -msgid "Area Under the Curve" +#: src/language/stats/oneway.c:548 +msgid "Number of contrast coefficients must equal the number of groups" msgstr "" -#: src/language/stats/roc.c:937 +#: src/language/stats/oneway.c:557 #, c-format -msgid "Area Under the Curve (%s)" +msgid "Coefficients for contrast %zu do not total zero" msgstr "" -#: src/language/stats/roc.c:942 -msgid "Area" +#: src/language/stats/oneway.c:598 src/language/stats/regression.q:283 +msgid "Sum of Squares" +msgstr "" + +#: src/language/stats/oneway.c:602 src/language/stats/oneway.c:847 +#: src/language/stats/regression.q:201 src/language/stats/regression.q:287 +msgid "Significance" msgstr "" -#: src/language/stats/roc.c:955 src/language/stats/examine.q:1641 -#: src/language/stats/oneway.q:388 src/language/stats/oneway.q:683 +#: src/language/stats/oneway.c:620 +msgid "Between Groups" +msgstr "" + +#: src/language/stats/oneway.c:621 +msgid "Within Groups" +msgstr "" + +#: src/language/stats/oneway.c:654 src/language/stats/regression.q:312 +msgid "ANOVA" +msgstr "" + +#: src/language/stats/oneway.c:695 src/language/stats/oneway.c:1006 +#: src/language/stats/roc.c:975 src/language/stats/examine.q:1641 #: src/language/stats/regression.q:198 msgid "Std. Error" msgstr "" -#: src/language/stats/roc.c:956 -msgid "Asymptotic Sig." +#: src/language/stats/oneway.c:701 src/language/stats/examine.q:1449 +#, c-format +msgid "%g%% Confidence Interval for Mean" msgstr "" -#: src/language/stats/roc.c:958 src/language/stats/examine.q:1455 -#: src/language/stats/oneway.q:397 +#: src/language/stats/oneway.c:704 src/language/stats/roc.c:978 +#: src/language/stats/examine.q:1455 msgid "Lower Bound" msgstr "" -#: src/language/stats/roc.c:959 src/language/stats/examine.q:1460 -#: src/language/stats/oneway.q:398 +#: src/language/stats/oneway.c:705 src/language/stats/roc.c:979 +#: src/language/stats/examine.q:1460 msgid "Upper Bound" msgstr "" -#: src/language/stats/roc.c:963 +#: src/language/stats/oneway.c:710 src/language/stats/examine.q:1635 +#: src/ui/gui/descriptives.ui:8 src/ui/gui/examine.ui:319 +msgid "Descriptives" +msgstr "" + +#: src/language/stats/oneway.c:844 +msgid "Levene Statistic" +msgstr "" + +#: src/language/stats/oneway.c:845 +msgid "df1" +msgstr "" + +#: src/language/stats/oneway.c:846 +msgid "df2" +msgstr "" + +#: src/language/stats/oneway.c:849 +msgid "Test of Homogeneity of Variances" +msgstr "" + +#: src/language/stats/oneway.c:922 +msgid "Contrast Coefficients" +msgstr "" + +#: src/language/stats/oneway.c:924 src/language/stats/oneway.c:1004 +msgid "Contrast" +msgstr "" + +#: src/language/stats/oneway.c:1002 +msgid "Contrast Tests" +msgstr "" + +#: src/language/stats/oneway.c:1005 +msgid "Value of Contrast" +msgstr "" + +#: src/language/stats/oneway.c:1007 src/language/stats/regression.q:200 +#: src/language/stats/t-test.q:751 src/language/stats/t-test.q:922 +#: src/language/stats/t-test.q:1009 +msgid "t" +msgstr "" + +#: src/language/stats/oneway.c:1059 +msgid "Assume equal variances" +msgstr "" + +#: src/language/stats/oneway.c:1063 +msgid "Does not assume equal" +msgstr "" + +#: src/language/stats/reliability.c:146 +msgid "Reliabilty on a single variable is not useful." +msgstr "" + +#: src/language/stats/reliability.c:506 src/language/stats/examine.q:1159 +msgid "Case Processing Summary" +msgstr "" + +#: src/language/stats/reliability.c:529 src/language/stats/crosstabs.q:812 +#: src/language/stats/examine.q:1164 +msgid "Cases" +msgstr "" + +#: src/language/stats/reliability.c:532 src/language/stats/crosstabs.q:813 +#: src/language/stats/examine.q:1103 src/language/stats/frequencies.q:1035 +msgid "Valid" +msgstr "" + +#: src/language/stats/reliability.c:535 +msgid "Excluded" +msgstr "" + +#: src/language/stats/reliability.c:543 +msgid "%" +msgstr "" + +#: src/language/stats/reliability.c:588 +msgid "Item-Total Statistics" +msgstr "" + +#: src/language/stats/reliability.c:610 +msgid "Scale Mean if Item Deleted" +msgstr "" + +#: src/language/stats/reliability.c:613 +msgid "Scale Variance if Item Deleted" +msgstr "" + +#: src/language/stats/reliability.c:616 +msgid "Corrected Item-Total Correlation" +msgstr "" + +#: src/language/stats/reliability.c:619 +msgid "Cronbach's Alpha if Item Deleted" +msgstr "" + +#: src/language/stats/reliability.c:693 +msgid "Reliability Statistics" +msgstr "" + +#: src/language/stats/reliability.c:733 src/language/stats/reliability.c:752 +msgid "Cronbach's Alpha" +msgstr "" + +#: src/language/stats/reliability.c:736 src/language/stats/reliability.c:761 +#: src/language/stats/reliability.c:772 +msgid "N of Items" +msgstr "" + +#: src/language/stats/reliability.c:755 +msgid "Part 1" +msgstr "" + +#: src/language/stats/reliability.c:766 +msgid "Part 2" +msgstr "" + +#: src/language/stats/reliability.c:777 +msgid "Total N of Items" +msgstr "" + +#: src/language/stats/reliability.c:780 +msgid "Correlation Between Forms" +msgstr "" + +#: src/language/stats/reliability.c:784 +msgid "Spearman-Brown Coefficient" +msgstr "" + +#: src/language/stats/reliability.c:787 +msgid "Equal Length" +msgstr "" + +#: src/language/stats/reliability.c:790 +msgid "Unequal Length" +msgstr "" + +#: src/language/stats/reliability.c:794 +msgid "Guttman Split-Half Coefficient" +msgstr "" + +#: src/language/stats/roc.c:955 +msgid "Area Under the Curve" +msgstr "" + +#: src/language/stats/roc.c:957 +#, c-format +msgid "Area Under the Curve (%s)" +msgstr "" + +#: src/language/stats/roc.c:962 +msgid "Area" +msgstr "" + +#: src/language/stats/roc.c:976 +msgid "Asymptotic Sig." +msgstr "" + +#: src/language/stats/roc.c:983 #, c-format msgid "Asymp. %g%% Confidence Interval" msgstr "" -#: src/language/stats/roc.c:969 +#: src/language/stats/roc.c:989 msgid "Variable under test" msgstr "" -#: src/language/stats/roc.c:1028 +#: src/language/stats/roc.c:1048 msgid "Case Summary" msgstr "" -#: src/language/stats/roc.c:1048 +#: src/language/stats/roc.c:1068 msgid "Unweighted" msgstr "" -#: src/language/stats/roc.c:1049 +#: src/language/stats/roc.c:1069 msgid "Weighted" msgstr "" -#: src/language/stats/roc.c:1053 +#: src/language/stats/roc.c:1073 msgid "Valid N (listwise)" msgstr "" -#: src/language/stats/roc.c:1056 +#: src/language/stats/roc.c:1076 msgid "Positive" msgstr "" -#: src/language/stats/roc.c:1057 +#: src/language/stats/roc.c:1077 msgid "Negative" msgstr "" -#: src/language/stats/roc.c:1085 +#: src/language/stats/roc.c:1105 msgid "Coordinates of the Curve" msgstr "" -#: src/language/stats/roc.c:1087 +#: src/language/stats/roc.c:1107 #, c-format msgid "Coordinates of the Curve (%s)" msgstr "" -#: src/language/stats/roc.c:1095 +#: src/language/stats/roc.c:1115 msgid "Test variable" msgstr "" -#: src/language/stats/roc.c:1097 +#: src/language/stats/roc.c:1117 msgid "Positive if greater than or equal to" msgstr "" -#: src/language/stats/roc.c:1098 src/output/charts/roc-chart-cairo.c:38 +#: src/language/stats/roc.c:1118 src/output/charts/roc-chart-cairo.c:38 msgid "Sensitivity" msgstr "" -#: src/language/stats/roc.c:1099 src/output/charts/roc-chart-cairo.c:37 +#: src/language/stats/roc.c:1119 src/output/charts/roc-chart-cairo.c:37 msgid "1 - Specificity" msgstr "" -#: src/language/stats/sign.c:89 +#: src/language/stats/sign.c:90 msgid "Negative Differences" msgstr "" -#: src/language/stats/sign.c:90 +#: src/language/stats/sign.c:91 msgid "Positive Differences" msgstr "" -#: src/language/stats/sign.c:91 src/language/stats/wilcoxon.c:259 +#: src/language/stats/sign.c:92 src/language/stats/wilcoxon.c:254 msgid "Ties" msgstr "" -#: src/language/stats/sign.c:130 src/language/stats/wilcoxon.c:327 +#: src/language/stats/sign.c:131 src/language/stats/wilcoxon.c:322 msgid "Exact Sig. (2-tailed)" msgstr "" -#: src/language/stats/sign.c:133 src/language/stats/wilcoxon.c:328 +#: src/language/stats/sign.c:134 src/language/stats/wilcoxon.c:323 msgid "Exact Sig. (1-tailed)" msgstr "" -#: src/language/stats/sign.c:136 src/language/stats/wilcoxon.c:331 +#: src/language/stats/sign.c:137 src/language/stats/wilcoxon.c:326 msgid "Point Probability" msgstr "" -#: src/language/stats/wilcoxon.c:230 -msgid "Ranks" +#: src/language/stats/sort-cases.c:64 +msgid "Buffer limit must be at least 2." msgstr "" -#: src/language/stats/wilcoxon.c:244 -msgid "Mean Rank" +#: src/language/stats/sort-criteria.c:74 +msgid "`A' or `D' expected inside parentheses." +msgstr "‘A’ or ‘D’ expected inside parentheses." + +#: src/language/stats/sort-criteria.c:79 +msgid "`)' expected." +msgstr "‘)’ expected." + +#: src/language/stats/sort-criteria.c:92 +#, c-format +msgid "Variable %s specified twice in sort criteria." msgstr "" -#: src/language/stats/wilcoxon.c:245 +#: src/language/stats/wilcoxon.c:240 msgid "Sum of Ranks" msgstr "" -#: src/language/stats/wilcoxon.c:257 +#: src/language/stats/wilcoxon.c:252 msgid "Negative Ranks" msgstr "" -#: src/language/stats/wilcoxon.c:258 +#: src/language/stats/wilcoxon.c:253 msgid "Positive Ranks" msgstr "" -#: src/language/stats/wilcoxon.c:322 +#: src/language/stats/wilcoxon.c:317 msgid "Z" msgstr "" -#: src/language/stats/wilcoxon.c:323 +#: src/language/stats/wilcoxon.c:318 src/language/stats/crosstabs.q:1209 msgid "Asymp. Sig. (2-tailed)" msgstr "" @@ -3070,7 +3416,7 @@ msgid "At least one variable must be specified." msgstr "" #: src/language/data-io/data-list.c:368 src/language/data-io/data-list.c:457 -#: src/language/data-io/get-data.c:530 +#: src/language/data-io/get-data.c:529 #, c-format msgid "%s is a duplicate variable name." msgstr "" @@ -3090,55 +3436,60 @@ msgstr "" msgid "Cannot place variable %s on record %d when RECORDS=%d is specified." msgstr "" -#: src/language/data-io/data-parser.c:460 -#: src/language/data-io/data-parser.c:469 +#: src/language/data-io/data-parser.c:458 +#: src/language/data-io/data-parser.c:467 msgid "Quoted string extends beyond end of line." msgstr "" -#: src/language/data-io/data-parser.c:525 +#: src/language/data-io/data-parser.c:515 +#, c-format +msgid "Data for variable %s is not valid as format %s: %s" +msgstr "" + +#: src/language/data-io/data-parser.c:544 #, c-format msgid "Partial case of %d of %d records discarded." msgstr "" -#: src/language/data-io/data-parser.c:572 +#: src/language/data-io/data-parser.c:601 #, c-format msgid "Partial case discarded. The first variable missing was %s." msgstr "" -#: src/language/data-io/data-parser.c:610 +#: src/language/data-io/data-parser.c:643 #, c-format msgid "" "Missing value(s) for all variables from %s onward. These will be filled " "with the system-missing value or blanks, as appropriate." msgstr "" -#: src/language/data-io/data-parser.c:630 +#: src/language/data-io/data-parser.c:663 msgid "Record ends in data not part of any field." msgstr "" -#: src/language/data-io/data-parser.c:650 src/language/data-io/print.c:404 +#: src/language/data-io/data-parser.c:683 src/language/data-io/print.c:404 msgid "Record" msgstr "" -#: src/language/data-io/data-parser.c:651 src/language/data-io/print.c:405 +#: src/language/data-io/data-parser.c:684 src/language/data-io/print.c:405 #: src/ui/gui/psppire-var-sheet.c:541 src/ui/gui/psppire-var-store.c:839 #: src/ui/gui/crosstabs.ui:89 msgid "Columns" msgstr "" -#: src/language/data-io/data-parser.c:652 -#: src/language/data-io/data-parser.c:689 src/language/data-io/print.c:406 +#: src/language/data-io/data-parser.c:685 +#: src/language/data-io/data-parser.c:722 src/language/data-io/print.c:406 msgid "Format" msgstr "" -#: src/language/data-io/data-parser.c:670 +#: src/language/data-io/data-parser.c:703 #, c-format msgid "Reading %d record from %s." msgid_plural "Reading %d records from %s." msgstr[0] "" msgstr[1] "" -#: src/language/data-io/data-parser.c:704 +#: src/language/data-io/data-parser.c:737 #, c-format msgid "Reading free-form data from %s." msgstr "" @@ -3152,8 +3503,8 @@ msgstr "" #: src/language/data-io/data-reader.c:149 #, c-format -msgid "Could not open \"%s\" for reading as a data file: %s." -msgstr "" +msgid "Could not open `%s' for reading as a data file: %s." +msgstr "Could not open ‘%s’ for reading as a data file: %s." #: src/language/data-io/data-reader.c:191 msgid "" @@ -3205,69 +3556,57 @@ msgstr "" msgid "Attempt to read beyond END DATA." msgstr "" -#: src/language/data-io/data-reader.c:707 +#: src/language/data-io/data-reader.c:703 msgid "" "This command is not valid here since the current input program does not " "access the inline file." msgstr "" -#: src/language/data-io/data-writer.c:74 +#: src/language/data-io/data-writer.c:73 #, c-format -msgid "An error occurred while opening \"%s\" for writing as a data file: %s." -msgstr "" +msgid "An error occurred while opening `%s' for writing as a data file: %s." +msgstr "An error occurred while opening ‘%s’ for writing as a data file: %s." -#: src/language/data-io/data-writer.c:191 +#: src/language/data-io/data-writer.c:190 #, c-format -msgid "I/O error occurred writing data file \"%s\"." -msgstr "" +msgid "I/O error occurred writing data file `%s'." +msgstr "I/O error occurred writing data file ‘%s’." #: src/language/data-io/get-data.c:64 #, c-format msgid "Unsupported TYPE %s" msgstr "" -#: src/language/data-io/get-data.c:260 +#: src/language/data-io/get-data.c:259 #, c-format msgid "" "%s is allowed only with %s arrangement, but %s arrangement was stated or " "implied earlier in this command." msgstr "" -#: src/language/data-io/get-data.c:315 -msgid "expecting FIXED or DELIMITED" -msgstr "" - -#: src/language/data-io/get-data.c:328 +#: src/language/data-io/get-data.c:327 msgid "Value of FIRSTCASE must be 1 or greater." msgstr "" -#: src/language/data-io/get-data.c:353 -msgid "expecting LINE or VARIABLES" -msgstr "" - -#: src/language/data-io/get-data.c:366 +#: src/language/data-io/get-data.c:365 msgid "Value of FIXCASE must be at least 1." msgstr "" -#: src/language/data-io/get-data.c:386 +#: src/language/data-io/get-data.c:385 msgid "Value of FIRST must be at least 1." msgstr "" -#: src/language/data-io/get-data.c:398 +#: src/language/data-io/get-data.c:397 msgid "Value of PERCENT must be between 1 and 100." msgstr "" -#: src/language/data-io/get-data.c:447 +#: src/language/data-io/get-data.c:446 msgid "" "In compatible syntax mode, the QUALIFIER string must contain exactly one " "character." msgstr "" -#: src/language/data-io/get-data.c:462 -msgid "expecting VARIABLES" -msgstr "" - -#: src/language/data-io/get-data.c:484 +#: src/language/data-io/get-data.c:483 #: src/language/data-io/placement-parser.c:378 #, c-format msgid "" @@ -3275,17 +3614,13 @@ msgid "" "Data fields must be listed in order of increasing record number." msgstr "" -#: src/language/data-io/get-data.c:493 +#: src/language/data-io/get-data.c:492 #, c-format msgid "" "The record number specified, %ld, exceeds the number of records per case " "specified on FIXCASE, %d." msgstr "" -#: src/language/data-io/get.c:99 -msgid "expecting COMM or TAPE" -msgstr "" - #: src/language/data-io/inpt-pgm.c:130 msgid "Unexpected end-of-file within INPUT PROGRAM." msgstr "" @@ -3294,10 +3629,6 @@ msgstr "" msgid "Input program did not create any variables." msgstr "" -#: src/language/data-io/inpt-pgm.c:288 -msgid "COLUMN subcommand multiply specified." -msgstr "" - #: src/language/data-io/inpt-pgm.c:338 msgid "" "REREAD: Column numbers must be positive finite numbers. Column set to 1." @@ -3364,23 +3695,28 @@ msgid_plural "Writing %zu records." msgstr[0] "" msgstr[1] "" -#: src/language/data-io/save.c:223 src/language/data-io/save.c:238 -#: src/language/data-io/save.c:266 +#: src/language/data-io/save-translate.c:164 +#: src/language/data-io/save-translate.c:178 #, c-format -msgid "expecting %s or %s" +msgid "The %s string must contain exactly one character." msgstr "" +#: src/language/data-io/save-translate.c:248 +#, c-format +msgid "Output file `%s' exists but REPLACE was not specified." +msgstr "Output file ‘%s’ exists but REPLACE was not specified." + #: src/language/data-io/trim.c:88 #, c-format msgid "" "Cannot rename %s as %s because there already exists a variable named %s. To " "rename variables with overlapping names, use a single RENAME subcommand such " -"as \"/RENAME (A=B)(B=C)(C=A)\", or equivalently, \"/RENAME (A B C=B C A)\"." +"as `/RENAME (A=B)(B=C)(C=A)', or equivalently, `/RENAME (A B C=B C A)'." msgstr "" #: src/language/data-io/trim.c:114 msgid "`=' expected after variable list." -msgstr "" +msgstr "‘=’ expected after variable list." #: src/language/data-io/trim.c:122 #, c-format @@ -3402,65 +3738,64 @@ msgstr "" msgid "Cannot DROP all variables from dictionary." msgstr "" -#: src/language/expressions/evaluate.c:155 +#: src/language/expressions/evaluate.c:149 msgid "expecting number or string" msgstr "" -#: src/language/expressions/evaluate.c:169 +#: src/language/expressions/evaluate.c:163 #, c-format msgid "Duplicate variable name %s." msgstr "" -#: src/language/expressions/helpers.c:51 +#: src/language/expressions/helpers.c:38 msgid "" "One of the arguments to a DATE function is not an integer. The result will " "be system-missing." msgstr "" -#: src/language/expressions/helpers.c:73 +#: src/language/expressions/helpers.c:66 msgid "" "The week argument to DATE.WKYR is not an integer. The result will be system-" "missing." msgstr "" -#: src/language/expressions/helpers.c:79 +#: src/language/expressions/helpers.c:72 msgid "" "The week argument to DATE.WKYR is outside the acceptable range of 1 to 53. " "The result will be system-missing." msgstr "" -#: src/language/expressions/helpers.c:101 +#: src/language/expressions/helpers.c:94 msgid "" "The day argument to DATE.YRDAY is not an integer. The result will be system-" "missing." msgstr "" -#: src/language/expressions/helpers.c:107 +#: src/language/expressions/helpers.c:100 msgid "" "The day argument to DATE.YRDAY is outside the acceptable range of 1 to 366. " "The result will be system-missing." msgstr "" -#: src/language/expressions/helpers.c:129 +#: src/language/expressions/helpers.c:122 msgid "" "The year argument to YRMODA is greater than 47516. The result will be " "system-missing." msgstr "" -#: src/language/expressions/helpers.c:182 +#. TRANSLATORS: Don't translate the the actual unit names `weeks', `days' etc +#. They must remain in their original English. +#: src/language/expressions/helpers.c:177 #, c-format msgid "" -"Unrecognized date unit \"%.*s\". Valid date units are \"years\", \"quarters" -"\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", and \"seconds\"." +"Unrecognized date unit `%.*s'. Valid date units are `years', `quarters', " +"`months', `weeks', `days', `hours', `minutes', and `seconds'." msgstr "" -"Unrecognised date unit \"%.*s\". Valid date units are \"years\", \"quarters" -"\"\n" -"\"\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", and \"seconds" -"\"." +"Unrecognised date unit `%.*s'. Valid date units are `years', `quarters', " +"`months', `weeks', `days', `hours', `minutes', and `seconds'." -#: src/language/expressions/helpers.c:332 -msgid "" -"Invalid DATESUM method. Valid choices are \"closest\" and \"rollover\"." +#: src/language/expressions/helpers.c:327 +msgid "Invalid DATESUM method. Valid choices are `closest' and `rollover'." msgstr "" #: src/language/expressions/parse.c:259 @@ -3475,140 +3810,146 @@ msgid "" "Type mismatch: expression has %s type, but a string value is required here." msgstr "" -#: src/language/expressions/parse.c:427 +#: src/language/expressions/parse.c:433 #, c-format msgid "Type mismatch while applying %s operator: cannot convert %s to %s." msgstr "" -#: src/language/expressions/parse.c:643 +#: src/language/expressions/parse.c:649 msgid "" -"Chaining relational operators (e.g. \"a < b < c\") will not produce the " +"Chaining relational operators (e.g. `a < b < c') will not produce the " "mathematically expected result. Use the AND logical operator to fix the " -"problem (e.g. \"a < b AND b < c\"). If chaining is really intended, " -"parentheses will disable this warning (e.g. \"(a < b) < c\".)" +"problem (e.g. `a < b AND b < c'). If chaining is really intended, " +"parentheses will disable this warning (e.g. `(a < b) < c'.)" msgstr "" -#: src/language/expressions/parse.c:744 +#: src/language/expressions/parse.c:750 msgid "" -"The exponentiation operator (\"**\") is left-associative, even though right-" -"associative semantics are more useful. That is, \"a**b**c\" equals \"(a**b)" -"**c\", not as \"a**(b**c)\". To disable this warning, insert parentheses." +"The exponentiation operator (`**') is left-associative, even though right-" +"associative semantics are more useful. That is, `a**b**c' equals `(a**b)" +"**c', not as `a**(b**c)'. To disable this warning, insert parentheses." msgstr "" -#: src/language/expressions/parse.c:809 +#: src/language/expressions/parse.c:815 #, c-format msgid "Unknown system variable %s." msgstr "" -#: src/language/expressions/parse.c:857 +#: src/language/expressions/parse.c:863 #, c-format msgid "Unknown identifier %s." msgstr "" -#: src/language/expressions/parse.c:892 -msgid "in expression" -msgstr "" - -#: src/language/expressions/parse.c:1073 +#: src/language/expressions/parse.c:1076 #, c-format msgid "%s must have at least %d arguments in list." msgstr "" -#: src/language/expressions/parse.c:1082 +#: src/language/expressions/parse.c:1085 #, c-format -msgid "%s must have even number of arguments in list." +msgid "%s must have an even number of arguments in list." msgstr "" -#: src/language/expressions/parse.c:1085 +#: src/language/expressions/parse.c:1088 #, c-format msgid "%s must have multiple of %d arguments in list." msgstr "" -#: src/language/expressions/parse.c:1095 +#: src/language/expressions/parse.c:1098 #, c-format msgid "%s function does not accept a minimum valid argument count." msgstr "" -#: src/language/expressions/parse.c:1104 +#: src/language/expressions/parse.c:1107 #, c-format msgid "%s requires at least %d valid arguments in list." msgstr "" -#: src/language/expressions/parse.c:1110 +#: src/language/expressions/parse.c:1113 #, c-format msgid "" "With %s, using minimum valid argument count of %d does not make sense when " "passing only %d arguments in list." msgstr "" -#: src/language/expressions/parse.c:1164 +#: src/language/expressions/parse.c:1167 #, c-format msgid "Type mismatch invoking %s as " msgstr "" -#: src/language/expressions/parse.c:1169 +#: src/language/expressions/parse.c:1172 msgid "Function invocation " msgstr "" -#: src/language/expressions/parse.c:1171 +#: src/language/expressions/parse.c:1174 msgid " does not match any known function. Candidates are:" msgstr "" -#: src/language/expressions/parse.c:1201 +#: src/language/expressions/parse.c:1204 #, c-format msgid "No function or vector named %s." msgstr "" -#: src/language/expressions/parse.c:1244 +#: src/language/expressions/parse.c:1247 #, c-format msgid "expecting `,' or `)' invoking %s function" -msgstr "" +msgstr "expecting ‘,’ or ‘)’ invoking %s function" -#: src/language/expressions/parse.c:1264 +#: src/language/expressions/parse.c:1267 #, c-format msgid "%s is a PSPP extension." msgstr "" -#: src/language/expressions/parse.c:1273 +#: src/language/expressions/parse.c:1276 #, c-format msgid "%s may not appear after TEMPORARY." msgstr "" -#: src/libpspp/hash.c:545 -#, c-format -msgid "hash table:" +#: src/libpspp/ext-array.c:56 +msgid "failed to create temporary file" msgstr "" -#: src/libpspp/message.c:128 -msgid "error" +#: src/libpspp/ext-array.c:96 +msgid "seeking in temporary file" msgstr "" -#: src/libpspp/message.c:131 -msgid "warning" +#: src/libpspp/ext-array.c:115 +msgid "reading temporary file" msgstr "" -#: src/libpspp/message.c:135 -msgid "note" +#: src/libpspp/ext-array.c:117 +msgid "unexpected end of file reading temporary file" msgstr "" -#: src/libpspp/tmpfile.c:56 -msgid "failed to create temporary file" +#: src/libpspp/ext-array.c:136 +msgid "writing to temporary file" msgstr "" -#: src/libpspp/tmpfile.c:97 -msgid "seeking in temporary file" +#: src/libpspp/message.c:145 +msgid "error" msgstr "" -#: src/libpspp/tmpfile.c:116 -msgid "reading temporary file" +#: src/libpspp/message.c:148 +msgid "warning" msgstr "" -#: src/libpspp/tmpfile.c:118 -msgid "unexpected end of file reading temporary file" +#: src/libpspp/message.c:152 +msgid "note" msgstr "" -#: src/libpspp/tmpfile.c:137 -msgid "writing to temporary file" +#: src/libpspp/message.c:251 +#, c-format +msgid "Notes (%d) exceed limit (%d). Suppressing further notes." +msgstr "" + +#: src/libpspp/message.c:259 +#, c-format +msgid "Warnings (%d) exceed limit (%d). Syntax processing will be halted." +msgstr "" + +#: src/libpspp/message.c:262 +#, c-format +msgid "Errors (%d) exceed limit (%d). Syntax processing will be halted." msgstr "" #: src/libpspp/zip-writer.c:91 @@ -3641,34 +3982,34 @@ msgstr "" msgid "Empirical with averaging" msgstr "" -#: src/output/ascii.c:278 +#: src/output/ascii.c:279 #, c-format msgid "%s: %s must be positive integer or `auto'" -msgstr "" +msgstr "%s: %s must be positive integer or ‘auto’" -#: src/output/ascii.c:311 +#: src/output/ascii.c:312 #, c-format msgid "" "ascii: page excluding margins and headers must be at least %d characters " "wide by %d lines long, but as configured is only %d characters by %d lines" msgstr "" -#: src/output/ascii.c:360 +#: src/output/ascii.c:361 #, c-format -msgid "ascii: closing output file \"%s\"" -msgstr "" +msgid "ascii: closing output file `%s'" +msgstr "ascii: closing output file ‘%s’" -#: src/output/ascii.c:503 +#: src/output/ascii.c:504 #, c-format msgid "See %s for a chart." msgstr "" -#: src/output/ascii.c:806 +#: src/output/ascii.c:807 #, c-format -msgid "ascii: opening output file \"%s\"" -msgstr "" +msgid "ascii: opening output file `%s'" +msgstr "ascii: opening output file ‘%s’" -#: src/output/ascii.c:913 src/output/cairo.c:784 +#: src/output/ascii.c:914 #, c-format msgid "%s - Page %d" msgstr "" @@ -3676,98 +4017,103 @@ msgstr "" #: src/output/csv.c:87 src/output/html.c:106 src/output/journal.c:93 #: src/output/msglog.c:66 #, c-format -msgid "error opening output file \"%s\"" -msgstr "" +msgid "error opening output file `%s'" +msgstr "error opening output file ‘%s’" -#: src/output/driver.c:330 +#. TRANSLATORS: Don't translate the words `terminal' or `listing'. +#: src/output/driver.c:331 #, c-format msgid "" -"%s is not a valid device type (the choices are \"terminal\" and \"listing\")" +"%s is not a valid device type (the choices are `terminal' and `listing')" msgstr "" -#: src/output/driver.c:343 +#: src/output/driver.c:344 #, c-format -msgid "%s: unknown option \"%s\"" -msgstr "" +msgid "%s: unknown option `%s'" +msgstr "%s: unknown option ‘%s’" #: src/output/html.c:114 msgid "PSPP Output" msgstr "" +#: src/output/html.c:258 +msgid "No description" +msgstr "" + #: src/output/journal.c:67 #, c-format -msgid "error writing output file \"%s\"" -msgstr "" +msgid "error writing output file `%s'" +msgstr "error writing output file ‘%s’" #: src/output/measure.c:65 #, c-format msgid "`%s' is not a valid length." -msgstr "" +msgstr "‘%s’ is not a valid length." #: src/output/measure.c:93 #, c-format msgid "syntax error in paper size `%s'" -msgstr "" +msgstr "syntax error in paper size ‘%s’" #: src/output/measure.c:230 #, c-format msgid "unknown paper type `%.*s'" -msgstr "" +msgstr "unknown paper type ‘%.*s’" #: src/output/measure.c:248 #, c-format -msgid "error opening input file \"%s\"" -msgstr "" +msgid "error opening input file `%s'" +msgstr "error opening input file ‘%s’" #: src/output/measure.c:259 #, c-format -msgid "error reading file \"%s\"" -msgstr "" +msgid "error reading file `%s'" +msgstr "error reading file ‘%s’" #: src/output/measure.c:276 #, c-format -msgid "paper size file \"%s\" does not state a paper size" -msgstr "" +msgid "paper size file `%s' does not state a paper size" +msgstr "paper size file ‘%s’ does not state a paper size" #: src/output/options.c:113 #, c-format -msgid "%s: \"%s\" is \"%s\" but a Boolean value is required" -msgstr "" +msgid "%s: `%s' is `%s' but a Boolean value is required" +msgstr "%s: ‘%s’ is ‘%s’ but a Boolean value is required" #: src/output/options.c:188 #, c-format -msgid "%s: \"%s\" is \"%s\" but one of the following is required: %s" -msgstr "" +msgid "%s: `%s' is `%s' but one of the following is required: %s" +msgstr "%s: ‘%s’ is ‘%s’ but one of the following is required: %s" #: src/output/options.c:232 #, c-format -msgid "%s: \"%s\" is \"%s\" but a nonnegative integer is required" -msgstr "" +msgid "%s: `%s' is `%s' but a nonnegative integer is required" +msgstr "%s: ‘%s’ is ‘%s’ but a nonnegative integer is required" #: src/output/options.c:236 #, c-format -msgid "%s: \"%s\" is \"%s\" but a positive integer is required" -msgstr "" +msgid "%s: `%s' is `%s' but a positive integer is required" +msgstr "%s: ‘%s’ is ‘%s’ but a positive integer is required" #: src/output/options.c:239 #, c-format -msgid "%s: \"%s\" is \"%s\" but an integer is required" -msgstr "" +msgid "%s: `%s' is `%s' but an integer is required" +msgstr "%s: ‘%s’ is ‘%s’ but an integer is required" #: src/output/options.c:242 #, c-format -msgid "%s: \"%s\" is \"%s\" but an integer greater than %d is required" -msgstr "" +msgid "%s: `%s' is `%s' but an integer greater than %d is required" +msgstr "%s: ‘%s’ is ‘%s’ but an integer greater than %d is required" #: src/output/options.c:247 #, c-format -msgid "%s: \"%s\" is \"%s\" but an integer between %d and %d is required" +msgid "%s: `%s' is `%s' but an integer between %d and %d is required" msgstr "" #: src/output/options.c:326 #, c-format -msgid "%s: \"%s\" is \"%s\" but a file name that contains \"#\" is required." -msgstr "" +msgid "%s: `%s' is `%s' but a file name that contains `#' is required." +msgstr "%s: ‘%s’ is ‘%s’ but a file name that contains ‘#’ is required." #: src/output/tab.c:206 #, c-format @@ -3785,39 +4131,39 @@ msgid "" "bad box: (%d+%d=%d,%d+%d=%d)-(%d+%d=%d,%d+%d=%d) in table size (%d,%d)\n" msgstr "" -#: src/output/cairo.c:295 +#: src/output/cairo.c:193 #, c-format -msgid "error opening output file \"%s\": %s" -msgstr "" +msgid "`%s': bad font specification" +msgstr "‘%s’: bad font specification" + +#: src/output/cairo.c:357 +#, c-format +msgid "error opening output file `%s': %s" +msgstr "error opening output file ‘%s’: %s" -#: src/output/cairo.c:312 +#: src/output/cairo.c:374 #, c-format msgid "" "The defined page is not wide enough to hold at least %d characters in the " "default font. In fact, there's only room for %d characters." msgstr "" -#: src/output/cairo.c:322 +#: src/output/cairo.c:384 #, c-format msgid "" -"The defined page is not long enough to hold margins and headers, plus least %" -"d lines of the default fonts. In fact, there's only room for %d lines." +"The defined page is not long enough to hold at least %d lines in the default " +"font. In fact, there's only room for %d lines." msgstr "" -#: src/output/cairo.c:376 +#: src/output/cairo.c:435 #, c-format msgid "error drawing output for %s driver: %s" msgstr "" -#: src/output/cairo.c:864 +#: src/output/cairo.c:1041 #, c-format -msgid "\"%s\": bad font specification" -msgstr "" - -#: src/output/cairo.c:1088 -#, c-format -msgid "error writing output file \"%s\": %s" -msgstr "" +msgid "error writing output file `%s': %s" +msgstr "error writing output file ‘%s’: %s" #: src/output/charts/np-plot-cairo.c:37 #, c-format @@ -3862,57 +4208,93 @@ msgstr "" msgid "Eigenvalue" msgstr "" -#: src/output/odt.c:93 +#: src/output/odt.c:94 msgid "error creating temporary file" msgstr "" -#: src/ui/source-init-opts.c:78 -msgid "Algorithm must be either \"compatible\" or \"enhanced\"." -msgstr "" +#: src/ui/source-init-opts.c:80 +msgid "Algorithm must be either `compatible' or `enhanced'." +msgstr "Algorithm must be either ‘compatible’ or ‘enhanced’." -#: src/ui/source-init-opts.c:103 -msgid "Syntax must be either \"compatible\" or \"enhanced\"." -msgstr "" +#: src/ui/source-init-opts.c:107 +msgid "Syntax must be either `compatible' or `enhanced'." +msgstr "Syntax must be either ‘compatible’ or ‘enhanced’." -#: src/ui/terminal/main.c:128 +#: src/ui/terminal/main.c:146 msgid "" "Stopping syntax file processing here to avoid a cascade of dependent command " "failures." msgstr "" -#: src/ui/terminal/msg-ui.c:127 +#: src/ui/terminal/terminal.c:62 #, c-format -msgid "Notes (%d) exceed limit (%d). Suppressing further notes." -msgstr "" +msgid "could not access definition for terminal `%s'" +msgstr "could not access definition for terminal ‘%s’" -#: src/ui/terminal/msg-ui.c:135 +#: src/ui/terminal/terminal-opts.c:120 #, c-format -msgid "Warnings (%d) exceed limit (%d)." -msgstr "" +msgid "%s: output option missing `='" +msgstr "%s: output option missing ‘=’" -#: src/ui/terminal/msg-ui.c:138 +#: src/ui/terminal/terminal-opts.c:127 #, c-format -msgid "Errors (%d) exceed limit (%d)." +msgid "%s: output option specified more than once" msgstr "" -#: src/ui/terminal/terminal.c:72 +#: src/ui/terminal/terminal-opts.c:187 #, c-format -msgid "could not access definition for terminal `%s'" +msgid "" +"PSPP, a program for statistical analysis of sample data.\n" +"Usage: %s [OPTION]... FILE...\n" +"\n" +"Arguments to long options also apply to equivalent short options.\n" +"\n" +"Output options:\n" +" -o, --output=FILE output to FILE, default format from FILE's name\n" +" -O format=FORMAT override format for previous -o\n" +" -O OPTION=VALUE set output option to customize previous -o\n" +" -O device={terminal|listing} override device type for previous -o\n" +" -e, --error-file=FILE append errors, warnings, and notes to FILE\n" +" --no-output disable default output driver\n" +"Supported output formats: %s\n" +"\n" +"Language options:\n" +" -I, --include=DIR append DIR to search path\n" +" -I-, --no-include clear search path\n" +" -r, --no-statrc disable running rc file at startup\n" +" -a, --algorithm={compatible|enhanced}\n" +" set to `compatible' if you want output\n" +" calculated from broken algorithms\n" +" -x, --syntax={compatible|enhanced}\n" +" set to `compatible' to disable PSPP extensions\n" +" -i, --interactive interpret syntax in interactive mode\n" +" -s, --safer don't allow some unsafe operations\n" +"Default search path:%s\n" +"\n" +"Informative output:\n" +" -h, --help display this help and exit\n" +" -V, --version output version information and exit\n" +"\n" +"Non-option arguments are interpreted as syntax files to execute.\n" msgstr "" -#: src/ui/terminal/terminal-opts.c:119 -#, c-format -msgid "%s: output option missing `='" +#: src/ui/gui/aggregate-dialog.c:162 +msgid "Aggregate destination file" msgstr "" -#: src/ui/terminal/terminal-opts.c:126 -#, c-format -msgid "%s: output option specified more than once" +#: src/ui/gui/aggregate-dialog.c:173 src/ui/gui/psppire-data-window.c:403 +#: src/ui/gui/psppire-data-window.c:615 +msgid "System Files (*.sav)" +msgstr "" + +#: src/ui/gui/aggregate-dialog.c:179 src/ui/gui/psppire-data-window.c:409 +#: src/ui/gui/psppire-data-window.c:621 +msgid "Portable Files (*.por) " msgstr "" -#: src/ui/gui/checkbox-treeview.c:92 src/language/stats/crosstabs.q:1213 -#: src/language/stats/crosstabs.q:1240 src/language/stats/crosstabs.q:1263 -#: src/language/stats/crosstabs.q:1287 src/language/stats/examine.q:1638 +#: src/ui/gui/checkbox-treeview.c:92 src/language/stats/crosstabs.q:1205 +#: src/language/stats/crosstabs.q:1232 src/language/stats/crosstabs.q:1255 +#: src/language/stats/crosstabs.q:1279 src/language/stats/examine.q:1638 msgid "Statistic" msgstr "" @@ -3925,7 +4307,7 @@ msgstr "" msgid "Chisq" msgstr "" -#: src/ui/gui/crosstabs-dialog.c:42 src/language/stats/crosstabs.q:1774 +#: src/ui/gui/crosstabs-dialog.c:42 src/language/stats/crosstabs.q:1768 msgid "Phi" msgstr "" @@ -3933,7 +4315,7 @@ msgstr "" msgid "CC" msgstr "" -#: src/ui/gui/crosstabs-dialog.c:44 src/language/stats/crosstabs.q:1912 +#: src/ui/gui/crosstabs-dialog.c:44 src/language/stats/crosstabs.q:1906 msgid "Lambda" msgstr "" @@ -3953,7 +4335,7 @@ msgstr "" msgid "Risk" msgstr "" -#: src/ui/gui/crosstabs-dialog.c:49 src/language/stats/crosstabs.q:1779 +#: src/ui/gui/crosstabs-dialog.c:49 src/language/stats/crosstabs.q:1773 msgid "Gamma" msgstr "" @@ -3961,11 +4343,11 @@ msgstr "" msgid "D" msgstr "" -#: src/ui/gui/crosstabs-dialog.c:51 src/language/stats/crosstabs.q:1782 +#: src/ui/gui/crosstabs-dialog.c:51 src/language/stats/crosstabs.q:1776 msgid "Kappa" msgstr "" -#: src/ui/gui/crosstabs-dialog.c:52 src/language/stats/crosstabs.q:1916 +#: src/ui/gui/crosstabs-dialog.c:52 src/language/stats/crosstabs.q:1910 msgid "Eta" msgstr "" @@ -4004,10 +4386,6 @@ msgstr "" msgid "Adjusted Std. Residual" msgstr "" -#: src/ui/gui/descriptives-dialog.c:41 src/ui/gui/frequencies-dialog.c:42 -msgid "Standard deviation" -msgstr "" - #: src/ui/gui/descriptives-dialog.c:46 msgid "Standard error" msgstr "" @@ -4043,10 +4421,6 @@ msgstr "" msgid "Median" msgstr "" -#: src/ui/gui/helper.c:197 -msgid "Sorry. The help system hasn't yet been implemented." -msgstr "" - #: src/ui/gui/help-menu.c:67 msgid "A program for the analysis of sampled data" msgstr "" @@ -4061,7 +4435,7 @@ msgstr "John Darrington" #, c-format msgid "" "Cannot open reference manual: %s. The PSPP user manual is also available at " -"http://www.gnu.org/software/pspp/documentation.html" +"%s" msgstr "" #: src/ui/gui/help-menu.c:117 @@ -4072,6 +4446,36 @@ msgstr "" msgid "_Reference Manual" msgstr "" +#: src/ui/gui/main.c:99 +#, c-format +msgid "" +"PSPPIRE, a GUI for PSPP, a program for statistical analysis of sample data.\n" +"Usage: %s [OPTION]... FILE\n" +"\n" +"Arguments to long options also apply to equivalent short options.\n" +"\n" +"GUI options:\n" +" -q, --no-splash don't show splash screen during startup\n" +"\n" +"%sLanguage options:\n" +" -I, --include=DIR append DIR to search path\n" +" -I-, --no-include clear search path\n" +" -a, --algorithm={compatible|enhanced}\n" +" set to `compatible' if you want output\n" +" calculated from broken algorithms\n" +" -x, --syntax={compatible|enhanced}\n" +" set to `compatible' to disable PSPP extensions\n" +" -i, --interactive interpret syntax in interactive mode\n" +" -s, --safer don't allow some unsafe operations\n" +"Default search path:%s\n" +"\n" +"Informative output:\n" +" -h, --help display this help and exit\n" +" -V, --version output version information and exit\n" +"\n" +"A non-option argument is interpreted as a .sav or .por file to load.\n" +msgstr "" + #: src/ui/gui/missing-val-dialog.c:113 src/ui/gui/missing-val-dialog.c:167 msgid "Incorrect value for variable type" msgstr "" @@ -4105,138 +4509,161 @@ msgstr "" msgid "var" msgstr "" -#: src/ui/gui/psppire-data-window.c:212 +#: src/ui/gui/psppire-data-window.c:213 msgid "Transformations Pending" msgstr "" -#: src/ui/gui/psppire-data-window.c:228 +#: src/ui/gui/psppire-data-window.c:229 msgid "Filter off" msgstr "" -#: src/ui/gui/psppire-data-window.c:242 +#: src/ui/gui/psppire-data-window.c:243 #, c-format msgid "Filter by %s" msgstr "" -#: src/ui/gui/psppire-data-window.c:263 +#: src/ui/gui/psppire-data-window.c:264 msgid "No Split" msgstr "" -#: src/ui/gui/psppire-data-window.c:272 +#: src/ui/gui/psppire-data-window.c:273 msgid "Split by " msgstr "" -#: src/ui/gui/psppire-data-window.c:300 +#: src/ui/gui/psppire-data-window.c:301 msgid "Weights off" msgstr "" -#: src/ui/gui/psppire-data-window.c:314 +#: src/ui/gui/psppire-data-window.c:315 #, c-format msgid "Weight by %s" msgstr "" -#: src/ui/gui/psppire-data-window.c:382 +#: src/ui/gui/psppire-data-window.c:383 msgid "Open" msgstr "" -#: src/ui/gui/psppire-data-window.c:392 +#: src/ui/gui/psppire-data-window.c:393 msgid "Data and Syntax Files" msgstr "" -#: src/ui/gui/psppire-data-window.c:402 src/ui/gui/psppire-data-window.c:614 -msgid "System Files (*.sav)" -msgstr "" - -#: src/ui/gui/psppire-data-window.c:408 src/ui/gui/psppire-data-window.c:620 -msgid "Portable Files (*.por) " -msgstr "" - -#: src/ui/gui/psppire-data-window.c:414 src/ui/gui/psppire-syntax-window.c:292 +#: src/ui/gui/psppire-data-window.c:415 src/ui/gui/psppire-syntax-window.c:501 msgid "Syntax Files (*.sps) " msgstr "" -#: src/ui/gui/psppire-data-window.c:420 src/ui/gui/psppire-data-window.c:626 -#: src/ui/gui/psppire-syntax-window.c:298 +#: src/ui/gui/psppire-data-window.c:421 src/ui/gui/psppire-data-window.c:627 +#: src/ui/gui/psppire-syntax-window.c:507 msgid "All Files" msgstr "" -#: src/ui/gui/psppire-data-window.c:606 +#: src/ui/gui/psppire-data-window.c:607 src/ui/gui/aggregate.ui:448 msgid "Save" msgstr "" -#: src/ui/gui/psppire-data-window.c:639 +#: src/ui/gui/psppire-data-window.c:640 msgid "Portable File" msgstr "" -#: src/ui/gui/psppire-data-window.c:776 +#: src/ui/gui/psppire-data-window.c:777 msgid "Font Selection" msgstr "" -#: src/ui/gui/psppire-data-window.c:1264 +#. TRANSLATORS: This will form a filename. Please avoid whitespace. +#: src/ui/gui/psppire-data-window.c:1271 +msgid "PSPP-data" +msgstr "" + +#: src/ui/gui/psppire-data-window.c:1272 msgid "Data Editor" msgstr "" -#: src/ui/gui/psppire-output-window.c:458 -msgid "Infer file type from extention" +#. TRANSLATORS: This string must be a valid variable name. That means: +#. - The string must be at most 64 bytes (not characters) long. +#. - The string may not contain whitespace. +#. - The first character may not be '$' +#. - The first character may not be a digit +#. - The final charactor may not be '.' or '_' +#. +#: src/ui/gui/psppire-dict.c:366 +#, c-format +msgid "VAR%05d" msgstr "" -#: src/ui/gui/psppire-output-window.c:459 +#: src/ui/gui/psppire-output-window.c:456 +msgid "Infer file type from extension" +msgstr "" + +#: src/ui/gui/psppire-output-window.c:457 msgid "PDF (*.pdf)" msgstr "" -#: src/ui/gui/psppire-output-window.c:460 +#: src/ui/gui/psppire-output-window.c:458 msgid "HTML (*.html)" msgstr "" -#: src/ui/gui/psppire-output-window.c:461 +#: src/ui/gui/psppire-output-window.c:459 msgid "OpenDocument (*.odt)" msgstr "" -#: src/ui/gui/psppire-output-window.c:462 +#: src/ui/gui/psppire-output-window.c:460 msgid "Text (*.txt)" msgstr "" -#: src/ui/gui/psppire-output-window.c:463 +#: src/ui/gui/psppire-output-window.c:461 msgid "PostScript (*.ps)" msgstr "" -#: src/ui/gui/psppire-output-window.c:464 +#: src/ui/gui/psppire-output-window.c:462 msgid "Comma-Separated Values (*.csv)" msgstr "" -#: src/ui/gui/psppire-output-window.c:565 +#: src/ui/gui/psppire-output-window.c:563 msgid "Export Output" msgstr "" -#: src/ui/gui/psppire-output-window.c:1042 +#: src/ui/gui/psppire-output-window.c:817 +msgid "failed to create temporary directory" +msgstr "" + +#. TRANSLATORS: This will form a filename. Please avoid whitespace. +#: src/ui/gui/psppire-output-window.c:1048 +msgid "Output" +msgstr "" + +#: src/ui/gui/psppire-output-window.c:1049 msgid "Output Viewer" msgstr "" -#: src/ui/gui/psppire-syntax-window.c:265 +#: src/ui/gui/psppire-syntax-window.c:474 #, c-format -msgid "Saved file \"%s\"" -msgstr "" +msgid "Saved file `%s'" +msgstr "Saved file ‘%s’" -#: src/ui/gui/psppire-syntax-window.c:284 +#: src/ui/gui/psppire-syntax-window.c:493 msgid "Save Syntax" msgstr "" -#: src/ui/gui/psppire-syntax-window.c:496 +#. TRANSLATORS: This will form a filename. Please avoid whitespace. +#: src/ui/gui/psppire-syntax-window.c:745 +msgid "Syntax" +msgstr "" + +#: src/ui/gui/psppire-syntax-window.c:746 msgid "Syntax Editor" msgstr "" -#: src/ui/gui/psppire-syntax-window.c:510 +#: src/ui/gui/psppire-syntax-window.c:760 #, c-format -msgid "Cannot load syntax file '%s'" +msgid "Cannot load syntax file `%s'" msgstr "" #: src/ui/gui/psppire-var-sheet.c:535 src/ui/gui/psppire-var-store.c:833 -#: src/language/stats/crosstabs.q:1288 src/ui/gui/psppire.ui:2055 +#: src/language/stats/crosstabs.q:1280 src/ui/gui/compute.ui:599 msgid "Type" msgstr "" #: src/ui/gui/psppire-var-sheet.c:536 src/ui/gui/psppire-var-store.c:834 -#: src/ui/gui/psppire.ui:1974 +#: src/ui/gui/compute.ui:517 msgid "Width" msgstr "" @@ -4249,7 +4676,7 @@ msgid "Values" msgstr "" #: src/ui/gui/psppire-var-sheet.c:540 src/ui/gui/psppire-var-store.c:838 -#: src/language/stats/crosstabs.q:822 src/language/stats/examine.q:1104 +#: src/language/stats/crosstabs.q:814 src/language/stats/examine.q:1104 #: src/language/stats/frequencies.q:864 src/language/stats/frequencies.q:1036 msgid "Missing" msgstr "" @@ -4286,24 +4713,34 @@ msgstr "" msgid "Custom" msgstr "" +#: src/ui/gui/psppire-var-store.c:755 +#, c-format +msgid "{%s,`%s'}_" +msgstr "{%s,‘%s’}_" + #: src/ui/gui/psppire-window.c:97 #, c-format msgid "%s %s PSPPIRE %s" msgstr "" -#: src/ui/gui/psppire-window.c:468 -#, c-format -msgid "Save the changes to \"%s\" before closing?" +#. TRANSLATORS: This will form a filename. Please avoid whitespace. +#: src/ui/gui/psppire-window.c:247 +msgid "Untitled" msgstr "" -#: src/ui/gui/psppire-window.c:475 +#: src/ui/gui/psppire-window.c:469 +#, c-format +msgid "Save the changes to `%s' before closing?" +msgstr "Save the changes to ‘%s’ before closing?" + +#: src/ui/gui/psppire-window.c:476 #, c-format msgid "" "If you don't save, changes from the last %ld seconds will be permanently " "lost." msgstr "" -#: src/ui/gui/psppire-window.c:479 +#: src/ui/gui/psppire-window.c:480 msgid "Close _without saving" msgstr "" @@ -4357,32 +4794,32 @@ msgstr "" msgid "Exactly %3d cases from the first %3d cases." msgstr "" -#: src/ui/gui/select-cases-dialog.c:223 +#: src/ui/gui/select-cases-dialog.c:222 #, c-format msgid "%d thru %d" msgstr "" #: src/ui/gui/text-data-import-dialog.c:461 #, c-format -msgid "Could not open \"%s\": %s" -msgstr "" +msgid "Could not open `%s': %s" +msgstr "Could not open ‘%s’: %s" #: src/ui/gui/text-data-import-dialog.c:477 #, c-format -msgid "Error reading \"%s\": %s" -msgstr "" +msgid "Error reading `%s': %s" +msgstr "Error reading ‘%s’: %s" #: src/ui/gui/text-data-import-dialog.c:480 #, c-format msgid "" -"Failed to read \"%s\", because it contains a line over %d bytes long and " +"Failed to read `%s', because it contains a line over %d bytes long and " "therefore appears not to be a text file." msgstr "" #: src/ui/gui/text-data-import-dialog.c:494 #, c-format -msgid "\"%s\" is empty." -msgstr "" +msgid "`%s' is empty." +msgstr "‘%s’ is empty." #: src/ui/gui/text-data-import-dialog.c:539 msgid "Import Delimited Text Data" @@ -4392,7 +4829,17 @@ msgstr "" msgid "Importing Delimited Text Data" msgstr "" +#: src/ui/gui/text-data-import-dialog.c:739 +#, c-format +msgid "Only the first %4d cases" +msgstr "" + #: src/ui/gui/text-data-import-dialog.c:749 +#, c-format +msgid "Only the first %3d %% of file (approximately)" +msgstr "" + +#: src/ui/gui/text-data-import-dialog.c:774 msgid "" "This assistant will guide you through the process of importing data into " "PSPP from a text file with one line per case, in which fields are separated " @@ -4400,21 +4847,21 @@ msgid "" "\n" msgstr "" -#: src/ui/gui/text-data-import-dialog.c:755 +#: src/ui/gui/text-data-import-dialog.c:780 #, c-format msgid "The selected file contains %zu line of text. " msgid_plural "The selected file contains %zu lines of text. " msgstr[0] "" msgstr[1] "" -#: src/ui/gui/text-data-import-dialog.c:763 +#: src/ui/gui/text-data-import-dialog.c:788 #, c-format msgid "The selected file contains approximately %lu line of text. " msgid_plural "The selected file contains approximately %lu lines of text. " msgstr[0] "" msgstr[1] "" -#: src/ui/gui/text-data-import-dialog.c:769 +#: src/ui/gui/text-data-import-dialog.c:794 #, c-format msgid "" "Only the first %zu line of the file will be shown for preview purposes in " @@ -4425,18 +4872,26 @@ msgid_plural "" msgstr[0] "" msgstr[1] "" -#: src/ui/gui/text-data-import-dialog.c:776 +#: src/ui/gui/text-data-import-dialog.c:801 msgid "You may choose below how much of the file should actually be imported." msgstr "" -#: src/ui/gui/text-data-import-dialog.c:1523 -#: src/ui/gui/text-data-import-dialog.c:1768 +#: src/ui/gui/text-data-import-dialog.c:884 +msgid "Text" +msgstr "" + +#: src/ui/gui/text-data-import-dialog.c:1550 +#: src/ui/gui/text-data-import-dialog.c:1794 msgid "This input line has too few separators to fill in this field." msgstr "" -#: src/ui/gui/text-data-import-dialog.c:1759 +#: src/ui/gui/text-data-import-dialog.c:1785 #, c-format -msgid "Field content \"%.*s\" cannot be parsed in format %s." +msgid "Cannot parse field content `%.*s' as format %s: %s" +msgstr "Cannot parse field content ‘%.*s’ as format %s: %s" + +#: src/ui/gui/text-data-import-dialog.c:1938 +msgid "Line" msgstr "" #: src/ui/gui/t-test-options.c:60 @@ -4444,6 +4899,11 @@ msgstr "" msgid "Confidence Interval: %2d %%" msgstr "" +#: src/ui/gui/val-labs-dialog.c:515 +#, c-format +msgid "%s = `%s'" +msgstr "%s = ‘%s’" + #: src/ui/gui/variable-info-dialog.c:77 #, c-format msgid "Label: %s\n" @@ -4546,54 +5006,65 @@ msgstr "" msgid "WIDTH must be at least 40." msgstr "" -#: src/language/utilities/set.q:490 +#: src/language/utilities/set.q:494 #, c-format msgid "" "FORMAT requires numeric output format as an argument. Specified format %s " "is of type string." msgstr "" -#: src/language/utilities/set.q:707 +#: src/language/utilities/set.q:711 msgid "ISL (32-bit IEEE 754 single, little-endian)" msgstr "" -#: src/language/utilities/set.q:710 +#: src/language/utilities/set.q:714 msgid "ISB (32-bit IEEE 754 single, big-endian)" msgstr "" -#: src/language/utilities/set.q:713 +#: src/language/utilities/set.q:717 msgid "IDL (64-bit IEEE 754 double, little-endian)" msgstr "" -#: src/language/utilities/set.q:716 +#: src/language/utilities/set.q:720 msgid "IDB (64-bit IEEE 754 double, big-endian)" msgstr "" -#: src/language/utilities/set.q:720 +#: src/language/utilities/set.q:724 msgid "VF (32-bit VAX F, VAX-endian)" msgstr "" -#: src/language/utilities/set.q:723 +#: src/language/utilities/set.q:727 msgid "VD (64-bit VAX D, VAX-endian)" msgstr "" -#: src/language/utilities/set.q:726 +#: src/language/utilities/set.q:730 msgid "VG (64-bit VAX G, VAX-endian)" msgstr "" -#: src/language/utilities/set.q:730 +#: src/language/utilities/set.q:734 msgid "ZS (32-bit IBM Z hexadecimal short, big-endian)" msgstr "" -#: src/language/utilities/set.q:733 +#: src/language/utilities/set.q:737 msgid "ZL (64-bit IBM Z hexadecimal long, big-endian)" msgstr "" -#: src/language/utilities/set.q:835 +#: src/language/utilities/set.q:839 #, c-format msgid "%s is %s." msgstr "" +#: src/language/utilities/set.q:942 +#, c-format +msgid "" +"Too many PRESERVE commands without a RESTORE: at most %d levels of saved " +"settings are allowed." +msgstr "" + +#: src/language/utilities/set.q:961 +msgid "RESTORE without matching PRESERVE." +msgstr "" + #: src/language/stats/crosstabs.q:289 msgid "" "Missing mode REPORT not allowed in general mode. Assuming MISSING=TABLE." @@ -4603,236 +5074,210 @@ msgstr "" msgid "Too many cross-tabulation variables or dimensions." msgstr "" -#: src/language/stats/crosstabs.q:409 -msgid "expecting BY" -msgstr "" - #: src/language/stats/crosstabs.q:466 msgid "VARIABLES must be specified before TABLES." msgstr "" -#: src/language/stats/crosstabs.q:504 +#: src/language/stats/crosstabs.q:500 #, c-format msgid "Maximum value (%ld) less than minimum value (%ld)." msgstr "" -#: src/language/stats/crosstabs.q:818 +#: src/language/stats/crosstabs.q:810 msgid "Summary." msgstr "" -#: src/language/stats/crosstabs.q:820 src/language/stats/examine.q:1164 -#: src/language/stats/reliability.q:693 -msgid "Cases" -msgstr "" - -#: src/language/stats/crosstabs.q:821 src/language/stats/examine.q:1103 -#: src/language/stats/frequencies.q:1035 src/language/stats/reliability.q:696 -msgid "Valid" -msgstr "" - -#: src/language/stats/crosstabs.q:831 src/language/stats/examine.q:1179 +#: src/language/stats/crosstabs.q:823 src/language/stats/examine.q:1179 #: src/language/stats/frequencies.q:815 msgid "Percent" msgstr "" -#: src/language/stats/crosstabs.q:1109 +#: src/language/stats/crosstabs.q:1101 msgid "count" msgstr "" -#: src/language/stats/crosstabs.q:1110 +#: src/language/stats/crosstabs.q:1102 msgid "row %" msgstr "" -#: src/language/stats/crosstabs.q:1111 +#: src/language/stats/crosstabs.q:1103 msgid "column %" msgstr "" -#: src/language/stats/crosstabs.q:1112 +#: src/language/stats/crosstabs.q:1104 msgid "total %" msgstr "" -#: src/language/stats/crosstabs.q:1113 +#: src/language/stats/crosstabs.q:1105 msgid "expected" msgstr "" -#: src/language/stats/crosstabs.q:1114 +#: src/language/stats/crosstabs.q:1106 msgid "residual" msgstr "" -#: src/language/stats/crosstabs.q:1115 +#: src/language/stats/crosstabs.q:1107 msgid "std. resid." msgstr "" -#: src/language/stats/crosstabs.q:1116 +#: src/language/stats/crosstabs.q:1108 msgid "adj. resid." msgstr "" -#: src/language/stats/crosstabs.q:1210 +#: src/language/stats/crosstabs.q:1202 msgid "Chi-square tests." msgstr "" -#: src/language/stats/crosstabs.q:1217 -msgid "Asymp. Sig. (2-sided)" -msgstr "" - -#: src/language/stats/crosstabs.q:1219 -msgid "Exact Sig. (2-sided)" -msgstr "" - -#: src/language/stats/crosstabs.q:1221 -msgid "Exact Sig. (1-sided)" -msgstr "" - -#: src/language/stats/crosstabs.q:1236 +#: src/language/stats/crosstabs.q:1228 msgid "Symmetric measures." msgstr "" -#: src/language/stats/crosstabs.q:1242 src/language/stats/crosstabs.q:1290 +#: src/language/stats/crosstabs.q:1234 src/language/stats/crosstabs.q:1282 msgid "Asymp. Std. Error" msgstr "" -#: src/language/stats/crosstabs.q:1243 src/language/stats/crosstabs.q:1291 +#: src/language/stats/crosstabs.q:1235 src/language/stats/crosstabs.q:1283 msgid "Approx. T" msgstr "" -#: src/language/stats/crosstabs.q:1244 src/language/stats/crosstabs.q:1292 +#: src/language/stats/crosstabs.q:1236 src/language/stats/crosstabs.q:1284 msgid "Approx. Sig." msgstr "" -#: src/language/stats/crosstabs.q:1258 +#: src/language/stats/crosstabs.q:1250 msgid "Risk estimate." msgstr "" -#: src/language/stats/crosstabs.q:1262 +#: src/language/stats/crosstabs.q:1254 #, c-format msgid "95%% Confidence Interval" msgstr "" -#: src/language/stats/crosstabs.q:1265 src/language/stats/t-test.q:756 +#: src/language/stats/crosstabs.q:1257 src/language/stats/t-test.q:756 #: src/language/stats/t-test.q:920 src/language/stats/t-test.q:1013 msgid "Lower" msgstr "" -#: src/language/stats/crosstabs.q:1266 src/language/stats/t-test.q:757 +#: src/language/stats/crosstabs.q:1258 src/language/stats/t-test.q:757 #: src/language/stats/t-test.q:921 src/language/stats/t-test.q:1014 msgid "Upper" msgstr "" -#: src/language/stats/crosstabs.q:1283 +#: src/language/stats/crosstabs.q:1275 msgid "Directional measures." msgstr "" -#: src/language/stats/crosstabs.q:1708 +#: src/language/stats/crosstabs.q:1702 msgid "Pearson Chi-Square" msgstr "" -#: src/language/stats/crosstabs.q:1709 +#: src/language/stats/crosstabs.q:1703 msgid "Likelihood Ratio" msgstr "" -#: src/language/stats/crosstabs.q:1710 +#: src/language/stats/crosstabs.q:1704 msgid "Fisher's Exact Test" msgstr "" -#: src/language/stats/crosstabs.q:1711 +#: src/language/stats/crosstabs.q:1705 msgid "Continuity Correction" msgstr "" -#: src/language/stats/crosstabs.q:1712 +#: src/language/stats/crosstabs.q:1706 msgid "Linear-by-Linear Association" msgstr "" -#: src/language/stats/crosstabs.q:1747 src/language/stats/crosstabs.q:1822 -#: src/language/stats/crosstabs.q:1887 +#: src/language/stats/crosstabs.q:1741 src/language/stats/crosstabs.q:1816 +#: src/language/stats/crosstabs.q:1881 msgid "N of Valid Cases" msgstr "" -#: src/language/stats/crosstabs.q:1766 src/language/stats/crosstabs.q:1905 +#: src/language/stats/crosstabs.q:1760 src/language/stats/crosstabs.q:1899 msgid "Nominal by Nominal" msgstr "" -#: src/language/stats/crosstabs.q:1767 src/language/stats/crosstabs.q:1906 +#: src/language/stats/crosstabs.q:1761 src/language/stats/crosstabs.q:1900 msgid "Ordinal by Ordinal" msgstr "" -#: src/language/stats/crosstabs.q:1768 +#: src/language/stats/crosstabs.q:1762 msgid "Interval by Interval" msgstr "" -#: src/language/stats/crosstabs.q:1769 +#: src/language/stats/crosstabs.q:1763 msgid "Measure of Agreement" msgstr "" -#: src/language/stats/crosstabs.q:1775 +#: src/language/stats/crosstabs.q:1769 msgid "Cramer's V" msgstr "" -#: src/language/stats/crosstabs.q:1776 +#: src/language/stats/crosstabs.q:1770 msgid "Contingency Coefficient" msgstr "" -#: src/language/stats/crosstabs.q:1777 +#: src/language/stats/crosstabs.q:1771 msgid "Kendall's tau-b" msgstr "" -#: src/language/stats/crosstabs.q:1778 +#: src/language/stats/crosstabs.q:1772 msgid "Kendall's tau-c" msgstr "" -#: src/language/stats/crosstabs.q:1780 +#: src/language/stats/crosstabs.q:1774 msgid "Spearman Correlation" msgstr "" -#: src/language/stats/crosstabs.q:1781 +#: src/language/stats/crosstabs.q:1775 msgid "Pearson's R" msgstr "" -#: src/language/stats/crosstabs.q:1860 +#: src/language/stats/crosstabs.q:1854 #, c-format msgid "Odds Ratio for %s (%g / %g)" msgstr "" -#: src/language/stats/crosstabs.q:1863 +#: src/language/stats/crosstabs.q:1857 #, c-format msgid "Odds Ratio for %s (%.*s / %.*s)" msgstr "" -#: src/language/stats/crosstabs.q:1871 +#: src/language/stats/crosstabs.q:1865 #, c-format msgid "For cohort %s = %g" msgstr "" -#: src/language/stats/crosstabs.q:1874 +#: src/language/stats/crosstabs.q:1868 #, c-format msgid "For cohort %s = %.*s" msgstr "" -#: src/language/stats/crosstabs.q:1907 +#: src/language/stats/crosstabs.q:1901 msgid "Nominal by Interval" msgstr "" -#: src/language/stats/crosstabs.q:1913 +#: src/language/stats/crosstabs.q:1907 msgid "Goodman and Kruskal tau" msgstr "" -#: src/language/stats/crosstabs.q:1914 +#: src/language/stats/crosstabs.q:1908 msgid "Uncertainty Coefficient" msgstr "" -#: src/language/stats/crosstabs.q:1915 +#: src/language/stats/crosstabs.q:1909 msgid "Somers' d" msgstr "" -#: src/language/stats/crosstabs.q:1921 +#: src/language/stats/crosstabs.q:1915 msgid "Symmetric" msgstr "" -#: src/language/stats/crosstabs.q:1922 src/language/stats/crosstabs.q:1923 +#: src/language/stats/crosstabs.q:1916 src/language/stats/crosstabs.q:1917 #, c-format msgid "%s Dependent" msgstr "" -#: src/language/stats/examine.q:357 +#: src/language/stats/examine.q:356 msgid "Not creating NP plot because data set is empty." msgstr "" @@ -4855,15 +5300,6 @@ msgstr "" msgid "%s and %s are mutually exclusive" msgstr "" -#: src/language/stats/examine.q:1159 src/language/stats/reliability.q:670 -msgid "Case Processing Summary" -msgstr "" - -#: src/language/stats/examine.q:1449 src/language/stats/oneway.q:394 -#, c-format -msgid "%g%% Confidence Interval for Mean" -msgstr "" - #: src/language/stats/examine.q:1464 msgid "5% Trimmed Mean" msgstr "" @@ -4872,11 +5308,6 @@ msgstr "" msgid "Interquartile Range" msgstr "" -#: src/language/stats/examine.q:1635 src/language/stats/oneway.q:404 -#: src/ui/gui/descriptives.ui:8 src/ui/gui/examine.ui:319 -msgid "Descriptives" -msgstr "" - #: src/language/stats/examine.q:1821 msgid "Highest" msgstr "" @@ -4922,7 +5353,7 @@ msgstr "" #: src/language/stats/frequencies.q:703 msgid "`)' expected after GROUPED interval list." -msgstr "" +msgstr "‘)’ expected after GROUPED interval list." #: src/language/stats/frequencies.q:723 #, c-format @@ -4965,132 +5396,6 @@ msgstr "" msgid "Omitting pie chart for %s, which has over 50 unique values." msgstr "" -#: src/language/stats/glm.q:247 -msgid "Multivariate GLM not yet supported" -msgstr "" - -#: src/language/stats/means.q:100 -msgid "Missing required subcommand TABLES." -msgstr "" - -#: src/language/stats/means.q:134 -msgid "TABLES subcommand may not appear more than once." -msgstr "" - -#: src/language/stats/npar.q:111 -msgid "NPAR subcommand not currently implemented." -msgstr "" - -#: src/language/stats/npar.q:256 -#, c-format -msgid "" -"The specified value of HI (%d) is lower than the specified value of LO (%d)" -msgstr "" - -#: src/language/stats/npar.q:311 -#, c-format -msgid "" -"%d expected values were given, but the specified range (%d-%d) requires " -"exactly %d values." -msgstr "" - -#: src/language/stats/npar.q:453 src/language/stats/t-test.q:380 -#, c-format -msgid "" -"PAIRED was specified but the number of variables preceding WITH (%zu) did " -"not match the number following (%zu)." -msgstr "" - -#: src/language/stats/oneway.q:170 -msgid "Number of contrast coefficients must equal the number of groups" -msgstr "" - -#: src/language/stats/oneway.q:179 -#, c-format -msgid "Coefficients for contrast %zu do not total zero" -msgstr "" - -#: src/language/stats/oneway.q:242 -#, c-format -msgid "`%s' is not a variable name" -msgstr "" - -#: src/language/stats/oneway.q:274 src/language/stats/regression.q:283 -msgid "Sum of Squares" -msgstr "" - -#: src/language/stats/oneway.q:276 src/language/stats/regression.q:285 -msgid "Mean Square" -msgstr "" - -#: src/language/stats/oneway.q:277 src/language/stats/regression.q:286 -#: src/language/stats/t-test.q:749 -msgid "F" -msgstr "" - -#: src/language/stats/oneway.q:278 src/language/stats/oneway.q:535 -#: src/language/stats/regression.q:201 src/language/stats/regression.q:287 -msgid "Significance" -msgstr "" - -#: src/language/stats/oneway.q:300 -msgid "Between Groups" -msgstr "" - -#: src/language/stats/oneway.q:301 -msgid "Within Groups" -msgstr "" - -#: src/language/stats/oneway.q:345 src/language/stats/regression.q:312 -msgid "ANOVA" -msgstr "" - -#: src/language/stats/oneway.q:532 -msgid "Levene Statistic" -msgstr "" - -#: src/language/stats/oneway.q:533 -msgid "df1" -msgstr "" - -#: src/language/stats/oneway.q:534 -msgid "df2" -msgstr "" - -#: src/language/stats/oneway.q:537 -msgid "Test of Homogeneity of Variances" -msgstr "" - -#: src/language/stats/oneway.q:603 -msgid "Contrast Coefficients" -msgstr "" - -#: src/language/stats/oneway.q:605 src/language/stats/oneway.q:681 -msgid "Contrast" -msgstr "" - -#: src/language/stats/oneway.q:679 -msgid "Contrast Tests" -msgstr "" - -#: src/language/stats/oneway.q:682 -msgid "Value of Contrast" -msgstr "" - -#: src/language/stats/oneway.q:684 src/language/stats/regression.q:200 -#: src/language/stats/t-test.q:751 src/language/stats/t-test.q:922 -#: src/language/stats/t-test.q:1009 -msgid "t" -msgstr "" - -#: src/language/stats/oneway.q:730 -msgid "Assume equal variances" -msgstr "" - -#: src/language/stats/oneway.q:734 -msgid "Does not assume equal" -msgstr "" - #: src/language/stats/rank.q:220 #, c-format msgid "%s of %s by %s" @@ -5199,87 +5504,14 @@ msgid "" "meaningless." msgstr "" -#: src/language/stats/regression.q:891 +#: src/language/stats/regression.q:940 msgid "REGRESSION requires numeric variables." msgstr "" -#: src/language/stats/regression.q:962 +#: src/language/stats/regression.q:1015 msgid "No valid data found. This command was skipped." msgstr "" -#: src/language/stats/reliability.q:421 -msgid "Reliability Statistics" -msgstr "" - -#: src/language/stats/reliability.q:462 -msgid "Item-Total Statistics" -msgstr "" - -#: src/language/stats/reliability.q:484 -msgid "Scale Mean if Item Deleted" -msgstr "" - -#: src/language/stats/reliability.q:487 -msgid "Scale Variance if Item Deleted" -msgstr "" - -#: src/language/stats/reliability.q:490 -msgid "Corrected Item-Total Correlation" -msgstr "" - -#: src/language/stats/reliability.q:493 -msgid "Cronbach's Alpha if Item Deleted" -msgstr "" - -#: src/language/stats/reliability.q:543 src/language/stats/reliability.q:562 -msgid "Cronbach's Alpha" -msgstr "" - -#: src/language/stats/reliability.q:546 src/language/stats/reliability.q:571 -#: src/language/stats/reliability.q:582 -msgid "N of Items" -msgstr "" - -#: src/language/stats/reliability.q:565 -msgid "Part 1" -msgstr "" - -#: src/language/stats/reliability.q:576 -msgid "Part 2" -msgstr "" - -#: src/language/stats/reliability.q:587 -msgid "Total N of Items" -msgstr "" - -#: src/language/stats/reliability.q:590 -msgid "Correlation Between Forms" -msgstr "" - -#: src/language/stats/reliability.q:594 -msgid "Spearman-Brown Coefficient" -msgstr "" - -#: src/language/stats/reliability.q:597 -msgid "Equal Length" -msgstr "" - -#: src/language/stats/reliability.q:600 -msgid "Unequal Length" -msgstr "" - -#: src/language/stats/reliability.q:604 -msgid "Guttman Split-Half Coefficient" -msgstr "" - -#: src/language/stats/reliability.q:699 -msgid "Excluded" -msgstr "" - -#: src/language/stats/reliability.q:707 -msgid "%" -msgstr "" - #: src/language/stats/t-test.q:190 msgid "Exactly one of TESTVAL, GROUPS and PAIRS subcommands must be specified." msgstr "" @@ -5331,10 +5563,6 @@ msgstr "" msgid "t-test for Equality of Means" msgstr "" -#: src/language/stats/t-test.q:750 src/language/stats/t-test.q:1103 -msgid "Sig." -msgstr "" - #: src/language/stats/t-test.q:754 src/language/stats/t-test.q:1012 msgid "Mean Difference" msgstr "" @@ -5451,9 +5679,69 @@ msgid "" "The last case (%ld) to list is less than 1. The value is being reset to 1." msgstr "" -#: src/language/data-io/list.q:119 -#, c-format -msgid "The step value %ld is less than 1. The value is being reset to 1." +#: src/language/data-io/list.q:119 +#, c-format +msgid "The step value %ld is less than 1. The value is being reset to 1." +msgstr "" + +#: src/ui/gui/aggregate.ui:7 +msgid "Aggregate Data" +msgstr "" + +#: src/ui/gui/aggregate.ui:100 +msgid "_Break variable(s)" +msgstr "" + +#: src/ui/gui/aggregate.ui:136 +msgid "Variable Name: " +msgstr "" + +#: src/ui/gui/aggregate.ui:161 +msgid "Variable Label: " +msgstr "" + +#: src/ui/gui/aggregate.ui:190 +msgid "Function: " +msgstr "" + +#: src/ui/gui/aggregate.ui:253 +msgid "Argument 1: " +msgstr "" + +#: src/ui/gui/aggregate.ui:282 +msgid "Argument 2: " +msgstr "" + +#: src/ui/gui/aggregate.ui:328 +msgid "Aggregated variables" +msgstr "" + +#: src/ui/gui/aggregate.ui:362 +msgid "_Add aggregated variables to the active dataset" +msgstr "" + +#: src/ui/gui/aggregate.ui:376 +msgid "_Replace the current dataset with the aggregated variables" +msgstr "" + +#: src/ui/gui/aggregate.ui:391 +msgid "_Write a new data file containing only the aggregated variables" +msgstr "" + +#: src/ui/gui/aggregate.ui:428 +msgid "label" +msgstr "" + +#: src/ui/gui/aggregate.ui:472 +msgid "File is _already sorted on break variable(s)" +msgstr "" + +#: src/ui/gui/aggregate.ui:487 +msgid "Sort file before a_ggregating" +msgstr "" + +#: src/ui/gui/aggregate.ui:508 +msgid "Options for very large datasets" msgstr "" #: src/ui/gui/binomial.ui:57 src/ui/gui/chi-square.ui:57 @@ -5476,6 +5764,43 @@ msgstr "" msgid "Test _Proportion:" msgstr "" +#: src/ui/gui/compute.ui:8 +msgid "Compute Variable" +msgstr "" + +#: src/ui/gui/compute.ui:41 +msgid "Target Variable:" +msgstr "" + +#: src/ui/gui/compute.ui:70 +msgid "Type & Label" +msgstr "" + +#: src/ui/gui/compute.ui:117 +msgid "=" +msgstr "" + +#: src/ui/gui/compute.ui:171 +msgid "Numeric Expressions:" +msgstr "" + +#: src/ui/gui/compute.ui:233 +msgid "Functions:" +msgstr "" + +#: src/ui/gui/compute.ui:298 src/ui/gui/recode.ui:741 +#: src/ui/gui/select-cases.ui:378 +msgid "If..." +msgstr "" + +#: src/ui/gui/compute.ui:351 +msgid "Compute Variable: Type and Label" +msgstr "" + +#: src/ui/gui/compute.ui:386 +msgid "Use expression as label" +msgstr "" + #: src/ui/gui/correlation.ui:7 msgid "Bivariate Correlations" msgstr "" @@ -5680,91 +6005,107 @@ msgstr "" msgid "Missing Values" msgstr "" -#: src/ui/gui/factor.ui:21 +#: src/ui/gui/goto-case.ui:8 +msgid "Goto Case" +msgstr "" + +#: src/ui/gui/goto-case.ui:26 +msgid "Goto Case Number:" +msgstr "" + +#: src/ui/gui/factor.ui:22 +msgid "Principal Components Analysis" +msgstr "" + +#: src/ui/gui/factor.ui:26 +msgid "Principal Axis Factoring" +msgstr "" + +#: src/ui/gui/factor.ui:29 msgid "Factor Analysis" msgstr "" -#: src/ui/gui/factor.ui:47 +#: src/ui/gui/factor.ui:55 msgid "_Descriptives..." msgstr "" -#: src/ui/gui/factor.ui:60 +#: src/ui/gui/factor.ui:68 msgid "_Extraction..." msgstr "" -#: src/ui/gui/factor.ui:74 +#: src/ui/gui/factor.ui:82 msgid "_Rotations..." msgstr "" -#: src/ui/gui/factor.ui:192 +#: src/ui/gui/factor.ui:200 msgid "Factor Analysis: Extraction" msgstr "" -#: src/ui/gui/factor.ui:216 +#: src/ui/gui/factor.ui:224 msgid "Method: " msgstr "" -#: src/ui/gui/factor.ui:266 +#: src/ui/gui/factor.ui:274 msgid "Correlation matrix" msgstr "" -#: src/ui/gui/factor.ui:280 +#: src/ui/gui/factor.ui:288 msgid "Covariance matrix" msgstr "" -#: src/ui/gui/factor.ui:300 +#: src/ui/gui/factor.ui:308 msgid "Analyse" msgstr "" -#: src/ui/gui/factor.ui:324 +#: src/ui/gui/factor.ui:332 msgid "Unrotatated factor solution" msgstr "" -#: src/ui/gui/factor.ui:338 +#: src/ui/gui/factor.ui:346 msgid "Scree plot" msgstr "" -#: src/ui/gui/factor.ui:357 src/ui/gui/roc.ui:286 +#: src/ui/gui/factor.ui:365 src/ui/gui/roc.ui:286 msgid "Display" msgstr "" -#: src/ui/gui/factor.ui:430 +#: src/ui/gui/factor.ui:438 msgid "Number of factors:" msgstr "" -#: src/ui/gui/factor.ui:460 +#: src/ui/gui/factor.ui:468 msgid "Extract" msgstr "" -#: src/ui/gui/factor.ui:475 src/ui/gui/factor.ui:665 +#: src/ui/gui/factor.ui:483 src/ui/gui/factor.ui:673 msgid "Maximum iterations for convergence:" msgstr "" -#: src/ui/gui/factor.ui:538 +#: src/ui/gui/factor.ui:546 msgid "Factor Analysis: Rotation" msgstr "" -#: src/ui/gui/factor.ui:571 +#: src/ui/gui/factor.ui:579 msgid "_None" msgstr "" -#: src/ui/gui/factor.ui:582 +#: src/ui/gui/factor.ui:590 msgid "_Varimax" msgstr "" -#: src/ui/gui/factor.ui:598 +#: src/ui/gui/factor.ui:606 msgid "_Quartimax" msgstr "" -#: src/ui/gui/factor.ui:614 +#: src/ui/gui/factor.ui:622 msgid "_Equimax" msgstr "" -#: src/ui/gui/factor.ui:637 +#: src/ui/gui/factor.ui:645 msgid "Method" msgstr "" -#: src/ui/gui/factor.ui:648 +#: src/ui/gui/factor.ui:656 msgid "_Display rotated solution" msgstr "" @@ -5922,7 +6263,7 @@ msgstr "" msgid "Dependent _Variable(s):" msgstr "" -#: src/ui/gui/oneway.ui:184 src/ui/gui/data-editor.ui:329 +#: src/ui/gui/oneway.ui:184 src/ui/gui/data-editor.ui:332 msgid "_Descriptives" msgstr "" @@ -5975,174 +6316,21 @@ msgid "Name Variable:" msgstr "" #: src/ui/gui/psppire.ui:383 -msgid "Split File" -msgstr "" - -#: src/ui/gui/psppire.ui:443 -msgid "Analyze all cases. Do not create groups." -msgstr "Analyse all cases. Do not create groups." - -#: src/ui/gui/psppire.ui:459 -msgid "Compare groups." -msgstr "" - -#: src/ui/gui/psppire.ui:475 -msgid "Organize output by groups." -msgstr "Organise output by groups." - -#: src/ui/gui/psppire.ui:533 -msgid "Groups based on:" -msgstr "" - -#: src/ui/gui/psppire.ui:592 -msgid "Sort the file by grouping variables." -msgstr "" - -#: src/ui/gui/psppire.ui:609 -msgid "File is already sorted." -msgstr "" - -#: src/ui/gui/psppire.ui:662 -msgid "Current Status : " -msgstr "" - -#: src/ui/gui/psppire.ui:673 -msgid "Analysis by groups is off" -msgstr "" - -#: src/ui/gui/psppire.ui:709 -msgid "Compute Variable" -msgstr "" - -#: src/ui/gui/psppire.ui:742 -msgid "Target Variable:" -msgstr "" - -#: src/ui/gui/psppire.ui:771 -msgid "Type & Label" -msgstr "" - -#: src/ui/gui/psppire.ui:818 -msgid "=" -msgstr "" - -#: src/ui/gui/psppire.ui:872 -msgid "Numeric Expressions:" -msgstr "" - -#: src/ui/gui/psppire.ui:934 -msgid "Functions:" -msgstr "" - -#: src/ui/gui/psppire.ui:999 src/ui/gui/psppire.ui:1422 -#: src/ui/gui/recode.ui:741 -msgid "If..." -msgstr "" - -#: src/ui/gui/psppire.ui:1052 -msgid "Select Cases" -msgstr "" - -#: src/ui/gui/psppire.ui:1240 -msgid "Use filter variable" -msgstr "" - -#: src/ui/gui/psppire.ui:1299 -msgid "Based on time or case range" -msgstr "" - -#: src/ui/gui/psppire.ui:1311 -msgid "Range..." -msgstr "" - -#: src/ui/gui/psppire.ui:1355 -msgid "Random sample of cases" -msgstr "" - -#: src/ui/gui/psppire.ui:1368 -msgid "Sample..." -msgstr "" - -#: src/ui/gui/psppire.ui:1410 -msgid "If condition is satisfied" -msgstr "" - -#: src/ui/gui/psppire.ui:1462 -msgid "All Cases" -msgstr "" - -#: src/ui/gui/psppire.ui:1477 -msgid "Select" -msgstr "" - -#: src/ui/gui/psppire.ui:1504 -msgid "Filtered" -msgstr "" - -#: src/ui/gui/psppire.ui:1520 -msgid "Deleted" -msgstr "" - -#: src/ui/gui/psppire.ui:1543 -msgid "Unselected Cases Are" -msgstr "" - -#: src/ui/gui/psppire.ui:1585 msgid "Data File Comments" msgstr "" -#: src/ui/gui/psppire.ui:1609 +#: src/ui/gui/psppire.ui:407 msgid "Comments:" msgstr "" -#: src/ui/gui/psppire.ui:1650 +#: src/ui/gui/psppire.ui:448 msgid "Display comments in output" msgstr "" -#: src/ui/gui/psppire.ui:1669 +#: src/ui/gui/psppire.ui:467 msgid "Column Number: 0" msgstr "" -#: src/ui/gui/psppire.ui:1703 -msgid "Select Cases: Range" -msgstr "" - -#: src/ui/gui/psppire.ui:1750 -msgid "First case" -msgstr "" - -#: src/ui/gui/psppire.ui:1763 -msgid "Last case" -msgstr "" - -#: src/ui/gui/psppire.ui:1776 -msgid "Observation" -msgstr "" - -#: src/ui/gui/psppire.ui:1808 -msgid "Compute Variable: Type and Label" -msgstr "" - -#: src/ui/gui/psppire.ui:1843 -msgid "Use expression as label" -msgstr "" - -#: src/ui/gui/psppire.ui:2088 -msgid "Goto Case" -msgstr "" - -#: src/ui/gui/psppire.ui:2106 -msgid "Goto Case Number:" -msgstr "" - -#: src/ui/gui/psppire.ui:2149 -msgid "Select Cases: Random Sample" -msgstr "" - -#: src/ui/gui/psppire.ui:2247 -msgid "Sample Size" -msgstr "" - #: src/ui/gui/rank.ui:8 msgid "Rank Cases" msgstr "" @@ -6271,6 +6459,42 @@ msgstr "" msgid "Sort Order" msgstr "" +#: src/ui/gui/split-file.ui:8 +msgid "Split File" +msgstr "" + +#: src/ui/gui/split-file.ui:68 +msgid "Analyze all cases. Do not create groups." +msgstr "Analyse all cases. Do not create groups." + +#: src/ui/gui/split-file.ui:84 +msgid "Compare groups." +msgstr "" + +#: src/ui/gui/split-file.ui:100 +msgid "Organize output by groups." +msgstr "Organise output by groups." + +#: src/ui/gui/split-file.ui:158 +msgid "Groups based on:" +msgstr "" + +#: src/ui/gui/split-file.ui:217 +msgid "Sort the file by grouping variables." +msgstr "" + +#: src/ui/gui/split-file.ui:234 +msgid "File is already sorted." +msgstr "" + +#: src/ui/gui/split-file.ui:287 +msgid "Current Status : " +msgstr "" + +#: src/ui/gui/split-file.ui:298 +msgid "Analysis by groups is off" +msgstr "" + #: src/ui/gui/recode.ui:185 src/ui/gui/recode.ui:467 msgid "System Missing" msgstr "" @@ -6316,8 +6540,8 @@ msgid "New Value" msgstr "" #: src/ui/gui/recode.ui:596 -msgid "Convert numeric strings to numbers ('5' -> 5)" -msgstr "" +msgid "Convert numeric strings to numbers (`5' -> 5)" +msgstr "Convert numeric strings to numbers (‘5’ -> 5)" #: src/ui/gui/recode.ui:614 msgid "Output variables are strings" @@ -6375,22 +6599,26 @@ msgstr "" msgid "Regression: Statistics" msgstr "" -#: src/ui/gui/reliability.ui:27 +#: src/ui/gui/reliability.ui:26 msgid "Reliability Analysis" msgstr "" -#: src/ui/gui/reliability.ui:114 +#: src/ui/gui/reliability.ui:124 msgid "_Items:" msgstr "" -#: src/ui/gui/reliability.ui:136 +#: src/ui/gui/reliability.ui:141 msgid "Model:\t" msgstr "" -#: src/ui/gui/reliability.ui:175 +#: src/ui/gui/reliability.ui:180 msgid "Variables in first split:" msgstr "" +#: src/ui/gui/reliability.ui:217 +msgid "Show descriptives for scale if _item is deleted" +msgstr "" + #: src/ui/gui/roc.ui:115 msgid "_Test Variable:" msgstr "" @@ -6419,6 +6647,78 @@ msgstr "" msgid "_Coordinate points of the ROC Curve" msgstr "" +#: src/ui/gui/select-cases.ui:8 +msgid "Select Cases" +msgstr "" + +#: src/ui/gui/select-cases.ui:196 +msgid "Use filter variable" +msgstr "" + +#: src/ui/gui/select-cases.ui:255 +msgid "Based on time or case range" +msgstr "" + +#: src/ui/gui/select-cases.ui:267 +msgid "Range..." +msgstr "" + +#: src/ui/gui/select-cases.ui:311 +msgid "Random sample of cases" +msgstr "" + +#: src/ui/gui/select-cases.ui:324 +msgid "Sample..." +msgstr "" + +#: src/ui/gui/select-cases.ui:366 +msgid "If condition is satisfied" +msgstr "" + +#: src/ui/gui/select-cases.ui:418 +msgid "All Cases" +msgstr "" + +#: src/ui/gui/select-cases.ui:433 +msgid "Select" +msgstr "" + +#: src/ui/gui/select-cases.ui:460 +msgid "Filtered" +msgstr "" + +#: src/ui/gui/select-cases.ui:476 +msgid "Deleted" +msgstr "" + +#: src/ui/gui/select-cases.ui:499 +msgid "Unselected Cases Are" +msgstr "" + +#: src/ui/gui/select-cases.ui:541 +msgid "Select Cases: Range" +msgstr "" + +#: src/ui/gui/select-cases.ui:590 +msgid "First case" +msgstr "" + +#: src/ui/gui/select-cases.ui:603 +msgid "Last case" +msgstr "" + +#: src/ui/gui/select-cases.ui:616 +msgid "Observation" +msgstr "" + +#: src/ui/gui/select-cases.ui:648 +msgid "Select Cases: Random Sample" +msgstr "" + +#: src/ui/gui/select-cases.ui:746 +msgid "Sample Size" +msgstr "" + #: src/ui/gui/t-test.ui:8 msgid "Independent-Samples T Test" msgstr "" @@ -6482,117 +6782,105 @@ msgid "" "below how much of the file should actually be imported." msgstr "" -#: src/ui/gui/text-data-import.ui:52 +#: src/ui/gui/text-data-import.ui:95 msgid "All cases" msgstr "" -#: src/ui/gui/text-data-import.ui:71 src/ui/gui/text-data-import.ui:128 -msgid "Only first " -msgstr "" - -#: src/ui/gui/text-data-import.ui:106 -msgid " cases" -msgstr "" - -#: src/ui/gui/text-data-import.ui:162 -msgid "% of file (approximately)" -msgstr "" - -#: src/ui/gui/text-data-import.ui:183 +#: src/ui/gui/text-data-import.ui:116 msgid "Amount to Import" msgstr "" -#: src/ui/gui/text-data-import.ui:202 +#: src/ui/gui/text-data-import.ui:135 msgid "Select Data to Import" msgstr "" -#: src/ui/gui/text-data-import.ui:213 +#: src/ui/gui/text-data-import.ui:146 msgid "Select the first line of the data file that contains data." msgstr "" -#: src/ui/gui/text-data-import.ui:241 +#: src/ui/gui/text-data-import.ui:174 msgid "Line above selected line contains variable names" msgstr "" -#: src/ui/gui/text-data-import.ui:259 +#: src/ui/gui/text-data-import.ui:192 msgid "Choose Separators" msgstr "" -#: src/ui/gui/text-data-import.ui:305 +#: src/ui/gui/text-data-import.ui:238 msgid "C_ustom" msgstr "" -#: src/ui/gui/text-data-import.ui:320 +#: src/ui/gui/text-data-import.ui:253 msgid "Slas_h (/)" msgstr "" -#: src/ui/gui/text-data-import.ui:337 +#: src/ui/gui/text-data-import.ui:270 msgid "Semicolo_n (;)" msgstr "" -#: src/ui/gui/text-data-import.ui:354 +#: src/ui/gui/text-data-import.ui:287 msgid "P_ipe (|)" msgstr "" -#: src/ui/gui/text-data-import.ui:369 +#: src/ui/gui/text-data-import.ui:302 msgid "H_yphen (-)" msgstr "" -#: src/ui/gui/text-data-import.ui:386 +#: src/ui/gui/text-data-import.ui:319 msgid "Co_mma (,)" msgstr "" -#: src/ui/gui/text-data-import.ui:403 +#: src/ui/gui/text-data-import.ui:336 msgid "_Colon (:)" msgstr "" -#: src/ui/gui/text-data-import.ui:418 +#: src/ui/gui/text-data-import.ui:351 msgid "Ban_g (!)" msgstr "" -#: src/ui/gui/text-data-import.ui:433 +#: src/ui/gui/text-data-import.ui:366 msgid "Ta_b" msgstr "" -#: src/ui/gui/text-data-import.ui:448 +#: src/ui/gui/text-data-import.ui:381 msgid "_Space" msgstr "" -#: src/ui/gui/text-data-import.ui:465 +#: src/ui/gui/text-data-import.ui:398 msgid "Separators" msgstr "" -#: src/ui/gui/text-data-import.ui:495 +#: src/ui/gui/text-data-import.ui:428 msgid "Doubled quote mark treated as escape" msgstr "" -#: src/ui/gui/text-data-import.ui:524 +#: src/ui/gui/text-data-import.ui:457 msgid "Quote separator characters with" msgstr "" -#: src/ui/gui/text-data-import.ui:544 +#: src/ui/gui/text-data-import.ui:477 msgid "Quoting" msgstr "" -#: src/ui/gui/text-data-import.ui:592 +#: src/ui/gui/text-data-import.ui:525 msgid "Fields Preview" msgstr "" -#: src/ui/gui/text-data-import.ui:607 +#: src/ui/gui/text-data-import.ui:540 msgid "Adjust Variable Formats" msgstr "" -#: src/ui/gui/text-data-import.ui:618 +#: src/ui/gui/text-data-import.ui:551 msgid "" "Check the data formats displayed below and fix any that are incorrect. You " "may set other variable properties now or later." msgstr "" -#: src/ui/gui/text-data-import.ui:662 +#: src/ui/gui/text-data-import.ui:595 msgid "Variables" msgstr "" -#: src/ui/gui/text-data-import.ui:705 +#: src/ui/gui/text-data-import.ui:638 msgid "Data Preview" msgstr "" @@ -6664,306 +6952,298 @@ msgstr "" msgid "Variable Information:" msgstr "" -#: src/ui/gui/data-editor.ui:9 -msgid "Sort Ascending" -msgstr "" - -#: src/ui/gui/data-editor.ui:15 -msgid "Sort Descending" -msgstr "" - -#: src/ui/gui/data-editor.ui:26 src/ui/gui/output-viewer.ui:9 +#: src/ui/gui/data-editor.ui:23 src/ui/gui/output-viewer.ui:9 #: src/ui/gui/syntax-editor.ui:10 msgid "_File" msgstr "" -#: src/ui/gui/data-editor.ui:38 src/ui/gui/syntax-editor.ui:22 +#: src/ui/gui/data-editor.ui:35 src/ui/gui/syntax-editor.ui:22 #: src/ui/gui/syntax-editor.ui:40 msgid "_Syntax" msgstr "" -#: src/ui/gui/data-editor.ui:44 src/ui/gui/data-editor.ui:218 -#: src/ui/gui/data-editor.ui:230 src/ui/gui/syntax-editor.ui:28 +#: src/ui/gui/data-editor.ui:41 src/ui/gui/data-editor.ui:214 +#: src/ui/gui/data-editor.ui:226 src/ui/gui/syntax-editor.ui:28 #: src/ui/gui/syntax-editor.ui:46 msgid "_Data" msgstr "" -#: src/ui/gui/data-editor.ui:56 +#: src/ui/gui/data-editor.ui:53 msgid "_Import Delimited Text Data" msgstr "" -#: src/ui/gui/data-editor.ui:75 +#: src/ui/gui/data-editor.ui:72 msgid "D_isplay Data File Information" msgstr "" -#: src/ui/gui/data-editor.ui:82 +#: src/ui/gui/data-editor.ui:79 msgid "Working File" msgstr "" -#: src/ui/gui/data-editor.ui:88 +#: src/ui/gui/data-editor.ui:85 msgid "External File" msgstr "" -#: src/ui/gui/data-editor.ui:94 +#: src/ui/gui/data-editor.ui:91 msgid "Recently Used Da_ta" msgstr "" -#: src/ui/gui/data-editor.ui:100 +#: src/ui/gui/data-editor.ui:97 msgid "Recently Used _Files" msgstr "" -#: src/ui/gui/data-editor.ui:112 src/ui/gui/output-viewer.ui:28 +#: src/ui/gui/data-editor.ui:109 src/ui/gui/output-viewer.ui:28 #: src/ui/gui/syntax-editor.ui:70 msgid "_Edit" msgstr "" -#: src/ui/gui/data-editor.ui:118 +#: src/ui/gui/data-editor.ui:115 msgid "Insert Variable" msgstr "" -#: src/ui/gui/data-editor.ui:119 +#: src/ui/gui/data-editor.ui:116 msgid "Create a new variable at the current position" msgstr "" -#: src/ui/gui/data-editor.ui:126 +#: src/ui/gui/data-editor.ui:123 msgid "Insert Cases" msgstr "" -#: src/ui/gui/data-editor.ui:127 +#: src/ui/gui/data-editor.ui:124 msgid "Create a new case at the current position" msgstr "" -#: src/ui/gui/data-editor.ui:133 +#: src/ui/gui/data-editor.ui:130 msgid "Go To Case" msgstr "" -#: src/ui/gui/data-editor.ui:135 +#: src/ui/gui/data-editor.ui:132 msgid "Jump to a case in the data sheet" msgstr "" -#: src/ui/gui/data-editor.ui:161 +#: src/ui/gui/data-editor.ui:158 msgid "Cl_ear Variables" msgstr "" -#: src/ui/gui/data-editor.ui:162 +#: src/ui/gui/data-editor.ui:159 msgid "Delete the variables at the selected position(s)" msgstr "" -#: src/ui/gui/data-editor.ui:170 +#: src/ui/gui/data-editor.ui:167 msgid "_Clear Cases" msgstr "" -#: src/ui/gui/data-editor.ui:171 +#: src/ui/gui/data-editor.ui:168 msgid "Delete the cases at the selected position(s)" msgstr "" -#: src/ui/gui/data-editor.ui:183 +#: src/ui/gui/data-editor.ui:180 msgid "_View" msgstr "" -#: src/ui/gui/data-editor.ui:190 +#: src/ui/gui/data-editor.ui:187 msgid "_Status Bar" msgstr "" -#: src/ui/gui/data-editor.ui:196 -msgid "_Fonts" -msgstr "" - -#: src/ui/gui/data-editor.ui:204 +#: src/ui/gui/data-editor.ui:200 msgid "_Grid Lines" msgstr "" -#: src/ui/gui/data-editor.ui:210 +#: src/ui/gui/data-editor.ui:206 msgid "Value _Labels" msgstr "" -#: src/ui/gui/data-editor.ui:211 +#: src/ui/gui/data-editor.ui:207 msgid "Show/hide value labels" msgstr "" -#: src/ui/gui/data-editor.ui:224 src/ui/gui/data-editor.ui:431 +#: src/ui/gui/data-editor.ui:220 src/ui/gui/data-editor.ui:434 msgid "_Variables" msgstr "" -#: src/ui/gui/data-editor.ui:235 +#: src/ui/gui/data-editor.ui:231 msgid "_Sort Cases" msgstr "" -#: src/ui/gui/data-editor.ui:238 +#: src/ui/gui/data-editor.ui:234 msgid "Sort cases in the active file" msgstr "" -#: src/ui/gui/data-editor.ui:245 +#: src/ui/gui/data-editor.ui:241 msgid "_Transpose" msgstr "" -#: src/ui/gui/data-editor.ui:246 +#: src/ui/gui/data-editor.ui:242 msgid "Transpose the cases with the variables" msgstr "" -#: src/ui/gui/data-editor.ui:252 +#: src/ui/gui/data-editor.ui:249 +msgid "_Aggregate" +msgstr "" + +#: src/ui/gui/data-editor.ui:255 msgid "S_plit File" msgstr "" -#: src/ui/gui/data-editor.ui:253 +#: src/ui/gui/data-editor.ui:256 msgid "Split the active file" msgstr "" -#: src/ui/gui/data-editor.ui:260 +#: src/ui/gui/data-editor.ui:263 msgid "Select _Cases" msgstr "" -#: src/ui/gui/data-editor.ui:266 +#: src/ui/gui/data-editor.ui:269 msgid "_Weight Cases" msgstr "" -#: src/ui/gui/data-editor.ui:267 +#: src/ui/gui/data-editor.ui:270 msgid "Weight cases by variable" msgstr "" -#: src/ui/gui/data-editor.ui:274 +#: src/ui/gui/data-editor.ui:277 msgid "_Transform" msgstr "" -#: src/ui/gui/data-editor.ui:280 +#: src/ui/gui/data-editor.ui:283 msgid "_Compute" msgstr "" -#: src/ui/gui/data-editor.ui:286 +#: src/ui/gui/data-editor.ui:289 msgid "Ran_k Cases" msgstr "" -#: src/ui/gui/data-editor.ui:292 +#: src/ui/gui/data-editor.ui:295 msgid "Recode into _Same Variables" msgstr "" -#: src/ui/gui/data-editor.ui:298 +#: src/ui/gui/data-editor.ui:301 msgid "Recode into _Different Variables" msgstr "" -#: src/ui/gui/data-editor.ui:304 +#: src/ui/gui/data-editor.ui:307 msgid "_Run Pending Transforms" msgstr "" -#: src/ui/gui/data-editor.ui:311 +#: src/ui/gui/data-editor.ui:314 msgid "_Analyze" msgstr "_Analyse" -#: src/ui/gui/data-editor.ui:317 +#: src/ui/gui/data-editor.ui:320 msgid "_Descriptive Statistics" msgstr "" -#: src/ui/gui/data-editor.ui:323 +#: src/ui/gui/data-editor.ui:326 msgid "_Frequencies" msgstr "" -#: src/ui/gui/data-editor.ui:335 +#: src/ui/gui/data-editor.ui:338 msgid "_Explore" msgstr "" -#: src/ui/gui/data-editor.ui:341 +#: src/ui/gui/data-editor.ui:344 msgid "_Crosstabs" msgstr "" -#: src/ui/gui/data-editor.ui:347 +#: src/ui/gui/data-editor.ui:350 msgid "Compare _Means" msgstr "" -#: src/ui/gui/data-editor.ui:353 +#: src/ui/gui/data-editor.ui:356 msgid "_One Sample T Test" msgstr "" -#: src/ui/gui/data-editor.ui:359 +#: src/ui/gui/data-editor.ui:362 msgid "_Independent Samples T Test" msgstr "" -#: src/ui/gui/data-editor.ui:365 +#: src/ui/gui/data-editor.ui:368 msgid "_Paired Samples T Test" msgstr "" -#: src/ui/gui/data-editor.ui:371 +#: src/ui/gui/data-editor.ui:374 msgid "One Way _ANOVA" msgstr "" -#: src/ui/gui/data-editor.ui:377 +#: src/ui/gui/data-editor.ui:380 msgid "Bivariate _Correlation..." msgstr "" -#: src/ui/gui/data-editor.ui:383 +#: src/ui/gui/data-editor.ui:386 msgid "Factor _Analysis" msgstr "" -#: src/ui/gui/data-editor.ui:389 +#: src/ui/gui/data-editor.ui:392 msgid "Re_liability" msgstr "" -#: src/ui/gui/data-editor.ui:395 +#: src/ui/gui/data-editor.ui:398 msgid "Linear _Regression" msgstr "" -#: src/ui/gui/data-editor.ui:401 +#: src/ui/gui/data-editor.ui:404 msgid "_Non-Parametric Statistics" msgstr "" -#: src/ui/gui/data-editor.ui:407 +#: src/ui/gui/data-editor.ui:410 msgid "_Chi-Square" msgstr "" -#: src/ui/gui/data-editor.ui:413 +#: src/ui/gui/data-editor.ui:416 msgid "_Binomial" msgstr "" -#: src/ui/gui/data-editor.ui:419 +#: src/ui/gui/data-editor.ui:422 msgid "ROC Cur_ve..." msgstr "" -#: src/ui/gui/data-editor.ui:425 +#: src/ui/gui/data-editor.ui:428 msgid "_Utilities" msgstr "" -#: src/ui/gui/data-editor.ui:432 +#: src/ui/gui/data-editor.ui:435 msgid "Jump to variable" msgstr "" -#: src/ui/gui/data-editor.ui:439 +#: src/ui/gui/data-editor.ui:442 msgid "Data File _Comments" msgstr "" -#: src/ui/gui/data-editor.ui:445 src/ui/gui/output-viewer.ui:46 -#: src/ui/gui/syntax-editor.ui:131 +#: src/ui/gui/data-editor.ui:448 src/ui/gui/output-viewer.ui:46 +#: src/ui/gui/syntax-editor.ui:135 msgid "_Windows" msgstr "" -#: src/ui/gui/data-editor.ui:451 src/ui/gui/output-viewer.ui:52 -#: src/ui/gui/syntax-editor.ui:137 +#: src/ui/gui/data-editor.ui:454 src/ui/gui/output-viewer.ui:52 +#: src/ui/gui/syntax-editor.ui:141 msgid "_Minimize All Windows" msgstr "_Minimise All Windows" -#: src/ui/gui/data-editor.ui:457 +#: src/ui/gui/data-editor.ui:460 msgid "_Split" msgstr "" -#: src/ui/gui/data-editor.ui:631 +#: src/ui/gui/data-editor.ui:635 msgid "Information Area" msgstr "" -#: src/ui/gui/data-editor.ui:653 +#: src/ui/gui/data-editor.ui:657 msgid "Processor Area" msgstr "" -#: src/ui/gui/data-editor.ui:678 +#: src/ui/gui/data-editor.ui:682 msgid "Case Counter Area" msgstr "" -#: src/ui/gui/data-editor.ui:703 +#: src/ui/gui/data-editor.ui:707 msgid "Filter Use Status Area" msgstr "" -#: src/ui/gui/data-editor.ui:729 +#: src/ui/gui/data-editor.ui:733 msgid "Weight Status Area" msgstr "" -#: src/ui/gui/data-editor.ui:755 +#: src/ui/gui/data-editor.ui:759 msgid "Split File Status Area" msgstr "" @@ -6971,61 +7251,22 @@ msgstr "" msgid "_Export" msgstr "" -#: src/ui/gui/syntax-editor.ui:100 +#: src/ui/gui/syntax-editor.ui:104 msgid "_Run" msgstr "" -#: src/ui/gui/syntax-editor.ui:106 +#: src/ui/gui/syntax-editor.ui:110 msgid "All" msgstr "" -#: src/ui/gui/syntax-editor.ui:112 +#: src/ui/gui/syntax-editor.ui:116 msgid "Selection" msgstr "" -#: src/ui/gui/syntax-editor.ui:118 +#: src/ui/gui/syntax-editor.ui:122 msgid "Current Line" msgstr "" -#: src/ui/gui/syntax-editor.ui:125 +#: src/ui/gui/syntax-editor.ui:129 msgid "To End" msgstr "" - -#~ msgid "cannot initialize output driver `%s' of class `%s'" -#~ msgstr "cannot initialise output driver `%s' of class `%s'" - -#~ msgid "Options affecting syntax and behavior:" -#~ msgstr "Options affecting syntax and behaviour:" - -#~ msgid "" -#~ " This program is free software: you can redistribute it and/or modify\n" -#~ " it under the terms of the GNU General Public License as published by\n" -#~ " the Free Software Foundation, either version 3 of the License, or\n" -#~ " (at your option) any later version.\n" -#~ "\n" -#~ " This program is distributed in the hope that it will be useful,\n" -#~ " but WITHOUT ANY WARRANTY; without even the implied warranty of\n" -#~ " MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n" -#~ " GNU General Public License for more details.\n" -#~ "\n" -#~ " You should have received a copy of the GNU General Public License\n" -#~ " along with this program. If not, see .\n" -#~ msgstr "" -#~ "\" This program is free software: you can redistribute it and/or modify" -#~ "\\n\"\n" -#~ "\" it under the terms of the GNU General Public License as published by" -#~ "\\n\"\n" -#~ "\" the Free Software Foundation, either version 3 of the Licence, or\\n" -#~ "\"\n" -#~ "\" (at your option) any later version.\\n\"\n" -#~ "\"\\n\"\n" -#~ "\" This program is distributed in the hope that it will be useful,\\n" -#~ "\"\n" -#~ "\" but WITHOUT ANY WARRANTY; without even the implied warranty of\\n\"\n" -#~ "\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n\"\n" -#~ "\" GNU General Public License for more details.\\n\"\n" -#~ "\"\\n\"\n" -#~ "\" You should have received a copy of the GNU General Public License\\n" -#~ "\"\n" -#~ "\" along with this program. If not, see ." -#~ "\\n\"\n" diff --git a/po/es.po b/po/es.po index b00f742d..e4d1e2a6 100644 --- a/po/es.po +++ b/po/es.po @@ -1,6 +1,7 @@ # Spanish messages for PSPP # Copyright (C) 2009, 2010 Free Software Foundation, Inc. # This file is distributed under the same licence as the pspp package. +# Francisco J. Miguel Quesada , 2009. # Palmira Payá Sanchez, 2009. # Javier Gómez Serrano, 2009. # Francesc Josep Miguel Quesada , 2010. @@ -8,10 +9,10 @@ # msgid "" msgstr "" -"Project-Id-Version: pspp-0.7.2-pre1\n" +"Project-Id-Version: pspp-0.7.5\n" "Report-Msgid-Bugs-To: pspp-dev@gnu.org\n" -"POT-Creation-Date: 2010-05-21 12:02+0200\n" -"PO-Revision-Date: 2010-02-03 20:19+0100\n" +"POT-Creation-Date: 2010-05-21 16:40-0700\n" +"PO-Revision-Date: 2010-10-13 13:30+0200\n" "Last-Translator: Francesc Josep Miguel Quesada \n" "Language-Team: Spanish \n" "MIME-Version: 1.0\n" @@ -62,9 +63,9 @@ msgid "Prefer variable labels" msgstr "Prefiero las etiquetas de variable" #: src/ui/gui/psppire-var-view.c:193 -#, fuzzy, c-format +#, c-format msgid "Var%d" -msgstr "Pareja %d" +msgstr "Var%d" #: src/data/any-reader.c:56 #, c-format @@ -93,17 +94,11 @@ msgstr "El día %d no está en el intervalo válido de 0 a 31." #: src/data/calendar.c:96 #, c-format msgid "Date %04d-%d-%d is before the earliest acceptable date of 1582-10-15." -msgstr "" -"La fecha %04d-%d-%d es anterior a la fecha aceptada más antigua, 1582-10-15." +msgstr "La fecha %04d-%d-%d es anterior a la fecha aceptada más antigua, 1582-10-15." #: src/data/casereader-filter.c:221 -msgid "" -"At least one case in the data read had a weight value that was user-missing, " -"system-missing, zero, or negative. These case(s) were ignored." -msgstr "" -"Al menos un caso en la lectura de datos tenia un valor de ponderación que es " -"perdido del usuari, del sistema, cero o negativo. Este(os) caso(s) fueron " -"ignorado(s)." +msgid "At least one case in the data read had a weight value that was user-missing, system-missing, zero, or negative. These case(s) were ignored." +msgstr "Al menos un caso en la lectura de datos tenia un valor de ponderación que es perdido del usuari, del sistema, cero o negativo. Este(os) caso(s) fueron ignorado(s)." #: src/data/data-in.c:274 src/data/data-in.c:464 msgid "Field contents are not numeric." @@ -155,12 +150,8 @@ msgid "Delimiter expected between fields in date." msgstr "En la fecha se espera un delimitador entre los campos." #: src/data/data-in.c:837 -msgid "" -"Unrecognized month format. Months may be specified as Arabic or Roman " -"numerals or as at least 3 letters of their English names." -msgstr "" -"Formato de mes no reconocido. Los meses pueden ser especificados como " -"números Arábicos o Romanos, o como mínimo 3 letras de sus nombres en Inglés." +msgid "Unrecognized month format. Months may be specified as Arabic or Roman numerals or as at least 3 letters of their English names." +msgstr "Formato de mes no reconocido. Los meses pueden ser especificados como números Arábicos o Romanos, o como mínimo 3 letras de sus nombres en Inglés." #: src/data/data-in.c:864 #, c-format @@ -201,12 +192,8 @@ msgid "Minute (%ld) must be between 0 and 59." msgstr "Minuto (%ld) debe estar entre 0 y 59." #: src/data/data-in.c:1014 -msgid "" -"Unrecognized weekday name. At least the first two letters of an English " -"weekday name must be specified." -msgstr "" -"Día de la semana no reconocido. Al menos se deben especificar las dos " -"primeras letras del nombre en inglés." +msgid "Unrecognized weekday name. At least the first two letters of an English weekday name must be specified." +msgstr "Día de la semana no reconocido. Al menos se deben especificar las dos primeras letras del nombre en inglés." #: src/data/data-in.c:1152 #, c-format @@ -251,12 +238,8 @@ msgid "scratch" msgstr "cero" #: src/data/dictionary.c:980 -msgid "" -"At least one case in the data file had a weight value that was user-missing, " -"system-missing, zero, or negative. These case(s) were ignored." -msgstr "" -"Al menos un caso del archivo de datos tenía un valor de ponderación perdido " -"de usuario, de sistema, cero o negativo. Estos caso(s) fueron ignorado(s)." +msgid "At least one case in the data file had a weight value that was user-missing, system-missing, zero, or negative. These case(s) were ignored." +msgstr "Al menos un caso del archivo de datos tenía un valor de ponderación perdido de usuario, de sistema, cero o negativo. Estos caso(s) fueron ignorado(s)." #: src/data/dictionary.c:1283 #, c-format @@ -266,15 +249,12 @@ msgstr "Linea de documento truncada a %d bytes." #: src/data/file-handle-def.c:462 #, c-format msgid "Can't read from %s as a %s because it is already being read as a %s." -msgstr "" -"No se puede leer de %s como una %s porque ya esta siendo leída como una %s." +msgstr "No se puede leer de %s como una %s porque ya esta siendo leída como una %s." #: src/data/file-handle-def.c:466 #, c-format msgid "Can't write to %s as a %s because it is already being written as a %s." -msgstr "" -"No se puede escribir en %s como una %s porque ya esta siendo escrita como " -"una %s." +msgstr "No se puede escribir en %s como una %s porque ya esta siendo escrita como una %s." #: src/data/file-handle-def.c:473 #, c-format @@ -284,9 +264,7 @@ msgstr "No se puede re-abrir %s como %s." #: src/data/file-name.c:168 #, c-format msgid "Not opening pipe file `%s' because SAFER option set." -msgstr "" -"No abrir el archivo de transferencia '%s' porque la opción SAFER esta " -"activada." +msgstr "No abrir el archivo de transferencia '%s' porque la opción SAFER esta activada." #: src/data/format.c:235 msgid "Input format" @@ -301,7 +279,6 @@ msgstr "Formato de salida" msgid "Format %s may not be used for input." msgstr "Formato %s no puede ser utilizado como entrada." -# anchura o longitud o.. #: src/data/format.c:251 #, c-format msgid "%s specifies width %d, but %s requires an even width." @@ -310,45 +287,28 @@ msgstr "%s especifica %d anchura, pero %s requiere una anchura par." #: src/data/format.c:260 #, c-format msgid "%s %s specifies width %d, but %s requires a width between %d and %d." -msgstr "" -"%s %s especifica anchura %d, pero %s requiere una anchura entre %d y %d." +msgstr "%s %s especifica anchura %d, pero %s requiere una anchura entre %d y %d." #: src/data/format.c:269 #, c-format msgid "%s %s specifies %d decimal place, but %s does not allow any decimals." -msgid_plural "" -"%s %s specifies %d decimal places, but %s does not allow any decimals." +msgid_plural "%s %s specifies %d decimal places, but %s does not allow any decimals." msgstr[0] "%s %s especifica %d lugar decimal, pero %s no permite ninguno." msgstr[1] "%s %s especifica %d lugares decimales, pero %s no permite ninguno." #: src/data/format.c:280 #, c-format -msgid "" -"%s %s specifies %d decimal place, but the given width allows at most %d " -"decimals." -msgid_plural "" -"%s %s specifies %d decimal places, but the given width allows at most %d " -"decimals." -msgstr[0] "" -"%s %s especifica %d lugar decimal, pero la anchura dada permite como mucho %" -"d decimales." -msgstr[1] "" -"%s %s especifica %d lugares decimales, pero la anchura dada permite como " -"mucho %d decimales." +msgid "%s %s specifies %d decimal place, but the given width allows at most %d decimals." +msgid_plural "%s %s specifies %d decimal places, but the given width allows at most %d decimals." +msgstr[0] "%s %s especifica %d lugar decimal, pero la anchura dada permite como mucho %d decimales." +msgstr[1] "%s %s especifica %d lugares decimales, pero la anchura dada permite como mucho %d decimales." #: src/data/format.c:287 #, c-format -msgid "" -"%s %s specifies %d decimal place, but the given width does not allow for any " -"decimals." -msgid_plural "" -"%s %s specifies %d decimal places, but the given width does not allow for " -"any decimals." -msgstr[0] "" -"%s %s especifica %d lugar decimal, pero la anchura dada no permite ninguno." -msgstr[1] "" -"%s %s especifica %d lugares decimales, pero la anchura dada no permite " -"ninguno." +msgid "%s %s specifies %d decimal place, but the given width does not allow for any decimals." +msgid_plural "%s %s specifies %d decimal places, but the given width does not allow for any decimals." +msgstr[0] "%s %s especifica %d lugar decimal, pero la anchura dada no permite ninguno." +msgstr[1] "%s %s especifica %d lugares decimales, pero la anchura dada no permite ninguno." #: src/data/format.c:326 #, c-format @@ -385,17 +345,14 @@ msgstr "numérico" msgid "string" msgstr "cadena" -# amplitud, ancho? #: src/data/format.c:346 #, c-format msgid "String variable with width %d is not compatible with format %s." msgstr "Variable de cadena con ancho %d no es compatible con el formato %s." #: src/data/gnumeric-reader.c:36 -msgid "" -"Support for Gnumeric files was not compiled into this installation of PSPP" -msgstr "" -"Soporte para archivos Gnumeric no fue compilado en esta instalación de PSPP" +msgid "Support for Gnumeric files was not compiled into this installation of PSPP" +msgstr "Soporte para archivos Gnumeric no fue compilado en esta instalación de PSPP" #: src/data/gnumeric-reader.c:364 #, c-format @@ -415,8 +372,7 @@ msgstr "No se puede crear el nombre de la variable desde %s" #: src/data/gnumeric-reader.c:528 #, c-format msgid "Selected sheet or range of spreadsheet \"%s\" is empty." -msgstr "" -"La hoja o el intervalo de hojas de cálculo seleccionadas \"%s\" está vacía." +msgstr "La hoja o el intervalo de hojas de cálculo seleccionadas \"%s\" está vacía." #: src/data/make-file.c:68 #, c-format @@ -464,14 +420,14 @@ msgid "Removing %s: %s." msgstr "Eliminando %s: %s." #: src/data/por-file-reader.c:99 -#, fuzzy, c-format +#, c-format msgid "portable file %s corrupt at offset 0x%llx: " -msgstr "archivo portátil %s corrompido a la posición 0x%lx: " +msgstr "el archivo portátil %s está corrupto en la posición 0x%llx: " #: src/data/por-file-reader.c:128 -#, fuzzy, c-format +#, c-format msgid "reading portable file %s at offset 0x%llx: " -msgstr "leyendo el archivo portátil %s en la posición 0x%lx: " +msgstr "leyendo el archivo portátil %s en la posición 0x%llx: " #: src/data/por-file-reader.c:156 #, c-format @@ -490,8 +446,7 @@ msgstr "archivo portátil" #: src/data/por-file-reader.c:275 #, c-format -msgid "" -"An error occurred while opening \"%s\" for reading as a portable file: %s." +msgid "An error occurred while opening \"%s\" for reading as a portable file: %s." msgstr "Error en abrir \"%s\" para la lectura como archivo portátil: %s." #: src/data/por-file-reader.c:296 @@ -502,7 +457,6 @@ msgstr "Registro de datos esperado." msgid "Number expected." msgstr "Número esperado." -# Falta, ausencia? #: src/data/por-file-reader.c:406 msgid "Missing numeric terminator." msgstr "Falta la terminación numérica." @@ -538,25 +492,18 @@ msgstr "Longitud de cadena de tiempo %zu inválida." #: src/data/por-file-reader.c:593 #, c-format -msgid "" -"%s: Bad format specifier byte (%d). Variable will be assigned a default " -"format." -msgstr "" -"%s: Byte especificador de formato inválido (%d). Se asignará formato " -"predeterminado a la variable." +msgid "%s: Bad format specifier byte (%d). Variable will be assigned a default format." +msgstr "%s: Byte especificador de formato inválido (%d). Se asignará formato predeterminado a la variable." #: src/data/por-file-reader.c:614 #, c-format msgid "Numeric variable %s has invalid format specifier %s." -msgstr "" -"La variable numérica %s tiene una especificación de formato inválida %s." +msgstr "La variable numérica %s tiene una especificación de formato inválida %s." #: src/data/por-file-reader.c:618 #, c-format msgid "String variable %s with width %d has invalid format specifier %s." -msgstr "" -"La variable en cadena %s con longitud %d tiene una especificación de formato " -"inválida %s." +msgstr "La variable en cadena %s con longitud %d tiene una especificación de formato inválida %s." #: src/data/por-file-reader.c:642 msgid "Expected variable count record." @@ -576,7 +523,6 @@ msgstr "Nombre de la variable ponderada (%s) truncado." msgid "Expected variable record." msgstr "Registro de variable esperado." -# ancho? #: src/data/por-file-reader.c:674 #, c-format msgid "Invalid variable width %d." @@ -600,8 +546,7 @@ msgstr "Nombre de la variable %s duplicado en la posición %d." #: src/data/por-file-reader.c:701 #, c-format msgid "Duplicate variable name %s in position %d renamed to %s." -msgstr "" -"Nombre de la variable %s duplicado en la posición %d se ha renombrado a %s." +msgstr "Nombre de la variable %s duplicado en la posición %d se ha renombrado a %s." #: src/data/por-file-reader.c:750 #, c-format @@ -615,11 +560,8 @@ msgstr "Variable %s desconocida mientras se analizaban las etiquetas de valor." #: src/data/por-file-reader.c:797 #, c-format -msgid "" -"Cannot assign value labels to %s and %s, which have different variable types." -msgstr "" -"No se puede asignar etiquetas de valor a %s y %s, que tienen diferentes " -"tipos de variables." +msgid "Cannot assign value labels to %s and %s, which have different variable types." +msgstr "No se puede asignar etiquetas de valor a %s y %s, que tienen diferentes tipos de variables." #: src/data/por-file-writer.c:141 #, c-format @@ -637,12 +579,8 @@ msgid "An I/O error occurred writing portable file \"%s\"." msgstr "Error I/O en escribir el archivo portátil \"%s\"." #: src/data/psql-reader.c:46 -msgid "" -"Support for reading postgres databases was not compiled into this " -"installation of PSPP" -msgstr "" -"El soporte para la lectura de las bases de datos postgres no fue compilado " -"en esta instalación de PSPP" +msgid "Support for reading postgres databases was not compiled into this installation of PSPP" +msgstr "El soporte para la lectura de las bases de datos postgres no fue compilado en esta instalación de PSPP" #: src/data/psql-reader.c:242 msgid "Memory error whilst opening psql source" @@ -655,20 +593,12 @@ msgstr "Error abriendo la fuente psql: %s." #: src/data/psql-reader.c:263 #, c-format -msgid "" -"Postgres server is version %s. Reading from versions earlier than 8.0 is not " -"supported." -msgstr "" -"La versión del servidor Postgres es la %s. No es posible la lectura desde " -"versiones anteriores a la 8.0." +msgid "Postgres server is version %s. Reading from versions earlier than 8.0 is not supported." +msgstr "La versión del servidor Postgres es la %s. No es posible la lectura desde versiones anteriores a la 8.0." #: src/data/psql-reader.c:283 -msgid "" -"Connection is unencrypted, but unencrypted connections have not been " -"permitted." -msgstr "" -"La conexión no está cifrada, pero las conexiones sin cifrar no están " -"permitidas." +msgid "Connection is unencrypted, but unencrypted connections have not been permitted." +msgstr "La conexión no está cifrada, pero las conexiones sin cifrar no están permitidas." #: src/data/psql-reader.c:322 src/data/psql-reader.c:347 #: src/data/psql-reader.c:357 @@ -683,12 +613,8 @@ msgstr "OID %d no admitido. Valores SYSMIS serán insertados." #: src/data/scratch-reader.c:54 #, c-format -msgid "" -"Scratch file handle %s has not yet been written, using SAVE or another " -"procedure, so it cannot yet be used for reading." -msgstr "" -"El manipulador de archivos de trabajo %s aún no se ha escrito, utilizando " -"SAVE u otro procedimiento, de forma que aún no se puede leer." +msgid "Scratch file handle %s has not yet been written, using SAVE or another procedure, so it cannot yet be used for reading." +msgstr "El manipulador de archivos de trabajo %s aún no se ha escrito, utilizando SAVE u otro procedimiento, de forma que aún no se puede leer." #. TRANSLATORS: this fragment will be interpolated into #. messages in fh_lock() that identify types of files. @@ -698,12 +624,8 @@ msgstr "archivo de trabajo" #: src/data/settings.c:608 #, c-format -msgid "" -"%s: Custom currency string `%s' does not contain exactly three periods or " -"commas (or it contains both)." -msgstr "" -"%s: La cadena de moneda personalizada '%s' no contiene exactamente tres " -"puntos o comas (o contiene ambos)." +msgid "%s: Custom currency string `%s' does not contain exactly three periods or commas (or it contains both)." +msgstr "%s: La cadena de moneda personalizada '%s' no contiene exactamente tres puntos o comas (o contiene ambos)." #: src/data/short-names.c:52 msgid "Variable suffix too large." @@ -712,9 +634,7 @@ msgstr "Sufijo de la variable demasiado grande." #: src/data/sys-file-reader.c:226 #, c-format msgid "Recoded variable name duplicates an existing `%s' within system file." -msgstr "" -"El nombre de la variable recodificada duplica `%s' existente dentro del " -"archivo del sistema." +msgstr "El nombre de la variable recodificada duplica `%s' existente dentro del archivo del sistema." #. TRANSLATORS: this fragment will be interpolated into #. messages in fh_lock() that identify types of files. @@ -739,9 +659,7 @@ msgstr "Tipo de registro %d no reconocido." #: src/data/sys-file-reader.c:388 #, c-format msgid "File header claims %d variable positions but %d were read from file." -msgstr "" -"Cabecera del archivo requiere %d posiciones de variable, per se han leído %d " -"desde el archivo." +msgstr "Cabecera del archivo requiere %d posiciones de variable, per se han leído %d desde el archivo." #: src/data/sys-file-reader.c:428 #, c-format @@ -754,12 +672,8 @@ msgid "This is not an SPSS system file." msgstr "Esto no es un archivo de sistema de SPSS." #: src/data/sys-file-reader.c:525 tests/dissect-sysfile.c:227 -msgid "" -"Compression bias is not the usual value of 100, or system file uses " -"unrecognized floating-point format." -msgstr "" -"El sesgo de compresión no es el valor habitual de 100, o el archivo de " -"sistema utiliza un formato de punto flotante no reconocido." +msgid "Compression bias is not the usual value of 100, or system file uses unrecognized floating-point format." +msgstr "El sesgo de compresión no es el valor habitual de 100, o el archivo de sistema utiliza un formato de punto flotante no reconocido." #: src/data/sys-file-reader.c:602 #, c-format @@ -777,8 +691,7 @@ msgstr "Campo indicador de etiqueta de variable no es 0 o 1." #: src/data/sys-file-reader.c:649 tests/dissect-sysfile.c:387 msgid "Numeric missing value indicator field is not -3, -2, 0, 1, 2, or 3." -msgstr "" -"Campo de indicador de valores perdidos numéricos no es -3, -2, 0, 1, 2 o 3." +msgstr "Campo de indicador de valores perdidos numéricos no es -3, -2, 0, 1, 2 o 3." #: src/data/sys-file-reader.c:667 tests/dissect-sysfile.c:402 msgid "String missing value indicator field is not 0, 1, 2, or 3." @@ -829,46 +742,31 @@ msgstr "Una línea del documento contiene un byte nulo." #: src/data/sys-file-reader.c:893 #, c-format -msgid "" -"Unrecognized record type 7, subtype %d. Please send a copy of this file, " -"and the syntax which created it to %s" -msgstr "" -"Registro de tipo 7, subtipo %d , no reconocido. Por favor envíe una copia de " -"este archivo, así como de la sintaxis que lo creó en %s" +msgid "Unrecognized record type 7, subtype %d. Please send a copy of this file, and the syntax which created it to %s" +msgstr "Registro de tipo 7, subtipo %d , no reconocido. Por favor envíe una copia de este archivo, así como de la sintaxis que lo creó en %s" #: src/data/sys-file-reader.c:920 tests/dissect-sysfile.c:594 #, c-format msgid "Bad size (%zu) or count (%zu) field on record type 7, subtype 3." -msgstr "" -"Campo de longitud (%zu) o cantidad (%zu) inválidos en el registro tipo 7, " -"subtipo 3." +msgstr "Campo de longitud (%zu) o cantidad (%zu) inválidos en el registro tipo 7, subtipo 3." #: src/data/sys-file-reader.c:940 #, c-format -msgid "" -"Floating-point representation indicated by system file (%d) differs from " -"expected (%d)." -msgstr "" -"Representación del punto flotante indicado por el archivo de sistema (%d) " -"difiere de lo esperado (%d)." +msgid "Floating-point representation indicated by system file (%d) differs from expected (%d)." +msgstr "Representación del punto flotante indicado por el archivo de sistema (%d) difiere de lo esperado (%d)." #: src/data/sys-file-reader.c:953 src/language/dictionary/sys-file-info.c:110 -#, fuzzy msgid "Little Endian" -msgstr "Little Endian." +msgstr "Tipo Little-Endian" #: src/data/sys-file-reader.c:953 src/language/dictionary/sys-file-info.c:109 -#, fuzzy msgid "Big Endian" -msgstr "Big Endian." +msgstr "Tipo Big-Endian." #: src/data/sys-file-reader.c:954 #, c-format -msgid "" -"Integer format indicated by system file (%s) differs from expected (%s)." -msgstr "" -"Formato entero indicado por el archivo de sistema (%s) difiere de lo " -"esperado (%s)." +msgid "Integer format indicated by system file (%s) differs from expected (%s)." +msgstr "Formato entero indicado por el archivo de sistema (%s) difiere de lo esperado (%s)." #: src/data/sys-file-reader.c:1011 tests/dissect-sysfile.c:625 #, c-format @@ -885,45 +783,42 @@ msgstr "El archivo especifica un valor inesperado %g como %s." #: src/data/sys-file-reader.c:1056 #, c-format msgid "Missing space following 'C' at offset %zu in MRSETS record" -msgstr "" +msgstr "Espacio perdido tras 'C' en la posición %zu del registro MRSETS" #: src/data/sys-file-reader.c:1074 tests/dissect-sysfile.c:691 #, c-format msgid "Missing space following 'E' at offset %zu in MRSETS record" -msgstr "" +msgstr "Espacio perdido tras 'E' en la posición %zu del registro MRSETS" #: src/data/sys-file-reader.c:1083 tests/dissect-sysfile.c:700 #, c-format -msgid "" -"Unexpected label source value \"%s\" following 'E' at offset %zu in MRSETS " -"record" -msgstr "" +msgid "Unexpected label source value \"%s\" following 'E' at offset %zu in MRSETS record" +msgstr "Etiqueta de valor fuente inesperada \"%s\" tras 'E' en la posición %zu del registro MRSETS" #: src/data/sys-file-reader.c:1089 #, c-format msgid "Missing 'C', 'D', or 'E' at offset %zu in MRSETS record." -msgstr "" +msgstr "Falta 'C', 'D' o 'E' en la posición %zu del registro MRSETS" #: src/data/sys-file-reader.c:1118 #, c-format msgid "Missing new-line parsing variable names at offset %zu in MRSETS record." -msgstr "" +msgstr "Falta el nombre de variable de nueva línea en la posición %zu del registro MRSETS" #: src/data/sys-file-reader.c:1129 -#, fuzzy, c-format +#, c-format msgid "Duplicate variable name %s at offset %zu in MRSETS record." -msgstr "Nombre de la variable %s duplicado en la posición %d." +msgstr "Nombre de la variable %s duplicado en la posición %zu en registro MRSETS." #: src/data/sys-file-reader.c:1142 -#, fuzzy, c-format +#, c-format msgid "MRSET %s contains both string and numeric variables." -msgstr "" -"Ignorando el registro del valor de cadena larga para la variable numérica %s." +msgstr "MRSET %s contiene tanto variables textuales como numéricas." #: src/data/sys-file-reader.c:1157 #, c-format msgid "MRSET %s has only %zu variables." -msgstr "" +msgstr "MRSET %s tiene sólo %zu variables." #: src/data/sys-file-reader.c:1194 tests/dissect-sysfile.c:758 #, c-format @@ -937,41 +832,28 @@ msgstr "Extensión 11 tiene un recuento inválido %zu (para %zu variables)." #: src/data/sys-file-reader.c:1227 #, c-format -msgid "" -"Invalid variable display parameters for variable %zu (%s). Default " -"parameters substituted." -msgstr "" -"Parámetros de visualización de variable no válidos para la variable %zu (%" -"s). Sustitución de parámetros por defecto." +msgid "Invalid variable display parameters for variable %zu (%s). Default parameters substituted." +msgstr "Parámetros de visualización de variable no válidos para la variable %zu (%s). Sustitución de parámetros por defecto." #: src/data/sys-file-reader.c:1271 #, c-format msgid "Long variable mapping from %s to invalid variable name `%s'." -msgstr "" -"Identificación de variable larga desde %s hacia un nombre de variable " -"inválido '%s'." +msgstr "Identificación de variable larga desde %s hacia un nombre de variable inválido '%s'." #: src/data/sys-file-reader.c:1281 #, c-format msgid "Duplicate long variable name `%s' within system file." -msgstr "" -"Nombre de la variable larga '%s' duplicada dentro del archivo de sistema." +msgstr "Nombre de la variable larga '%s' duplicada dentro del archivo de sistema." #: src/data/sys-file-reader.c:1334 #, c-format msgid "%s listed as string of invalid length %s in very length string record." -msgstr "" -"%s figura como cadena de longitud no válida %s en un registro de cadena muy " -"largo." +msgstr "%s figura como cadena de longitud no válida %s en un registro de cadena muy largo." #: src/data/sys-file-reader.c:1344 #, c-format -msgid "" -"%s listed in very long string record with width %s, which requires only one " -"segment." -msgstr "" -"%s figura en el registro de cadena muy larga con longitud %s, que requiere " -"solo un segmento." +msgid "%s listed in very long string record with width %s, which requires only one segment." +msgstr "%s figura en el registro de cadena muy larga con longitud %s, que requiere solo un segmento." #: src/data/sys-file-reader.c:1350 #, c-format @@ -980,11 +862,8 @@ msgstr "Cadena muy larga %s desborda el diccionario." #: src/data/sys-file-reader.c:1364 #, c-format -msgid "" -"Very long string with width %ld has segment %d of width %d (expected %d)" -msgstr "" -"Cadena muy larga con una longitud de %ld tiene un segmento %d de longitud %d " -"(se espera %d)" +msgid "Very long string with width %ld has segment %d of width %d (expected %d)" +msgstr "Cadena muy larga con una longitud de %ld tiene un segmento %d de longitud %d (se espera %d)" #: src/data/sys-file-reader.c:1410 #, c-format @@ -992,39 +871,23 @@ msgid "Invalid number of labels: %d. Ignoring labels." msgstr "Número de etiquetas inválido: %d. Ignorando etiquetas." #: src/data/sys-file-reader.c:1441 tests/dissect-sysfile.c:468 -msgid "" -"Variable index record (type 4) does not immediately follow value label " -"record (type 3) as it should." -msgstr "" -"Registro de índice de variable (tipo 4) no está seguido inmediatament, como " -"debería, por el registro de etiquetas de valores (tipo 3) ." +msgid "Variable index record (type 4) does not immediately follow value label record (type 3) as it should." +msgstr "Registro de índice de variable (tipo 4) no está seguido inmediatament, como debería, por el registro de etiquetas de valores (tipo 3) ." #: src/data/sys-file-reader.c:1448 #, c-format -msgid "" -"Number of variables associated with a value label (%d) is not between 1 and " -"the number of variables (%zu)." -msgstr "" -"Número de variables asociadas con una etiqueta de valores (%d) no está entre " -"1 y el número de variables (%zu)." +msgid "Number of variables associated with a value label (%d) is not between 1 and the number of variables (%zu)." +msgstr "Número de variables asociadas con una etiqueta de valores (%d) no está entre 1 y el número de variables (%zu)." #: src/data/sys-file-reader.c:1459 #, c-format -msgid "" -"Value labels may not be added to long string variables (e.g. %s) using " -"records types 3 and 4." -msgstr "" -"No se pueden añadir etiquetas de valor a las variables de cadena larga (e.g. " -"%s) utilizando los tipos de registro 3 y 4." +msgid "Value labels may not be added to long string variables (e.g. %s) using records types 3 and 4." +msgstr "No se pueden añadir etiquetas de valor a las variables de cadena larga (e.g. %s) utilizando los tipos de registro 3 y 4." #: src/data/sys-file-reader.c:1468 #, c-format -msgid "" -"Variables associated with value label are not all of identical type. " -"Variable %s is %s, but variable %s is %s." -msgstr "" -"Las variables asociadas con etiqueta de valores no son todas del mismo " -"tipo. La variable %s es %s, pero la variable %s es %s." +msgid "Variables associated with value label are not all of identical type. Variable %s is %s, but variable %s is %s." +msgstr "Las variables asociadas con etiqueta de valores no son todas del mismo tipo. La variable %s es %s, pero la variable %s es %s." #: src/data/sys-file-reader.c:1502 #, c-format @@ -1048,43 +911,28 @@ msgstr "El valor del atributo %s[%d] no está entre comillas: %s" #: src/data/sys-file-reader.c:1620 tests/dissect-sysfile.c:936 #, c-format -msgid "" -"Variable name length in long string value label record (%d) exceeds %d-byte " -"limit." -msgstr "" -"La longitud del nombre de la variable en el registro de la etiqueta del " -"valor de cadena larga (%d) supera el límite %d-byte." +msgid "Variable name length in long string value label record (%d) exceeds %d-byte limit." +msgstr "La longitud del nombre de la variable en el registro de la etiqueta del valor de cadena larga (%d) supera el límite %d-byte." #: src/data/sys-file-reader.c:1630 #, c-format msgid "Ignoring long string value record for unknown variable %s." -msgstr "" -"Ignorando el registro del valor de cadena larga para la variable desconocida " -"%s." +msgstr "Ignorando el registro del valor de cadena larga para la variable desconocida %s." #: src/data/sys-file-reader.c:1637 #, c-format msgid "Ignoring long string value record for numeric variable %s." -msgstr "" -"Ignorando el registro del valor de cadena larga para la variable numérica %s." +msgstr "Ignorando el registro del valor de cadena larga para la variable numérica %s." #: src/data/sys-file-reader.c:1644 #, c-format -msgid "" -"Ignoring long string value record for variable %s because the record's width " -"(%d) does not match the variable's width (%d)" -msgstr "" -"Ignorando el registro del valor de cadena larga %s ya que el ancho del " -"registro (%d) no coincide con el ancho de la variable (%d)" +msgid "Ignoring long string value record for variable %s because the record's width (%d) does not match the variable's width (%d)" +msgstr "Ignorando el registro del valor de cadena larga %s ya que el ancho del registro (%d) no coincide con el ancho de la variable (%d)" #: src/data/sys-file-reader.c:1666 #, c-format -msgid "" -"Ignoring long string value %zu for variable %s, with width %d, that has bad " -"value width %zu." -msgstr "" -"Ignorando el valor de cadena larga %zu para la variable %s, de ancho %d, que " -"tiene un ancho de valor incorrecto %zu." +msgid "Ignoring long string value %zu for variable %s, with width %d, that has bad value width %zu." +msgstr "Ignorando el valor de cadena larga %zu para la variable %s, de ancho %d, que tiene un ancho de valor incorrecto %zu." #: src/data/sys-file-reader.c:1781 msgid "File ends in partial case." @@ -1096,17 +944,13 @@ msgid "Error reading case from file %s." msgstr "Error leyendo un caso del archivo %s." #: src/data/sys-file-reader.c:1890 -msgid "" -"Possible compressed data corruption: compressed spaces appear in numeric " -"field." -msgstr "" +msgid "Possible compressed data corruption: compressed spaces appear in numeric field." +msgstr "Posible corrupción de datos comprimidos: aparecen espacios comprimidos en un campo numérico." #: src/data/sys-file-reader.c:1943 #, c-format -msgid "" -"Possible compressed data corruption: string contains compressed integer " -"(opcode %d)" -msgstr "" +msgid "Possible compressed data corruption: string contains compressed integer (opcode %d)" +msgstr "Posible corrupción de datos comprimidos: una cadena textual contiene un entero comprimido (opcode %d)." #: src/data/sys-file-reader.c:2035 #, c-format @@ -1116,8 +960,7 @@ msgstr "Índice de la variable %d no en el intervalo válido de 1...%d." #: src/data/sys-file-reader.c:2040 #, c-format msgid "Variable index %d refers to long string continuation." -msgstr "" -"Índice de la variable %d se refiere a una continuación de cadena larga." +msgstr "Índice de la variable %d se refiere a una continuación de cadena larga." #: src/data/sys-file-reader.c:2108 #, c-format @@ -1125,29 +968,29 @@ msgid "Suppressed %d additional related warnings." msgstr "Suprimidas %d advertencias adicionales." #: src/data/sys-file-reader.c:2153 src/data/sys-file-reader.c:2170 -#, fuzzy, c-format +#, c-format msgid "Dictionary record refers to unknown variable %s." -msgstr "Mapa de la variable se refiere a una variable desconocida %s." +msgstr "El registro diccionario se refiere a una variable desconocida %s." #: src/data/sys-file-reader.c:2231 #, c-format msgid "Expecting digit at offset %zu in MRSETS record." -msgstr "" +msgstr "Se espera un dígito en la posición %zu del registro MRSETS." #: src/data/sys-file-reader.c:2238 #, c-format msgid "Expecting space at offset %zu in MRSETS record." -msgstr "" +msgstr "Se espera un espacio en la posición %zu del registre MRSETS." #: src/data/sys-file-reader.c:2245 #, c-format msgid "%zu-byte string starting at offset %zu exceeds record length %zu." -msgstr "" +msgstr "El texto de %zu-bytes que comienza en la posición %zu excede la longitud del registro %zu. " #: src/data/sys-file-reader.c:2255 #, c-format msgid "Expecting space at offset %zu following %zu-byte string." -msgstr "" +msgstr "Se espera un espacio en la posición %zu tras un texto de %zu-byte." #: src/data/sys-file-reader.c:2347 tests/dissect-sysfile.c:1341 #, c-format @@ -1161,8 +1004,7 @@ msgstr "Final de archivo inesperado." #: src/data/sys-file-writer.c:180 #, c-format msgid "Unknown system file version %d. Treating as version %d." -msgstr "" -"Versión de archivo de sistema %d desconocida.Se tratará como versión %d." +msgstr "Versión de archivo de sistema %d desconocida.Se tratará como versión %d." #: src/data/sys-file-writer.c:219 #, c-format @@ -1176,12 +1018,8 @@ msgstr "Error de E/S al guardar el archivo de sistema \"%s\"." #: src/data/variable.c:206 #, c-format -msgid "" -"Character `%c' (in %s) may not appear as the first character in a variable " -"name." -msgstr "" -"Carácter '%c' (en %s) no puede aparecer como el primer carácter en un nombre " -"de variable." +msgid "Character `%c' (in %s) may not appear as the first character in a variable name." +msgstr "Carácter '%c' (en %s) no puede aparecer como el primer carácter en un nombre de variable." #: src/data/variable.c:218 #, c-format @@ -1200,9 +1038,7 @@ msgstr "El nombre de la variable %s supera el límite de %d caracteres." #: src/data/variable.c:258 #, c-format msgid "`%s' may not be used as a variable name because it is a reserved word." -msgstr "" -"'%s' no puede ser utilizado como nombre de variable porque es una palabra " -"reservada." +msgstr "'%s' no puede ser utilizado como nombre de variable porque es una palabra reservada." #: src/language/syntax-file.c:95 #, c-format @@ -1270,39 +1106,23 @@ msgstr "%s sólo se permite dentro de FILE TYPE." #: src/language/command.c:642 #, c-format -msgid "" -"%s is allowed only before the active file has been defined or inside INPUT " -"PROGRAM." -msgstr "" -"%s sólo se permite antes que el archivo activo se ha definido, o dentro de " -"INPUT PROGRAM." +msgid "%s is allowed only before the active file has been defined or inside INPUT PROGRAM." +msgstr "%s sólo se permite antes que el archivo activo se ha definido, o dentro de INPUT PROGRAM." #: src/language/command.c:646 #, c-format -msgid "" -"%s is allowed only before the active file has been defined or inside FILE " -"TYPE." -msgstr "" -"%s sólo se permite antes que el archivo activo se ha definido, o dentro de " -"FILE TYPE." +msgid "%s is allowed only before the active file has been defined or inside FILE TYPE." +msgstr "%s sólo se permite antes que el archivo activo se ha definido, o dentro de FILE TYPE." #: src/language/command.c:650 #, c-format -msgid "" -"%s is allowed only after the active file has been defined or inside INPUT " -"PROGRAM." -msgstr "" -"%s sólo se permite después que el archivo activo se ha definido, o dentro de " -"INPUT PROGRAM." +msgid "%s is allowed only after the active file has been defined or inside INPUT PROGRAM." +msgstr "%s sólo se permite después que el archivo activo se ha definido, o dentro de INPUT PROGRAM." #: src/language/command.c:654 #, c-format -msgid "" -"%s is allowed only after the active file has been defined or inside FILE " -"TYPE." -msgstr "" -"%s sólo se permite después que el archivo activo se ha definido, o dentro de " -"FILE TYPE." +msgid "%s is allowed only after the active file has been defined or inside FILE TYPE." +msgstr "%s sólo se permite después que el archivo activo se ha definido, o dentro de FILE TYPE." #: src/language/command.c:658 #, c-format @@ -1311,26 +1131,18 @@ msgstr "%s sólo se permite dentro de INPUT PROGRAM o FILE TYPE." #: src/language/command.c:664 #, c-format -msgid "" -"%s is allowed only after the active file has been defined, inside INPUT " -"PROGRAM, or inside FILE TYPE." -msgstr "" -"%s sólo se permite después que el archivo activo se ha definido, dentro de " -"INPUT PROGRAM, o FILE TYPE." +msgid "%s is allowed only after the active file has been defined, inside INPUT PROGRAM, or inside FILE TYPE." +msgstr "%s sólo se permite después que el archivo activo se ha definido, dentro de INPUT PROGRAM, o FILE TYPE." #: src/language/command.c:669 #, c-format -msgid "" -"%s is allowed only before the active file has been defined, inside INPUT " -"PROGRAM, or inside FILE TYPE." -msgstr "" -"%s sólo se permite antes que el archivo activo se ha definido, dentro de " -"INPUT PROGRAM, o FILE TYPE." +msgid "%s is allowed only before the active file has been defined, inside INPUT PROGRAM, or inside FILE TYPE." +msgstr "%s sólo se permite antes que el archivo activo se ha definido, dentro de INPUT PROGRAM, o FILE TYPE." #: src/language/command.c:687 src/language/command.c:689 -#, fuzzy, c-format +#, c-format msgid "%s is not allowed inside %s." -msgstr "%s no se permite dentro de FILE TYPE." +msgstr "%s no está permitido dentro de %s." #: src/language/command.c:768 src/language/command.c:876 #: src/language/utilities/permissions.c:98 @@ -1431,8 +1243,7 @@ msgstr "hexadecimal" #: src/language/lexer/lexer.c:1085 #, c-format msgid "String of %s digits has %zu characters, which is not a multiple of %d." -msgstr "" -"La cadena de %s dígitos tiene %zu caracteres, que no es un múltiplo de %d." +msgstr "La cadena de %s dígitos tiene %zu caracteres, que no es un múltiplo de %d." #: src/language/lexer/lexer.c:1114 #, c-format @@ -1473,12 +1284,8 @@ msgstr "esperando el tipo de formato" #: src/language/lexer/value-parser.c:60 #, c-format -msgid "" -"Low end of range (%g) is below high end (%g). The range will be treated as " -"reversed." -msgstr "" -"El límite inferior del intervalo (%g) está por debajo del límite superior (%" -"g). El intervalo será invertido." +msgid "Low end of range (%g) is below high end (%g). The range will be treated as reversed." +msgstr "El límite inferior del intervalo (%g) está por debajo del límite superior (%g). El intervalo será invertido." #: src/language/lexer/value-parser.c:68 #, c-format @@ -1508,17 +1315,13 @@ msgstr "%s no es un nombre de variable." #: src/language/lexer/variable-parser.c:178 #, c-format -msgid "" -"%s is not a numeric variable. It will not be included in the variable list." -msgstr "" -"%s no es una variable numérica. No será incluida en la lista de variables." +msgid "%s is not a numeric variable. It will not be included in the variable list." +msgstr "%s no es una variable numérica. No será incluida en la lista de variables." #: src/language/lexer/variable-parser.c:181 #, c-format -msgid "" -"%s is not a string variable. It will not be included in the variable list." -msgstr "" -"%s no es una variable de cadena. No será incluida en la lista de variables." +msgid "%s is not a string variable. It will not be included in the variable list." +msgstr "%s no es una variable de cadena. No será incluida en la lista de variables." #: src/language/lexer/variable-parser.c:185 #, c-format @@ -1527,21 +1330,13 @@ msgstr "Las variables de trabajol (como %s) no están permitidas aquí." #: src/language/lexer/variable-parser.c:189 #, c-format -msgid "" -"%s and %s are not the same type. All variables in this variable list must " -"be of the same type. %s will be omitted from the list." -msgstr "" -"%s y %s no son del mismo tipo. Todas las variables de esta lista tienen que " -"ser del mismo tipo. %s será omitida de la lista." +msgid "%s and %s are not the same type. All variables in this variable list must be of the same type. %s will be omitted from the list." +msgstr "%s y %s no son del mismo tipo. Todas las variables de esta lista tienen que ser del mismo tipo. %s será omitida de la lista." #: src/language/lexer/variable-parser.c:195 #, c-format -msgid "" -"%s and %s are string variables with different widths. All variables in this " -"variable list must have the same width. %s will be omitted from the list." -msgstr "" -"%s y %s son variables de cadena con tamaños diferentes. Todas las variables " -"de esta lista deben tener el mismo tamaño. %s será omitida de la lista." +msgid "%s and %s are string variables with different widths. All variables in this variable list must have the same width. %s will be omitted from the list." +msgstr "%s y %s son variables de cadena con tamaños diferentes. Todas las variables de esta lista deben tener el mismo tamaño. %s será omitida de la lista." #: src/language/lexer/variable-parser.c:200 #: src/language/lexer/variable-parser.c:496 @@ -1552,21 +1347,12 @@ msgstr "La variable %s aparece dos veces en la lista de variables." #: src/language/lexer/variable-parser.c:313 #, c-format msgid "%s TO %s is not valid syntax since %s precedes %s in the dictionary." -msgstr "" -"%s TO %s no es una sintaxis válida debido a que %s precede %s en el " -"diccionario." +msgstr "%s TO %s no es una sintaxis válida debido a que %s precede %s en el diccionario." #: src/language/lexer/variable-parser.c:321 #, c-format -msgid "" -"When using the TO keyword to specify several variables, both variables must " -"be from the same variable dictionaries, of either ordinary, scratch, or " -"system variables. %s is a %s variable, whereas %s is %s." -msgstr "" -"Cuando se utiliza la palabra clave TO para especificar diversas variables, " -"ambas tienen que ser del mismo diccionario de variables, ya sean ordinales, " -"scratch, o variables de sistema. %s es una variable %s, debido a que %s es %" -"s." +msgid "When using the TO keyword to specify several variables, both variables must be from the same variable dictionaries, of either ordinary, scratch, or system variables. %s is a %s variable, whereas %s is %s." +msgstr "Cuando se utiliza la palabra clave TO para especificar diversas variables, ambas tienen que ser del mismo diccionario de variables, ya sean ordinales, scratch, o variables de sistema. %s es una variable %s, debido a que %s es %s." #: src/language/lexer/variable-parser.c:395 msgid "incorrect use of TO convention" @@ -1586,20 +1372,13 @@ msgstr "Límites incorrectos en el uso de la convención TO." #: src/language/xforms/compute.c:149 src/language/xforms/compute.c:203 #, c-format -msgid "" -"When executing COMPUTE: SYSMIS is not a valid value as an index into vector %" -"s." -msgstr "" -"Cuando se ejecuta COMPUTE: SYSMIS no es un valor válido como índice en el " -"vector %s." +msgid "When executing COMPUTE: SYSMIS is not a valid value as an index into vector %s." +msgstr "Cuando se ejecuta COMPUTE: SYSMIS no es un valor válido como índice en el vector %s." #: src/language/xforms/compute.c:153 src/language/xforms/compute.c:210 #, c-format -msgid "" -"When executing COMPUTE: %g is not a valid value as an index into vector %s." -msgstr "" -"Cuando se ejecuta COMPUTE: %g no es un valor válid como índice en el vector %" -"s." +msgid "When executing COMPUTE: %g is not a valid value as an index into vector %s." +msgstr "Cuando se ejecuta COMPUTE: %g no es un valor válid como índice en el vector %s." #: src/language/xforms/compute.c:353 #, c-format @@ -1617,21 +1396,15 @@ msgstr "El factor de mostreo tiene que estar exclusivamente entre 0 y 1." #: src/language/xforms/sample.c:96 #, c-format msgid "Cannot sample %d observations from a population of %d." -msgstr "" -"No se puede hacer una muestra de %d observaciones de una población de %d." +msgstr "No se puede hacer una muestra de %d observaciones de una población de %d." #: src/language/xforms/recode.c:248 -msgid "" -"Inconsistent target variable types. Target variables must be all numeric or " -"all string." -msgstr "" -"Tipo inconsistente de variables objetivo. Las variables objetivo tienen que " -"ser todas, o bien de cadena o bien numéricas." +msgid "Inconsistent target variable types. Target variables must be all numeric or all string." +msgstr "Tipo inconsistente de variables objetivo. Las variables objetivo tienen que ser todas, o bien de cadena o bien numéricas." #: src/language/xforms/recode.c:269 msgid "CONVERT requires string input values and numeric output values." -msgstr "" -"CONVERT requiere valores de entrada de cadena y valores de salida numéricos." +msgstr "CONVERT requiere valores de entrada de cadena y valores de salida numéricos." #: src/language/xforms/recode.c:324 msgid "THRU is not allowed with string variables." @@ -1643,22 +1416,13 @@ msgstr "esperando el valor de salida" #: src/language/xforms/recode.c:460 #, c-format -msgid "" -"%zu variable(s) cannot be recoded into %zu variable(s). Specify the same " -"number of variables as source and target variables." -msgstr "" -"%zu variable(s) no pueden ser recodificadas en %zu variable(s). Especifique " -"el mismo número de variables como origen y destino." +msgid "%zu variable(s) cannot be recoded into %zu variable(s). Specify the same number of variables as source and target variables." +msgstr "%zu variable(s) no pueden ser recodificadas en %zu variable(s). Especifique el mismo número de variables como origen y destino." #: src/language/xforms/recode.c:475 #, c-format -msgid "" -"There is no variable named %s. (All string variables specified on INTO must " -"already exist. Use the STRING command to create a string variable.)" -msgstr "" -"No existe ninguna variable llamada %s. (Todas las variables de cadena " -"especificadas en INTO tienen que existir. Utilice el comando STRING para " -"crear una variable de cadena.)" +msgid "There is no variable named %s. (All string variables specified on INTO must already exist. Use the STRING command to create a string variable.)" +msgstr "No existe ninguna variable llamada %s. (Todas las variables de cadena especificadas en INTO tienen que existir. Utilice el comando STRING para crear una variable de cadena.)" #: src/language/xforms/recode.c:491 #, c-format @@ -1672,8 +1436,7 @@ msgstr "Desajuste de tipo. No se puede almacenar %s datos en %s variable %s." #: src/language/xforms/select-if.c:100 msgid "Syntax error expecting OFF or BY. Turning off case filtering." -msgstr "" -"Error de sintaxis esperando OFF o BY. Desactivando el filtraje de casos." +msgstr "Error de sintaxis esperando OFF o BY. Desactivando el filtraje de casos." #: src/language/xforms/select-if.c:115 msgid "The filter variable must be numeric." @@ -1691,8 +1454,7 @@ msgstr "%s sin %s." #: src/language/control/control-stack.c:55 #, c-format msgid "This command must appear inside %s...%s, without intermediate %s...%s." -msgstr "" -"Esta orden tiene que aparecer dentro de %s...%s, sin intermediarios %s...%s." +msgstr "Esta orden tiene que aparecer dentro de %s...%s, sin intermediarios %s...%s." #: src/language/control/control-stack.c:72 #, c-format @@ -1708,19 +1470,13 @@ msgid "Only one index clause may be specified." msgstr "Únicamente puede ser especificada una cláusula del índice." #: src/language/control/temporary.c:46 -msgid "" -"This command may only appear once between procedures and procedure-like " -"commands." -msgstr "" -"Esta orden únicamente puede aparecer una vez entre las órdenes de " -"procedimientos y casi-procedimientos." +msgid "This command may only appear once between procedures and procedure-like commands." +msgstr "Esta orden únicamente puede aparecer una vez entre las órdenes de procedimientos y casi-procedimientos." #: src/language/control/repeat.c:172 #, c-format msgid "Dummy variable name \"%s\" hides dictionary variable \"%s\"." -msgstr "" -"El nombre de la variable ficticia \"%s\" oculta la variable de diccionario " -"\"%s\"." +msgstr "El nombre de la variable ficticia \"%s\" oculta la variable de diccionario \"%s\"." #: src/language/control/repeat.c:177 #, c-format @@ -1729,12 +1485,8 @@ msgstr "El nombre de la variable ficticia \"%s\" se da dos veces." #: src/language/control/repeat.c:223 #, c-format -msgid "" -"Dummy variable \"%.*s\" had %d substitutions, so \"%.*s\" must also, but %d " -"were specified." -msgstr "" -"Una variable ficticia \"%.*s\" tiene %d substituciones, de forma tal que \"%." -"*s\" también tendría que tenerlas, pero se especificaron %d." +msgid "Dummy variable \"%.*s\" had %d substitutions, so \"%.*s\" must also, but %d were specified." +msgstr "Una variable ficticia \"%.*s\" tiene %d substituciones, de forma tal que \"%.*s\" también tendría que tenerlas, pero se especificaron %d." # recursivamente? recurridamente? repetidamente? #: src/language/control/repeat.c:335 @@ -1769,31 +1521,19 @@ msgstr "esperando ATTRIBUTE= o DELETE=" #: src/language/dictionary/apply-dictionary.c:75 #, c-format msgid "Variable %s is %s in target file, but %s in source file." -msgstr "" -"La variable %s es %s en el archivo de destino, pero %s en el archivo de " -"origen." +msgstr "La variable %s es %s en el archivo de destino, pero %s en el archivo de origen." #: src/language/dictionary/apply-dictionary.c:115 msgid "No matching variables found between the source and target files." -msgstr "" -"No se han encontrado coincidencias de variables entre los archivos de origen " -"y de destino." +msgstr "No se han encontrado coincidencias de variables entre los archivos de origen y de destino." #: src/language/dictionary/delete-variables.c:40 -msgid "" -"DELETE VARIABLES may not be used after TEMPORARY. Temporary transformations " -"will be made permanent." -msgstr "" -"DELETE VARIABLES no puede ser utilizado después de TEMPORARY. Las " -"transformaciones temporales serán permanentes." +msgid "DELETE VARIABLES may not be used after TEMPORARY. Temporary transformations will be made permanent." +msgstr "DELETE VARIABLES no puede ser utilizado después de TEMPORARY. Las transformaciones temporales serán permanentes." #: src/language/dictionary/delete-variables.c:48 -msgid "" -"DELETE VARIABLES may not be used to delete all variables from the active " -"file dictionary. Use NEW FILE instead." -msgstr "" -"DELETE VARIABLES no puede ser utilizado para borrar todas las variables del " -"archivo de diccionario activo. Utilizar NEW FILE en su lugar." +msgid "DELETE VARIABLES may not be used to delete all variables from the active file dictionary. Use NEW FILE instead." +msgstr "DELETE VARIABLES no puede ser utilizado para borrar todas las variables del archivo de diccionario activo. Utilizar NEW FILE en su lugar." #: src/language/dictionary/formats.c:90 msgid "`(' expected after variable list." @@ -1810,12 +1550,8 @@ msgstr "esperando `('" #: src/language/dictionary/missing-values.c:72 #, c-format -msgid "" -"Cannot mix numeric variables (e.g. %s) and string variables (e.g. %s) within " -"a single list." -msgstr "" -"No se pueden mezclar las variables numéricas (e.g. %s) y las variables de " -"cadena (e.g. %s) dentro de una lista única." +msgid "Cannot mix numeric variables (e.g. %s) and string variables (e.g. %s) within a single list." +msgstr "No se pueden mezclar las variables numéricas (e.g. %s) y las variables de cadena (e.g. %s) dentro de una lista única." #: src/language/dictionary/missing-values.c:116 #, c-format @@ -1825,80 +1561,53 @@ msgstr "Truncando el valor perdido a la longitud máxima aceptable (%d bytes)." #: src/language/dictionary/missing-values.c:138 #, c-format msgid "Missing values provided are too long to assign to variable of width %d." -msgstr "" -"Los valores perdidos proporcionados son demasiado largos para asignar a una " -"variable de ancho %d." +msgstr "Los valores perdidos proporcionados son demasiado largos para asignar a una variable de ancho %d." #: src/language/dictionary/modify-variables.c:92 -msgid "" -"MODIFY VARS may not be used after TEMPORARY. Temporary transformations will " -"be made permanent." -msgstr "" -"MODIFY VARS no puede ser utilizado después de TEMPORARY. Las " -"transformaciones temporales serán permanentes." +msgid "MODIFY VARS may not be used after TEMPORARY. Temporary transformations will be made permanent." +msgstr "MODIFY VARS no puede ser utilizado después de TEMPORARY. Las transformaciones temporales serán permanentes." #: src/language/dictionary/modify-variables.c:114 #: src/language/dictionary/modify-variables.c:177 -#, fuzzy, c-format +#, c-format msgid "%s subcommand may be given at most once." -msgstr "El subcomando RENAME puede ser utilizado únicamente una vez." +msgstr "El subcomando %s sólo puede utilizarse una vez." #: src/language/dictionary/modify-variables.c:137 msgid "Cannot specify ALL after specifying a set of variables." -msgstr "" -"No se puede especificar ALL después de la especificación de un conjunto de " -"variables." +msgstr "No se puede especificar ALL después de la especificación de un conjunto de variables." #: src/language/dictionary/modify-variables.c:147 #: src/language/dictionary/modify-variables.c:190 -#, fuzzy, c-format +#, c-format msgid "`(' expected on %s subcommand." -msgstr "`(' esperado en subcomando RENAME." +msgstr "Se espera `(' en el subcomando %s." #: src/language/dictionary/modify-variables.c:159 msgid "`)' expected following variable names on REORDER subcommand." -msgstr "" -"`)' se esperaba seguido de los nombres de la variable en el subcomando " -"REORDER." +msgstr "`)' se esperaba seguido de los nombres de la variable en el subcomando REORDER." #: src/language/dictionary/modify-variables.c:199 -msgid "" -"`=' expected between lists of new and old variable names on RENAME " -"subcommand." -msgstr "" -"`=' esperado entre las listas de nombres de variables nuevas y viejas en el " -"subcomando RENAME." +msgid "`=' expected between lists of new and old variable names on RENAME subcommand." +msgstr "`=' esperado entre las listas de nombres de variables nuevas y viejas en el subcomando RENAME." #: src/language/dictionary/modify-variables.c:208 #: src/language/dictionary/rename-variables.c:77 #, c-format -msgid "" -"Differing number of variables in old name list (%zu) and in new name list (%" -"zu)." -msgstr "" -"Diferente número de variables en la lista de nombres antigua (%zu) y en la " -"lista de nombres nueva (%zu)." +msgid "Differing number of variables in old name list (%zu) and in new name list (%zu)." +msgstr "Diferente número de variables en la lista de nombres antigua (%zu) y en la lista de nombres nueva (%zu)." #: src/language/dictionary/modify-variables.c:219 msgid "`)' expected after variable lists on RENAME subcommand." -msgstr "" -"`)' esperado después de las listas de variables en el subcomando RENAME." +msgstr "`)' esperado después de las listas de variables en el subcomando RENAME." #: src/language/dictionary/modify-variables.c:233 -msgid "" -"KEEP subcommand may be given at most once. It may not be given in " -"conjunction with the DROP subcommand." -msgstr "" -"El subcomando KEEP puede ser emitido más de una vez. Puede ser que no sea " -"facilitado en relación con el subcomando DROP." +msgid "KEEP subcommand may be given at most once. It may not be given in conjunction with the DROP subcommand." +msgstr "El subcomando KEEP puede ser emitido más de una vez. Puede ser que no sea facilitado en relación con el subcomando DROP." #: src/language/dictionary/modify-variables.c:276 -msgid "" -"DROP subcommand may be given at most once. It may not be given in " -"conjunction with the KEEP subcommand." -msgstr "" -"El subcomando DROP puede ser utilizado únicamente una vez. No puede ser " -"utilizado juntamente con el subcomando KEEP." +msgid "DROP subcommand may be given at most once. It may not be given in conjunction with the KEEP subcommand." +msgstr "El subcomando DROP puede ser utilizado únicamente una vez. No puede ser utilizado juntamente con el subcomando KEEP." #: src/language/dictionary/modify-variables.c:302 #, c-format @@ -1915,103 +1624,76 @@ msgstr "'/' o '.' esperado." #: src/language/dictionary/mrsets.c:98 #, c-format -msgid "" -"%s is not a valid name for a multiple response set. Multiple response set " -"names must begin with `$'." -msgstr "" +msgid "%s is not a valid name for a multiple response set. Multiple response set names must begin with `$'." +msgstr "%s no es un nombre válido de variable para un conjunto de respuesta múltiple. Los conjuntos de respuesta múltiple han de comenzar con `$'." #: src/language/dictionary/mrsets.c:120 #, c-format -msgid "" -"VARIABLES specified only variable %s on %s, but at least two variables are " -"required." -msgstr "" +msgid "VARIABLES specified only variable %s on %s, but at least two variables are required." +msgstr "VARIABLES especifica sólo la variable %s en %s, pero se requieren al menos dos variables." #: src/language/dictionary/mrsets.c:153 msgid "Numeric VALUE must be an integer." -msgstr "" +msgstr "VALUE numérico debe ser un entero." #: src/language/dictionary/mrsets.c:207 src/language/dictionary/mrsets.c:213 #: src/language/dictionary/mrsets.c:223 #, c-format msgid "Required %s specification missing from %s subcommand." -msgstr "" +msgstr "Falta la especificación %s requerida para el subcomando %s." #: src/language/dictionary/mrsets.c:231 src/language/dictionary/mrsets.c:269 #, c-format -msgid "" -"MDGROUP subcommand for group %s specifies a string VALUE, but the variables " -"specified for this group are numeric." -msgstr "" +msgid "MDGROUP subcommand for group %s specifies a string VALUE, but the variables specified for this group are numeric." +msgstr "El subcomando MDGROUPS para el grupo %s especifica un VALUE textual, pero las variables especificadas por este grupo son numéricas." #: src/language/dictionary/mrsets.c:255 #, c-format -msgid "" -"VALUE string on MDGROUP subcommand for group %s is %d bytes long, but it " -"must be no longer than the narrowest variable in the group, which is %s with " -"a width of %d bytes." -msgstr "" +msgid "VALUE string on MDGROUP subcommand for group %s is %d bytes long, but it must be no longer than the narrowest variable in the group, which is %s with a width of %d bytes." +msgstr "El VALUE textual del subcomando MDGROUP para el grupo %s tiene %d bytes, pero no puede ser más largo que la variable más corta del grupo, que es %s con longitud %d bytes." #: src/language/dictionary/mrsets.c:281 #, c-format -msgid "" -"MDGROUP subcommand for group %s specifies LABELSOURCE=VARLABEL but not " -"CATEGORYLABELS=COUNTEDVALUES. Ignoring LABELSOURCE." -msgstr "" +msgid "MDGROUP subcommand for group %s specifies LABELSOURCE=VARLABEL but not CATEGORYLABELS=COUNTEDVALUES. Ignoring LABELSOURCE." +msgstr "El subcomando MDGROUP para el grupo %s espeficifica LABELSOURCE=VARLABEL pero no CATEGORYLABELS=COUNTEDVALUES. Se ignorará LABELSOURCE." #: src/language/dictionary/mrsets.c:287 #, c-format -msgid "" -"MDGROUP subcommand for group %s specifies both LABEL and LABELSOURCE, but " -"only one of these subcommands may be used at a time. Ignoring LABELSOURCE." -msgstr "" +msgid "MDGROUP subcommand for group %s specifies both LABEL and LABELSOURCE, but only one of these subcommands may be used at a time. Ignoring LABELSOURCE." +msgstr "El subcomando MDGROUP para el grupo %s espeficifica LABEL i LABELSOURCE, pero sólo uno de estos subcomandos puede ser utilitzado a la vez. Se ignorará LABELSOURCE." #: src/language/dictionary/mrsets.c:327 #, c-format -msgid "" -"Variables %s and %s specified as part of multiple dichotomy group %s have " -"the same variable label. Categories represented by these variables will not " -"be distinguishable in output." -msgstr "" +msgid "Variables %s and %s specified as part of multiple dichotomy group %s have the same variable label. Categories represented by these variables will not be distinguishable in output." +msgstr "Las variables %s y %s especificadas como parte del grupo dicotomico múltiple %s tienen la misma etiqueta de variable. Las categorias representadas por estas variables no seran distingibles en los resultados." #: src/language/dictionary/mrsets.c:357 #, c-format -msgid "" -"Variable %s specified as part of multiple dichotomy group %s (which has " -"CATEGORYLABELS=COUNTEDVALUES) has no value label for its counted value. " -"This category will not be distinguishable in output." -msgstr "" +msgid "Variable %s specified as part of multiple dichotomy group %s (which has CATEGORYLABELS=COUNTEDVALUES) has no value label for its counted value. This category will not be distinguishable in output." +msgstr "La variable %s especificada como parte del grupe dicotomico múltiple %s (que tiene CATEGORYLABELS=COUNTEDVALUES) no tiene etiqueta de valor para su valor de recuento. Esta categoria no será distingible en los resultados." #: src/language/dictionary/mrsets.c:370 #, c-format -msgid "" -"Variables %s and %s specified as part of multiple dichotomy group %s (which " -"has CATEGORYLABELS=COUNTEDVALUES) have the same value label for the the " -"group's counted value. These categories will not be distinguishable in " -"output." -msgstr "" +msgid "Variables %s and %s specified as part of multiple dichotomy group %s (which has CATEGORYLABELS=COUNTEDVALUES) have the same value label for the the group's counted value. These categories will not be distinguishable in output." +msgstr "Las variables %s y %s especificadas como parte del grupo dicotomico múltiple %s (que tiene CATEGORYLABELS=COUNTEDVALUES) no tiene etiqueta de valor para su valor de recuento. Esta categoria no será distingible en los resultados." #: src/language/dictionary/mrsets.c:427 #, c-format -msgid "" -"Variables specified on MCGROUP should have the same categories, but %s and %" -"s (and possibly others) in multiple category group %s have different value " -"labels for value %s." -msgstr "" +msgid "Variables specified on MCGROUP should have the same categories, but %s and %s (and possibly others) in multiple category group %s have different value labels for value %s." +msgstr "La variables especificadas en MDGROUP deben tener las mismas categorias, pero %s y %s (y posiblemente otras) del grupo de caterorias múltiples %s tiene diferentes etiquetas de valores para el valor %s." #: src/language/dictionary/mrsets.c:484 -#, fuzzy, c-format +#, c-format msgid "No multiple response set named %s." -msgstr "Ninguna función o vector nombrado %s." +msgstr "Ningún conjunto multirespuesta llamado %s." #: src/language/dictionary/mrsets.c:538 -#, fuzzy msgid "The active file dictionary does not contain any multiple response sets." -msgstr "El diccionario del archivo activo no contiene ningún documento." +msgstr "El diccionario del fichero activo no contiene ningún conjunto de multi-respuesta. " #: src/language/dictionary/mrsets.c:548 msgid "Multiple Response Sets" -msgstr "" +msgstr "Conjuntos Multi-Respuesta" #: src/language/dictionary/mrsets.c:549 src/ui/gui/psppire-var-sheet.c:534 #: src/ui/gui/psppire-var-store.c:832 @@ -2023,17 +1705,16 @@ msgid "Variables" msgstr "Variables" #: src/language/dictionary/mrsets.c:551 -#, fuzzy msgid "Details" -msgstr "Decimales" +msgstr "Detalles" #: src/language/dictionary/mrsets.c:565 msgid "Multiple dichotomy set" -msgstr "" +msgstr "Conjunto de Dicotomias Múltiples" #: src/language/dictionary/mrsets.c:566 msgid "Multiple category set" -msgstr "" +msgstr "Conjunto de Categorias Múltiples" #: src/language/dictionary/mrsets.c:568 #: src/language/dictionary/split-file.c:84 @@ -2045,36 +1726,32 @@ msgid "Label" msgstr "Etiqueta" #: src/language/dictionary/mrsets.c:572 -#, fuzzy msgid "Label source" -msgstr "Etiqueta: %s\n" +msgstr "Fuente de etiquetas" #: src/language/dictionary/mrsets.c:574 -#, fuzzy msgid "First variable label among variables" -msgstr "Duplicar el nombre de la variable %s entre las variables de destino." +msgstr "Primera etiqueta de variable entre las variables" #: src/language/dictionary/mrsets.c:575 msgid "Provided by user" -msgstr "" +msgstr "Proporcionado por el usuario" #: src/language/dictionary/mrsets.c:576 -#, fuzzy msgid "Counted value" -msgstr "Copiar los valores anteriores" +msgstr "Valor de recuento" #: src/language/dictionary/mrsets.c:582 msgid "Category label source" -msgstr "" +msgstr "Fuente de etiquetas de categoria" #: src/language/dictionary/mrsets.c:584 -#, fuzzy msgid "Variable labels" -msgstr "Prefiero las etiquetas de variable" +msgstr "Etiquetas de variable" #: src/language/dictionary/mrsets.c:585 msgid "Value labels of counted value" -msgstr "" +msgstr "Etiquetas de valor del valor de recuento" #: src/language/dictionary/numeric.c:67 #, c-format @@ -2092,12 +1769,8 @@ msgid "Format type %s may not be used with a string variable." msgstr "El tipo de formato %s no puede utilizarse con variable de cadena." #: src/language/dictionary/rename-variables.c:49 -msgid "" -"RENAME VARS may not be used after TEMPORARY. Temporary transformations will " -"be made permanent." -msgstr "" -"RENAME VARS no puede ser utilizado después de TEMPORARY. Las " -"transformaciones temporales serán permanentes." +msgid "RENAME VARS may not be used after TEMPORARY. Temporary transformations will be made permanent." +msgstr "RENAME VARS no puede ser utilizado después de TEMPORARY. Las transformaciones temporales serán permanentes." #: src/language/dictionary/rename-variables.c:59 msgid "`(' expected." @@ -2192,7 +1865,7 @@ msgid "Type:" msgstr "Tipo:" #: src/language/dictionary/sys-file-info.c:128 -#: src/ui/gui/psppire-data-window.c:631 +#: src/ui/gui/psppire-data-window.c:634 msgid "System File" msgstr "Archivo de Sistema" @@ -2364,9 +2037,7 @@ msgstr "El nombre del vector %s se da dos veces." #: src/language/dictionary/vector.c:96 msgid "A slash must separate each vector specification in VECTOR's long form." -msgstr "" -"Una barra debe separar cada especificación de vector en la forma larga de " -"VECTOR." +msgstr "Una barra debe separar cada especificación de vector en la forma larga de VECTOR." #: src/language/dictionary/vector.c:129 msgid "Vectors must have at least one element." @@ -2409,12 +2080,8 @@ msgstr "Constante hexadecimal flotante demasiado larga." #: src/language/tests/float-format.c:201 #, c-format -msgid "" -"%s conversion of %s from %s to %s should have produced %s but actually " -"produced %s." -msgstr "" -"conversión %s de %s desde %s en %s debería haber producido %s pero " -"actualmente ha producido %s." +msgid "%s conversion of %s from %s to %s should have produced %s but actually produced %s." +msgstr "conversión %s de %s desde %s en %s debería haber producido %s pero actualmente ha producido %s." #: src/language/tests/float-format.c:247 msgid "Too many values in single command." @@ -2462,8 +2129,7 @@ msgstr "esperando nombre de archivo" #: src/language/utilities/include.c:193 #, c-format msgid "Can't find `%s' in include file search path." -msgstr "" -"No se puede encontrar `%s' en la ruta de búsqueda del archivo de inclusión." +msgstr "No se puede encontrar `%s' en la ruta de búsqueda del archivo de inclusión." #: src/language/utilities/include.c:201 #, c-format @@ -2494,13 +2160,8 @@ msgid "expecting BREAK" msgstr "esperando BREAK" #: src/language/stats/aggregate.c:252 -msgid "" -"When PRESORTED is specified, specifying sorting directions with (A) or (D) " -"has no effect. Output data will be sorted the same way as the input data." -msgstr "" -"Cuando se especifica PRESORTED, dar directivas de ordenación con (A) o (D) " -"no tiene efecto. Los datos de salida serán ordenados de la misma manera que " -"los de entrada." +msgid "When PRESORTED is specified, specifying sorting directions with (A) or (D) has no effect. Output data will be sorted the same way as the input data." +msgstr "Cuando se especifica PRESORTED, dar directivas de ordenación con (A) o (D) no tiene efecto. Los datos de salida serán ordenados de la misma manera que los de entrada." #: src/language/stats/aggregate.c:424 msgid "expecting aggregation function" @@ -2519,8 +2180,7 @@ msgstr "Argumento perdido %zu para %s." #: src/language/stats/aggregate.c:507 #, c-format msgid "Arguments to %s must be of same type as source variables." -msgstr "" -"Los argumentos para %s deben ser del mismo tipo que las variables de origen." +msgstr "Los argumentos para %s deben ser del mismo tipo que las variables de origen." #: src/language/stats/aggregate.c:517 src/language/expressions/parse.c:885 msgid "expecting `)'" @@ -2528,37 +2188,23 @@ msgstr "esperando ')'" #: src/language/stats/aggregate.c:529 #, c-format -msgid "" -"Number of source variables (%zu) does not match number of target variables (%" -"zu)." -msgstr "" -"Número de variables de origen (%zu) no coincide con el número de variables " -"de destino (%zu)." +msgid "Number of source variables (%zu) does not match number of target variables (%zu)." +msgstr "Número de variables de origen (%zu) no coincide con el número de variables de destino (%zu)." #: src/language/stats/aggregate.c:545 #, c-format -msgid "" -"The value arguments passed to the %s function are out-of-order. They will " -"be treated as if they had been specified in the correct order." -msgstr "" -"El valor de los argumentos pasados en la función %s están fuera de orden. " -"Serán tratatos como si hubieran sido especificados en el orden correcto." +msgid "The value arguments passed to the %s function are out-of-order. They will be treated as if they had been specified in the correct order." +msgstr "El valor de los argumentos pasados en la función %s están fuera de orden. Serán tratatos como si hubieran sido especificados en el orden correcto." #: src/language/stats/aggregate.c:615 #, c-format -msgid "" -"Variable name %s is not unique within the aggregate file dictionary, which " -"contains the aggregate variables and the break variables." -msgstr "" -"El nombre de variable %s no es único dentro del archivo de diccionario " -"agregado, que contiene las variables agregadas y las variables de corte." +msgid "Variable name %s is not unique within the aggregate file dictionary, which contains the aggregate variables and the break variables." +msgstr "El nombre de variable %s no es único dentro del archivo de diccionario agregado, que contiene las variables agregadas y las variables de corte." #: src/language/stats/autorecode.c:116 #, c-format msgid "Source variable count (%zu) does not match target variable count (%zu)." -msgstr "" -"El recuento de la variable de origen (%zu) no coincide con el recuento de la " -"variable de destino (%zu)." +msgstr "El recuento de la variable de origen (%zu) no coincide con el recuento de la variable de destino (%zu)." #: src/language/stats/autorecode.c:128 #, c-format @@ -2624,12 +2270,8 @@ msgstr "Sig. Exact.(%d-tailed)" #: src/language/stats/chisquare.c:150 #, c-format -msgid "" -"CHISQUARE test specified %d expected values, but %d distinct values were " -"encountered in variable %s." -msgstr "" -"Prueba CHISQUARE especifica %d valores esperados, pero %d diferentes valores " -"se encontraron la variable %s." +msgid "CHISQUARE test specified %d expected values, but %d distinct values were encountered in variable %s." +msgstr "Prueba CHISQUARE especifica %d valores esperados, pero %d diferentes valores se encontraron la variable %s." #: src/language/stats/chisquare.c:161 src/language/stats/chisquare.c:200 msgid "Observed N" @@ -2693,14 +2335,12 @@ msgid "Std. Deviation" msgstr "Desviación Estándar" #: src/language/stats/correlations.c:190 src/language/stats/factor.c:1620 -#, fuzzy msgid "Correlations" -msgstr "Correlación" +msgstr "Correlaciones" #: src/language/stats/correlations.c:216 -#, fuzzy msgid "Pearson Correlation" -msgstr "Correlación de Spearman" +msgstr "Correlación de Pearson" #: src/language/stats/correlations.c:218 src/language/stats/oneway.q:686 #: src/language/stats/t-test.q:753 src/language/stats/t-test.q:924 @@ -2709,16 +2349,14 @@ msgid "Sig. (2-tailed)" msgstr "Sign. (2-colas)" #: src/language/stats/correlations.c:218 -#, fuzzy msgid "Sig. (1-tailed)" -msgstr "Sign. (2-colas)" +msgstr "Sig. (1-cola)" #: src/language/stats/correlations.c:222 msgid "Cross-products" -msgstr "" +msgstr "Productos-cruzados" #: src/language/stats/correlations.c:223 -#, fuzzy msgid "Covariance" msgstr "Covarianza" @@ -2798,13 +2436,8 @@ msgid "expecting statistic name: reverting to default" msgstr "esperando nombre del estadístico: vuelve a aplicar el defecto" #: src/language/stats/descriptives.c:523 -msgid "" -"Ran out of generic names for Z-score variables. There are only 126 generic " -"names: ZSC001-ZSC0999, STDZ01-STDZ09, ZZZZ01-ZZZZ09, ZQZQ01-ZQZQ09." -msgstr "" -"Se han agotado los nombres genéricos para las variables Z. Sólo hay 126 " -"nombres genéricos: ZSC001-ZSC0999, STDZ01-STDZ09, ZZZZ01-ZZZZ09, ZQZQ01-" -"ZQZQ09." +msgid "Ran out of generic names for Z-score variables. There are only 126 generic names: ZSC001-ZSC0999, STDZ01-STDZ09, ZZZZ01-ZZZZ09, ZQZQ01-ZQZQ09." +msgstr "Se han agotado los nombres genéricos para las variables Z. Sólo hay 126 nombres genéricos: ZSC001-ZSC0999, STDZ01-STDZ09, ZZZZ01-ZZZZ09, ZQZQ01-ZQZQ09." #: src/language/stats/descriptives.c:555 msgid "Mapping of variables to corresponding Z-scores." @@ -2855,40 +2488,35 @@ msgstr "La variable %s se especifica dos veces en los criterios de ordenación." #: src/language/stats/factor.c:803 msgid "Factor analysis on a single variable is not useful." -msgstr "" +msgstr "El análisis factorial para una única variable es inútil." #: src/language/stats/factor.c:1206 -#, fuzzy msgid "Component Number" -msgstr "Columna Número: 0" +msgstr "Número de Componente" #: src/language/stats/factor.c:1206 -#, fuzzy msgid "Factor Number" -msgstr "Número de Caso" +msgstr "Número de Factores" #: src/language/stats/factor.c:1237 -#, fuzzy msgid "Communalities" -msgstr "Comentarios:" +msgstr "Comunalidades" #: src/language/stats/factor.c:1243 msgid "Initial" -msgstr "" +msgstr "Inicial" #: src/language/stats/factor.c:1246 msgid "Extraction" -msgstr "" +msgstr "Extracción" #: src/language/stats/factor.c:1310 src/language/stats/factor.c:1437 -#, fuzzy msgid "Component" -msgstr "Comentarios:" +msgstr "Componente" #: src/language/stats/factor.c:1315 src/language/stats/factor.c:1439 -#, fuzzy msgid "Factor" -msgstr "_Factor:" +msgstr "Factor" #: src/language/stats/factor.c:1347 src/language/stats/factor.c:1495 #: src/ui/gui/psppire-data-store.c:755 src/ui/gui/psppire-var-store.c:699 @@ -2900,83 +2528,72 @@ msgstr "%d" #: src/language/stats/factor.c:1412 msgid "Total Variance Explained" -msgstr "" +msgstr "Varianza Total Explicada" #: src/language/stats/factor.c:1444 msgid "Initial Eigenvalues" -msgstr "" +msgstr "Valores propios Iniciales" #: src/language/stats/factor.c:1450 msgid "Extraction Sums of Squared Loadings" -msgstr "" +msgstr "Sumas de Pesos al Cuadrado de la Extracción" #: src/language/stats/factor.c:1456 msgid "Rotation Sums of Squared Loadings" -msgstr "" +msgstr "Rotación: Sumas de Pesos al Cuadrado " #: src/language/stats/factor.c:1464 -#, fuzzy, no-c-format +#, no-c-format msgid "% of Variance" -msgstr "Varianza" +msgstr "% de Varianza" #: src/language/stats/factor.c:1465 msgid "Cumulative %" -msgstr "" +msgstr "% Acumulado" #: src/language/stats/factor.c:1578 -#, fuzzy msgid "Correlation Matrix" -msgstr "Correlación" +msgstr "Matriz de Correlación" #: src/language/stats/factor.c:1632 -#, fuzzy msgid "Sig. 1-tailed" -msgstr "Sign. (2-colas)" +msgstr "Sig. (1-cola)" #: src/language/stats/factor.c:1666 -#, fuzzy msgid "Determinant" -msgstr "Dependiente" +msgstr "Determinante" #: src/language/stats/factor.c:1743 msgid "Analysis N" -msgstr "" +msgstr "Análisis N" #: src/language/stats/factor.c:1776 -msgid "" -"The FACTOR criteria result in zero factors extracted. Therefore no analysis " -"will be performed." -msgstr "" +msgid "The FACTOR criteria result in zero factors extracted. Therefore no analysis will be performed." +msgstr "El criterio FACTOR resulta en la extracción de cero factores. No se puede realizar ningún análisis." #: src/language/stats/factor.c:1782 -msgid "" -"The FACTOR criteria result in more factors than variables, which is not " -"meaningful. No analysis will be performed." -msgstr "" +msgid "The FACTOR criteria result in more factors than variables, which is not meaningful. No analysis will be performed." +msgstr "El criterio FACTOR resulta en más factores que variables, y esto no tiene ningún sentido." #: src/language/stats/factor.c:1865 msgid "Component Matrix" -msgstr "" +msgstr "Matriz de Componentes" #: src/language/stats/factor.c:1865 -#, fuzzy msgid "Factor Matrix" -msgstr "Lista de Factores:" +msgstr "Matriz de Factores" #: src/language/stats/factor.c:1871 msgid "Rotated Component Matrix" -msgstr "" +msgstr "Matriz Rotada de Componentes" #: src/language/stats/factor.c:1871 -#, fuzzy msgid "Rotated Factor Matrix" -msgstr "Lista de Factores:" +msgstr "Matriz Rotada de Factores" #: src/language/stats/flip.c:98 -msgid "" -"FLIP ignores TEMPORARY. Temporary transformations will be made permanent." -msgstr "" -"FLIP ignora TEMPORARY. Las transformaciones temporales serán permanentes." +msgid "FLIP ignores TEMPORARY. Temporary transformations will be made permanent." +msgstr "FLIP ignora TEMPORARY. Las transformaciones temporales serán permanentes." #: src/language/stats/flip.c:150 msgid "Could not create temporary file for FLIP." @@ -3192,18 +2809,11 @@ msgstr "Sig. Asint. (2-colas)" #: src/language/data-io/combine-files.c:210 msgid "Cannot specify the active file since no active file has been defined." -msgstr "" -"No se puede especificar el fichero activo ya que ningún fichero activo ha " -"sido definido." +msgstr "No se puede especificar el fichero activo ya que ningún fichero activo ha sido definido." #: src/language/data-io/combine-files.c:216 -msgid "" -"This command may not be used after TEMPORARY when the active file is an " -"input source. Temporary transformations will be made permanent." -msgstr "" -"Este comando no puede ser utilizado después de TEMPORARY cuando el archivo " -"activo es una fuente de entrada. Las transformaciones temporales serán " -"permanentes." +msgid "This command may not be used after TEMPORARY when the active file is an input source. Temporary transformations will be made permanent." +msgstr "Este comando no puede ser utilizado después de TEMPORARY cuando el archivo activo es una fuente de entrada. Las transformaciones temporales serán permanentes." #: src/language/data-io/combine-files.c:250 msgid "Multiple IN subcommands for a single FILE or TABLE." @@ -3225,26 +2835,18 @@ msgstr "Se necesita el subcomando BY." #: src/language/data-io/combine-files.c:381 #: src/language/data-io/combine-files.c:386 -#, fuzzy, c-format +#, c-format msgid "BY is required when %s is specified." -msgstr "BY es necesario cuando SORT se especifica." +msgstr "BY es necesario cuando se especifica %s." #: src/language/data-io/combine-files.c:513 -msgid "" -"Combining files with incompatible encodings. String data may not be " -"represented correctly." -msgstr "" -"Combinando archivos con codificaciones incompatibles. Los datos de la cadena " -"no podrán estar representados correctamente." +msgid "Combining files with incompatible encodings. String data may not be represented correctly." +msgstr "Combinando archivos con codificaciones incompatibles. Los datos de la cadena no podrán estar representados correctamente." #: src/language/data-io/combine-files.c:545 #, c-format -msgid "" -"Variable %s in file %s has different type or width from the same variable in " -"earlier file." -msgstr "" -"La variable %s en el archivo %s es de tipo o tamaño diferente respecto de la " -"misma variable en un archivo anterior." +msgid "Variable %s in file %s has different type or width from the same variable in earlier file." +msgstr "La variable %s en el archivo %s es de tipo o tamaño diferente respecto de la misma variable en un archivo anterior." #: src/language/data-io/combine-files.c:551 #, c-format @@ -3264,17 +2866,12 @@ msgstr "En un archivo anterior, %s era numérico." #: src/language/data-io/combine-files.c:562 #, c-format msgid "In an earlier file, %s was a string variable with width %d." -msgstr "" -"En un archivo anterior, %s era una variable de cadena con un tamaño de %d." +msgstr "En un archivo anterior, %s era una variable de cadena con un tamaño de %d." #: src/language/data-io/combine-files.c:601 #, c-format -msgid "" -"Variable name %s specified on %s subcommand duplicates an existing variable " -"name." -msgstr "" -"Nombre de la variable %s especificado en el subcomando %s duplica el nombre " -"de la variable existente." +msgid "Variable name %s specified on %s subcommand duplicates an existing variable name." +msgstr "Nombre de la variable %s especificado en el subcomando %s duplica el nombre de la variable existente." #: src/language/data-io/combine-files.c:762 #, c-format @@ -3295,9 +2892,7 @@ msgstr "Sólo uno de FIXED, FREE, o LIST puede ser especificado." #: src/language/data-io/data-list.c:243 msgid "Encoding should not be specified for inline data. It will be ignored." -msgstr "" -"La codificación no debe ser especificada por los datos en línea. Será " -"ignorada." +msgstr "La codificación no debe ser especificada por los datos en línea. Será ignorada." #: src/language/data-io/data-list.c:254 msgid "The END subcommand may be used only with DATA LIST FIXED." @@ -3326,9 +2921,7 @@ msgstr "Existe ya una variable de cadena %s con ancho diferente." #: src/language/data-io/data-list.c:390 #, c-format msgid "Cannot place variable %s on record %d when RECORDS=%d is specified." -msgstr "" -"No se puede poner la variable %s en el registro %d cuando RECORDS=%d está " -"especificado." +msgstr "No se puede poner la variable %s en el registro %d cuando RECORDS=%d está especificado." #: src/language/data-io/data-parser.c:460 #: src/language/data-io/data-parser.c:469 @@ -3347,12 +2940,8 @@ msgstr "Caso parcial descartado. La primera variable que faltaba era %s." #: src/language/data-io/data-parser.c:610 #, c-format -msgid "" -"Missing value(s) for all variables from %s onward. These will be filled " -"with the system-missing value or blanks, as appropriate." -msgstr "" -"Valor(es) perdido(s) para todas las variables desde %st. Éstos se llenan " -"con el valor perdido del sistema o espacios en blanco, según corresponda." +msgid "Missing value(s) for all variables from %s onward. These will be filled with the system-missing value or blanks, as appropriate." +msgstr "Valor(es) perdido(s) para todas las variables desde %st. Éstos se llenan con el valor perdido del sistema o espacios en blanco, según corresponda." #: src/language/data-io/data-parser.c:630 msgid "Record ends in data not part of any field." @@ -3395,19 +2984,11 @@ msgstr "archivo de datos" #: src/language/data-io/data-reader.c:150 #, c-format msgid "Could not open \"%s\" for reading as a data file: %s." -msgstr "" -"No se ha podido abrir \"%s\" para la lectura como un archivo de datos: %s." +msgstr "No se ha podido abrir \"%s\" para la lectura como un archivo de datos: %s." #: src/language/data-io/data-reader.c:192 -msgid "" -"Unexpected end-of-file while reading data in BEGIN DATA. This probably " -"indicates a missing or misformatted END DATA command. END DATA must appear " -"by itself on a single line with exactly one space between words." -msgstr "" -"Final de archivo inesperado durante la lectura de datos en BEGIN DATA. Esto " -"probablemente indica una pérdida o formato erróneo del comando END DATA. " -"END DATA debe aparecer por sí misma en una sola línea con exactamente un " -"espacio entre las palabras." +msgid "Unexpected end-of-file while reading data in BEGIN DATA. This probably indicates a missing or misformatted END DATA command. END DATA must appear by itself on a single line with exactly one space between words." +msgstr "Final de archivo inesperado durante la lectura de datos en BEGIN DATA. Esto probablemente indica una pérdida o formato erróneo del comando END DATA. END DATA debe aparecer por sí misma en una sola línea con exactamente un espacio entre las palabras." #: src/language/data-io/data-reader.c:217 #, c-format @@ -3453,19 +3034,13 @@ msgid "Attempt to read beyond END DATA." msgstr "Intento de leer más allá de END DATA." #: src/language/data-io/data-reader.c:708 -msgid "" -"This command is not valid here since the current input program does not " -"access the inline file." -msgstr "" -"Esta orden no es válida ya que el programa de entrada actual no tiene acceso " -"al archivo en línea." +msgid "This command is not valid here since the current input program does not access the inline file." +msgstr "Esta orden no es válida ya que el programa de entrada actual no tiene acceso al archivo en línea." #: src/language/data-io/data-writer.c:74 #, c-format msgid "An error occurred while opening \"%s\" for writing as a data file: %s." -msgstr "" -"Se ha producido un error al abrir \"%s\" para escribirlo como un archivo de " -"datos: %s." +msgstr "Se ha producido un error al abrir \"%s\" para escribirlo como un archivo de datos: %s." #: src/language/data-io/data-writer.c:191 #, c-format @@ -3479,12 +3054,8 @@ msgstr "TYPE %s no admitido" #: src/language/data-io/get-data.c:260 #, c-format -msgid "" -"%s is allowed only with %s arrangement, but %s arrangement was stated or " -"implied earlier in this command." -msgstr "" -"%s sólo se permite con configuración %s, pero previamente en este comando se " -"ha establecido la configuración %s." +msgid "%s is allowed only with %s arrangement, but %s arrangement was stated or implied earlier in this command." +msgstr "%s sólo se permite con configuración %s, pero previamente en este comando se ha establecido la configuración %s." #: src/language/data-io/get-data.c:315 msgid "expecting FIXED or DELIMITED" @@ -3511,12 +3082,8 @@ msgid "Value of PERCENT must be between 1 and 100." msgstr "Valor de PERCENT debe estar entre 1 y 100." #: src/language/data-io/get-data.c:447 -msgid "" -"In compatible syntax mode, the QUALIFIER string must contain exactly one " -"character." -msgstr "" -"En el modo de sintaxis compatible, la cadena QUALIFIER debe contener " -"exactamente un carácter." +msgid "In compatible syntax mode, the QUALIFIER string must contain exactly one character." +msgstr "En el modo de sintaxis compatible, la cadena QUALIFIER debe contener exactamente un carácter." #: src/language/data-io/get-data.c:462 msgid "expecting VARIABLES" @@ -3525,22 +3092,13 @@ msgstr "esperando VARIABLES" #: src/language/data-io/get-data.c:484 #: src/language/data-io/placement-parser.c:378 #, c-format -msgid "" -"The record number specified, %ld, is at or before the previous record, %d. " -"Data fields must be listed in order of increasing record number." -msgstr "" -"El número de registro especificado, %ld, es en o antes del registro " -"anterior, %d. Los campos de datos deben ser listados en orden incremental " -"del número de registro." +msgid "The record number specified, %ld, is at or before the previous record, %d. Data fields must be listed in order of increasing record number." +msgstr "El número de registro especificado, %ld, es en o antes del registro anterior, %d. Los campos de datos deben ser listados en orden incremental del número de registro." #: src/language/data-io/get-data.c:493 #, c-format -msgid "" -"The record number specified, %ld, exceeds the number of records per case " -"specified on FIXCASE, %d." -msgstr "" -"El número de registro especificado, %ld, excede el número de registros para " -"casos especificados en FIXCASE, %d." +msgid "The record number specified, %ld, exceeds the number of records per case specified on FIXCASE, %d." +msgstr "El número de registro especificado, %ld, excede el número de registros para casos especificados en FIXCASE, %d." #: src/language/data-io/get.c:99 msgid "expecting COMM or TAPE" @@ -3559,34 +3117,22 @@ msgid "COLUMN subcommand multiply specified." msgstr "subcomando COLUMN especificado múltiples veces." #: src/language/data-io/inpt-pgm.c:338 -msgid "" -"REREAD: Column numbers must be positive finite numbers. Column set to 1." -msgstr "" -"REREAD: Los números de columna tienen que ser números positivos finitos. La " -"columna se establece en 1." +msgid "REREAD: Column numbers must be positive finite numbers. Column set to 1." +msgstr "REREAD: Los números de columna tienen que ser números positivos finitos. La columna se establece en 1." #: src/language/data-io/placement-parser.c:87 #, c-format -msgid "" -"Number of variables specified (%zu) differs from number of variable formats " -"(%zu)." -msgstr "" -"Número de variables especificadas (%zu) difiere del número de formatos de la " -"variable (%zu)." +msgid "Number of variables specified (%zu) differs from number of variable formats (%zu)." +msgstr "Número de variables especificadas (%zu) difiere del número de formatos de la variable (%zu)." #: src/language/data-io/placement-parser.c:97 -msgid "" -"SPSS-like or Fortran-like format specification expected after variable names." -msgstr "" -"Después del nombre de las variables se esperan especificaciones en formato " -"tipo-SPSS o tipo-Fortran." +msgid "SPSS-like or Fortran-like format specification expected after variable names." +msgstr "Después del nombre de las variables se esperan especificaciones en formato tipo-SPSS o tipo-Fortran." #: src/language/data-io/placement-parser.c:119 #, c-format msgid "The %d columns %d-%d can't be evenly divided into %zu fields." -msgstr "" -"Las %d columnas %d-%d no pueden ser uniformemente dividas entre los campos %" -"zu." +msgstr "Las %d columnas %d-%d no pueden ser uniformemente dividas entre los campos %zu." #: src/language/data-io/placement-parser.c:305 msgid "Column positions for fields must be positive." @@ -3598,13 +3144,11 @@ msgstr "Las posiciones de columnas para los campos no pueden ser negativas." #: src/language/data-io/placement-parser.c:344 msgid "The ending column for a field must be greater than the starting column." -msgstr "" -"La columna final de un campo tiene que ser mayor que la columna de inicio." +msgstr "La columna final de un campo tiene que ser mayor que la columna de inicio." #: src/language/data-io/print-space.c:116 msgid "The expression on PRINT SPACE evaluated to the system-missing value." -msgstr "" -"La expresión en PRINT SPACE se evalúa por el sistema de valores perdidos." +msgstr "La expresión en PRINT SPACE se evalúa por el sistema de valores perdidos." #: src/language/data-io/print-space.c:119 #, c-format @@ -3618,23 +3162,21 @@ msgstr "esperando un subcomando válido" #: src/language/data-io/print.c:267 #, c-format msgid "Output calls for %d records but %zu specified on RECORDS subcommand." -msgstr "" -"Resultados obtenidos para %d registros, pero %zu especificados en el " -"subcomando RECORDS." +msgstr "Resultados obtenidos para %d registros, pero %zu especificados en el subcomando RECORDS." #: src/language/data-io/print.c:436 -#, fuzzy, c-format +#, c-format msgid "Writing %zu record to %s." msgid_plural "Writing %zu records to %s." -msgstr[0] "Escribiendo %d registro en %s." -msgstr[1] "Escribiendot %d registros en %s." +msgstr[0] "Escribiendo el registro %zu en %s." +msgstr[1] "Escribiendo %zu registros en %s." #: src/language/data-io/print.c:440 -#, fuzzy, c-format +#, c-format msgid "Writing %zu record." msgid_plural "Writing %zu records." -msgstr[0] "Escribiendo %d registro." -msgstr[1] "Escribiendo %d registros." +msgstr[0] "Escribiendo el registro %zu." +msgstr[1] "Escribiendo %zu registros." #: src/language/data-io/save.c:223 src/language/data-io/save.c:238 #: src/language/data-io/save.c:266 @@ -3644,15 +3186,8 @@ msgstr "esperando %s o %s" #: src/language/data-io/trim.c:88 #, c-format -msgid "" -"Cannot rename %s as %s because there already exists a variable named %s. To " -"rename variables with overlapping names, use a single RENAME subcommand such " -"as \"/RENAME (A=B)(B=C)(C=A)\", or equivalently, \"/RENAME (A B C=B C A)\"." -msgstr "" -"No se puede cambiar el nombre %s por %s porque ya hay una variable nombrada %" -"s. Para cambiar el nombre de las variables con nombre superpuesto, utilitce " -"el subcomando RENAME únicamente como \"/RENAME (A=B)(B=C)(C=A)\", o " -"equivalentemente, \"/RENAME (A B C=B C A)\"." +msgid "Cannot rename %s as %s because there already exists a variable named %s. To rename variables with overlapping names, use a single RENAME subcommand such as \"/RENAME (A=B)(B=C)(C=A)\", or equivalently, \"/RENAME (A B C=B C A)\"." +msgstr "No se puede cambiar el nombre %s por %s porque ya hay una variable nombrada %s. Para cambiar el nombre de las variables con nombre superpuesto, utilitce el subcomando RENAME únicamente como \"/RENAME (A=B)(B=C)(C=A)\", o equivalentemente, \"/RENAME (A B C=B C A)\"." #: src/language/data-io/trim.c:114 msgid "`=' expected after variable list." @@ -3660,14 +3195,8 @@ msgstr "`=' esperado después de lista de variables." #: src/language/data-io/trim.c:122 #, c-format -msgid "" -"Number of variables on left side of `=' (%zu) does not match number of " -"variables on right side (%zu), in parenthesized group %d of RENAME " -"subcommand." -msgstr "" -"El número de variables en el lado izquierdo de `=' (%zu) no coincide con el " -"número de variables en el lado derecho (%zu), en el grupo entre paréntesis %" -"d del subcomando RENAME." +msgid "Number of variables on left side of `=' (%zu) does not match number of variables on right side (%zu), in parenthesized group %d of RENAME subcommand." +msgstr "El número de variables en el lado izquierdo de `=' (%zu) no coincide con el número de variables en el lado derecho (%zu), en el grupo entre paréntesis %d del subcomando RENAME." #: src/language/data-io/trim.c:135 #, c-format @@ -3688,115 +3217,60 @@ msgid "Duplicate variable name %s." msgstr "Nombre de la variable %s duplicado." #: src/language/expressions/helpers.c:51 -msgid "" -"One of the arguments to a DATE function is not an integer. The result will " -"be system-missing." -msgstr "" -"Uno de los argumentos para función DATE no es un entero. El resultado será " -"perdido por el sistema." +msgid "One of the arguments to a DATE function is not an integer. The result will be system-missing." +msgstr "Uno de los argumentos para función DATE no es un entero. El resultado será perdido por el sistema." #: src/language/expressions/helpers.c:73 -msgid "" -"The week argument to DATE.WKYR is not an integer. The result will be system-" -"missing." -msgstr "" -"El argumento de semana para DATE.WKYR no es un entero. El resultado será " -"perdido del sistema." +msgid "The week argument to DATE.WKYR is not an integer. The result will be system-missing." +msgstr "El argumento de semana para DATE.WKYR no es un entero. El resultado será perdido del sistema." #: src/language/expressions/helpers.c:79 -msgid "" -"The week argument to DATE.WKYR is outside the acceptable range of 1 to 53. " -"The result will be system-missing." -msgstr "" -"El argumento de semana para DATE.WKYR está fuera del intervalo aceptable " -"entre 1 y 53. El resultado será perdido del sistema." +msgid "The week argument to DATE.WKYR is outside the acceptable range of 1 to 53. The result will be system-missing." +msgstr "El argumento de semana para DATE.WKYR está fuera del intervalo aceptable entre 1 y 53. El resultado será perdido del sistema." #: src/language/expressions/helpers.c:101 -msgid "" -"The day argument to DATE.YRDAY is not an integer. The result will be system-" -"missing." -msgstr "" -"El argumento de día para DATE.YRDAY no es un entero. El resultado será " -"perdido del sistema." +msgid "The day argument to DATE.YRDAY is not an integer. The result will be system-missing." +msgstr "El argumento de día para DATE.YRDAY no es un entero. El resultado será perdido del sistema." #: src/language/expressions/helpers.c:107 -msgid "" -"The day argument to DATE.YRDAY is outside the acceptable range of 1 to 366. " -"The result will be system-missing." -msgstr "" -"El argumento de día para DATE.YRDAY está fuera del intervalo aceptable entre " -"1 y 366. El resultado será perdido del sistema." +msgid "The day argument to DATE.YRDAY is outside the acceptable range of 1 to 366. The result will be system-missing." +msgstr "El argumento de día para DATE.YRDAY está fuera del intervalo aceptable entre 1 y 366. El resultado será perdido del sistema." #: src/language/expressions/helpers.c:129 -msgid "" -"The year argument to YRMODA is greater than 47516. The result will be " -"system-missing." -msgstr "" -"El argumento año para YRMODA es más grande que 47516. El resultado será " -"perdido del sistema." +msgid "The year argument to YRMODA is greater than 47516. The result will be system-missing." +msgstr "El argumento año para YRMODA es más grande que 47516. El resultado será perdido del sistema." #: src/language/expressions/helpers.c:182 #, c-format -msgid "" -"Unrecognized date unit \"%.*s\". Valid date units are \"years\", \"quarters" -"\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", and \"seconds\"." -msgstr "" -"Unidad de fecha \"%.*s\" no reconocida. Las unidades de fecha válidas son " -"\"años\", \"trimestres\", \"meses\", \"semanas\", \"días\", \"horas\", " -"\"minutos\", y \"segundos\"." +msgid "Unrecognized date unit \"%.*s\". Valid date units are \"years\", \"quarters\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", and \"seconds\"." +msgstr "Unidad de fecha \"%.*s\" no reconocida. Las unidades de fecha válidas son \"años\", \"trimestres\", \"meses\", \"semanas\", \"días\", \"horas\", \"minutos\", y \"segundos\"." #: src/language/expressions/helpers.c:332 -msgid "" -"Invalid DATESUM method. Valid choices are \"closest\" and \"rollover\"." -msgstr "" -"Método DATESUM inválido. Las opciones válidas son \"cercana\" y \"cumplida" -"\"." +msgid "Invalid DATESUM method. Valid choices are \"closest\" and \"rollover\"." +msgstr "Método DATESUM inválido. Las opciones válidas son \"cercana\" y \"cumplida\"." #: src/language/expressions/parse.c:259 #, c-format -msgid "" -"Type mismatch: expression has %s type, but a numeric value is required here." -msgstr "" -"Incompatibilidad de tipo: la expresión tiene tipo %s, pero aquí se pide un " -"valor numérico." +msgid "Type mismatch: expression has %s type, but a numeric value is required here." +msgstr "Incompatibilidad de tipo: la expresión tiene tipo %s, pero aquí se pide un valor numérico." #: src/language/expressions/parse.c:271 #, c-format -msgid "" -"Type mismatch: expression has %s type, but a string value is required here." -msgstr "" -"Incompatibilidad de tipo: la expresión tiene tipo %s, pero aquí se pide un " -"valor de cadena." +msgid "Type mismatch: expression has %s type, but a string value is required here." +msgstr "Incompatibilidad de tipo: la expresión tiene tipo %s, pero aquí se pide un valor de cadena." #: src/language/expressions/parse.c:427 #, c-format msgid "Type mismatch while applying %s operator: cannot convert %s to %s." -msgstr "" -"Incompatibilidad de los tipos mientras se aplica el operador %s: no se puede " -"convertir %s en %s." +msgstr "Incompatibilidad de los tipos mientras se aplica el operador %s: no se puede convertir %s en %s." #: src/language/expressions/parse.c:643 -msgid "" -"Chaining relational operators (e.g. \"a < b < c\") will not produce the " -"mathematically expected result. Use the AND logical operator to fix the " -"problem (e.g. \"a < b AND b < c\"). If chaining is really intended, " -"parentheses will disable this warning (e.g. \"(a < b) < c\".)" -msgstr "" -"El encadenamiento de operadores relacionales (p.e. \"a < b < c\") no " -"producirà el resultado esperado matemáticamente. Utilizar el operador lógico " -"AND para solucionar el problema (p.e. \"a < b AND b < c\"). Si el " -"encadenamiento es realmente intencionado, los paréntesis desactivaran esta " -"alerta (p.e. \"(a < b) < c\".)" +msgid "Chaining relational operators (e.g. \"a < b < c\") will not produce the mathematically expected result. Use the AND logical operator to fix the problem (e.g. \"a < b AND b < c\"). If chaining is really intended, parentheses will disable this warning (e.g. \"(a < b) < c\".)" +msgstr "El encadenamiento de operadores relacionales (p.e. \"a < b < c\") no producirà el resultado esperado matemáticamente. Utilizar el operador lógico AND para solucionar el problema (p.e. \"a < b AND b < c\"). Si el encadenamiento es realmente intencionado, los paréntesis desactivaran esta alerta (p.e. \"(a < b) < c\".)" #: src/language/expressions/parse.c:744 -msgid "" -"The exponentiation operator (\"**\") is left-associative, even though right-" -"associative semantics are more useful. That is, \"a**b**c\" equals \"(a**b)" -"**c\", not as \"a**(b**c)\". To disable this warning, insert parentheses." -msgstr "" -"El operador de exponenciación (\"**\") aparece a la izquierda, aunque si " -"aparece a la derecha es más útil. Es decir, \"a**b**c\" es igual a \"(a**b)" -"**c\", no a \"a**(b**c)\". Para desactivar esta alerta, insertar paréntesis." +msgid "The exponentiation operator (\"**\") is left-associative, even though right-associative semantics are more useful. That is, \"a**b**c\" equals \"(a**b)**c\", not as \"a**(b**c)\". To disable this warning, insert parentheses." +msgstr "El operador de exponenciación (\"**\") aparece a la izquierda, aunque si aparece a la derecha es más útil. Es decir, \"a**b**c\" es igual a \"(a**b)**c\", no a \"a**(b**c)\". Para desactivar esta alerta, insertar paréntesis." #: src/language/expressions/parse.c:809 #, c-format @@ -3839,12 +3313,8 @@ msgstr "%s requiere como mínimo %d argumentos válidos en la lista." #: src/language/expressions/parse.c:1110 #, c-format -msgid "" -"With %s, using minimum valid argument count of %d does not make sense when " -"passing only %d arguments in list." -msgstr "" -"Con %s, no tiene sentido utilizar %d como recuento mínimo de argumento " -"válido si se pasan únicamente %d argumentos en la lista." +msgid "With %s, using minimum valid argument count of %d does not make sense when passing only %d arguments in list." +msgstr "Con %s, no tiene sentido utilizar %d como recuento mínimo de argumento válido si se pasan únicamente %d argumentos en la lista." #: src/language/expressions/parse.c:1164 #, c-format @@ -3893,9 +3363,8 @@ msgid "warning" msgstr "aviso" #: src/libpspp/message.c:135 -#, fuzzy msgid "note" -msgstr "Centro" +msgstr "anotación" #: src/libpspp/tmpfile.c:56 msgid "failed to create temporary file" @@ -3918,14 +3387,14 @@ msgid "writing to temporary file" msgstr "escribiendo en un archivo temporal" #: src/libpspp/zip-writer.c:91 -#, fuzzy, c-format +#, c-format msgid "%s: error opening output file" -msgstr "ascii: abriendo el archivo de resultados \"%s\"" +msgstr "%s: error abriendo el archivo de resultados" #: src/libpspp/zip-writer.c:224 -#, fuzzy, c-format +#, c-format msgid "%s: write failed" -msgstr "%s: No es un archivo portátil." +msgstr "%s: error de escritura" #: src/math/percentiles.c:36 msgid "HAverage" @@ -3950,17 +3419,12 @@ msgstr "Empírico promediado" #: src/output/ascii.c:278 #, c-format msgid "%s: %s must be positive integer or `auto'" -msgstr "" +msgstr "%s: %s debe ser un entero positivo o `auto'" #: src/output/ascii.c:311 -#, fuzzy, c-format -msgid "" -"ascii: page excluding margins and headers must be at least %d characters " -"wide by %d lines long, but as configured is only %d characters by %d lines" -msgstr "" -"ascii: excluyendo los márgenes y encabezamientos la página tiene que ser " -"como mínimo de 59 carácteres de ancho por 15 líneas de largo, pero tal como " -"está configurada la página únicamente tiene %d carácteres y %d líneas" +#, c-format +msgid "ascii: page excluding margins and headers must be at least %d characters wide by %d lines long, but as configured is only %d characters by %d lines" +msgstr "ascii: excluyendo los margenes y encabezamientos la página debe tener como mínimo %d caracteres de ancho por %d líneas de largo, pero tal como está configurada, sólo hay %d caracteres y %d líneas" #: src/output/ascii.c:360 #, c-format @@ -3970,7 +3434,7 @@ msgstr "ascii: cerrando el archivo de salida \"%s\"" #: src/output/ascii.c:503 #, c-format msgid "See %s for a chart." -msgstr "" +msgstr "Ver %s para gráfico." #: src/output/ascii.c:806 #, c-format @@ -3984,29 +3448,28 @@ msgstr "%s - Página %d" #: src/output/csv.c:87 src/output/html.c:106 src/output/journal.c:93 #: src/output/msglog.c:66 -#, fuzzy, c-format +#, c-format msgid "error opening output file \"%s\"" -msgstr "ascii: abriendo el archivo de resultados \"%s\"" +msgstr "error abriendo el fichero de resultados \"%s\"" #: src/output/driver.c:330 #, c-format -msgid "" -"%s is not a valid device type (the choices are \"terminal\" and \"listing\")" -msgstr "" +msgid "%s is not a valid device type (the choices are \"terminal\" and \"listing\")" +msgstr "%s no es un tipo de dispositivo válido (las opciones son \"terminal\" y \"listing\")" #: src/output/driver.c:343 -#, fuzzy, c-format +#, c-format msgid "%s: unknown option \"%s\"" -msgstr "ascii: parámetro desconocido `%s'" +msgstr "%s: opción desconocida \"%s\"" #: src/output/html.c:114 msgid "PSPP Output" msgstr "Resultado de PSPP" #: src/output/journal.c:67 -#, fuzzy, c-format +#, c-format msgid "error writing output file \"%s\"" -msgstr "error en escribir \"%s\"" +msgstr "error al escribir el fichero de resultados \"%s\"" #: src/output/measure.c:65 #, c-format @@ -4024,14 +3487,14 @@ msgid "unknown paper type `%.*s'" msgstr "tipo de papel desconocido `%.*s'" #: src/output/measure.c:248 -#, fuzzy, c-format +#, c-format msgid "error opening input file \"%s\"" -msgstr "error en abrir \"%s\"" +msgstr "error al abrir el fichero de datos \"%s\"" #: src/output/measure.c:259 -#, fuzzy, c-format +#, c-format msgid "error reading file \"%s\"" -msgstr "error de lectura \"%s\"" +msgstr "error leyendo el archivo \"%s\"" #: src/output/measure.c:276 #, c-format @@ -4041,91 +3504,77 @@ msgstr "el archivo de medida de papel \"%s\" no indica una medida de papel" #: src/output/options.c:113 #, c-format msgid "%s: \"%s\" is \"%s\" but a Boolean value is required" -msgstr "" +msgstr "%s: \"%s\" es \"%s\", pero se requiere un valor Booleano" #: src/output/options.c:188 #, c-format msgid "%s: \"%s\" is \"%s\" but one of the following is required: %s" -msgstr "" +msgstr "%s: \"%s\" es \"%s\", pero se requiere uno de los siguientes: %s " #: src/output/options.c:232 #, c-format msgid "%s: \"%s\" is \"%s\" but a nonnegative integer is required" -msgstr "" +msgstr "%s: \"%s\" es \"%s\", pero se requiere un entero no negativo" #: src/output/options.c:236 #, c-format msgid "%s: \"%s\" is \"%s\" but a positive integer is required" -msgstr "" +msgstr "%s: \"%s\" es \"%s\", pero se requiere un entero positivo" #: src/output/options.c:239 #, c-format msgid "%s: \"%s\" is \"%s\" but an integer is required" -msgstr "" +msgstr "%s: \"%s\" es \"%s\", pero se requiere un entero" #: src/output/options.c:242 #, c-format msgid "%s: \"%s\" is \"%s\" but an integer greater than %d is required" -msgstr "" +msgstr "%s: \"%s\" es \"%s\", pero se requiere un entero mayor que %d" #: src/output/options.c:247 #, c-format msgid "%s: \"%s\" is \"%s\" but an integer between %d and %d is required" -msgstr "" +msgstr "%s: \"%s\" es \"%s\", pero se requiere un entero entre %d y %d" #: src/output/options.c:326 #, c-format msgid "%s: \"%s\" is \"%s\" but a file name that contains \"#\" is required." -msgstr "" +msgstr "%s: \"%s\" es \"%s\", pero se requiere un nombre de fichero que contenga \"#\"." #: src/output/tab.c:206 #, c-format msgid "bad vline: x=%d+%d=%d y=(%d+%d=%d,%d+%d=%d) in table size (%d,%d)\n" -msgstr "bad vline: x=%d+%d=%d y=(%d+%d=%d,%d+%d=%d) a taula de mida (%d,%d)\n" +msgstr "incorrecta vline: x=%d+%d=%d y=(%d+%d=%d,%d+%d=%d) en tabla de medida (%d,%d)\n" #: src/output/tab.c:244 -#, fuzzy, c-format +#, c-format msgid "bad hline: x=(%d+%d=%d,%d+%d=%d) y=%d+%d=%d in table size (%d,%d)\n" -msgstr "bad vline: x=%d+%d=%d y=(%d+%d=%d,%d+%d=%d) a taula de mida (%d,%d)\n" +msgstr "incorrecta hline: x=(%d+%d=%d,%d+%d=%d) y=%d+%d=%d en tabla de medida (%d,%d)\n" #: src/output/tab.c:288 #, c-format -msgid "" -"bad box: (%d+%d=%d,%d+%d=%d)-(%d+%d=%d,%d+%d=%d) in table size (%d,%d)\n" -msgstr "" -"bad box: (%d+%d=%d,%d+%d=%d)-(%d+%d=%d,%d+%d=%d) en taula amb mida (%d,%d)\n" +msgid "bad box: (%d+%d=%d,%d+%d=%d)-(%d+%d=%d,%d+%d=%d) in table size (%d,%d)\n" +msgstr "bad box: (%d+%d=%d,%d+%d=%d)-(%d+%d=%d,%d+%d=%d) en taula amb mida (%d,%d)\n" #: src/output/cairo.c:295 -#, fuzzy, c-format +#, c-format msgid "error opening output file \"%s\": %s" -msgstr "ascii: abriendo el archivo de resultados \"%s\"" +msgstr "error abriendo el fichero de resultados \"%s\": %s" #: src/output/cairo.c:312 -#, fuzzy, c-format -msgid "" -"The defined page is not wide enough to hold at least %d characters in the " -"default font. In fact, there's only room for %d characters." -msgstr "" -"La página PostScript definida no es suficientemente extensa como para " -"contener márgenes y encabezamientos, además de almenos 15 líneas con las " -"fuentes por defecto. De hecho, únicamente hay espacio para %d líneas de " -"cada fuente en la medida por defecto de %d.%03d puntos." +#, c-format +msgid "The defined page is not wide enough to hold at least %d characters in the default font. In fact, there's only room for %d characters." +msgstr "La página definida no es suficientemente ancha como para contener al menos %d caracteres de la fuente por defecto. De hecho, sólo hay espacio para %d caracteres." #: src/output/cairo.c:322 -#, fuzzy, c-format -msgid "" -"The defined page is not long enough to hold margins and headers, plus least %" -"d lines of the default fonts. In fact, there's only room for %d lines." -msgstr "" -"La página PostScript definida no es suficientemente extensa como para " -"contener márgenes y encabezamientos, además de almenos 15 líneas con las " -"fuentes por defecto. De hecho, únicamente hay espacio para %d líneas de " -"cada fuente en la medida por defecto de %d.%03d puntos." +#, c-format +msgid "The defined page is not long enough to hold margins and headers, plus least %d lines of the default fonts. In fact, there's only room for %d lines." +msgstr "La página definida no es suficientemente larga como para contener margenes y cabezeras, además de al menos %d líneas de las fuentes por defecto. De hecho, sólo hay espacio para %d líneas." #: src/output/cairo.c:376 -#, fuzzy, c-format +#, c-format msgid "error drawing output for %s driver: %s" -msgstr "error de sintaxis analitzando opciones para el controlador \"%s\"" +msgstr "error dibujando resultados para el controlador %s: %s" #: src/output/cairo.c:864 #, c-format @@ -4133,9 +3582,9 @@ msgid "\"%s\": bad font specification" msgstr "\"%s\": especificación de carácter no válida" #: src/output/cairo.c:1084 -#, fuzzy, c-format +#, c-format msgid "error writing output file \"%s\": %s" -msgstr "Error en cerrar el archivo portátil \"%s\": %s." +msgstr "Error escribiendo el fichero de resultados \"%s\": %s." #: src/output/charts/np-plot-cairo.c:37 #, c-format @@ -4174,16 +3623,15 @@ msgstr "Curva ROC" #: src/output/charts/scree-cairo.c:36 msgid "Scree Plot" -msgstr "" +msgstr "Gráfico de Sedimentación" #: src/output/charts/scree-cairo.c:38 msgid "Eigenvalue" -msgstr "" +msgstr "Valor-propio" #: src/output/odt.c:93 -#, fuzzy msgid "error creating temporary file" -msgstr "leyendo archivo temporal" +msgstr "error creando fichero temporal" #: src/ui/source-init-opts.c:78 msgid "Algorithm must be either \"compatible\" or \"enhanced\"." @@ -4194,17 +3642,13 @@ msgid "Syntax must be either \"compatible\" or \"enhanced\"." msgstr "La sintaxis tiene que ser o \"compatible\" o \"ampliada\"." #: src/ui/terminal/main.c:128 -msgid "" -"Stopping syntax file processing here to avoid a cascade of dependent command " -"failures." -msgstr "" -"Deteniendo el procesamiento del archivo de sintaxis aquí para evitar una " -"cascada de errores derivados." +msgid "Stopping syntax file processing here to avoid a cascade of dependent command failures." +msgstr "Deteniendo el procesamiento del archivo de sintaxis aquí para evitar una cascada de errores derivados." #: src/ui/terminal/msg-ui.c:127 #, c-format msgid "Notes (%d) exceed limit (%d). Suppressing further notes." -msgstr "" +msgstr "Las anotaciones (%d) han superado el límite (%d). Se suprimen las posteriores." #: src/ui/terminal/msg-ui.c:135 #, c-format @@ -4212,9 +3656,9 @@ msgid "Warnings (%d) exceed limit (%d)." msgstr "Avisos (%d) exceden el límite (%d)." #: src/ui/terminal/msg-ui.c:138 -#, fuzzy, c-format +#, c-format msgid "Errors (%d) exceed limit (%d)." -msgstr "Errores (%d) exceden el límite (%d)." +msgstr "Los errores (%d) exceden el límite (%d)." #: src/ui/terminal/terminal.c:72 #, c-format @@ -4224,12 +3668,12 @@ msgstr "no se puede acceder a la definición para terminal `%s'" #: src/ui/terminal/terminal-opts.c:119 #, c-format msgid "%s: output option missing `='" -msgstr "" +msgstr "%s: falta una opción de resultado `='" #: src/ui/terminal/terminal-opts.c:126 #, c-format msgid "%s: output option specified more than once" -msgstr "" +msgstr "%s: opción de resultado especificada más de una vez" #: src/ui/gui/checkbox-treeview.c:92 src/language/stats/crosstabs.q:1213 #: src/language/stats/crosstabs.q:1240 src/language/stats/crosstabs.q:1263 @@ -4341,7 +3785,7 @@ msgstr "Expresión regular incorrecta: %s" #: src/ui/gui/factor-dialog.c:344 #, c-format msgid "Eigenvalues over %4.2f times the mean eigenvalue" -msgstr "" +msgstr "Algunos valores propios superan %4.2f veces el valor-propio medio" #: src/ui/gui/frequencies-dialog.c:45 msgid "Standard error of the mean" @@ -4380,10 +3824,8 @@ msgstr "F.J. Miguel, J. Gómez, P. Payà" #: src/ui/gui/help-menu.c:98 #, c-format -msgid "" -"Cannot open reference manual: %s. The PSPP user manual is also available at " -"http://www.gnu.org/software/pspp/documentation.html" -msgstr "" +msgid "Cannot open reference manual: %s. The PSPP user manual is also available at http://www.gnu.org/software/pspp/documentation.html" +msgstr "No puede abrirse el manual de referencia: %s. El manual del usuario de PSPP también está disponible en http://www.gnu.org/software/pspp/documentation.html" #: src/ui/gui/help-menu.c:117 msgid "_Help" @@ -4461,15 +3903,14 @@ msgid "Open" msgstr "Abrir" #: src/ui/gui/psppire-data-window.c:392 -#, fuzzy msgid "Data and Syntax Files" -msgstr "No se puede abrir el archivo de sintaxis \"%s\"" +msgstr "Ficheros de Datos y Sintaxsi" -#: src/ui/gui/psppire-data-window.c:402 src/ui/gui/psppire-data-window.c:611 +#: src/ui/gui/psppire-data-window.c:402 src/ui/gui/psppire-data-window.c:614 msgid "System Files (*.sav)" msgstr "Archivos de Sistema (*.sav)" -#: src/ui/gui/psppire-data-window.c:408 src/ui/gui/psppire-data-window.c:617 +#: src/ui/gui/psppire-data-window.c:408 src/ui/gui/psppire-data-window.c:620 msgid "Portable Files (*.por) " msgstr "Archivos Portátiles (*.por)" @@ -4477,57 +3918,54 @@ msgstr "Archivos Portátiles (*.por)" msgid "Syntax Files (*.sps) " msgstr "Archivos de Sintàxis (*.sps) " -#: src/ui/gui/psppire-data-window.c:420 src/ui/gui/psppire-data-window.c:623 +#: src/ui/gui/psppire-data-window.c:420 src/ui/gui/psppire-data-window.c:626 #: src/ui/gui/psppire-syntax-window.c:298 msgid "All Files" msgstr "Todos los archivos" -#: src/ui/gui/psppire-data-window.c:603 +#: src/ui/gui/psppire-data-window.c:606 msgid "Save" msgstr "Guardar" -#: src/ui/gui/psppire-data-window.c:636 +#: src/ui/gui/psppire-data-window.c:639 msgid "Portable File" msgstr "Archivo Portátil" -#: src/ui/gui/psppire-data-window.c:773 +#: src/ui/gui/psppire-data-window.c:776 msgid "Font Selection" msgstr "Selección de fuente" -#: src/ui/gui/psppire-data-window.c:1261 +#: src/ui/gui/psppire-data-window.c:1264 msgid "Data Editor" msgstr "Editor de Datos" #: src/ui/gui/psppire-output-window.c:458 msgid "Export Output" -msgstr "" +msgstr "Exporta Resultados" #: src/ui/gui/psppire-output-window.c:466 -#, fuzzy msgid "PDF Files (*.pdf)" -msgstr "Archivos Portátiles (*.por)" +msgstr "Ficheros PDF (*.pdf)" #: src/ui/gui/psppire-output-window.c:467 msgid "HTML Files (*.html)" -msgstr "" +msgstr "Ficheros HTML (*.html)" #: src/ui/gui/psppire-output-window.c:468 msgid "OpenDocument Files (*.odt)" -msgstr "" +msgstr "Ficheros OpenDocument (*.odt)" #: src/ui/gui/psppire-output-window.c:469 -#, fuzzy msgid "Text Files (*.txt)" -msgstr "Archivos de Sistema (*.sav)" +msgstr "Ficheros de Text (*.txt)" #: src/ui/gui/psppire-output-window.c:470 -#, fuzzy msgid "PostScript Files (*.ps)" -msgstr "Archivos Portátiles (*.por)" +msgstr "Ficheros PostScript (*.ps)" #: src/ui/gui/psppire-output-window.c:471 msgid "Comma-Separated Value Files (*.csv)" -msgstr "" +msgstr "Ficheros de Valores Separados por Comas (*.csv)" #: src/ui/gui/psppire-output-window.c:605 msgid "Output Viewer" @@ -4619,12 +4057,8 @@ msgstr "Guarda los cambios en \"%s\" antes de salir?" #: src/ui/gui/psppire-window.c:475 #, c-format -msgid "" -"If you don't save, changes from the last %ld seconds will be permanently " -"lost." -msgstr "" -"Si no se guarda ahora, los cambios de los últims %ld segundos se perderan " -"permanentemente." +msgid "If you don't save, changes from the last %ld seconds will be permanently lost." +msgstr "Si no se guarda ahora, los cambios de los últims %ld segundos se perderan permanentemente." #: src/ui/gui/psppire-window.c:479 msgid "Close _without saving" @@ -4697,12 +4131,8 @@ msgstr "Error leyendo \"%s\": %s" #: src/ui/gui/text-data-import-dialog.c:480 #, c-format -msgid "" -"Failed to read \"%s\", because it contains a line over %d bytes long and " -"therefore appears not to be a text file." -msgstr "" -"Error leyendo \"%s\", porque contiene una linea más allá de %d bytes y por " -"tanto parece que no es un archivo de texto." +msgid "Failed to read \"%s\", because it contains a line over %d bytes long and therefore appears not to be a text file." +msgstr "Error leyendo \"%s\", porque contiene una linea más allá de %d bytes y por tanto parece que no es un archivo de texto." #: src/ui/gui/text-data-import-dialog.c:494 #, c-format @@ -4719,14 +4149,10 @@ msgstr "Importando datos de texto delimitado" #: src/ui/gui/text-data-import-dialog.c:749 msgid "" -"This assistant will guide you through the process of importing data into " -"PSPP from a text file with one line per case, in which fields are separated " -"by tabs, commas, or other delimiters.\n" +"This assistant will guide you through the process of importing data into PSPP from a text file with one line per case, in which fields are separated by tabs, commas, or other delimiters.\n" "\n" msgstr "" -"Este asistente te quiará a lo largo del proceso de importar datos en PSPP " -"desde un archivo de texto con una línea por caso, en el que los campos " -"estan separados por tabuladores, comas, u otros delimitadores.\n" +"Este asistente te quiará a lo largo del proceso de importar datos en PSPP desde un archivo de texto con una línea por caso, en el que los campos estan separados por tabuladores, comas, u otros delimitadores.\n" "\n" #: src/ui/gui/text-data-import-dialog.c:755 @@ -4740,36 +4166,24 @@ msgstr[1] "El archivo seleccionado contiene %zu línias de texto. " #, c-format msgid "The selected file contains approximately %lu line of text. " msgid_plural "The selected file contains approximately %lu lines of text. " -msgstr[0] "" -"El archivo seleccionado contiene aproximadamente %lu línea de texto. " -msgstr[1] "" -"El archivo seleccionado contiene aproximadamente %lu líneas de texto. " +msgstr[0] "El archivo seleccionado contiene aproximadamente %lu línea de texto. " +msgstr[1] "El archivo seleccionado contiene aproximadamente %lu líneas de texto. " #: src/ui/gui/text-data-import-dialog.c:769 #, c-format -msgid "" -"Only the first %zu line of the file will be shown for preview purposes in " -"the following screens. " -msgid_plural "" -"Only the first %zu lines of the file will be shown for preview purposes in " -"the following screens. " -msgstr[0] "" -"Únicamente la primera %zu líneas del archivo se previsualizaran en las " -"siguientes pantallas. " -msgstr[1] "" -"Únicamente las primeras %zu líneas del archivo se previsualizaran en las " -"siguientes pantallas. " +msgid "Only the first %zu line of the file will be shown for preview purposes in the following screens. " +msgid_plural "Only the first %zu lines of the file will be shown for preview purposes in the following screens. " +msgstr[0] "Únicamente la primera %zu líneas del archivo se previsualizaran en las siguientes pantallas. " +msgstr[1] "Únicamente las primeras %zu líneas del archivo se previsualizaran en las siguientes pantallas. " #: src/ui/gui/text-data-import-dialog.c:776 msgid "You may choose below how much of the file should actually be imported." -msgstr "" -"Puedes escoger a continuación que parte del archivo va a ser importado." +msgstr "Puedes escoger a continuación que parte del archivo va a ser importado." #: src/ui/gui/text-data-import-dialog.c:1523 #: src/ui/gui/text-data-import-dialog.c:1768 msgid "This input line has too few separators to fill in this field." -msgstr "" -"Esta línea de entrada no tiene suficientes separadores para llenar el campo." +msgstr "Esta línea de entrada no tiene suficientes separadores para llenar el campo." #: src/ui/gui/text-data-import-dialog.c:1759 #, c-format @@ -4836,14 +4250,14 @@ msgid "%s: Attribute value %s[%d] is not quoted: %s" msgstr "%s: El valor del atributo %s[%d] no está entre comillas: %s" #: tests/dissect-sysfile.c:880 -#, fuzzy, c-format +#, c-format msgid "Bad size %zu for extended number of cases." -msgstr "Longitud no válida %zu en la extensión 11." +msgstr "Longitud no válida %zu para un número extenso de casos." #: tests/dissect-sysfile.c:886 #, c-format msgid "Bad count %zu for extended number of cases." -msgstr "" +msgstr "Recuento incorrecto %zu para un número extenso de casos." #: src/language/utilities/set.q:188 msgid "WORKSPACE must be at least 1MB" @@ -4885,12 +4299,8 @@ msgstr "WIDTH debe ser como mínimo 40." #: src/language/utilities/set.q:490 #, c-format -msgid "" -"FORMAT requires numeric output format as an argument. Specified format %s " -"is of type string." -msgstr "" -"FORMAT requiere formato de resultado numérico como argumento. El formato %s " -"especificado es de tipo cadena." +msgid "FORMAT requires numeric output format as an argument. Specified format %s is of type string." +msgstr "FORMAT requiere formato de resultado numérico como argumento. El formato %s especificado es de tipo cadena." #: src/language/utilities/set.q:707 msgid "ISL (32-bit IEEE 754 single, little-endian)" @@ -4934,11 +4344,8 @@ msgid "%s is %s." msgstr "%s es %s." #: src/language/stats/crosstabs.q:289 -msgid "" -"Missing mode REPORT not allowed in general mode. Assuming MISSING=TABLE." -msgstr "" -"El INFORME de perdidos no está disponible en el modo general. Se asume " -"MISSING=TABLE." +msgid "Missing mode REPORT not allowed in general mode. Assuming MISSING=TABLE." +msgstr "El INFORME de perdidos no está disponible en el modo general. Se asume MISSING=TABLE." #: src/language/stats/crosstabs.q:399 msgid "Too many cross-tabulation variables or dimensions." @@ -5175,9 +4582,8 @@ msgid "%s Dependent" msgstr "%s Dependiente" #: src/language/stats/examine.q:357 -#, fuzzy msgid "Not creating NP plot because data set is empty." -msgstr "No se crea el gráfico porque el conjunto de datos está vacío." +msgstr "No se creará el gráfico NP porque el conjunto de datos está vacío." #: src/language/stats/examine.q:442 src/language/stats/examine.q:949 msgid "Not creating plot because data set is empty." @@ -5246,27 +4652,18 @@ msgid "%g" msgstr "%g" #: src/language/stats/frequencies.q:382 -#, fuzzy msgid "Bar charts are not implemented." -msgstr "%s no está implementado." +msgstr "El gráfico de barras no está implementado." #: src/language/stats/frequencies.q:399 -#, fuzzy, c-format -msgid "" -"MAX for histogram must be greater than or equal to MIN, but MIN was " -"specified as %.15g and MAX as %.15g. MIN and MAX will be ignored." -msgstr "" -"MAX debe ser mayor o igual a MIN, si ambos se especifican. Pero, MIN se " -"debe especificar como %g y MAX como %g. MIN y MAX serán ignorados." +#, c-format +msgid "MAX for histogram must be greater than or equal to MIN, but MIN was specified as %.15g and MAX as %.15g. MIN and MAX will be ignored." +msgstr "Para el histograma, MAX debe ser mayor o igual a MIN, pero MIN se ha especificado como %15g y MAX como %15g. MIN y MAX serán ignorados." #: src/language/stats/frequencies.q:420 -#, fuzzy, c-format -msgid "" -"MAX for pie chart must be greater than or equal to MIN, but MIN was " -"specified as %.15g and MAX as %.15g. MIN and MAX will be ignored." -msgstr "" -"MAX debe ser mayor o igual a MIN, si ambos se especifican. Pero, MIN se " -"debe especificar como %g y MAX como %g. MIN y MAX serán ignorados." +#, c-format +msgid "MAX for pie chart must be greater than or equal to MIN, but MIN was specified as %.15g and MAX as %.15g. MIN and MAX will be ignored." +msgstr "Para el gráfico de sectores, MAX debe ser mayor o igual a MIN, pero MIN se ha especificado como %15g y MAX como %15g. MIN y MAX serán ignorados." #: src/language/stats/frequencies.q:703 msgid "`)' expected after GROUPED interval list." @@ -5275,8 +4672,7 @@ msgstr "`)' esperada después de la lista de variables GRUPED." #: src/language/stats/frequencies.q:723 #, c-format msgid "Variables %s specified multiple times on GROUPED subcommand." -msgstr "" -"La variable %s se ha especificado más de una vez en el subcomando GROUPED." +msgstr "La variable %s se ha especificado más de una vez en el subcomando GROUPED." #: src/language/stats/frequencies.q:733 #, c-format @@ -5288,14 +4684,12 @@ msgid "Value Label" msgstr "Etiqueta de Valor" #: src/language/stats/frequencies.q:816 -#, fuzzy msgid "Valid Percent" -msgstr "Porcentaje" +msgstr "Porcentaje Válido" #: src/language/stats/frequencies.q:817 -#, fuzzy msgid "Cum Percent" -msgstr "Porcentaje" +msgstr "Porcentaje Acumulado" #: src/language/stats/frequencies.q:1008 #, c-format @@ -5309,14 +4703,14 @@ msgstr "50 (Mediana)" #: src/language/stats/frequencies.q:1209 #, c-format msgid "Omitting pie chart for %s, which has only %d unique values." -msgstr "" +msgstr "Se omite el gráfico de sectores para %s, que sólo tiene %d valores únicos." #: src/language/stats/frequencies.q:1212 #, c-format msgid "Omitting pie chart for %s, which has over 50 unique values." -msgstr "" +msgstr "Se omite el gráfico de sectores para %s, que tiene más de 50 valores únicos." -#: src/language/stats/glm.q:248 +#: src/language/stats/glm.q:247 msgid "Multivariate GLM not yet supported" msgstr "GLM multivariable todavía no disponible" @@ -5334,33 +4728,22 @@ msgstr "Actualmente no está implementado el subcomando NPAR." #: src/language/stats/npar.q:256 #, c-format -msgid "" -"The specified value of HI (%d) is lower than the specified value of LO (%d)" -msgstr "" -"El valor especificado para HI (%d) es menor que el especificado para LO (%d)" +msgid "The specified value of HI (%d) is lower than the specified value of LO (%d)" +msgstr "El valor especificado para HI (%d) es menor que el especificado para LO (%d)" #: src/language/stats/npar.q:311 #, c-format -msgid "" -"%d expected values were given, but the specified range (%d-%d) requires " -"exactly %d values." -msgstr "" -"Se han proporcionado %d valores esperados, pero el intervalo especificado (%" -"d-%d) requiere exactamente %d valores." +msgid "%d expected values were given, but the specified range (%d-%d) requires exactly %d values." +msgstr "Se han proporcionado %d valores esperados, pero el intervalo especificado (%d-%d) requiere exactamente %d valores." #: src/language/stats/npar.q:453 src/language/stats/t-test.q:380 #, c-format -msgid "" -"PAIRED was specified but the number of variables preceding WITH (%zu) did " -"not match the number following (%zu)." -msgstr "" -"Se ha especificado PAIRED pero el número de variables antes de WITH (%zu) no " -"coincide con el número de variables posterior (%zu)." +msgid "PAIRED was specified but the number of variables preceding WITH (%zu) did not match the number following (%zu)." +msgstr "Se ha especificado PAIRED pero el número de variables antes de WITH (%zu) no coincide con el número de variables posterior (%zu)." #: src/language/stats/oneway.q:170 msgid "Number of contrast coefficients must equal the number of groups" -msgstr "" -"El número de coeficientes de contraste debe ser igual al número de grupos" +msgstr "El número de coeficientes de contraste debe ser igual al número de grupos" #: src/language/stats/oneway.q:179 #, c-format @@ -5460,9 +4843,7 @@ msgstr "%s de %s" #: src/language/stats/rank.q:600 msgid "Cannot create new rank variable. All candidates in use." -msgstr "" -"No se puede crear la nueva variable de rangos. Todos los candidatos están " -"en uso." +msgstr "No se puede crear la nueva variable de rangos. Todos los candidatos están en uso." #: src/language/stats/rank.q:693 msgid "Variables Created By RANK" @@ -5489,12 +4870,8 @@ msgid "%s into %s(%s of %s)" msgstr "%s en %s(%s de %s)" #: src/language/stats/rank.q:761 -msgid "" -"FRACTION has been specified, but NORMAL and PROPORTION rank functions have " -"not been requested. The FRACTION subcommand will be ignored." -msgstr "" -"Se ha especificado FRACTION, pero no se han pedido funciones de rango NORMAL " -"o PROPORTION. La suborden FRACTION será ignorada." +msgid "FRACTION has been specified, but NORMAL and PROPORTION rank functions have not been requested. The FRACTION subcommand will be ignored." +msgstr "Se ha especificado FRACTION, pero no se han pedido funciones de rango NORMAL o PROPORTION. La suborden FRACTION será ignorada." #: src/language/stats/rank.q:852 #, c-format @@ -5554,18 +4931,12 @@ msgid "Coefficient Correlations" msgstr "Correlaciones de Coeficientes" #: src/language/stats/regression.q:793 -msgid "" -"The dependent variable is equal to the independent variable.The least " -"squares line is therefore Y=X.Standard errors and related statistics may be " -"meaningless." -msgstr "" -"La variable dependiente es igual a la variable independiente. La línea de " -"minimos cuadrados es por tanto Y=X. Los errores estándard y los estadísticos " -"relacionados podrian ser irrelevantes." +msgid "The dependent variable is equal to the independent variable.The least squares line is therefore Y=X.Standard errors and related statistics may be meaningless." +msgstr "La variable dependiente es igual a la variable independiente. La línea de minimos cuadrados es por tanto Y=X. Los errores estándard y los estadísticos relacionados podrian ser irrelevantes." #: src/language/stats/regression.q:891 msgid "REGRESSION requires numeric variables." -msgstr "" +msgstr "REGRESSION requiere variables numéricas." #: src/language/stats/regression.q:962 msgid "No valid data found. This command was skipped." @@ -5647,8 +5018,7 @@ msgstr "%" #: src/language/stats/t-test.q:190 msgid "Exactly one of TESTVAL, GROUPS and PAIRS subcommands must be specified." -msgstr "" -"Debe especificarse sólo uno de los subcomandos TESTVAL, GROUPS y PAIRS." +msgstr "Debe especificarse sólo uno de los subcomandos TESTVAL, GROUPS y PAIRS." #: src/language/stats/t-test.q:211 msgid "VARIABLES subcommand may not be used with PAIRS." @@ -5659,11 +5029,8 @@ msgid "One or more VARIABLES must be specified." msgstr "Una o más VARIABLES deben ser especificadas." #: src/language/stats/t-test.q:324 -msgid "" -"When applying GROUPS to a string variable, two values must be specified." -msgstr "" -"Cuando se aplica GROUPS a una variable alfabética, se deben especificar dos " -"valores." +msgid "When applying GROUPS to a string variable, two values must be specified." +msgstr "Cuando se aplica GROUPS a una variable alfabética, se deben especificar dos valores." #: src/language/stats/t-test.q:395 msgid "At least two variables must be specified on PAIRS." @@ -5761,33 +5128,22 @@ msgstr "%s & %s" #: src/language/data-io/file-handle.q:65 #, c-format -msgid "" -"File handle %s is already defined. Use CLOSE FILE HANDLE before redefining " -"a file handle." -msgstr "" -"El manipulador de archivo %s ya está definido. Usar CLOSE FILE HANDLE antes " -"de redefinir un manipulador de archivos." +msgid "File handle %s is already defined. Use CLOSE FILE HANDLE before redefining a file handle." +msgstr "El manipulador de archivo %s ya está definido. Usar CLOSE FILE HANDLE antes de redefinir un manipulador de archivos." #: src/language/data-io/file-handle.q:120 msgid "RECFORM must be specified with MODE=360." msgstr "RECFORM debe ser especificado con MODE=360." #: src/language/data-io/file-handle.q:131 -#, fuzzy, c-format -msgid "" -"The specified file mode requires LRECL. Assuming %zu-character records." -msgstr "" -"El modo de archivo especificado requiere LRECL. Se asume %d-registros de " -"carácter." +#, c-format +msgid "The specified file mode requires LRECL. Assuming %zu-character records." +msgstr "El modo de fichero especificado requiere LRECL. Se asumen registros de %zu caracteres." #: src/language/data-io/file-handle.q:135 #, c-format -msgid "" -"Record length (%ld) must be between 1 and %lu bytes. Assuming %d-character " -"records." -msgstr "" -"El tamaño de registro (%ld) debe estar entre 1 y %lu bytes. Se asume %d-" -"registros de carácter." +msgid "Record length (%ld) must be between 1 and %lu bytes. Assuming %d-character records." +msgstr "El tamaño de registro (%ld) debe estar entre 1 y %lu bytes. Se asume %d-registros de carácter." #: src/language/data-io/file-handle.q:177 msgid "file" @@ -5808,23 +5164,17 @@ msgstr "Aquí no está permitido un manipulador para %s." #: src/language/data-io/list.q:99 #, c-format -msgid "" -"The first case (%ld) specified precedes the last case (%ld) specified. The " -"values will be swapped." -msgstr "" -"El primer caso (%ld) especificado precede al último caso (%ld) " -"especificado. Los valores se intercanviarán." +msgid "The first case (%ld) specified precedes the last case (%ld) specified. The values will be swapped." +msgstr "El primer caso (%ld) especificado precede al último caso (%ld) especificado. Los valores se intercanviarán." #: src/language/data-io/list.q:107 #, c-format -msgid "" -"The first case (%ld) to list is less than 1. The value is being reset to 1." +msgid "The first case (%ld) to list is less than 1. The value is being reset to 1." msgstr "EL primer caso (%ld) a listar es menor que 1. El valor se ajusta a 1." #: src/language/data-io/list.q:113 #, c-format -msgid "" -"The last case (%ld) to list is less than 1. The value is being reset to 1." +msgid "The last case (%ld) to list is less than 1. The value is being reset to 1." msgstr "El último caso (%ld) a listar es menor que 1. El valor se ajusta a 1." #: src/language/data-io/list.q:119 @@ -5833,13 +5183,12 @@ msgid "The step value %ld is less than 1. The value is being reset to 1." msgstr "El valor de paso %ld es menor que 1. El valor se ajusta a 1." #: src/ui/gui/binomial.ui:57 src/ui/gui/chi-square.ui:57 -#, fuzzy msgid "_Test Variable List:" -msgstr "Variable(s) de contraste:" +msgstr "Lista de Variable _Test:" #: src/ui/gui/binomial.ui:126 src/ui/gui/chi-square.ui:126 msgid "_Get from data" -msgstr "" +msgstr "Obtención de datos" #: src/ui/gui/binomial.ui:143 src/ui/gui/t-test.ui:333 msgid "_Cut point:" @@ -5847,60 +5196,51 @@ msgstr "Punto de corte:" #: src/ui/gui/binomial.ui:178 msgid "Define Dichotomy" -msgstr "" +msgstr "Definir Dicotomía" #: src/ui/gui/binomial.ui:197 -#, fuzzy msgid "Test _Proportion:" -msgstr "Prop. Test" +msgstr "Test _Proporción:" #: src/ui/gui/correlation.ui:7 -#, fuzzy msgid "Bivariate Correlations" -msgstr "Correlación de Spearman" +msgstr "Correlaciones Bivariadas" #: src/ui/gui/correlation.ui:108 -#, fuzzy msgid "Pearso_n" -msgstr "R de Pearson" +msgstr "Pearso_n" #: src/ui/gui/correlation.ui:123 -#, fuzzy msgid "_Kendall's tau-b" -msgstr "Tau-B de Kendall" +msgstr "Tau-b de _Kendall" #: src/ui/gui/correlation.ui:138 msgid "_Spearman" -msgstr "" +msgstr "_Spearman" #: src/ui/gui/correlation.ui:158 -#, fuzzy msgid "Correlation Coefficients" -msgstr "Coeficientes de Contraste" +msgstr "Coeficientes de Correlación" #: src/ui/gui/correlation.ui:182 -#, fuzzy msgid "_Two-tailed" -msgstr "Total" +msgstr "Dos colas" #: src/ui/gui/correlation.ui:198 msgid "One-tai_led" -msgstr "" +msgstr "Una cola" #: src/ui/gui/correlation.ui:220 -#, fuzzy msgid "Test of Significance" -msgstr "Significatividad" +msgstr "Test de Significatividad" #: src/ui/gui/correlation.ui:232 -#, fuzzy msgid "_Flag significant correlations" -msgstr "Correlaciones de Coeficientes" +msgstr "Marca correlaciones significantes" #: src/ui/gui/crosstabs.ui:7 -#, fuzzy msgid "Crosstabs" -msgstr "Tablas _Cruzadas" +msgstr "Tablas _Contingencia" #: src/ui/gui/crosstabs.ui:50 msgid "Rows" @@ -5920,9 +5260,8 @@ msgid "Cells..." msgstr "Celdas..." #: src/ui/gui/crosstabs.ui:227 -#, fuzzy msgid "Crosstabs: Format" -msgstr "Tablas _Cruzadas" +msgstr "Tablas Contingencia: Formato" #: src/ui/gui/crosstabs.ui:241 msgid "Print tables" @@ -5949,18 +5288,16 @@ msgid "Labeling" msgstr "Etiquetando" #: src/ui/gui/crosstabs.ui:369 -#, fuzzy msgid "Crosstabs: Cells" -msgstr "Tablas _Cruzadas" +msgstr "Tablas Contingencia: Casillas" #: src/ui/gui/crosstabs.ui:402 msgid "Cell Display" msgstr "Contenido de celda" #: src/ui/gui/crosstabs.ui:430 -#, fuzzy msgid "Crosstabs: Statistics" -msgstr "Pruebas Estadísticas" +msgstr "Tablas Contingencia: Estadísticos" #: src/ui/gui/crosstabs.ui:463 src/ui/gui/oneway.ui:222 #: src/ui/gui/regression.ui:340 @@ -5968,43 +5305,36 @@ msgid "Statistics" msgstr "Estadísticas" #: src/ui/gui/chi-square.ui:13 -#, fuzzy msgid "Chi-Square Test" -msgstr "Pruebas Chi-cuadrado." +msgstr "Test Chi-cuadrado." #: src/ui/gui/chi-square.ui:140 -#, fuzzy msgid "Use _specified range" -msgstr "Utiliza valores especificados:" +msgstr "Utiliza rango e_specificado" #: src/ui/gui/chi-square.ui:162 -#, fuzzy msgid "_Lower:" -msgstr "Inferior" +msgstr "Mínimo:" #: src/ui/gui/chi-square.ui:170 -#, fuzzy msgid "_Upper:" -msgstr "Superior" +msgstr "Máximo:" #: src/ui/gui/chi-square.ui:214 -#, fuzzy msgid "Expected Range:" -msgstr "N esperado" +msgstr "Rango esperado:" #: src/ui/gui/chi-square.ui:240 msgid "All categor_ies equal" -msgstr "" +msgstr "Igual todas las categor_ias" #: src/ui/gui/chi-square.ui:257 -#, fuzzy msgid "_Values" -msgstr "Valores" +msgstr "_Valores" #: src/ui/gui/chi-square.ui:301 -#, fuzzy msgid "Expected Values:" -msgstr "Valores extremos" +msgstr "Valores Esperados:" #: src/ui/gui/descriptives.ui:130 src/ui/gui/frequencies.ui:140 msgid "Statistics:" @@ -6020,17 +5350,15 @@ msgstr "Incluir los valores perdidos de usuario en el análisis" #: src/ui/gui/descriptives.ui:222 msgid "Save Z-scores of selected variables as new variables" -msgstr "" -"Guardar puntuaciones-Z de las variables seleccionadas como nuevas variables" +msgstr "Guardar puntuaciones-Z de las variables seleccionadas como nuevas variables" #: src/ui/gui/descriptives.ui:243 msgid "Options:" msgstr "Opciones:" #: src/ui/gui/examine.ui:8 -#, fuzzy msgid "Explore" -msgstr "_Explorar" +msgstr "Explorar" #: src/ui/gui/examine.ui:51 msgid "Label Cases by:" @@ -6050,9 +5378,8 @@ msgid "Options..." msgstr "Opciones..." #: src/ui/gui/examine.ui:302 -#, fuzzy msgid "Explore: Statistics" -msgstr "Pruebas Estadísticas" +msgstr "Explorar: Estadísticos" #: src/ui/gui/examine.ui:332 msgid "Extremes" @@ -6060,7 +5387,7 @@ msgstr "Extremos" #: src/ui/gui/examine.ui:381 msgid "Explore: Options" -msgstr "" +msgstr "Explorar: Opciones" #: src/ui/gui/examine.ui:405 msgid "Exclude cases listwise" @@ -6080,112 +5407,96 @@ msgid "Missing Values" msgstr "Valores perdidos" #: src/ui/gui/factor.ui:21 -#, fuzzy msgid "Factor Analysis" -msgstr "Lista de Factores:" +msgstr "Análisis Factorial" #: src/ui/gui/factor.ui:47 -#, fuzzy msgid "_Descriptives..." -msgstr "Descriptivos" +msgstr "_Descriptivos..." #: src/ui/gui/factor.ui:60 -#, fuzzy msgid "_Extraction..." -msgstr "Opciones..." +msgstr "_Extracción..." #: src/ui/gui/factor.ui:74 -#, fuzzy msgid "_Rotations..." -msgstr "Opciones..." +msgstr "_Rotaciones..." #: src/ui/gui/factor.ui:192 msgid "Factor Analysis: Extraction" -msgstr "" +msgstr "Análisis Factorial: Extracción" #: src/ui/gui/factor.ui:216 -#, fuzzy msgid "Method: " -msgstr "Modo:" +msgstr "Método: " #: src/ui/gui/factor.ui:266 -#, fuzzy msgid "Correlation matrix" -msgstr "Correlación" +msgstr "Matriz de Correlaciones" #: src/ui/gui/factor.ui:280 -#, fuzzy msgid "Covariance matrix" -msgstr "Covarianza" +msgstr "Matriz de Covariancias" #: src/ui/gui/factor.ui:300 -#, fuzzy msgid "Analyse" -msgstr "_Analizar" +msgstr "Analizar" #: src/ui/gui/factor.ui:324 msgid "Unrotatated factor solution" -msgstr "" +msgstr "Solución factorial sin rotar" #: src/ui/gui/factor.ui:338 msgid "Scree plot" -msgstr "" +msgstr "Gráfico de sedimentación" #: src/ui/gui/factor.ui:357 src/ui/gui/roc.ui:286 -#, fuzzy msgid "Display" -msgstr "Contenido de celda" +msgstr "Contenido" #: src/ui/gui/factor.ui:430 msgid "Number of factors:" -msgstr "" +msgstr "Número de factores:" #: src/ui/gui/factor.ui:460 -#, fuzzy msgid "Extract" -msgstr "Eta" +msgstr "Extracción" #: src/ui/gui/factor.ui:475 src/ui/gui/factor.ui:665 msgid "Maximum iterations for convergence:" -msgstr "" +msgstr "Iteraciones máximas para la convergencia:" #: src/ui/gui/factor.ui:538 -#, fuzzy msgid "Factor Analysis: Rotation" -msgstr "Lista de Factores:" +msgstr "Análisis Factorial: Rotación" #: src/ui/gui/factor.ui:571 -#, fuzzy msgid "_None" -msgstr "Ninguno" +msgstr "_Ninguno" #: src/ui/gui/factor.ui:582 -#, fuzzy msgid "_Varimax" -msgstr "_Variables" +msgstr "_Varimax" #: src/ui/gui/factor.ui:598 msgid "_Quartimax" -msgstr "" +msgstr "_Quartimax" #: src/ui/gui/factor.ui:614 msgid "_Equimax" -msgstr "" +msgstr "_Equimax" #: src/ui/gui/factor.ui:637 -#, fuzzy msgid "Method" -msgstr "Modo:" +msgstr "Método" #: src/ui/gui/factor.ui:648 -#, fuzzy msgid "_Display rotated solution" -msgstr "Muestra _información del archivo de datos" +msgstr "Muestra la solución rotada" #: src/ui/gui/find.ui:8 -#, fuzzy msgid "Find Case" -msgstr "Rango de Casos" +msgstr "Buscar caso" #: src/ui/gui/find.ui:88 msgid "Variable:" @@ -6222,65 +5533,54 @@ msgid "Variable(s):" msgstr "Variable(s):" #: src/ui/gui/frequencies.ui:151 -#, fuzzy msgid "Include missing values" -msgstr "Si_n valores perdidos" +msgstr "Incluye valores perdidos" #: src/ui/gui/frequencies.ui:189 -#, fuzzy msgid "Charts..." -msgstr "_Contrastes..." +msgstr "Gráficos..." #: src/ui/gui/frequencies.ui:201 -#, fuzzy msgid "Frequency Tables..." -msgstr "Variable de Frecuencia" +msgstr "Tablas de Frecuencias..." #: src/ui/gui/frequencies.ui:251 -#, fuzzy msgid "Frequencies: Frequency Tables" -msgstr "Mostrar la tabla de frecuencias" +msgstr "Frecuencias: Tablas de frecuencias" #: src/ui/gui/frequencies.ui:281 msgid "Always" -msgstr "" +msgstr "Siempre" #: src/ui/gui/frequencies.ui:297 -#, fuzzy msgid "Never" -msgstr "Negativo" +msgstr "Nunca" #: src/ui/gui/frequencies.ui:316 msgid "If no more than " -msgstr "" +msgstr "Si no más de " #: src/ui/gui/frequencies.ui:347 -#, fuzzy msgid "values" msgstr "Valores" #: src/ui/gui/frequencies.ui:368 -#, fuzzy msgid "Display frequency tables" -msgstr "Mostrar la tabla de frecuencias" +msgstr "Mostrar tabla de frecuencias" #: src/ui/gui/frequencies.ui:396 -#, fuzzy msgid "Ascending value" -msgstr "Ascendente" +msgstr "Valor Ascendente" #: src/ui/gui/frequencies.ui:412 -#, fuzzy msgid "Descending value" -msgstr "Descendente" +msgstr "Valor Descendente" #: src/ui/gui/frequencies.ui:428 -#, fuzzy msgid "Ascending frequency" msgstr "Orden Ascendente" #: src/ui/gui/frequencies.ui:444 -#, fuzzy msgid "Descending frequency" msgstr "Orden Descendente" @@ -6289,66 +5589,56 @@ msgid "Order by" msgstr "Ordenado por" #: src/ui/gui/frequencies.ui:508 -#, fuzzy msgid "Frequencies: Charts" -msgstr "Frecuencias" +msgstr "Frecuencias: Gráficos" #: src/ui/gui/frequencies.ui:536 -#, fuzzy msgid "Exclude values below " -msgstr "Excluir casos según lista" +msgstr "Excluir valores por debajo " #: src/ui/gui/frequencies.ui:571 -#, fuzzy msgid "Exclude values above " -msgstr "Excluir casos por parejas" +msgstr "Excluir valores por encima " #: src/ui/gui/frequencies.ui:609 -#, fuzzy msgid "Chart Formatting" -msgstr "Comillas" +msgstr "Formato de Gráficos" #: src/ui/gui/frequencies.ui:633 msgid "Draw histograms" -msgstr "" +msgstr "Dibujar histogramas" #: src/ui/gui/frequencies.ui:645 msgid "Superimpose normal curve" -msgstr "" +msgstr "Sobreimprimir curva normal" #: src/ui/gui/frequencies.ui:661 -#, fuzzy msgid "Scale:" -msgstr "Escala" +msgstr "Escala:" #: src/ui/gui/frequencies.ui:682 -#, fuzzy msgid "Percentages" -msgstr "Percentiles" +msgstr "Porcentajes" #: src/ui/gui/frequencies.ui:705 -#, fuzzy msgid "Histograms" -msgstr "Separadores" +msgstr "Histogramas" #: src/ui/gui/frequencies.ui:729 msgid "Draw pie charts" -msgstr "" +msgstr "Dibuja diagramas de sectores" #: src/ui/gui/frequencies.ui:741 -#, fuzzy msgid "Include slices for missing values" -msgstr "Valores perdidos _Discretos" +msgstr "Incluir sectores para los valores perdidos" #: src/ui/gui/frequencies.ui:758 -#, fuzzy msgid "Pie Charts" -msgstr "Separadores" +msgstr "Diagramas de Sectores" #: src/ui/gui/oneway.ui:8 -#, fuzzy msgid "One-Way ANOVA" -msgstr "_ANOVA de un factor" +msgstr "ANOVA de un factor" #: src/ui/gui/oneway.ui:31 msgid "_Factor:" @@ -6371,9 +5661,8 @@ msgid "_Contrasts..." msgstr "_Contrastes..." #: src/ui/gui/oneway.ui:292 -#, fuzzy msgid "One-Way ANOVA: Contrasts" -msgstr "_ANOVA de un factor" +msgstr "ANOVA de un factor: Contrastes" #: src/ui/gui/oneway.ui:369 msgid "_Coefficients:" @@ -6404,9 +5693,8 @@ msgid "Current Status: " msgstr "Estatus actual: " #: src/ui/gui/psppire.ui:195 -#, fuzzy msgid "Transpose" -msgstr "_Trasponer" +msgstr "Transponer" #: src/ui/gui/psppire.ui:247 msgid "Name Variable:" @@ -6449,9 +5737,8 @@ msgid "Analysis by groups is off" msgstr "El análisis por grupos está activado" #: src/ui/gui/psppire.ui:709 -#, fuzzy msgid "Compute Variable" -msgstr "Variables de salida" +msgstr "Calcular Variable" #: src/ui/gui/psppire.ui:742 msgid "Target Variable:" @@ -6527,9 +5814,8 @@ msgid "Unselected Cases Are" msgstr "Los casos no seleccionados són" #: src/ui/gui/psppire.ui:1585 -#, fuzzy msgid "Data File Comments" -msgstr "_Comentarios al archivo de datos" +msgstr "Comentarios del fichero de datos" #: src/ui/gui/psppire.ui:1609 msgid "Comments:" @@ -6544,9 +5830,8 @@ msgid "Column Number: 0" msgstr "Columna Número: 0" #: src/ui/gui/psppire.ui:1703 -#, fuzzy msgid "Select Cases: Range" -msgstr "Seleccionar casos" +msgstr "Seleccionar casos: Rango" #: src/ui/gui/psppire.ui:1750 msgid "First case" @@ -6562,25 +5847,23 @@ msgstr "Observación" #: src/ui/gui/psppire.ui:1808 msgid "Compute Variable: Type and Label" -msgstr "" +msgstr "Calcular Variable: Tipo y Etiqueta" #: src/ui/gui/psppire.ui:1843 msgid "Use expression as label" msgstr "Utilizar la expresión como etiqueta" #: src/ui/gui/psppire.ui:2088 -#, fuzzy msgid "Goto Case" -msgstr "Ir al Caso" +msgstr "Ir al Cas" #: src/ui/gui/psppire.ui:2106 msgid "Goto Case Number:" msgstr "Ir al caso número:" #: src/ui/gui/psppire.ui:2149 -#, fuzzy msgid "Select Cases: Random Sample" -msgstr "Seleccionar casos" +msgstr "Seleccionar casos: Muestra aleatoria" #: src/ui/gui/psppire.ui:2247 msgid "Sample Size" @@ -6619,9 +5902,8 @@ msgid "_Ties..." msgstr "Vínculos..." #: src/ui/gui/rank.ui:346 -#, fuzzy msgid "Rank Cases: Types" -msgstr "Rango de Casos" +msgstr "Rango de casos: Tipos" #: src/ui/gui/rank.ui:366 msgid "Sum of case weights" @@ -6676,9 +5958,8 @@ msgid "Proportion Estimation Formula" msgstr "Fórmula de estimación de Proporciones" #: src/ui/gui/rank.ui:625 -#, fuzzy msgid "Rank Cases: Ties" -msgstr "Rango de Casos" +msgstr "Rango de casos: Vínculos" #: src/ui/gui/rank.ui:651 msgid "_Mean" @@ -6701,9 +5982,8 @@ msgid "Rank Assigned to Ties" msgstr "Rango asignado a empates" #: src/ui/gui/sort.ui:8 -#, fuzzy msgid "Sort Cases" -msgstr "Ordenar Caso_s" +msgstr "Ordenar Casos" #: src/ui/gui/sort.ui:79 msgid "Sort by:" @@ -6722,9 +6002,8 @@ msgid "System Missing" msgstr "Perdido del Sistema" #: src/ui/gui/recode.ui:199 -#, fuzzy msgid "System or User Missing" -msgstr "Perdido de sistema o de usuario" +msgstr "Perdido de Sistema o de Usuario" #: src/ui/gui/recode.ui:237 msgid "through" @@ -6807,9 +6086,8 @@ msgid "Independent" msgstr "Independiente" #: src/ui/gui/regression.ui:236 -#, fuzzy msgid "Regression: Save" -msgstr "Regresión" +msgstr "Regresión: Guardar" #: src/ui/gui/regression.ui:250 msgid "Predicted values" @@ -6820,9 +6098,8 @@ msgid "Residuals" msgstr "Residuales" #: src/ui/gui/regression.ui:298 -#, fuzzy msgid "Regression: Statistics" -msgstr "Pruebas Estadísticas" +msgstr "Regresión: Estadísticos" #: src/ui/gui/reliability.ui:27 msgid "Reliability Analysis" @@ -6841,43 +6118,36 @@ msgid "Variables in first split:" msgstr "Variables a primera división:" #: src/ui/gui/roc.ui:115 -#, fuzzy msgid "_Test Variable:" -msgstr "Variable(s) de contraste:" +msgstr "Variable de prueba:" #: src/ui/gui/roc.ui:147 -#, fuzzy msgid "_State Variable:" -msgstr "Nombre de Variable:" +msgstr "Variable de Estado:" #: src/ui/gui/roc.ui:172 -#, fuzzy msgid "_Value of state variable:" -msgstr "Utilizar variable de filtro" +msgstr "_Valor de la variable de estado:" #: src/ui/gui/roc.ui:209 -#, fuzzy msgid "ROC C_urve" msgstr "Curva ROC" #: src/ui/gui/roc.ui:227 msgid "_With diagonal reference line" -msgstr "" +msgstr "Con línea de referencia diagonal" #: src/ui/gui/roc.ui:251 -#, fuzzy msgid "Standard _Error and Confidence Interval" -msgstr "Intervalo de Confianza del 95%%" +msgstr "_Error típico y Intervalo de Confianza" #: src/ui/gui/roc.ui:266 -#, fuzzy msgid "_Coordinate points of the ROC Curve" -msgstr "Coordenadas de la Curva" +msgstr "_Coordenadas de la Curva ROC" #: src/ui/gui/t-test.ui:8 -#, fuzzy msgid "Independent-Samples T Test" -msgstr "Prueba T para muestras _Independientes" +msgstr "Prueba T para muestras Independientes" #: src/ui/gui/t-test.ui:54 src/ui/gui/t-test.ui:175 src/ui/gui/t-test.ui:231 msgid "Define Groups" @@ -6900,9 +6170,8 @@ msgid "_Use specified values:" msgstr "Utiliza valores especificados:" #: src/ui/gui/t-test.ui:420 -#, fuzzy msgid "Options" -msgstr "Opciones:" +msgstr "Opciones" #: src/ui/gui/t-test.ui:452 msgid "Exclude cases _analysis by analysis" @@ -6913,7 +6182,6 @@ msgid "Exclude cases _listwise" msgstr "Excluir casos según _lista" #: src/ui/gui/t-test.ui:529 -#, fuzzy msgid "One - Sample T Test" msgstr "Prueba T para una muestra" @@ -6922,9 +6190,8 @@ msgid "Test Value: " msgstr "Valor de Contraste: " #: src/ui/gui/t-test.ui:704 -#, fuzzy msgid "Paired Samples T Test" -msgstr "Prueba T para muestras Em_parejadas" +msgstr "Prueba T para muestras Emparejadas" #: src/ui/gui/text-data-import.ui:8 msgid "Importing Textual Data" @@ -6932,21 +6199,13 @@ msgstr "Importando datos textuales" #: src/ui/gui/text-data-import.ui:19 msgid "" -"This assistant will guide you through the process of importing data into " -"PSPP from a text file with one line per case, in which fields are separated " -"by tabs, commas, or other delimiters.\n" +"This assistant will guide you through the process of importing data into PSPP from a text file with one line per case, in which fields are separated by tabs, commas, or other delimiters.\n" "\n" -"The selected file contains N lines of text. Only the first M of these will " -"be shown for preview purposes in the following screens. You may choose " -"below how much of the file should actually be imported." +"The selected file contains N lines of text. Only the first M of these will be shown for preview purposes in the following screens. You may choose below how much of the file should actually be imported." msgstr "" -"Este asistente te quiará a lo largo del proceso de importar datos al PSPP " -"desde un archivo de texto con una línea por caso, en el cual los campos " -"están separados por tabuladores, comas, u otros delimitadores.\n" +"Este asistente te quiará a lo largo del proceso de importar datos al PSPP desde un archivo de texto con una línea por caso, en el cual los campos están separados por tabuladores, comas, u otros delimitadores.\n" "\n" -"El archivo seleccionado contiene N líneas de texto. Solo las primeras M se " -"mostrarán como previsualización en las pantallas siguientes. Puedes escoger " -"a continuación qué parte del archivo ha de ser importado." +"El archivo seleccionado contiene N líneas de texto. Solo las primeras M se mostrarán como previsualización en las pantallas siguientes. Puedes escoger a continuación qué parte del archivo ha de ser importado." #: src/ui/gui/text-data-import.ui:52 msgid "All cases" @@ -6978,8 +6237,7 @@ msgstr "Seleccionar la primera línea del archivo que contiene datos." #: src/ui/gui/text-data-import.ui:241 msgid "Line above selected line contains variable names" -msgstr "" -"La línea por encima de la seleccionada contiene los nombres de las variables" +msgstr "La línea por encima de la seleccionada contiene los nombres de las variables" #: src/ui/gui/text-data-import.ui:259 msgid "Choose Separators" @@ -7050,13 +6308,8 @@ msgid "Adjust Variable Formats" msgstr "Ajustar formato de variables" #: src/ui/gui/text-data-import.ui:618 -msgid "" -"Check the data formats displayed below and fix any that are incorrect. You " -"may set other variable properties now or later." -msgstr "" -"Comprueba los formatos de los datos mostrados a continuación y corrige los " -"problemas. Se pueden asignar propiedades de las variables ahora o más " -"adelante." +msgid "Check the data formats displayed below and fix any that are incorrect. You may set other variable properties now or later." +msgstr "Comprueba los formatos de los datos mostrados a continuación y corrige los problemas. Se pueden asignar propiedades de las variables ahora o más adelante." #: src/ui/gui/text-data-import.ui:662 msgid "Variables" @@ -7208,9 +6461,8 @@ msgid "Go To Case" msgstr "Ir al Caso" #: src/ui/gui/data-editor.ui:134 -#, fuzzy msgid "Jump to a case in the data sheet" -msgstr "Ir a un caso en la Matriz de Datos" +msgstr "Ir a un caso en la matriz de datos" #: src/ui/gui/data-editor.ui:160 msgid "Cl_ear Variables" @@ -7357,14 +6609,12 @@ msgid "One Way _ANOVA" msgstr "_ANOVA de un factor" #: src/ui/gui/data-editor.ui:376 -#, fuzzy msgid "Bivariate _Correlation..." -msgstr "Correlación de Spearman" +msgstr "_Correlación Bivariada..." #: src/ui/gui/data-editor.ui:382 -#, fuzzy msgid "Factor _Analysis" -msgstr "Lista de Factores:" +msgstr "_Análisis Factorial" #: src/ui/gui/data-editor.ui:388 msgid "Re_liability" @@ -7387,7 +6637,6 @@ msgid "_Binomial" msgstr "_Binomial" #: src/ui/gui/data-editor.ui:418 -#, fuzzy msgid "ROC Cur_ve..." msgstr "Curva ROC" @@ -7442,9 +6691,8 @@ msgid "Split File Status Area" msgstr "Área de División de Archivo" #: src/ui/gui/output-viewer.ui:22 -#, fuzzy msgid "_Export" -msgstr "_Explorar" +msgstr "_Exportar" #: src/ui/gui/syntax-editor.ui:100 msgid "_Run" @@ -7466,15 +6714,6 @@ msgstr "Línea actual" msgid "To End" msgstr "Hasta el final" -#~ msgid "Dependent variable must be numeric." -#~ msgstr "La variable dependiente debe ser numérica." - -#~ msgid "Variable %s has label of invalid length %zu." -#~ msgstr "Variable %s tiene una etiqueta de longitud no válida %zu." - -#~ msgid "_About" -#~ msgstr "Sobre..." - #~ msgid "Buttons" #~ msgstr "Botones" @@ -7499,6 +6738,9 @@ msgstr "Hasta el final" #~ msgid "...not found" #~ msgstr "...no se encuentra" +#~ msgid "Variable %s has label of invalid length %zu." +#~ msgstr "Variable %s tiene una etiqueta de longitud no válida %zu." + #~ msgid "little-endian" #~ msgstr "little-endian" @@ -7589,27 +6831,20 @@ msgstr "Hasta el final" #~ msgid "unexpected end of line expecting string" #~ msgstr "final de línea inesperado cuando se esperaba una cadena" -#~ msgid "" -#~ "ascii: bad index value for `box' key: syntax is box[INDEX], 0 <= INDEX < %" -#~ "d decimal, with INDEX expressed in base 4" -#~ msgstr "" -#~ "ascii: índice de valor defectuoso para la clave `box' : la sintaxis es la " -#~ "box[INDEX], 0 <= INDEX < %d decimal, con INDEX expresado en base 4" +#~ msgid "ascii: bad index value for `box' key: syntax is box[INDEX], 0 <= INDEX < %d decimal, with INDEX expressed in base 4" +#~ msgstr "ascii: índice de valor defectuoso para la clave `box' : la sintaxis es la box[INDEX], 0 <= INDEX < %d decimal, con INDEX expresado en base 4" #~ msgid "ascii: multiple values for %s" #~ msgstr "ascii: valores múltiples para %s" #~ msgid "ascii: only screen devices may have `auto' length or width" -#~ msgstr "" -#~ "ascii: únicamente los dispositivos de pantalla pueden tener largo o ancho " -#~ "`auto'" +#~ msgstr "ascii: únicamente los dispositivos de pantalla pueden tener largo o ancho `auto'" #~ msgid "ascii: positive integer required as `%s' value" #~ msgstr "ascii: entero positivo requerido como valor `%s'" #~ msgid "ascii: `emphasis' value must be `bold', `underline', or `none'" -#~ msgstr "" -#~ "ascii: el valor de `emphasis' tiene que ser `bold', `underline', o `none'" +#~ msgstr "ascii: el valor de `emphasis' tiene que ser `bold', `underline', o `none'" #~ msgid "ascii: zero or positive integer required as `%s' value" #~ msgstr "ascii: cero o entero positivo requerido como valor `%s'" @@ -7627,9 +6862,7 @@ msgstr "Hasta el final" #~ msgstr "abriendo archivo de resultado HTML: %s" #~ msgid "unknown configuration parameter `%s' for HTML device driver" -#~ msgstr "" -#~ "parámetro de configuración `%s' desconocido para el dispositivo " -#~ "controlador HTML" +#~ msgstr "parámetro de configuración `%s' desconocido para el dispositivo controlador HTML" #~ msgid "error creating \"%s\"" #~ msgstr "error en crear \"%s\"" @@ -7643,11 +6876,8 @@ msgstr "Hasta el final" #~ msgid "using default output driver configuration" #~ msgstr "utilizando driver de configuración de resultados por defecto" -#~ msgid "" -#~ "cannot find output initialization file (use `-vv' to view search path)" -#~ msgstr "" -#~ "no se puede encontrar el archivo de inicialización de resultados " -#~ "(utilizar `-vv' para ver la ruta de búsqueda)" +#~ msgid "cannot find output initialization file (use `-vv' to view search path)" +#~ msgstr "no se puede encontrar el archivo de inicialización de resultados (utilizar `-vv' para ver la ruta de búsqueda)" #~ msgid "cannot open \"%s\"" #~ msgstr "no se puede abrir \"%s\"" @@ -7674,22 +6904,14 @@ msgstr "Hasta el final" #~ "Clases de controlador:\n" #~ "\t" -#~ msgid "" -#~ "reached end of options inside quoted string parsing options for \"%s\" " -#~ "driver" -#~ msgstr "" -#~ "Llegado al final de opciones dentro de la cadena entre comillas " -#~ "analitzando opciones para el controlador \"%s\"" +#~ msgid "reached end of options inside quoted string parsing options for \"%s\" driver" +#~ msgstr "Llegado al final de opciones dentro de la cadena entre comillas analitzando opciones para el controlador \"%s\"" #~ msgid "syntax error in string constant parsing options for \"%s\" driver" -#~ msgstr "" -#~ "error de sintaxis en una constante de cadena analizando opciones para el " -#~ "controlador \"%s\"" +#~ msgstr "error de sintaxis en una constante de cadena analizando opciones para el controlador \"%s\"" #~ msgid "syntax error expecting `=' parsing options for driver \"%s\"" -#~ msgstr "" -#~ "error de sintaxis cuando se esperaba `=' analizando las opciones para el " -#~ "controlador \"%s\"" +#~ msgstr "error de sintaxis cuando se esperaba `=' analizando las opciones para el controlador \"%s\"" #~ msgid "unknown output driver class `%.*s'" #~ msgstr "controlador de salida de clase desconocida `%.*s'" @@ -7701,9 +6923,7 @@ msgstr "Hasta el final" #~ msgstr "no puede inicializar el controlador de salida `%s' de la clase `%s'" #~ msgid "driver definition line missing driver name or class name" -#~ msgstr "" -#~ "línea de definición del controlador sin nombre del controlador o nombre " -#~ "de la clase" +#~ msgstr "línea de definición del controlador sin nombre del controlador o nombre de la clase" #~ msgid "opening PostScript output file \"%s\"" #~ msgstr "abriendo el archivo de salida PostScript \"%s\"" @@ -7712,16 +6932,10 @@ msgstr "Hasta el final" #~ msgstr "cierre el archivo de salida PostScript \"%s\"" #~ msgid "unknown configuration parameter `%s' for PostScript device driver" -#~ msgstr "" -#~ "parámetro de configuración desconocido`%s' para el controlador del " -#~ "dispositivo PostScript" +#~ msgstr "parámetro de configuración desconocido`%s' para el controlador del dispositivo PostScript" -#~ msgid "" -#~ "unknown orientation `%s' (valid orientations are `portrait' and " -#~ "`landscape')" -#~ msgstr "" -#~ "orientación desconocida `%s' (las orientaciones válidas son `retrato' i " -#~ "`paisaje')" +#~ msgid "unknown orientation `%s' (valid orientations are `portrait' and `landscape')" +#~ msgstr "orientación desconocida `%s' (las orientaciones válidas son `retrato' i `paisaje')" #~ msgid "boolean value expected for %s" #~ msgstr "valor booleano esperado para %s" @@ -7729,11 +6943,8 @@ msgstr "Hasta el final" #~ msgid "positive integer value required for `%s'" #~ msgstr "valor entero positivo necesario para `%s'" -#~ msgid "" -#~ "default font size must be at least 1 point (value of 1000 for key `%s')" -#~ msgstr "" -#~ "la medida de carácter por defecto tiene que ser como mínimo 1 punto " -#~ "(valor de 1000 por la clave `%s')" +#~ msgid "default font size must be at least 1 point (value of 1000 for key `%s')" +#~ msgstr "la medida de carácter por defecto tiene que ser como mínimo 1 punto (valor de 1000 por la clave `%s')" #~ msgid "could not find AFM file \"%s\"" #~ msgstr "no se puede encontrar el archivo AFM \"%s\"" @@ -7762,11 +6973,8 @@ msgstr "Hasta el final" #~ msgid "creating \"%s\"" #~ msgstr "creando \"%s\"" -#~ msgid "" -#~ "set to `compatible' if you want output calculated from broken algorithms" -#~ msgstr "" -#~ "active `compatible' si quiere obtener resultados calculados a partir de " -#~ "algoritmos rotos" +#~ msgid "set to `compatible' if you want output calculated from broken algorithms" +#~ msgstr "active `compatible' si quiere obtener resultados calculados a partir de algoritmos rotos" #~ msgid "Append DIR to include path" #~ msgstr "Adjuntar DIR en la ruta de inclusión" @@ -7783,11 +6991,8 @@ msgstr "Hasta el final" #~ msgid "Don't allow some unsafe operations" #~ msgstr "No permite algunas operaciones inseguras" -#~ msgid "" -#~ "Set to `compatible' if you want only to accept SPSS compatible syntax" -#~ msgstr "" -#~ "Active `compatible' si únicamente quiere aceptar la sintaxis compatible " -#~ "de SPSS" +#~ msgid "Set to `compatible' if you want only to accept SPSS compatible syntax" +#~ msgstr "Active `compatible' si únicamente quiere aceptar la sintaxis compatible de SPSS" #~ msgid "PSPP --- A program for statistical analysis" #~ msgstr "PSPP ---Un programa de análisis estadístico" @@ -7805,9 +7010,7 @@ msgstr "Hasta el final" #~ msgstr "Opciones que afectan a la sintaxis y al comportamiento:" #~ msgid "Cannot open %s (%s). Writing errors to stdout instead.\n" -#~ msgstr "" -#~ "No se puede abrir %s (%s). Alternativamente, escribiendo errores a " -#~ "stdout.\n" +#~ msgstr "No se puede abrir %s (%s). Alternativamente, escribiendo errores a stdout.\n" #~ msgid "Terminating execution of syntax file due to error." #~ msgstr "Finalizando la ejecución del archivo de sintaxis debido a un error." @@ -7819,13 +7022,10 @@ msgstr "Hasta el final" #~ msgstr "Enviar mensajes de error a FILE (anexa)" #~ msgid "Select output driver DEVICE and disable defaults" -#~ msgstr "" -#~ "Seleccionar el controlador de salida DEVICE y desactivar los valores por " -#~ "defecto" +#~ msgstr "Seleccionar el controlador de salida DEVICE y desactivar los valores por defecto" #~ msgid "Print a list of known driver classes, then exit" -#~ msgstr "" -#~ "Imprimir una lista de clases de controladores conocidos, después salir" +#~ msgstr "Imprimir una lista de clases de controladores conocidos, después salir" #~ msgid "Start an interactive session" #~ msgstr "Inicio de una sesión interactiva" @@ -7960,6 +7160,9 @@ msgstr "Hasta el final" #~ msgid "gtk-find" #~ msgstr "gtk-find" +#~ msgid "_About" +#~ msgstr "Sobre..." + #~ msgid "Print" #~ msgstr "Imprimir" @@ -7993,12 +7196,8 @@ msgstr "Hasta el final" #~ msgid "Messages Reported" #~ msgstr "Se han generado mensajes" -#~ msgid "" -#~ "The PSPP processor reported # errors. The first # and last # are shown " -#~ "below:" -#~ msgstr "" -#~ "El procesador de PSPP ha generado # errores. Los # primeros y los # " -#~ "últimos se muestran a continuación:" +#~ msgid "The PSPP processor reported # errors. The first # and last # are shown below:" +#~ msgstr "El procesador de PSPP ha generado # errores. Los # primeros y los # últimos se muestran a continuación:" #~ msgid "gtk-close" #~ msgstr "gtk-close" @@ -8028,19 +7227,11 @@ msgstr "Hasta el final" #~ "Alpha\n" #~ "Dividido" -#~ msgid "" -#~ "At most one of BARCHART, HISTOGRAM, or HBAR should be given. HBAR will " -#~ "be assumed. Argument values will be given precedence increasing along " -#~ "the order given." -#~ msgstr "" -#~ "Al menos se ha de declarar un tipo de entre BARCHART, HISTOGRAM o HBAR. " -#~ "Se asume HBAR. (Argument values will be given precedence increasing " -#~ "along the order given)." +#~ msgid "At most one of BARCHART, HISTOGRAM, or HBAR should be given. HBAR will be assumed. Argument values will be given precedence increasing along the order given." +#~ msgstr "Al menos se ha de declarar un tipo de entre BARCHART, HISTOGRAM o HBAR. Se asume HBAR. (Argument values will be given precedence increasing along the order given)." #~ msgid "Variable %s specified multiple times on VARIABLES subcommand." -#~ msgstr "" -#~ "La variable %s se ha especificado más de una vez en el subcomando " -#~ "VARIABLES." +#~ msgstr "La variable %s se ha especificado más de una vez en el subcomando VARIABLES." #~ msgid "Cum" #~ msgstr "Acum." @@ -8051,6 +7242,9 @@ msgstr "Hasta el final" #~ msgid "Pct" #~ msgstr "Pct" +#~ msgid "Dependent variable must be numeric." +#~ msgstr "La variable dependiente debe ser numérica." + #~ msgid "N of items" #~ msgstr "N de elementos" @@ -8058,8 +7252,7 @@ msgstr "Hasta el final" #~ msgstr "Err.Est.Media" #~ msgid "`/FORMAT WEIGHT' specified, but weighting is not on." -#~ msgstr "" -#~ "`/FORMAT WEIGHT' especificado, pero la ponderación no está activada." +#~ msgstr "`/FORMAT WEIGHT' especificado, pero la ponderación no está activada." #~ msgid "Line" #~ msgstr "Línea" diff --git a/po/nl.po b/po/nl.po index 4d1fc802..81a88ada 100644 --- a/po/nl.po +++ b/po/nl.po @@ -1,6 +1,6 @@ -# translation of pspp-0.7.5.po to Dutch -# Copyright (C) 2007, 2008, 2009 Free Software Foundation, Inc. -# This file is distributed under the same licence as the PSPP package.# +# translation of pspp-0.7.6.po to Dutch +# Copyright (C) 2007, 2008, 2009, 2010 Free Software Foundation, Inc. +# This file is distributed under the same licence as the PSPP package. # # Vertaalde woorden: # Bad = Foutief @@ -28,10 +28,10 @@ # Harry Thijssen , 2009, 2010. msgid "" msgstr "" -"Project-Id-Version: pspp-0.7.5\n" +"Project-Id-Version: pspp-0.7.6\n" "Report-Msgid-Bugs-To: pspp-dev@gnu.org\n" -"POT-Creation-Date: 2010-05-21 16:40-0700\n" -"PO-Revision-Date: 2010-05-25 23:08+0200\n" +"POT-Creation-Date: 2010-10-16 13:02-0700\n" +"PO-Revision-Date: 2010-10-06 22:27+0200\n" "Last-Translator: Harry Thijssen \n" "Language-Team: Dutch \n" "MIME-Version: 1.0\n" @@ -40,6 +40,10 @@ msgstr "" "Plural-Forms: nplurals=2; plural=n != 1;\n" "X-Generator: Lokalize 1.0\n" +#: src/ui/gui/helper.c:194 +msgid "Sorry. The help system hasn't yet been implemented." +msgstr "Sorry. Het hulp systeem is nog niet geïmplementeerd." + #: src/ui/gui/psppire-buttonbox.c:275 src/ui/gui/psppire-buttonbox.c:437 msgid "Continue" msgstr "Verder" @@ -69,12 +73,12 @@ msgid "Paste" msgstr "Plak" #: src/ui/gui/psppire-dictview.c:466 src/language/dictionary/split-file.c:82 -#: src/language/dictionary/sys-file-info.c:150 -#: src/language/dictionary/sys-file-info.c:340 -#: src/language/dictionary/sys-file-info.c:664 +#: src/language/dictionary/sys-file-info.c:149 +#: src/language/dictionary/sys-file-info.c:339 +#: src/language/dictionary/sys-file-info.c:663 #: src/language/stats/descriptives.c:881 -#: src/language/data-io/data-parser.c:649 -#: src/language/data-io/data-parser.c:688 src/language/data-io/print.c:403 +#: src/language/data-io/data-parser.c:682 +#: src/language/data-io/data-parser.c:721 src/language/data-io/print.c:403 msgid "Variable" msgstr "Variabele" @@ -89,13 +93,13 @@ msgstr "Var%d" #: src/data/any-reader.c:56 #, c-format -msgid "An error occurred while opening \"%s\": %s." -msgstr "Fout opgetreden bij openen van \"%s\": %s." +msgid "An error occurred while opening `%s': %s." +msgstr "Fout opgetreden bij openen van '%s': %s." #: src/data/any-reader.c:101 #, c-format -msgid "\"%s\" is not a system or portable file." -msgstr "\"%s\" is geen systeem of overdraagbaar bestand." +msgid "`%s' is not a system or portable file." +msgstr "'%s' is geen systeem of overdraagbaar bestand." #: src/data/any-reader.c:107 src/data/any-writer.c:63 msgid "The inline file is not allowed here." @@ -106,12 +110,12 @@ msgstr "Het inline-bestand is hier niet toegestaan." msgid "Month %d is not in acceptable range of 0 to 13." msgstr "Maand %d valt niet in het acceptabele bereik van 0 tot 13." -#: src/data/calendar.c:89 +#: src/data/calendar.c:91 #, c-format msgid "Day %d is not in acceptable range of 0 to 31." msgstr "Dag %d valt niet in het acceptabele bereik van 0 tot 31." -#: src/data/calendar.c:96 +#: src/data/calendar.c:100 #, c-format msgid "Date %04d-%d-%d is before the earliest acceptable date of 1582-10-15." msgstr "Datum %04d-%d-%d ligt voor de eerste acceptabele datum van 1582-10-15." @@ -120,121 +124,137 @@ msgstr "Datum %04d-%d-%d ligt voor de eerste acceptabele datum van 1582-10-15." msgid "At least one case in the data read had a weight value that was user-missing, system-missing, zero, or negative. These case(s) were ignored." msgstr "Tenminste een case in de gelezen gegevens heeft een gewichtwaarde 'user-missing, system-missing, zero, of negatief. Deze case(s) zijn genegeerd." -#: src/data/data-in.c:274 src/data/data-in.c:464 +#. TRANSLATORS: this fragment will be interpolated into messages in fh_lock() +#. that identify types of files. +#: src/data/csv-file-writer.c:152 +msgid "CSV file" +msgstr "CSV bestand" + +#: src/data/csv-file-writer.c:161 src/data/sys-file-writer.c:218 +#, c-format +msgid "Error opening `%s' for writing as a system file: %s." +msgstr "Fout bij het openen van '%s' voor het schrijven als een systeembestand: %s." + +#: src/data/csv-file-writer.c:462 +#, c-format +msgid "An I/O error occurred writing CSV file `%s'." +msgstr "Een I/O fout is opgetreden tijdens het schrijven van systeembestand '%s'." + +#: src/data/data-in.c:172 +#, fuzzy, c-format +msgid "Data is not valid as format %s: %s" +msgstr "%s variabele %s heeft ongeldig %s opmaak %s." + +#: src/data/data-in.c:377 src/data/data-in.c:553 msgid "Field contents are not numeric." msgstr "Veldinhoud is niet numeriek." -#: src/data/data-in.c:276 src/data/data-in.c:466 +#: src/data/data-in.c:379 src/data/data-in.c:555 msgid "Number followed by garbage." msgstr "Nummer gevolgd door rommel." -#: src/data/data-in.c:287 +#: src/data/data-in.c:392 msgid "Invalid numeric syntax." msgstr "Ongeldige numerieke syntax." -#: src/data/data-in.c:296 src/data/data-in.c:479 +#: src/data/data-in.c:400 src/data/data-in.c:571 msgid "Too-large number set to system-missing." msgstr "Te groot getal, is op system-missing gezet." -#: src/data/data-in.c:301 src/data/data-in.c:484 +#: src/data/data-in.c:406 src/data/data-in.c:577 msgid "Too-small number set to zero." msgstr "Te klein getal, is op nul gezet." -#: src/data/data-in.c:327 +#: src/data/data-in.c:426 msgid "All characters in field must be digits." msgstr "Alle tekens in veld moeten cijfers zijn." -#: src/data/data-in.c:350 +#: src/data/data-in.c:445 msgid "Unrecognized character in field." msgstr "Niet herkenbaar teken in veld." -#: src/data/data-in.c:374 src/data/data-in.c:650 +#: src/data/data-in.c:466 src/data/data-in.c:729 msgid "Field must have even length." msgstr "Veld moet een even lengte hebben." -#: src/data/data-in.c:379 src/data/data-in.c:661 +#: src/data/data-in.c:468 src/data/data-in.c:732 msgid "Field must contain only hex digits." msgstr "Veld mag alleen hexadecimale cijfers bevatten." -#: src/data/data-in.c:700 src/data/data-in.c:747 +#: src/data/data-in.c:544 +#, fuzzy +msgid "Invalid zoned decimal syntax." +msgstr "Ongeldige numerieke syntax." + +#: src/data/data-in.c:644 src/data/data-in.c:650 +#, fuzzy +msgid "Invalid syntax for P field." +msgstr "Ongeldige numerieke syntax." + +#: src/data/data-in.c:768 src/data/data-in.c:814 msgid "Syntax error in date field." msgstr "Syntaxfout in datumveld." -#: src/data/data-in.c:716 +#: src/data/data-in.c:783 #, c-format msgid "Day (%ld) must be between 1 and 31." msgstr "Dag (%ld) moet tussen 1 en 31 liggen." -#: src/data/data-in.c:763 +#: src/data/data-in.c:828 msgid "Delimiter expected between fields in date." msgstr "Veldscheider verwacht tussen velden in datum." -#: src/data/data-in.c:837 +#: src/data/data-in.c:902 msgid "Unrecognized month format. Months may be specified as Arabic or Roman numerals or as at least 3 letters of their English names." msgstr "Niet-herkende maand opmaak. Maanden mogen gespecificeerd zijn als Arabisch of Romeins numeriek of als tenminste de eerste 3 letters van hun Engelse naam." -#: src/data/data-in.c:864 +#: src/data/data-in.c:929 #, c-format msgid "Year (%ld) must be between 1582 and 19999." msgstr "Jaar (%ld) moet tussen 1582 en 19999 liggen." -#: src/data/data-in.c:876 +#: src/data/data-in.c:940 #, c-format -msgid "Trailing garbage \"%.*s\" following date." -msgstr "Afsluitende rommel \"%.*s\" achter datum." +msgid "Trailing garbage `%.*s' following date." +msgstr "Afsluitende rommel '%.*s' achter datum." -#: src/data/data-in.c:892 +#: src/data/data-in.c:954 msgid "Julian day must have exactly three digits." msgstr "Juliaanse datum moet bestaan uit precies 3 cijfers." -#: src/data/data-in.c:897 +#: src/data/data-in.c:956 #, c-format msgid "Julian day (%ld) must be between 1 and 366." msgstr "Juliaanse dag (%ld) moet tussen 1 en 366 zijn." -#: src/data/data-in.c:921 +#: src/data/data-in.c:980 #, c-format msgid "Quarter (%ld) must be between 1 and 4." msgstr "Kwartaal (%ld) moet tussen 1 en 4 zijn." -#: src/data/data-in.c:941 +#: src/data/data-in.c:1001 #, c-format msgid "Week (%ld) must be between 1 and 53." msgstr "Week (%ld) moet tussen 1 en 53 zijn." -#: src/data/data-in.c:954 +#: src/data/data-in.c:1013 msgid "Delimiter expected between fields in time." msgstr "Veldscheider verwacht tussen velden in tijd." -#: src/data/data-in.c:974 +#: src/data/data-in.c:1033 #, c-format msgid "Minute (%ld) must be between 0 and 59." msgstr "Minuut (%ld) moet tussen 0 en 59 zijn." -#: src/data/data-in.c:1014 +#: src/data/data-in.c:1071 msgid "Unrecognized weekday name. At least the first two letters of an English weekday name must be specified." msgstr "Niet-herkende weekdagnaam. Tenminste de eerste 2 letters van een Engelse weekdagnaam moeten opgegeven worden." -#: src/data/data-in.c:1152 +#: src/data/data-in.c:1197 #, c-format msgid "`%c' expected in date field." msgstr "'%c' verwacht in datumveld." -#: src/data/data-in.c:1193 -#, c-format -msgid "column %d" -msgstr "kolom %d" - -#: src/data/data-in.c:1195 -#, c-format -msgid "columns %d-%d" -msgstr "kolommen %d-%d" - -#: src/data/data-in.c:1199 -#, c-format -msgid "%s field) " -msgstr "%s veld) " - #: src/data/data-out.c:481 #, c-format msgid "Weekday number %f is not between 1 and 7." @@ -257,26 +277,26 @@ msgstr "systeem" msgid "scratch" msgstr "scratch" -#: src/data/dictionary.c:980 +#: src/data/dictionary.c:981 msgid "At least one case in the data file had a weight value that was user-missing, system-missing, zero, or negative. These case(s) were ignored." msgstr "Op zijn minst een case in het gegevensbestand heeft een gewichtwaarde user-missing, system-missing, nul, of negatief. Deze case(s) zijn genegeerd." -#: src/data/dictionary.c:1283 +#: src/data/dictionary.c:1284 #, c-format msgid "Truncating document line to %d bytes." msgstr "Documentregel afgekapt tot %d bytes." -#: src/data/file-handle-def.c:462 +#: src/data/file-handle-def.c:471 #, c-format msgid "Can't read from %s as a %s because it is already being read as a %s." msgstr "Kan niet lezen van %s als een %s omdat het al gelezen wordt als een %s." -#: src/data/file-handle-def.c:466 +#: src/data/file-handle-def.c:475 #, c-format msgid "Can't write to %s as a %s because it is already being written as a %s." msgstr "Kan niet schrijven naar %s als een %s omdat het al geschreven wordt als een %s." -#: src/data/file-handle-def.c:473 +#: src/data/file-handle-def.c:482 #, c-format msgid "Can't re-open %s as a %s." msgstr "Kan %s niet heropenen als een %s." @@ -286,86 +306,86 @@ msgstr "Kan %s niet heropenen als een %s." msgid "Not opening pipe file `%s' because SAFER option set." msgstr "Pijpbestand '%s' wordt niet geopend omdat de SAFER optie is gezet." -#: src/data/format.c:235 +#: src/data/format.c:314 msgid "Input format" msgstr "Invoerindeling" -#: src/data/format.c:235 +#: src/data/format.c:314 msgid "Output format" msgstr "Uitvoerindeling" -#: src/data/format.c:244 +#: src/data/format.c:323 #, c-format msgid "Format %s may not be used for input." msgstr "Indeling %s mag niet gebruikt worden voor invoer." -#: src/data/format.c:251 +#: src/data/format.c:330 #, c-format msgid "%s specifies width %d, but %s requires an even width." msgstr "%s specificeert breedte %d, maar %s vereist een even breedte." -#: src/data/format.c:260 +#: src/data/format.c:339 #, c-format msgid "%s %s specifies width %d, but %s requires a width between %d and %d." msgstr "%s %s specificeert breedte %d, maar %s vereist een breedte tussen %d en %d." -#: src/data/format.c:269 +#: src/data/format.c:348 #, c-format msgid "%s %s specifies %d decimal place, but %s does not allow any decimals." msgid_plural "%s %s specifies %d decimal places, but %s does not allow any decimals." msgstr[0] "%s %s specificeert %d decimaal, maar %s staat geen decimalen toe." msgstr[1] "%s %s specificeert %d decimalen, maar %s staat geen decimalen toe." -#: src/data/format.c:280 +#: src/data/format.c:359 #, c-format msgid "%s %s specifies %d decimal place, but the given width allows at most %d decimals." msgid_plural "%s %s specifies %d decimal places, but the given width allows at most %d decimals." msgstr[0] "%s %s specificeert %d decimaal, maar de opgegeven breedte staat maximaal %d decimalen toe." msgstr[1] "%s %s specificeert %d decimalen, maar de opgegeven breedte staat maximaal %d decimalen toe." -#: src/data/format.c:287 +#: src/data/format.c:366 #, c-format msgid "%s %s specifies %d decimal place, but the given width does not allow for any decimals." msgid_plural "%s %s specifies %d decimal places, but the given width does not allow for any decimals." msgstr[0] "%s %s specificeert %d decimaal, maar de opgegeven breedte staat geen decimalen toe." msgstr[1] "%s %s specificeert %d decimalen, maar de opgegeven breedte staat geen decimalen toe." -#: src/data/format.c:326 +#: src/data/format.c:405 #, c-format msgid "%s variables are not compatible with %s format %s." msgstr "%s variabelen zijn niet overeenkomstig met %s opmaak %s." -#: src/data/format.c:327 src/data/sys-file-reader.c:752 -#: src/ui/gui/psppire-var-store.c:628 src/ui/gui/psppire.ui:1960 +#: src/data/format.c:406 src/data/sys-file-reader.c:751 +#: src/ui/gui/psppire-var-store.c:628 src/ui/gui/compute.ui:503 #: src/ui/gui/var-sheet-dialogs.ui:139 msgid "String" msgstr "Tekenreeks" -#: src/data/format.c:327 src/data/sys-file-reader.c:752 -#: src/ui/gui/psppire-var-store.c:621 src/ui/gui/psppire.ui:2040 +#: src/data/format.c:406 src/data/sys-file-reader.c:751 +#: src/ui/gui/psppire-var-store.c:621 src/ui/gui/compute.ui:584 #: src/ui/gui/var-sheet-dialogs.ui:27 msgid "Numeric" msgstr "Numeriek" -#: src/data/format.c:328 src/data/sys-file-reader.c:1472 -#: src/data/sys-file-reader.c:1474 src/language/xforms/recode.c:493 -#: src/language/xforms/recode.c:494 src/language/xforms/recode.c:506 -#: src/language/xforms/recode.c:507 +#: src/data/format.c:407 src/data/sys-file-reader.c:1472 +#: src/data/sys-file-reader.c:1474 src/language/xforms/recode.c:496 +#: src/language/xforms/recode.c:497 src/language/xforms/recode.c:509 +#: src/language/xforms/recode.c:510 +#: src/language/dictionary/apply-dictionary.c:77 #: src/language/dictionary/apply-dictionary.c:78 -#: src/language/dictionary/apply-dictionary.c:79 msgid "numeric" msgstr "numeriek" -#: src/data/format.c:328 src/data/sys-file-reader.c:1472 -#: src/data/sys-file-reader.c:1474 src/language/xforms/recode.c:493 -#: src/language/xforms/recode.c:494 src/language/xforms/recode.c:506 -#: src/language/xforms/recode.c:507 +#: src/data/format.c:407 src/data/sys-file-reader.c:1472 +#: src/data/sys-file-reader.c:1474 src/language/xforms/recode.c:496 +#: src/language/xforms/recode.c:497 src/language/xforms/recode.c:509 +#: src/language/xforms/recode.c:510 +#: src/language/dictionary/apply-dictionary.c:77 #: src/language/dictionary/apply-dictionary.c:78 -#: src/language/dictionary/apply-dictionary.c:79 msgid "string" msgstr "tekenreeks" -#: src/data/format.c:346 +#: src/data/format.c:425 #, c-format msgid "String variable with width %d is not compatible with format %s." msgstr "Tekenreeksvariabele met breedte %d is niet overeenkomstig met opmaaak %s." @@ -376,13 +396,13 @@ msgstr "Ondersteuning voor Gnumeric-bestanden is niet gecompileerd in deze insta #: src/data/gnumeric-reader.c:364 #, c-format -msgid "Error opening \"%s\" for reading as a Gnumeric file: %s." -msgstr "Fout bij het openen van \"%s\" voor het lezen als een Gnumeric-bestand: %s." +msgid "Error opening `%s' for reading as a Gnumeric file: %s." +msgstr "Fout bij het openen van '%s' voor het lezen als een Gnumeric-bestand: %s." #: src/data/gnumeric-reader.c:384 #, c-format -msgid "Invalid cell range \"%s\"" -msgstr "Ongeldig celbereik \"%s\"" +msgid "Invalid cell range `%s'" +msgstr "Ongeldig celbereik '%s'" #: src/data/gnumeric-reader.c:516 src/data/psql-reader.c:187 #, c-format @@ -391,212 +411,202 @@ msgstr "Kan geen variabelennaam creëren van %s" #: src/data/gnumeric-reader.c:528 #, c-format -msgid "Selected sheet or range of spreadsheet \"%s\" is empty." -msgstr "Geselecteerd blad of bereik van werkblad \"%s\" is leeg." - -#: src/data/make-file.c:68 -#, c-format -msgid "%s: Creating temporary file: %s." -msgstr "%s: Aanmaken tijdelijk bestand: %s." - -#: src/data/make-file.c:110 -#, c-format -msgid "%s: Creating file: %s." -msgstr "%s: Aanmaken bestand: %s." +msgid "Selected sheet or range of spreadsheet `%s' is empty." +msgstr "Geselecteerd blad of bereik van werkblad '%s' is leeg." -#: src/data/make-file.c:148 +#: src/data/make-file.c:71 #, c-format msgid "Opening %s for writing: %s." msgstr "Openen %s voor schrijven: %s." -#: src/data/make-file.c:157 +#: src/data/make-file.c:80 #, c-format msgid "Opening stream for %s: %s." msgstr "Openen stream voor %s: %s." -#: src/data/make-file.c:186 +#: src/data/make-file.c:109 #, c-format msgid "Creating temporary file to replace %s: %s." msgstr "Aanmaken tijdelijk bestand voor het vervangen van %s: %s." -#: src/data/make-file.c:197 +#: src/data/make-file.c:120 #, c-format msgid "Creating temporary file %s: %s." msgstr "Aanmaken tijdelijk bestand %s: %s." -#: src/data/make-file.c:209 +#: src/data/make-file.c:132 #, c-format msgid "Opening stream for temporary file %s: %s." msgstr "Openen stream voor tijdelijk bestand %s: %s." -#: src/data/make-file.c:250 +#: src/data/make-file.c:173 #, c-format msgid "Replacing %s by %s: %s." msgstr "Vervangen %s door %s: %s." -#: src/data/make-file.c:278 +#: src/data/make-file.c:201 #, c-format msgid "Removing %s: %s." msgstr "Verwijderen %s: %s." -#: src/data/por-file-reader.c:99 +#: src/data/por-file-reader.c:98 #, c-format msgid "portable file %s corrupt at offset 0x%llx: " msgstr "overdraagbaar-bestand %s beschadigd op positie 0x%llx: " -#: src/data/por-file-reader.c:128 +#: src/data/por-file-reader.c:129 #, c-format msgid "reading portable file %s at offset 0x%llx: " msgstr "lezen overdraagbaar bestand %s op positie 0x%llx: " -#: src/data/por-file-reader.c:156 +#: src/data/por-file-reader.c:159 #, c-format -msgid "Error closing portable file \"%s\": %s." -msgstr "Fout bij het afsluiten van overdraagbaar bestand \"%s\": %s." +msgid "Error closing portable file `%s': %s." +msgstr "Fout bij het afsluiten van overdraagbaar bestand '%s': %s." -#: src/data/por-file-reader.c:208 +#: src/data/por-file-reader.c:211 msgid "unexpected end of file" msgstr "onverwacht einde-bestand" #. TRANSLATORS: this fragment will be interpolated into #. messages in fh_lock() that identify types of files. -#: src/data/por-file-reader.c:267 src/data/por-file-writer.c:149 +#: src/data/por-file-reader.c:270 src/data/por-file-writer.c:148 msgid "portable file" msgstr "overdraagbaar bestand" -#: src/data/por-file-reader.c:275 +#: src/data/por-file-reader.c:278 #, c-format -msgid "An error occurred while opening \"%s\" for reading as a portable file: %s." -msgstr "Fout opgetreden tijdens het openen van \"%s\" voor het lezen als overdraagbaar bestand: %s." +msgid "An error occurred while opening `%s' for reading as a portable file: %s." +msgstr "Fout opgetreden tijdens het openen van '%s' voor het lezen als overdraagbaar bestand: %s." -#: src/data/por-file-reader.c:296 +#: src/data/por-file-reader.c:299 msgid "Data record expected." msgstr "Gegevensrecord verwacht." -#: src/data/por-file-reader.c:378 +#: src/data/por-file-reader.c:381 msgid "Number expected." msgstr "Nummer verwacht." -#: src/data/por-file-reader.c:406 +#: src/data/por-file-reader.c:409 msgid "Missing numeric terminator." msgstr "Ontbrekende numerieke afsluiter." -#: src/data/por-file-reader.c:429 +#: src/data/por-file-reader.c:432 msgid "Invalid integer." msgstr "Ongeldige integer." -#: src/data/por-file-reader.c:440 src/data/por-file-reader.c:460 +#: src/data/por-file-reader.c:443 src/data/por-file-reader.c:463 #, c-format msgid "Bad string length %d." msgstr "Onjuiste tekenreekslengte %d." -#: src/data/por-file-reader.c:523 +#: src/data/por-file-reader.c:526 #, c-format msgid "%s: Not a portable file." msgstr "%s: Geen overdraagbaar bestand." -#: src/data/por-file-reader.c:540 +#: src/data/por-file-reader.c:543 #, c-format msgid "Unrecognized version code `%c'." msgstr "Niet-herkende versiecode '%c'." -#: src/data/por-file-reader.c:549 +#: src/data/por-file-reader.c:552 #, c-format msgid "Bad date string length %zu." msgstr "Onjuiste datum-tekenreekslengte %zu." -#: src/data/por-file-reader.c:551 +#: src/data/por-file-reader.c:554 #, c-format msgid "Bad time string length %zu." msgstr "Onjuiste tijd-tekenreekslengte %zu." -#: src/data/por-file-reader.c:593 +#: src/data/por-file-reader.c:596 #, c-format msgid "%s: Bad format specifier byte (%d). Variable will be assigned a default format." msgstr "%s: Onjuist opmaakspecificatie byte (%d). Variabele krijgt een standaardopmaak." -#: src/data/por-file-reader.c:614 +#: src/data/por-file-reader.c:617 #, c-format msgid "Numeric variable %s has invalid format specifier %s." msgstr "Numerieke variabele %s heeft een ongeldig opmaakspecificatie %s." -#: src/data/por-file-reader.c:618 +#: src/data/por-file-reader.c:621 #, c-format msgid "String variable %s with width %d has invalid format specifier %s." msgstr "Tekenreeksvariabele %s met breedte %d heeft ongeldig opmaakspecificatie %s." -#: src/data/por-file-reader.c:642 +#: src/data/por-file-reader.c:645 msgid "Expected variable count record." msgstr "Variabelenteller record verwacht." -#: src/data/por-file-reader.c:646 +#: src/data/por-file-reader.c:649 #, c-format msgid "Invalid number of variables %d." msgstr "Ongeldig aantal variabelen %d." -#: src/data/por-file-reader.c:655 +#: src/data/por-file-reader.c:658 #, c-format msgid "Weight variable name (%s) truncated." msgstr "Wegingsvariabelennaam (%s) is afgekapt." -#: src/data/por-file-reader.c:670 +#: src/data/por-file-reader.c:673 msgid "Expected variable record." msgstr "Variabelenrecord verwacht." -#: src/data/por-file-reader.c:674 +#: src/data/por-file-reader.c:677 #, c-format msgid "Invalid variable width %d." msgstr "Ongeldige variabelenbreedte %d." -#: src/data/por-file-reader.c:681 +#: src/data/por-file-reader.c:684 #, c-format msgid "Invalid variable name `%s' in position %d." msgstr "Ongeldige variabelennaam '%s' op positie %d." -#: src/data/por-file-reader.c:685 src/data/sys-file-reader.c:606 +#: src/data/por-file-reader.c:688 src/data/sys-file-reader.c:605 #, c-format msgid "Bad width %d for variable %s." msgstr "Onjuiste breedte %d voor variabele %s." -#: src/data/por-file-reader.c:700 +#: src/data/por-file-reader.c:703 #, c-format msgid "Duplicate variable name %s in position %d." msgstr "Dubbele variabelennaam %s op positie %d." -#: src/data/por-file-reader.c:701 +#: src/data/por-file-reader.c:704 #, c-format msgid "Duplicate variable name %s in position %d renamed to %s." msgstr "Dubbele variabelennaam %s op positie %d is hernoemd naar %s." -#: src/data/por-file-reader.c:750 +#: src/data/por-file-reader.c:753 #, c-format msgid "Weighting variable %s not present in dictionary." msgstr "Wegingvariabele %s niet aanwezig in woordenboek." -#: src/data/por-file-reader.c:794 +#: src/data/por-file-reader.c:797 #, c-format msgid "Unknown variable %s while parsing value labels." msgstr "Onbekende variabele %s tijdens het ontleden van waardelabels." -#: src/data/por-file-reader.c:797 +#: src/data/por-file-reader.c:800 #, c-format msgid "Cannot assign value labels to %s and %s, which have different variable types." msgstr "Kan geen waardelabels toekennen aan %s en %s, die verschillende variabelentypes hebben." -#: src/data/por-file-writer.c:141 +#: src/data/por-file-writer.c:140 #, c-format msgid "Invalid decimal digits count %d. Treating as %d." msgstr "Ongeldige decimaal cijfers teller %d. Behandeld als %d." -#: src/data/por-file-writer.c:161 +#: src/data/por-file-writer.c:160 #, c-format -msgid "Error opening \"%s\" for writing as a portable file: %s." -msgstr "Fout tijdens openen \"%s\" voor het schrijven als een overdraagbaar bestand: %s." +msgid "Error opening `%s' for writing as a portable file: %s." +msgstr "Fout tijdens openen '%s' voor het schrijven als een overdraagbaar bestand: %s." -#: src/data/por-file-writer.c:506 +#: src/data/por-file-writer.c:505 #, c-format -msgid "An I/O error occurred writing portable file \"%s\"." -msgstr "Een I/O fout opgetreden tijdens het schrijven van overdraagbaar bestand \"%s\"." +msgid "An I/O error occurred writing portable file `%s'." +msgstr "Een I/O fout opgetreden tijdens het schrijven van overdraagbaar bestand '%s'." #: src/data/psql-reader.c:46 msgid "Support for reading postgres databases was not compiled into this installation of PSPP" @@ -620,13 +630,13 @@ msgstr "Postgres server is versie %s. Lezen van versies ouder dan 8.0 wordt niet msgid "Connection is unencrypted, but unencrypted connections have not been permitted." msgstr "Connectie is niet geëncrypt, maar niet geëncrypte connecties zijn niet toegestaan." -#: src/data/psql-reader.c:322 src/data/psql-reader.c:347 -#: src/data/psql-reader.c:357 +#: src/data/psql-reader.c:321 src/data/psql-reader.c:346 +#: src/data/psql-reader.c:356 #, c-format msgid "Error from psql source: %s." msgstr "Fout van psql source: %s." -#: src/data/psql-reader.c:452 +#: src/data/psql-reader.c:451 #, c-format msgid "Unsupported OID %d. SYSMIS values will be inserted." msgstr "Niet ondersteunde OID %d. SYSMIS waarde wordt ingevoegd." @@ -642,7 +652,16 @@ msgstr "" msgid "scratch file" msgstr "scratchbestand" -#: src/data/settings.c:608 +#: src/data/settings.c:388 +msgid "MXWARNS set to zero. No further warnings will be given even when potentially problematic situations are encountered." +msgstr "" + +#: src/data/settings.c:395 +#, c-format +msgid "Warnings re-enabled. %d warnings will be issued before aborting syntax processing." +msgstr "" + +#: src/data/settings.c:639 #, c-format msgid "%s: Custom currency string `%s' does not contain exactly three periods or commas (or it contains both)." msgstr "%s: Aangepaste munt-tekenreeks '%s' bevat niet exact drie punten of komma's (of het bevat beiden)." @@ -651,201 +670,202 @@ msgstr "%s: Aangepaste munt-tekenreeks '%s' bevat niet exact drie punten of komm msgid "Variable suffix too large." msgstr "Variabelen-achtervoegsel te lang." -#: src/data/sys-file-reader.c:226 +#: src/data/sys-file-reader.c:225 #, c-format msgid "Recoded variable name duplicates an existing `%s' within system file." msgstr "Gehercodeerde variabelennaam dupliceert een bestaande '%s' binnen systeembestand." #. TRANSLATORS: this fragment will be interpolated into #. messages in fh_lock() that identify types of files. -#: src/data/sys-file-reader.c:290 src/data/sys-file-writer.c:207 +#: src/data/sys-file-reader.c:289 src/data/sys-file-writer.c:206 msgid "system file" msgstr "systeembestand" -#: src/data/sys-file-reader.c:297 +#: src/data/sys-file-reader.c:296 #, c-format -msgid "Error opening \"%s\" for reading as a system file: %s." -msgstr "Fout bij het openen van \"%s\" voor het lezen als een systeembestand: %s." +msgid "Error opening `%s' for reading as a system file: %s." +msgstr "Fout bij het openen van '%s' voor het lezen als een systeembestand: %s." -#: src/data/sys-file-reader.c:336 tests/dissect-sysfile.c:154 +#: src/data/sys-file-reader.c:335 tests/dissect-sysfile.c:155 msgid "Misplaced type 4 record." msgstr "Verkeerd geplaatst type 4 record." -#: src/data/sys-file-reader.c:347 tests/dissect-sysfile.c:165 +#: src/data/sys-file-reader.c:346 tests/dissect-sysfile.c:166 #, c-format msgid "Unrecognized record type %d." msgstr "Niet-herkend recordtype %d." -#: src/data/sys-file-reader.c:388 +#: src/data/sys-file-reader.c:387 #, c-format msgid "File header claims %d variable positions but %d were read from file." msgstr "Bestandskop claimt %d variabelenposities maar er zijn er %d gelezen van het bestand." -#: src/data/sys-file-reader.c:428 +#: src/data/sys-file-reader.c:427 #, c-format -msgid "Error closing system file \"%s\": %s." -msgstr "Fout bij het sluiten van systeembestand \"%s\": %s." +msgid "Error closing system file `%s': %s." +msgstr "Fout bij het sluiten van systeembestand '%s': %s." -#: src/data/sys-file-reader.c:493 src/data/sys-file-reader.c:503 -#: tests/dissect-sysfile.c:202 tests/dissect-sysfile.c:212 +#: src/data/sys-file-reader.c:492 src/data/sys-file-reader.c:502 +#: tests/dissect-sysfile.c:203 tests/dissect-sysfile.c:213 msgid "This is not an SPSS system file." msgstr "Dit is geen SPSS-systeembestand." -#: src/data/sys-file-reader.c:525 tests/dissect-sysfile.c:227 +#: src/data/sys-file-reader.c:524 tests/dissect-sysfile.c:228 msgid "Compression bias is not the usual value of 100, or system file uses unrecognized floating-point format." msgstr "" -#: src/data/sys-file-reader.c:602 +#: src/data/sys-file-reader.c:598 +#, fuzzy, c-format +msgid "Variable name begins with invalid character `%c'." +msgstr "Variabele index %d niet in geldig bereik 1...%d." + +#: src/data/sys-file-reader.c:601 #, c-format msgid "Invalid variable name `%s'." msgstr "Ongeldige variabelennaam '%s'." -#: src/data/sys-file-reader.c:610 +#: src/data/sys-file-reader.c:609 #, c-format msgid "Duplicate variable name `%s' within system file." msgstr "Dubbele variabelennaam '%s' binnen systeembestand." -#: src/data/sys-file-reader.c:618 tests/dissect-sysfile.c:356 +#: src/data/sys-file-reader.c:617 tests/dissect-sysfile.c:357 msgid "Variable label indicator field is not 0 or 1." msgstr "Variabelen-labelindicatorveld is niet 0 of 1." -#: src/data/sys-file-reader.c:649 tests/dissect-sysfile.c:387 +#: src/data/sys-file-reader.c:648 tests/dissect-sysfile.c:388 msgid "Numeric missing value indicator field is not -3, -2, 0, 1, 2, or 3." msgstr "Numeriek ontbrekende-waarde indicatorveld is niet -3, -2, 0, 1, 2, of 3." -#: src/data/sys-file-reader.c:667 tests/dissect-sysfile.c:402 +#: src/data/sys-file-reader.c:666 tests/dissect-sysfile.c:403 msgid "String missing value indicator field is not 0, 1, 2, or 3." msgstr "Tekenreeks ontbrekende-waarde indicatorveld is niet 0, 1, 2, of 3." -#: src/data/sys-file-reader.c:699 +#: src/data/sys-file-reader.c:698 msgid "Missing string continuation record." msgstr "Mis tekenreeks continuering record." -#: src/data/sys-file-reader.c:733 +#: src/data/sys-file-reader.c:732 #, c-format msgid "Unknown variable format %." msgstr "Onbekend variabelenopmaak %." -#: src/data/sys-file-reader.c:751 +#: src/data/sys-file-reader.c:750 #, c-format msgid "%s variable %s has invalid %s format %s." msgstr "%s variabele %s heeft ongeldig %s opmaak %s." -#: src/data/sys-file-reader.c:754 +#: src/data/sys-file-reader.c:753 msgid "print" msgstr "afdrukken" -#: src/data/sys-file-reader.c:754 +#: src/data/sys-file-reader.c:753 msgid "write" msgstr "schrijf" -#: src/data/sys-file-reader.c:758 +#: src/data/sys-file-reader.c:757 msgid "Suppressing further invalid format warnings." msgstr "Onderdrukt verdere ongeldig indelingswaarschuwingen." -#: src/data/sys-file-reader.c:776 +#: src/data/sys-file-reader.c:775 msgid "Weighting variable must be numeric." msgstr "Wegingvariabele moet numeriek zijn." -#: src/data/sys-file-reader.c:790 +#: src/data/sys-file-reader.c:789 msgid "Multiple type 6 (document) records." msgstr "Meerdere type 6 (document) records." -#: src/data/sys-file-reader.c:794 +#: src/data/sys-file-reader.c:793 #, c-format msgid "Number of document lines (%d) must be greater than 0." msgstr "Aantal documentregels (%d) moet groter dan 0 zijn." -#: src/data/sys-file-reader.c:802 +#: src/data/sys-file-reader.c:801 msgid "Document line contains null byte." msgstr "Documentregel bevat null byte." -#: src/data/sys-file-reader.c:893 +#: src/data/sys-file-reader.c:892 #, c-format msgid "Unrecognized record type 7, subtype %d. Please send a copy of this file, and the syntax which created it to %s" msgstr "Niet-herkend type 7, subtype %d. Stuur s.v.p. een kopie van dit bestand en de syntax waarmee het is aangemaakt naar %s " -#: src/data/sys-file-reader.c:920 tests/dissect-sysfile.c:594 +#: src/data/sys-file-reader.c:919 tests/dissect-sysfile.c:595 #, c-format msgid "Bad size (%zu) or count (%zu) field on record type 7, subtype 3." msgstr "Onjuiste lengte (%zu) of aantal (%zu) veld in recordtype 7, subtype 3." -#: src/data/sys-file-reader.c:940 +#: src/data/sys-file-reader.c:939 #, c-format msgid "Floating-point representation indicated by system file (%d) differs from expected (%d)." msgstr "Drijvende komma representatie aangegeven door systeembestand %d verschilt van verwachting (%d)." -#: src/data/sys-file-reader.c:953 src/language/dictionary/sys-file-info.c:110 +#: src/data/sys-file-reader.c:952 src/language/dictionary/sys-file-info.c:109 msgid "Little Endian" msgstr "Little Endian" -#: src/data/sys-file-reader.c:953 src/language/dictionary/sys-file-info.c:109 +#: src/data/sys-file-reader.c:952 src/language/dictionary/sys-file-info.c:108 msgid "Big Endian" msgstr "Big Endian" -#: src/data/sys-file-reader.c:954 +#: src/data/sys-file-reader.c:953 #, c-format msgid "Integer format indicated by system file (%s) differs from expected (%s)." msgstr "Integer indeling aangegeven door systeembestand (%s) verschilt van verwacht (%s)." -#: src/data/sys-file-reader.c:1011 tests/dissect-sysfile.c:625 +#: src/data/sys-file-reader.c:1010 tests/dissect-sysfile.c:626 #, c-format msgid "Bad size (%zu) or count (%zu) on extension 4." msgstr "Onjuiste lengte (%zu) of aantal (%zu) bij extensie 4." -#: src/data/sys-file-reader.c:1015 src/data/sys-file-reader.c:1019 -#: src/data/sys-file-reader.c:1023 tests/dissect-sysfile.c:630 -#: tests/dissect-sysfile.c:635 tests/dissect-sysfile.c:640 +#: src/data/sys-file-reader.c:1014 src/data/sys-file-reader.c:1018 +#: src/data/sys-file-reader.c:1022 tests/dissect-sysfile.c:631 +#: tests/dissect-sysfile.c:636 tests/dissect-sysfile.c:641 #, c-format msgid "File specifies unexpected value %g as %s." msgstr "Bestand specificeert onverwachte waarde %g als %s." -#: src/data/sys-file-reader.c:1056 -#, c-format -msgid "Missing space following 'C' at offset %zu in MRSETS record" -msgstr "" - -#: src/data/sys-file-reader.c:1074 tests/dissect-sysfile.c:691 -#, c-format -msgid "Missing space following 'E' at offset %zu in MRSETS record" -msgstr "" +#: src/data/sys-file-reader.c:1055 src/data/sys-file-reader.c:1073 +#: tests/dissect-sysfile.c:692 +#, fuzzy, c-format +msgid "Missing space following `%c' at offset %zu in MRSETS record" +msgstr "Dubbele variabelenaam %s op offset %zu in MRSETS record." -#: src/data/sys-file-reader.c:1083 tests/dissect-sysfile.c:700 -#, c-format -msgid "Unexpected label source value \"%s\" following 'E' at offset %zu in MRSETS record" -msgstr "" +#: src/data/sys-file-reader.c:1082 tests/dissect-sysfile.c:701 +#, fuzzy, c-format +msgid "Unexpected label source value `%s' following `E' at offset %zu in MRSETS record" +msgstr "Dubbele variabelenaam %s op offset %zu in MRSETS record." -#: src/data/sys-file-reader.c:1089 +#: src/data/sys-file-reader.c:1088 #, c-format -msgid "Missing 'C', 'D', or 'E' at offset %zu in MRSETS record." -msgstr "" +msgid "Missing `C', `D', or `E' at offset %zu in MRSETS record." +msgstr "Ontbrekende `C', `D', of `E' op offset %zu in MRSETS record." -#: src/data/sys-file-reader.c:1118 +#: src/data/sys-file-reader.c:1117 #, c-format msgid "Missing new-line parsing variable names at offset %zu in MRSETS record." msgstr "" -#: src/data/sys-file-reader.c:1129 +#: src/data/sys-file-reader.c:1128 #, c-format msgid "Duplicate variable name %s at offset %zu in MRSETS record." msgstr "Dubbele variabelenaam %s op offset %zu in MRSETS record." -#: src/data/sys-file-reader.c:1142 +#: src/data/sys-file-reader.c:1141 #, c-format msgid "MRSET %s contains both string and numeric variables." msgstr "MRSET %s bevat zowel tekenreeks als numerieke variabelen." -#: src/data/sys-file-reader.c:1157 +#: src/data/sys-file-reader.c:1156 #, c-format msgid "MRSET %s has only %zu variables." msgstr "MRSET %s heeft slechts %zu variabelen." -#: src/data/sys-file-reader.c:1194 tests/dissect-sysfile.c:758 +#: src/data/sys-file-reader.c:1194 tests/dissect-sysfile.c:759 #, c-format msgid "Bad size %zu on extension 11." msgstr "Onjuiste lengte %zu voor extensie 11." -#: src/data/sys-file-reader.c:1206 tests/dissect-sysfile.c:770 +#: src/data/sys-file-reader.c:1206 tests/dissect-sysfile.c:771 #, c-format msgid "Extension 11 has bad count %zu (for %zu variables)." msgstr "Extensie 11 heeft een foutief aantal %zu (voor %zu variabelen)." @@ -890,7 +910,7 @@ msgstr "Erg lange-tekenreeks met breedte %ld heeft segment %d van breedte %d (ve msgid "Invalid number of labels: %d. Ignoring labels." msgstr "Ongeldig aantal labels: %d. Labels worden genegeerd." -#: src/data/sys-file-reader.c:1441 tests/dissect-sysfile.c:468 +#: src/data/sys-file-reader.c:1441 tests/dissect-sysfile.c:469 msgid "Variable index record (type 4) does not immediately follow value label record (type 3) as it should." msgstr "Variabele index record (type 4) volgt niet onmiddellijk waardelabel record (type 3) zoals het moet." @@ -916,8 +936,8 @@ msgstr "Dubbel waardelabel voor %g in %s." #: src/data/sys-file-reader.c:1505 src/data/sys-file-reader.c:1686 #, c-format -msgid "Duplicate value label for \"%.*s\" on %s." -msgstr "Dubbel waardelabel voor \"%.*s\" in %s." +msgid "Duplicate value label for `%.*s' on %s." +msgstr "Dubbel waardelabel voor '%.*s' in %s." #: src/data/sys-file-reader.c:1543 #, c-format @@ -929,7 +949,7 @@ msgstr "Fout tijdens ontleden attribuut waarde %s[%d]" msgid "Attribute value %s[%d] is not quoted: %s" msgstr "Attribuut waarde %s[%d] is niet geciteerd: %s" -#: src/data/sys-file-reader.c:1620 tests/dissect-sysfile.c:936 +#: src/data/sys-file-reader.c:1620 tests/dissect-sysfile.c:937 #, c-format msgid "Variable name length in long string value label record (%d) exceeds %d-byte limit." msgstr "" @@ -1012,29 +1032,24 @@ msgstr "" msgid "Expecting space at offset %zu following %zu-byte string." msgstr "" -#: src/data/sys-file-reader.c:2347 tests/dissect-sysfile.c:1341 +#: src/data/sys-file-reader.c:2349 tests/dissect-sysfile.c:1356 #, c-format msgid "System error: %s." msgstr "Systeemfout: %s." -#: src/data/sys-file-reader.c:2349 tests/dissect-sysfile.c:1343 +#: src/data/sys-file-reader.c:2351 tests/dissect-sysfile.c:1358 msgid "Unexpected end of file." msgstr "Onverwacht einde-bestand." -#: src/data/sys-file-writer.c:180 +#: src/data/sys-file-writer.c:179 #, c-format msgid "Unknown system file version %d. Treating as version %d." msgstr "Onbekende systeembestand versie %d. Behandeld als versie %d." -#: src/data/sys-file-writer.c:219 +#: src/data/sys-file-writer.c:985 #, c-format -msgid "Error opening \"%s\" for writing as a system file: %s." -msgstr "Fout bij het openen van \"%s\" voor het schrijven als een systeembestand: %s." - -#: src/data/sys-file-writer.c:989 -#, c-format -msgid "An I/O error occurred writing system file \"%s\"." -msgstr "Een I/O fout is opgetreden tijdens het schrijven van systeembestand \"%s\"." +msgid "An I/O error occurred writing system file `%s'." +msgstr "Een I/O fout is opgetreden tijdens het schrijven van systeembestand '%s'." #: src/data/variable.c:206 #, c-format @@ -1060,233 +1075,216 @@ msgstr "Variabelennaam %s overschrijdt de limiet van %d tekens." msgid "`%s' may not be used as a variable name because it is a reserved word." msgstr "'%s' mag niet gebruikt worden als variabelennaam omdat het een gereserveerd woord is." -#: src/language/syntax-file.c:95 -#, c-format -msgid "Opening `%s': %s." -msgstr "Openen '%s': %s." - -#: src/language/syntax-file.c:109 +#: src/language/syntax-file.c:100 #, c-format msgid "Reading `%s': %s." msgstr "Lezen '%s': %s." -#: src/language/syntax-file.c:126 +#: src/language/syntax-file.c:117 #, c-format msgid "Closing `%s': %s." msgstr "Sluiten '%s': %s." -#: src/language/command.c:205 src/language/expressions/parse.c:1267 +#: src/language/syntax-file.c:138 +#, c-format +msgid "Opening `%s': %s." +msgstr "Openen '%s': %s." + +#: src/language/command.c:197 src/language/expressions/parse.c:1270 #: src/language/utilities/set.q:213 #, c-format msgid "%s is not yet implemented." msgstr "%s is nog niet geïmplementeerd." -#: src/language/command.c:210 +#: src/language/command.c:202 #, c-format msgid "%s may be used only in testing mode." msgstr "%s mag alleen in testmodus gebruikt worden." -#: src/language/command.c:215 +#: src/language/command.c:207 #, c-format msgid "%s may be used only in enhanced syntax mode." msgstr "%s mag alleen in uitgebreide syntaxmodus gebruikt worden." -#: src/language/command.c:239 +#: src/language/command.c:231 msgid "Error encountered while ERROR=STOP is effective." msgstr "Fout tegengekomen terwijl ERROR=STOP is actief." -#: src/language/command.c:484 +#: src/language/command.c:476 msgid "expecting command name" msgstr "opdrachtnaam verwacht" -#: src/language/command.c:498 +#: src/language/command.c:490 #, c-format msgid "Unknown command %s." msgstr "Onbekende opdracht %s." -#: src/language/command.c:623 +#: src/language/command.c:615 #, c-format msgid "%s is allowed only before the active file has been defined." msgstr "%s is alleen toegestaan voordat het actieve bestand is gedefinieerd." -#: src/language/command.c:627 +#: src/language/command.c:619 #, c-format msgid "%s is allowed only after the active file has been defined." msgstr "%s is alleen toegestaan nadat het actieve bestand is gedefinieerd." -#: src/language/command.c:631 +#: src/language/command.c:623 #, c-format msgid "%s is allowed only inside INPUT PROGRAM." msgstr "%s is alleen toegestaan binnen INPUT PROGRAM." -#: src/language/command.c:635 +#: src/language/command.c:627 #, c-format msgid "%s is allowed only inside FILE TYPE." msgstr "%s is alleen toegestaan binnen FILE TYPE." -#: src/language/command.c:642 +#: src/language/command.c:634 #, c-format msgid "%s is allowed only before the active file has been defined or inside INPUT PROGRAM." msgstr "%s is alleen toegestaan voordat het actieve bestand is gedefinieerd of binnen INPUT PROGRAMMA." -#: src/language/command.c:646 +#: src/language/command.c:638 #, c-format msgid "%s is allowed only before the active file has been defined or inside FILE TYPE." msgstr "%s is alleen toegestaan voordat het actieve bestand is gedefinieerd of binnen FILE TYPE." -#: src/language/command.c:650 +#: src/language/command.c:642 #, c-format msgid "%s is allowed only after the active file has been defined or inside INPUT PROGRAM." msgstr "%s is alleen toegestaan nadat het actieve bestand is gedefinieerd of binnen INPUT PROGRAMMA." -#: src/language/command.c:654 +#: src/language/command.c:646 #, c-format msgid "%s is allowed only after the active file has been defined or inside FILE TYPE." msgstr "%s is alleen toegestaan nadat het actieve bestand is gedefinieerd of binnen FILE TYPE." -#: src/language/command.c:658 +#: src/language/command.c:650 #, c-format msgid "%s is allowed only inside INPUT PROGRAM or inside FILE TYPE." msgstr "%s is alleen toegestaan binnen INPUT PROGRAM of binnen FILE TYPE." -#: src/language/command.c:664 +#: src/language/command.c:656 #, c-format msgid "%s is allowed only after the active file has been defined, inside INPUT PROGRAM, or inside FILE TYPE." msgstr "%s is alleen toegestaan nadat het actieve bestand is gedefinieerd, binnen INPUT PROGRAM of binnen FILE TYPE." -#: src/language/command.c:669 +#: src/language/command.c:661 #, c-format msgid "%s is allowed only before the active file has been defined, inside INPUT PROGRAM, or inside FILE TYPE." msgstr "%s is alleen toegestaan voordat het actieve bestand is gedefinieerd, binnen INPUT PROGRAM of binnen FILE TYPE." -#: src/language/command.c:687 src/language/command.c:689 +#: src/language/command.c:679 src/language/command.c:681 #, c-format msgid "%s is not allowed inside %s." msgstr "%s is niet toegestaan binnen %s." -#: src/language/command.c:768 src/language/command.c:876 -#: src/language/utilities/permissions.c:98 +#: src/language/command.c:760 src/language/utilities/host.c:128 +#: src/language/utilities/permissions.c:101 msgid "This command not allowed when the SAFER option is set." msgstr "Deze opdracht is niet toegestaan als de SAFER optie is gezet." -#: src/language/command.c:780 +#: src/language/command.c:772 #, c-format msgid "Error removing `%s': %s." msgstr "Fout bij verwijderen '%s': %s." -#: src/language/command.c:830 -#, c-format -msgid "Couldn't fork: %s." -msgstr "" - -#: src/language/command.c:845 -msgid "Interactive shell not supported on this platform." -msgstr "Interactieve-shell niet ondersteund op dit platform." - -#: src/language/command.c:857 -msgid "Command shell not supported on this platform." -msgstr "Opdracht-shell niet ondersteund op dit platform." - -#: src/language/command.c:863 -#, c-format -msgid "Error executing command: %s." -msgstr "Fout tijdens uitvoeren opdracht: %s." - -#: src/language/lexer/lexer.c:284 +#: src/language/lexer/lexer.c:263 #, c-format msgid "%s does not form a valid number." msgstr "%s vormt geen geldig nummer." -#: src/language/lexer/lexer.c:390 +#: src/language/lexer/lexer.c:369 #, c-format msgid "Bad character in input: `%s'." msgstr "Foutief teken in invoer: '%s'." -#: src/language/lexer/lexer.c:427 +#: src/language/lexer/lexer.c:402 #, c-format msgid "Subcommand %s may only be specified once." msgstr "Subopdracht %s mag slechts een keer gespecificeerd worden." -#: src/language/lexer/lexer.c:435 +#: src/language/lexer/lexer.c:410 #, c-format msgid "missing required subcommand %s" msgstr "mis vereiste subopdracht %s" -#: src/language/lexer/lexer.c:464 -#, c-format -msgid "Syntax error %s at %s." -msgstr "Syntaxfout %s op %s." +#: src/language/lexer/lexer.c:423 +#, fuzzy +msgid "Syntax error at end of file" +msgstr "Syntaxfout in datumveld." -#: src/language/lexer/lexer.c:467 -#, c-format -msgid "Syntax error at %s." +#: src/language/lexer/lexer.c:425 +#, fuzzy +msgid "Syntax error at end of command" +msgstr "Syntaxfout in datumveld." + +#: src/language/lexer/lexer.c:429 +#, fuzzy, c-format +msgid "Syntax error at `%s'" msgstr "Syntaxfout op %s." -#: src/language/lexer/lexer.c:479 src/language/xforms/select-if.c:60 -#: src/language/stats/autorecode.c:144 src/language/data-io/print-space.c:73 +#: src/language/lexer/lexer.c:457 src/language/xforms/select-if.c:60 +#: src/language/stats/autorecode.c:161 src/language/stats/npar.c:310 +#: src/language/data-io/print-space.c:73 msgid "expecting end of command" msgstr "verwacht einde-van-opdracht " -#: src/language/lexer/lexer.c:601 src/language/lexer/lexer.c:618 +#: src/language/lexer/lexer.c:579 src/language/lexer/lexer.c:596 #, c-format msgid "expecting `%s'" msgstr "verwacht '%s'" -#: src/language/lexer/lexer.c:632 +#: src/language/lexer/lexer.c:610 msgid "expecting string" msgstr "tekenreeks verwacht" -#: src/language/lexer/lexer.c:646 +#: src/language/lexer/lexer.c:624 msgid "expecting integer" msgstr "verwacht integer" -#: src/language/lexer/lexer.c:659 +#: src/language/lexer/lexer.c:637 msgid "expecting number" msgstr "nummer verwacht" -#: src/language/lexer/lexer.c:671 +#: src/language/lexer/lexer.c:649 msgid "expecting identifier" msgstr "verwacht herkenningsteken" -#: src/language/lexer/lexer.c:1065 +#: src/language/lexer/lexer.c:1042 msgid "binary" msgstr "binair" -#: src/language/lexer/lexer.c:1070 +#: src/language/lexer/lexer.c:1047 msgid "octal" msgstr "octaal" -#: src/language/lexer/lexer.c:1075 +#: src/language/lexer/lexer.c:1052 msgid "hex" msgstr "hexadecimaal" -#: src/language/lexer/lexer.c:1085 +#: src/language/lexer/lexer.c:1062 #, c-format msgid "String of %s digits has %zu characters, which is not a multiple of %d." msgstr "Tekenreeks van %s cijfers bestaat uit %zu tekens, dat geen meervoud van %d is." -#: src/language/lexer/lexer.c:1114 +#: src/language/lexer/lexer.c:1091 #, c-format msgid "`%c' is not a valid %s digit." msgstr "'%c' is geen geldig %s cijfer." -#: src/language/lexer/lexer.c:1148 +#: src/language/lexer/lexer.c:1125 msgid "Unterminated string constant." msgstr "Geen einde aan tekenreeksconstante." -#: src/language/lexer/lexer.c:1202 +#: src/language/lexer/lexer.c:1179 msgid "Unexpected end of file in string concatenation." msgstr "Onverwacht bestandseinde in tekenreeks samenvoeging." -#: src/language/lexer/lexer.c:1210 +#: src/language/lexer/lexer.c:1187 msgid "String expected following `+'." msgstr "Tekenreeks verwacht achter '+'." -#: src/language/lexer/lexer.c:1223 -#, c-format -msgid "String exceeds 255 characters in length (%zu characters)." -msgstr "Tekenreeks overschrijdt de lengte van 255 tekens (%zu tekens)." - #: src/language/lexer/format-parser.c:88 msgid "expecting valid format specifier" msgstr "verwacht geldige indelingsspecificator" @@ -1295,32 +1293,32 @@ msgstr "verwacht geldige indelingsspecificator" #: src/language/lexer/format-parser.c:126 #: src/language/data-io/placement-parser.c:226 #, c-format -msgid "Unknown format type \"%s\"." -msgstr "Onbekend opmaaktype \"%s\"." +msgid "Unknown format type `%s'." +msgstr "Onbekend opmaaktype '%s'." #: src/language/lexer/format-parser.c:121 msgid "expecting format type" msgstr "verwacht opmaaktype" -#: src/language/lexer/value-parser.c:60 +#: src/language/lexer/value-parser.c:64 #, c-format msgid "Low end of range (%g) is below high end (%g). The range will be treated as reversed." msgstr "Ondergrens van bereik (%g) is lager dan bovengrens (%g). Het bereik wordt behandeld als omgekeerd." -#: src/language/lexer/value-parser.c:68 +#: src/language/lexer/value-parser.c:72 #, c-format msgid "Ends of range are equal (%g)." msgstr "Eindes van bereik zijn gelijk (%g)." -#: src/language/lexer/value-parser.c:76 +#: src/language/lexer/value-parser.c:80 msgid "LO or LOWEST must be part of a range." msgstr "LO of LOWEST moet een onderdeel van een bereik zijn." -#: src/language/lexer/value-parser.c:109 +#: src/language/lexer/value-parser.c:117 msgid "System-missing value is not valid here." msgstr "System-missing waarde is hier niet geldig." -#: src/language/lexer/value-parser.c:117 +#: src/language/lexer/value-parser.c:125 msgid "expecting number or data string" msgstr "nummer of gegevenstekenreeks verwacht" @@ -1390,17 +1388,17 @@ msgstr "Prefixen komen niet overeen in het gebruik van TO conventie." msgid "Bad bounds in use of TO convention." msgstr "Slechte grenzen in het gebruik van TO conventie." -#: src/language/xforms/compute.c:149 src/language/xforms/compute.c:203 +#: src/language/xforms/compute.c:149 src/language/xforms/compute.c:204 #, c-format msgid "When executing COMPUTE: SYSMIS is not a valid value as an index into vector %s." msgstr "Tijdens uitvoeren van COMPUTE: SYSMIS is geen geldige waarde als een index in vector %s." -#: src/language/xforms/compute.c:153 src/language/xforms/compute.c:210 +#: src/language/xforms/compute.c:153 src/language/xforms/compute.c:211 #, c-format msgid "When executing COMPUTE: %g is not a valid value as an index into vector %s." msgstr "Tijdens uitvoeren van COMPUTE: %g is geen geldige waarde als een index in vector %s." -#: src/language/xforms/compute.c:353 +#: src/language/xforms/compute.c:355 #, c-format msgid "There is no vector named %s." msgstr "Er is geen vector genaamd %s." @@ -1418,38 +1416,38 @@ msgstr "De steekproef factor moet exclusief tussen 0 en 1 liggen." msgid "Cannot sample %d observations from a population of %d." msgstr "Kan niet %d observaties bemonsteren van een populatie van %d." -#: src/language/xforms/recode.c:248 +#: src/language/xforms/recode.c:250 msgid "Inconsistent target variable types. Target variables must be all numeric or all string." msgstr "Inconsistent doelvariabelen-types. Doelvariabelen moeten allemaal numeriek of allemaal tekenreeks zijn." -#: src/language/xforms/recode.c:269 +#: src/language/xforms/recode.c:271 msgid "CONVERT requires string input values and numeric output values." msgstr "CONVERT vereist tekenreeks invoerwaardes en numerieke uitvoerwaardes." -#: src/language/xforms/recode.c:324 +#: src/language/xforms/recode.c:326 msgid "THRU is not allowed with string variables." msgstr "THRU is niet toegestaan met tekenreeksvariabelen." -#: src/language/xforms/recode.c:403 +#: src/language/xforms/recode.c:406 msgid "expecting output value" msgstr "verwacht uitvoerwaarde" -#: src/language/xforms/recode.c:460 +#: src/language/xforms/recode.c:463 #, c-format msgid "%zu variable(s) cannot be recoded into %zu variable(s). Specify the same number of variables as source and target variables." msgstr "%zu variabel(en) kunnen niet gehercodeerd worden in %zu variabel(en). Specificeer hetzelfde aantal variabelen als bron- en als doelvariabelen." -#: src/language/xforms/recode.c:475 +#: src/language/xforms/recode.c:478 #, c-format msgid "There is no variable named %s. (All string variables specified on INTO must already exist. Use the STRING command to create a string variable.)" msgstr "Er is geen variabele genaamd %s. (Alle tekenreeksvariabelen gespecificeerd bij INTO dienen al te bestaan. Gebruik de STRING opdracht om een tekenreeks variabele aan te maken.)" -#: src/language/xforms/recode.c:491 +#: src/language/xforms/recode.c:494 #, c-format msgid "INTO is required with %s input values and %s output values." msgstr "INTO is vereist met %s invoerwaardes en %s uitvoerwaardes." -#: src/language/xforms/recode.c:504 +#: src/language/xforms/recode.c:507 #, c-format msgid "Type mismatch. Cannot store %s data in %s variable %s." msgstr "Type fout. Kan %s gegevens niet in %s variabele %s opslaan." @@ -1489,43 +1487,47 @@ msgstr "Deze opdracht mag niet volgen op ELSE in DO IF...END IF." msgid "Only one index clause may be specified." msgstr "Slechts een index clausule mag gespecificeerd worden." -#: src/language/control/temporary.c:46 +#: src/language/control/temporary.c:45 msgid "This command may only appear once between procedures and procedure-like commands." msgstr "Deze opdracht mag slechts 1 keer voorkomen tussen procedures en procedure-achtige opdrachten." #: src/language/control/repeat.c:172 #, c-format -msgid "Dummy variable name \"%s\" hides dictionary variable \"%s\"." -msgstr "Dummy-variabelennaam \"%s\" verbergt woordenboekvariabele \"%s\"." +msgid "Dummy variable name `%s' hides dictionary variable `%s'." +msgstr "Dummy-variabelennaam '%s' verbergt woordenboekvariabele '%s'." #: src/language/control/repeat.c:177 #, c-format -msgid "Dummy variable name \"%s\" is given twice." -msgstr "Dummy-variabelennaam \"%s\" is twee keer opgegeven." +msgid "Dummy variable name `%s' is given twice." +msgstr "Dummy-variabelennaam '%s' is twee keer opgegeven." #: src/language/control/repeat.c:223 #, c-format -msgid "Dummy variable \"%.*s\" had %d substitutions, so \"%.*s\" must also, but %d were specified." -msgstr "Dummy variabele \"%.*s\" heeft %d vervangingen, dus \"%.*s\" moet dat ook, maar %d zijn er gespecificeerd." +msgid "Dummy variable `%.*s' had %d substitutions, so `%.*s' must also, but %d were specified." +msgstr "Dummy variabele '%.*s' heeft %d vervangingen, dus '%.*s' moet dat ook, maar %d zijn er gespecificeerd." + +#: src/language/control/repeat.c:310 +msgid "DO REPEAT without END REPEAT." +msgstr "" -#: src/language/control/repeat.c:335 +#: src/language/control/repeat.c:338 msgid "DO REPEAT may not nest in compatibility mode." msgstr "DO REPEAT mag niet nesten in compatibiliteitsmodus." -#: src/language/control/repeat.c:437 +#: src/language/control/repeat.c:440 msgid "Ranges may only have integer bounds" msgstr "Bereiken mogen alleen integer grenzen hebben" -#: src/language/control/repeat.c:446 +#: src/language/control/repeat.c:449 #, c-format msgid "%g TO %g is an invalid range." msgstr "%g TO %g is een ongeldig bereik." -#: src/language/control/repeat.c:481 +#: src/language/control/repeat.c:484 msgid "String expected." msgstr "Tekenreeks verwacht." -#: src/language/control/repeat.c:500 +#: src/language/control/repeat.c:503 msgid "No matching DO REPEAT." msgstr "Geen overeenkomende DO REPEAT." @@ -1534,15 +1536,24 @@ msgid "Attribute array index must be between 1 and 65535." msgstr "Attribuut tabel index moet minimaal 1 en maximaal 65535 zijn." #: src/language/dictionary/attributes.c:189 -msgid "expecting ATTRIBUTE= or DELETE=" -msgstr "verwacht ATTRIBUTE= of DELETE=" +#: src/language/data-io/get-data.c:314 src/language/data-io/get-data.c:352 +#: src/language/data-io/get.c:99 src/language/data-io/save-translate.c:118 +#: src/language/data-io/save-translate.c:135 +#: src/language/data-io/save-translate.c:148 +#: src/language/data-io/save-translate.c:194 +#: src/language/data-io/save-translate.c:208 +#: src/language/data-io/save-translate.c:226 src/language/data-io/save.c:216 +#: src/language/data-io/save.c:231 src/language/data-io/save.c:259 +#, c-format +msgid "expecting %s or %s" +msgstr "%s of %s verwacht" -#: src/language/dictionary/apply-dictionary.c:75 +#: src/language/dictionary/apply-dictionary.c:74 #, c-format msgid "Variable %s is %s in target file, but %s in source file." msgstr "Variabele %s is %s in doelbestand, maar %s in bronbestand." -#: src/language/dictionary/apply-dictionary.c:115 +#: src/language/dictionary/apply-dictionary.c:114 msgid "No matching variables found between the source and target files." msgstr "Geen overeenkomende variabelen gevonden tussen het bron- en het doelbestand." @@ -1562,82 +1573,78 @@ msgstr "'(' verwacht na variabelenlijst." msgid "`)' expected after output format." msgstr "')' verwacht na uitvoerindeling." -#: src/language/dictionary/missing-values.c:56 -#: src/language/stats/aggregate.c:459 -msgid "expecting `('" -msgstr "'(' verwacht" - -#: src/language/dictionary/missing-values.c:72 +#: src/language/dictionary/missing-values.c:69 #, c-format msgid "Cannot mix numeric variables (e.g. %s) and string variables (e.g. %s) within a single list." msgstr "Kan numerieke variabelen (b.v. %s) en tekenreeksvariabelen (b.v. %s) niet mixen binnen een enkele lijst." -#: src/language/dictionary/missing-values.c:116 +#: src/language/dictionary/missing-values.c:113 #, c-format msgid "Truncating missing value to maximum acceptable length (%d bytes)." msgstr "Afkappen ontbrekende-waarde naar maximale acceptabele lengte (%d bytes)." -#: src/language/dictionary/missing-values.c:138 +#: src/language/dictionary/missing-values.c:135 #, c-format msgid "Missing values provided are too long to assign to variable of width %d." msgstr "De opgegeven ontbrekende-waarde zijn te lang om toe te kennen aan een variabele van breedte %d." -#: src/language/dictionary/modify-variables.c:92 +#: src/language/dictionary/modify-variables.c:91 msgid "MODIFY VARS may not be used after TEMPORARY. Temporary transformations will be made permanent." msgstr "MODIFY VARS mag niet gebruikt worden na TEMPORARY. Tijdelijke transformaties zullen permanent gemaakt worden." -#: src/language/dictionary/modify-variables.c:114 -#: src/language/dictionary/modify-variables.c:177 +#: src/language/dictionary/modify-variables.c:113 +#: src/language/dictionary/modify-variables.c:176 +#: src/language/data-io/inpt-pgm.c:288 #, c-format msgid "%s subcommand may be given at most once." msgstr "%s-subopdracht mag maximaal 1 keer gegeven worden." -#: src/language/dictionary/modify-variables.c:137 +#: src/language/dictionary/modify-variables.c:136 msgid "Cannot specify ALL after specifying a set of variables." msgstr "Kan niet ALL opgeven na het specificeren van een set van variabelen." -#: src/language/dictionary/modify-variables.c:147 -#: src/language/dictionary/modify-variables.c:190 +#: src/language/dictionary/modify-variables.c:146 +#: src/language/dictionary/modify-variables.c:189 #, c-format msgid "`(' expected on %s subcommand." msgstr "'(' verwacht in %s-subopdracht." -#: src/language/dictionary/modify-variables.c:159 +#: src/language/dictionary/modify-variables.c:158 msgid "`)' expected following variable names on REORDER subcommand." msgstr "')' verwacht achter variabelennamen in REORDER-subopdracht." -#: src/language/dictionary/modify-variables.c:199 +#: src/language/dictionary/modify-variables.c:198 msgid "`=' expected between lists of new and old variable names on RENAME subcommand." msgstr "'=' verwacht tussen lijst van nieuwe en oude variabelennamen in RENAME-subopdracht." -#: src/language/dictionary/modify-variables.c:208 -#: src/language/dictionary/rename-variables.c:77 +#: src/language/dictionary/modify-variables.c:207 +#: src/language/dictionary/rename-variables.c:76 #, c-format msgid "Differing number of variables in old name list (%zu) and in new name list (%zu)." msgstr "Verschillend aantal variabelen in oude naamlijst (%zu) en in de nieuwe naamlijst (%zu)." -#: src/language/dictionary/modify-variables.c:219 +#: src/language/dictionary/modify-variables.c:218 msgid "`)' expected after variable lists on RENAME subcommand." msgstr "')' verwacht na variabelenlijst in RENAME-subopdracht." -#: src/language/dictionary/modify-variables.c:233 +#: src/language/dictionary/modify-variables.c:232 msgid "KEEP subcommand may be given at most once. It may not be given in conjunction with the DROP subcommand." msgstr "KEEP-subopdracht mag slechts eenmaal gegeven worden. Het mag niet gegeven worden in combinatie met de DROP-subopdracht." -#: src/language/dictionary/modify-variables.c:276 +#: src/language/dictionary/modify-variables.c:275 msgid "DROP subcommand may be given at most once. It may not be given in conjunction with the KEEP subcommand." msgstr "DROP subopdracht mag slechts eenmaal gegeven worden. Het mag niet gegeven worden in combinatie met de KEEP-subopdracht." -#: src/language/dictionary/modify-variables.c:302 +#: src/language/dictionary/modify-variables.c:301 #, c-format msgid "Unrecognized subcommand name `%s'." msgstr "Niet-herkende subopdrachtnaam '%s'." -#: src/language/dictionary/modify-variables.c:304 +#: src/language/dictionary/modify-variables.c:303 msgid "Subcommand name expected." msgstr "Subopdrachtnaam verwacht." -#: src/language/dictionary/modify-variables.c:312 +#: src/language/dictionary/modify-variables.c:311 msgid "`/' or `.' expected." msgstr "'/' of '.' verwacht." @@ -1737,10 +1744,10 @@ msgstr "" #: src/language/dictionary/mrsets.c:568 #: src/language/dictionary/split-file.c:84 -#: src/language/dictionary/sys-file-info.c:344 -#: src/language/dictionary/sys-file-info.c:583 +#: src/language/dictionary/sys-file-info.c:343 +#: src/language/dictionary/sys-file-info.c:582 #: src/ui/gui/psppire-var-sheet.c:538 src/ui/gui/psppire-var-store.c:836 -#: src/ui/gui/crosstabs.ui:292 src/ui/gui/psppire.ui:1924 +#: src/ui/gui/compute.ui:467 src/ui/gui/crosstabs.ui:292 msgid "Label" msgstr "Label" @@ -1787,260 +1794,256 @@ msgstr "Er bestaat al een variabele genaamd %s." msgid "Format type %s may not be used with a string variable." msgstr "Opmaaktype %s mag niet gebruikt worden met een tekenreeksvariabele." -#: src/language/dictionary/rename-variables.c:49 +#: src/language/dictionary/rename-variables.c:48 msgid "RENAME VARS may not be used after TEMPORARY. Temporary transformations will be made permanent." msgstr "RENAME VARS mag niet gebruikt worden na TEMPORARY. Tijdelijke transformaties zullen permanent gemaakt worden." -#: src/language/dictionary/rename-variables.c:59 +#: src/language/dictionary/rename-variables.c:58 msgid "`(' expected." msgstr "'(' verwacht." -#: src/language/dictionary/rename-variables.c:67 +#: src/language/dictionary/rename-variables.c:66 msgid "`=' expected between lists of new and old variable names." msgstr "'=' verwacht tussen lijst met nieuwe en oude variabelennamen." -#: src/language/dictionary/rename-variables.c:88 +#: src/language/dictionary/rename-variables.c:87 msgid "`)' expected after variable names." msgstr "')' verwacht achter variabelennamen." -#: src/language/dictionary/rename-variables.c:98 +#: src/language/dictionary/rename-variables.c:97 #, c-format msgid "Renaming would duplicate variable name %s." msgstr "Hernoemen zou variabelennaam %s dupliceren." #: src/language/dictionary/split-file.c:83 -#: src/language/dictionary/sys-file-info.c:429 -#: src/language/dictionary/sys-file-info.c:582 -#: src/language/stats/crosstabs.q:1214 src/language/stats/crosstabs.q:1241 -#: src/language/stats/crosstabs.q:1264 src/language/stats/crosstabs.q:1289 +#: src/language/dictionary/sys-file-info.c:428 +#: src/language/dictionary/sys-file-info.c:581 +#: src/language/stats/reliability.c:758 src/language/stats/reliability.c:769 +#: src/language/stats/crosstabs.q:1206 src/language/stats/crosstabs.q:1233 +#: src/language/stats/crosstabs.q:1256 src/language/stats/crosstabs.q:1281 #: src/language/stats/examine.q:1841 src/language/stats/frequencies.q:813 -#: src/language/stats/reliability.q:568 src/language/stats/reliability.q:579 msgid "Value" msgstr "Waarde" -#: src/language/dictionary/sys-file-info.c:95 +#: src/language/dictionary/sys-file-info.c:94 msgid "File:" msgstr "Bestand:" -#: src/language/dictionary/sys-file-info.c:97 src/ui/gui/psppire.ui:1862 +#: src/language/dictionary/sys-file-info.c:96 src/ui/gui/compute.ui:405 #: src/ui/gui/recode.ui:859 msgid "Label:" msgstr "Label:" -#: src/language/dictionary/sys-file-info.c:101 +#: src/language/dictionary/sys-file-info.c:100 msgid "No label." msgstr "Geen label." -#: src/language/dictionary/sys-file-info.c:104 +#: src/language/dictionary/sys-file-info.c:103 msgid "Created:" msgstr "Aangemaakt:" -#: src/language/dictionary/sys-file-info.c:107 +#: src/language/dictionary/sys-file-info.c:106 msgid "Integer Format:" msgstr "Integeropmaak" -#: src/language/dictionary/sys-file-info.c:111 -#: src/language/dictionary/sys-file-info.c:119 -#: src/language/dictionary/sys-file-info.c:124 -#: src/language/dictionary/sys-file-info.c:143 +#: src/language/dictionary/sys-file-info.c:110 +#: src/language/dictionary/sys-file-info.c:118 +#: src/language/dictionary/sys-file-info.c:123 +#: src/language/dictionary/sys-file-info.c:142 msgid "Unknown" msgstr "Onbekend" -#: src/language/dictionary/sys-file-info.c:112 +#: src/language/dictionary/sys-file-info.c:111 msgid "Real Format:" msgstr "Realopmaak:" -#: src/language/dictionary/sys-file-info.c:114 +#: src/language/dictionary/sys-file-info.c:113 msgid "IEEE 754 LE." msgstr "IEEE 754 LE." -#: src/language/dictionary/sys-file-info.c:115 +#: src/language/dictionary/sys-file-info.c:114 msgid "IEEE 754 BE." msgstr "IEEE 754 BE." -#: src/language/dictionary/sys-file-info.c:116 +#: src/language/dictionary/sys-file-info.c:115 msgid "VAX D." msgstr "VAX D." -#: src/language/dictionary/sys-file-info.c:117 +#: src/language/dictionary/sys-file-info.c:116 msgid "VAX G." msgstr "VAX G." -#: src/language/dictionary/sys-file-info.c:118 +#: src/language/dictionary/sys-file-info.c:117 msgid "IBM 390 Hex Long." msgstr "IBM 390 Hex Long." -#: src/language/dictionary/sys-file-info.c:120 src/ui/gui/descriptives.ui:85 -#: src/ui/gui/factor.ui:173 src/ui/gui/recode.ui:960 +#: src/language/dictionary/sys-file-info.c:119 src/ui/gui/descriptives.ui:85 +#: src/ui/gui/factor.ui:181 src/ui/gui/recode.ui:960 msgid "Variables:" msgstr "Variabelen:" -#: src/language/dictionary/sys-file-info.c:122 +#: src/language/dictionary/sys-file-info.c:121 msgid "Cases:" msgstr "Cases:" -#: src/language/dictionary/sys-file-info.c:127 +#: src/language/dictionary/sys-file-info.c:126 msgid "Type:" msgstr "Type:" -#: src/language/dictionary/sys-file-info.c:128 -#: src/ui/gui/psppire-data-window.c:634 +#: src/language/dictionary/sys-file-info.c:127 +#: src/ui/gui/psppire-data-window.c:635 msgid "System File" msgstr "Systeembestand" -#: src/language/dictionary/sys-file-info.c:129 +#: src/language/dictionary/sys-file-info.c:128 msgid "Weight:" msgstr "Gewicht:" -#: src/language/dictionary/sys-file-info.c:134 +#: src/language/dictionary/sys-file-info.c:133 msgid "Not weighted." msgstr "Niet gewogen." -#: src/language/dictionary/sys-file-info.c:136 +#: src/language/dictionary/sys-file-info.c:135 msgid "Mode:" msgstr "Modus:" -#: src/language/dictionary/sys-file-info.c:138 +#: src/language/dictionary/sys-file-info.c:137 #, c-format msgid "Compression %s." msgstr "Compressie %s." -#: src/language/dictionary/sys-file-info.c:138 +#: src/language/dictionary/sys-file-info.c:137 msgid "on" msgstr "aan" -#: src/language/dictionary/sys-file-info.c:138 +#: src/language/dictionary/sys-file-info.c:137 msgid "off" msgstr "uit" -#: src/language/dictionary/sys-file-info.c:141 +#: src/language/dictionary/sys-file-info.c:140 msgid "Charset:" msgstr "Tekenset:" -#: src/language/dictionary/sys-file-info.c:151 -#: src/language/dictionary/sys-file-info.c:344 +#: src/language/dictionary/sys-file-info.c:150 +#: src/language/dictionary/sys-file-info.c:343 msgid "Description" msgstr "Omschrijving" -#: src/language/dictionary/sys-file-info.c:152 -#: src/language/dictionary/sys-file-info.c:346 -#: src/language/dictionary/sys-file-info.c:663 +#: src/language/dictionary/sys-file-info.c:151 +#: src/language/dictionary/sys-file-info.c:345 +#: src/language/dictionary/sys-file-info.c:662 msgid "Position" msgstr "Positie" -#: src/language/dictionary/sys-file-info.c:199 +#: src/language/dictionary/sys-file-info.c:198 msgid "The active file does not have a file label." msgstr "Het actieve bestand heeft geen bestandlabel." -#: src/language/dictionary/sys-file-info.c:202 +#: src/language/dictionary/sys-file-info.c:201 msgid "File label:" msgstr "Bestandlabel:" -#: src/language/dictionary/sys-file-info.c:277 +#: src/language/dictionary/sys-file-info.c:276 msgid "No variables to display." msgstr "Geen variabelen om te tonen." -#: src/language/dictionary/sys-file-info.c:291 +#: src/language/dictionary/sys-file-info.c:290 msgid "Macros not supported." msgstr "Macro's worden niet ondersteund." -#: src/language/dictionary/sys-file-info.c:300 +#: src/language/dictionary/sys-file-info.c:299 msgid "The active file dictionary does not contain any documents." msgstr "Het actieve bestandwoordenboek bevat geen documenten." -#: src/language/dictionary/sys-file-info.c:308 +#: src/language/dictionary/sys-file-info.c:307 msgid "Documents in the active file:" msgstr "Documenten in het actieve bestand:" -#: src/language/dictionary/sys-file-info.c:428 +#: src/language/dictionary/sys-file-info.c:427 msgid "Attribute" msgstr "Attribuut" -#: src/language/dictionary/sys-file-info.c:484 +#: src/language/dictionary/sys-file-info.c:483 #, c-format msgid "Format: %s" msgstr "Indeling: %s" -#: src/language/dictionary/sys-file-info.c:491 +#: src/language/dictionary/sys-file-info.c:490 #, c-format msgid "Print Format: %s" msgstr "Afdrukindeling: %s" -#: src/language/dictionary/sys-file-info.c:495 +#: src/language/dictionary/sys-file-info.c:494 #, c-format msgid "Write Format: %s" msgstr "Schrijfindeling: %s" -#: src/language/dictionary/sys-file-info.c:508 +#: src/language/dictionary/sys-file-info.c:507 #, c-format msgid "Measure: %s" msgstr "Meting: %s" -#: src/language/dictionary/sys-file-info.c:509 +#: src/language/dictionary/sys-file-info.c:508 #: src/ui/gui/psppire-var-sheet.c:111 msgid "Nominal" msgstr "Nominaal" -#: src/language/dictionary/sys-file-info.c:510 +#: src/language/dictionary/sys-file-info.c:509 #: src/ui/gui/psppire-var-sheet.c:112 msgid "Ordinal" msgstr "Ordinaal" -#: src/language/dictionary/sys-file-info.c:511 +#: src/language/dictionary/sys-file-info.c:510 #: src/ui/gui/psppire-var-sheet.c:113 msgid "Scale" msgstr "Schaal" -#: src/language/dictionary/sys-file-info.c:514 +#: src/language/dictionary/sys-file-info.c:513 #, c-format msgid "Display Alignment: %s" msgstr "Toongroepering: %s" -#: src/language/dictionary/sys-file-info.c:515 +#: src/language/dictionary/sys-file-info.c:514 #: src/ui/gui/psppire-var-sheet.c:104 msgid "Left" msgstr "Links" -#: src/language/dictionary/sys-file-info.c:516 +#: src/language/dictionary/sys-file-info.c:515 #: src/ui/gui/psppire-var-sheet.c:106 msgid "Center" msgstr "Centreer" -#: src/language/dictionary/sys-file-info.c:517 +#: src/language/dictionary/sys-file-info.c:516 #: src/ui/gui/psppire-var-sheet.c:105 msgid "Right" msgstr "Rechts" -#: src/language/dictionary/sys-file-info.c:520 +#: src/language/dictionary/sys-file-info.c:519 #, c-format msgid "Display Width: %d" msgstr "Toonbreedte: %d" -#: src/language/dictionary/sys-file-info.c:534 +#: src/language/dictionary/sys-file-info.c:533 msgid "Missing Values: " msgstr "Ontbrekende waardes: " -#: src/language/dictionary/sys-file-info.c:643 +#: src/language/dictionary/sys-file-info.c:642 msgid "No vectors defined." msgstr "Geen vectoren gedefinieerd." -#: src/language/dictionary/sys-file-info.c:662 +#: src/language/dictionary/sys-file-info.c:661 msgid "Vector" msgstr "Vector" -#: src/language/dictionary/sys-file-info.c:665 +#: src/language/dictionary/sys-file-info.c:664 msgid "Print Format" msgstr "Afdrukindeling" -#: src/language/dictionary/value-labels.c:150 +#: src/language/dictionary/value-labels.c:149 msgid "Truncating value label to 60 characters." msgstr "Waardelabel is afgekapt tot 60 tekens." -#: src/language/dictionary/variable-label.c:51 -msgid "String expected for variable label." -msgstr "Tekenreeks verwacht voor variabelenlabel." - -#: src/language/dictionary/variable-label.c:59 +#: src/language/dictionary/variable-label.c:58 msgid "Truncating variable label to 255 characters." msgstr "Variabelenlabel is afgekapt tot 255 tekens." @@ -2119,170 +2122,259 @@ msgstr "Kan map niet veranderen in %s: %s " msgid "Only USE ALL is currently implemented." msgstr "Alleen USE ALL is op dit moment geïmplementeerd." +#: src/language/utilities/host.c:85 +#, c-format +msgid "Couldn't fork: %s." +msgstr "" + +#: src/language/utilities/host.c:100 +msgid "Interactive shell not supported on this platform." +msgstr "Interactieve-shell niet ondersteund op dit platform." + +#: src/language/utilities/host.c:112 +msgid "Command shell not supported on this platform." +msgstr "Opdracht-shell niet ondersteund op dit platform." + +#: src/language/utilities/host.c:118 +#, c-format +msgid "Error executing command: %s." +msgstr "Fout tijdens uitvoeren opdracht: %s." + #: src/language/utilities/title.c:103 #, c-format msgid " (Entered %s)" msgstr " (Ingevoerd %s)" -#: src/language/utilities/include.c:95 -msgid "Expecting BATCH or INTERACTIVE after SYNTAX." -msgstr "BATCH of INTERACTIVE verwacht na SYNTAX." - -#: src/language/utilities/include.c:112 -msgid "Expecting YES or NO after CD." -msgstr "YES of NO verwacht na CD." - -#: src/language/utilities/include.c:129 -msgid "Expecting CONTINUE or STOP after ERROR." -msgstr "CONTINUE of STOP verwacht na ERROR." +#: src/language/utilities/include.c:94 src/language/utilities/include.c:112 +#: src/language/utilities/include.c:130 +#, fuzzy, c-format +msgid "expecting %s or %s after %s" +msgstr "%s of %s verwacht" -#: src/language/utilities/include.c:136 +#: src/language/utilities/include.c:138 #, c-format msgid "Unexpected token: `%s'." msgstr "Onverwacht symbool: '%s'." -#: src/language/utilities/include.c:181 +#: src/language/utilities/include.c:183 msgid "expecting file name" msgstr "bestandsnaam verwacht" -#: src/language/utilities/include.c:193 +#: src/language/utilities/include.c:195 #, c-format msgid "Can't find `%s' in include file search path." msgstr "Kan '%s' niet vinden in include-bestand zoekpad." -#: src/language/utilities/include.c:201 +#: src/language/utilities/include.c:203 #, c-format msgid "Unable to open `%s': %s." msgstr "Onmogelijk om te openen '%s': %s." -#: src/language/utilities/permissions.c:73 +#: src/language/utilities/permissions.c:76 #, c-format msgid "Expecting %s or %s." msgstr "Verwacht %s of %s." -#: src/language/utilities/permissions.c:106 +#: src/language/utilities/permissions.c:109 #, c-format msgid "Cannot stat %s: %s" msgstr "" -#: src/language/utilities/permissions.c:119 +#: src/language/utilities/permissions.c:122 #, c-format msgid "Cannot change mode of %s: %s" msgstr "Kan modus van %s niet veranderen: %s" -#: src/language/stats/aggregate.c:220 -msgid "while expecting COLUMNWISE" -msgstr "terwijl COLUMNWISE verwacht werd" +#: src/language/stats/aggregate.c:94 +msgid "Sum of values" +msgstr "Som van waardes" + +#: src/language/stats/aggregate.c:95 +msgid "Mean average" +msgstr "" + +#: src/language/stats/aggregate.c:96 +msgid "Median average" +msgstr "Mediaan gemiddelde" + +#: src/language/stats/aggregate.c:97 src/ui/gui/descriptives-dialog.c:41 +#: src/ui/gui/frequencies-dialog.c:42 +msgid "Standard deviation" +msgstr "Standarddeviatie" + +#: src/language/stats/aggregate.c:98 +msgid "Maximum value" +msgstr "Maximum waarde" + +#: src/language/stats/aggregate.c:99 +msgid "Minimum value" +msgstr "Minimum waarde" + +#: src/language/stats/aggregate.c:100 +msgid "Percentage greater than" +msgstr "" + +#: src/language/stats/aggregate.c:101 +msgid "Percentage less than" +msgstr "Percentage kleiner dan" + +#: src/language/stats/aggregate.c:102 +msgid "Percentage included in range" +msgstr "" + +#: src/language/stats/aggregate.c:103 +msgid "Percentage excluded from range" +msgstr "" + +#: src/language/stats/aggregate.c:104 +msgid "Fraction greater than" +msgstr "" + +#: src/language/stats/aggregate.c:105 +msgid "Fraction less than" +msgstr "Fractie kleiner dan" + +#: src/language/stats/aggregate.c:106 +msgid "Fraction included in range" +msgstr "" + +#: src/language/stats/aggregate.c:107 +msgid "Fraction excluded from range" +msgstr "" + +#: src/language/stats/aggregate.c:108 +msgid "Number of cases" +msgstr "Aantal cases" -#: src/language/stats/aggregate.c:247 -msgid "expecting BREAK" -msgstr "BREAK verwacht" +#: src/language/stats/aggregate.c:109 +msgid "Number of cases (unweighted)" +msgstr "Aantal cases (ongewogen)" -#: src/language/stats/aggregate.c:252 +#: src/language/stats/aggregate.c:110 +msgid "Number of missing values" +msgstr "Aantal missende waardes" + +#: src/language/stats/aggregate.c:111 +msgid "Number of missing values (unweighted)" +msgstr "Aantal ontbrekende waardes (ongewogen)" + +#: src/language/stats/aggregate.c:112 +msgid "First non-missing value" +msgstr "Eerste niet-ontbrekende waarde" + +#: src/language/stats/aggregate.c:113 +msgid "Last non-missing value" +msgstr "Laatste niet-ontbrekende waarde" + +#: src/language/stats/aggregate.c:225 src/language/data-io/get-data.c:461 +#, fuzzy, c-format +msgid "expecting %s" +msgstr "verwacht '%s'" + +#: src/language/stats/aggregate.c:256 msgid "When PRESORTED is specified, specifying sorting directions with (A) or (D) has no effect. Output data will be sorted the same way as the input data." msgstr "Als PRESORTED is gespecificeerd, heeft specificeren van sorteervolgorde met (A) of (D) geen effect. Uitvoergegevens zullen hetzelfde gesorteerd zijn als de invoergegevens." -#: src/language/stats/aggregate.c:424 +#: src/language/stats/aggregate.c:450 msgid "expecting aggregation function" msgstr "aggregatie-functie verwacht" -#: src/language/stats/aggregate.c:442 +#: src/language/stats/aggregate.c:462 #, c-format msgid "Unknown aggregation function %s." msgstr "Onbekende aggregatie functie %s." -#: src/language/stats/aggregate.c:498 +#: src/language/stats/aggregate.c:514 #, c-format msgid "Missing argument %zu to %s." msgstr "Mis argument %zu naar %s." -#: src/language/stats/aggregate.c:507 +#: src/language/stats/aggregate.c:523 #, c-format msgid "Arguments to %s must be of same type as source variables." msgstr "Argumenten naar %s moeten van hetzelfde type zijn als bronvariabelen." -#: src/language/stats/aggregate.c:517 src/language/expressions/parse.c:885 -msgid "expecting `)'" -msgstr "')' verwacht" - -#: src/language/stats/aggregate.c:529 +#: src/language/stats/aggregate.c:542 #, c-format msgid "Number of source variables (%zu) does not match number of target variables (%zu)." msgstr "Aantal bronvariabelen (%zu) komt niet overeen met aantal doelvariabelen (%zu)." -#: src/language/stats/aggregate.c:545 +#: src/language/stats/aggregate.c:558 #, c-format msgid "The value arguments passed to the %s function are out-of-order. They will be treated as if they had been specified in the correct order." msgstr "De volgorde van de geldige argumenten doorgegeven aan de %s functie klopt niet. Ze worden behandeld alsof ze in de correcte volgorde waren opgegeven." -#: src/language/stats/aggregate.c:615 +#: src/language/stats/aggregate.c:632 #, c-format msgid "Variable name %s is not unique within the aggregate file dictionary, which contains the aggregate variables and the break variables." msgstr "Variabelennaam %s is niet uniek binnen het aggregate-bestandwoordenboek, dat de aggregate- en break-variabelen bevat." -#: src/language/stats/autorecode.c:116 +#: src/language/stats/autorecode.c:127 #, c-format msgid "Source variable count (%zu) does not match target variable count (%zu)." msgstr "Bron-variabelenteller (%zu) komt niet overeen met doel-variabelenteller (%zu)." -#: src/language/stats/autorecode.c:128 +#: src/language/stats/autorecode.c:139 #, c-format msgid "Target variable %s duplicates existing variable %s." msgstr "Doelvariabele %s dupliceert bestaande variabele %s." -#: src/language/stats/binomial.c:141 +#: src/language/stats/binomial.c:139 #, c-format msgid "Variable %s is not dichotomous" msgstr "Variabele %s is niet dichotomisch " -#: src/language/stats/binomial.c:192 src/ui/gui/binomial.ui:13 +#: src/language/stats/binomial.c:190 src/ui/gui/binomial.ui:13 msgid "Binomial Test" msgstr "Binomiaal Test" -#: src/language/stats/binomial.c:222 +#: src/language/stats/binomial.c:220 msgid "Group1" msgstr "Groep1 " -#: src/language/stats/binomial.c:223 +#: src/language/stats/binomial.c:221 msgid "Group2" msgstr "Groep2" -#: src/language/stats/binomial.c:224 src/language/stats/chisquare.c:177 -#: src/language/stats/chisquare.c:236 src/language/stats/factor.c:1462 -#: src/language/stats/sign.c:92 src/language/stats/wilcoxon.c:260 -#: src/ui/gui/crosstabs-dialog.c:60 src/language/stats/crosstabs.q:823 -#: src/language/stats/crosstabs.q:1151 src/language/stats/crosstabs.q:1528 -#: src/language/stats/examine.q:1105 src/language/stats/frequencies.q:871 -#: src/language/stats/oneway.q:302 src/language/stats/oneway.q:472 -#: src/language/stats/regression.q:291 src/language/stats/reliability.q:702 +#: src/language/stats/binomial.c:222 src/language/stats/chisquare.c:177 +#: src/language/stats/chisquare.c:236 src/language/stats/factor.c:1464 +#: src/language/stats/glm.c:343 src/language/stats/kruskal-wallis.c:294 +#: src/language/stats/oneway.c:776 src/language/stats/oneway.c:946 +#: src/language/stats/reliability.c:538 src/language/stats/sign.c:93 +#: src/language/stats/wilcoxon.c:255 src/ui/gui/crosstabs-dialog.c:60 +#: src/language/stats/crosstabs.q:815 src/language/stats/crosstabs.q:1143 +#: src/language/stats/crosstabs.q:1522 src/language/stats/examine.q:1105 +#: src/language/stats/frequencies.q:871 src/language/stats/regression.q:291 msgid "Total" msgstr "Totaal" -#: src/language/stats/binomial.c:257 src/language/stats/chisquare.c:199 -#: src/language/stats/crosstabs.q:1239 src/language/stats/crosstabs.q:1286 +#: src/language/stats/binomial.c:255 src/language/stats/chisquare.c:199 +#: src/language/stats/crosstabs.q:1231 src/language/stats/crosstabs.q:1278 msgid "Category" msgstr "Categorie" -#: src/language/stats/binomial.c:258 src/language/stats/correlations.c:119 -#: src/language/stats/correlations.c:227 src/language/stats/npar-summary.c:122 -#: src/language/stats/sign.c:72 src/language/stats/wilcoxon.c:243 -#: src/language/stats/crosstabs.q:830 src/language/stats/examine.q:1176 -#: src/language/stats/frequencies.q:1034 src/language/stats/oneway.q:385 -#: src/language/stats/reliability.q:705 src/language/stats/t-test.q:505 -#: src/language/stats/t-test.q:525 src/language/stats/t-test.q:625 -#: src/language/stats/t-test.q:1101 +#: src/language/stats/binomial.c:256 src/language/stats/correlations.c:119 +#: src/language/stats/correlations.c:227 +#: src/language/stats/kruskal-wallis.c:259 +#: src/language/stats/npar-summary.c:120 src/language/stats/oneway.c:846 +#: src/language/stats/reliability.c:541 src/language/stats/sign.c:72 +#: src/language/stats/wilcoxon.c:238 src/language/stats/crosstabs.q:822 +#: src/language/stats/examine.q:1176 src/language/stats/frequencies.q:1034 +#: src/language/stats/t-test.q:505 src/language/stats/t-test.q:525 +#: src/language/stats/t-test.q:625 src/language/stats/t-test.q:1101 msgid "N" msgstr "N" -#: src/language/stats/binomial.c:259 +#: src/language/stats/binomial.c:257 msgid "Observed Prop." msgstr "" -#: src/language/stats/binomial.c:260 +#: src/language/stats/binomial.c:258 msgid "Test Prop." msgstr "" -#: src/language/stats/binomial.c:263 +#: src/language/stats/binomial.c:261 src/language/stats/crosstabs.q:1211 +#: src/language/stats/crosstabs.q:1213 #, c-format msgid "Exact Sig. (%d-tailed)" msgstr "" @@ -2310,50 +2402,51 @@ msgstr "Overblijvend" msgid "Frequencies" msgstr "Frequenties" -#: src/language/stats/chisquare.c:249 src/language/stats/sign.c:111 -#: src/language/stats/wilcoxon.c:309 +#: src/language/stats/chisquare.c:249 src/language/stats/kruskal-wallis.c:312 +#: src/language/stats/sign.c:112 src/language/stats/wilcoxon.c:304 msgid "Test Statistics" msgstr "Test Statistieken" -#: src/language/stats/chisquare.c:263 +#: src/language/stats/chisquare.c:263 src/language/stats/kruskal-wallis.c:315 msgid "Chi-Square" msgstr "Chi-Square" -#: src/language/stats/chisquare.c:264 src/language/stats/crosstabs.q:1215 -#: src/language/stats/oneway.q:275 src/language/stats/oneway.q:685 +#: src/language/stats/chisquare.c:264 src/language/stats/glm.c:308 +#: src/language/stats/kruskal-wallis.c:318 src/language/stats/oneway.c:753 +#: src/language/stats/oneway.c:1165 src/language/stats/crosstabs.q:1207 #: src/language/stats/regression.q:284 src/language/stats/t-test.q:752 #: src/language/stats/t-test.q:923 src/language/stats/t-test.q:1010 msgid "df" msgstr "df" -#: src/language/stats/chisquare.c:265 +#: src/language/stats/chisquare.c:265 src/language/stats/kruskal-wallis.c:321 msgid "Asymp. Sig." msgstr "" -#: src/language/stats/correlations.c:96 src/language/stats/factor.c:1720 -#: src/language/stats/npar-summary.c:108 +#: src/language/stats/correlations.c:96 src/language/stats/factor.c:1728 +#: src/language/stats/npar-summary.c:106 msgid "Descriptive Statistics" msgstr "Descriptieve Statistieken" #: src/language/stats/correlations.c:117 src/language/stats/descriptives.c:101 -#: src/language/stats/factor.c:1741 src/language/stats/npar-summary.c:125 -#: src/ui/gui/descriptives-dialog.c:40 src/ui/gui/frequencies-dialog.c:41 -#: src/language/stats/examine.q:1444 src/language/stats/frequencies.q:105 -#: src/language/stats/oneway.q:386 src/language/stats/t-test.q:506 +#: src/language/stats/factor.c:1749 src/language/stats/npar-summary.c:123 +#: src/language/stats/oneway.c:847 src/ui/gui/descriptives-dialog.c:40 +#: src/ui/gui/frequencies-dialog.c:41 src/language/stats/examine.q:1444 +#: src/language/stats/frequencies.q:105 src/language/stats/t-test.q:506 #: src/language/stats/t-test.q:526 src/language/stats/t-test.q:624 #: src/language/stats/t-test.q:917 msgid "Mean" msgstr "Gemiddelde " -#: src/language/stats/correlations.c:118 src/language/stats/factor.c:1742 -#: src/language/stats/npar-summary.c:128 src/language/stats/examine.q:1479 -#: src/language/stats/oneway.q:387 src/language/stats/t-test.q:507 +#: src/language/stats/correlations.c:118 src/language/stats/factor.c:1750 +#: src/language/stats/npar-summary.c:126 src/language/stats/oneway.c:848 +#: src/language/stats/examine.q:1479 src/language/stats/t-test.q:507 #: src/language/stats/t-test.q:527 src/language/stats/t-test.q:626 #: src/language/stats/t-test.q:918 msgid "Std. Deviation" msgstr "Std. Deviatie" -#: src/language/stats/correlations.c:190 src/language/stats/factor.c:1620 +#: src/language/stats/correlations.c:190 src/language/stats/factor.c:1622 msgid "Correlations" msgstr "Correlatie" @@ -2361,13 +2454,13 @@ msgstr "Correlatie" msgid "Pearson Correlation" msgstr "Pearson Correlatie" -#: src/language/stats/correlations.c:218 src/language/stats/oneway.q:686 +#: src/language/stats/correlations.c:218 src/language/stats/oneway.c:1166 #: src/language/stats/t-test.q:753 src/language/stats/t-test.q:924 #: src/language/stats/t-test.q:1011 msgid "Sig. (2-tailed)" msgstr "" -#: src/language/stats/correlations.c:218 +#: src/language/stats/correlations.c:218 src/language/stats/factor.c:1634 msgid "Sig. (1-tailed)" msgstr "" @@ -2426,17 +2519,17 @@ msgstr "S.E. Skew" msgid "Range" msgstr "Bereik" -#: src/language/stats/descriptives.c:110 src/language/stats/npar-summary.c:131 -#: src/ui/gui/descriptives-dialog.c:42 src/ui/gui/frequencies-dialog.c:43 -#: src/language/stats/examine.q:1484 src/language/stats/frequencies.q:116 -#: src/language/stats/oneway.q:400 +#: src/language/stats/descriptives.c:110 src/language/stats/npar-summary.c:129 +#: src/language/stats/oneway.c:861 src/ui/gui/descriptives-dialog.c:42 +#: src/ui/gui/frequencies-dialog.c:43 src/language/stats/examine.q:1484 +#: src/language/stats/frequencies.q:116 msgid "Minimum" msgstr "Minimum" -#: src/language/stats/descriptives.c:111 src/language/stats/npar-summary.c:134 -#: src/ui/gui/descriptives-dialog.c:43 src/ui/gui/frequencies-dialog.c:44 -#: src/language/stats/examine.q:1489 src/language/stats/frequencies.q:117 -#: src/language/stats/oneway.q:401 +#: src/language/stats/descriptives.c:111 src/language/stats/npar-summary.c:132 +#: src/language/stats/oneway.c:862 src/ui/gui/descriptives-dialog.c:43 +#: src/ui/gui/frequencies-dialog.c:44 src/language/stats/examine.q:1489 +#: src/language/stats/frequencies.q:117 msgid "Maximum" msgstr "Maximum" @@ -2462,7 +2555,7 @@ msgstr "Generieke namen voor Z-score-variabelen zijn uitgeput. Er zijn slechts msgid "Mapping of variables to corresponding Z-scores." msgstr "Mappen van variabelen naar corresponderende Z-scores." -#: src/language/stats/descriptives.c:559 +#: src/language/stats/descriptives.c:559 src/language/stats/glm.c:304 msgid "Source" msgstr "Bron" @@ -2488,56 +2581,39 @@ msgstr "Missende N" msgid "Valid cases = %g; cases with missing value(s) = %g." msgstr "Geldige cases = %g; cases met ontbrekende-waarde(s) = %g." -#: src/language/stats/sort-cases.c:64 -msgid "Buffer limit must be at least 2." -msgstr "Bufferlimiet moet tenminste 2 zijn." - -#: src/language/stats/sort-criteria.c:74 -msgid "`A' or `D' expected inside parentheses." -msgstr "'A' of 'D' verwacht binnen haakjes." - -#: src/language/stats/sort-criteria.c:79 -msgid "`)' expected." -msgstr "')' verwacht." - -#: src/language/stats/sort-criteria.c:92 -#, c-format -msgid "Variable %s specified twice in sort criteria." -msgstr "Variabele %s 2 keer opgegeven in sorteer criteria." - -#: src/language/stats/factor.c:803 +#: src/language/stats/factor.c:805 msgid "Factor analysis on a single variable is not useful." msgstr "Factor analyse op een enkele variabele is niet zinvol." -#: src/language/stats/factor.c:1206 +#: src/language/stats/factor.c:1208 msgid "Component Number" msgstr "Component-nummer " -#: src/language/stats/factor.c:1206 +#: src/language/stats/factor.c:1208 msgid "Factor Number" msgstr "Factor Nummer" -#: src/language/stats/factor.c:1237 +#: src/language/stats/factor.c:1239 msgid "Communalities" msgstr "" -#: src/language/stats/factor.c:1243 +#: src/language/stats/factor.c:1245 msgid "Initial" msgstr "Initieel " -#: src/language/stats/factor.c:1246 +#: src/language/stats/factor.c:1248 msgid "Extraction" msgstr "Extractie" -#: src/language/stats/factor.c:1310 src/language/stats/factor.c:1437 +#: src/language/stats/factor.c:1312 src/language/stats/factor.c:1439 msgid "Component" msgstr "Component" -#: src/language/stats/factor.c:1315 src/language/stats/factor.c:1439 +#: src/language/stats/factor.c:1317 src/language/stats/factor.c:1441 msgid "Factor" msgstr "Factor" -#: src/language/stats/factor.c:1347 src/language/stats/factor.c:1495 +#: src/language/stats/factor.c:1349 src/language/stats/factor.c:1497 #: src/ui/gui/psppire-data-store.c:755 src/ui/gui/psppire-var-store.c:699 #: src/ui/gui/psppire-var-store.c:709 src/ui/gui/psppire-var-store.c:719 #: src/ui/gui/psppire-var-store.c:825 @@ -2545,68 +2621,68 @@ msgstr "Factor" msgid "%d" msgstr "%d" -#: src/language/stats/factor.c:1412 +#: src/language/stats/factor.c:1414 msgid "Total Variance Explained" msgstr "" -#: src/language/stats/factor.c:1444 +#: src/language/stats/factor.c:1446 msgid "Initial Eigenvalues" msgstr "" -#: src/language/stats/factor.c:1450 +#: src/language/stats/factor.c:1452 msgid "Extraction Sums of Squared Loadings" msgstr "" -#: src/language/stats/factor.c:1456 +#: src/language/stats/factor.c:1458 msgid "Rotation Sums of Squared Loadings" msgstr "" -#: src/language/stats/factor.c:1464 +#: src/language/stats/factor.c:1466 #, no-c-format msgid "% of Variance" msgstr "% van Variatie" -#: src/language/stats/factor.c:1465 +#: src/language/stats/factor.c:1467 msgid "Cumulative %" msgstr "Cumulatieve %" -#: src/language/stats/factor.c:1578 +#: src/language/stats/factor.c:1580 msgid "Correlation Matrix" msgstr "Correlatie-Matrix" -#: src/language/stats/factor.c:1632 -msgid "Sig. 1-tailed" -msgstr "" - -#: src/language/stats/factor.c:1666 +#: src/language/stats/factor.c:1668 msgid "Determinant" msgstr "Determinant" -#: src/language/stats/factor.c:1743 +#: src/language/stats/factor.c:1699 +msgid "The dataset contains no complete observations. No analysis will be performed." +msgstr "" + +#: src/language/stats/factor.c:1751 msgid "Analysis N" msgstr "Analyses N" -#: src/language/stats/factor.c:1776 +#: src/language/stats/factor.c:1784 msgid "The FACTOR criteria result in zero factors extracted. Therefore no analysis will be performed." msgstr "" -#: src/language/stats/factor.c:1782 +#: src/language/stats/factor.c:1790 msgid "The FACTOR criteria result in more factors than variables, which is not meaningful. No analysis will be performed." msgstr "" -#: src/language/stats/factor.c:1865 +#: src/language/stats/factor.c:1873 msgid "Component Matrix" msgstr "Component-Matrix" -#: src/language/stats/factor.c:1865 +#: src/language/stats/factor.c:1873 msgid "Factor Matrix" msgstr "Factor-Matrix:" -#: src/language/stats/factor.c:1871 +#: src/language/stats/factor.c:1879 msgid "Rotated Component Matrix" msgstr "Geroteerde componentmatrix" -#: src/language/stats/factor.c:1871 +#: src/language/stats/factor.c:1879 msgid "Rotated Factor Matrix" msgstr "Geroteerde factormatrix:" @@ -2618,211 +2694,473 @@ msgstr "FLIP negeert TEMPORARY. Tijdelijke transformaties worden permanent gemaa msgid "Could not create temporary file for FLIP." msgstr "Kon geen tijdelijk bestand voor FLIP aanmaken." -#: src/language/stats/flip.c:327 +#: src/language/stats/flip.c:325 #, c-format msgid "Error rewinding FLIP file: %s." msgstr "Fout tijdens terugdraaien FLIP bestand: %s." -#: src/language/stats/flip.c:334 +#: src/language/stats/flip.c:332 msgid "Error creating FLIP source file." msgstr "Fout tijdens het creëren van FLIP bronbestand." -#: src/language/stats/flip.c:347 +#: src/language/stats/flip.c:345 #, c-format msgid "Error reading FLIP file: %s." msgstr "Fout tijdens lezen FLIP bestand: %s." -#: src/language/stats/flip.c:349 +#: src/language/stats/flip.c:347 msgid "Unexpected end of file reading FLIP file." msgstr "Onverwacht einde-bestand tijdens lezen FLIP bestand." -#: src/language/stats/flip.c:365 +#: src/language/stats/flip.c:363 #, c-format msgid "Error seeking FLIP source file: %s." msgstr "Fout tijdens zoeken FLIP bronbestand: %s." -#: src/language/stats/flip.c:373 +#: src/language/stats/flip.c:371 #, c-format msgid "Error writing FLIP source file: %s." msgstr "Fout tijdens schrijven FLIP bronbestand: %s." -#: src/language/stats/flip.c:384 -#, c-format -msgid "Error closing FLIP source file: %s." -msgstr "Fout tijdens sluiten FLIP bronbestand: %s." - -#: src/language/stats/flip.c:392 +#: src/language/stats/flip.c:386 #, c-format msgid "Error rewinding FLIP source file: %s." msgstr "Fout tijdens terugdraaien FLIP bronbestand: %s." -#: src/language/stats/flip.c:426 +#: src/language/stats/flip.c:419 #, c-format msgid "Error reading FLIP temporary file: %s." msgstr "Fout tijdens lezen FLIP tijdelijk bestand: %s." -#: src/language/stats/flip.c:429 +#: src/language/stats/flip.c:422 msgid "Unexpected end of file reading FLIP temporary file." msgstr "Onverwacht einde-bestand tijdens lezen FLIP tijdelijk bestand." -#: src/language/stats/npar-summary.c:141 src/language/stats/examine.q:1996 -#: src/language/stats/examine.q:2013 src/language/stats/frequencies.q:1050 -#: src/ui/gui/examine.ui:345 -msgid "Percentiles" -msgstr "Percentiles" - -#: src/language/stats/npar-summary.c:145 -msgid "25th" -msgstr "25ste" - -#: src/language/stats/npar-summary.c:148 -msgid "50th (Median)" -msgstr "50ste (Mediaan)" - -#: src/language/stats/npar-summary.c:151 -msgid "75th" -msgstr "75ste" +#: src/language/stats/glm.c:108 +#, fuzzy +msgid "Multivariate analysis is not yet implemented" +msgstr "%s is nog niet geïmplementeerd." -#: src/language/stats/roc.c:932 -msgid "Area Under the Curve" +#: src/language/stats/glm.c:291 +msgid "Tests of Between-Subjects Effects" msgstr "" -#: src/language/stats/roc.c:934 +#. TRANSLATORS: The parameter is a roman numeral +#: src/language/stats/glm.c:307 #, c-format -msgid "Area Under the Curve (%s)" +msgid "Type %s Sum of Squares" msgstr "" -#: src/language/stats/roc.c:939 -msgid "Area" +#: src/language/stats/glm.c:309 src/language/stats/oneway.c:754 +#: src/language/stats/regression.q:285 +msgid "Mean Square" msgstr "" -#: src/language/stats/roc.c:952 src/language/stats/examine.q:1641 -#: src/language/stats/oneway.q:388 src/language/stats/oneway.q:683 -#: src/language/stats/regression.q:198 -msgid "Std. Error" -msgstr "Std. Fout" +#: src/language/stats/glm.c:310 src/language/stats/oneway.c:755 +#: src/language/stats/regression.q:286 src/language/stats/t-test.q:749 +msgid "F" +msgstr "F" -#: src/language/stats/roc.c:953 -msgid "Asymptotic Sig." +#: src/language/stats/glm.c:311 src/language/stats/t-test.q:750 +#: src/language/stats/t-test.q:1103 +msgid "Sig." msgstr "" -#: src/language/stats/roc.c:955 src/language/stats/examine.q:1455 -#: src/language/stats/oneway.q:397 -msgid "Lower Bound" -msgstr "Benedengrens" +#: src/language/stats/glm.c:314 +msgid "Corrected Model" +msgstr "" -#: src/language/stats/roc.c:956 src/language/stats/examine.q:1460 -#: src/language/stats/oneway.q:398 -msgid "Upper Bound" -msgstr "Bovengrens" +#: src/language/stats/glm.c:323 +#, fuzzy +msgid "Intercept" +msgstr "Percentage" -#: src/language/stats/roc.c:960 -#, c-format -msgid "Asymp. %g%% Confidence Interval" -msgstr "Asymp. %g%% Betrouwbaarheidsinterval" +#: src/language/stats/glm.c:337 +#, fuzzy +msgid "Error" +msgstr "fout" -#: src/language/stats/roc.c:966 -msgid "Variable under test" -msgstr "" +#: src/language/stats/glm.c:350 +#, fuzzy +msgid "Corrected Total" +msgstr "Coëfficiënt Totaal: " + +#: src/language/stats/kruskal-wallis.c:244 src/language/stats/wilcoxon.c:225 +msgid "Ranks" +msgstr "Rangschikking" + +#: src/language/stats/kruskal-wallis.c:258 src/language/stats/wilcoxon.c:239 +msgid "Mean Rank" +msgstr "" + +#: src/language/stats/npar.c:233 src/language/stats/npar.c:260 +#, fuzzy, c-format +msgid "The %s subcommand may be given only once." +msgstr "%s-subopdracht mag maximaal 1 keer gegeven worden." + +#: src/language/stats/npar.c:343 +msgid "NPAR subcommand not currently implemented." +msgstr "" + +#: src/language/stats/npar.c:496 +#, c-format +msgid "The specified value of HI (%d) is lower than the specified value of LO (%d)" +msgstr "De opgegeven waarde van HI (%d) is lager dan de opgegeven waarde van LO (%d)" + +#: src/language/stats/npar.c:551 +#, c-format +msgid "%d expected values were given, but the specified range (%d-%d) requires exactly %d values." +msgstr "%d verwachte waardes waren opgegeven, maar het opgegeven bereik (%d-%d) vereist precies %d waardes." + +#: src/language/stats/npar.c:690 src/language/stats/t-test.q:380 +#, c-format +msgid "PAIRED was specified but the number of variables preceding WITH (%zu) did not match the number following (%zu)." +msgstr "PAIRED was opgegeven maar het aantal variabelen voor WITH (%zu) komt niet overeen met het aantal er achter (%zu)." + +#: src/language/stats/npar-summary.c:139 src/language/stats/examine.q:1996 +#: src/language/stats/examine.q:2013 src/language/stats/frequencies.q:1050 +#: src/ui/gui/examine.ui:345 +msgid "Percentiles" +msgstr "Percentiles" + +#: src/language/stats/npar-summary.c:143 +msgid "25th" +msgstr "25ste" + +#: src/language/stats/npar-summary.c:146 +msgid "50th (Median)" +msgstr "50ste (Mediaan)" + +#: src/language/stats/npar-summary.c:149 +msgid "75th" +msgstr "75ste" + +#: src/language/stats/oneway.c:692 +msgid "Number of contrast coefficients must equal the number of groups" +msgstr "" + +#: src/language/stats/oneway.c:701 +#, c-format +msgid "Coefficients for contrast %zu do not total zero" +msgstr "" + +#: src/language/stats/oneway.c:752 src/language/stats/regression.q:283 +msgid "Sum of Squares" +msgstr "" + +#: src/language/stats/oneway.c:756 src/language/stats/oneway.c:1001 +#: src/language/stats/regression.q:201 src/language/stats/regression.q:287 +msgid "Significance" +msgstr "Significantie " + +#: src/language/stats/oneway.c:774 +msgid "Between Groups" +msgstr "Tussen groepen" + +#: src/language/stats/oneway.c:775 +msgid "Within Groups" +msgstr "Binnen groepen" + +#: src/language/stats/oneway.c:808 src/language/stats/regression.q:312 +msgid "ANOVA" +msgstr "ANOVA" + +#: src/language/stats/oneway.c:849 src/language/stats/oneway.c:1163 +#: src/language/stats/roc.c:975 src/language/stats/examine.q:1641 +#: src/language/stats/regression.q:198 +msgid "Std. Error" +msgstr "Std. Fout" + +#: src/language/stats/oneway.c:855 src/language/stats/examine.q:1449 +#, c-format +msgid "%g%% Confidence Interval for Mean" +msgstr "" + +#: src/language/stats/oneway.c:858 src/language/stats/roc.c:978 +#: src/language/stats/examine.q:1455 +msgid "Lower Bound" +msgstr "Benedengrens" + +#: src/language/stats/oneway.c:859 src/language/stats/roc.c:979 +#: src/language/stats/examine.q:1460 +msgid "Upper Bound" +msgstr "Bovengrens" + +#: src/language/stats/oneway.c:864 src/language/stats/examine.q:1635 +#: src/ui/gui/descriptives.ui:8 src/ui/gui/examine.ui:319 +msgid "Descriptives" +msgstr "Descriptieve" + +#: src/language/stats/oneway.c:998 +msgid "Levene Statistic" +msgstr "" + +#: src/language/stats/oneway.c:999 +msgid "df1" +msgstr "df1" + +#: src/language/stats/oneway.c:1000 +msgid "df2" +msgstr "df2" + +#: src/language/stats/oneway.c:1003 +msgid "Test of Homogeneity of Variances" +msgstr "" + +#: src/language/stats/oneway.c:1079 +msgid "Contrast Coefficients" +msgstr "Contrastcoëfficiënten" + +#: src/language/stats/oneway.c:1081 src/language/stats/oneway.c:1161 +msgid "Contrast" +msgstr "Contrast" + +#: src/language/stats/oneway.c:1159 +msgid "Contrast Tests" +msgstr "Contrasttesten" + +#: src/language/stats/oneway.c:1162 +msgid "Value of Contrast" +msgstr "" + +#: src/language/stats/oneway.c:1164 src/language/stats/regression.q:200 +#: src/language/stats/t-test.q:751 src/language/stats/t-test.q:922 +#: src/language/stats/t-test.q:1009 +msgid "t" +msgstr "t" + +#: src/language/stats/oneway.c:1216 +msgid "Assume equal variances" +msgstr "Veronderstelt gelijke variantie" + +#: src/language/stats/oneway.c:1220 +msgid "Does not assume equal" +msgstr "Veronderstelt niet gelijk" + +#: src/language/stats/reliability.c:146 +msgid "Reliabilty on a single variable is not useful." +msgstr "betrouwbaarheids analyse op een enkele variabele is niet zinvol." + +#: src/language/stats/reliability.c:506 src/language/stats/examine.q:1159 +msgid "Case Processing Summary" +msgstr "Case Bewerkingsoverzicht" + +#: src/language/stats/reliability.c:529 src/language/stats/crosstabs.q:812 +#: src/language/stats/examine.q:1164 +msgid "Cases" +msgstr "Cases" + +#: src/language/stats/reliability.c:532 src/language/stats/crosstabs.q:813 +#: src/language/stats/examine.q:1103 src/language/stats/frequencies.q:1035 +msgid "Valid" +msgstr "Geldig" + +#: src/language/stats/reliability.c:535 +msgid "Excluded" +msgstr "Uitgesloten" + +#: src/language/stats/reliability.c:543 +msgid "%" +msgstr "%" + +#: src/language/stats/reliability.c:588 +msgid "Item-Total Statistics" +msgstr "Item-Totaal Statistieken" + +#: src/language/stats/reliability.c:610 +msgid "Scale Mean if Item Deleted" +msgstr "" + +#: src/language/stats/reliability.c:613 +msgid "Scale Variance if Item Deleted" +msgstr "" + +#: src/language/stats/reliability.c:616 +msgid "Corrected Item-Total Correlation" +msgstr "" + +#: src/language/stats/reliability.c:619 +msgid "Cronbach's Alpha if Item Deleted" +msgstr "" + +#: src/language/stats/reliability.c:693 +msgid "Reliability Statistics" +msgstr "Betrouwbaarheids Statistieken" + +#: src/language/stats/reliability.c:733 src/language/stats/reliability.c:752 +msgid "Cronbach's Alpha" +msgstr "Cronbach's Alpha" + +#: src/language/stats/reliability.c:736 src/language/stats/reliability.c:761 +#: src/language/stats/reliability.c:772 +msgid "N of Items" +msgstr "N van Items" + +#: src/language/stats/reliability.c:755 +msgid "Part 1" +msgstr "Deel 1" + +#: src/language/stats/reliability.c:766 +msgid "Part 2" +msgstr "Deel 2" + +#: src/language/stats/reliability.c:777 +msgid "Total N of Items" +msgstr "Totaal N van Items" + +#: src/language/stats/reliability.c:780 +msgid "Correlation Between Forms" +msgstr "Correlatie Tussen Formulieren" + +#: src/language/stats/reliability.c:784 +msgid "Spearman-Brown Coefficient" +msgstr "Spearman-Brown Coefficient" + +#: src/language/stats/reliability.c:787 +msgid "Equal Length" +msgstr "Gelijke lengte" + +#: src/language/stats/reliability.c:790 +msgid "Unequal Length" +msgstr "Ongelijke lengte" + +#: src/language/stats/reliability.c:794 +msgid "Guttman Split-Half Coefficient" +msgstr "Guttman Split-Half Coëfficiënt" + +#: src/language/stats/roc.c:955 +msgid "Area Under the Curve" +msgstr "" + +#: src/language/stats/roc.c:957 +#, c-format +msgid "Area Under the Curve (%s)" +msgstr "" -#: src/language/stats/roc.c:1025 +#: src/language/stats/roc.c:962 +msgid "Area" +msgstr "" + +#: src/language/stats/roc.c:976 +msgid "Asymptotic Sig." +msgstr "" + +#: src/language/stats/roc.c:983 +#, c-format +msgid "Asymp. %g%% Confidence Interval" +msgstr "Asymp. %g%% Betrouwbaarheidsinterval" + +#: src/language/stats/roc.c:989 +msgid "Variable under test" +msgstr "" + +#: src/language/stats/roc.c:1048 msgid "Case Summary" msgstr "Case Overzicht" -#: src/language/stats/roc.c:1045 +#: src/language/stats/roc.c:1068 msgid "Unweighted" msgstr "Niet gewogen" -#: src/language/stats/roc.c:1046 +#: src/language/stats/roc.c:1069 msgid "Weighted" msgstr "Gewicht" -#: src/language/stats/roc.c:1050 +#: src/language/stats/roc.c:1073 msgid "Valid N (listwise)" msgstr "" -#: src/language/stats/roc.c:1053 +#: src/language/stats/roc.c:1076 msgid "Positive" msgstr "Positief" -#: src/language/stats/roc.c:1054 +#: src/language/stats/roc.c:1077 msgid "Negative" msgstr "Negatief" -#: src/language/stats/roc.c:1082 +#: src/language/stats/roc.c:1105 msgid "Coordinates of the Curve" msgstr "" -#: src/language/stats/roc.c:1084 +#: src/language/stats/roc.c:1107 #, c-format msgid "Coordinates of the Curve (%s)" msgstr "" -#: src/language/stats/roc.c:1092 +#: src/language/stats/roc.c:1115 msgid "Test variable" msgstr "Testvariabele(n)" -#: src/language/stats/roc.c:1094 +#: src/language/stats/roc.c:1117 msgid "Positive if greater than or equal to" msgstr "Positief als grote dan of gelijk aan" -#: src/language/stats/roc.c:1095 src/output/charts/roc-chart-cairo.c:38 +#: src/language/stats/roc.c:1118 src/output/charts/roc-chart-cairo.c:38 msgid "Sensitivity" msgstr "Gevoeligheid" -#: src/language/stats/roc.c:1096 src/output/charts/roc-chart-cairo.c:37 +#: src/language/stats/roc.c:1119 src/output/charts/roc-chart-cairo.c:37 msgid "1 - Specificity" msgstr "" -#: src/language/stats/sign.c:89 +#: src/language/stats/sign.c:90 msgid "Negative Differences" msgstr "Negatieve Verschillen" -#: src/language/stats/sign.c:90 +#: src/language/stats/sign.c:91 msgid "Positive Differences" msgstr "Positieve Verschillen" -#: src/language/stats/sign.c:91 src/language/stats/wilcoxon.c:259 +#: src/language/stats/sign.c:92 src/language/stats/wilcoxon.c:254 msgid "Ties" msgstr "" -#: src/language/stats/sign.c:130 src/language/stats/wilcoxon.c:327 +#: src/language/stats/sign.c:131 src/language/stats/wilcoxon.c:322 msgid "Exact Sig. (2-tailed)" msgstr "" -#: src/language/stats/sign.c:133 src/language/stats/wilcoxon.c:328 +#: src/language/stats/sign.c:134 src/language/stats/wilcoxon.c:323 msgid "Exact Sig. (1-tailed)" msgstr "" -#: src/language/stats/sign.c:136 src/language/stats/wilcoxon.c:331 +#: src/language/stats/sign.c:137 src/language/stats/wilcoxon.c:326 msgid "Point Probability" msgstr "" -#: src/language/stats/wilcoxon.c:230 -msgid "Ranks" -msgstr "Rangschikking" +#: src/language/stats/sort-cases.c:64 +msgid "Buffer limit must be at least 2." +msgstr "Bufferlimiet moet tenminste 2 zijn." -#: src/language/stats/wilcoxon.c:244 -msgid "Mean Rank" -msgstr "" +#: src/language/stats/sort-criteria.c:74 +msgid "`A' or `D' expected inside parentheses." +msgstr "'A' of 'D' verwacht binnen haakjes." -#: src/language/stats/wilcoxon.c:245 +#: src/language/stats/sort-criteria.c:79 +msgid "`)' expected." +msgstr "')' verwacht." + +#: src/language/stats/sort-criteria.c:92 +#, c-format +msgid "Variable %s specified twice in sort criteria." +msgstr "Variabele %s 2 keer opgegeven in sorteer criteria." + +#: src/language/stats/wilcoxon.c:240 msgid "Sum of Ranks" msgstr "Som van Rangen" -#: src/language/stats/wilcoxon.c:257 +#: src/language/stats/wilcoxon.c:252 msgid "Negative Ranks" msgstr "Negatieve Rangen" -#: src/language/stats/wilcoxon.c:258 +#: src/language/stats/wilcoxon.c:253 msgid "Positive Ranks" msgstr "Positieve Rangen" -#: src/language/stats/wilcoxon.c:322 +#: src/language/stats/wilcoxon.c:317 msgid "Z" msgstr "Z" -#: src/language/stats/wilcoxon.c:323 +#: src/language/stats/wilcoxon.c:318 src/language/stats/crosstabs.q:1209 msgid "Asymp. Sig. (2-tailed)" msgstr "" @@ -2922,7 +3260,7 @@ msgid "At least one variable must be specified." msgstr "Tenminste 1 variabele moet gespecificeerd worden." #: src/language/data-io/data-list.c:368 src/language/data-io/data-list.c:457 -#: src/language/data-io/get-data.c:530 +#: src/language/data-io/get-data.c:529 #, c-format msgid "%s is a duplicate variable name." msgstr "%s is een dubbele variabelennaam." @@ -2942,53 +3280,58 @@ msgstr "Er is al een tekenreeksvariabele %s van een andere breedte." msgid "Cannot place variable %s on record %d when RECORDS=%d is specified." msgstr "Kan variabele %s niet plaatsen in record %d als RECORDS=%d is gespecificeerd." -#: src/language/data-io/data-parser.c:460 -#: src/language/data-io/data-parser.c:469 +#: src/language/data-io/data-parser.c:458 +#: src/language/data-io/data-parser.c:467 msgid "Quoted string extends beyond end of line." msgstr "Geciteerde tekenreeks loopt door na regeleinde." -#: src/language/data-io/data-parser.c:525 +#: src/language/data-io/data-parser.c:515 +#, fuzzy, c-format +msgid "Data for variable %s is not valid as format %s: %s" +msgstr "%s variabele %s heeft ongeldig %s opmaak %s." + +#: src/language/data-io/data-parser.c:544 #, c-format msgid "Partial case of %d of %d records discarded." msgstr "Gedeeltelijke case van %d van %d records genegeerd." -#: src/language/data-io/data-parser.c:572 +#: src/language/data-io/data-parser.c:601 #, c-format msgid "Partial case discarded. The first variable missing was %s." msgstr "Gedeeltelijke case overgeslagen. De eerste gemiste variabele was %s." -#: src/language/data-io/data-parser.c:610 +#: src/language/data-io/data-parser.c:643 #, c-format msgid "Missing value(s) for all variables from %s onward. These will be filled with the system-missing value or blanks, as appropriate." msgstr "Ontbrekende-waarde(s) voor alle variabelen vanaf %s. Deze worden gevuld met de geschikte system-missing waarde of spatie." -#: src/language/data-io/data-parser.c:630 +#: src/language/data-io/data-parser.c:663 msgid "Record ends in data not part of any field." msgstr "Record eindigt in gegeven dat geen onderdeel is van een veld." -#: src/language/data-io/data-parser.c:650 src/language/data-io/print.c:404 +#: src/language/data-io/data-parser.c:683 src/language/data-io/print.c:404 msgid "Record" msgstr "Record" -#: src/language/data-io/data-parser.c:651 src/language/data-io/print.c:405 +#: src/language/data-io/data-parser.c:684 src/language/data-io/print.c:405 #: src/ui/gui/psppire-var-sheet.c:541 src/ui/gui/psppire-var-store.c:839 #: src/ui/gui/crosstabs.ui:89 msgid "Columns" msgstr "Kolommen" -#: src/language/data-io/data-parser.c:652 -#: src/language/data-io/data-parser.c:689 src/language/data-io/print.c:406 +#: src/language/data-io/data-parser.c:685 +#: src/language/data-io/data-parser.c:722 src/language/data-io/print.c:406 msgid "Format" msgstr "Indeling" -#: src/language/data-io/data-parser.c:670 +#: src/language/data-io/data-parser.c:703 #, c-format msgid "Reading %d record from %s." msgid_plural "Reading %d records from %s." msgstr[0] "Lezen %d record van %s." msgstr[1] "Lezen %d records van %s." -#: src/language/data-io/data-parser.c:704 +#: src/language/data-io/data-parser.c:737 #, c-format msgid "Reading free-form data from %s." msgstr "Lezen vrije-vorm gegeven van %s." @@ -3000,129 +3343,113 @@ msgstr "Lezen vrije-vorm gegeven van %s." msgid "data file" msgstr "gegevensbestand" -#: src/language/data-io/data-reader.c:150 +#: src/language/data-io/data-reader.c:149 #, c-format -msgid "Could not open \"%s\" for reading as a data file: %s." -msgstr "Kon \"%s\" niet openen voor het lezen als gegevensbestand: %s." +msgid "Could not open `%s' for reading as a data file: %s." +msgstr "Kon '%s' niet openen voor het lezen als gegevensbestand: %s." -#: src/language/data-io/data-reader.c:192 +#: src/language/data-io/data-reader.c:191 msgid "Unexpected end-of-file while reading data in BEGIN DATA. This probably indicates a missing or misformatted END DATA command. END DATA must appear by itself on a single line with exactly one space between words." msgstr "Onverwacht einde-bestand tijdens het lezen van gegevens in BEGIN DATA. Dit geeft waarschijnlijk aan dat de END DATA opdracht ontbreekt of verkeerd geschreven is. END DATA dient alleen op één regel met precies één spatie tussen de woorden voor te komen." -#: src/language/data-io/data-reader.c:217 +#: src/language/data-io/data-reader.c:216 #, c-format msgid "Error reading file %s: %s." msgstr "Fout tijdens lezen bestand %s: %s." -#: src/language/data-io/data-reader.c:220 +#: src/language/data-io/data-reader.c:219 #, c-format msgid "Unexpected end of file reading %s." msgstr "Onverwacht einde tijdens lezen van bestand %s." -#: src/language/data-io/data-reader.c:229 +#: src/language/data-io/data-reader.c:228 #, c-format msgid "Unexpected end of file in partial record reading %s." msgstr "" -#: src/language/data-io/data-reader.c:289 +#: src/language/data-io/data-reader.c:288 #, c-format msgid "Corrupt block descriptor word at offset 0x%lx in %s." msgstr "" -#: src/language/data-io/data-reader.c:290 +#: src/language/data-io/data-reader.c:289 #, c-format msgid "Corrupt record descriptor word at offset 0x%lx in %s." msgstr "" -#: src/language/data-io/data-reader.c:303 +#: src/language/data-io/data-reader.c:302 #, c-format msgid "Corrupt record size at offset 0x%lx in %s." msgstr "" -#: src/language/data-io/data-reader.c:445 +#: src/language/data-io/data-reader.c:444 msgid "Record exceeds remaining block length." msgstr "Record overschrijdt resterende bloklengte." -#: src/language/data-io/data-reader.c:519 +#: src/language/data-io/data-reader.c:518 #, c-format msgid "Attempt to read beyond end-of-file on file %s." msgstr "Poging om te lezen na einde-bestand in bestand %s." -#: src/language/data-io/data-reader.c:522 +#: src/language/data-io/data-reader.c:521 msgid "Attempt to read beyond END DATA." msgstr "Poging om te lezen na END DATA." -#: src/language/data-io/data-reader.c:708 +#: src/language/data-io/data-reader.c:703 msgid "This command is not valid here since the current input program does not access the inline file." msgstr "Deze opdracht is hier niet geldig omdat het huidige invoerprogramma het inline-bestand niet benaderd." -#: src/language/data-io/data-writer.c:74 +#: src/language/data-io/data-writer.c:73 #, c-format -msgid "An error occurred while opening \"%s\" for writing as a data file: %s." -msgstr "Een fout is opgetreden tijdens het openen van \"%s\" voor schrijven als gegevensbestand: %s." +msgid "An error occurred while opening `%s' for writing as a data file: %s." +msgstr "Een fout is opgetreden tijdens het openen van '%s' voor schrijven als gegevensbestand: %s." -#: src/language/data-io/data-writer.c:191 +#: src/language/data-io/data-writer.c:190 #, c-format -msgid "I/O error occurred writing data file \"%s\"." -msgstr "I/O fout opgetreden tijdens schrijven gegevensbestand \"%s\"." +msgid "I/O error occurred writing data file `%s'." +msgstr "I/O fout opgetreden tijdens schrijven gegevensbestand '%s'." #: src/language/data-io/get-data.c:64 #, c-format msgid "Unsupported TYPE %s" msgstr "Niet ondersteund TYPE %s" -#: src/language/data-io/get-data.c:260 +#: src/language/data-io/get-data.c:259 #, c-format msgid "%s is allowed only with %s arrangement, but %s arrangement was stated or implied earlier in this command." msgstr "%s is alleen toegestaan met %s regeling, maar %s regeling was eerder opgegeven of geïmpliceerd in deze opdracht." -#: src/language/data-io/get-data.c:315 -msgid "expecting FIXED or DELIMITED" -msgstr "FIXED of DELIMITED verwacht" - -#: src/language/data-io/get-data.c:328 +#: src/language/data-io/get-data.c:327 msgid "Value of FIRSTCASE must be 1 or greater." msgstr "Waarde van FIRSTCASE moet 1 of groter zijn." -#: src/language/data-io/get-data.c:353 -msgid "expecting LINE or VARIABLES" -msgstr "LINE of VARIABLES verwacht" - -#: src/language/data-io/get-data.c:366 +#: src/language/data-io/get-data.c:365 msgid "Value of FIXCASE must be at least 1." msgstr "Waarde van FIXCASE moet tenminste 1 zijn." -#: src/language/data-io/get-data.c:386 +#: src/language/data-io/get-data.c:385 msgid "Value of FIRST must be at least 1." msgstr "Waarde van FIRST moet tenminste 1 zijn." -#: src/language/data-io/get-data.c:398 +#: src/language/data-io/get-data.c:397 msgid "Value of PERCENT must be between 1 and 100." msgstr "Waarde van PERCENT moet tussen 1 en 100 zijn." -#: src/language/data-io/get-data.c:447 +#: src/language/data-io/get-data.c:446 msgid "In compatible syntax mode, the QUALIFIER string must contain exactly one character." msgstr "In compatibele syntaxmodus, dient de QUALIFIER tekenreeks precies één teken te bevatten." -#: src/language/data-io/get-data.c:462 -msgid "expecting VARIABLES" -msgstr "VARIABLES verwacht" - -#: src/language/data-io/get-data.c:484 +#: src/language/data-io/get-data.c:483 #: src/language/data-io/placement-parser.c:378 #, c-format msgid "The record number specified, %ld, is at or before the previous record, %d. Data fields must be listed in order of increasing record number." msgstr "Het opgegeven recordnummer, %ld, is op of voor het huidige record, %d. Gegevensvelden dienen opgegeven te worden in oplopende recordnummer volgorde." -#: src/language/data-io/get-data.c:493 +#: src/language/data-io/get-data.c:492 #, c-format msgid "The record number specified, %ld, exceeds the number of records per case specified on FIXCASE, %d." msgstr "Het gespecificeerde recordnummer, %ld, overschrijdt het aantal records per case zoals gespecificeerd in FIXCASE, %d." -#: src/language/data-io/get.c:99 -msgid "expecting COMM or TAPE" -msgstr "COMM of TAPE verwacht" - #: src/language/data-io/inpt-pgm.c:130 msgid "Unexpected end-of-file within INPUT PROGRAM." msgstr "Onverwacht einde-bestand binnen INPUT PROGRAM." @@ -3131,10 +3458,6 @@ msgstr "Onverwacht einde-bestand binnen INPUT PROGRAM." msgid "Input program did not create any variables." msgstr "Invoerprogramma heeft geen variabelen gecreëerd." -#: src/language/data-io/inpt-pgm.c:288 -msgid "COLUMN subcommand multiply specified." -msgstr "COLUMN-subopdracht meerdere keren gespecificeerd." - #: src/language/data-io/inpt-pgm.c:338 msgid "REREAD: Column numbers must be positive finite numbers. Column set to 1." msgstr "REREAD: Kolomnummers moeten positieve eindige nummers zijn. Kolom is op 1 gezet." @@ -3197,16 +3520,21 @@ msgid_plural "Writing %zu records." msgstr[0] "Schrijven van %zu record." msgstr[1] "Schrijven van %zu records." -#: src/language/data-io/save.c:223 src/language/data-io/save.c:238 -#: src/language/data-io/save.c:266 +#: src/language/data-io/save-translate.c:164 +#: src/language/data-io/save-translate.c:178 #, c-format -msgid "expecting %s or %s" -msgstr "%s of %s verwacht" +msgid "The %s string must contain exactly one character." +msgstr "De %s tekenreeks dient exact één teken te bevatten." + +#: src/language/data-io/save-translate.c:248 +#, c-format +msgid "Output file `%s' exists but REPLACE was not specified." +msgstr "" #: src/language/data-io/trim.c:88 #, c-format -msgid "Cannot rename %s as %s because there already exists a variable named %s. To rename variables with overlapping names, use a single RENAME subcommand such as \"/RENAME (A=B)(B=C)(C=A)\", or equivalently, \"/RENAME (A B C=B C A)\"." -msgstr "Kan %s niet hernoemen naar %s omdat er al een variabele met de naam %s bestaat. Om variabelen met overlappende naam te hernoemen gebruik een enkel RENAME-subopdracht zoals \"/RENAME (A=B)(B=C)(C=A)\", of equivalent achtig, \"/RENAME (A B C=B C A)\"." +msgid "Cannot rename %s as %s because there already exists a variable named %s. To rename variables with overlapping names, use a single RENAME subcommand such as `/RENAME (A=B)(B=C)(C=A)', or equivalently, `/RENAME (A B C=B C A)'." +msgstr "Kan %s niet hernoemen naar %s omdat er al een variabele met de naam %s bestaat. Om variabelen met overlappende naam te hernoemen gebruik een enkel RENAME-subopdracht zoals '/RENAME (A=B)(B=C)(C=A)', of equivalent achtig, '/RENAME (A B C=B C A)'." #: src/language/data-io/trim.c:114 msgid "`=' expected after variable list." @@ -3226,47 +3554,49 @@ msgstr "Gevraagde hernoeming dupliceert variabelennaam %s." msgid "Cannot DROP all variables from dictionary." msgstr "Kan niet alle variabelen DROP-en uit woordenboek." -#: src/language/expressions/evaluate.c:155 +#: src/language/expressions/evaluate.c:149 msgid "expecting number or string" msgstr "verwacht nummer of tekenreeks" -#: src/language/expressions/evaluate.c:169 +#: src/language/expressions/evaluate.c:163 #, c-format msgid "Duplicate variable name %s." msgstr "Dubbele variabelennaam %s." -#: src/language/expressions/helpers.c:51 +#: src/language/expressions/helpers.c:38 msgid "One of the arguments to a DATE function is not an integer. The result will be system-missing." msgstr "Een van de variabelen voor een DATE functie is geen integer. Het resultaat zal system-missing zijn." -#: src/language/expressions/helpers.c:73 +#: src/language/expressions/helpers.c:66 msgid "The week argument to DATE.WKYR is not an integer. The result will be system-missing." msgstr "Het week argument voor DATE.WKYR is geen integer. Het resultaat zal system-missing zijn." -#: src/language/expressions/helpers.c:79 +#: src/language/expressions/helpers.c:72 msgid "The week argument to DATE.WKYR is outside the acceptable range of 1 to 53. The result will be system-missing." msgstr "Het week argument voor DATE.WKYR is buiten het acceptabele bereik van 1 tot 53. Het resultaat zal system-missing zijn." -#: src/language/expressions/helpers.c:101 +#: src/language/expressions/helpers.c:94 msgid "The day argument to DATE.YRDAY is not an integer. The result will be system-missing." msgstr "Het dag argument voor DATE.WKYR is geen integer. Het resultaat zal system-missing zijn." -#: src/language/expressions/helpers.c:107 +#: src/language/expressions/helpers.c:100 msgid "The day argument to DATE.YRDAY is outside the acceptable range of 1 to 366. The result will be system-missing." msgstr "Het dag argument voor DATE.WKYR is buiten het acceptabele bereik van 1 tot 366. Het resultaat zal system-missing zijn." -#: src/language/expressions/helpers.c:129 +#: src/language/expressions/helpers.c:122 msgid "The year argument to YRMODA is greater than 47516. The result will be system-missing." msgstr "Het jaar argument voor YRMODA is groter dan 47516. Het resultaat zal system-missing zijn." -#: src/language/expressions/helpers.c:182 +#. TRANSLATORS: Don't translate the the actual unit names `weeks', `days' etc +#. They must remain in their original English. +#: src/language/expressions/helpers.c:177 #, c-format -msgid "Unrecognized date unit \"%.*s\". Valid date units are \"years\", \"quarters\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", and \"seconds\"." -msgstr "Niet-herkende datum eenheid \"%.*s\". Geldige datum eenheden zijn \"years\", \"quarters\", \"months\", \"weeks\", \"days\", \"hours\", \"minutes\", en \"seconds\"." +msgid "Unrecognized date unit `%.*s'. Valid date units are `years', `quarters', `months', `weeks', `days', `hours', `minutes', and `seconds'." +msgstr "Niet-herkende datum eenheid '%.*s'. Geldige datum eenheden zijn 'years', 'quarters', 'months', 'weeks', 'days', 'hours', 'minutes', en 'seconds'." -#: src/language/expressions/helpers.c:332 -msgid "Invalid DATESUM method. Valid choices are \"closest\" and \"rollover\"." -msgstr "Ongeldige DATESUM methode. Geldige keuzes zijn \"closest\" en \"rollover\"." +#: src/language/expressions/helpers.c:327 +msgid "Invalid DATESUM method. Valid choices are `closest' and `rollover'." +msgstr "Ongeldige DATESUM methode. Geldige keuzes zijn 'closest' en 'rollover'." #: src/language/expressions/parse.c:259 #, c-format @@ -3278,133 +3608,139 @@ msgstr "Type ongelijk: expressie heeft type %s, maar een numerieke waarde is hie msgid "Type mismatch: expression has %s type, but a string value is required here." msgstr "Type ongelijk: expressie heeft type %s, maar een tekenreeks waarde is hier vereist." -#: src/language/expressions/parse.c:427 +#: src/language/expressions/parse.c:433 #, c-format msgid "Type mismatch while applying %s operator: cannot convert %s to %s." msgstr "Type ongelijk tijdens het uitvoeren van %s operator: kan %s niet naar %s converteren." -#: src/language/expressions/parse.c:643 -msgid "Chaining relational operators (e.g. \"a < b < c\") will not produce the mathematically expected result. Use the AND logical operator to fix the problem (e.g. \"a < b AND b < c\"). If chaining is really intended, parentheses will disable this warning (e.g. \"(a < b) < c\".)" +#: src/language/expressions/parse.c:649 +msgid "Chaining relational operators (e.g. `a < b < c') will not produce the mathematically expected result. Use the AND logical operator to fix the problem (e.g. `a < b AND b < c'). If chaining is really intended, parentheses will disable this warning (e.g. `(a < b) < c'.)" msgstr "" -#: src/language/expressions/parse.c:744 -msgid "The exponentiation operator (\"**\") is left-associative, even though right-associative semantics are more useful. That is, \"a**b**c\" equals \"(a**b)**c\", not as \"a**(b**c)\". To disable this warning, insert parentheses." +#: src/language/expressions/parse.c:750 +msgid "The exponentiation operator (`**') is left-associative, even though right-associative semantics are more useful. That is, `a**b**c' equals `(a**b)**c', not as `a**(b**c)'. To disable this warning, insert parentheses." msgstr "" -#: src/language/expressions/parse.c:809 +#: src/language/expressions/parse.c:815 #, c-format msgid "Unknown system variable %s." msgstr "Onbekende systeemvariabele %s." -#: src/language/expressions/parse.c:857 +#: src/language/expressions/parse.c:863 #, c-format msgid "Unknown identifier %s." msgstr "Onbekende herkenningsteken %s." -#: src/language/expressions/parse.c:892 -msgid "in expression" -msgstr "in expressie" - -#: src/language/expressions/parse.c:1073 +#: src/language/expressions/parse.c:1076 #, c-format msgid "%s must have at least %d arguments in list." msgstr "%s heeft tenminste %d argumenten nodig in lijst." -#: src/language/expressions/parse.c:1082 +#: src/language/expressions/parse.c:1085 #, c-format -msgid "%s must have even number of arguments in list." +msgid "%s must have an even number of arguments in list." msgstr "%s heeft een even aantal argumenten in lijst nodig." -#: src/language/expressions/parse.c:1085 +#: src/language/expressions/parse.c:1088 #, c-format msgid "%s must have multiple of %d arguments in list." msgstr "%s heeft meerdere %d argumenten in lijst nodig." -#: src/language/expressions/parse.c:1095 +#: src/language/expressions/parse.c:1098 #, c-format msgid "%s function does not accept a minimum valid argument count." msgstr "%s functie accepteert geen minimaal geldige argumenten teller." -#: src/language/expressions/parse.c:1104 +#: src/language/expressions/parse.c:1107 #, c-format msgid "%s requires at least %d valid arguments in list." msgstr "%s vereist tenminste %d geldige argumenten in lijst." -#: src/language/expressions/parse.c:1110 +#: src/language/expressions/parse.c:1113 #, c-format msgid "With %s, using minimum valid argument count of %d does not make sense when passing only %d arguments in list." msgstr "Met %s, heeft het gebruik van de minimum geldige argumenttelling van %d geen zin wanneer een lijst van slechts %d wordt doorgegeven." -#: src/language/expressions/parse.c:1164 +#: src/language/expressions/parse.c:1167 #, c-format msgid "Type mismatch invoking %s as " msgstr "Type ongelijk bij aanroep %s als " -#: src/language/expressions/parse.c:1169 +#: src/language/expressions/parse.c:1172 msgid "Function invocation " msgstr "Functieaanroep " -#: src/language/expressions/parse.c:1171 +#: src/language/expressions/parse.c:1174 msgid " does not match any known function. Candidates are:" msgstr " komt niet overeen met een geldige functie. Kandidaten zijn:" -#: src/language/expressions/parse.c:1201 +#: src/language/expressions/parse.c:1204 #, c-format msgid "No function or vector named %s." msgstr "Geen functie of vector genaamd %s." -#: src/language/expressions/parse.c:1244 +#: src/language/expressions/parse.c:1247 #, c-format msgid "expecting `,' or `)' invoking %s function" msgstr "verwacht ',' of ')' bij aanroep %s functie" -#: src/language/expressions/parse.c:1264 +#: src/language/expressions/parse.c:1267 #, c-format msgid "%s is a PSPP extension." msgstr "%s is een PSPP extensie." -#: src/language/expressions/parse.c:1273 +#: src/language/expressions/parse.c:1276 #, c-format msgid "%s may not appear after TEMPORARY." msgstr "%s mag niet voorkomen na TEMPORARY." -#: src/libpspp/hash.c:545 -#, c-format -msgid "hash table:" -msgstr "hash-tabel:" - -#: src/libpspp/message.c:128 -msgid "error" -msgstr "fout" - -#: src/libpspp/message.c:131 -msgid "warning" -msgstr "waarschuwing" - -#: src/libpspp/message.c:135 -msgid "note" -msgstr "aantekening" - -#: src/libpspp/tmpfile.c:56 +#: src/libpspp/ext-array.c:56 msgid "failed to create temporary file" msgstr "aanmaken van tijdelijk bestand is mislukt" -#: src/libpspp/tmpfile.c:97 +#: src/libpspp/ext-array.c:96 msgid "seeking in temporary file" msgstr "zoeken in tijdelijk bestand" -#: src/libpspp/tmpfile.c:116 +#: src/libpspp/ext-array.c:115 msgid "reading temporary file" msgstr "lezen tijdelijk bestand" -#: src/libpspp/tmpfile.c:118 +#: src/libpspp/ext-array.c:117 msgid "unexpected end of file reading temporary file" msgstr "onverwacht einde-bestand bij het lezen van tijdelijk bestand" -#: src/libpspp/tmpfile.c:137 +#: src/libpspp/ext-array.c:136 msgid "writing to temporary file" msgstr "schrijven naar tijdelijk bestand" +#: src/libpspp/message.c:145 +msgid "error" +msgstr "fout" + +#: src/libpspp/message.c:148 +msgid "warning" +msgstr "waarschuwing" + +#: src/libpspp/message.c:152 +msgid "note" +msgstr "aantekening" + +#: src/libpspp/message.c:251 +#, c-format +msgid "Notes (%d) exceed limit (%d). Suppressing further notes." +msgstr "Notities (%d) overschrijdt limiet (%d). Onderdruk verdere notitties." + +#: src/libpspp/message.c:259 +#, fuzzy, c-format +msgid "Warnings (%d) exceed limit (%d). Syntax processing will be halted." +msgstr "Notities (%d) overschrijdt limiet (%d). Onderdruk verdere notitties." + +#: src/libpspp/message.c:262 +#, fuzzy, c-format +msgid "Errors (%d) exceed limit (%d). Syntax processing will be halted." +msgstr "Notities (%d) overschrijdt limiet (%d). Onderdruk verdere notitties." + #: src/libpspp/zip-writer.c:91 #, c-format msgid "%s: error opening output file" @@ -3435,32 +3771,32 @@ msgstr "Empirisch" msgid "Empirical with averaging" msgstr "Empirisch met gemiddelde" -#: src/output/ascii.c:278 +#: src/output/ascii.c:279 #, c-format msgid "%s: %s must be positive integer or `auto'" msgstr "%s: %s dient positief integer of 'auto' te zijn" -#: src/output/ascii.c:311 +#: src/output/ascii.c:312 #, c-format msgid "ascii: page excluding margins and headers must be at least %d characters wide by %d lines long, but as configured is only %d characters by %d lines" msgstr "ascii: pagina exclusief marges en koppen moet tenminste %d tekens breed en %d regels lang zijn, maar geconfigureerd is slechts %d tekens bij %d regels" -#: src/output/ascii.c:360 +#: src/output/ascii.c:361 #, c-format -msgid "ascii: closing output file \"%s\"" -msgstr "ascii: sluiten uitvoerbestand \"%s\"" +msgid "ascii: closing output file `%s'" +msgstr "ascii: sluiten uitvoerbestand '%s'" -#: src/output/ascii.c:503 +#: src/output/ascii.c:504 #, c-format msgid "See %s for a chart." msgstr "Zie %s voor een diagram." -#: src/output/ascii.c:806 +#: src/output/ascii.c:807 #, c-format -msgid "ascii: opening output file \"%s\"" -msgstr "ascii: openen uitvoerbestand \"%s\"" +msgid "ascii: opening output file `%s'" +msgstr "ascii: openen uitvoerbestand '%s'" -#: src/output/ascii.c:913 src/output/cairo.c:784 +#: src/output/ascii.c:914 #, c-format msgid "%s - Page %d" msgstr "%s - Pagina %d" @@ -3468,27 +3804,33 @@ msgstr "%s - Pagina %d" #: src/output/csv.c:87 src/output/html.c:106 src/output/journal.c:93 #: src/output/msglog.c:66 #, c-format -msgid "error opening output file \"%s\"" -msgstr "fout tijdens openen uitvoerbestand \"%s\"" +msgid "error opening output file `%s'" +msgstr "fout tijdens openen uitvoerbestand '%s'" -#: src/output/driver.c:330 +#. TRANSLATORS: Don't translate the words `terminal' or `listing'. +#: src/output/driver.c:331 #, c-format -msgid "%s is not a valid device type (the choices are \"terminal\" and \"listing\")" -msgstr "%s is geen valide apparaattype (de keuzes zijn \"terminal\" en \"listing\")" +msgid "%s is not a valid device type (the choices are `terminal' and `listing')" +msgstr "%s is geen valide apparaattype (de keuzes zijn 'terminal' en 'listing')" -#: src/output/driver.c:343 +#: src/output/driver.c:344 #, c-format -msgid "%s: unknown option \"%s\"" -msgstr "%s: onbekende optie \"%s\"" +msgid "%s: unknown option `%s'" +msgstr "%s: onbekende optie '%s'" #: src/output/html.c:114 msgid "PSPP Output" msgstr "PSPP-uitvoer" +#: src/output/html.c:258 +#, fuzzy +msgid "No description" +msgstr "Omschrijving" + #: src/output/journal.c:67 #, c-format -msgid "error writing output file \"%s\"" -msgstr "fout bij schrijven van \"%s\"" +msgid "error writing output file `%s'" +msgstr "fout bij schrijven van '%s'" #: src/output/measure.c:65 #, c-format @@ -3507,58 +3849,58 @@ msgstr "onbekend papiertype '%.*s'" #: src/output/measure.c:248 #, c-format -msgid "error opening input file \"%s\"" -msgstr "fout tijdens openen \"%s\" " +msgid "error opening input file `%s'" +msgstr "fout tijdens openen '%s' " #: src/output/measure.c:259 #, c-format -msgid "error reading file \"%s\"" -msgstr "fout tijdens lezen \"%s\"" +msgid "error reading file `%s'" +msgstr "fout tijdens lezen '%s'" #: src/output/measure.c:276 #, c-format -msgid "paper size file \"%s\" does not state a paper size" -msgstr "papier grootte bestand \"%s\" geeft geen papier grootte aan" +msgid "paper size file `%s' does not state a paper size" +msgstr "papier grootte bestand '%s' geeft geen papier grootte aan" #: src/output/options.c:113 #, c-format -msgid "%s: \"%s\" is \"%s\" but a Boolean value is required" -msgstr "%s: \"%s\" is \"%s\" maar een Boolean waarde is noodzakelijk" +msgid "%s: `%s' is `%s' but a Boolean value is required" +msgstr "%s: '%s' is '%s' maar een Boolean waarde is noodzakelijk" #: src/output/options.c:188 #, c-format -msgid "%s: \"%s\" is \"%s\" but one of the following is required: %s" -msgstr "%s: \"%s\" is \"%s\" maar een van de volgende is noodzakelijk: %s" +msgid "%s: `%s' is `%s' but one of the following is required: %s" +msgstr "%s: '%s' is '%s' maar een van de volgende is noodzakelijk: %s" #: src/output/options.c:232 #, c-format -msgid "%s: \"%s\" is \"%s\" but a nonnegative integer is required" -msgstr "%s: \"%s\" is \"%s\" maar een niet negatieve integer is noodzakelijk" +msgid "%s: `%s' is `%s' but a nonnegative integer is required" +msgstr "%s: '%s' is '%s' maar een niet negatieve integer is noodzakelijk" #: src/output/options.c:236 #, c-format -msgid "%s: \"%s\" is \"%s\" but a positive integer is required" -msgstr "%s: \"%s\" is \"%s\" maar een positieve integer is noodzakelijk" +msgid "%s: `%s' is `%s' but a positive integer is required" +msgstr "%s: '%s' is '%s' maar een positieve integer is noodzakelijk" #: src/output/options.c:239 #, c-format -msgid "%s: \"%s\" is \"%s\" but an integer is required" -msgstr "%s: \"%s\" is \"%s\" maar een integer is noodzakelijk" +msgid "%s: `%s' is `%s' but an integer is required" +msgstr "%s: '%s' is '%s' maar een integer is noodzakelijk" #: src/output/options.c:242 #, c-format -msgid "%s: \"%s\" is \"%s\" but an integer greater than %d is required" -msgstr "%s: \"%s\" is \"%s\" maar een integer groter dan %d is noodzakelijk" +msgid "%s: `%s' is `%s' but an integer greater than %d is required" +msgstr "%s: '%s' is '%s' maar een integer groter dan %d is noodzakelijk" #: src/output/options.c:247 #, c-format -msgid "%s: \"%s\" is \"%s\" but an integer between %d and %d is required" -msgstr "%s: \"%s\" is \"%s\" maar een integer tussen %d en %d is noodzakelijk" +msgid "%s: `%s' is `%s' but an integer between %d and %d is required" +msgstr "%s: '%s' is '%s' maar een integer tussen %d en %d is noodzakelijk" #: src/output/options.c:326 #, c-format -msgid "%s: \"%s\" is \"%s\" but a file name that contains \"#\" is required." -msgstr "%s: \"%s\" is \"%s\" maar een bestandsnaam die \"#\" bevat is noodzakelijk." +msgid "%s: `%s' is `%s' but a file name that contains `#' is required." +msgstr "%s: '%s' is '%s' maar een bestandsnaam die '#' bevat is noodzakelijk." #: src/output/tab.c:206 #, c-format @@ -3575,42 +3917,42 @@ msgstr "" msgid "bad box: (%d+%d=%d,%d+%d=%d)-(%d+%d=%d,%d+%d=%d) in table size (%d,%d)\n" msgstr "" -#: src/output/cairo.c:295 +#: src/output/cairo.c:193 #, c-format -msgid "error opening output file \"%s\": %s" -msgstr "fout tijdens openen uitvoerbestand \"%s\": %s" +msgid "`%s': bad font specification" +msgstr "'%s': slechte fontspecificatie" -#: src/output/cairo.c:312 +#: src/output/cairo.c:357 +#, c-format +msgid "error opening output file `%s': %s" +msgstr "fout tijdens openen uitvoerbestand '%s': %s" + +#: src/output/cairo.c:374 #, c-format msgid "The defined page is not wide enough to hold at least %d characters in the default font. In fact, there's only room for %d characters." msgstr "De gedefinieerde pagina is niet breed om ten minste %d tekens in het standaard font te bevatten. In feite is er slechts plaats voor %d tekens." -#: src/output/cairo.c:322 +#: src/output/cairo.c:384 #, c-format -msgid "The defined page is not long enough to hold margins and headers, plus least %d lines of the default fonts. In fact, there's only room for %d lines." -msgstr "De gedefinieerde pagina is niet lang genoeg om marges en koppen, plus tenminste %d regels van het standaard font te bevatten. In feite is er slechts plaats voor %d regels." +msgid "The defined page is not long enough to hold at least %d lines in the default font. In fact, there's only room for %d lines." +msgstr "De gedefinieerde pagina is niet lang genoeg om tenminste %d regels van het standaard font te bevatten. In feite is er slechts plaats voor %d regels." -#: src/output/cairo.c:376 +#: src/output/cairo.c:435 #, c-format msgid "error drawing output for %s driver: %s" msgstr "fout tijdens tekenen uitvoer voor %s driver: %s " -#: src/output/cairo.c:864 +#: src/output/cairo.c:1041 #, c-format -msgid "\"%s\": bad font specification" -msgstr "\"%s\": slechte fontspecificatie" - -#: src/output/cairo.c:1084 -#, c-format -msgid "error writing output file \"%s\": %s" -msgstr "fout tijdens schrijven uitvoerbestand \"%s\": %s" +msgid "error writing output file `%s': %s" +msgstr "fout tijdens schrijven uitvoerbestand '%s': %s" #: src/output/charts/np-plot-cairo.c:37 #, c-format msgid "Normal Q-Q Plot of %s" msgstr "Normal Q-Q Plot van %s" -#: src/output/charts/np-plot-cairo.c:38 src/output/charts/np-plot-cairo.c:66 +#: src/output/charts/np-plot-cairo.c:38 src/output/charts/np-plot-cairo.c:65 msgid "Observed Value" msgstr "Waargenomen Waarde" @@ -3623,7 +3965,7 @@ msgstr "" msgid "Detrended Normal Q-Q Plot of %s" msgstr "Detrended Normal Q-Q Plot van %s" -#: src/output/charts/np-plot-cairo.c:67 +#: src/output/charts/np-plot-cairo.c:66 msgid "Dev from Normal" msgstr "" @@ -3648,55 +3990,91 @@ msgstr "" msgid "Eigenvalue" msgstr "" -#: src/output/odt.c:93 +#: src/output/odt.c:94 msgid "error creating temporary file" msgstr "fout tijdens aanmaken tijdelijk bestand" -#: src/ui/source-init-opts.c:78 -msgid "Algorithm must be either \"compatible\" or \"enhanced\"." -msgstr "Algoritme moet of \"compatible\" of \"enhanced\" zijn." +#: src/ui/source-init-opts.c:80 +msgid "Algorithm must be either `compatible' or `enhanced'." +msgstr "Algoritme moet of 'compatible' of 'enhanced' zijn." -#: src/ui/source-init-opts.c:103 -msgid "Syntax must be either \"compatible\" or \"enhanced\"." -msgstr "Syntax moet of \"compatible\" of \"enhanced\" zijn." +#: src/ui/source-init-opts.c:107 +msgid "Syntax must be either `compatible' or `enhanced'." +msgstr "Syntax moet of 'compatible' of 'enhanced' zijn." -#: src/ui/terminal/main.c:128 +#: src/ui/terminal/main.c:146 msgid "Stopping syntax file processing here to avoid a cascade of dependent command failures." msgstr "Stop syntaxbestand uitvoering hier om een cascade van afhankelijke opdrachtfouten te voorkomen." -#: src/ui/terminal/msg-ui.c:127 -#, c-format -msgid "Notes (%d) exceed limit (%d). Suppressing further notes." -msgstr "Notities (%d) overschrijdt limiet (%d). Onderdruk verdere notitties." - -#: src/ui/terminal/msg-ui.c:135 -#, c-format -msgid "Warnings (%d) exceed limit (%d)." -msgstr "Waarschuwingen (%d) overschrijden limiet (%d)." - -#: src/ui/terminal/msg-ui.c:138 -#, c-format -msgid "Errors (%d) exceed limit (%d)." -msgstr "Fouten (%d) overschrijden limiet (%d)." - -#: src/ui/terminal/terminal.c:72 +#: src/ui/terminal/terminal.c:62 #, c-format msgid "could not access definition for terminal `%s'" msgstr "kon definitie voor terminal '%s' niet benaderen" -#: src/ui/terminal/terminal-opts.c:119 +#: src/ui/terminal/terminal-opts.c:120 #, c-format msgid "%s: output option missing `='" msgstr "%s: ontbrekende uitvoer-optie '='" -#: src/ui/terminal/terminal-opts.c:126 +#: src/ui/terminal/terminal-opts.c:127 #, c-format msgid "%s: output option specified more than once" msgstr "%s: uitvoer-optie meer dan 1 keer gespecificeerd" -#: src/ui/gui/checkbox-treeview.c:92 src/language/stats/crosstabs.q:1213 -#: src/language/stats/crosstabs.q:1240 src/language/stats/crosstabs.q:1263 -#: src/language/stats/crosstabs.q:1287 src/language/stats/examine.q:1638 +#: src/ui/terminal/terminal-opts.c:187 +#, c-format +msgid "" +"PSPP, a program for statistical analysis of sample data.\n" +"Usage: %s [OPTION]... FILE...\n" +"\n" +"Arguments to long options also apply to equivalent short options.\n" +"\n" +"Output options:\n" +" -o, --output=FILE output to FILE, default format from FILE's name\n" +" -O format=FORMAT override format for previous -o\n" +" -O OPTION=VALUE set output option to customize previous -o\n" +" -O device={terminal|listing} override device type for previous -o\n" +" -e, --error-file=FILE append errors, warnings, and notes to FILE\n" +" --no-output disable default output driver\n" +"Supported output formats: %s\n" +"\n" +"Language options:\n" +" -I, --include=DIR append DIR to search path\n" +" -I-, --no-include clear search path\n" +" -r, --no-statrc disable running rc file at startup\n" +" -a, --algorithm={compatible|enhanced}\n" +" set to `compatible' if you want output\n" +" calculated from broken algorithms\n" +" -x, --syntax={compatible|enhanced}\n" +" set to `compatible' to disable PSPP extensions\n" +" -i, --interactive interpret syntax in interactive mode\n" +" -s, --safer don't allow some unsafe operations\n" +"Default search path:%s\n" +"\n" +"Informative output:\n" +" -h, --help display this help and exit\n" +" -V, --version output version information and exit\n" +"\n" +"Non-option arguments are interpreted as syntax files to execute.\n" +msgstr "" + +#: src/ui/gui/aggregate-dialog.c:162 +msgid "Aggregate destination file" +msgstr "Aggregatie doelbestand" + +#: src/ui/gui/aggregate-dialog.c:173 src/ui/gui/psppire-data-window.c:403 +#: src/ui/gui/psppire-data-window.c:615 +msgid "System Files (*.sav)" +msgstr "Systeembestanden (*.sav)" + +#: src/ui/gui/aggregate-dialog.c:179 src/ui/gui/psppire-data-window.c:409 +#: src/ui/gui/psppire-data-window.c:621 +msgid "Portable Files (*.por) " +msgstr "Overdraagbaar (Portable) bestanden (*.por)" + +#: src/ui/gui/checkbox-treeview.c:92 src/language/stats/crosstabs.q:1205 +#: src/language/stats/crosstabs.q:1232 src/language/stats/crosstabs.q:1255 +#: src/language/stats/crosstabs.q:1279 src/language/stats/examine.q:1638 msgid "Statistic" msgstr "Statistiek" @@ -3709,7 +4087,7 @@ msgstr "Kolomnummer: %d" msgid "Chisq" msgstr "Chisq" -#: src/ui/gui/crosstabs-dialog.c:42 src/language/stats/crosstabs.q:1774 +#: src/ui/gui/crosstabs-dialog.c:42 src/language/stats/crosstabs.q:1768 msgid "Phi" msgstr "Phi" @@ -3717,7 +4095,7 @@ msgstr "Phi" msgid "CC" msgstr "CC" -#: src/ui/gui/crosstabs-dialog.c:44 src/language/stats/crosstabs.q:1912 +#: src/ui/gui/crosstabs-dialog.c:44 src/language/stats/crosstabs.q:1906 msgid "Lambda" msgstr "Lambda" @@ -3737,7 +4115,7 @@ msgstr "CTau" msgid "Risk" msgstr "" -#: src/ui/gui/crosstabs-dialog.c:49 src/language/stats/crosstabs.q:1779 +#: src/ui/gui/crosstabs-dialog.c:49 src/language/stats/crosstabs.q:1773 msgid "Gamma" msgstr "Gamma" @@ -3745,11 +4123,11 @@ msgstr "Gamma" msgid "D" msgstr "D" -#: src/ui/gui/crosstabs-dialog.c:51 src/language/stats/crosstabs.q:1782 +#: src/ui/gui/crosstabs-dialog.c:51 src/language/stats/crosstabs.q:1776 msgid "Kappa" msgstr "Kappa" -#: src/ui/gui/crosstabs-dialog.c:52 src/language/stats/crosstabs.q:1916 +#: src/ui/gui/crosstabs-dialog.c:52 src/language/stats/crosstabs.q:1910 msgid "Eta" msgstr "Eta" @@ -3788,10 +4166,6 @@ msgstr "" msgid "Adjusted Std. Residual" msgstr "" -#: src/ui/gui/descriptives-dialog.c:41 src/ui/gui/frequencies-dialog.c:42 -msgid "Standard deviation" -msgstr "Standaarddeviatie" - #: src/ui/gui/descriptives-dialog.c:46 msgid "Standard error" msgstr "Standaardfout" @@ -3827,10 +4201,6 @@ msgstr "" msgid "Median" msgstr "Mediaan" -#: src/ui/gui/helper.c:197 -msgid "Sorry. The help system hasn't yet been implemented." -msgstr "Sorry. Het hulp systeem is nog niet geïmplementeerd." - #: src/ui/gui/help-menu.c:67 msgid "A program for the analysis of sampled data" msgstr "Een programma voor de analyse van bemonsterde gegevens" @@ -3843,8 +4213,8 @@ msgstr "Harry Thijssen" #: src/ui/gui/help-menu.c:98 #, c-format -msgid "Cannot open reference manual: %s. The PSPP user manual is also available at http://www.gnu.org/software/pspp/documentation.html" -msgstr "Kan de handleiding niet openen: %s. De PSPP gebruikers handleiding is ook beschikbaar op http://www.gnu.org/software/pspp/documentation.html" +msgid "Cannot open reference manual: %s. The PSPP user manual is also available at %s" +msgstr "Kan de handleiding niet openen: %s. De PSPP gebruikers handleiding is ook beschikbaar op %s" #: src/ui/gui/help-menu.c:117 msgid "_Help" @@ -3854,6 +4224,36 @@ msgstr "_Hulp" msgid "_Reference Manual" msgstr "_Handleiding" +#: src/ui/gui/main.c:99 +#, c-format +msgid "" +"PSPPIRE, a GUI for PSPP, a program for statistical analysis of sample data.\n" +"Usage: %s [OPTION]... FILE\n" +"\n" +"Arguments to long options also apply to equivalent short options.\n" +"\n" +"GUI options:\n" +" -q, --no-splash don't show splash screen during startup\n" +"\n" +"%sLanguage options:\n" +" -I, --include=DIR append DIR to search path\n" +" -I-, --no-include clear search path\n" +" -a, --algorithm={compatible|enhanced}\n" +" set to `compatible' if you want output\n" +" calculated from broken algorithms\n" +" -x, --syntax={compatible|enhanced}\n" +" set to `compatible' to disable PSPP extensions\n" +" -i, --interactive interpret syntax in interactive mode\n" +" -s, --safer don't allow some unsafe operations\n" +"Default search path:%s\n" +"\n" +"Informative output:\n" +" -h, --help display this help and exit\n" +" -V, --version output version information and exit\n" +"\n" +"A non-option argument is interpreted as a .sav or .por file to load.\n" +msgstr "" + #: src/ui/gui/missing-val-dialog.c:113 src/ui/gui/missing-val-dialog.c:167 msgid "Incorrect value for variable type" msgstr "Onjuiste waarde voor variabelentype" @@ -3887,140 +4287,161 @@ msgstr "Variabelenweergave" msgid "var" msgstr "var" -#: src/ui/gui/psppire-data-window.c:212 +#: src/ui/gui/psppire-data-window.c:213 msgid "Transformations Pending" msgstr "Transformaties uitstaand" -#: src/ui/gui/psppire-data-window.c:228 +#: src/ui/gui/psppire-data-window.c:229 msgid "Filter off" msgstr "Filter uit" -#: src/ui/gui/psppire-data-window.c:242 +#: src/ui/gui/psppire-data-window.c:243 #, c-format msgid "Filter by %s" msgstr "Filter op %s" -#: src/ui/gui/psppire-data-window.c:263 +#: src/ui/gui/psppire-data-window.c:264 msgid "No Split" msgstr "Geen splits" -#: src/ui/gui/psppire-data-window.c:272 +#: src/ui/gui/psppire-data-window.c:273 msgid "Split by " msgstr "Splits op " -#: src/ui/gui/psppire-data-window.c:300 +#: src/ui/gui/psppire-data-window.c:301 msgid "Weights off" msgstr "Weging uit" -#: src/ui/gui/psppire-data-window.c:314 +#: src/ui/gui/psppire-data-window.c:315 #, c-format msgid "Weight by %s" msgstr "Weeg op %s" -#: src/ui/gui/psppire-data-window.c:382 +#: src/ui/gui/psppire-data-window.c:383 msgid "Open" msgstr "Open" -#: src/ui/gui/psppire-data-window.c:392 +#: src/ui/gui/psppire-data-window.c:393 msgid "Data and Syntax Files" msgstr "Gegevens- en Syntax-bestanden" -#: src/ui/gui/psppire-data-window.c:402 src/ui/gui/psppire-data-window.c:614 -msgid "System Files (*.sav)" -msgstr "Systeembestanden (*.sav)" - -#: src/ui/gui/psppire-data-window.c:408 src/ui/gui/psppire-data-window.c:620 -msgid "Portable Files (*.por) " -msgstr "Overdraagbaar (Portable) bestanden (*.por)" - -#: src/ui/gui/psppire-data-window.c:414 src/ui/gui/psppire-syntax-window.c:292 +#: src/ui/gui/psppire-data-window.c:415 src/ui/gui/psppire-syntax-window.c:501 msgid "Syntax Files (*.sps) " msgstr "Syntaxbestanden (*.sps)" -#: src/ui/gui/psppire-data-window.c:420 src/ui/gui/psppire-data-window.c:626 -#: src/ui/gui/psppire-syntax-window.c:298 +#: src/ui/gui/psppire-data-window.c:421 src/ui/gui/psppire-data-window.c:627 +#: src/ui/gui/psppire-syntax-window.c:507 msgid "All Files" msgstr "Alle bestanden" -#: src/ui/gui/psppire-data-window.c:606 +#: src/ui/gui/psppire-data-window.c:607 src/ui/gui/aggregate.ui:448 msgid "Save" msgstr "Opslaan" -#: src/ui/gui/psppire-data-window.c:639 +#: src/ui/gui/psppire-data-window.c:640 msgid "Portable File" msgstr "Overdraagbaar bestand" -#: src/ui/gui/psppire-data-window.c:776 +#: src/ui/gui/psppire-data-window.c:777 msgid "Font Selection" msgstr "Font selectie" -#: src/ui/gui/psppire-data-window.c:1264 +#. TRANSLATORS: This will form a filename. Please avoid whitespace. +#: src/ui/gui/psppire-data-window.c:1271 +msgid "PSPP-data" +msgstr "" + +#: src/ui/gui/psppire-data-window.c:1272 msgid "Data Editor" msgstr "Gegevensbewerker" -#: src/ui/gui/psppire-output-window.c:458 -msgid "Export Output" -msgstr "Exporteer Uitvoer" +#. TRANSLATORS: This string must be a valid variable name. That means: +#. - The string must be at most 64 bytes (not characters) long. +#. - The string may not contain whitespace. +#. - The first character may not be '$' +#. - The first character may not be a digit +#. - The final charactor may not be '.' or '_' +#. +#: src/ui/gui/psppire-dict.c:366 +#, c-format +msgid "VAR%05d" +msgstr "" -#: src/ui/gui/psppire-output-window.c:466 -#, fuzzy -msgid "PDF Files (*.pdf)" +#: src/ui/gui/psppire-output-window.c:456 +msgid "Infer file type from extension" +msgstr "" + +#: src/ui/gui/psppire-output-window.c:457 +msgid "PDF (*.pdf)" msgstr "PDF (*.pdf)" -#: src/ui/gui/psppire-output-window.c:467 -#, fuzzy -msgid "HTML Files (*.html)" +#: src/ui/gui/psppire-output-window.c:458 +msgid "HTML (*.html)" msgstr "HTML (*.html)" -#: src/ui/gui/psppire-output-window.c:468 -#, fuzzy -msgid "OpenDocument Files (*.odt)" +#: src/ui/gui/psppire-output-window.c:459 +msgid "OpenDocument (*.odt)" msgstr "OpenDocument (*.odt)" -#: src/ui/gui/psppire-output-window.c:469 -#, fuzzy -msgid "Text Files (*.txt)" +#: src/ui/gui/psppire-output-window.c:460 +msgid "Text (*.txt)" msgstr "Text (*.txt)" -#: src/ui/gui/psppire-output-window.c:470 -#, fuzzy -msgid "PostScript Files (*.ps)" +#: src/ui/gui/psppire-output-window.c:461 +msgid "PostScript (*.ps)" msgstr "PostScript (*.ps)" -#: src/ui/gui/psppire-output-window.c:471 -#, fuzzy -msgid "Comma-Separated Value Files (*.csv)" +#: src/ui/gui/psppire-output-window.c:462 +msgid "Comma-Separated Values (*.csv)" msgstr "Komma-Gescheiden-Waarde (*.csv)" -#: src/ui/gui/psppire-output-window.c:605 +#: src/ui/gui/psppire-output-window.c:563 +msgid "Export Output" +msgstr "Exporteer Uitvoer" + +#: src/ui/gui/psppire-output-window.c:817 +msgid "failed to create temporary directory" +msgstr "aanmaken van tijdelijk bestand is mislukt" + +#. TRANSLATORS: This will form a filename. Please avoid whitespace. +#: src/ui/gui/psppire-output-window.c:1048 +msgid "Output" +msgstr "Uitvoer" + +#: src/ui/gui/psppire-output-window.c:1049 msgid "Output Viewer" msgstr "Uitvoer Viewer" -#: src/ui/gui/psppire-syntax-window.c:265 +#: src/ui/gui/psppire-syntax-window.c:474 #, c-format -msgid "Saved file \"%s\"" -msgstr "Opslaan bestand \"%s\"" +msgid "Saved file `%s'" +msgstr "Opslaan bestand '%s'" -#: src/ui/gui/psppire-syntax-window.c:284 +#: src/ui/gui/psppire-syntax-window.c:493 msgid "Save Syntax" msgstr "Sla Syntax op" -#: src/ui/gui/psppire-syntax-window.c:496 +#. TRANSLATORS: This will form a filename. Please avoid whitespace. +#: src/ui/gui/psppire-syntax-window.c:745 +msgid "Syntax" +msgstr "Syntax" + +#: src/ui/gui/psppire-syntax-window.c:746 msgid "Syntax Editor" msgstr "Syntaxbewerker" -#: src/ui/gui/psppire-syntax-window.c:510 +#: src/ui/gui/psppire-syntax-window.c:760 #, c-format -msgid "Cannot load syntax file '%s'" +msgid "Cannot load syntax file `%s'" msgstr "Kan syntaxbestand '%s' niet laden" #: src/ui/gui/psppire-var-sheet.c:535 src/ui/gui/psppire-var-store.c:833 -#: src/language/stats/crosstabs.q:1288 src/ui/gui/psppire.ui:2055 +#: src/language/stats/crosstabs.q:1280 src/ui/gui/compute.ui:599 msgid "Type" msgstr "Type" #: src/ui/gui/psppire-var-sheet.c:536 src/ui/gui/psppire-var-store.c:834 -#: src/ui/gui/psppire.ui:1974 +#: src/ui/gui/compute.ui:517 msgid "Width" msgstr "Breedte" @@ -4033,7 +4454,7 @@ msgid "Values" msgstr "Waardes" #: src/ui/gui/psppire-var-sheet.c:540 src/ui/gui/psppire-var-store.c:838 -#: src/language/stats/crosstabs.q:822 src/language/stats/examine.q:1104 +#: src/language/stats/crosstabs.q:814 src/language/stats/examine.q:1104 #: src/language/stats/frequencies.q:864 src/language/stats/frequencies.q:1036 msgid "Missing" msgstr "Ontbrekend" @@ -4070,46 +4491,56 @@ msgstr "Euro" msgid "Custom" msgstr "Aangepast" +#: src/ui/gui/psppire-var-store.c:755 +#, c-format +msgid "{%s,`%s'}_" +msgstr "" + #: src/ui/gui/psppire-window.c:97 #, c-format msgid "%s %s PSPPIRE %s" msgstr "%s %s PSPPIRE %s" -#: src/ui/gui/psppire-window.c:468 +#. TRANSLATORS: This will form a filename. Please avoid whitespace. +#: src/ui/gui/psppire-window.c:247 +msgid "Untitled" +msgstr "Zonder titel" + +#: src/ui/gui/psppire-window.c:469 #, c-format -msgid "Save the changes to \"%s\" before closing?" -msgstr "Opslaan van de aanpassingen in \"%s\" voor het afsluiten?" +msgid "Save the changes to `%s' before closing?" +msgstr "Opslaan van de aanpassingen in '%s' voor het afsluiten?" -#: src/ui/gui/psppire-window.c:475 +#: src/ui/gui/psppire-window.c:476 #, c-format msgid "If you don't save, changes from the last %ld seconds will be permanently lost." msgstr "Als u niet opslaat zullen de aanpassingen van de laatste %ld seconden permanent verloren gaan." -#: src/ui/gui/psppire-window.c:479 +#: src/ui/gui/psppire-window.c:480 msgid "Close _without saving" msgstr "Sluit _zonder opslaan" -#: src/ui/gui/recode-dialog.c:911 +#: src/ui/gui/recode-dialog.c:887 msgid "Recode into Different Variables" msgstr "Hercodeer in Andere Variabelen" -#: src/ui/gui/recode-dialog.c:914 src/ui/gui/recode.ui:692 +#: src/ui/gui/recode-dialog.c:890 src/ui/gui/recode.ui:692 msgid "Recode into Same Variables" msgstr "Hercodeer in Zelfde Variabelen" -#: src/ui/gui/recode-dialog.c:929 src/ui/gui/recode-dialog.c:1025 +#: src/ui/gui/recode-dialog.c:904 src/ui/gui/recode-dialog.c:1000 msgid "New" msgstr "Nieuw" -#: src/ui/gui/recode-dialog.c:944 src/ui/gui/recode-dialog.c:1017 +#: src/ui/gui/recode-dialog.c:919 src/ui/gui/recode-dialog.c:992 msgid "Old" msgstr "Oud" -#: src/ui/gui/recode-dialog.c:1274 +#: src/ui/gui/recode-dialog.c:1249 msgid "Recode into Different Variables: Old and New Values " msgstr "Hercodeer in Andere Variabelen: Oude en Nieuwe Waardes " -#: src/ui/gui/recode-dialog.c:1275 +#: src/ui/gui/recode-dialog.c:1250 msgid "Recode into Same Variables: Old and New Values" msgstr "Hercodeer in Zelfde Variabelen: Oude en Nieuwe Waardes " @@ -4139,30 +4570,30 @@ msgstr "Ongeveer %3d%% van alle cases." msgid "Exactly %3d cases from the first %3d cases." msgstr "Precies %3d cases van de eerste %3d cases." -#: src/ui/gui/select-cases-dialog.c:223 +#: src/ui/gui/select-cases-dialog.c:222 #, c-format msgid "%d thru %d" msgstr "%d tot %d" #: src/ui/gui/text-data-import-dialog.c:461 #, c-format -msgid "Could not open \"%s\": %s" -msgstr "Kon \"%s\": %s niet openen" +msgid "Could not open `%s': %s" +msgstr "Kon '%s': %s niet openen" #: src/ui/gui/text-data-import-dialog.c:477 #, c-format -msgid "Error reading \"%s\": %s" -msgstr "Fout bij lezen \"%s\": %s" +msgid "Error reading `%s': %s" +msgstr "Fout bij lezen '%s': %s" #: src/ui/gui/text-data-import-dialog.c:480 #, c-format -msgid "Failed to read \"%s\", because it contains a line over %d bytes long and therefore appears not to be a text file." -msgstr "Lezen van \"%s\" mislukt omdat het een regel bevat die meer dan %d bytes lang is en daarom is het geen tekstbestand." +msgid "Failed to read `%s', because it contains a line over %d bytes long and therefore appears not to be a text file." +msgstr "Lezen van '%s' mislukt omdat het een regel bevat die meer dan %d bytes lang is en daarom is het geen tekstbestand." #: src/ui/gui/text-data-import-dialog.c:494 #, c-format -msgid "\"%s\" is empty." -msgstr "\"%s\" is leeg." +msgid "`%s' is empty." +msgstr "'%s' is leeg." #: src/ui/gui/text-data-import-dialog.c:539 msgid "Import Delimited Text Data" @@ -4172,52 +4603,75 @@ msgstr "Importeer Gescheiden Tekstgegevens" msgid "Importing Delimited Text Data" msgstr "Importeren Gescheiden Tekstgegevens" +#: src/ui/gui/text-data-import-dialog.c:739 +#, c-format +msgid "Only the first %4d cases" +msgstr "Alleen de eerste %4d cases" + #: src/ui/gui/text-data-import-dialog.c:749 +#, fuzzy, c-format +msgid "Only the first %3d %% of file (approximately)" +msgstr "% van bestand (ongeveer)" + +#: src/ui/gui/text-data-import-dialog.c:774 msgid "" "This assistant will guide you through the process of importing data into PSPP from a text file with one line per case, in which fields are separated by tabs, commas, or other delimiters.\n" "\n" msgstr "De assistent zal je begeleiden door het proces van het importeren van gegevens in PSPP van een tekstbestand met 1 regel per case, waarin velden zijn gescheiden door tabs, komma's of andere scheidingstekens.\n" -#: src/ui/gui/text-data-import-dialog.c:755 +#: src/ui/gui/text-data-import-dialog.c:780 #, c-format msgid "The selected file contains %zu line of text. " msgid_plural "The selected file contains %zu lines of text. " msgstr[0] "Het geselecteerde bestand bevat %zu regel tekst. " msgstr[1] "Het geselecteerde bestand bevat %zu regels tekst. " -#: src/ui/gui/text-data-import-dialog.c:763 +#: src/ui/gui/text-data-import-dialog.c:788 #, c-format msgid "The selected file contains approximately %lu line of text. " msgid_plural "The selected file contains approximately %lu lines of text. " msgstr[0] "Het geselecteerde bestand bevat ongeveer %lu regel tekst. " msgstr[1] "Het geselecteerde bestand bevat ongeveer %lu regels tekst. " -#: src/ui/gui/text-data-import-dialog.c:769 +#: src/ui/gui/text-data-import-dialog.c:794 #, c-format msgid "Only the first %zu line of the file will be shown for preview purposes in the following screens. " msgid_plural "Only the first %zu lines of the file will be shown for preview purposes in the following screens. " msgstr[0] "Alleen de eerste %zu regel van het bestand worden getoond voor voorbeeld doeleinden in de volgende schermen. " msgstr[1] "Alleen de eerste %zu regels van het bestand worden getoond voor voorbeeld doeleinden in de volgende schermen. " -#: src/ui/gui/text-data-import-dialog.c:776 +#: src/ui/gui/text-data-import-dialog.c:801 msgid "You may choose below how much of the file should actually be imported." msgstr "Hieronder kunt u kiezen hoeveel van het bestand daadwerkelijk geïmporteerd moet worden." -#: src/ui/gui/text-data-import-dialog.c:1523 -#: src/ui/gui/text-data-import-dialog.c:1768 +#: src/ui/gui/text-data-import-dialog.c:884 +msgid "Text" +msgstr "Tekst" + +#: src/ui/gui/text-data-import-dialog.c:1550 +#: src/ui/gui/text-data-import-dialog.c:1794 msgid "This input line has too few separators to fill in this field." msgstr "Deze invoerregel heeft te weinig scheidingstekens om dit veld te vullen." -#: src/ui/gui/text-data-import-dialog.c:1759 -#, c-format -msgid "Field content \"%.*s\" cannot be parsed in format %s." -msgstr "Veldinhoud \"%.*s\" kan niet opgedeeld worden in opmaak %s." +#: src/ui/gui/text-data-import-dialog.c:1785 +#, fuzzy, c-format +msgid "Cannot parse field content `%.*s' as format %s: %s" +msgstr "Veldinhoud '%.*s' kan niet opgedeeld worden in opmaak %s." + +#: src/ui/gui/text-data-import-dialog.c:1938 +msgid "Line" +msgstr "" #: src/ui/gui/t-test-options.c:60 #, c-format msgid "Confidence Interval: %2d %%" msgstr "Betrouwbaarheidsinterval: %2d %%" +#: src/ui/gui/val-labs-dialog.c:515 +#, fuzzy, c-format +msgid "%s = `%s'" +msgstr "%s & %s" + #: src/ui/gui/variable-info-dialog.c:77 #, c-format msgid "Label: %s\n" @@ -4257,27 +4711,27 @@ msgstr "Weeg cases niet" msgid "Weight cases by %s" msgstr "Weeg cases per %s" -#: tests/dissect-sysfile.c:571 +#: tests/dissect-sysfile.c:572 #, c-format msgid "Unrecognized record type 7, subtype %d." msgstr "Niet-herkend recordtype 7, subtype %d." -#: tests/dissect-sysfile.c:850 +#: tests/dissect-sysfile.c:851 #, c-format msgid "%s: Error parsing attribute value %s[%d]" msgstr "%s: Fout bij het ontleden van attribuut waarde %s[%d]" -#: tests/dissect-sysfile.c:856 +#: tests/dissect-sysfile.c:857 #, c-format msgid "%s: Attribute value %s[%d] is not quoted: %s" msgstr "%s: Attribuut waarde %s[%d] is niet geciteerd: %s" -#: tests/dissect-sysfile.c:880 +#: tests/dissect-sysfile.c:881 #, c-format msgid "Bad size %zu for extended number of cases." msgstr "Onjuiste lengte %zu voor vergroot aantal cases." -#: tests/dissect-sysfile.c:886 +#: tests/dissect-sysfile.c:887 #, c-format msgid "Bad count %zu for extended number of cases." msgstr "" @@ -4320,52 +4774,61 @@ msgstr "%s is geen herkende codering of lokale naam" msgid "WIDTH must be at least 40." msgstr "WIDTH moet tenminste 40 zijn." -#: src/language/utilities/set.q:490 +#: src/language/utilities/set.q:494 #, c-format msgid "FORMAT requires numeric output format as an argument. Specified format %s is of type string." msgstr "FORMAT vereist numerieke uitvoeropmaak als een argument. Opgegeven opmaak %s is van het type tekenreeks." -#: src/language/utilities/set.q:707 +#: src/language/utilities/set.q:711 msgid "ISL (32-bit IEEE 754 single, little-endian)" msgstr "ISL (32-bit IEEE 754 single, little-endian)" -#: src/language/utilities/set.q:710 +#: src/language/utilities/set.q:714 msgid "ISB (32-bit IEEE 754 single, big-endian)" msgstr "ISB (32-bit IEEE 754 single, big-endian)" -#: src/language/utilities/set.q:713 +#: src/language/utilities/set.q:717 msgid "IDL (64-bit IEEE 754 double, little-endian)" msgstr "IDL (64-bit IEEE 754 double, little-endian)" -#: src/language/utilities/set.q:716 +#: src/language/utilities/set.q:720 msgid "IDB (64-bit IEEE 754 double, big-endian)" msgstr "IDB (64-bit IEEE 754 double, big-endian)" -#: src/language/utilities/set.q:720 +#: src/language/utilities/set.q:724 msgid "VF (32-bit VAX F, VAX-endian)" msgstr "VF (32-bit VAX F, VAX-endian)" -#: src/language/utilities/set.q:723 +#: src/language/utilities/set.q:727 msgid "VD (64-bit VAX D, VAX-endian)" msgstr "VD (64-bit VAX D, VAX-endian)" -#: src/language/utilities/set.q:726 +#: src/language/utilities/set.q:730 msgid "VG (64-bit VAX G, VAX-endian)" msgstr "VG (64-bit VAX G, VAX-endian)" -#: src/language/utilities/set.q:730 +#: src/language/utilities/set.q:734 msgid "ZS (32-bit IBM Z hexadecimal short, big-endian)" msgstr "ZS (32-bit IBM Z hexadecimal short, big-endian)" -#: src/language/utilities/set.q:733 +#: src/language/utilities/set.q:737 msgid "ZL (64-bit IBM Z hexadecimal long, big-endian)" msgstr "ZL (64-bit IBM Z hexadecimal long, big-endian)" -#: src/language/utilities/set.q:835 +#: src/language/utilities/set.q:839 #, c-format msgid "%s is %s." msgstr "%s van %s." +#: src/language/utilities/set.q:942 +#, c-format +msgid "Too many PRESERVE commands without a RESTORE: at most %d levels of saved settings are allowed." +msgstr "" + +#: src/language/utilities/set.q:961 +msgid "RESTORE without matching PRESERVE." +msgstr "" + #: src/language/stats/crosstabs.q:289 msgid "Missing mode REPORT not allowed in general mode. Assuming MISSING=TABLE." msgstr "Missing modus REPORT niet toegestaan in algemene modus. MISSING=TABLE aangenomen." @@ -4374,236 +4837,210 @@ msgstr "Missing modus REPORT niet toegestaan in algemene modus. MISSING=TABLE a msgid "Too many cross-tabulation variables or dimensions." msgstr "Te veel cross-tabulation variabelen of dimensies." -#: src/language/stats/crosstabs.q:409 -msgid "expecting BY" -msgstr "BY verwacht" - #: src/language/stats/crosstabs.q:466 msgid "VARIABLES must be specified before TABLES." msgstr "VARIABLES dient voor TABLES gespecificeerd te worden." -#: src/language/stats/crosstabs.q:504 +#: src/language/stats/crosstabs.q:500 #, c-format msgid "Maximum value (%ld) less than minimum value (%ld)." msgstr "Maximumwaarde (%ld) is kleiner dan minimumwaarde (%ld)." -#: src/language/stats/crosstabs.q:818 +#: src/language/stats/crosstabs.q:810 msgid "Summary." msgstr "Overzicht." -#: src/language/stats/crosstabs.q:820 src/language/stats/examine.q:1164 -#: src/language/stats/reliability.q:693 -msgid "Cases" -msgstr "Cases" - -#: src/language/stats/crosstabs.q:821 src/language/stats/examine.q:1103 -#: src/language/stats/frequencies.q:1035 src/language/stats/reliability.q:696 -msgid "Valid" -msgstr "Geldig" - -#: src/language/stats/crosstabs.q:831 src/language/stats/examine.q:1179 +#: src/language/stats/crosstabs.q:823 src/language/stats/examine.q:1179 #: src/language/stats/frequencies.q:815 msgid "Percent" msgstr "Percentage" -#: src/language/stats/crosstabs.q:1109 +#: src/language/stats/crosstabs.q:1101 msgid "count" msgstr "aantal" -#: src/language/stats/crosstabs.q:1110 +#: src/language/stats/crosstabs.q:1102 msgid "row %" msgstr "rij %" -#: src/language/stats/crosstabs.q:1111 +#: src/language/stats/crosstabs.q:1103 msgid "column %" msgstr "kolom %" -#: src/language/stats/crosstabs.q:1112 +#: src/language/stats/crosstabs.q:1104 msgid "total %" msgstr "totaal %" -#: src/language/stats/crosstabs.q:1113 +#: src/language/stats/crosstabs.q:1105 msgid "expected" msgstr "verwacht" -#: src/language/stats/crosstabs.q:1114 +#: src/language/stats/crosstabs.q:1106 msgid "residual" msgstr "overblijvend" -#: src/language/stats/crosstabs.q:1115 +#: src/language/stats/crosstabs.q:1107 msgid "std. resid." msgstr "" -#: src/language/stats/crosstabs.q:1116 +#: src/language/stats/crosstabs.q:1108 msgid "adj. resid." msgstr "" -#: src/language/stats/crosstabs.q:1210 +#: src/language/stats/crosstabs.q:1202 msgid "Chi-square tests." msgstr "Chi-square tests." -#: src/language/stats/crosstabs.q:1217 -msgid "Asymp. Sig. (2-sided)" -msgstr "" - -#: src/language/stats/crosstabs.q:1219 -msgid "Exact Sig. (2-sided)" -msgstr "" - -#: src/language/stats/crosstabs.q:1221 -msgid "Exact Sig. (1-sided)" -msgstr "" - -#: src/language/stats/crosstabs.q:1236 +#: src/language/stats/crosstabs.q:1228 msgid "Symmetric measures." msgstr "Symmetrische metingen." -#: src/language/stats/crosstabs.q:1242 src/language/stats/crosstabs.q:1290 +#: src/language/stats/crosstabs.q:1234 src/language/stats/crosstabs.q:1282 msgid "Asymp. Std. Error" msgstr "" -#: src/language/stats/crosstabs.q:1243 src/language/stats/crosstabs.q:1291 +#: src/language/stats/crosstabs.q:1235 src/language/stats/crosstabs.q:1283 msgid "Approx. T" msgstr "" -#: src/language/stats/crosstabs.q:1244 src/language/stats/crosstabs.q:1292 +#: src/language/stats/crosstabs.q:1236 src/language/stats/crosstabs.q:1284 msgid "Approx. Sig." msgstr "" -#: src/language/stats/crosstabs.q:1258 +#: src/language/stats/crosstabs.q:1250 msgid "Risk estimate." msgstr "" -#: src/language/stats/crosstabs.q:1262 +#: src/language/stats/crosstabs.q:1254 #, c-format msgid "95%% Confidence Interval" msgstr "95%% Betrouwbaarheidsinterval" -#: src/language/stats/crosstabs.q:1265 src/language/stats/t-test.q:756 +#: src/language/stats/crosstabs.q:1257 src/language/stats/t-test.q:756 #: src/language/stats/t-test.q:920 src/language/stats/t-test.q:1013 msgid "Lower" msgstr "Lager" -#: src/language/stats/crosstabs.q:1266 src/language/stats/t-test.q:757 +#: src/language/stats/crosstabs.q:1258 src/language/stats/t-test.q:757 #: src/language/stats/t-test.q:921 src/language/stats/t-test.q:1014 msgid "Upper" msgstr "Hoger" -#: src/language/stats/crosstabs.q:1283 +#: src/language/stats/crosstabs.q:1275 msgid "Directional measures." msgstr "Directionele metingen." -#: src/language/stats/crosstabs.q:1708 +#: src/language/stats/crosstabs.q:1702 msgid "Pearson Chi-Square" msgstr "Pearson Chi-Square" -#: src/language/stats/crosstabs.q:1709 +#: src/language/stats/crosstabs.q:1703 msgid "Likelihood Ratio" msgstr "Waarschijnlijkheidsratio" -#: src/language/stats/crosstabs.q:1710 +#: src/language/stats/crosstabs.q:1704 msgid "Fisher's Exact Test" msgstr "Fisher's Exact Test" -#: src/language/stats/crosstabs.q:1711 +#: src/language/stats/crosstabs.q:1705 msgid "Continuity Correction" msgstr "Continuïteitscorrectie" -#: src/language/stats/crosstabs.q:1712 +#: src/language/stats/crosstabs.q:1706 msgid "Linear-by-Linear Association" msgstr "" -#: src/language/stats/crosstabs.q:1747 src/language/stats/crosstabs.q:1822 -#: src/language/stats/crosstabs.q:1887 +#: src/language/stats/crosstabs.q:1741 src/language/stats/crosstabs.q:1816 +#: src/language/stats/crosstabs.q:1881 msgid "N of Valid Cases" msgstr "" -#: src/language/stats/crosstabs.q:1766 src/language/stats/crosstabs.q:1905 +#: src/language/stats/crosstabs.q:1760 src/language/stats/crosstabs.q:1899 msgid "Nominal by Nominal" msgstr "" -#: src/language/stats/crosstabs.q:1767 src/language/stats/crosstabs.q:1906 +#: src/language/stats/crosstabs.q:1761 src/language/stats/crosstabs.q:1900 msgid "Ordinal by Ordinal" msgstr "" -#: src/language/stats/crosstabs.q:1768 +#: src/language/stats/crosstabs.q:1762 msgid "Interval by Interval" msgstr "" -#: src/language/stats/crosstabs.q:1769 +#: src/language/stats/crosstabs.q:1763 msgid "Measure of Agreement" msgstr "" -#: src/language/stats/crosstabs.q:1775 +#: src/language/stats/crosstabs.q:1769 msgid "Cramer's V" msgstr "Cramer's V" -#: src/language/stats/crosstabs.q:1776 +#: src/language/stats/crosstabs.q:1770 msgid "Contingency Coefficient" msgstr "" -#: src/language/stats/crosstabs.q:1777 +#: src/language/stats/crosstabs.q:1771 msgid "Kendall's tau-b" msgstr "Kendall's tau-b" -#: src/language/stats/crosstabs.q:1778 +#: src/language/stats/crosstabs.q:1772 msgid "Kendall's tau-c" msgstr "Kendall's tau-c" -#: src/language/stats/crosstabs.q:1780 +#: src/language/stats/crosstabs.q:1774 msgid "Spearman Correlation" msgstr "Spearman Correlatie" -#: src/language/stats/crosstabs.q:1781 +#: src/language/stats/crosstabs.q:1775 msgid "Pearson's R" msgstr "Pearson's R" -#: src/language/stats/crosstabs.q:1860 +#: src/language/stats/crosstabs.q:1854 #, c-format msgid "Odds Ratio for %s (%g / %g)" msgstr "" -#: src/language/stats/crosstabs.q:1863 +#: src/language/stats/crosstabs.q:1857 #, c-format msgid "Odds Ratio for %s (%.*s / %.*s)" msgstr "" -#: src/language/stats/crosstabs.q:1871 +#: src/language/stats/crosstabs.q:1865 #, c-format msgid "For cohort %s = %g" msgstr "Voor cohort %s = %g" -#: src/language/stats/crosstabs.q:1874 +#: src/language/stats/crosstabs.q:1868 #, c-format msgid "For cohort %s = %.*s" msgstr "Voor cohort %s = %.*s" -#: src/language/stats/crosstabs.q:1907 +#: src/language/stats/crosstabs.q:1901 msgid "Nominal by Interval" msgstr "" -#: src/language/stats/crosstabs.q:1913 +#: src/language/stats/crosstabs.q:1907 msgid "Goodman and Kruskal tau" msgstr "Goodman and Kruskal tau" -#: src/language/stats/crosstabs.q:1914 +#: src/language/stats/crosstabs.q:1908 msgid "Uncertainty Coefficient" msgstr "Onzekerheidscoëfficiënt" -#: src/language/stats/crosstabs.q:1915 +#: src/language/stats/crosstabs.q:1909 msgid "Somers' d" msgstr "Somers' d" -#: src/language/stats/crosstabs.q:1921 +#: src/language/stats/crosstabs.q:1915 msgid "Symmetric" msgstr "Symmetrisch" -#: src/language/stats/crosstabs.q:1922 src/language/stats/crosstabs.q:1923 +#: src/language/stats/crosstabs.q:1916 src/language/stats/crosstabs.q:1917 #, c-format msgid "%s Dependent" msgstr "%s Afhankelijk" -#: src/language/stats/examine.q:357 +#: src/language/stats/examine.q:356 msgid "Not creating NP plot because data set is empty." msgstr "Niet aanmaken van NP plot omdat gegevens set leeg is." @@ -4626,15 +5063,6 @@ msgstr "" msgid "%s and %s are mutually exclusive" msgstr "%s en %s zijn wederzijds exclusief" -#: src/language/stats/examine.q:1159 src/language/stats/reliability.q:670 -msgid "Case Processing Summary" -msgstr "Case Bewerkingsoverzicht" - -#: src/language/stats/examine.q:1449 src/language/stats/oneway.q:394 -#, c-format -msgid "%g%% Confidence Interval for Mean" -msgstr "" - #: src/language/stats/examine.q:1464 msgid "5% Trimmed Mean" msgstr "" @@ -4643,11 +5071,6 @@ msgstr "" msgid "Interquartile Range" msgstr "" -#: src/language/stats/examine.q:1635 src/language/stats/oneway.q:404 -#: src/ui/gui/descriptives.ui:8 src/ui/gui/examine.ui:319 -msgid "Descriptives" -msgstr "Descriptieve" - #: src/language/stats/examine.q:1821 msgid "Highest" msgstr "Hoogste" @@ -4732,127 +5155,6 @@ msgstr "" msgid "Omitting pie chart for %s, which has over 50 unique values." msgstr "" -#: src/language/stats/glm.q:247 -msgid "Multivariate GLM not yet supported" -msgstr "Mutivariante GLM wordt nog niet ondersteund" - -#: src/language/stats/means.q:100 -msgid "Missing required subcommand TABLES." -msgstr "Mis vereiste subopdracht TABLES." - -#: src/language/stats/means.q:134 -msgid "TABLES subcommand may not appear more than once." -msgstr "TABLES-subopdracht mag niet meer dan 1 keer voorkomen." - -#: src/language/stats/npar.q:111 -msgid "NPAR subcommand not currently implemented." -msgstr "" - -#: src/language/stats/npar.q:256 -#, c-format -msgid "The specified value of HI (%d) is lower than the specified value of LO (%d)" -msgstr "De opgegeven waarde van HI (%d) is lager dan de opgegeven waarde van LO (%d)" - -#: src/language/stats/npar.q:311 -#, c-format -msgid "%d expected values were given, but the specified range (%d-%d) requires exactly %d values." -msgstr "%d verwachte waardes waren opgegeven, maar het opgegeven bereik (%d-%d) vereist precies %d waardes." - -#: src/language/stats/npar.q:453 src/language/stats/t-test.q:380 -#, c-format -msgid "PAIRED was specified but the number of variables preceding WITH (%zu) did not match the number following (%zu)." -msgstr "PAIRED was opgegeven maar het aantal variabelen voor WITH (%zu) komt niet overeen met het aantal er achter (%zu)." - -#: src/language/stats/oneway.q:170 -msgid "Number of contrast coefficients must equal the number of groups" -msgstr "" - -#: src/language/stats/oneway.q:179 -#, c-format -msgid "Coefficients for contrast %zu do not total zero" -msgstr "" - -#: src/language/stats/oneway.q:242 -#, c-format -msgid "`%s' is not a variable name" -msgstr "'%s' is geen variabelennaam" - -#: src/language/stats/oneway.q:274 src/language/stats/regression.q:283 -msgid "Sum of Squares" -msgstr "" - -#: src/language/stats/oneway.q:276 src/language/stats/regression.q:285 -msgid "Mean Square" -msgstr "" - -#: src/language/stats/oneway.q:277 src/language/stats/regression.q:286 -#: src/language/stats/t-test.q:749 -msgid "F" -msgstr "F" - -#: src/language/stats/oneway.q:278 src/language/stats/oneway.q:535 -#: src/language/stats/regression.q:201 src/language/stats/regression.q:287 -msgid "Significance" -msgstr "Significantie " - -#: src/language/stats/oneway.q:300 -msgid "Between Groups" -msgstr "Tussen groepen" - -#: src/language/stats/oneway.q:301 -msgid "Within Groups" -msgstr "Binnen groepen" - -#: src/language/stats/oneway.q:345 src/language/stats/regression.q:312 -msgid "ANOVA" -msgstr "ANOVA" - -#: src/language/stats/oneway.q:532 -msgid "Levene Statistic" -msgstr "" - -#: src/language/stats/oneway.q:533 -msgid "df1" -msgstr "df1" - -#: src/language/stats/oneway.q:534 -msgid "df2" -msgstr "df2" - -#: src/language/stats/oneway.q:537 -msgid "Test of Homogeneity of Variances" -msgstr "" - -#: src/language/stats/oneway.q:603 -msgid "Contrast Coefficients" -msgstr "Contrastcoëfficiënten" - -#: src/language/stats/oneway.q:605 src/language/stats/oneway.q:681 -msgid "Contrast" -msgstr "Contrast" - -#: src/language/stats/oneway.q:679 -msgid "Contrast Tests" -msgstr "Contrasttesten" - -#: src/language/stats/oneway.q:682 -msgid "Value of Contrast" -msgstr "" - -#: src/language/stats/oneway.q:684 src/language/stats/regression.q:200 -#: src/language/stats/t-test.q:751 src/language/stats/t-test.q:922 -#: src/language/stats/t-test.q:1009 -msgid "t" -msgstr "t" - -#: src/language/stats/oneway.q:730 -msgid "Assume equal variances" -msgstr "Veronderstelt gelijke variantie" - -#: src/language/stats/oneway.q:734 -msgid "Does not assume equal" -msgstr "Veronderstelt niet gelijk" - #: src/language/stats/rank.q:220 #, c-format msgid "%s of %s by %s" @@ -4956,87 +5258,14 @@ msgstr "Coëfficiëntcorrelaties" msgid "The dependent variable is equal to the independent variable.The least squares line is therefore Y=X.Standard errors and related statistics may be meaningless." msgstr "" -#: src/language/stats/regression.q:891 +#: src/language/stats/regression.q:940 msgid "REGRESSION requires numeric variables." -msgstr "" +msgstr "REGRESSION vereist numerieke variabelen." -#: src/language/stats/regression.q:962 +#: src/language/stats/regression.q:1015 msgid "No valid data found. This command was skipped." msgstr "Geen geldige gegevens gevonden. Deze opdracht is overgeslagen." -#: src/language/stats/reliability.q:421 -msgid "Reliability Statistics" -msgstr "Betrouwbaarheids Statistieken" - -#: src/language/stats/reliability.q:462 -msgid "Item-Total Statistics" -msgstr "Item-Totaal Statistieken" - -#: src/language/stats/reliability.q:484 -msgid "Scale Mean if Item Deleted" -msgstr "" - -#: src/language/stats/reliability.q:487 -msgid "Scale Variance if Item Deleted" -msgstr "" - -#: src/language/stats/reliability.q:490 -msgid "Corrected Item-Total Correlation" -msgstr "" - -#: src/language/stats/reliability.q:493 -msgid "Cronbach's Alpha if Item Deleted" -msgstr "" - -#: src/language/stats/reliability.q:543 src/language/stats/reliability.q:562 -msgid "Cronbach's Alpha" -msgstr "Cronbach's Alpha" - -#: src/language/stats/reliability.q:546 src/language/stats/reliability.q:571 -#: src/language/stats/reliability.q:582 -msgid "N of Items" -msgstr "N van Items" - -#: src/language/stats/reliability.q:565 -msgid "Part 1" -msgstr "Deel 1" - -#: src/language/stats/reliability.q:576 -msgid "Part 2" -msgstr "Deel 2" - -#: src/language/stats/reliability.q:587 -msgid "Total N of Items" -msgstr "Totaal N van Items" - -#: src/language/stats/reliability.q:590 -msgid "Correlation Between Forms" -msgstr "Correlatie Tussen Formulieren" - -#: src/language/stats/reliability.q:594 -msgid "Spearman-Brown Coefficient" -msgstr "Spearman-Brown Coefficient" - -#: src/language/stats/reliability.q:597 -msgid "Equal Length" -msgstr "Gelijke lengte" - -#: src/language/stats/reliability.q:600 -msgid "Unequal Length" -msgstr "Ongelijke lengte" - -#: src/language/stats/reliability.q:604 -msgid "Guttman Split-Half Coefficient" -msgstr "Guttman Split-Half Coëfficiënt" - -#: src/language/stats/reliability.q:699 -msgid "Excluded" -msgstr "Uitgesloten" - -#: src/language/stats/reliability.q:707 -msgid "%" -msgstr "%" - #: src/language/stats/t-test.q:190 msgid "Exactly one of TESTVAL, GROUPS and PAIRS subcommands must be specified." msgstr "Precies 1 van de TESTVAL-, GROUPS- en PAIRS-subopdrachten moet zijn gespecificeerd." @@ -5087,10 +5316,6 @@ msgstr "" msgid "t-test for Equality of Means" msgstr "" -#: src/language/stats/t-test.q:750 src/language/stats/t-test.q:1103 -msgid "Sig." -msgstr "" - #: src/language/stats/t-test.q:754 src/language/stats/t-test.q:1012 msgid "Mean Difference" msgstr "Gemiddeld verschil" @@ -5203,6 +5428,66 @@ msgstr "De laatste case (%ld) om weer te geven is kleiner dan 1. De waarde is op msgid "The step value %ld is less than 1. The value is being reset to 1." msgstr "De stap waarde %ld is kleiner dan 1. De waarde is op 1 gezet." +#: src/ui/gui/aggregate.ui:7 +msgid "Aggregate Data" +msgstr "" + +#: src/ui/gui/aggregate.ui:100 +msgid "_Break variable(s)" +msgstr "" + +#: src/ui/gui/aggregate.ui:136 +msgid "Variable Name: " +msgstr "Variabelenaam: " + +#: src/ui/gui/aggregate.ui:161 +msgid "Variable Label: " +msgstr "Variabelelabels: " + +#: src/ui/gui/aggregate.ui:190 +msgid "Function: " +msgstr "Functie: " + +#: src/ui/gui/aggregate.ui:253 +msgid "Argument 1: " +msgstr "" + +#: src/ui/gui/aggregate.ui:282 +msgid "Argument 2: " +msgstr "" + +#: src/ui/gui/aggregate.ui:328 +msgid "Aggregated variables" +msgstr "Geaggregeerde variabele(n)" + +#: src/ui/gui/aggregate.ui:362 +msgid "_Add aggregated variables to the active dataset" +msgstr "_Voeg geaggregeerde variabelen toe aan de actieve dataset " + +#: src/ui/gui/aggregate.ui:376 +msgid "_Replace the current dataset with the aggregated variables" +msgstr "_Vervang de huidige dataset met de geaggregeerde variabelen" + +#: src/ui/gui/aggregate.ui:391 +msgid "_Write a new data file containing only the aggregated variables" +msgstr "" + +#: src/ui/gui/aggregate.ui:428 +msgid "label" +msgstr "label" + +#: src/ui/gui/aggregate.ui:472 +msgid "File is _already sorted on break variable(s)" +msgstr "Bestand is _al gesorteerd op break variabele(n)." + +#: src/ui/gui/aggregate.ui:487 +msgid "Sort file before a_ggregating" +msgstr "" + +#: src/ui/gui/aggregate.ui:508 +msgid "Options for very large datasets" +msgstr "" + #: src/ui/gui/binomial.ui:57 src/ui/gui/chi-square.ui:57 msgid "_Test Variable List:" msgstr "Testvariabelelijst:" @@ -5223,6 +5508,43 @@ msgstr "" msgid "Test _Proportion:" msgstr "" +#: src/ui/gui/compute.ui:8 +msgid "Compute Variable" +msgstr "Berekenvariabele" + +#: src/ui/gui/compute.ui:41 +msgid "Target Variable:" +msgstr "Doelvariabele:" + +#: src/ui/gui/compute.ui:70 +msgid "Type & Label" +msgstr "Type & Label" + +#: src/ui/gui/compute.ui:117 +msgid "=" +msgstr "=" + +#: src/ui/gui/compute.ui:171 +msgid "Numeric Expressions:" +msgstr "Numerieke Expressies:" + +#: src/ui/gui/compute.ui:233 +msgid "Functions:" +msgstr "Functies:" + +#: src/ui/gui/compute.ui:298 src/ui/gui/recode.ui:741 +#: src/ui/gui/select-cases.ui:378 +msgid "If..." +msgstr "Als..." + +#: src/ui/gui/compute.ui:351 +msgid "Compute Variable: Type and Label" +msgstr "Bereken variabele: Type en Label" + +#: src/ui/gui/compute.ui:386 +msgid "Use expression as label" +msgstr "Gebruik expressie als label" + #: src/ui/gui/correlation.ui:7 msgid "Bivariate Correlations" msgstr "Bivariate Correlaties" @@ -5427,91 +5749,107 @@ msgstr "Waardes herhalen" msgid "Missing Values" msgstr "Ontbrekende waardes" -#: src/ui/gui/factor.ui:21 +#: src/ui/gui/goto-case.ui:8 +msgid "Goto Case" +msgstr "Ga naar case" + +#: src/ui/gui/goto-case.ui:26 +msgid "Goto Case Number:" +msgstr "Ga naar Case Nummer:" + +#: src/ui/gui/factor.ui:22 +msgid "Principal Components Analysis" +msgstr "" + +#: src/ui/gui/factor.ui:26 +msgid "Principal Axis Factoring" +msgstr "" + +#: src/ui/gui/factor.ui:29 msgid "Factor Analysis" msgstr "Factoranalyse" -#: src/ui/gui/factor.ui:47 +#: src/ui/gui/factor.ui:55 msgid "_Descriptives..." msgstr "_Descriptieven..." -#: src/ui/gui/factor.ui:60 +#: src/ui/gui/factor.ui:68 msgid "_Extraction..." msgstr "_Extractie..." -#: src/ui/gui/factor.ui:74 +#: src/ui/gui/factor.ui:82 msgid "_Rotations..." msgstr "_Rotaties..." -#: src/ui/gui/factor.ui:192 +#: src/ui/gui/factor.ui:200 msgid "Factor Analysis: Extraction" msgstr "" -#: src/ui/gui/factor.ui:216 +#: src/ui/gui/factor.ui:224 msgid "Method: " msgstr "Methode:" -#: src/ui/gui/factor.ui:266 +#: src/ui/gui/factor.ui:274 msgid "Correlation matrix" msgstr "Correlatie-matrix" -#: src/ui/gui/factor.ui:280 +#: src/ui/gui/factor.ui:288 msgid "Covariance matrix" msgstr "Covariantie-matrix" -#: src/ui/gui/factor.ui:300 +#: src/ui/gui/factor.ui:308 msgid "Analyse" msgstr "Analyseer" -#: src/ui/gui/factor.ui:324 +#: src/ui/gui/factor.ui:332 msgid "Unrotatated factor solution" msgstr "" -#: src/ui/gui/factor.ui:338 +#: src/ui/gui/factor.ui:346 msgid "Scree plot" msgstr "" -#: src/ui/gui/factor.ui:357 src/ui/gui/roc.ui:286 +#: src/ui/gui/factor.ui:365 src/ui/gui/roc.ui:286 msgid "Display" msgstr "Scherm" -#: src/ui/gui/factor.ui:430 +#: src/ui/gui/factor.ui:438 msgid "Number of factors:" msgstr "Aantal factoren:" -#: src/ui/gui/factor.ui:460 +#: src/ui/gui/factor.ui:468 msgid "Extract" msgstr "" -#: src/ui/gui/factor.ui:475 src/ui/gui/factor.ui:665 +#: src/ui/gui/factor.ui:483 src/ui/gui/factor.ui:673 msgid "Maximum iterations for convergence:" msgstr "Maximaal aantal iteraties voor convergentie:" -#: src/ui/gui/factor.ui:538 +#: src/ui/gui/factor.ui:546 msgid "Factor Analysis: Rotation" msgstr "Factoranalyse: Rotatie" -#: src/ui/gui/factor.ui:571 +#: src/ui/gui/factor.ui:579 msgid "_None" msgstr "_Geen" -#: src/ui/gui/factor.ui:582 +#: src/ui/gui/factor.ui:590 msgid "_Varimax" msgstr "" -#: src/ui/gui/factor.ui:598 +#: src/ui/gui/factor.ui:606 msgid "_Quartimax" msgstr "" -#: src/ui/gui/factor.ui:614 +#: src/ui/gui/factor.ui:622 msgid "_Equimax" msgstr "" -#: src/ui/gui/factor.ui:637 +#: src/ui/gui/factor.ui:645 msgid "Method" msgstr "Methode" -#: src/ui/gui/factor.ui:648 +#: src/ui/gui/factor.ui:656 msgid "_Display rotated solution" msgstr "_Toon geroteerde oplossing" @@ -5669,7 +6007,7 @@ msgstr "_Factor:" msgid "Dependent _Variable(s):" msgstr "Afhankelijke _Variabel(en):" -#: src/ui/gui/oneway.ui:184 src/ui/gui/data-editor.ui:328 +#: src/ui/gui/oneway.ui:184 src/ui/gui/data-editor.ui:332 msgid "_Descriptives" msgstr "_Descriptieven" @@ -5722,174 +6060,21 @@ msgid "Name Variable:" msgstr "Naam Variabele:" #: src/ui/gui/psppire.ui:383 -msgid "Split File" -msgstr "Splits bestand" - -#: src/ui/gui/psppire.ui:443 -msgid "Analyze all cases. Do not create groups." -msgstr "Analyseer alle cases. Creëer geen groepen." - -#: src/ui/gui/psppire.ui:459 -msgid "Compare groups." -msgstr "Vergelijk groepen." - -#: src/ui/gui/psppire.ui:475 -msgid "Organize output by groups." -msgstr "Organiseer uitvoer per groepen." - -#: src/ui/gui/psppire.ui:533 -msgid "Groups based on:" -msgstr "Groepen gebaseerd op:" - -#: src/ui/gui/psppire.ui:592 -msgid "Sort the file by grouping variables." -msgstr "Sorteer bestand op groeperingsvariabelen." - -#: src/ui/gui/psppire.ui:609 -msgid "File is already sorted." -msgstr "Bestand is al gesorteerd." - -#: src/ui/gui/psppire.ui:662 -msgid "Current Status : " -msgstr "Huidige Status : " - -#: src/ui/gui/psppire.ui:673 -msgid "Analysis by groups is off" -msgstr "Analyseer per groep is uit" - -#: src/ui/gui/psppire.ui:709 -msgid "Compute Variable" -msgstr "Berekenvariabele" - -#: src/ui/gui/psppire.ui:742 -msgid "Target Variable:" -msgstr "Doelvariabele:" - -#: src/ui/gui/psppire.ui:771 -msgid "Type & Label" -msgstr "Type & Label" - -#: src/ui/gui/psppire.ui:818 -msgid "=" -msgstr "=" - -#: src/ui/gui/psppire.ui:872 -msgid "Numeric Expressions:" -msgstr "Numerieke Expressies:" - -#: src/ui/gui/psppire.ui:934 -msgid "Functions:" -msgstr "Functies:" - -#: src/ui/gui/psppire.ui:999 src/ui/gui/psppire.ui:1422 -#: src/ui/gui/recode.ui:741 -msgid "If..." -msgstr "Als..." - -#: src/ui/gui/psppire.ui:1052 -msgid "Select Cases" -msgstr "Selecteer cases" - -#: src/ui/gui/psppire.ui:1240 -msgid "Use filter variable" -msgstr "Gebruik filtervariabele" - -#: src/ui/gui/psppire.ui:1299 -msgid "Based on time or case range" -msgstr "Gebaseerd op tijd of case bereik" - -#: src/ui/gui/psppire.ui:1311 -msgid "Range..." -msgstr "Bereik..." - -#: src/ui/gui/psppire.ui:1355 -msgid "Random sample of cases" -msgstr "Willekeurige steekproef van cases" - -#: src/ui/gui/psppire.ui:1368 -msgid "Sample..." -msgstr "Steekproef..." - -#: src/ui/gui/psppire.ui:1410 -msgid "If condition is satisfied" -msgstr "Aan If conditie is voldaan" - -#: src/ui/gui/psppire.ui:1462 -msgid "All Cases" -msgstr "Alle Cases" - -#: src/ui/gui/psppire.ui:1477 -msgid "Select" -msgstr "Selecteer" - -#: src/ui/gui/psppire.ui:1504 -msgid "Filtered" -msgstr "Gefilterd" - -#: src/ui/gui/psppire.ui:1520 -msgid "Deleted" -msgstr "Verwijderd" - -#: src/ui/gui/psppire.ui:1543 -msgid "Unselected Cases Are" -msgstr "Niet geselecteerde Cases zijn" - -#: src/ui/gui/psppire.ui:1585 msgid "Data File Comments" msgstr "Gegevensbestand _commentaren" -#: src/ui/gui/psppire.ui:1609 +#: src/ui/gui/psppire.ui:407 msgid "Comments:" msgstr "Commentaren:" -#: src/ui/gui/psppire.ui:1650 +#: src/ui/gui/psppire.ui:448 msgid "Display comments in output" msgstr "Toon commentaren in uitvoer" -#: src/ui/gui/psppire.ui:1669 +#: src/ui/gui/psppire.ui:467 msgid "Column Number: 0" msgstr "Kolomnummer: 0" -#: src/ui/gui/psppire.ui:1703 -msgid "Select Cases: Range" -msgstr "Selecteer cases: Reeks" - -#: src/ui/gui/psppire.ui:1750 -msgid "First case" -msgstr "Eerste case" - -#: src/ui/gui/psppire.ui:1763 -msgid "Last case" -msgstr "Laatste case" - -#: src/ui/gui/psppire.ui:1776 -msgid "Observation" -msgstr "Observatie" - -#: src/ui/gui/psppire.ui:1808 -msgid "Compute Variable: Type and Label" -msgstr "Bereken variabele: Type en Label" - -#: src/ui/gui/psppire.ui:1843 -msgid "Use expression as label" -msgstr "Gebruik expressie als label" - -#: src/ui/gui/psppire.ui:2088 -msgid "Goto Case" -msgstr "Ga naar case" - -#: src/ui/gui/psppire.ui:2106 -msgid "Goto Case Number:" -msgstr "Ga naar Case Nummer:" - -#: src/ui/gui/psppire.ui:2149 -msgid "Select Cases: Random Sample" -msgstr "Selecteer cases: Aselecte steekproef" - -#: src/ui/gui/psppire.ui:2247 -msgid "Sample Size" -msgstr "Steekproef Grootte" - #: src/ui/gui/rank.ui:8 msgid "Rank Cases" msgstr "Rangschik Cases" @@ -6018,6 +6203,42 @@ msgstr "Aflopend" msgid "Sort Order" msgstr "Sorteervolgorde" +#: src/ui/gui/split-file.ui:8 +msgid "Split File" +msgstr "Splits bestand" + +#: src/ui/gui/split-file.ui:68 +msgid "Analyze all cases. Do not create groups." +msgstr "Analyseer alle cases. Creëer geen groepen." + +#: src/ui/gui/split-file.ui:84 +msgid "Compare groups." +msgstr "Vergelijk groepen." + +#: src/ui/gui/split-file.ui:100 +msgid "Organize output by groups." +msgstr "Organiseer uitvoer per groepen." + +#: src/ui/gui/split-file.ui:158 +msgid "Groups based on:" +msgstr "Groepen gebaseerd op:" + +#: src/ui/gui/split-file.ui:217 +msgid "Sort the file by grouping variables." +msgstr "Sorteer bestand op groeperingsvariabelen." + +#: src/ui/gui/split-file.ui:234 +msgid "File is already sorted." +msgstr "Bestand is al gesorteerd." + +#: src/ui/gui/split-file.ui:287 +msgid "Current Status : " +msgstr "Huidige Status : " + +#: src/ui/gui/split-file.ui:298 +msgid "Analysis by groups is off" +msgstr "Analyseer per groep is uit" + #: src/ui/gui/recode.ui:185 src/ui/gui/recode.ui:467 msgid "System Missing" msgstr "Ontbrekende waarde" @@ -6063,7 +6284,7 @@ msgid "New Value" msgstr "Nieuwe Waarde" #: src/ui/gui/recode.ui:596 -msgid "Convert numeric strings to numbers ('5' -> 5)" +msgid "Convert numeric strings to numbers (`5' -> 5)" msgstr "Converteer numerieke tekenreeksen naar nummers ('5' -> 5)" #: src/ui/gui/recode.ui:614 @@ -6122,22 +6343,26 @@ msgstr "Restant" msgid "Regression: Statistics" msgstr "Regressie: Statistieken" -#: src/ui/gui/reliability.ui:27 +#: src/ui/gui/reliability.ui:26 msgid "Reliability Analysis" msgstr "Betrouwbaarheids Analyses" -#: src/ui/gui/reliability.ui:114 +#: src/ui/gui/reliability.ui:124 msgid "_Items:" msgstr "_Items:" -#: src/ui/gui/reliability.ui:136 +#: src/ui/gui/reliability.ui:141 msgid "Model:\t" msgstr "Model:\t" -#: src/ui/gui/reliability.ui:175 +#: src/ui/gui/reliability.ui:180 msgid "Variables in first split:" msgstr "Variabelen in eerste splitsing:" +#: src/ui/gui/reliability.ui:217 +msgid "Show descriptives for scale if _item is deleted" +msgstr "" + #: src/ui/gui/roc.ui:115 msgid "_Test Variable:" msgstr "Testvariabele:" @@ -6166,6 +6391,78 @@ msgstr "" msgid "_Coordinate points of the ROC Curve" msgstr "" +#: src/ui/gui/select-cases.ui:8 +msgid "Select Cases" +msgstr "Selecteer cases" + +#: src/ui/gui/select-cases.ui:196 +msgid "Use filter variable" +msgstr "Gebruik filtervariabele" + +#: src/ui/gui/select-cases.ui:255 +msgid "Based on time or case range" +msgstr "Gebaseerd op tijd of case bereik" + +#: src/ui/gui/select-cases.ui:267 +msgid "Range..." +msgstr "Bereik..." + +#: src/ui/gui/select-cases.ui:311 +msgid "Random sample of cases" +msgstr "Willekeurige steekproef van cases" + +#: src/ui/gui/select-cases.ui:324 +msgid "Sample..." +msgstr "Steekproef..." + +#: src/ui/gui/select-cases.ui:366 +msgid "If condition is satisfied" +msgstr "Aan If conditie is voldaan" + +#: src/ui/gui/select-cases.ui:418 +msgid "All Cases" +msgstr "Alle Cases" + +#: src/ui/gui/select-cases.ui:433 +msgid "Select" +msgstr "Selecteer" + +#: src/ui/gui/select-cases.ui:460 +msgid "Filtered" +msgstr "Gefilterd" + +#: src/ui/gui/select-cases.ui:476 +msgid "Deleted" +msgstr "Verwijderd" + +#: src/ui/gui/select-cases.ui:499 +msgid "Unselected Cases Are" +msgstr "Niet geselecteerde Cases zijn" + +#: src/ui/gui/select-cases.ui:541 +msgid "Select Cases: Range" +msgstr "Selecteer cases: Reeks" + +#: src/ui/gui/select-cases.ui:590 +msgid "First case" +msgstr "Eerste case" + +#: src/ui/gui/select-cases.ui:603 +msgid "Last case" +msgstr "Laatste case" + +#: src/ui/gui/select-cases.ui:616 +msgid "Observation" +msgstr "Observatie" + +#: src/ui/gui/select-cases.ui:648 +msgid "Select Cases: Random Sample" +msgstr "Selecteer cases: Aselecte steekproef" + +#: src/ui/gui/select-cases.ui:746 +msgid "Sample Size" +msgstr "Steekproef Grootte" + #: src/ui/gui/t-test.ui:8 msgid "Independent-Samples T Test" msgstr "Independent-Samples T Test" @@ -6228,115 +6525,103 @@ msgstr "" " \n" "Het geselecteerde bestand bevat N regels tekst. Alleen de eerste M hiervan zullen getoond worden voor voorbeeld doeleinden in de volgende schermen. Je kunt hieronder kiezen hoeveel van het bestand daadwerkelijk geïmporteerd moet worden." -#: src/ui/gui/text-data-import.ui:52 +#: src/ui/gui/text-data-import.ui:95 msgid "All cases" msgstr "Alle cases" -#: src/ui/gui/text-data-import.ui:71 src/ui/gui/text-data-import.ui:128 -msgid "Only first " -msgstr "Alleen eerste " - -#: src/ui/gui/text-data-import.ui:106 -msgid " cases" -msgstr " cases" - -#: src/ui/gui/text-data-import.ui:162 -msgid "% of file (approximately)" -msgstr "% van bestand (ongeveer)" - -#: src/ui/gui/text-data-import.ui:183 +#: src/ui/gui/text-data-import.ui:116 msgid "Amount to Import" msgstr "Aantal te Importeren" -#: src/ui/gui/text-data-import.ui:202 +#: src/ui/gui/text-data-import.ui:135 msgid "Select Data to Import" msgstr "Selecteer Gegevens om te Importeren" -#: src/ui/gui/text-data-import.ui:213 +#: src/ui/gui/text-data-import.ui:146 msgid "Select the first line of the data file that contains data." msgstr "Selecteer de eerste regel van het gegevensbestand die gegevens bevat." -#: src/ui/gui/text-data-import.ui:241 +#: src/ui/gui/text-data-import.ui:174 msgid "Line above selected line contains variable names" msgstr "De regel boven de geselecteerde gegevensregel bevat de variabelennamen" -#: src/ui/gui/text-data-import.ui:259 +#: src/ui/gui/text-data-import.ui:192 msgid "Choose Separators" msgstr "Kies scheidingstekens" -#: src/ui/gui/text-data-import.ui:305 +#: src/ui/gui/text-data-import.ui:238 msgid "C_ustom" msgstr "" -#: src/ui/gui/text-data-import.ui:320 +#: src/ui/gui/text-data-import.ui:253 msgid "Slas_h (/)" msgstr "Sc_huine streep (/)" -#: src/ui/gui/text-data-import.ui:337 +#: src/ui/gui/text-data-import.ui:270 msgid "Semicolo_n (;)" msgstr "Pu_ntkomma (;)" -#: src/ui/gui/text-data-import.ui:354 +#: src/ui/gui/text-data-import.ui:287 msgid "P_ipe (|)" msgstr "P_ijp (|)" -#: src/ui/gui/text-data-import.ui:369 +#: src/ui/gui/text-data-import.ui:302 msgid "H_yphen (-)" msgstr "Streep (-)" -#: src/ui/gui/text-data-import.ui:386 +#: src/ui/gui/text-data-import.ui:319 msgid "Co_mma (,)" msgstr "Ko_mma (,)" -#: src/ui/gui/text-data-import.ui:403 +#: src/ui/gui/text-data-import.ui:336 msgid "_Colon (:)" msgstr "_Dubbelepunt (:)" -#: src/ui/gui/text-data-import.ui:418 +#: src/ui/gui/text-data-import.ui:351 msgid "Ban_g (!)" msgstr "Uitroepteken (!)" -#: src/ui/gui/text-data-import.ui:433 +#: src/ui/gui/text-data-import.ui:366 msgid "Ta_b" msgstr "Ta_b" -#: src/ui/gui/text-data-import.ui:448 +#: src/ui/gui/text-data-import.ui:381 msgid "_Space" msgstr "_Spatie" -#: src/ui/gui/text-data-import.ui:465 +#: src/ui/gui/text-data-import.ui:398 msgid "Separators" msgstr "Scheiders" -#: src/ui/gui/text-data-import.ui:495 +#: src/ui/gui/text-data-import.ui:428 msgid "Doubled quote mark treated as escape" msgstr "" -#: src/ui/gui/text-data-import.ui:524 +#: src/ui/gui/text-data-import.ui:457 msgid "Quote separator characters with" msgstr "Citeer scheidingstekens met" -#: src/ui/gui/text-data-import.ui:544 +#: src/ui/gui/text-data-import.ui:477 msgid "Quoting" msgstr "Citeren" -#: src/ui/gui/text-data-import.ui:592 +#: src/ui/gui/text-data-import.ui:525 msgid "Fields Preview" msgstr "Veldenvoorbeeld" -#: src/ui/gui/text-data-import.ui:607 +#: src/ui/gui/text-data-import.ui:540 msgid "Adjust Variable Formats" msgstr "Pas Variabelenopmaak aan" -#: src/ui/gui/text-data-import.ui:618 +#: src/ui/gui/text-data-import.ui:551 msgid "Check the data formats displayed below and fix any that are incorrect. You may set other variable properties now or later." msgstr "Controleer de gegevensopmaak hieronder en verbeter degene die foutief zijn. Je mag andere variabelenopties nu of later zetten." -#: src/ui/gui/text-data-import.ui:662 +#: src/ui/gui/text-data-import.ui:595 msgid "Variables" msgstr "Variabelen" -#: src/ui/gui/text-data-import.ui:705 +#: src/ui/gui/text-data-import.ui:638 msgid "Data Preview" msgstr "Gegevensvoorbeeld" @@ -6408,307 +6693,299 @@ msgstr "" msgid "Variable Information:" msgstr "Variabeleninformatie:" -#: src/ui/gui/data-editor.ui:9 -msgid "Sort Ascending" -msgstr "Sorteer oplopend" - -#: src/ui/gui/data-editor.ui:15 -msgid "Sort Descending" -msgstr "Sorteer aflopend" - -#: src/ui/gui/data-editor.ui:26 src/ui/gui/output-viewer.ui:9 +#: src/ui/gui/data-editor.ui:23 src/ui/gui/output-viewer.ui:9 #: src/ui/gui/syntax-editor.ui:10 msgid "_File" msgstr "_Bestand" -#: src/ui/gui/data-editor.ui:38 src/ui/gui/syntax-editor.ui:22 +#: src/ui/gui/data-editor.ui:35 src/ui/gui/syntax-editor.ui:22 #: src/ui/gui/syntax-editor.ui:40 msgid "_Syntax" msgstr "_Syntax" -#: src/ui/gui/data-editor.ui:44 src/ui/gui/data-editor.ui:217 -#: src/ui/gui/data-editor.ui:229 src/ui/gui/syntax-editor.ui:28 +#: src/ui/gui/data-editor.ui:41 src/ui/gui/data-editor.ui:214 +#: src/ui/gui/data-editor.ui:226 src/ui/gui/syntax-editor.ui:28 #: src/ui/gui/syntax-editor.ui:46 msgid "_Data" msgstr "_Gegevens" -#: src/ui/gui/data-editor.ui:56 +#: src/ui/gui/data-editor.ui:53 msgid "_Import Delimited Text Data" msgstr "Gescheiden tekstgegevens _importeren" -#: src/ui/gui/data-editor.ui:75 +#: src/ui/gui/data-editor.ui:72 msgid "D_isplay Data File Information" msgstr "Gegevensbestand_informatie tonen" -#: src/ui/gui/data-editor.ui:81 +#: src/ui/gui/data-editor.ui:79 msgid "Working File" msgstr "Werkbestand" -#: src/ui/gui/data-editor.ui:87 +#: src/ui/gui/data-editor.ui:85 msgid "External File" msgstr "Extern bestand" -#: src/ui/gui/data-editor.ui:93 +#: src/ui/gui/data-editor.ui:91 msgid "Recently Used Da_ta" msgstr "Recent gebruikte _gegevens" -#: src/ui/gui/data-editor.ui:99 +#: src/ui/gui/data-editor.ui:97 msgid "Recently Used _Files" msgstr "Recent gebruikte _bestanden" # Standaard snelleter voor Bewerken is de w. -#: src/ui/gui/data-editor.ui:111 src/ui/gui/output-viewer.ui:28 +#: src/ui/gui/data-editor.ui:109 src/ui/gui/output-viewer.ui:28 #: src/ui/gui/syntax-editor.ui:70 msgid "_Edit" msgstr "Be_werken" -#: src/ui/gui/data-editor.ui:117 +#: src/ui/gui/data-editor.ui:115 msgid "Insert Variable" msgstr "Invoegen variabele" -#: src/ui/gui/data-editor.ui:118 +#: src/ui/gui/data-editor.ui:116 msgid "Create a new variable at the current position" msgstr "Creëer een nieuwe variabele op de huidige positie" -#: src/ui/gui/data-editor.ui:125 +#: src/ui/gui/data-editor.ui:123 msgid "Insert Cases" msgstr "Invoegen cases" -#: src/ui/gui/data-editor.ui:126 +#: src/ui/gui/data-editor.ui:124 msgid "Create a new case at the current position" msgstr "Creëer een nieuwe case op de huidige positie" -#: src/ui/gui/data-editor.ui:132 +#: src/ui/gui/data-editor.ui:130 msgid "Go To Case" msgstr "Ga naar case" -#: src/ui/gui/data-editor.ui:134 +#: src/ui/gui/data-editor.ui:132 msgid "Jump to a case in the data sheet" msgstr "Spring naar een Case in het Gegevensblad" -#: src/ui/gui/data-editor.ui:160 +#: src/ui/gui/data-editor.ui:158 msgid "Cl_ear Variables" msgstr "Wis _variabelen" -#: src/ui/gui/data-editor.ui:161 +#: src/ui/gui/data-editor.ui:159 msgid "Delete the variables at the selected position(s)" msgstr "Verwijder de variabele op de geselecteerde positie(s)" -#: src/ui/gui/data-editor.ui:169 +#: src/ui/gui/data-editor.ui:167 msgid "_Clear Cases" msgstr "Wis _cases" -#: src/ui/gui/data-editor.ui:170 +#: src/ui/gui/data-editor.ui:168 msgid "Delete the cases at the selected position(s)" msgstr "Verwijder de cases op de geselecteerde positie(s)" -#: src/ui/gui/data-editor.ui:182 +#: src/ui/gui/data-editor.ui:180 msgid "_View" msgstr "Beel_d" -#: src/ui/gui/data-editor.ui:189 +#: src/ui/gui/data-editor.ui:187 msgid "_Status Bar" msgstr "_Statusbalk" -#: src/ui/gui/data-editor.ui:195 -msgid "_Fonts" -msgstr "_Fonts" - -#: src/ui/gui/data-editor.ui:203 +#: src/ui/gui/data-editor.ui:200 msgid "_Grid Lines" msgstr "_Rasterlijnen" -#: src/ui/gui/data-editor.ui:209 +#: src/ui/gui/data-editor.ui:206 msgid "Value _Labels" msgstr "Waarde_labels" -#: src/ui/gui/data-editor.ui:210 +#: src/ui/gui/data-editor.ui:207 msgid "Show/hide value labels" msgstr "Toon/verberg waardelabels" -#: src/ui/gui/data-editor.ui:223 src/ui/gui/data-editor.ui:430 +#: src/ui/gui/data-editor.ui:220 src/ui/gui/data-editor.ui:434 msgid "_Variables" msgstr "_Variabelen" -#: src/ui/gui/data-editor.ui:234 +#: src/ui/gui/data-editor.ui:231 msgid "_Sort Cases" msgstr "_Sorteer Cases" -#: src/ui/gui/data-editor.ui:237 +#: src/ui/gui/data-editor.ui:234 msgid "Sort cases in the active file" msgstr "Sorteer cases in het actieve bestand" -#: src/ui/gui/data-editor.ui:244 +#: src/ui/gui/data-editor.ui:241 msgid "_Transpose" msgstr "_Herschikken" -#: src/ui/gui/data-editor.ui:245 +#: src/ui/gui/data-editor.ui:242 msgid "Transpose the cases with the variables" msgstr "Herschik de cases met de variabelen" -#: src/ui/gui/data-editor.ui:251 +#: src/ui/gui/data-editor.ui:249 +msgid "_Aggregate" +msgstr "_Aggregeer" + +#: src/ui/gui/data-editor.ui:255 msgid "S_plit File" msgstr "S_plits bestand" -#: src/ui/gui/data-editor.ui:252 +#: src/ui/gui/data-editor.ui:256 msgid "Split the active file" msgstr "Splits het actieve bestand" -#: src/ui/gui/data-editor.ui:259 +#: src/ui/gui/data-editor.ui:263 msgid "Select _Cases" msgstr "Selecteer _cases" -#: src/ui/gui/data-editor.ui:265 +#: src/ui/gui/data-editor.ui:269 msgid "_Weight Cases" msgstr "_Weeg cases" -#: src/ui/gui/data-editor.ui:266 +#: src/ui/gui/data-editor.ui:270 msgid "Weight cases by variable" msgstr "Weeg cases per variabele" -#: src/ui/gui/data-editor.ui:273 +#: src/ui/gui/data-editor.ui:277 msgid "_Transform" msgstr "_Transformeren" -#: src/ui/gui/data-editor.ui:279 +#: src/ui/gui/data-editor.ui:283 msgid "_Compute" msgstr "_Berekenen" -#: src/ui/gui/data-editor.ui:285 +#: src/ui/gui/data-editor.ui:289 msgid "Ran_k Cases" msgstr "Rangschi_k cases" -#: src/ui/gui/data-editor.ui:291 +#: src/ui/gui/data-editor.ui:295 msgid "Recode into _Same Variables" msgstr "Hercodeer in _Zelfde Variabelen" -#: src/ui/gui/data-editor.ui:297 +#: src/ui/gui/data-editor.ui:301 msgid "Recode into _Different Variables" msgstr "Hercodeer in _Andere Variabelen" -#: src/ui/gui/data-editor.ui:303 +#: src/ui/gui/data-editor.ui:307 msgid "_Run Pending Transforms" msgstr "_uitvoeren uitstaande Transformaties" -#: src/ui/gui/data-editor.ui:310 +#: src/ui/gui/data-editor.ui:314 msgid "_Analyze" msgstr "_Analyseer" -#: src/ui/gui/data-editor.ui:316 +#: src/ui/gui/data-editor.ui:320 msgid "_Descriptive Statistics" msgstr "_Descriptieve statistieken" -#: src/ui/gui/data-editor.ui:322 +#: src/ui/gui/data-editor.ui:326 msgid "_Frequencies" msgstr "_Frequenties" -#: src/ui/gui/data-editor.ui:334 +#: src/ui/gui/data-editor.ui:338 msgid "_Explore" msgstr "_Onderzoek" -#: src/ui/gui/data-editor.ui:340 +#: src/ui/gui/data-editor.ui:344 msgid "_Crosstabs" msgstr "_Kruistabellen" -#: src/ui/gui/data-editor.ui:346 +#: src/ui/gui/data-editor.ui:350 msgid "Compare _Means" msgstr "" -#: src/ui/gui/data-editor.ui:352 +#: src/ui/gui/data-editor.ui:356 msgid "_One Sample T Test" msgstr "" -#: src/ui/gui/data-editor.ui:358 +#: src/ui/gui/data-editor.ui:362 msgid "_Independent Samples T Test" msgstr "" -#: src/ui/gui/data-editor.ui:364 +#: src/ui/gui/data-editor.ui:368 msgid "_Paired Samples T Test" msgstr "" -#: src/ui/gui/data-editor.ui:370 +#: src/ui/gui/data-editor.ui:374 msgid "One Way _ANOVA" msgstr "" -#: src/ui/gui/data-editor.ui:376 +#: src/ui/gui/data-editor.ui:380 msgid "Bivariate _Correlation..." msgstr "Bivariate _correlatie..." -#: src/ui/gui/data-editor.ui:382 +#: src/ui/gui/data-editor.ui:386 msgid "Factor _Analysis" msgstr "Factor _analyses" -#: src/ui/gui/data-editor.ui:388 +#: src/ui/gui/data-editor.ui:392 msgid "Re_liability" msgstr "Betrouwbaarheid" -#: src/ui/gui/data-editor.ui:394 +#: src/ui/gui/data-editor.ui:398 msgid "Linear _Regression" msgstr "Lineare _regressie" -#: src/ui/gui/data-editor.ui:400 +#: src/ui/gui/data-editor.ui:404 msgid "_Non-Parametric Statistics" msgstr "" -#: src/ui/gui/data-editor.ui:406 +#: src/ui/gui/data-editor.ui:410 msgid "_Chi-Square" msgstr "_Chi-Square" -#: src/ui/gui/data-editor.ui:412 +#: src/ui/gui/data-editor.ui:416 msgid "_Binomial" msgstr "_Binomiaal" -#: src/ui/gui/data-editor.ui:418 +#: src/ui/gui/data-editor.ui:422 msgid "ROC Cur_ve..." msgstr "ROC Cur_ve..." -#: src/ui/gui/data-editor.ui:424 +#: src/ui/gui/data-editor.ui:428 msgid "_Utilities" msgstr "E_xtra" -#: src/ui/gui/data-editor.ui:431 +#: src/ui/gui/data-editor.ui:435 msgid "Jump to variable" msgstr "Spring naar variabele" -#: src/ui/gui/data-editor.ui:438 +#: src/ui/gui/data-editor.ui:442 msgid "Data File _Comments" msgstr "Gegevensbestand _commentaren" -#: src/ui/gui/data-editor.ui:444 src/ui/gui/output-viewer.ui:40 -#: src/ui/gui/syntax-editor.ui:131 +#: src/ui/gui/data-editor.ui:448 src/ui/gui/output-viewer.ui:46 +#: src/ui/gui/syntax-editor.ui:135 msgid "_Windows" msgstr "_Vensters" -#: src/ui/gui/data-editor.ui:450 src/ui/gui/output-viewer.ui:46 -#: src/ui/gui/syntax-editor.ui:137 +#: src/ui/gui/data-editor.ui:454 src/ui/gui/output-viewer.ui:52 +#: src/ui/gui/syntax-editor.ui:141 msgid "_Minimize All Windows" msgstr "_Minimaliseer alle vensters" -#: src/ui/gui/data-editor.ui:456 +#: src/ui/gui/data-editor.ui:460 msgid "_Split" msgstr "_Splitsen" -#: src/ui/gui/data-editor.ui:630 +#: src/ui/gui/data-editor.ui:635 msgid "Information Area" msgstr "Informatiegebied" -#: src/ui/gui/data-editor.ui:652 +#: src/ui/gui/data-editor.ui:657 msgid "Processor Area" msgstr "Processorgebied" -#: src/ui/gui/data-editor.ui:677 +#: src/ui/gui/data-editor.ui:682 msgid "Case Counter Area" msgstr "Case-tellergebied" -#: src/ui/gui/data-editor.ui:702 +#: src/ui/gui/data-editor.ui:707 msgid "Filter Use Status Area" msgstr "Filtergebruik statusgebied" -#: src/ui/gui/data-editor.ui:728 +#: src/ui/gui/data-editor.ui:733 msgid "Weight Status Area" msgstr "Weging statusgebied" -#: src/ui/gui/data-editor.ui:754 +#: src/ui/gui/data-editor.ui:759 msgid "Split File Status Area" msgstr "Splitsbestand statusgebied" @@ -6716,26 +6993,135 @@ msgstr "Splitsbestand statusgebied" msgid "_Export" msgstr "_Exporteer" -#: src/ui/gui/syntax-editor.ui:100 +#: src/ui/gui/syntax-editor.ui:104 msgid "_Run" msgstr "Uitvoe_ren" -#: src/ui/gui/syntax-editor.ui:106 +#: src/ui/gui/syntax-editor.ui:110 msgid "All" msgstr "Alles" -#: src/ui/gui/syntax-editor.ui:112 +#: src/ui/gui/syntax-editor.ui:116 msgid "Selection" msgstr "Selectie" -#: src/ui/gui/syntax-editor.ui:118 +#: src/ui/gui/syntax-editor.ui:122 msgid "Current Line" msgstr "Huidige regel" -#: src/ui/gui/syntax-editor.ui:125 +#: src/ui/gui/syntax-editor.ui:129 msgid "To End" msgstr "Naar einde" +#~ msgid "column %d" +#~ msgstr "kolom %d" + +#~ msgid "columns %d-%d" +#~ msgstr "kolommen %d-%d" + +#~ msgid "%s field) " +#~ msgstr "%s veld) " + +#~ msgid "Syntax error %s at %s." +#~ msgstr "Syntaxfout %s op %s." + +#~ msgid "expecting ATTRIBUTE= or DELETE=" +#~ msgstr "verwacht ATTRIBUTE= of DELETE=" + +#~ msgid "expecting `('" +#~ msgstr "'(' verwacht" + +#~ msgid "String expected for variable label." +#~ msgstr "Tekenreeks verwacht voor variabelenlabel." + +#~ msgid "Expecting BATCH or INTERACTIVE after SYNTAX." +#~ msgstr "BATCH of INTERACTIVE verwacht na SYNTAX." + +#~ msgid "Expecting YES or NO after CD." +#~ msgstr "YES of NO verwacht na CD." + +#~ msgid "Expecting CONTINUE or STOP after ERROR." +#~ msgstr "CONTINUE of STOP verwacht na ERROR." + +#~ msgid "while expecting COLUMNWISE" +#~ msgstr "terwijl COLUMNWISE verwacht werd" + +#~ msgid "expecting BREAK" +#~ msgstr "BREAK verwacht" + +#~ msgid "expecting `)'" +#~ msgstr "')' verwacht" + +#~ msgid "expecting VARIABLES" +#~ msgstr "VARIABLES verwacht" + +#~ msgid "in expression" +#~ msgstr "in expressie" + +#, fuzzy +#~ msgid "Missing space following `E' at offset %zu in MRSETS record" +#~ msgstr "Dubbele variabelenaam %s op offset %zu in MRSETS record." + +#~ msgid "expecting BY" +#~ msgstr "BY verwacht" + +#~ msgid "Multivariate GLM not yet supported" +#~ msgstr "Mutivariante GLM wordt nog niet ondersteund" + +#~ msgid "expecting FIXED or DELIMITED" +#~ msgstr "FIXED of DELIMITED verwacht" + +#~ msgid "expecting LINE or VARIABLES" +#~ msgstr "LINE of VARIABLES verwacht" + +#~ msgid "expecting COMM or TAPE" +#~ msgstr "COMM of TAPE verwacht" + +#~ msgid "COLUMN subcommand multiply specified." +#~ msgstr "COLUMN-subopdracht meerdere keren gespecificeerd." + +#~ msgid "hash table:" +#~ msgstr "hash-tabel:" + +#~ msgid "Warnings (%d) exceed limit (%d)." +#~ msgstr "Waarschuwingen (%d) overschrijden limiet (%d)." + +#~ msgid "Errors (%d) exceed limit (%d)." +#~ msgstr "Fouten (%d) overschrijden limiet (%d)." + +#~ msgid "`%s' is not a variable name" +#~ msgstr "'%s' is geen variabelennaam" + +#~ msgid " cases" +#~ msgstr " cases" + +#~ msgid "Error closing FLIP source file: %s." +#~ msgstr "Fout tijdens sluiten FLIP bronbestand: %s." + +#~ msgid "%s: Creating temporary file: %s." +#~ msgstr "%s: Aanmaken tijdelijk bestand: %s." + +#~ msgid "%s: Creating file: %s." +#~ msgstr "%s: Aanmaken bestand: %s." + +#~ msgid "String exceeds 255 characters in length (%zu characters)." +#~ msgstr "Tekenreeks overschrijdt de lengte van 255 tekens (%zu tekens)." + +#~ msgid "Missing required subcommand TABLES." +#~ msgstr "Mis vereiste subopdracht TABLES." + +#~ msgid "TABLES subcommand may not appear more than once." +#~ msgstr "TABLES-subopdracht mag niet meer dan 1 keer voorkomen." + +#~ msgid "Sort Ascending" +#~ msgstr "Sorteer oplopend" + +#~ msgid "Sort Descending" +#~ msgstr "Sorteer aflopend" + +#~ msgid "_Fonts" +#~ msgstr "_Fonts" + #~ msgid "Variable %s has label of invalid length %zu." #~ msgstr "Variabele %s heeft label van ongeldige lengte %zu." diff --git a/src/data/any-reader.c b/src/data/any-reader.c index 731f552a..807c4fe9 100644 --- a/src/data/any-reader.c +++ b/src/data/any-reader.c @@ -53,7 +53,7 @@ try_detect (const char *file_name, bool (*detect) (FILE *)) file = fn_open (file_name, "rb"); if (file == NULL) { - msg (ME, _("An error occurred while opening \"%s\": %s."), + msg (ME, _("An error occurred while opening `%s': %s."), file_name, strerror (errno)); return IO_ERROR; } @@ -98,7 +98,7 @@ any_reader_open (struct file_handle *handle, struct dictionary **dict) else if (result == YES) return pfm_open_reader (handle, dict, NULL); - msg (SE, _("\"%s\" is not a system or portable file."), + msg (SE, _("`%s' is not a system or portable file."), fh_get_file_name (handle)); return NULL; } diff --git a/src/data/calendar.c b/src/data/calendar.c index eb9e6725..ef6aa675 100644 --- a/src/data/calendar.c +++ b/src/data/calendar.c @@ -52,8 +52,7 @@ raw_gregorian_to_offset (int y, int m, int d) Gregorian calendar. Returns SYSMIS for dates before 14 Oct 1582. */ double -calendar_gregorian_to_offset (int y, int m, int d, - calendar_error_func *error, void *aux) +calendar_gregorian_to_offset (int y, int m, int d, char **errorp) { /* Normalize year. */ if (y >= 0 && y < 100) @@ -78,7 +77,9 @@ calendar_gregorian_to_offset (int y, int m, int d, } else { - error (aux, _("Month %d is not in acceptable range of 0 to 13."), m); + if (errorp != NULL) + *errorp = xasprintf (_("Month %d is not in acceptable range of " + "0 to 13."), m); return SYSMIS; } } @@ -86,19 +87,24 @@ calendar_gregorian_to_offset (int y, int m, int d, /* Normalize day. */ if (d < 0 || d > 31) { - error (aux, _("Day %d is not in acceptable range of 0 to 31."), d); + if (errorp != NULL) + *errorp = xasprintf (_("Day %d is not in acceptable range of " + "0 to 31."), d); return SYSMIS; } /* Validate date. */ if (y < 1582 || (y == 1582 && (m < 10 || (m == 10 && d < 15)))) { - error (aux, _("Date %04d-%d-%d is before the earliest acceptable " - "date of 1582-10-15."), y, m, d); + if (errorp != NULL) + *errorp = xasprintf (_("Date %04d-%d-%d is before the earliest " + "acceptable date of 1582-10-15."), y, m, d); return SYSMIS; } /* Calculate offset. */ + if (errorp != NULL) + *errorp = NULL; return raw_gregorian_to_offset (y, m, d); } diff --git a/src/data/calendar.h b/src/data/calendar.h index 06d2fd3a..55356904 100644 --- a/src/data/calendar.h +++ b/src/data/calendar.h @@ -1,10 +1,7 @@ #ifndef CALENDAR_H #define CALENDAR_H 1 -typedef void calendar_error_func (void *aux, const char *, ...); - -double calendar_gregorian_to_offset (int y, int m, int d, - calendar_error_func *, void *aux); +double calendar_gregorian_to_offset (int y, int m, int d, char **errorp); void calendar_offset_to_gregorian (int ofs, int *y, int *m, int *d, int *yd); int calendar_offset_to_year (int ofs); int calendar_offset_to_month (int ofs); diff --git a/src/data/case-tmpfile.c b/src/data/case-tmpfile.c index b2444b9b..58e437ad 100644 --- a/src/data/case-tmpfile.c +++ b/src/data/case-tmpfile.c @@ -52,7 +52,7 @@ width_to_n_bytes (int width) static void * value_to_data (const union value *value_, int width) { - union value *value = (union value *) value_; + union value *value = CONST_CAST (union value *, value_); assert (sizeof value->f == sizeof (double)); if (width == 0) return &value->f; diff --git a/src/data/case.h b/src/data/case.h index 0bfc62cd..d00c2ad3 100644 --- a/src/data/case.h +++ b/src/data/case.h @@ -135,7 +135,7 @@ case_unshare (struct ccase *c) static inline struct ccase * case_ref (const struct ccase *c_) { - struct ccase *c = (struct ccase *) c_; + struct ccase *c = CONST_CAST (struct ccase *, c_); c->ref_cnt++; return c; } diff --git a/src/data/casegrouper.c b/src/data/casegrouper.c index 9e7ab157..dee1488e 100644 --- a/src/data/casegrouper.c +++ b/src/data/casegrouper.c @@ -91,8 +91,8 @@ casegrouper_get_next_group (struct casegrouper *grouper, writer = autopaging_writer_create ( casereader_get_proto (grouper->reader)); - case_ref (group_case); - casewriter_write (writer, group_case); + + casewriter_write (writer, case_ref (group_case)); while ((tmp = casereader_peek (grouper->reader, 0)) != NULL && grouper->same_group (group_case, tmp, grouper->aux)) @@ -100,6 +100,7 @@ casegrouper_get_next_group (struct casegrouper *grouper, case_unref (casereader_read (grouper->reader)); casewriter_write (writer, tmp); } + case_unref (tmp); case_unref (group_case); *reader = casewriter_make_reader (writer); diff --git a/src/data/casereader-filter.c b/src/data/casereader-filter.c index 5244202e..da515c6d 100644 --- a/src/data/casereader-filter.c +++ b/src/data/casereader-filter.c @@ -273,7 +273,7 @@ static bool casereader_filter_missing_destroy (void *); when the filtering casereader is destroyed. */ struct casereader * casereader_create_filter_missing (struct casereader *reader, - const struct variable **vars, size_t var_cnt, + const struct variable *const*vars, size_t var_cnt, enum mv_class class, casenumber *n_missing, struct casewriter *exclude) diff --git a/src/data/casereader-select.c b/src/data/casereader-select.c index a26ef674..d75a605b 100644 --- a/src/data/casereader-select.c +++ b/src/data/casereader-select.c @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 2009 Free Software Foundation, Inc. + Copyright (C) 2009, 2010 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -72,7 +72,7 @@ casereader_select (struct casereader *subreader, { struct casereader_select *cs = xmalloc (sizeof *cs); cs->by = by; - cs->i = 0; + cs->i = by - 1; return casereader_create_filter_func (subreader, casereader_select_include, casereader_select_destroy, diff --git a/src/data/casereader-translator.c b/src/data/casereader-translator.c index 27ea4134..fc823049 100644 --- a/src/data/casereader-translator.c +++ b/src/data/casereader-translator.c @@ -490,7 +490,7 @@ uniquify (const struct ccase *c, void *aux) const union value *current_value = case_data (c, cdr->key); const int key_width = var_get_width (cdr->key); const double weight = cdr->weight ? case_data (c, cdr->weight)->f : 1.0; - const struct ccase *next_case = casereader_peek (cdr->clone, cdr->n + 1); + struct ccase *next_case = casereader_peek (cdr->clone, cdr->n + 1); int dir = 0; cdr->n ++; @@ -501,6 +501,7 @@ uniquify (const struct ccase *c, void *aux) dir = value_compare_3way (case_data (next_case, cdr->key), current_value, key_width); + case_unref (next_case); if ( dir != 0 ) { /* Insist that the data are sorted */ diff --git a/src/data/casereader.c b/src/data/casereader.c index 98c10273..9f3d5cf9 100644 --- a/src/data/casereader.c +++ b/src/data/casereader.c @@ -331,7 +331,7 @@ casereader_advance (struct casereader *reader, casenumber n) /* Copies all the cases in READER to WRITER, propagating errors - appropriately. */ + appropriately. READER is destroyed by this function */ void casereader_transfer (struct casereader *reader, struct casewriter *writer) { diff --git a/src/data/casereader.h b/src/data/casereader.h index f2231e2d..a2e789ae 100644 --- a/src/data/casereader.h +++ b/src/data/casereader.h @@ -100,7 +100,7 @@ casereader_create_filter_weight (struct casereader *, struct casewriter *exclude); struct casereader * casereader_create_filter_missing (struct casereader *, - const struct variable **vars, size_t var_cnt, + const struct variable *const*vars, size_t var_cnt, enum mv_class, casenumber *n_missing, struct casewriter *exclude); diff --git a/src/data/csv-file-writer.c b/src/data/csv-file-writer.c index 7d35b1c2..70568c3e 100644 --- a/src/data/csv-file-writer.c +++ b/src/data/csv-file-writer.c @@ -158,7 +158,7 @@ csv_writer_open (struct file_handle *fh, const struct dictionary *dict, &w->file, NULL); if (w->rf == NULL) { - msg (ME, _("Error opening \"%s\" for writing as a system file: %s."), + msg (ME, _("Error opening `%s' for writing as a system file: %s."), fh_get_file_name (fh), strerror (errno)); goto error; } @@ -459,7 +459,7 @@ close_writer (struct csv_writer *w) ok = false; if (!ok) - msg (ME, _("An I/O error occurred writing CSV file \"%s\"."), + msg (ME, _("An I/O error occurred writing CSV file `%s'."), fh_get_file_name (w->fh)); if (ok ? !replace_file_commit (w->rf) : !replace_file_abort (w->rf)) diff --git a/src/data/data-in.c b/src/data/data-in.c index c105454a..d36aefb5 100644 --- a/src/data/data-in.c +++ b/src/data/data-in.c @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 1997-9, 2000, 2006, 2009 Free Software Foundation, Inc. + Copyright (C) 1997-9, 2000, 2006, 2009, 2010 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -20,34 +20,33 @@ #include #include +#include #include #include +#include #include #include #include #include -#include -#include #include "calendar.h" +#include "dictionary.h" +#include "format.h" #include "identifier.h" +#include "libpspp/assertion.h" +#include "libpspp/compiler.h" +#include "libpspp/i18n.h" +#include "libpspp/integer-format.h" +#include "libpspp/legacy-encoding.h" +#include "libpspp/misc.h" +#include "libpspp/str.h" #include "settings.h" #include "value.h" -#include "format.h" -#include "dictionary.h" -#include -#include -#include -#include -#include -#include -#include -#include -#include "c-ctype.h" -#include "c-strtod.h" -#include "minmax.h" -#include "xalloc.h" +#include "gl/c-ctype.h" +#include "gl/c-strtod.h" +#include "gl/minmax.h" +#include "gl/xalloc.h" #include "gettext.h" #define _(msgid) gettext (msgid) @@ -55,61 +54,34 @@ /* Information about parsing one data field. */ struct data_in { - const char *src_enc; /* Encoding of source. */ struct substring input; /* Source. */ enum fmt_type format; /* Input format. */ - int implied_decimals; /* Number of implied decimal places. */ union value *output; /* Destination. */ int width; /* Output width. */ - - int first_column; /* First column of field; 0 if inapplicable. */ - int last_column; /* Last column. */ }; - - -typedef bool data_in_parser_func (struct data_in *); +typedef char *data_in_parser_func (struct data_in *); #define FMT(NAME, METHOD, IMIN, OMIN, IO, CATEGORY) \ static data_in_parser_func parse_##METHOD; #include "format.def" -static void vdata_warning (const struct data_in *, const char *, va_list) - PRINTF_FORMAT (2, 0); -static void data_warning (const struct data_in *, const char *, ...) - PRINTF_FORMAT (2, 3); - -static void apply_implied_decimals (struct data_in *); static void default_result (struct data_in *); static bool trim_spaces_and_check_missing (struct data_in *); static int hexit_value (int c); /* Parses the characters in INPUT, which are encoded in the given - ENCODING, according to FORMAT. Stores the parsed - representation in OUTPUT, which the caller must have - initialized with the given WIDTH (0 for a numeric field, - otherwise the string width). - Iff FORMAT is a string format, then DICT must be a pointer - to the dictionary associated with OUTPUT. Otherwise, DICT - may be null. - - If no decimal point is included in a numeric format, then - IMPLIED_DECIMALS decimal places are implied. Specify 0 if no - decimal places should be implied. - - If FIRST_COLUMN and LAST_COLUMN are nonzero, then they should - be the 1-based column number of the first and - one-past-the-last-character in INPUT, for use in error - messages. (LAST_COLUMN cannot always be calculated from - FIRST_COLUMN plus the length of the input because of the - possibility of escaped quotes in strings, etc.) */ -bool -data_in (struct substring input, const char *encoding, - enum fmt_type format, int implied_decimals, - int first_column, int last_column, - const struct dictionary *dict, - union value *output, int width) + INPUT_ENCODING, according to FORMAT. + + Stores the parsed representation in OUTPUT, which the caller must have + initialized with the given WIDTH (0 for a numeric field, otherwise the + string width). If FORMAT is FMT_A, then OUTPUT_ENCODING must specify the + correct encoding for OUTPUT (normally obtained via dict_get_encoding()). */ +char * +data_in (struct substring input, const char *input_encoding, + enum fmt_type format, + union value *output, int width, const char *output_encoding) { static data_in_parser_func *const handlers[FMT_NUMBER_OF_FORMATS] = { @@ -119,60 +91,190 @@ data_in (struct substring input, const char *encoding, struct data_in i; - char *s = NULL; - bool ok; + enum fmt_category cat; + const char *dest_encoding; + char *s; + char *error; assert ((width != 0) == fmt_is_string (format)); i.format = format; - i.implied_decimals = implied_decimals; i.output = output; i.width = width; - i.first_column = first_column; - i.last_column = last_column; - i.src_enc = encoding; - if (ss_is_empty (input)) { default_result (&i); - return true; + return NULL; } - if (fmt_get_category (format) & ( FMT_CAT_BINARY | FMT_CAT_HEXADECIMAL | FMT_CAT_LEGACY)) + cat = fmt_get_category (format); + if (cat & (FMT_CAT_BASIC | FMT_CAT_HEXADECIMAL + | FMT_CAT_DATE | FMT_CAT_TIME | FMT_CAT_DATE_COMPONENT)) { - i.input = input; + /* We're going to parse these into numbers. For this purpose we want to + deal with them in the local "C" encoding. Any character not in that + encoding wouldn't be valid anyhow. */ + dest_encoding = LEGACY_NATIVE; + } + else if (cat & (FMT_CAT_BINARY | FMT_CAT_LEGACY)) + { + /* Don't recode these binary formats at all, since they are not text. */ + dest_encoding = NULL; } else { - const char *dest_encoding; - - if ( dict == NULL) - { - assert (0 == (fmt_get_category (format) & (FMT_CAT_BINARY | FMT_CAT_STRING))); - dest_encoding = LEGACY_NATIVE; - } + assert (cat == FMT_CAT_STRING); + if (format == FMT_AHEX) + { + /* We want the hex digits in the local "C" encoding, even though the + result may not be in that encoding. */ + dest_encoding = LEGACY_NATIVE; + } else - dest_encoding = dict_get_encoding (dict); + { + /* Use the final output encoding. */ + dest_encoding = output_encoding; + } + } - s = recode_string (dest_encoding, i.src_enc, ss_data (input), ss_length (input)); - i.input = ss_cstr (s); + if (dest_encoding != NULL) + { + i.input = recode_substring_pool (dest_encoding, input_encoding, input, + NULL); + s = i.input.string; + } + else + { + i.input = input; + s = NULL; } - ok = handlers[i.format] (&i); - if (!ok) + error = handlers[i.format] (&i); + if (error != NULL) default_result (&i); free (s); - return ok; + + return error; +} + +bool +data_in_msg (struct substring input, const char *input_encoding, + enum fmt_type format, + union value *output, int width, const char *output_encoding) +{ + char *error = data_in (input, input_encoding, format, + output, width, output_encoding); + if (error != NULL) + { + msg (SW,_("Data is not valid as format %s: %s"), + fmt_name (format), error); + free (error); + return false; + } + else + return true; +} + +static bool +number_has_implied_decimals (const char *s, enum fmt_type type) +{ + int decimal = settings_get_style (type)->decimal; + bool got_digit = false; + for (;;) + { + switch (*s) + { + case '0': case '1': case '2': case '3': case '4': + case '5': case '6': case '7': case '8': case '9': + got_digit = true; + break; + + case '+': case '-': + if (got_digit) + return false; + break; + + case 'e': case 'E': case 'd': case 'D': + return false; + + case '.': case ',': + if (*s == decimal) + return false; + break; + + case '\0': + return true; + + default: + break; + } + + s++; + } +} + +static bool +has_implied_decimals (struct substring input, const char *input_encoding, + enum fmt_type format) +{ + bool retval; + char *s; + + switch (format) + { + case FMT_F: + case FMT_COMMA: + case FMT_DOT: + case FMT_DOLLAR: + case FMT_PCT: + case FMT_E: + case FMT_Z: + break; + + case FMT_N: + case FMT_IB: + case FMT_PIB: + case FMT_P: + case FMT_PK: + return true; + + default: + return false; + } + + s = recode_string (LEGACY_NATIVE, input_encoding, + ss_data (input), ss_length (input)); + retval = (format == FMT_Z + ? strchr (s, '.') == NULL + : number_has_implied_decimals (s, format)); + free (s); + + return retval; } +/* In some cases, when no decimal point is explicitly included in numeric + input, its position is implied by the number of decimal places in the input + format. In such a case, this function may be called just after data_in(). + Its arguments are a subset of that function's arguments plus D, the number + of decimal places associated with FORMAT. + + If it is appropriate, this function modifies the numeric value in OUTPUT. */ +void +data_in_imply_decimals (struct substring input, const char *input_encoding, + enum fmt_type format, int d, union value *output) +{ + if (d > 0 && output->f != SYSMIS + && has_implied_decimals (input, input_encoding, format)) + output->f /= pow (10., d); +} /* Format parsers. */ /* Parses F, COMMA, DOT, DOLLAR, PCT, and E input formats. */ -static bool +static char * parse_number (struct data_in *i) { const struct fmt_number_style *style = @@ -191,7 +293,7 @@ parse_number (struct data_in *i) /* Trim spaces and check for missing value representation. */ if (trim_spaces_and_check_missing (i)) - return true; + return NULL; ds_init_empty (&tmp); ds_extend (&tmp, 64); @@ -270,12 +372,13 @@ parse_number (struct data_in *i) if (!ss_is_empty (i->input)) { + char *error; if (ds_is_empty (&tmp)) - data_warning (i, _("Field contents are not numeric.")); + error = xstrdup (_("Field contents are not numeric.")); else - data_warning (i, _("Number followed by garbage.")); + error = xstrdup (_("Number followed by garbage.")); ds_destroy (&tmp); - return false; + return error; } /* Let c_strtod() do the conversion. */ @@ -284,37 +387,34 @@ parse_number (struct data_in *i) i->output->f = c_strtod (ds_cstr (&tmp), &tail); if (*tail != '\0') { - data_warning (i, _("Invalid numeric syntax.")); errno = save_errno; ds_destroy (&tmp); - return false; + return xstrdup (_("Invalid numeric syntax.")); } else if (errno == ERANGE) { if (fabs (i->output->f) > 1) { - data_warning (i, _("Too-large number set to system-missing.")); i->output->f = SYSMIS; + ds_destroy (&tmp); + return xstrdup (_("Too-large number set to system-missing.")); } else { - data_warning (i, _("Too-small number set to zero.")); i->output->f = 0.0; + ds_destroy (&tmp); + return xstrdup (_("Too-small number set to zero.")); } } else - { - errno = save_errno; - if (!explicit_decimals) - apply_implied_decimals (i); - } + errno = save_errno; ds_destroy (&tmp); - return true; + return NULL; } /* Parses N format. */ -static bool +static char * parse_N (struct data_in *i) { int c; @@ -323,19 +423,15 @@ parse_N (struct data_in *i) while ((c = ss_get_char (&i->input)) != EOF) { if (!c_isdigit (c)) - { - data_warning (i, _("All characters in field must be digits.")); - return false; - } + return xstrdup (_("All characters in field must be digits.")); i->output->f = i->output->f * 10.0 + (c - '0'); } - apply_implied_decimals (i); - return true; + return NULL; } /* Parses PIBHEX format. */ -static bool +static char * parse_PIBHEX (struct data_in *i) { double n; @@ -346,19 +442,16 @@ parse_PIBHEX (struct data_in *i) while ((c = ss_get_char (&i->input)) != EOF) { if (!c_isxdigit (c)) - { - data_warning (i, _("Unrecognized character in field.")); - return false; - } + return xstrdup (_("Unrecognized character in field.")); n = n * 16.0 + hexit_value (c); } i->output->f = n; - return true; + return NULL; } /* Parses RBHEX format. */ -static bool +static char * parse_RBHEX (struct data_in *i) { double d; @@ -370,21 +463,15 @@ parse_RBHEX (struct data_in *i) int hi = ss_get_char (&i->input); int lo = ss_get_char (&i->input); if (lo == EOF) - { - data_warning (i, _("Field must have even length.")); - return false; - } + return xstrdup (_("Field must have even length.")); else if (!c_isxdigit (hi) || !c_isxdigit (lo)) - { - data_warning (i, _("Field must contain only hex digits.")); - return false; - } + return xstrdup (_("Field must contain only hex digits.")); ((unsigned char *) &d)[j] = 16 * hexit_value (hi) + hexit_value (lo); } i->output->f = d; - return true; + return NULL; } /* Digits for Z format. */ @@ -416,7 +503,7 @@ is_negative_z_digit (int c) } /* Parses Z format. */ -static bool +static char * parse_Z (struct data_in *i) { struct string tmp; @@ -428,7 +515,7 @@ parse_Z (struct data_in *i) /* Trim spaces and check for missing value representation. */ if (trim_spaces_and_check_missing (i)) - return true; + return NULL; ds_init_empty (&tmp); ds_extend (&tmp, 64); @@ -454,18 +541,21 @@ parse_Z (struct data_in *i) else { ds_destroy (&tmp); - return false; + return xstrdup (_("Invalid zoned decimal syntax.")); } } if (!ss_is_empty (i->input)) { + char *error; + if (ds_length (&tmp) == 1) - data_warning (i, _("Field contents are not numeric.")); + error = xstrdup (_("Field contents are not numeric.")); else - data_warning (i, _("Number followed by garbage.")); + error = xstrdup (_("Number followed by garbage.")); + ds_destroy (&tmp); - return false; + return error; } /* Let c_strtod() do the conversion. */ @@ -476,28 +566,26 @@ parse_Z (struct data_in *i) { if (fabs (i->output->f) > 1) { - data_warning (i, _("Too-large number set to system-missing.")); i->output->f = SYSMIS; + ds_destroy (&tmp); + return xstrdup (_("Too-large number set to system-missing.")); } else { - data_warning (i, _("Too-small number set to zero.")); i->output->f = 0.0; + ds_destroy (&tmp); + return xstrdup (_("Too-small number set to zero.")); } } else - { - errno = save_errno; - if (!got_dot) - apply_implied_decimals (i); - } + errno = save_errno; ds_destroy (&tmp); - return true; + return NULL; } /* Parses IB format. */ -static bool +static char * parse_IB (struct data_in *i) { size_t bytes; @@ -517,21 +605,17 @@ parse_IB (struct data_in *i) i->output->f = -(double) -value; } - apply_implied_decimals (i); - - return true; + return NULL; } /* Parses PIB format. */ -static bool +static char * parse_PIB (struct data_in *i) { i->output->f = integer_get (settings_get_input_integer_format (), ss_data (i->input), MIN (8, ss_length (i->input))); - apply_implied_decimals (i); - - return true; + return NULL; } /* Consumes the first character of S. Stores its high 4 bits in @@ -546,7 +630,7 @@ get_nibbles (struct substring *s, int *high_nibble, int *low_nibble) } /* Parses P format. */ -static bool +static char * parse_P (struct data_in *i) { int high_nibble, low_nibble; @@ -557,26 +641,24 @@ parse_P (struct data_in *i) { get_nibbles (&i->input, &high_nibble, &low_nibble); if (high_nibble > 9 || low_nibble > 9) - return false; + return xstrdup (_("Invalid syntax for P field.")); i->output->f = (100 * i->output->f) + (10 * high_nibble) + low_nibble; } get_nibbles (&i->input, &high_nibble, &low_nibble); if (high_nibble > 9) - return false; + return xstrdup (_("Invalid syntax for P field.")); i->output->f = (10 * i->output->f) + high_nibble; if (low_nibble < 10) i->output->f = (10 * i->output->f) + low_nibble; else if (low_nibble == 0xb || low_nibble == 0xd) i->output->f = -i->output->f; - apply_implied_decimals (i); - - return true; + return NULL; } /* Parses PK format. */ -static bool +static char * parse_PK (struct data_in *i) { i->output->f = 0.0; @@ -588,18 +670,16 @@ parse_PK (struct data_in *i) if (high_nibble > 9 || low_nibble > 9) { i->output->f = SYSMIS; - return true; + return NULL; } i->output->f = (100 * i->output->f) + (10 * high_nibble) + low_nibble; } - apply_implied_decimals (i); - - return true; + return NULL; } /* Parses RB format. */ -static bool +static char * parse_RB (struct data_in *i) { enum float_format ff = settings_get_input_float_format (); @@ -610,11 +690,11 @@ parse_RB (struct data_in *i) else i->output->f = SYSMIS; - return true; + return NULL; } /* Parses A format. */ -static bool +static char * parse_A (struct data_in *i) { /* This is equivalent to buf_copy_rpad, except that we posibly @@ -629,11 +709,11 @@ parse_A (struct data_in *i) if (dst_size > src_size) memset (&dst[src_size], ' ', dst_size - src_size); - return true; + return NULL; } /* Parses AHEX format. */ -static bool +static char * parse_AHEX (struct data_in *i) { uint8_t *s = value_str_rw (i->output, i->width); @@ -646,21 +726,10 @@ parse_AHEX (struct data_in *i) if (hi == EOF) break; else if (lo == EOF) - { - data_warning (i, _("Field must have even length.")); - return false; - } + return xstrdup (_("Field must have even length.")); - if (0 != strcmp (i->src_enc, LEGACY_NATIVE)) - { - hi = legacy_to_native (i->src_enc, hi); - lo = legacy_to_native (i->src_enc, lo); - } if (!c_isxdigit (hi) || !c_isxdigit (lo)) - { - data_warning (i, _("Field must contain only hex digits.")); - return false; - } + return xstrdup (_("Field must contain only hex digits.")); if (j < i->width) s[j] = hexit_value (hi) * 16 + hexit_value (lo); @@ -668,7 +737,7 @@ parse_AHEX (struct data_in *i) memset (&s[j], ' ', i->width - j); - return true; + return NULL; } /* Date & time format components. */ @@ -685,7 +754,7 @@ enum time_sign MAX_DIGITS characters in I, storing the result into *RESULT. Returns true if successful, false if no integer was present. */ -static bool +static char * WARN_UNUSED_RESULT parse_int (struct data_in *i, long *result, size_t max_digits) { struct substring head = ss_head (i->input, max_digits); @@ -693,28 +762,25 @@ parse_int (struct data_in *i, long *result, size_t max_digits) if (n) { ss_advance (&i->input, n); - return true; + return NULL; } else - { - data_warning (i, _("Syntax error in date field.")); - return false; - } + return xstrdup (_("Syntax error in date field.")); } /* Parses a date integer between 1 and 31 from I, storing it into *DAY. Returns true if successful, false if no date was present. */ -static bool +static char * parse_day (struct data_in *i, long *day) { - if (!parse_int (i, day, SIZE_MAX)) - return false; + char *error = parse_int (i, day, SIZE_MAX); + if (error != NULL) + return error; if (*day >= 1 && *day <= 31) - return true; + return NULL; - data_warning (i, _("Day (%ld) must be between 1 and 31."), *day); - return false; + return xasprintf (_("Day (%ld) must be between 1 and 31."), *day); } /* Parses an integer from the beginning of I. @@ -723,11 +789,12 @@ parse_day (struct data_in *i, long *day) If *TIME_SIGN is SIGN_NO_TIME, allows a sign to precede the time and sets *TIME_SIGN. Otherwise, does not allow a sign. Returns true if successful, false if no integer was present. */ -static bool +static char * parse_time_units (struct data_in *i, double seconds_per_unit, enum time_sign *time_sign, double *time) { + char *error; long units; if (*time_sign == SIGN_NO_TIME) @@ -740,28 +807,25 @@ parse_time_units (struct data_in *i, double seconds_per_unit, *time_sign = SIGN_POSITIVE; } } - if (!parse_int (i, &units, SIZE_MAX)) - return false; + error = parse_int (i, &units, SIZE_MAX); + if (error != NULL) + return error; if (units < 0) - { - data_warning (i, _("Syntax error in date field.")); - return false; - } + return xstrdup (_("Syntax error in date field.")); *time += units * seconds_per_unit; - return true; + return NULL; } /* Parses a data delimiter from the beginning of I. Returns true if successful, false if no delimiter was present. */ -static bool +static char * parse_date_delimiter (struct data_in *i) { if (ss_ltrim (&i->input, ss_cstr ("-/.," CC_SPACES))) - return true; + return NULL; - data_warning (i, _("Delimiter expected between fields in date.")); - return false; + return xstrdup (_("Delimiter expected between fields in date.")); } /* Parses spaces at the beginning of I. */ @@ -802,15 +866,16 @@ match_name (struct substring token, const char *const *names, long *output) /* Parses a month name or number from the beginning of I, storing the month (in range 1...12) into *MONTH. Returns true if successful, false if no month was present. */ -static bool +static char * parse_month (struct data_in *i, long *month) { if (c_isdigit (ss_first (i->input))) { - if (!parse_int (i, month, SIZE_MAX)) - return false; + char *error = parse_int (i, month, SIZE_MAX); + if (error != NULL) + return error; if (*month >= 1 && *month <= 12) - return true; + return NULL; } else { @@ -831,22 +896,22 @@ parse_month (struct data_in *i, long *month) struct substring token = parse_name_token (i); if (match_name (ss_head (token, 3), english_names, month) || match_name (ss_head (token, 4), roman_names, month)) - return true; + return NULL; } - data_warning (i, _("Unrecognized month format. Months may be specified " - "as Arabic or Roman numerals or as at least 3 letters " - "of their English names.")); - return false; + return xstrdup (_("Unrecognized month format. Months may be specified " + "as Arabic or Roman numerals or as at least 3 letters " + "of their English names.")); } /* Parses a year of at most MAX_DIGITS from the beginning of I, storing a "4-digit" year into *YEAR. */ -static bool +static char * parse_year (struct data_in *i, long *year, size_t max_digits) { - if (!parse_int (i, year, max_digits)) - return false; + char *error = parse_int (i, year, max_digits); + if (error != NULL) + return error; if (*year >= 0 && *year <= 99) { @@ -859,28 +924,26 @@ parse_year (struct data_in *i, long *year, size_t max_digits) *year += epoch_century + 100; } if (*year >= 1582 || *year <= 19999) - return true; + return NULL; - data_warning (i, _("Year (%ld) must be between 1582 and 19999."), *year); - return false; + return xasprintf (_("Year (%ld) must be between 1582 and 19999."), *year); } /* Returns true if input in I has been exhausted, false otherwise. */ -static bool +static char * parse_trailer (struct data_in *i) { if (ss_is_empty (i->input)) - return true; + return NULL; - data_warning (i, _("Trailing garbage \"%.*s\" following date."), - (int) ss_length (i->input), ss_data (i->input)); - return false; + return xasprintf (_("Trailing garbage `%.*s' following date."), + (int) ss_length (i->input), ss_data (i->input)); } /* Parses a 3-digit Julian day-of-year value from I into *YDAY. Returns true if successful, false on failure. */ -static bool +static char * parse_yday (struct data_in *i, long *yday) { struct substring num_s; @@ -888,98 +951,92 @@ parse_yday (struct data_in *i, long *yday) ss_get_chars (&i->input, 3, &num_s); if (ss_span (num_s, ss_cstr (CC_DIGITS)) != 3) - { - data_warning (i, _("Julian day must have exactly three digits.")); - return false; - } + return xstrdup (_("Julian day must have exactly three digits.")); else if (!ss_get_long (&num_s, &num) || num < 1 || num > 366) - { - data_warning (i, _("Julian day (%ld) must be between 1 and 366."), num); - return false; - } + return xasprintf (_("Julian day (%ld) must be between 1 and 366."), num); *yday = num; - return true; + return NULL; } /* Parses a quarter-of-year integer between 1 and 4 from I. Stores the corresponding month into *MONTH. Returns true if successful, false if no quarter was present. */ -static bool +static char * parse_quarter (struct data_in *i, long int *month) { long quarter; + char *error; - if (!parse_int (i, &quarter, SIZE_MAX)) - return false; + error = parse_int (i, &quarter, SIZE_MAX); + if (error != NULL) + return error; if (quarter >= 1 && quarter <= 4) { *month = (quarter - 1) * 3 + 1; - return true; + return NULL; } - data_warning (i, _("Quarter (%ld) must be between 1 and 4."), quarter); - return false; + return xasprintf (_("Quarter (%ld) must be between 1 and 4."), quarter); } /* Parses a week-of-year integer between 1 and 53 from I, Stores the corresponding year-of-day into *YDAY. Returns true if successful, false if no week was present. */ -static bool +static char * parse_week (struct data_in *i, long int *yday) { + char *error; long week; - if (!parse_int (i, &week, SIZE_MAX)) - return false; + error = parse_int (i, &week, SIZE_MAX); + if (error != NULL) + return error; if (week >= 1 && week <= 53) { *yday = (week - 1) * 7 + 1; - return true; + return NULL; } - data_warning (i, _("Week (%ld) must be between 1 and 53."), week); - return false; + return xasprintf (_("Week (%ld) must be between 1 and 53."), week); } /* Parses a time delimiter from the beginning of I. Returns true if successful, false if no delimiter was present. */ -static bool +static char * parse_time_delimiter (struct data_in *i) { if (ss_ltrim (&i->input, ss_cstr (":" CC_SPACES)) > 0) - return true; + return NULL; - data_warning (i, _("Delimiter expected between fields in time.")); - return false; + return xstrdup (_("Delimiter expected between fields in time.")); } /* Parses minutes and optional seconds from the beginning of I. The time is converted into seconds, which are added to *TIME. Returns true if successful, false if an error was found. */ -static bool +static char * parse_minute_second (struct data_in *i, double *time) { long minute; char buf[64]; + char *error; char *cp; /* Parse minutes. */ - if (!parse_int (i, &minute, SIZE_MAX)) - return false; + error = parse_int (i, &minute, SIZE_MAX); + if (error != NULL) + return error; if (minute < 0 || minute > 59) - { - data_warning (i, _("Minute (%ld) must be between 0 and 59."), minute); - return false; - } + return xasprintf (_("Minute (%ld) must be between 0 and 59."), minute); *time += 60. * minute; /* Check for seconds. */ if (ss_ltrim (&i->input, ss_cstr (":" CC_SPACES)) == 0 || !c_isdigit (ss_first (i->input))) - return true; + return NULL; /* Parse seconds. */ cp = buf; @@ -993,13 +1050,13 @@ parse_minute_second (struct data_in *i, double *time) *time += strtod (buf, NULL); - return true; + return NULL; } /* Parses a weekday name from the beginning of I, storing a value of 1=Sunday...7=Saturday into *WEEKDAY. Returns true if successful, false if an error was found. */ -static bool +static char * parse_weekday (struct data_in *i, long *weekday) { static const char *const weekday_names[] = @@ -1011,64 +1068,53 @@ parse_weekday (struct data_in *i, long *weekday) struct substring token = parse_name_token (i); bool ok = match_name (ss_head (token, 2), weekday_names, weekday); if (!ok) - data_warning (i, _("Unrecognized weekday name. At least the first two " - "letters of an English weekday name must be " - "specified.")); - return ok; + return xstrdup (_("Unrecognized weekday name. At least the first two " + "letters of an English weekday name must be " + "specified.")); + return NULL; } /* Date & time formats. */ -/* Helper function for passing to - calendar_gregorian_to_offset. */ -static void -calendar_error (void *i_, const char *format, ...) -{ - struct data_in *i = i_; - va_list args; - - va_start (args, format); - vdata_warning (i, format, args); - va_end (args); -} - /* Parses WKDAY format. */ -static bool +static char * parse_WKDAY (struct data_in *i) { long weekday; + char *error; if (trim_spaces_and_check_missing (i)) - return true; + return NULL; - if (!parse_weekday (i, &weekday) - || !parse_trailer (i)) - return false; + error = parse_weekday (i, &weekday); + if (error == NULL) + error = parse_trailer (i); i->output->f = weekday; - return true; + return error; } /* Parses MONTH format. */ -static bool +static char * parse_MONTH (struct data_in *i) { long month; + char *error; if (trim_spaces_and_check_missing (i)) - return true; + return NULL; - if (!parse_month (i, &month) - || !parse_trailer (i)) - return false; + error = parse_month (i, &month); + if (error == NULL) + error = parse_trailer (i); i->output->f = month; - return true; + return error; } /* Parses DATE, ADATE, EDATE, JDATE, SDATE, QYR, MOYR, KWYR, DATETIME, TIME and DTIME formats. */ -static bool +static char * parse_date (struct data_in *i) { long int year = INT_MIN; @@ -1080,28 +1126,27 @@ parse_date (struct data_in *i) const char *template = fmt_date_template (i->format); size_t template_width = strlen (template); + char *error; if (trim_spaces_and_check_missing (i)) - return true; + return NULL; while (*template != '\0') { unsigned char ch = *template; int count = 1; - bool ok; while (template[count] == ch) count++; template += count; - ok = true; switch (ch) { case 'd': - ok = count < 3 ? parse_day (i, &day) : parse_yday (i, &yday); + error = count < 3 ? parse_day (i, &day) : parse_yday (i, &yday); break; case 'm': - ok = parse_month (i, &month); + error = parse_month (i, &month); break; case 'y': { @@ -1115,119 +1160,71 @@ parse_date (struct data_in *i) else max_digits = 2; } - ok = parse_year (i, &year, max_digits); + error = parse_year (i, &year, max_digits); } break; case 'q': - ok = parse_quarter (i, &month); + error = parse_quarter (i, &month); break; case 'w': - ok = parse_week (i, &yday); + error = parse_week (i, &yday); break; case 'D': - ok = parse_time_units (i, 60. * 60. * 24., &time_sign, &time); + error = parse_time_units (i, 60. * 60. * 24., &time_sign, &time); break; case 'H': - ok = parse_time_units (i, 60. * 60., &time_sign, &time); + error = parse_time_units (i, 60. * 60., &time_sign, &time); break; case 'M': - ok = parse_minute_second (i, &time); + error = parse_minute_second (i, &time); break; case '-': case '/': case '.': case 'X': - ok = parse_date_delimiter (i); + error = parse_date_delimiter (i); break; case ':': - ok = parse_time_delimiter (i); + error = parse_time_delimiter (i); case ' ': parse_spaces (i); + error = NULL; break; default: assert (count == 1); if (!ss_match_char (&i->input, c_toupper (ch)) && !ss_match_char (&i->input, c_tolower (ch))) - { - data_warning (i, _("`%c' expected in date field."), ch); - return false; - } + error = xasprintf (_("`%c' expected in date field."), ch); + else + error = NULL; break; } - if (!ok) - return false; + if (error != NULL) + return error; } - if (!parse_trailer (i)) - return false; + error = parse_trailer (i); + if (error != NULL) + return error; if (year != INT_MIN) { - double ofs = calendar_gregorian_to_offset (year, month, day, - calendar_error, i); + char *error; + double ofs; + + ofs = calendar_gregorian_to_offset (year, month, day, &error); if (ofs == SYSMIS) - return false; + return error; date = (yday - 1 + ofs) * 60. * 60. * 24.; } else date = 0.; i->output->f = date + (time_sign == SIGN_NEGATIVE ? -time : time); - return true; + return NULL; } /* Utility functions. */ -/* Outputs FORMAT with the given ARGS as a warning for input - I. */ -static void -vdata_warning (const struct data_in *i, const char *format, va_list args) -{ - struct msg m; - struct string text; - - ds_init_empty (&text); - ds_put_char (&text, '('); - if (i->first_column != 0) - { - if (i->first_column == i->last_column - 1) - ds_put_format (&text, _("column %d"), i->first_column); - else - ds_put_format (&text, _("columns %d-%d"), - i->first_column, i->last_column - 1); - ds_put_cstr (&text, ", "); - } - ds_put_format (&text, _("%s field) "), fmt_name (i->format)); - ds_put_vformat (&text, format, args); - - m.category = MSG_C_DATA; - m.severity = MSG_S_WARNING; - m.text = ds_cstr (&text); - m.where.file_name = NULL; - m.where.line_number = -1; - - msg_emit (&m); -} - -/* Outputs FORMAT with the given ARGS as a warning for input - I. */ -static void -data_warning (const struct data_in *i, const char *format, ...) -{ - va_list args; - - va_start (args, format); - vdata_warning (i, format, args); - va_end (args); -} - -/* Apply implied decimal places to output. */ -static void -apply_implied_decimals (struct data_in *i) -{ - if (i->implied_decimals > 0) - i->output->f /= pow (10., i->implied_decimals); -} - /* Sets the default result for I. For a numeric format, this is the value set on SET BLANKS (typically system-missing); for a string format, it is all diff --git a/src/data/data-in.h b/src/data/data-in.h index 3ebd5933..ceb023e9 100644 --- a/src/data/data-in.h +++ b/src/data/data-in.h @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 1997-9, 2000, 2006 Free Software Foundation, Inc. + Copyright (C) 1997-9, 2000, 2006, 2010 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -18,19 +18,22 @@ #define DATA_DATA_IN_H 1 #include -#include -#include -#include -#include -#include +#include "data/format.h" +#include "libpspp/legacy-encoding.h" +#include "libpspp/str.h" -enum fmt_type; union value; struct dictionary; -bool data_in (struct substring input, const char *encoding, - enum fmt_type, int implied_decimals, - int first_column, int last_column, - const struct dictionary *dict, - union value *output, int width); + +char *data_in (struct substring input, const char *input_encoding, + enum fmt_type, + union value *output, int width, const char *output_encoding); + +bool data_in_msg (struct substring input, const char *input_encoding, + enum fmt_type, + union value *output, int width, const char *output_encoding); + +void data_in_imply_decimals (struct substring input, const char *encoding, + enum fmt_type format, int d, union value *output); #endif /* data/data-in.h */ diff --git a/src/data/file-handle-def.c b/src/data/file-handle-def.c index beba83d4..d025ff6a 100644 --- a/src/data/file-handle-def.c +++ b/src/data/file-handle-def.c @@ -233,7 +233,7 @@ fh_create_file (const char *id, const char *file_name, char *handle_name; struct file_handle *handle; - handle_name = id != NULL ? xstrdup (id) : xasprintf ("\"%s\"", file_name); + handle_name = id != NULL ? xstrdup (id) : xasprintf ("`%s'", file_name); handle = create_handle (id, handle_name, FH_REF_FILE); handle->file_name = xstrdup (file_name); handle->mode = properties->mode; diff --git a/src/data/format.c b/src/data/format.c index 3907016c..a78ea91c 100644 --- a/src/data/format.c +++ b/src/data/format.c @@ -37,7 +37,10 @@ #include "gettext.h" #define _(msgid) gettext (msgid) - +struct fmt_settings + { + struct fmt_number_style styles[FMT_NUMBER_OF_FORMATS]; + }; bool is_fmt_type (enum fmt_type); @@ -45,35 +48,111 @@ static bool valid_width (enum fmt_type, int width, bool for_input); static int max_digits_for_bytes (int bytes); -void fmt_number_style_init (struct fmt_number_style *style); +static void fmt_number_style_init (struct fmt_number_style *); +static void fmt_number_style_clone (struct fmt_number_style *, + const struct fmt_number_style *); +static void fmt_number_style_destroy (struct fmt_number_style *); +/* Creates and returns a new struct fmt_settings with default format styles. */ +struct fmt_settings * +fmt_settings_create (void) +{ + struct fmt_settings *settings; + int t; + + settings = xzalloc (sizeof *settings); + for (t = 0 ; t < FMT_NUMBER_OF_FORMATS ; ++t ) + fmt_number_style_init (&settings->styles[t]); + fmt_settings_set_decimal (settings, '.'); -/* Initialize the format module. */ -struct fmt_number_style * -fmt_create (void) + return settings; +} + +/* Destroys SETTINGS. */ +void +fmt_settings_destroy (struct fmt_settings *settings) { - struct fmt_number_style *styles = - xcalloc (FMT_NUMBER_OF_FORMATS, sizeof (*styles)); + if (settings != NULL) + { + int t; + + for (t = 0 ; t < FMT_NUMBER_OF_FORMATS ; ++t ) + fmt_number_style_destroy (&settings->styles[t]); + free (settings->styles); + } +} + +/* Returns a copy of SETTINGS. */ +struct fmt_settings * +fmt_settings_clone (const struct fmt_settings *old) +{ + struct fmt_settings *new; int t; + + new = xmalloc (sizeof *new); for (t = 0 ; t < FMT_NUMBER_OF_FORMATS ; ++t ) - fmt_number_style_init (&styles[t]); + fmt_number_style_clone (&new->styles[t], &old->styles[t]); + + return new; +} - fmt_set_decimal (styles, '.'); +/* Returns the number formatting style associated with the given + format TYPE. */ +const struct fmt_number_style * +fmt_settings_get_style (const struct fmt_settings *settings, + enum fmt_type type) +{ + assert (is_fmt_type (type)); + return &settings->styles[type]; +} - return styles; +void +fmt_settings_set_style (struct fmt_settings *settings, enum fmt_type type, + const struct fmt_number_style *style) +{ + fmt_check_style (style); + fmt_number_style_destroy (&settings->styles[type]); + fmt_number_style_clone (&settings->styles[type], style); } +/* Sets the number style for TYPE to have the given standard + PREFIX and SUFFIX, "-" as prefix suffix, an empty negative + suffix, DECIMAL as the decimal point character, and GROUPING + as the grouping character. */ +static void +set_style (struct fmt_settings *settings, enum fmt_type type, + const char *prefix, const char *suffix, + char decimal, char grouping) +{ + struct fmt_number_style *style; + + assert (is_fmt_type (type)); -/* Deinitialize the format module. */ + style = &settings->styles[type]; + + fmt_number_style_destroy (style); + + ss_alloc_substring (&style->neg_prefix, ss_cstr ("-")); + ss_alloc_substring (&style->prefix, ss_cstr (prefix)); + ss_alloc_substring (&style->suffix, ss_cstr (suffix)); + style->decimal = decimal; + style->grouping = grouping; +} + +/* Sets the decimal point character for SETTINGS to DECIMAL. */ void -fmt_done (struct fmt_number_style *styles) +fmt_settings_set_decimal (struct fmt_settings *settings, char decimal) { - int t; - for (t = 0 ; t < FMT_NUMBER_OF_FORMATS ; ++t ) - fmt_number_style_destroy (&styles[t]); + int grouping = decimal == '.' ? ',' : '.'; + assert (decimal == '.' || decimal == ','); - free (styles); + set_style (settings, FMT_F, "", "", decimal, 0); + set_style (settings, FMT_E, "", "", decimal, 0); + set_style (settings, FMT_COMMA, "", "", decimal, grouping); + set_style (settings, FMT_DOT, "", "", grouping, decimal); + set_style (settings, FMT_DOLLAR, "$", "", decimal, grouping); + set_style (settings, FMT_PCT, "", "%", decimal, 0); } /* Returns an input format specification with type TYPE, width W, @@ -857,9 +936,7 @@ max_digits_for_bytes (int bytes) return map[bytes - 1]; } - - -void +static void fmt_number_style_init (struct fmt_number_style *style) { style->neg_prefix = ss_empty (); @@ -870,9 +947,20 @@ fmt_number_style_init (struct fmt_number_style *style) style->grouping = 0; } +static void +fmt_number_style_clone (struct fmt_number_style *new, + const struct fmt_number_style *old) +{ + ss_alloc_substring (&new->neg_prefix, old->neg_prefix); + ss_alloc_substring (&new->prefix, old->prefix); + ss_alloc_substring (&new->suffix, old->suffix); + ss_alloc_substring (&new->neg_suffix, old->neg_suffix); + new->decimal = old->decimal; + new->grouping = old->grouping; +} /* Destroys a struct fmt_number_style. */ -void +static void fmt_number_style_destroy (struct fmt_number_style *style) { if (style != NULL) @@ -884,16 +972,6 @@ fmt_number_style_destroy (struct fmt_number_style *style) } } -/* Returns the number formatting style associated with the given - format TYPE. */ -const struct fmt_number_style * -fmt_get_style (const struct fmt_number_style *styles, enum fmt_type type) -{ - assert (is_fmt_type (type)); - return &styles[type]; -} - - /* Checks that style is STYLE sane */ void fmt_check_style (const struct fmt_number_style *style) @@ -925,46 +1003,6 @@ fmt_neg_affix_width (const struct fmt_number_style *style) return ss_length (style->neg_prefix) + ss_length (style->neg_suffix); } - -/* Sets the number style for TYPE to have the given standard - PREFIX and SUFFIX, "-" as prefix suffix, an empty negative - suffix, DECIMAL as the decimal point character, and GROUPING - as the grouping character. */ -static void -set_style (struct fmt_number_style *styles, enum fmt_type type, - const char *prefix, const char *suffix, - char decimal, char grouping) -{ - struct fmt_number_style *style; - - assert (is_fmt_type (type)); - - style = &styles[type] ; - - fmt_number_style_destroy (style); - - ss_alloc_substring (&style->neg_prefix, ss_cstr ("-")); - ss_alloc_substring (&style->prefix, ss_cstr (prefix)); - ss_alloc_substring (&style->suffix, ss_cstr (suffix)); - style->decimal = decimal; - style->grouping = grouping; -} - -/* Sets the decimal point character to DECIMAL. */ -void -fmt_set_decimal (struct fmt_number_style *styles, char decimal) -{ - int grouping = decimal == '.' ? ',' : '.'; - assert (decimal == '.' || decimal == ','); - - set_style (styles, FMT_F, "", "", decimal, 0); - set_style (styles, FMT_E, "", "", decimal, 0); - set_style (styles, FMT_COMMA, "", "", decimal, grouping); - set_style (styles, FMT_DOT, "", "", grouping, decimal); - set_style (styles, FMT_DOLLAR, "$", "", decimal, grouping); - set_style (styles, FMT_PCT, "", "%", decimal, 0); -} - /* Returns the struct fmt_desc for the given format TYPE. */ static const struct fmt_desc * get_fmt_desc (enum fmt_type type) diff --git a/src/data/format.h b/src/data/format.h index 049ffc6f..36726542 100644 --- a/src/data/format.h +++ b/src/data/format.h @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 1997-9, 2000, 2006 Free Software Foundation, Inc. + Copyright (C) 1997-9, 2000, 2006, 2010 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -72,25 +72,6 @@ struct fmt_spec /* Maximum width of any numeric format. */ #define FMT_MAX_NUMERIC_WIDTH 40 -/* A numeric output style. */ -struct fmt_number_style - { - struct substring neg_prefix; /* Negative prefix. */ - struct substring prefix; /* Prefix. */ - struct substring suffix; /* Suffix. */ - struct substring neg_suffix; /* Negative suffix. */ - char decimal; /* Decimal point: '.' or ','. */ - char grouping; /* Grouping character: ',', '.', or 0. */ - }; - - -extern struct fmt_number_style *the_styles ; - - -/* Initialization. */ -struct fmt_number_style * fmt_create (void); -void fmt_done (struct fmt_number_style *); - /* Constructing formats. */ struct fmt_spec fmt_for_input (enum fmt_type, int w, int d) PURE_FUNCTION; struct fmt_spec fmt_for_output (enum fmt_type, int w, int d) PURE_FUNCTION; @@ -115,6 +96,8 @@ void fmt_fix_input (struct fmt_spec *); void fmt_fix_output (struct fmt_spec *); /* Format types. */ +bool is_fmt_type (enum fmt_type); + const char *fmt_name (enum fmt_type) PURE_FUNCTION; bool fmt_from_name (const char *name, enum fmt_type *); @@ -143,26 +126,41 @@ bool fmt_from_io (int io, enum fmt_type *); const char *fmt_date_template (enum fmt_type) PURE_FUNCTION; +/* Format settings. + + A fmt_settings is really just a collection of one "struct fmt_number_style" + for each format type. */ +struct fmt_settings *fmt_settings_create (void); +void fmt_settings_destroy (struct fmt_settings *); +struct fmt_settings *fmt_settings_clone (const struct fmt_settings *); + +void fmt_settings_set_decimal (struct fmt_settings *, char); + +const struct fmt_number_style *fmt_settings_get_style ( + const struct fmt_settings *, enum fmt_type); +void fmt_settings_set_style (struct fmt_settings *, enum fmt_type, + const struct fmt_number_style *); + +/* A numeric output style. */ +struct fmt_number_style + { + struct substring neg_prefix; /* Negative prefix. */ + struct substring prefix; /* Prefix. */ + struct substring suffix; /* Suffix. */ + struct substring neg_suffix; /* Negative suffix. */ + char decimal; /* Decimal point: '.' or ','. */ + char grouping; /* Grouping character: ',', '.', or 0. */ + }; + /* Maximum length of prefix or suffix string in struct fmt_number_style. */ #define FMT_STYLE_AFFIX_MAX 16 - -struct fmt_number_style *fmt_number_style_create (void); -void fmt_number_style_destroy (struct fmt_number_style *); - int fmt_affix_width (const struct fmt_number_style *); int fmt_neg_affix_width (const struct fmt_number_style *); -bool is_fmt_type (enum fmt_type); - -const struct fmt_number_style *fmt_get_style (const struct fmt_number_style *, enum fmt_type); - void fmt_check_style (const struct fmt_number_style *style); -int fmt_grouping_char (const struct fmt_number_style *, enum fmt_type); - -void fmt_set_decimal (struct fmt_number_style *, char); extern const struct fmt_spec F_8_0 ; diff --git a/src/data/gnumeric-reader.c b/src/data/gnumeric-reader.c index 74911c46..26b90ee8 100644 --- a/src/data/gnumeric-reader.c +++ b/src/data/gnumeric-reader.c @@ -181,9 +181,9 @@ struct gnumeric_reader static void process_node (struct gnumeric_reader *r); -#define _xml(X) (const xmlChar *)(X) +#define _xml(X) (CHAR_CAST (const xmlChar *, X)) -#define _xmlchar_to_int(X) atoi((const char *)X) +#define _xmlchar_to_int(X) (atoi(CHAR_CAST (const char *, X))) static void gnm_file_casereader_destroy (struct casereader *reader UNUSED, void *r_) @@ -328,7 +328,7 @@ convert_xml_string_to_value (struct ccase *c, const struct variable *var, value_copy_str_rpad (v, var_get_width (var), xv, ' '); else { - const char *text = (const char *) xv; + const char *text = CHAR_CAST (const char *, xv); char *endptr; errno = 0; @@ -361,7 +361,7 @@ gnumeric_open_reader (struct gnumeric_read_info *gri, struct dictionary **dict) if ( NULL == gz) { - msg (ME, _("Error opening \"%s\" for reading as a Gnumeric file: %s."), + msg (ME, _("Error opening `%s' for reading as a Gnumeric file: %s."), gri->file_name, strerror (errno)); goto error; @@ -381,7 +381,7 @@ gnumeric_open_reader (struct gnumeric_read_info *gri, struct dictionary **dict) &r->start_col, &r->start_row, &r->stop_col, &r->stop_row)) { - msg (SE, _("Invalid cell range \"%s\""), + msg (SE, _("Invalid cell range `%s'"), gri->cell_range); goto error; } @@ -459,7 +459,7 @@ gnumeric_open_reader (struct gnumeric_read_info *gri, struct dictionary **dict) if ( r->node_type == XML_READER_TYPE_TEXT ) { xmlChar *value = xmlTextReaderValue (r->xtr); - const char *text = (const char *) value; + const char *text = CHAR_CAST (const char *, value); if ( r->row < r->start_row) { @@ -499,7 +499,7 @@ gnumeric_open_reader (struct gnumeric_read_info *gri, struct dictionary **dict) /* Create the dictionary and populate it */ *dict = r->dict = dict_create (); - dict_set_encoding (r->dict, (const char *) xmlTextReaderConstEncoding (r->xtr)); + dict_set_encoding (r->dict, CHAR_CAST (const char *, xmlTextReaderConstEncoding (r->xtr))); for (i = 0 ; i < n_var_specs ; ++i ) { @@ -525,7 +525,7 @@ gnumeric_open_reader (struct gnumeric_read_info *gri, struct dictionary **dict) if ( n_var_specs == 0 ) { - msg (MW, _("Selected sheet or range of spreadsheet \"%s\" is empty."), + msg (MW, _("Selected sheet or range of spreadsheet `%s' is empty."), gri->file_name); goto error; } diff --git a/src/data/por-file-reader.c b/src/data/por-file-reader.c index c148a7f0..adf177be 100644 --- a/src/data/por-file-reader.c +++ b/src/data/por-file-reader.c @@ -105,6 +105,8 @@ error (struct pfm_reader *r, const char *msg, ...) m.severity = MSG_S_ERROR; m.where.file_name = NULL; m.where.line_number = 0; + m.where.first_column = 0; + m.where.last_column = 0; m.text = ds_cstr (&text); msg_emit (&m); @@ -134,6 +136,8 @@ warning (struct pfm_reader *r, const char *msg, ...) m.severity = MSG_S_WARNING; m.where.file_name = NULL; m.where.line_number = 0; + m.where.first_column = 0; + m.where.last_column = 0; m.text = ds_cstr (&text); msg_emit (&m); @@ -152,7 +156,7 @@ close_reader (struct pfm_reader *r) { if (fn_close (fh_get_file_name (r->fh), r->file) == EOF) { - msg (ME, _("Error closing portable file \"%s\": %s."), + msg (ME, _("Error closing portable file `%s': %s."), fh_get_file_name (r->fh), strerror (errno)); r->ok = false; } @@ -271,7 +275,7 @@ pfm_open_reader (struct file_handle *fh, struct dictionary **dict, r->file = fn_open (fh_get_file_name (r->fh), "rb"); if (r->file == NULL) { - msg (ME, _("An error occurred while opening \"%s\" for reading " + msg (ME, _("An error occurred while opening `%s' for reading " "as a portable file: %s."), fh_get_file_name (r->fh), strerror (errno)); goto error; diff --git a/src/data/por-file-writer.c b/src/data/por-file-writer.c index 9889cfd9..c5f758a1 100644 --- a/src/data/por-file-writer.c +++ b/src/data/por-file-writer.c @@ -157,7 +157,7 @@ pfm_open_writer (struct file_handle *fh, struct dictionary *dict, &w->file, NULL); if (w->rf == NULL) { - msg (ME, _("Error opening \"%s\" for writing as a portable file: %s."), + msg (ME, _("Error opening `%s' for writing as a portable file: %s."), fh_get_file_name (fh), strerror (errno)); goto error; } @@ -502,7 +502,7 @@ close_writer (struct pfm_writer *w) ok = false; if (!ok) - msg (ME, _("An I/O error occurred writing portable file \"%s\"."), + msg (ME, _("An I/O error occurred writing portable file `%s'."), fh_get_file_name (w->fh)); if (ok ? !replace_file_commit (w->rf) : !replace_file_abort (w->rf)) diff --git a/src/data/psql-reader.c b/src/data/psql-reader.c index 68ea7e56..76b4674d 100644 --- a/src/data/psql-reader.c +++ b/src/data/psql-reader.c @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 2008, 2009 Free Software Foundation, Inc. + Copyright (C) 2008, 2009, 2010 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -286,8 +286,7 @@ psql_open_reader (struct psql_read_info *info, struct dictionary **dict) } } - r->postgres_epoch = - calendar_gregorian_to_offset (2000, 1, 1, NULL, NULL); + r->postgres_epoch = calendar_gregorian_to_offset (2000, 1, 1, NULL); /* Create the dictionary and populate it */ @@ -838,7 +837,7 @@ set_value (struct psql_reader *r) case VARCHAROID: case BPCHAROID: case BYTEAOID: - memcpy (value_str_rw (val, var_width), (char *) vptr, + memcpy (value_str_rw (val, var_width), vptr, MIN (length, var_width)); break; diff --git a/src/data/settings.c b/src/data/settings.c index 10b20f8a..13512cc0 100644 --- a/src/data/settings.c +++ b/src/data/settings.c @@ -15,26 +15,27 @@ along with this program. If not, see . */ #include -#include "settings.h" + +#include "data/settings.h" + #include #include #include -#include "format.h" -#include "value.h" -#include "xalloc.h" -#include -#include -#include -#include -#include "error.h" -#include "minmax.h" +#include "data/case.h" +#include "data/format.h" +#include "data/value.h" +#include "libpspp/i18n.h" +#include "libpspp/integer-format.h" +#include "libpspp/message.h" + +#include "gl/error.h" +#include "gl/minmax.h" +#include "gl/xalloc.h" #include "gettext.h" #define _(msgid) gettext (msgid) -static int global_algorithm = ENHANCED; - struct settings { /* Integer format used for IB and PIB input. */ @@ -49,8 +50,8 @@ struct settings /* Format of reals in output (SET WRB). */ enum float_format output_float_format; - int *viewlength; - int *viewwidth; + int viewlength; + int viewwidth; bool safer_mode; bool include; int epoch; @@ -70,96 +71,109 @@ struct settings bool testing_mode; int cmd_algorithm; - int *algorithm; + int global_algorithm; int syntax; - struct fmt_number_style *styles; + struct fmt_settings *styles; enum settings_output_devices output_routing[SETTINGS_N_OUTPUT_TYPES]; }; static struct settings the_settings = { - /* input_integer_format */ - INTEGER_NATIVE, - /* input_float_format */ - FLOAT_NATIVE_DOUBLE, - /* output_integer_format */ - INTEGER_NATIVE, - /* output_float_format */ - FLOAT_NATIVE_DOUBLE, - /* viewlength */ - NULL, - /* viewwidth */ - NULL, - /* safer_mode */ - false, - /* include */ - true, - /* epoch */ - -1, - /* route_errors_to_terminal */ - true, - /* route_errors_to_listing */ - true, - /* scompress */ - true, - /* undefined */ - true, - /* blanks */ - SYSMIS, - /* max_messages */ + INTEGER_NATIVE, /* input_integer_format */ + FLOAT_NATIVE_DOUBLE, /* input_float_format */ + INTEGER_NATIVE, /* output_integer_format */ + FLOAT_NATIVE_DOUBLE, /* output_float_format */ + 24, /* viewlength */ + 79, /* viewwidth */ + false, /* safer_mode */ + true, /* include */ + -1, /* epoch */ + true, /* route_errors_to_terminal */ + true, /* route_errors_to_listing */ + true, /* scompress */ + true, /* undefined */ + SYSMIS, /* blanks */ + + /* max_messages */ { 100, /* MSG_S_ERROR */ 100, /* MSG_S_WARNING */ 100 /* MSG_S_NOTE */ }, - /* printback */ - true, - /* mprint */ - true, - /* mxloops */ - 1, - /* nulline */ - true, - /* endcmd */ - '.', - /* workspace */ - 64L * 1024 * 1024, - /* default_format */ - {FMT_F, 8, 2}, - /* testing_mode */ - false, - /* cmd_algorithm */ - ENHANCED, - /* algorithm */ - &global_algorithm, - /* syntax */ - ENHANCED, - /* styles */ - NULL, - /* output devices */ + + true, /* printback */ + true, /* mprint */ + 1, /* mxloops */ + true, /* nulline */ + '.', /* endcmd */ + 64L * 1024 * 1024, /* workspace */ + {FMT_F, 8, 2}, /* default_format */ + false, /* testing_mode */ + ENHANCED, /* cmd_algorithm */ + ENHANCED, /* global_algorithm */ + ENHANCED, /* syntax */ + NULL, /* styles */ + + /* output_routing */ {SETTINGS_DEVICE_LISTING | SETTINGS_DEVICE_TERMINAL, SETTINGS_DEVICE_LISTING | SETTINGS_DEVICE_TERMINAL, 0, SETTINGS_DEVICE_LISTING | SETTINGS_DEVICE_TERMINAL} }; -static void init_viewport ( int *, int *); - +/* Initializes the settings module. */ void -settings_init (int *width, int *length) +settings_init (void) { - init_viewport (width, length); settings_set_epoch (-1); - the_settings.styles = fmt_create (); + the_settings.styles = fmt_settings_create (); settings_set_decimal_char (get_system_decimal ()); } +/* Cleans up the settings module. */ void settings_done (void) { - fmt_done (the_settings.styles); + settings_destroy (&the_settings); +} + +static void +settings_copy (struct settings *dst, const struct settings *src) +{ + *dst = *src; + dst->styles = fmt_settings_clone (src->styles); +} + +/* Returns a copy of the current settings. */ +struct settings * +settings_get (void) +{ + struct settings *s = xmalloc (sizeof *s); + settings_copy (s, &the_settings); + return s; +} + +/* Replaces the current settings by those in S. The caller retains ownership + of S. */ +void +settings_set (const struct settings *s) +{ + settings_destroy (&the_settings); + settings_copy (&the_settings, s); +} + +/* Destroys S. */ +void +settings_destroy (struct settings *s) +{ + if (s != NULL) + { + fmt_settings_destroy (s->styles); + if (s != &the_settings) + free (s); + } } /* Returns the floating-point format used for RB and RBHEX @@ -226,35 +240,28 @@ settings_set_output_float_format ( enum float_format float_format) int settings_get_viewlength (void) { - return *the_settings.viewlength; + return the_settings.viewlength; } /* Sets the view length. */ void settings_set_viewlength ( int viewlength_) { - *the_settings.viewlength = viewlength_; + the_settings.viewlength = viewlength_; } /* Screen width. */ int settings_get_viewwidth(void) { - return *the_settings.viewwidth; + return the_settings.viewwidth; } /* Sets the screen width. */ void settings_set_viewwidth ( int viewwidth_) { - *the_settings.viewwidth = viewwidth_; -} - -static void -init_viewport ( int *width, int *length) -{ - the_settings.viewwidth = width; - the_settings.viewlength = length; + the_settings.viewwidth = viewwidth_; } /* Whether PSPP can erase and overwrite files. */ @@ -511,14 +518,14 @@ settings_set_testing_mode ( bool testing_mode) enum behavior_mode settings_get_algorithm (void) { - return *the_settings.algorithm; + return the_settings.cmd_algorithm; } /* Set the algorithm option globally. */ void settings_set_algorithm (enum behavior_mode mode) { - global_algorithm = mode; + the_settings.global_algorithm = the_settings.cmd_algorithm = mode; } /* Set the algorithm option for this command only */ @@ -526,14 +533,13 @@ void settings_set_cmd_algorithm ( enum behavior_mode mode) { the_settings.cmd_algorithm = mode; - the_settings.algorithm = &the_settings.cmd_algorithm; } /* Unset the algorithm option for this command */ void unset_cmd_algorithm (void) { - the_settings.algorithm = &global_algorithm; + the_settings.cmd_algorithm = the_settings.global_algorithm; } /* Get the current syntax setting */ @@ -589,41 +595,46 @@ find_cc_separators (const char *cc_string, struct fmt_number_style *cc) return true; } -/* Extracts a token from IN into a newly allocated AFFIX. Tokens - are delimited by GROUPING. The token is truncated to at most - FMT_STYLE_AFFIX_MAX characters. Returns the first character - following the token. */ +/* Extracts a token from IN into AFFIX, using BUFFER for storage. BUFFER must + have at least FMT_STYLE_AFFIX_MAX + 1 bytes of space. Tokens are delimited + by GROUPING. The token is truncated to at most FMT_STYLE_AFFIX_MAX bytes, + followed by a null terminator. Returns the first character following the + token. */ static const char * -extract_cc_token (const char *in, int grouping, struct substring *affix) +extract_cc_token (const char *in, int grouping, struct substring *affix, + char buffer[FMT_STYLE_AFFIX_MAX + 1]) { size_t ofs = 0; - ss_alloc_uninit (affix, FMT_STYLE_AFFIX_MAX); + for (; *in != '\0' && *in != grouping; in++) { if (*in == '\'' && in[1] == grouping) in++; if (ofs < FMT_STYLE_AFFIX_MAX) - ss_data (*affix)[ofs++] = *in; + buffer[ofs++] = *in; } - affix->length = ofs; + *affix = ss_buffer (buffer, ofs); if (*in == grouping) in++; return in; } - /* Sets custom currency specifier CC having name CC_NAME ('A' through 'E') to correspond to the settings in CC_STRING. */ bool settings_set_cc (const char *cc_string, enum fmt_type type) { - struct fmt_number_style *cc = &the_settings.styles[type]; + char a[FMT_STYLE_AFFIX_MAX + 1]; + char b[FMT_STYLE_AFFIX_MAX + 1]; + char c[FMT_STYLE_AFFIX_MAX + 1]; + char d[FMT_STYLE_AFFIX_MAX + 1]; + struct fmt_number_style cc; assert (fmt_get_category (type) == FMT_CAT_CUSTOM); /* Determine separators. */ - if (!find_cc_separators (cc_string, cc)) + if (!find_cc_separators (cc_string, &cc)) { msg (SE, _("%s: Custom currency string `%s' does not contain " "exactly three periods or commas (or it contains both)."), @@ -631,12 +642,12 @@ settings_set_cc (const char *cc_string, enum fmt_type type) return false; } - cc_string = extract_cc_token (cc_string, cc->grouping, &cc->neg_prefix); - cc_string = extract_cc_token (cc_string, cc->grouping, &cc->prefix); - cc_string = extract_cc_token (cc_string, cc->grouping, &cc->suffix); - cc_string = extract_cc_token (cc_string, cc->grouping, &cc->neg_suffix); + cc_string = extract_cc_token (cc_string, cc.grouping, &cc.neg_prefix, a); + cc_string = extract_cc_token (cc_string, cc.grouping, &cc.prefix, b); + cc_string = extract_cc_token (cc_string, cc.grouping, &cc.suffix, c); + cc_string = extract_cc_token (cc_string, cc.grouping, &cc.neg_suffix, d); - fmt_check_style (cc); + fmt_settings_set_style (the_settings.styles, type, &cc); return true; } @@ -645,41 +656,37 @@ settings_set_cc (const char *cc_string, enum fmt_type type) int settings_get_decimal_char (enum fmt_type type) { - return fmt_get_style (the_settings.styles, type)->decimal; + return fmt_settings_get_style (the_settings.styles, type)->decimal; } void settings_set_decimal_char (char decimal) { - fmt_set_decimal (the_settings.styles, decimal); + fmt_settings_set_decimal (the_settings.styles, decimal); } - - /* Returns the number formatting style associated with the given format TYPE. */ const struct fmt_number_style * settings_get_style (enum fmt_type type) { assert (is_fmt_type (type)); - return &the_settings.styles[type]; + return fmt_settings_get_style (the_settings.styles, type); } - /* Returns a string of the form "$#,###.##" according to FMT, which must be of type FMT_DOLLAR. The caller must free the string. */ char * settings_dollar_template (const struct fmt_spec *fmt) { - const struct fmt_number_style *styles = the_settings.styles; struct string str = DS_EMPTY_INITIALIZER; int c; const struct fmt_number_style *fns ; assert (fmt->type == FMT_DOLLAR); - fns = fmt_get_style (styles, fmt->type); + fns = fmt_settings_get_style (the_settings.styles, fmt->type); ds_put_char (&str, '$'); for (c = MAX (fmt->w - fmt->d - 1, 0); c > 0; ) diff --git a/src/data/settings.h b/src/data/settings.h index 7dcb0e34..e68325f7 100644 --- a/src/data/settings.h +++ b/src/data/settings.h @@ -28,9 +28,13 @@ struct caseproto; struct settings; -void settings_init (int *, int *); +void settings_init (void); void settings_done (void); +struct settings *settings_get (void); +void settings_set (const struct settings *); +void settings_destroy (struct settings *); + enum float_format settings_get_input_float_format (void); void settings_set_input_float_format ( enum float_format); diff --git a/src/data/sys-file-reader.c b/src/data/sys-file-reader.c index b92f42a9..c9c843df 100644 --- a/src/data/sys-file-reader.c +++ b/src/data/sys-file-reader.c @@ -293,7 +293,7 @@ sfm_open_reader (struct file_handle *fh, struct dictionary **dict, r->file = fn_open (fh_get_file_name (fh), "rb"); if (r->file == NULL) { - msg (ME, _("Error opening \"%s\" for reading as a system file: %s."), + msg (ME, _("Error opening `%s' for reading as a system file: %s."), fh_get_file_name (r->fh), strerror (errno)); goto error; } @@ -424,7 +424,7 @@ close_reader (struct sfm_reader *r) { if (fn_close (fh_get_file_name (r->fh), r->file) == EOF) { - msg (ME, _("Error closing system file \"%s\": %s."), + msg (ME, _("Error closing system file `%s': %s."), fh_get_file_name (r->fh), strerror (errno)); r->error = true; } @@ -595,7 +595,7 @@ read_variable_record (struct sfm_reader *r, struct dictionary *dict, /* Check variable name. */ if (name[0] == '$' || name[0] == '#') - sys_error (r, "Variable name begins with invalid character `%c'.", + sys_error (r, _("Variable name begins with invalid character `%c'."), name[0]); if (!var_is_plausible_name (name, false)) sys_error (r, _("Invalid variable name `%s'."), name); @@ -1052,8 +1052,8 @@ read_mrsets (struct sfm_reader *r, size_t size, size_t count, mrset->type = MRSET_MC; if (!text_match (text, ' ')) { - sys_warn (r, _("Missing space following 'C' at offset %zu " - "in MRSETS record"), text_pos (text)); + sys_warn (r, _("Missing space following `%c' at offset %zu " + "in MRSETS record"), 'C', text_pos (text)); break; } } @@ -1070,8 +1070,8 @@ read_mrsets (struct sfm_reader *r, size_t size, size_t count, mrset->cat_source = MRSET_COUNTEDVALUES; if (!text_match (text, ' ')) { - sys_warn (r, _("Missing space following 'E' at offset %zu " - "in MRSETS record"), text_pos (text)); + sys_warn (r, _("Missing space following `%c' at offset %zu " + "in MRSETS record"), 'E', text_pos (text)); break; } @@ -1079,13 +1079,13 @@ read_mrsets (struct sfm_reader *r, size_t size, size_t count, if (!strcmp (number, "11")) mrset->label_from_var_label = true; else if (strcmp (number, "1")) - sys_warn (r, _("Unexpected label source value \"%s\" " - "following 'E' at offset %zu in MRSETS record"), + sys_warn (r, _("Unexpected label source value `%s' " + "following `E' at offset %zu in MRSETS record"), number, text_pos (text)); } else { - sys_warn (r, _("Missing 'C', 'D', or 'E' at offset %zu " + sys_warn (r, _("Missing `C', `D', or `E' at offset %zu " "in MRSETS record."), text_pos (text)); break; @@ -1502,7 +1502,7 @@ read_value_labels (struct sfm_reader *r, sys_warn (r, _("Duplicate value label for %g on %s."), label->value.f, var_get_name (v)); else - sys_warn (r, _("Duplicate value label for \"%.*s\" on %s."), + sys_warn (r, _("Duplicate value label for `%.*s' on %s."), max_width, value_str (&label->value, max_width), var_get_name (v)); } @@ -1683,7 +1683,7 @@ read_long_string_value_labels (struct sfm_reader *r, } if (!skip && !var_add_value_label (v, &value, label)) - sys_warn (r, _("Duplicate value label for \"%.*s\" on %s."), + sys_warn (r, _("Duplicate value label for `%.*s' on %s."), width, value_str (&value, width), var_get_name (v)); } } @@ -2290,7 +2290,7 @@ sys_msg (struct sfm_reader *r, int class, const char *format, va_list args) struct string text; ds_init_empty (&text); - ds_put_format (&text, "\"%s\" near offset 0x%llx: ", + ds_put_format (&text, "`%s' near offset 0x%llx: ", fh_get_file_name (r->fh), (long long int) ftello (r->file)); ds_put_vformat (&text, format, args); @@ -2298,6 +2298,8 @@ sys_msg (struct sfm_reader *r, int class, const char *format, va_list args) m.severity = msg_class_to_severity (class); m.where.file_name = NULL; m.where.line_number = 0; + m.where.first_column = 0; + m.where.last_column = 0; m.text = ds_cstr (&text); msg_emit (&m); diff --git a/src/data/sys-file-writer.c b/src/data/sys-file-writer.c index ac5f4c90..f31bd99a 100644 --- a/src/data/sys-file-writer.c +++ b/src/data/sys-file-writer.c @@ -215,7 +215,7 @@ sfm_open_writer (struct file_handle *fh, struct dictionary *d, &w->file, NULL); if (w->rf == NULL) { - msg (ME, _("Error opening \"%s\" for writing as a system file: %s."), + msg (ME, _("Error opening `%s' for writing as a system file: %s."), fh_get_file_name (fh), strerror (errno)); goto error; } @@ -982,7 +982,7 @@ close_writer (struct sfm_writer *w) ok = false; if (!ok) - msg (ME, _("An I/O error occurred writing system file \"%s\"."), + msg (ME, _("An I/O error occurred writing system file `%s'."), fh_get_file_name (w->fh)); if (ok ? !replace_file_commit (w->rf) : !replace_file_abort (w->rf)) diff --git a/src/data/variable.c b/src/data/variable.c index f703722c..707b2813 100644 --- a/src/data/variable.c +++ b/src/data/variable.c @@ -506,8 +506,8 @@ alloc_value_labels (struct variable *v) } /* Attempts to add a value label with the given VALUE and LABEL - to V. Returns true if successful, false if VALUE has an - existing label or if V is a long string variable. */ + to V. Returns true if successful, false otherwise (probably + due to an existing label). */ bool var_add_value_label (struct variable *v, const union value *value, const char *label) @@ -518,7 +518,7 @@ var_add_value_label (struct variable *v, /* Adds or replaces a value label with the given VALUE and LABEL to V. - Has no effect if V is a long string variable. */ +*/ void var_replace_value_label (struct variable *v, const union value *value, const char *label) diff --git a/src/language/command.c b/src/language/command.c index 448fae7e..9f90db93 100644 --- a/src/language/command.c +++ b/src/language/command.c @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 1997-9, 2000, 2009 Free Software Foundation, Inc. + Copyright (C) 1997-9, 2000, 2009, 2010 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -16,34 +16,26 @@ #include -#include +#include "language/command.h" #include #include #include #include -#include -#if HAVE_SYS_WAIT_H -#include -#endif -#if HAVE_READLINE -#include -#endif - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include + +#include "data/casereader.h" +#include "data/dictionary.h" +#include "data/procedure.h" +#include "data/settings.h" +#include "data/variable.h" +#include "language/lexer/lexer.h" +#include "language/prompt.h" +#include "libpspp/assertion.h" +#include "libpspp/compiler.h" +#include "libpspp/message.h" +#include "libpspp/str.h" +#include "libpspp/getl.h" +#include "output/text-item.h" #include "xalloc.h" #include "xmalloca.h" @@ -785,124 +777,6 @@ cmd_erase (struct lexer *lexer, struct dataset *ds UNUSED) return CMD_SUCCESS; } -#if HAVE_FORK && HAVE_EXECL -/* Spawn an interactive shell process. */ -static bool -shell (void) -{ - int pid; - - pid = fork (); - switch (pid) - { - case 0: - { - const char *shell_fn; - char *shell_process; - - { - int i; - - for (i = 3; i < 20; i++) - close (i); - } - - shell_fn = getenv ("SHELL"); - if (shell_fn == NULL) - shell_fn = "/bin/sh"; - - { - const char *cp = strrchr (shell_fn, '/'); - cp = cp ? &cp[1] : shell_fn; - shell_process = xmalloca (strlen (cp) + 8); - strcpy (shell_process, "-"); - strcat (shell_process, cp); - if (strcmp (cp, "sh")) - shell_process[0] = '+'; - } - - execl (shell_fn, shell_process, NULL); - - _exit (1); - } - - case -1: - msg (SE, _("Couldn't fork: %s."), strerror (errno)); - return false; - - default: - assert (pid > 0); - while (wait (NULL) != pid) - ; - return true; - } -} -#else /* !(HAVE_FORK && HAVE_EXECL) */ -/* Don't know how to spawn an interactive shell. */ -static bool -shell (void) -{ - msg (SE, _("Interactive shell not supported on this platform.")); - return false; -} -#endif - -/* Executes the specified COMMAND in a subshell. Returns true if - successful, false otherwise. */ -static bool -run_command (const char *command) -{ - if (system (NULL) == 0) - { - msg (SE, _("Command shell not supported on this platform.")); - return false; - } - - /* Execute the command. */ - if (system (command) == -1) - msg (SE, _("Error executing command: %s."), strerror (errno)); - - return true; -} - -/* Parses, performs the HOST command. */ -int -cmd_host (struct lexer *lexer, struct dataset *ds UNUSED) -{ - int look_ahead; - - if (settings_get_safer_mode ()) - { - msg (SE, _("This command not allowed when the SAFER option is set.")); - return CMD_FAILURE; - } - - look_ahead = lex_look_ahead (lexer); - if (look_ahead == '.') - { - lex_get (lexer); - return shell () ? CMD_SUCCESS : CMD_FAILURE; - } - else if (look_ahead == '\'' || look_ahead == '"') - { - bool ok; - - lex_get (lexer); - if (!lex_force_string (lexer)) - NOT_REACHED (); - ok = run_command (ds_cstr (lex_tokstr (lexer))); - - lex_get (lexer); - return ok ? lex_end_of_command (lexer) : CMD_FAILURE; - } - else - { - bool ok = run_command (lex_rest_of_line (lexer)); - lex_discard_line (lexer); - return ok ? CMD_SUCCESS : CMD_FAILURE; - } -} - /* Parses, performs the NEW FILE command. */ int cmd_new_file (struct lexer *lexer, struct dataset *ds) diff --git a/src/language/command.def b/src/language/command.def index 174b8024..adfaa950 100644 --- a/src/language/command.def +++ b/src/language/command.def @@ -24,15 +24,17 @@ DEF_CMD (S_ANY, 0, "EXIT", cmd_finish) DEF_CMD (S_ANY, 0, "FILE HANDLE", cmd_file_handle) DEF_CMD (S_ANY, F_KEEP_FINAL_TOKEN, "FILE LABEL", cmd_file_label) DEF_CMD (S_ANY, 0, "FINISH", cmd_finish) -DEF_CMD (S_ANY, F_KEEP_FINAL_TOKEN, "HOST", cmd_host) +DEF_CMD (S_ANY, 0, "HOST", cmd_host) DEF_CMD (S_ANY, 0, "INCLUDE", cmd_include) DEF_CMD (S_ANY, 0, "INSERT", cmd_insert) DEF_CMD (S_ANY, 0, "N OF CASES", cmd_n_of_cases) DEF_CMD (S_ANY, F_ABBREV, "N", cmd_n_of_cases) DEF_CMD (S_ANY, 0, "NEW FILE", cmd_new_file) DEF_CMD (S_ANY, 0, "PERMISSIONS", cmd_permissions) +DEF_CMD (S_ANY, 0, "PRESERVE", cmd_preserve) DEF_CMD (S_ANY, F_ABBREV, "Q", cmd_finish) DEF_CMD (S_ANY, 0, "QUIT", cmd_finish) +DEF_CMD (S_ANY, 0, "RESTORE", cmd_restore) DEF_CMD (S_ANY, 0, "SET", cmd_set) DEF_CMD (S_ANY, 0, "SHOW", cmd_show) DEF_CMD (S_ANY, F_KEEP_FINAL_TOKEN, "SUBTITLE", cmd_subtitle) @@ -170,7 +172,12 @@ UNIMPL_CMD ("CSSELECT", "Select complex samples") UNIMPL_CMD ("CSTABULATE", "Tabulate complex samples") UNIMPL_CMD ("CTABLES", "Display complex samples") UNIMPL_CMD ("CURVEFIT", "Fit curve to line plot") -UNIMPL_CMD ("DATASET", "Alternate data set") +UNIMPL_CMD ("DATASET ACTIVATE", "Switch to alternate data set") +UNIMPL_CMD ("DATASET CLOSE", "Delete alternate data set") +UNIMPL_CMD ("DATASET COPY", "Duplicate alternate data set") +UNIMPL_CMD ("DATASET DECLARE", "Start alternate data set") +UNIMPL_CMD ("DATASET DISPLAY", "List alternate data sets") +UNIMPL_CMD ("DATASET NAME", "Give the current data set a name") UNIMPL_CMD ("DATE", "Create time series data") UNIMPL_CMD ("DEFINE", "Syntax macros") UNIMPL_CMD ("DETECTANOMALY", "Find unusual cases") @@ -188,7 +195,6 @@ UNIMPL_CMD ("HILOGLINEAR", "Hierarchial loglinear models") UNIMPL_CMD ("HOMALS", "Homogeneity analysis") UNIMPL_CMD ("IGRAPH", "Interactive graphs") UNIMPL_CMD ("INFO", "Local Documentation") -UNIMPL_CMD ("INSERT", "Insert file") UNIMPL_CMD ("KEYED DATA LIST", "Read nonsequential data") UNIMPL_CMD ("KM", "Kaplan-Meier") UNIMPL_CMD ("LOGISTIC REGRESSION", "Regression Analysis") @@ -200,10 +206,10 @@ UNIMPL_CMD ("MATRIX DATA", "Matrix data input") UNIMPL_CMD ("MCONVERT", "Convert covariance/correlation matrices") UNIMPL_CMD ("MEANS", cmd_means) UNIMPL_CMD ("MIXED", "Mixed linear models") -UNIMPL_CMD ("MODEL CLOSE ", "Close server connection") +UNIMPL_CMD ("MODEL CLOSE", "Close server connection") UNIMPL_CMD ("MODEL HANDLE", "Define server connection") -UNIMPL_CMD ("MODEL LIST ", "Show existing models") -UNIMPL_CMD ("MODEL NAME ", "Specify model label") +UNIMPL_CMD ("MODEL LIST", "Show existing models") +UNIMPL_CMD ("MODEL NAME", "Specify model label") UNIMPL_CMD ("MULTIPLE CORRESPONDENCE", "Multiple correspondence analysis") UNIMPL_CMD ("MULT RESPONSE", "Multiple reponse analysis") UNIMPL_CMD ("MVA", "Missing value analysis") @@ -224,7 +230,6 @@ UNIMPL_CMD ("POINT", "Marker in keyed file") UNIMPL_CMD ("PPLOT", "Plot time series variables") UNIMPL_CMD ("PREDICT", "Specify forecast period") UNIMPL_CMD ("PREFSCAL", "Multidimensional unfolding") -UNIMPL_CMD ("PRESERVE", "Push settings") UNIMPL_CMD ("PRINCALS", "PCA by alternating least squares") UNIMPL_CMD ("PROBIT", "Probit analysis") UNIMPL_CMD ("PROCEDURE OUTPUT", "Specify output file") @@ -237,7 +242,6 @@ UNIMPL_CMD ("RECORD TYPE", "Defines a type of record within FILE TYPE") UNIMPL_CMD ("REFORMAT", "Read obsolete files") UNIMPL_CMD ("REPEATING DATA", "Specify multiple cases per input record") UNIMPL_CMD ("REPORT", "Pretty print working file") -UNIMPL_CMD ("RESTORE", "Restore settings") UNIMPL_CMD ("RMV", "Replace missing values") UNIMPL_CMD ("SCRIPT", "Run script file") UNIMPL_CMD ("SEASON", "Estimate seasonal factors") diff --git a/src/language/control/repeat.c b/src/language/control/repeat.c index cb608f76..69c92ac1 100644 --- a/src/language/control/repeat.c +++ b/src/language/control/repeat.c @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 1997-9, 2000, 2007, 2009 Free Software Foundation, Inc. + Copyright (C) 1997-9, 2000, 2007, 2009, 2010 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -169,12 +169,12 @@ parse_specification (struct lexer *lexer, struct repeat_block *block) if (!lex_force_id (lexer)) return false; if (dict_lookup_var (dict, lex_tokid (lexer))) - msg (SW, _("Dummy variable name \"%s\" hides dictionary " - "variable \"%s\"."), + msg (SW, _("Dummy variable name `%s' hides dictionary " + "variable `%s'."), lex_tokid (lexer), lex_tokid (lexer)); if (find_macro (block, ss_cstr (lex_tokid (lexer)))) { - msg (SE, _("Dummy variable name \"%s\" is given twice."), + msg (SE, _("Dummy variable name `%s' is given twice."), lex_tokid (lexer)); return false; } @@ -195,7 +195,7 @@ parse_specification (struct lexer *lexer, struct repeat_block *block) count = parse_ids (lexer, dict, macro, block->pool); else if (lex_is_number (lexer)) count = parse_numbers (lexer, macro, block->pool); - else if (lex_token (lexer) == T_STRING) + else if (lex_is_string (lexer)) count = parse_strings (lexer, macro, block->pool); else { @@ -220,8 +220,8 @@ parse_specification (struct lexer *lexer, struct repeat_block *block) } else if (block->loop_cnt != count) { - msg (SE, _("Dummy variable \"%.*s\" had %d " - "substitutions, so \"%.*s\" must also, but %d " + msg (SE, _("Dummy variable `%.*s' had %d " + "substitutions, so `%.*s' must also, but %d " "were specified."), (int) ss_length (first_name), ss_data (first_name), block->loop_cnt, @@ -306,7 +306,10 @@ parse_lines (struct lexer *lexer, struct repeat_block *block) /* Retrieve an input line and make a copy of it. */ if (!lex_get_line_raw (lexer)) - return false; + { + msg (SE, _("DO REPEAT without END REPEAT.")); + return false; + } ds_init_string (&text, lex_entire_line_ds (lexer)); /* Record file name. */ @@ -476,7 +479,7 @@ parse_strings (struct lexer *lexer, struct repeat_macro *macro, struct pool *poo { char *string; - if (lex_token (lexer) != T_STRING) + if (!lex_force_string (lexer)) { msg (SE, _("String expected.")); return 0; @@ -618,10 +621,10 @@ do_repeat_name (const struct getl_interface *interface) } /* Returns the line number in the source file from which the - previous line was originally obtained, or -1 if none. */ + previous line was originally obtained, or 0 if none. */ static int do_repeat_location (const struct getl_interface *interface) { struct repeat_line *line = current_line (interface); - return line ? line->line_number : -1; + return line ? line->line_number : 0; } diff --git a/src/language/data-io/data-list.c b/src/language/data-io/data-list.c index d43af347..80c9849b 100644 --- a/src/language/data-io/data-list.c +++ b/src/language/data-io/data-list.c @@ -196,7 +196,7 @@ cmd_data_list (struct lexer *lexer, struct dataset *ds) if (lex_match_id (lexer, "TAB")) delim = '\t'; - else if (lex_token (lexer) == T_STRING + else if (lex_is_string (lexer) && ds_length (lex_tokstr (lexer)) == 1) { delim = ds_first (lex_tokstr (lexer)); diff --git a/src/language/data-io/data-parser.c b/src/language/data-io/data-parser.c index 2d7f9f4c..714b2a95 100644 --- a/src/language/data-io/data-parser.c +++ b/src/language/data-io/data-parser.c @@ -395,7 +395,6 @@ data_parser_parse (struct data_parser *parser, struct dfm_reader *reader, && dfm_get_percent_read (reader) >= parser->percent_cases) return false; - dfm_push (reader); if (parser->type == DP_DELIMITED) { if (parser->span) @@ -405,7 +404,6 @@ data_parser_parse (struct data_parser *parser, struct dfm_reader *reader, } else retval = parse_fixed (parser, reader, c); - dfm_pop (reader); return retval; } @@ -502,6 +500,25 @@ cut_field (const struct data_parser *parser, struct dfm_reader *reader, return true; } +static void +parse_error (const struct dfm_reader *reader, const struct field *field, + int first_column, int last_column, char *error) +{ + struct msg m; + + m.category = MSG_C_DATA; + m.severity = MSG_S_WARNING; + m.where.file_name = CONST_CAST (char *, dfm_get_file_name (reader)); + m.where.line_number = dfm_get_line_number (reader); + m.where.first_column = first_column; + m.where.last_column = last_column; + m.text = xasprintf (_("Data for variable %s is not valid as format %s: %s"), + field->name, fmt_name (field->format.type), error); + msg_emit (&m); + + free (error); +} + /* Reads a case from READER into C, parsing it according to fixed-format syntax rules in PARSER. Returns true if successful, false at end of file or on I/O error. */ @@ -509,7 +526,8 @@ static bool parse_fixed (const struct data_parser *parser, struct dfm_reader *reader, struct ccase *c) { - const char *encoding = dfm_reader_get_legacy_encoding (reader); + const char *input_encoding = dfm_reader_get_legacy_encoding (reader); + const char *output_encoding = dict_get_encoding (parser->dict); struct field *f; int row; @@ -531,13 +549,21 @@ parse_fixed (const struct data_parser *parser, struct dfm_reader *reader, line = dfm_get_record (reader); for (; f < &parser->fields[parser->field_cnt] && f->record == row; f++) - data_in (ss_substr (line, f->first_column - 1, - f->format.w), - encoding, f->format.type, f->format.d, - f->first_column, f->first_column + f->format.w, - parser->dict, - case_data_rw_idx (c, f->case_idx), - fmt_var_width (&f->format)); + { + struct substring s = ss_substr (line, f->first_column - 1, + f->format.w); + union value *value = case_data_rw_idx (c, f->case_idx); + char *error = data_in (s, input_encoding, f->format.type, + value, fmt_var_width (&f->format), + output_encoding); + + if (error == NULL) + data_in_imply_decimals (s, input_encoding, f->format.type, + f->format.d, value); + else + parse_error (reader, f, f->first_column, + f->first_column + f->format.w, error); + } dfm_forward_record (reader); } @@ -552,7 +578,8 @@ static bool parse_delimited_span (const struct data_parser *parser, struct dfm_reader *reader, struct ccase *c) { - const char *encoding = dfm_reader_get_legacy_encoding (reader); + const char *input_encoding = dfm_reader_get_legacy_encoding (reader); + const char *output_encoding = dict_get_encoding (parser->dict); struct string tmp = DS_EMPTY_INITIALIZER; struct field *f; @@ -560,6 +587,7 @@ parse_delimited_span (const struct data_parser *parser, { struct substring s; int first_column, last_column; + char *error; /* Cut out a field and read in a new record if necessary. */ while (!cut_field (parser, reader, @@ -577,11 +605,11 @@ parse_delimited_span (const struct data_parser *parser, } } - data_in (s, encoding, f->format.type, 0, - first_column, last_column, - parser->dict, - case_data_rw_idx (c, f->case_idx), - fmt_var_width (&f->format)); + error = data_in (s, input_encoding, f->format.type, + case_data_rw_idx (c, f->case_idx), + fmt_var_width (&f->format), output_encoding); + if (error != NULL) + parse_error (reader, f, first_column, last_column, error); } ds_destroy (&tmp); return true; @@ -594,7 +622,8 @@ static bool parse_delimited_no_span (const struct data_parser *parser, struct dfm_reader *reader, struct ccase *c) { - const char *encoding = dfm_reader_get_legacy_encoding (reader); + const char *input_encoding = dfm_reader_get_legacy_encoding (reader); + const char *output_encoding = dict_get_encoding (parser->dict); struct string tmp = DS_EMPTY_INITIALIZER; struct substring s; struct field *f, *end; @@ -606,6 +635,8 @@ parse_delimited_no_span (const struct data_parser *parser, for (f = parser->fields; f < end; f++) { int first_column, last_column; + char *error; + if (!cut_field (parser, reader, &first_column, &last_column, &tmp, &s)) { if (f < end - 1 && settings_get_undefined ()) @@ -619,11 +650,11 @@ parse_delimited_no_span (const struct data_parser *parser, goto exit; } - data_in (s, encoding, f->format.type, 0, - first_column, last_column, - parser->dict, - case_data_rw_idx (c, f->case_idx), - fmt_var_width (&f->format)); + error = data_in (s, input_encoding, f->format.type, + case_data_rw_idx (c, f->case_idx), + fmt_var_width (&f->format), output_encoding); + if (error != NULL) + parse_error (reader, f, first_column, last_column, error); } s = dfm_get_record (reader); diff --git a/src/language/data-io/data-reader.c b/src/language/data-io/data-reader.c index 27c8ca68..061505f8 100644 --- a/src/language/data-io/data-reader.c +++ b/src/language/data-io/data-reader.c @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 1997-2004, 2006 Free Software Foundation, Inc. + Copyright (C) 1997-2004, 2006, 2010 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -146,7 +146,7 @@ dfm_open_reader (struct file_handle *fh, struct lexer *lexer) r->file = fn_open (fh_get_file_name (fh), "rb"); if (r->file == NULL) { - msg (ME, _("Could not open \"%s\" for reading as a data file: %s."), + msg (ME, _("Could not open `%s' for reading as a data file: %s."), fh_get_file_name (r->fh), strerror (errno)); fh_unlock (r->lock); fh_unref (fh); @@ -677,20 +677,16 @@ dfm_get_column (const struct dfm_reader *r, const char *p) return ds_pointer_to_position (&r->line, p) + 1; } -/* Pushes the file name and line number on the fn/ln stack. */ -void -dfm_push (struct dfm_reader *r) +const char * +dfm_get_file_name (const struct dfm_reader *r) { - if (r->fh != fh_inline_file ()) - msg_push_msg_locator (&r->where); + return fh_get_referent (r->fh) == FH_REF_FILE ? r->where.file_name : NULL; } -/* Pops the file name and line number from the fn/ln stack. */ -void -dfm_pop (struct dfm_reader *r) +int +dfm_get_line_number (const struct dfm_reader *r) { - if (r->fh != fh_inline_file ()) - msg_pop_msg_locator (&r->where); + return fh_get_referent (r->fh) == FH_REF_FILE ? r->where.line_number : -1; } /* BEGIN DATA...END DATA procedure. */ diff --git a/src/language/data-io/data-reader.h b/src/language/data-io/data-reader.h index 308701c2..7f7355da 100644 --- a/src/language/data-io/data-reader.h +++ b/src/language/data-io/data-reader.h @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 1997-9, 2000 Free Software Foundation, Inc. + Copyright (C) 1997-9, 2000, 2010 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -49,8 +49,8 @@ size_t dfm_column_start (const struct dfm_reader *); size_t dfm_columns_past_end (const struct dfm_reader *); size_t dfm_get_column (const struct dfm_reader *, const char *); -/* File stack. */ -void dfm_push (struct dfm_reader *); -void dfm_pop (struct dfm_reader *); +/* Information. */ +const char *dfm_get_file_name (const struct dfm_reader *); +int dfm_get_line_number (const struct dfm_reader *); #endif /* data-reader.h */ diff --git a/src/language/data-io/data-writer.c b/src/language/data-io/data-writer.c index f7365687..fd77d504 100644 --- a/src/language/data-io/data-writer.c +++ b/src/language/data-io/data-writer.c @@ -70,7 +70,7 @@ dfm_open_writer (struct file_handle *fh) &w->file, NULL); if (w->rf == NULL) { - msg (ME, _("An error occurred while opening \"%s\" for writing " + msg (ME, _("An error occurred while opening `%s' for writing " "as a data file: %s."), fh_get_file_name (w->fh), strerror (errno)); dfm_close_writer (w); @@ -187,7 +187,7 @@ dfm_close_writer (struct dfm_writer *w) ok = !dfm_write_error (w) && !fn_close (file_name, w->file); if (!ok) - msg (ME, _("I/O error occurred writing data file \"%s\"."), file_name); + msg (ME, _("I/O error occurred writing data file `%s'."), file_name); if (ok ? !replace_file_commit (w->rf) : !replace_file_abort (w->rf)) ok = false; diff --git a/src/language/data-io/file-handle.q b/src/language/data-io/file-handle.q index 33aa1d16..71081b92 100644 --- a/src/language/data-io/file-handle.q +++ b/src/language/data-io/file-handle.q @@ -200,7 +200,7 @@ fh_parse (struct lexer *lexer, enum fh_referent referent_mask) handle = fh_inline_file (); else { - if (lex_token (lexer) != T_ID && lex_token (lexer) != T_STRING) + if (lex_token (lexer) != T_ID && !lex_is_string (lexer)) { lex_error (lexer, _("expecting a file name or handle name")); return NULL; diff --git a/src/language/data-io/get-data.c b/src/language/data-io/get-data.c index 00390891..94fadd60 100644 --- a/src/language/data-io/get-data.c +++ b/src/language/data-io/get-data.c @@ -219,7 +219,6 @@ parse_get_gnm (struct lexer *lexer, struct dataset *ds) } else { - printf ("Unknown data file type \"\%s\"\n", lex_tokid (lexer)); goto error; } lex_get (lexer); @@ -459,7 +458,7 @@ parse_get_txt (struct lexer *lexer, struct dataset *ds) break; else { - lex_error (lexer, _("expecting VARIABLES")); + lex_error (lexer, _("expecting %s"), "VARIABLES"); goto error; } } diff --git a/src/language/data-io/get.c b/src/language/data-io/get.c index 14fb70a4..cf59c8e0 100644 --- a/src/language/data-io/get.c +++ b/src/language/data-io/get.c @@ -77,7 +77,7 @@ parse_read_command (struct lexer *lexer, struct dataset *ds, enum reader_command { lex_match (lexer, '/'); - if (lex_match_id (lexer, "FILE") || lex_token (lexer) == T_STRING) + if (lex_match_id (lexer, "FILE") || lex_is_string (lexer)) { lex_match (lexer, '='); diff --git a/src/language/data-io/list.q b/src/language/data-io/list.q index 60f51b52..738b6671 100644 --- a/src/language/data-io/list.q +++ b/src/language/data-io/list.q @@ -178,6 +178,7 @@ cmd_list (struct lexer *lexer, struct dataset *ds) ok = proc_commit (ds) && ok; subcase_destroy (&sc); + free (cmd.v_variables); return ok ? CMD_SUCCESS : CMD_CASCADING_FAILURE; } diff --git a/src/language/data-io/placement-parser.c b/src/language/data-io/placement-parser.c index eee5206b..4f1d062c 100644 --- a/src/language/data-io/placement-parser.c +++ b/src/language/data-io/placement-parser.c @@ -223,7 +223,7 @@ fixed_parse_fortran (struct lexer *lexer, struct pool *pool, bool for_input, { if (!fmt_from_name (type, &f.type)) { - msg (SE, _("Unknown format type \"%s\"."), type); + msg (SE, _("Unknown format type `%s'."), type); return false; } if (!fmt_check (&f, for_input)) diff --git a/src/language/data-io/print.c b/src/language/data-io/print.c index fd98eaed..164d9927 100644 --- a/src/language/data-io/print.c +++ b/src/language/data-io/print.c @@ -252,7 +252,7 @@ parse_specs (struct lexer *lexer, struct pool *tmp_pool, struct print_trns *trns if (!parse_record_placement (lexer, &record, &column)) return false; - if (lex_token (lexer) == T_STRING) + if (lex_is_string (lexer)) ok = parse_string_argument (lexer, trns, record, &column); else ok = parse_variable_argument (lexer, dict, trns, tmp_pool, &record, &column, @@ -412,7 +412,7 @@ dump_table (struct print_trns *trns, const struct file_handle *fh) switch (spec->type) { case PRT_LITERAL: - tab_text_format (t, 0, row, TAB_LEFT | TAB_FIX, "\"%.*s\"", + tab_text_format (t, 0, row, TAB_LEFT | TAB_FIX, "`%.*s'", (int) ds_length (&spec->string), ds_data (&spec->string)); width = ds_length (&spec->string); diff --git a/src/language/data-io/save-translate.c b/src/language/data-io/save-translate.c index 3e33ff11..4cf5e71e 100644 --- a/src/language/data-io/save-translate.c +++ b/src/language/data-io/save-translate.c @@ -245,7 +245,7 @@ cmd_save_translate (struct lexer *lexer, struct dataset *ds) } else if (!replace && fn_exists (fh_get_file_name (handle))) { - msg (SE, _("Output file \"%s\" exists but REPLACE was not specified."), + msg (SE, _("Output file `%s' exists but REPLACE was not specified."), fh_get_file_name (handle)); goto error; } diff --git a/src/language/data-io/trim.c b/src/language/data-io/trim.c index 921b9c65..5817fd02 100644 --- a/src/language/data-io/trim.c +++ b/src/language/data-io/trim.c @@ -88,8 +88,8 @@ parse_dict_rename (struct lexer *lexer, struct dictionary *dict) msg (SE, _("Cannot rename %s as %s because there already exists " "a variable named %s. To rename variables with " "overlapping names, use a single RENAME subcommand " - "such as \"/RENAME (A=B)(B=C)(C=A)\", or equivalently, " - "\"/RENAME (A B C=B C A)\"."), + "such as `/RENAME (A=B)(B=C)(C=A)', or equivalently, " + "`/RENAME (A B C=B C A)'."), var_get_name (v), lex_tokid (lexer), lex_tokid (lexer)); return 0; } diff --git a/src/language/dictionary/attributes.c b/src/language/dictionary/attributes.c index 9e9b8085..ee309ae3 100644 --- a/src/language/dictionary/attributes.c +++ b/src/language/dictionary/attributes.c @@ -186,7 +186,7 @@ parse_attributes (struct lexer *lexer, struct attrset **sets, size_t n) command = DELETE; else if (command == UNKNOWN) { - lex_error (lexer, _("expecting ATTRIBUTE= or DELETE=")); + lex_error (lexer, _("expecting %s or %s"), "ATTRIBUTE=", "DELETE="); return CMD_FAILURE; } diff --git a/src/language/dictionary/missing-values.c b/src/language/dictionary/missing-values.c index 22fe4436..912c58cf 100644 --- a/src/language/dictionary/missing-values.c +++ b/src/language/dictionary/missing-values.c @@ -51,11 +51,8 @@ cmd_missing_values (struct lexer *lexer, struct dataset *ds) if (!parse_variables (lexer, dataset_dict (ds), &v, &nv, PV_NONE)) goto done; - if (!lex_match (lexer, '(')) - { - lex_error (lexer, _("expecting `('")); - goto done; - } + if (!lex_force_match (lexer, '(')) + goto done; for (i = 0; i < nv; i++) var_clear_missing_values (v[i]); diff --git a/src/language/dictionary/mrsets.c b/src/language/dictionary/mrsets.c index 6e8a0508..96f1a110 100644 --- a/src/language/dictionary/mrsets.c +++ b/src/language/dictionary/mrsets.c @@ -577,7 +577,7 @@ parse_display (struct lexer *lexer, struct dictionary *dict) if (mrset->width == 0) ds_put_format (&details, "%.0f\n", mrset->counted.f); else - ds_put_format (&details, "\"%.*s\"\n", mrset->width, + ds_put_format (&details, "`%.*s'\n", mrset->width, value_str (&mrset->counted, mrset->width)); ds_put_format (&details, "%s: %s\n", _("Category label source"), (mrset->cat_source == MRSET_VARLABELS diff --git a/src/language/dictionary/variable-label.c b/src/language/dictionary/variable-label.c index e8abe70d..fbf7e200 100644 --- a/src/language/dictionary/variable-label.c +++ b/src/language/dictionary/variable-label.c @@ -46,9 +46,8 @@ cmd_variable_labels (struct lexer *lexer, struct dataset *ds) if (!parse_variables (lexer, dataset_dict (ds), &v, &nv, PV_NONE)) return CMD_FAILURE; - if (lex_token (lexer) != T_STRING) + if (!lex_force_string (lexer)) { - msg (SE, _("String expected for variable label.")); free (v); return CMD_FAILURE; } diff --git a/src/language/expressions/evaluate.c b/src/language/expressions/evaluate.c index 48fc1556..65404b43 100644 --- a/src/language/expressions/evaluate.c +++ b/src/language/expressions/evaluate.c @@ -142,7 +142,7 @@ cmd_debug_evaluate (struct lexer *lexer, struct dataset *dsother UNUSED) if (lex_is_number (lexer)) width = 0; - else if (lex_token (lexer) == T_STRING) + else if (lex_is_string (lexer)) width = ds_length (lex_tokstr (lexer)); else { diff --git a/src/language/expressions/helpers.c b/src/language/expressions/helpers.c index 7e9e1d6c..ac17c1ce 100644 --- a/src/language/expressions/helpers.c +++ b/src/language/expressions/helpers.c @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 2008 Free Software Foundation, Inc. + Copyright (C) 2008, 2010 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -24,27 +24,14 @@ const struct substring empty_string = {NULL, 0}; -static void -expr_error (void *aux UNUSED, const char *format, ...) -{ - struct msg m; - va_list args; - - m.category = MSG_C_SYNTAX; - m.severity = MSG_S_ERROR; - va_start (args, format); - m.text = xvasprintf (format, args); - va_end (args); - - msg_emit (&m); -} - double expr_ymd_to_ofs (double year, double month, double day) { int y = year; int m = month; int d = day; + char *error; + double ofs; if (y != year || m != month || d != day) { @@ -53,7 +40,13 @@ expr_ymd_to_ofs (double year, double month, double day) return SYSMIS; } - return calendar_gregorian_to_offset (y, m, d, expr_error, NULL); + ofs = calendar_gregorian_to_offset (y, m, d, &error); + if (error != NULL) + { + msg (SE, "%s", error); + free (error); + } + return ofs; } double @@ -179,9 +172,11 @@ recognize_unit (struct substring name, enum date_unit *unit) return true; } - msg (SE, _("Unrecognized date unit \"%.*s\". " - "Valid date units are \"years\", \"quarters\", \"months\", " - "\"weeks\", \"days\", \"hours\", \"minutes\", and \"seconds\"."), + /* TRANSLATORS: Don't translate the the actual unit names `weeks', `days' etc + They must remain in their original English. */ + msg (SE, _("Unrecognized date unit `%.*s'. " + "Valid date units are `years', `quarters', `months', " + "`weeks', `days', `hours', `minutes', and `seconds'."), (int) ss_length (name), ss_data (name)); return false; } @@ -330,7 +325,7 @@ recognize_method (struct substring method_name, enum date_sum_method *method) else { msg (SE, _("Invalid DATESUM method. " - "Valid choices are \"closest\" and \"rollover\".")); + "Valid choices are `closest' and `rollover'.")); return false; } } @@ -342,6 +337,7 @@ add_months (double date, int months, enum date_sum_method method) { int y, m, d, yd; double output; + char *error; calendar_offset_to_gregorian (date / DAY_S, &y, &m, &d, &yd); y += months / 12; @@ -361,9 +357,14 @@ add_months (double date, int months, enum date_sum_method method) if (method == SUM_CLOSEST && d > calendar_days_in_month (y, m)) d = calendar_days_in_month (y, m); - output = calendar_gregorian_to_offset (y, m, d, expr_error, NULL); + output = calendar_gregorian_to_offset (y, m, d, &error); if (output != SYSMIS) output = (output * DAY_S) + fmod (date, DAY_S); + else + { + msg (SE, "%s", error); + free (error); + } return output; } @@ -404,7 +405,7 @@ expr_date_sum (double date, double quantity, struct substring unit_name, } int -compare_string (const struct substring *a, const struct substring *b) +compare_string_3way (const struct substring *a, const struct substring *b) { size_t i; diff --git a/src/language/expressions/helpers.h b/src/language/expressions/helpers.h index 895ec49b..cb59c206 100644 --- a/src/language/expressions/helpers.h +++ b/src/language/expressions/helpers.h @@ -48,7 +48,7 @@ static inline double check_errno (double x) extern const struct substring empty_string; -int compare_string (const struct substring *, const struct substring *); +int compare_string_3way (const struct substring *, const struct substring *); double expr_ymd_to_date (double year, double month, double day); double expr_ymd_to_ofs (double year, double month, double day); diff --git a/src/language/expressions/operations.def b/src/language/expressions/operations.def index 531d6b31..0286acf9 100644 --- a/src/language/expressions/operations.def +++ b/src/language/expressions/operations.def @@ -63,12 +63,12 @@ boolean operator LT (a, b) = a < b; boolean operator NE (a, b) = a != b; // String relational operators. -boolean operator EQ_STRING (string a, string b) = compare_string (&a, &b) == 0; -boolean operator GE_STRING (string a, string b) = compare_string (&a, &b) >= 0; -boolean operator GT_STRING (string a, string b) = compare_string (&a, &b) > 0; -boolean operator LE_STRING (string a, string b) = compare_string (&a, &b) <= 0; -boolean operator LT_STRING (string a, string b) = compare_string (&a, &b) < 0; -boolean operator NE_STRING (string a, string b) = compare_string (&a, &b) != 0; +boolean operator EQ_STRING (string a, string b) = compare_string_3way (&a, &b) == 0; +boolean operator GE_STRING (string a, string b) = compare_string_3way (&a, &b) >= 0; +boolean operator GT_STRING (string a, string b) = compare_string_3way (&a, &b) > 0; +boolean operator LE_STRING (string a, string b) = compare_string_3way (&a, &b) <= 0; +boolean operator LT_STRING (string a, string b) = compare_string_3way (&a, &b) < 0; +boolean operator NE_STRING (string a, string b) = compare_string_3way (&a, &b) != 0; // Unary functions. function ABS (x) = fabs (x); @@ -118,7 +118,7 @@ boolean function ANY (string x, string a[n]) size_t i; for (i = 0; i < n; i++) - if (!compare_string (&x, &a[i])) + if (!compare_string_3way (&x, &a[i])) return 1.; return 0.; } @@ -154,7 +154,7 @@ string function MAX (string a[n]) max = &a[0]; for (i = 1; i < n; i++) - if (compare_string (&a[i], max) > 0) + if (compare_string_3way (&a[i], max) > 0) max = &a[i]; return *max; } @@ -185,7 +185,7 @@ string function MIN (string a[n]) min = &a[0]; for (i = 1; i < n; i++) - if (compare_string (&a[i], min) < 0) + if (compare_string_3way (&a[i], min) < 0) min = &a[i]; return *min; } @@ -238,7 +238,7 @@ boolean function RANGE (string x, string a[n*2]) { struct substring *w = &a[2 * i]; struct substring *y = &a[2 * i + 1]; - if (compare_string (w, &x) <= 0 && compare_string (&x, y) <= 0) + if (compare_string_3way (w, &x) <= 0 && compare_string_3way (&x, y) <= 0) return 1.; } return 0.; @@ -581,7 +581,19 @@ string function RTRIM (string s, string c) function NUMBER (string s, ni_format f) { union value out; - data_in (ss_head (s, f->w), LEGACY_NATIVE, f->type, f->d, 0, 0, NULL, &out, 0); + char *error; + + if (s.length > f->w) + s.length = f->w; + error = data_in (s, LEGACY_NATIVE, f->type, &out, 0, NULL); + if (error == NULL) + data_in_imply_decimals (s, LEGACY_NATIVE, f->type, f->d, &out); + else + { + msg (SE, "Cannot parse \"%.*s\" as format %s: %s", + (int) s.length, s.string, fmt_name (f->type), error); + free (error); + } return out.f; } @@ -961,7 +973,8 @@ absorb_miss no_opt string operator VEC_ELEM_STR (idx) if (idx >= 1 && idx <= vector_get_var_cnt (v)) { struct variable *var = vector_get_var (v, (size_t) idx - 1); - return copy_string (e, case_str (c, var), var_get_width (var)); + return copy_string (e, CHAR_CAST_BUG (char *, case_str (c, var)), + var_get_width (var)); } else { @@ -1029,7 +1042,8 @@ no_opt perm_only string function LAG (str_var v, pos_int n_before) { const struct ccase *c = lagged_case (ds, n_before); if (c != NULL) - return copy_string (e, case_str (c, v), var_get_width (v)); + return copy_string (e, CHAR_CAST_BUG (char *, case_str (c, v)), + var_get_width (v)); else return empty_string; } @@ -1040,7 +1054,8 @@ no_opt perm_only string function LAG (str_var v) { const struct ccase *c = lagged_case (ds, 1); if (c != NULL) - return copy_string (e, case_str (c, v), var_get_width (v)); + return copy_string (e, CHAR_CAST_BUG (char *, case_str (c, v)), + var_get_width (v)); else return empty_string; } diff --git a/src/language/expressions/parse.c b/src/language/expressions/parse.c index 530e272c..f2b4f1c7 100644 --- a/src/language/expressions/parse.c +++ b/src/language/expressions/parse.c @@ -616,7 +616,7 @@ static union any_node * parse_or (struct lexer *lexer, struct expression *e) { static const struct operator op = - { T_OR, OP_OR, "logical disjunction (\"OR\")" }; + { T_OR, OP_OR, "logical disjunction (`OR')" }; return parse_binary_operators (lexer, e, parse_and (lexer, e), &op, 1, parse_and, NULL); } @@ -626,7 +626,7 @@ static union any_node * parse_and (struct lexer *lexer, struct expression *e) { static const struct operator op = - { T_AND, OP_AND, "logical conjunction (\"AND\")" }; + { T_AND, OP_AND, "logical conjunction (`AND')" }; return parse_binary_operators (lexer, e, parse_not (lexer, e), &op, 1, parse_not, NULL); @@ -637,7 +637,7 @@ static union any_node * parse_not (struct lexer *lexer, struct expression *e) { static const struct operator op - = { T_NOT, OP_NOT, "logical negation (\"NOT\")" }; + = { T_NOT, OP_NOT, "logical negation (`NOT')" }; return parse_inverting_unary_operator (lexer, e, &op, parse_rel); } @@ -646,12 +646,12 @@ static union any_node * parse_rel (struct lexer *lexer, struct expression *e) { const char *chain_warning = - _("Chaining relational operators (e.g. \"a < b < c\") will " + _("Chaining relational operators (e.g. `a < b < c') will " "not produce the mathematically expected result. " "Use the AND logical operator to fix the problem " - "(e.g. \"a < b AND b < c\"). " + "(e.g. `a < b AND b < c'). " "If chaining is really intended, parentheses will disable " - "this warning (e.g. \"(a < b) < c\".)"); + "this warning (e.g. `(a < b) < c'.)"); union any_node *node = parse_add (lexer, e); @@ -665,13 +665,13 @@ parse_rel (struct lexer *lexer, struct expression *e) { static const struct operator ops[] = { - { '=', OP_EQ, "numeric equality (\"=\")" }, - { T_EQ, OP_EQ, "numeric equality (\"EQ\")" }, - { T_GE, OP_GE, "numeric greater-than-or-equal-to (\">=\")" }, - { T_GT, OP_GT, "numeric greater than (\">\")" }, - { T_LE, OP_LE, "numeric less-than-or-equal-to (\"<=\")" }, - { T_LT, OP_LT, "numeric less than (\"<\")" }, - { T_NE, OP_NE, "numeric inequality (\"<>\")" }, + { '=', OP_EQ, "numeric equality (`=')" }, + { T_EQ, OP_EQ, "numeric equality (`EQ')" }, + { T_GE, OP_GE, "numeric greater-than-or-equal-to (`>=')" }, + { T_GT, OP_GT, "numeric greater than (`>')" }, + { T_LE, OP_LE, "numeric less-than-or-equal-to (`<=')" }, + { T_LT, OP_LT, "numeric less than (`<')" }, + { T_NE, OP_NE, "numeric inequality (`<>')" }, }; return parse_binary_operators (lexer, e, node, ops, @@ -683,13 +683,13 @@ parse_rel (struct lexer *lexer, struct expression *e) { static const struct operator ops[] = { - { '=', OP_EQ_STRING, "string equality (\"=\")" }, - { T_EQ, OP_EQ_STRING, "string equality (\"EQ\")" }, - { T_GE, OP_GE_STRING, "string greater-than-or-equal-to (\">=\")" }, - { T_GT, OP_GT_STRING, "string greater than (\">\")" }, - { T_LE, OP_LE_STRING, "string less-than-or-equal-to (\"<=\")" }, - { T_LT, OP_LT_STRING, "string less than (\"<\")" }, - { T_NE, OP_NE_STRING, "string inequality (\"<>\")" }, + { '=', OP_EQ_STRING, "string equality (`=')" }, + { T_EQ, OP_EQ_STRING, "string equality (`EQ')" }, + { T_GE, OP_GE_STRING, "string greater-than-or-equal-to (`>=')" }, + { T_GT, OP_GT_STRING, "string greater than (`>')" }, + { T_LE, OP_LE_STRING, "string less-than-or-equal-to (`<=')" }, + { T_LT, OP_LT_STRING, "string less than (`<')" }, + { T_NE, OP_NE_STRING, "string inequality (`<>')" }, }; return parse_binary_operators (lexer, e, node, ops, @@ -708,8 +708,8 @@ parse_add (struct lexer *lexer, struct expression *e) { static const struct operator ops[] = { - { '+', OP_ADD, "addition (\"+\")" }, - { '-', OP_SUB, "subtraction (\"-\")" }, + { '+', OP_ADD, "addition (`+')" }, + { '-', OP_SUB, "subtraction (`-')" }, }; return parse_binary_operators (lexer, e, parse_mul (lexer, e), @@ -723,8 +723,8 @@ parse_mul (struct lexer *lexer, struct expression *e) { static const struct operator ops[] = { - { '*', OP_MUL, "multiplication (\"*\")" }, - { '/', OP_DIV, "division (\"/\")" }, + { '*', OP_MUL, "multiplication (`*')" }, + { '/', OP_DIV, "division (`/')" }, }; return parse_binary_operators (lexer, e, parse_neg (lexer, e), @@ -736,7 +736,7 @@ parse_mul (struct lexer *lexer, struct expression *e) static union any_node * parse_neg (struct lexer *lexer, struct expression *e) { - static const struct operator op = { '-', OP_NEG, "negation (\"-\")" }; + static const struct operator op = { '-', OP_NEG, "negation (`-')" }; return parse_inverting_unary_operator (lexer, e, &op, parse_exp); } @@ -744,12 +744,12 @@ static union any_node * parse_exp (struct lexer *lexer, struct expression *e) { static const struct operator op = - { T_EXP, OP_POW, "exponentiation (\"**\")" }; + { T_EXP, OP_POW, "exponentiation (`**')" }; const char *chain_warning = - _("The exponentiation operator (\"**\") is left-associative, " + _("The exponentiation operator (`**') is left-associative, " "even though right-associative semantics are more useful. " - "That is, \"a**b**c\" equals \"(a**b)**c\", not as \"a**(b**c)\". " + "That is, `a**b**c' equals `(a**b)**c', not as `a**(b**c)'. " "To disable this warning, insert parentheses."); return parse_binary_operators (lexer, e, parse_primary (lexer, e), &op, 1, @@ -886,16 +886,13 @@ parse_primary (struct lexer *lexer, struct expression *e) union any_node *node; lex_get (lexer); node = parse_or (lexer, e); - if (node != NULL && !lex_match (lexer, ')')) - { - lex_error (lexer, _("expecting `)'")); - return NULL; - } + if (node != NULL && !lex_force_match (lexer, ')')) + return NULL; return node; } default: - lex_error (lexer, _("in expression")); + lex_error (lexer, NULL); return NULL; } } diff --git a/src/language/lexer/format-parser.c b/src/language/lexer/format-parser.c index 35e9a991..39dbacbf 100644 --- a/src/language/lexer/format-parser.c +++ b/src/language/lexer/format-parser.c @@ -104,7 +104,7 @@ parse_format_specifier (struct lexer *lexer, struct fmt_spec *format) if (!fmt_from_name (type, &format->type)) { - msg (SE, _("Unknown format type \"%s\"."), type); + msg (SE, _("Unknown format type `%s'."), type); return false; } @@ -123,7 +123,7 @@ parse_format_specifier_name (struct lexer *lexer, enum fmt_type *type) } if (!fmt_from_name (ds_cstr (lex_tokstr (lexer)), type)) { - msg (SE, _("Unknown format type \"%s\"."), ds_cstr (lex_tokstr (lexer))); + msg (SE, _("Unknown format type `%s'."), ds_cstr (lex_tokstr (lexer))); return false; } lex_get (lexer); diff --git a/src/language/lexer/lexer.c b/src/language/lexer/lexer.c index bad35be8..87fecaa6 100644 --- a/src/language/lexer/lexer.c +++ b/src/language/lexer/lexer.c @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 1997-9, 2000, 2006, 2009 Free Software Foundation, Inc. + Copyright (C) 1997-9, 2000, 2006, 2009, 2010 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -40,11 +40,6 @@ #define _(msgid) gettext (msgid) #define N_(msgid) msgid - -#define DUMP_TOKENS 0 - - - struct lexer { struct string line_buffer; @@ -83,10 +78,6 @@ enum string_type }; static int parse_string (struct lexer *, enum string_type); - -#if DUMP_TOKENS -static void dump_token (struct lexer *); -#endif /* Initialization. */ @@ -180,9 +171,6 @@ lex_get (struct lexer *lexer) if (lexer->put_token) { restore_token (lexer); -#if DUMP_TOKENS - dump_token (lexer); -#endif return; } @@ -199,27 +187,18 @@ lex_get (struct lexer *lexer) { lexer->dot = 0; lexer->token = '.'; -#if DUMP_TOKENS - dump_token (lexer); -#endif return; } else if (!lex_get_line (lexer)) { lexer->prog = NULL; lexer->token = T_STOP; -#if DUMP_TOKENS - dump_token (lexer); -#endif return; } if (lexer->put_token) { restore_token (lexer); -#if DUMP_TOKENS - dump_token (lexer); -#endif return; } } @@ -394,10 +373,6 @@ lex_get (struct lexer *lexer) } break; } - -#if DUMP_TOKENS - dump_token (lexer); -#endif } /* Parses an identifier at the current position into tokid and @@ -440,31 +415,34 @@ lex_sbc_missing (struct lexer *lexer, const char *sbc) void lex_error (struct lexer *lexer, const char *message, ...) { - char *token_rep; - char where[128]; + struct string s; + + ds_init_empty (&s); - token_rep = lex_token_representation (lexer); if (lexer->token == T_STOP) - strcpy (where, "end of file"); + ds_put_cstr (&s, _("Syntax error at end of file")); else if (lexer->token == '.') - strcpy (where, "end of command"); + ds_put_cstr (&s, _("Syntax error at end of command")); else - snprintf (where, sizeof where, "`%s'", token_rep); - free (token_rep); + { + char *token_rep = lex_token_representation (lexer); + ds_put_format (&s, _("Syntax error at `%s'"), token_rep); + free (token_rep); + } if (message) { - char buf[1024]; va_list args; + ds_put_cstr (&s, ": "); + va_start (args, message); - vsnprintf (buf, 1024, message, args); + ds_put_vformat (&s, message, args); va_end (args); - - msg (SE, _("Syntax error %s at %s."), buf, where); } - else - msg (SE, _("Syntax error at %s."), where); + + msg (SE, "%s.", ds_cstr (&s)); + ds_destroy (&s); } /* Checks that we're at end of command. @@ -625,7 +603,7 @@ lex_force_match (struct lexer *lexer, int t) bool lex_force_string (struct lexer *lexer) { - if (lexer->token == T_STRING) + if (lex_is_string (lexer)) return true; else { @@ -884,6 +862,8 @@ lex_get_line_raw (struct lexer *lexer) const char *line = ds_cstr (&lexer->line_buffer); text_item_submit (text_item_create (TEXT_ITEM_SYNTAX, line)); } + else + lexer->prog = NULL; return ok; } @@ -896,10 +876,7 @@ lex_get_line (struct lexer *lexer) bool line_starts_command; if (!lex_get_line_raw (lexer)) - { - lexer->prog = NULL; - return false; - } + return false; lex_preprocess_line (&lexer->line_buffer, lex_current_syntax_mode (lexer), @@ -1221,60 +1198,6 @@ finish: return T_STRING; } -#if DUMP_TOKENS -/* Reads one token from the lexer and writes a textual representation - on stdout for debugging purposes. */ -static void -dump_token (struct lexer *lexer) -{ - { - const char *curfn; - int curln; - - curln = getl_source_location (lexer->ss); - curfn = getl_source_name (lexer->ss); - if (curfn) - fprintf (stderr, "%s:%d\t", curfn, curln); - } - - switch (lexer->token) - { - case T_ID: - fprintf (stderr, "ID\t%s\n", lexer->tokid); - break; - - case T_POS_NUM: - case T_NEG_NUM: - fprintf (stderr, "NUM\t%f\n", lexer->tokval); - break; - - case T_STRING: - fprintf (stderr, "STRING\t\"%s\"\n", ds_cstr (&lexer->tokstr)); - break; - - case T_STOP: - fprintf (stderr, "STOP\n"); - break; - - case T_EXP: - fprintf (stderr, "MISC\tEXP\""); - break; - - case 0: - fprintf (stderr, "MISC\tEOF\n"); - break; - - default: - if (lex_is_keyword (lexer->token)) - fprintf (stderr, "KEYWORD\t%s\n", lex_token_name (lexer->token)); - else - fprintf (stderr, "PUNCT\t%c\n", lexer->token); - break; - } -} -#endif /* DUMP_TOKENS */ - - /* Token Accessor Functions */ int diff --git a/src/language/lexer/q2c.c b/src/language/lexer/q2c.c index f2617092..cf8e53ee 100644 --- a/src/language/lexer/q2c.c +++ b/src/language/lexer/q2c.c @@ -225,11 +225,11 @@ st_upper (const char *s) /* Returns the address of the first non-whitespace character in S, or the address of the null terminator if none. */ static char * -skip_ws (const char *s) +skip_ws (char *s) { while (isspace ((unsigned char) *s)) s++; - return (char *) s; + return s; } /* Read one line from the input file into buf. Lines having special @@ -1534,7 +1534,7 @@ dump_specifier_parse (const specifier *spec, const subcommand *sbc) else if (s->value == VAL_STRING) { dump (1, "if (lex_token (lexer) != T_ID " - "&& lex_token (lexer) != T_STRING)"); + "&& !lex_is_string (lexer))"); dump (1, "{"); dump (0, "msg (SE, _(\"%s specifier of %s subcommand " "requires a string argument.\"));", diff --git a/src/language/lexer/value-parser.c b/src/language/lexer/value-parser.c index c780d86f..269d24bc 100644 --- a/src/language/lexer/value-parser.c +++ b/src/language/lexer/value-parser.c @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 2005, 2006, 2009 Free Software Foundation, Inc. + Copyright (C) 2005, 2006, 2009, 2010 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -15,14 +15,18 @@ along with this program. If not, see . */ #include + #include "value-parser.h" + #include -#include -#include -#include "lexer.h" -#include -#include -#include + +#include "data/data-in.h" +#include "data/format.h" +#include "data/value.h" +#include "language/lexer/lexer.h" +#include "libpspp/cast.h" +#include "libpspp/message.h" +#include "libpspp/str.h" #include "gettext.h" #define _(msgid) gettext (msgid) @@ -96,12 +100,16 @@ parse_number (struct lexer *lexer, double *x, const enum fmt_type *format) lex_get (lexer); return true; } - else if (lex_token (lexer) == T_STRING && format != NULL) + else if (lex_is_string (lexer) && format != NULL) { union value v; - assert (! (fmt_get_category (*format) & ( FMT_CAT_STRING ))); - data_in (ds_ss (lex_tokstr (lexer)), LEGACY_NATIVE, - *format, 0, 0, 0, NULL, &v, 0); + + assert (fmt_get_category (*format) != FMT_CAT_STRING); + + if (!data_in_msg (ds_ss (lex_tokstr (lexer)), LEGACY_NATIVE, + *format, &v, 0, NULL)) + return false; + lex_get (lexer); *x = v.f; if (*x == SYSMIS) @@ -133,12 +141,13 @@ parse_value (struct lexer *lexer, union value *v, int width) return false; v->f = lex_tokval (lexer); } - else + else if (lex_force_string (lexer)) { - if (!lex_force_string (lexer)) - return false; - value_copy_str_rpad (v, width, ds_cstr (lex_tokstr (lexer)), ' '); + const char *s = ds_cstr (lex_tokstr (lexer)); + value_copy_str_rpad (v, width, CHAR_CAST_BUG (const uint8_t *, s), ' '); } + else + return false; lex_get (lexer); diff --git a/src/language/stats/.gitignore b/src/language/stats/.gitignore index c52a3ab9..8b9a1e75 100644 --- a/src/language/stats/.gitignore +++ b/src/language/stats/.gitignore @@ -1,8 +1,6 @@ crosstabs.c examine.c frequencies.c -glm.c -npar.c rank.c regression.c t-test.c diff --git a/src/language/stats/aggregate.c b/src/language/stats/aggregate.c index bcc8a3be..a8e3f6d7 100644 --- a/src/language/stats/aggregate.c +++ b/src/language/stats/aggregate.c @@ -222,7 +222,7 @@ cmd_aggregate (struct lexer *lexer, struct dataset *ds) lex_match (lexer, '='); if (!lex_match_id (lexer, "COLUMNWISE")) { - lex_error (lexer, _("while expecting COLUMNWISE")); + lex_error (lexer, _("expecting %s"), "COLUMNWISE"); goto error; } agr.missing = COLUMNWISE; @@ -231,7 +231,7 @@ cmd_aggregate (struct lexer *lexer, struct dataset *ds) copy_documents = true; else if (lex_match_id (lexer, "PRESORTED")) presorted = true; - else if (lex_match_id (lexer, "BREAK")) + else if (lex_force_match_id (lexer, "BREAK")) { int i; @@ -249,10 +249,8 @@ cmd_aggregate (struct lexer *lexer, struct dataset *ds) break; } else - { - lex_error (lexer, _("expecting BREAK")); - goto error; - } + goto error; + } if (presorted && saw_direction) msg (SW, _("When PRESORTED is specified, specifying sorting directions " @@ -434,7 +432,7 @@ parse_aggregate_functions (struct lexer *lexer, const struct dictionary *dict, - if (lex_token (lexer) == T_STRING) + if (lex_is_string (lexer)) { struct string label; ds_init_string (&label, lex_tokstr (lexer)); @@ -453,14 +451,8 @@ parse_aggregate_functions (struct lexer *lexer, const struct dictionary *dict, goto error; } - exclude = MV_ANY; - ds_assign_string (&function_name, lex_tokstr (lexer)); - - ds_chomp (&function_name, '.'); - - if (lex_tokid(lexer)[strlen (lex_tokid (lexer)) - 1] == '.') - exclude = MV_SYSTEM; + exclude = ds_chomp (&function_name, '.') ? MV_SYSTEM : MV_ANY; for (function = agr_func_tab; function->name; function++) if (!strcasecmp (function->name, ds_cstr (&function_name))) @@ -480,7 +472,7 @@ parse_aggregate_functions (struct lexer *lexer, const struct dictionary *dict, { if (function->src_vars == AGR_SV_YES) { - lex_error (lexer, _("expecting `('")); + lex_force_match (lexer, '('); goto error; } } @@ -507,7 +499,7 @@ parse_aggregate_functions (struct lexer *lexer, const struct dictionary *dict, int type; lex_match (lexer, ','); - if (lex_token (lexer) == T_STRING) + if (lex_is_string (lexer)) { arg[i].c = ds_xstrdup (lex_tokstr (lexer)); type = VAL_STRING; @@ -536,11 +528,8 @@ parse_aggregate_functions (struct lexer *lexer, const struct dictionary *dict, } /* Trailing rparen. */ - if (!lex_match (lexer, ')')) - { - lex_error (lexer, _("expecting `)'")); - goto error; - } + if (!lex_force_match (lexer, ')')) + goto error; /* Now check that the number of source variables match the number of target variables. If we check earlier diff --git a/src/language/stats/automake.mk b/src/language/stats/automake.mk index 6242d9c0..fb191d0c 100644 --- a/src/language/stats/automake.mk +++ b/src/language/stats/automake.mk @@ -6,8 +6,6 @@ src_language_stats_built_sources = \ src/language/stats/crosstabs.c \ src/language/stats/examine.c \ src/language/stats/frequencies.c \ - src/language/stats/glm.c \ - src/language/stats/npar.c \ src/language/stats/rank.c \ src/language/stats/regression.c \ src/language/stats/t-test.c @@ -22,14 +20,15 @@ language_stats_sources = \ src/language/stats/chisquare.h \ src/language/stats/correlations.c \ src/language/stats/descriptives.c \ - src/language/stats/npar.h \ - src/language/stats/sort-cases.c \ - src/language/stats/sort-criteria.c \ - src/language/stats/sort-criteria.h \ src/language/stats/factor.c \ src/language/stats/flip.c \ src/language/stats/freq.c \ src/language/stats/freq.h \ + src/language/stats/glm.c \ + src/language/stats/kruskal-wallis.c \ + src/language/stats/kruskal-wallis.h \ + src/language/stats/npar.c \ + src/language/stats/npar.h \ src/language/stats/npar-summary.c \ src/language/stats/npar-summary.h \ src/language/stats/oneway.c \ @@ -38,6 +37,9 @@ language_stats_sources = \ src/language/stats/roc.h \ src/language/stats/sign.c \ src/language/stats/sign.h \ + src/language/stats/sort-cases.c \ + src/language/stats/sort-criteria.c \ + src/language/stats/sort-criteria.h \ src/language/stats/wilcoxon.c \ src/language/stats/wilcoxon.h diff --git a/src/language/stats/autorecode.c b/src/language/stats/autorecode.c index 68571cb2..2a72aaea 100644 --- a/src/language/stats/autorecode.c +++ b/src/language/stats/autorecode.c @@ -28,6 +28,7 @@ #include "language/lexer/lexer.h" #include "language/lexer/variable-parser.h" #include "libpspp/array.h" +#include "libpspp/i18n.h" #include "libpspp/compiler.h" #include "libpspp/hash-functions.h" #include "libpspp/hmap.h" @@ -36,6 +37,7 @@ #include "libpspp/str.h" #include "gl/xalloc.h" +#include "gl/vasnprintf.h" #include "gettext.h" #define _(msgid) gettext (msgid) @@ -47,6 +49,8 @@ struct arc_item { struct hmap_node hmap_node; /* Element in "struct arc_spec" hash table. */ union value from; /* Original value. */ + int width; /* Width of the original value */ + double to; /* Recoded value. */ }; @@ -55,7 +59,7 @@ struct arc_spec { const struct variable *src; /* Source variable. */ struct variable *dst; /* Target variable. */ - struct hmap items; /* Hash table of "struct arc_item"s. */ + struct hmap *items; /* Hash table of "struct arc_item"s. */ }; /* Descending or ascending sort order. */ @@ -67,17 +71,20 @@ enum arc_direction /* AUTORECODE data. */ struct autorecode_pgm - { - struct arc_spec *specs; - size_t n_specs; - }; +{ + struct arc_spec *specs; + size_t n_specs; + + /* Hash table of "struct arc_item"s. */ + struct hmap *global_items; +}; static trns_proc_func autorecode_trns_proc; static trns_free_func autorecode_trns_free; -static int compare_arc_items (const void *, const void *, const void *width); +static int compare_arc_items (const void *, const void *, const void *aux); static void arc_free (struct autorecode_pgm *); -static struct arc_item *find_arc_item (struct arc_spec *, const union value *, +static struct arc_item *find_arc_item (const struct arc_spec *, const union value *, size_t hash); /* Performs the AUTORECODE procedure. */ @@ -85,14 +92,15 @@ int cmd_autorecode (struct lexer *lexer, struct dataset *ds) { struct autorecode_pgm *arc = NULL; + struct dictionary *dict = dataset_dict (ds); const struct variable **src_vars = NULL; char **dst_names = NULL; size_t n_srcs = 0; size_t n_dsts = 0; - enum arc_direction direction; - bool print; + enum arc_direction direction = ASCENDING; + bool print = true; struct casereader *input; struct ccase *c; @@ -100,10 +108,13 @@ cmd_autorecode (struct lexer *lexer, struct dataset *ds) size_t i; bool ok; + /* Create procedure. */ + arc = xzalloc (sizeof *arc); + /* Parse variable lists. */ lex_match_id (lexer, "VARIABLES"); lex_match (lexer, '='); - if (!parse_variables_const (lexer, dataset_dict (ds), &src_vars, &n_srcs, + if (!parse_variables_const (lexer, dict, &src_vars, &n_srcs, PV_NO_DUPLICATE)) goto error; if (!lex_force_match_id (lexer, "INTO")) @@ -123,7 +134,7 @@ cmd_autorecode (struct lexer *lexer, struct dataset *ds) { const char *name = dst_names[i]; - if (dict_lookup_var (dataset_dict (ds), name) != NULL) + if (dict_lookup_var (dict, name) != NULL) { msg (SE, _("Target variable %s duplicates existing variable %s."), name, name); @@ -132,31 +143,45 @@ cmd_autorecode (struct lexer *lexer, struct dataset *ds) } /* Parse options. */ - direction = ASCENDING; - print = false; while (lex_match (lexer, '/')) - if (lex_match_id (lexer, "DESCENDING")) - direction = DESCENDING; - else if (lex_match_id (lexer, "PRINT")) - print = true; + { + if (lex_match_id (lexer, "DESCENDING")) + direction = DESCENDING; + else if (lex_match_id (lexer, "PRINT")) + print = true; + else if (lex_match_id (lexer, "GROUP")) + { + arc->global_items = xmalloc (sizeof (*arc->global_items)); + hmap_init (arc->global_items); + } + } + if (lex_token (lexer) != '.') { lex_error (lexer, _("expecting end of command")); goto error; } - /* Create procedure. */ - arc = xmalloc (sizeof *arc); arc->specs = xmalloc (n_dsts * sizeof *arc->specs); arc->n_specs = n_dsts; + for (i = 0; i < n_dsts; i++) { struct arc_spec *spec = &arc->specs[i]; spec->src = src_vars[i]; - hmap_init (&spec->items); + if (arc->global_items) + { + spec->items = arc->global_items; + } + else + { + spec->items = xmalloc (sizeof (*spec->items)); + hmap_init (spec->items); + } } + /* Execute procedure. */ input = proc_open (ds); for (; (c = casereader_read (input)) != NULL; case_unref (c)) @@ -172,8 +197,9 @@ cmd_autorecode (struct lexer *lexer, struct dataset *ds) if (item == NULL) { item = xmalloc (sizeof *item); + item->width = width; value_clone (&item->from, value, width); - hmap_insert (&spec->items, &item->hmap_node, hash); + hmap_insert (spec->items, &item->hmap_node, hash); } } ok = casereader_destroy (input); @@ -186,27 +212,61 @@ cmd_autorecode (struct lexer *lexer, struct dataset *ds) struct arc_item **items; struct arc_item *item; size_t n_items; - int src_width; size_t j; /* Create destination variable. */ - spec->dst = dict_create_var_assert (dataset_dict (ds), dst_names[i], 0); + spec->dst = dict_create_var_assert (dict, dst_names[i], 0); /* Create array of pointers to items. */ - n_items = hmap_count (&spec->items); + n_items = hmap_count (spec->items); items = xmalloc (n_items * sizeof *items); j = 0; - HMAP_FOR_EACH (item, struct arc_item, hmap_node, &spec->items) + HMAP_FOR_EACH (item, struct arc_item, hmap_node, spec->items) items[j++] = item; + assert (j == n_items); /* Sort array by value. */ - src_width = var_get_width (spec->src); - sort (items, n_items, sizeof *items, compare_arc_items, &src_width); + sort (items, n_items, sizeof *items, compare_arc_items, NULL); /* Assign recoded values in sorted order. */ for (j = 0; j < n_items; j++) - items[j]->to = direction == ASCENDING ? j + 1 : n_items - j; + { + const union value *from = &items[j]->from; + size_t len; + char *recoded_value = NULL; + char *c; + const int src_width = items[j]->width; + union value to_val; + value_init (&to_val, 0); + + items[j]->to = direction == ASCENDING ? j + 1 : n_items - j; + + to_val.f = items[j]->to; + + /* Add value labels to the destination variable which indicate + the source value from whence the new value comes. */ + if (src_width > 0) + { + const char *str = CHAR_CAST_BUG (const char*, value_str (from, src_width)); + + recoded_value = recode_string (UTF8, dict_get_encoding (dict), str, src_width); + } + else + recoded_value = asnprintf (NULL, &len, "%g", from->f); + + /* Remove trailing whitespace */ + for (c = recoded_value; *c != '\0'; c++) + if ( *c == ' ') + { + *c = '\0'; + break; + } + + var_add_value_label (spec->dst, &to_val, recoded_value); + value_destroy (&to_val, 0); + free (recoded_value); + } /* Free array. */ free (items); @@ -234,44 +294,70 @@ arc_free (struct autorecode_pgm *arc) for (i = 0; i < arc->n_specs; i++) { struct arc_spec *spec = &arc->specs[i]; - int width = var_get_width (spec->src); struct arc_item *item, *next; - HMAP_FOR_EACH_SAFE (item, next, struct arc_item, hmap_node, - &spec->items) - { - value_destroy (&item->from, width); - hmap_delete (&spec->items, &item->hmap_node); - free (item); - } - hmap_destroy (&spec->items); + HMAP_FOR_EACH_SAFE (item, next, struct arc_item, hmap_node, + spec->items) + { + value_destroy (&item->from, item->width); + hmap_delete (spec->items, &item->hmap_node); + free (item); + } } + + if (arc->global_items) + { + free (arc->global_items); + } + else + { + for (i = 0; i < arc->n_specs; i++) + { + struct arc_spec *spec = &arc->specs[i]; + if (spec->items) + { + hmap_destroy (spec->items); + free (spec->items); + } + } + } + free (arc->specs); free (arc); } } static struct arc_item * -find_arc_item (struct arc_spec *spec, const union value *value, +find_arc_item (const struct arc_spec *spec, const union value *value, size_t hash) { struct arc_item *item; - HMAP_FOR_EACH_WITH_HASH (item, struct arc_item, hmap_node, hash, - &spec->items) + HMAP_FOR_EACH_WITH_HASH (item, struct arc_item, hmap_node, hash, spec->items) if (value_equal (value, &item->from, var_get_width (spec->src))) return item; return NULL; } static int -compare_arc_items (const void *a_, const void *b_, const void *width_) +compare_arc_items (const void *a_, const void *b_, const void *aux UNUSED) { const struct arc_item *const *a = a_; const struct arc_item *const *b = b_; - const int *width = width_; + int width_a = (*a)->width; + int width_b = (*b)->width; + + if ( width_a == width_b) + return value_compare_3way (&(*a)->from, &(*b)->from, width_a); + + if ( width_a == 0 && width_b != 0) + return -1; - return value_compare_3way (&(*a)->from, &(*b)->from, *width); + if ( width_b == 0 && width_a != 0) + return +1; + + return buf_compare_rpad (CHAR_CAST_BUG (const char *, value_str (&(*a)->from, width_a)), width_a, + CHAR_CAST_BUG (const char *, value_str (&(*b)->from, width_b)), width_b); } static int @@ -284,7 +370,7 @@ autorecode_trns_proc (void *arc_, struct ccase **c, *c = case_unshare (*c); for (i = 0; i < arc->n_specs; i++) { - struct arc_spec *spec = &arc->specs[i]; + const struct arc_spec *spec = &arc->specs[i]; int width = var_get_width (spec->src); const union value *value = case_data (*c, spec->src); struct arc_item *item; diff --git a/src/language/stats/binomial.c b/src/language/stats/binomial.c index 3287509c..8126daf3 100644 --- a/src/language/stats/binomial.c +++ b/src/language/stats/binomial.c @@ -88,15 +88,15 @@ calculate_binomial_internal (double n1, double n2, double p) static bool do_binomial (const struct dictionary *dict, struct casereader *input, - const struct binomial_test *bst, + const struct one_sample_test *ost, struct freq *cat1, struct freq *cat2, enum mv_class exclude ) { + const struct binomial_test *bst = UP_CAST (ost, const struct binomial_test, parent); bool warn = true; - const struct one_sample_test *ost = (const struct one_sample_test *) bst; struct ccase *c; for (; (c = casereader_read (input)) != NULL; case_unref (c)) @@ -155,8 +155,8 @@ binomial_execute (const struct dataset *ds, { int v; const struct dictionary *dict = dataset_dict (ds); - const struct binomial_test *bst = (const struct binomial_test *) test; - const struct one_sample_test *ost = (const struct one_sample_test*) test; + const struct one_sample_test *ost = UP_CAST (test, const struct one_sample_test, parent); + const struct binomial_test *bst = UP_CAST (ost, const struct binomial_test, parent); struct freq *cat[2]; int i; @@ -179,7 +179,7 @@ binomial_execute (const struct dataset *ds, } } - if (do_binomial (dataset_dict (ds), input, bst, cat[0], cat[1], exclude)) + if (do_binomial (dataset_dict (ds), input, ost, cat[0], cat[1], exclude)) { const struct variable *wvar = dict_get_weight (dict); const struct fmt_spec *wfmt = wvar ? diff --git a/src/language/stats/correlations.c b/src/language/stats/correlations.c index ea7d6909..6af8ba32 100644 --- a/src/language/stats/correlations.c +++ b/src/language/stats/correlations.c @@ -281,7 +281,7 @@ run_corr (struct casereader *r, const struct corr_opts *opts, const struct corr const gsl_matrix *cov_matrix; gsl_matrix *corr_matrix; struct covariance *cov = covariance_2pass_create (corr->n_vars_total, corr->vars, - 0, NULL, + NULL, opts->wv, opts->exclude); struct casereader *rc = casereader_clone (r); diff --git a/src/language/stats/crosstabs.q b/src/language/stats/crosstabs.q index f75e249e..4f93d6f5 100644 --- a/src/language/stats/crosstabs.q +++ b/src/language/stats/crosstabs.q @@ -49,7 +49,7 @@ #include #include #include -#include +#include #include #include #include @@ -406,7 +406,7 @@ crs_custom_tables (struct lexer *lexer, struct dataset *ds, { if (n_by < 2) { - lex_error (lexer, _("expecting BY")); + lex_force_match (lexer, T_BY); goto done; } else @@ -482,12 +482,8 @@ crs_custom_variables (struct lexer *lexer, struct dataset *ds, | PV_NO_DUPLICATE | PV_NO_SCRATCH))) return 0; - if (lex_token (lexer) != '(') - { - lex_error (lexer, "expecting `('"); + if (!lex_force_match (lexer, '(')) goto lossage; - } - lex_get (lexer); if (!lex_force_int (lexer)) goto lossage; @@ -507,12 +503,8 @@ crs_custom_variables (struct lexer *lexer, struct dataset *ds, } lex_get (lexer); - if (lex_token (lexer) != ')') - { - lex_error (lexer, "expecting `)'"); - goto lossage; - } - lex_get (lexer); + if (!lex_force_match (lexer, ')')) + goto lossage; for (i = orig_nv; i < proc->n_variables; i++) { @@ -1215,10 +1207,10 @@ create_chisq_table (struct pivot_table *pt) tab_text (chisq, 2, 0, TAB_RIGHT | TAT_TITLE, _("df")); tab_text (chisq, 3, 0, TAB_RIGHT | TAT_TITLE, _("Asymp. Sig. (2-tailed)")); - tab_text (chisq, 4, 0, TAB_RIGHT | TAT_TITLE, - _("Exact Sig. (2-tailed)")); - tab_text (chisq, 5, 0, TAB_RIGHT | TAT_TITLE, - _("Exact Sig. (1-tailed)")); + tab_text_format (chisq, 4, 0, TAB_RIGHT | TAT_TITLE, + _("Exact Sig. (%d-tailed)"), 2); + tab_text_format (chisq, 5, 0, TAB_RIGHT | TAT_TITLE, + _("Exact Sig. (%d-tailed)"), 1); tab_offset (chisq, 0, 1); return chisq; diff --git a/src/language/stats/factor.c b/src/language/stats/factor.c index d50d6ad3..93358373 100644 --- a/src/language/stats/factor.c +++ b/src/language/stats/factor.c @@ -1631,7 +1631,7 @@ show_correlation_matrix (const struct cmd_factor *factor, const struct idata *id if (factor->print & PRINT_SIG) { const double y = heading_rows + y_pos_sig * factor->n_vars; - tab_text (t, 0, y, TAT_TITLE, _("Sig. 1-tailed")); + tab_text (t, 0, y, TAT_TITLE, _("Sig. (1-tailed)")); for (i = 0; i < factor->n_vars; ++i) { diff --git a/src/language/stats/flip.c b/src/language/stats/flip.c index de7f52c0..77881868 100644 --- a/src/language/stats/flip.c +++ b/src/language/stats/flip.c @@ -186,7 +186,6 @@ cmd_flip (struct lexer *lexer, struct dataset *ds) { name = data_out_pool (value, dict_get_encoding (flip->dict), var_get_write_format (flip->new_names_var), flip->pool); - } var_names_add (flip->pool, &flip->new_names, name); } @@ -261,7 +260,6 @@ make_new_var (struct dictionary *dict, const char *name_) *cp = '_'; } *cp = '\0'; - str_uppercase (name); /* Use the mangled name, if it is available, or add numeric extensions until we find one that is. */ @@ -399,6 +397,7 @@ static struct ccase * flip_casereader_read (struct casereader *reader, void *flip_) { struct flip_pgm *flip = flip_; + const char *encoding; struct ccase *c; size_t i; @@ -406,12 +405,10 @@ flip_casereader_read (struct casereader *reader, void *flip_) return false; c = case_create (casereader_get_proto (reader)); - data_in (ss_cstr (flip->old_names.names[flip->cases_read]), dict_get_encoding (flip->dict), - FMT_A, 0, - 0, 0, - flip->dict, - case_data_rw_idx (c, 0), 8); - + encoding = dict_get_encoding (flip->dict); + data_in (ss_cstr (flip->old_names.names[flip->cases_read]), encoding, + FMT_A, case_data_rw_idx (c, 0), 8, encoding); + for (i = 0; i < flip->n_cases; i++) { double in; diff --git a/src/language/stats/glm.c b/src/language/stats/glm.c new file mode 100644 index 00000000..1acf03ff --- /dev/null +++ b/src/language/stats/glm.c @@ -0,0 +1,372 @@ +/* PSPP - a program for statistical analysis. + Copyright (C) 2010 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +#include + +#include +#include +#include + +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include + +#include +#include +#include + +#include + +#include + +#include "gettext.h" +#define _(msgid) gettext (msgid) + +struct glm_spec +{ + size_t n_dep_vars; + const struct variable **dep_vars; + + size_t n_factor_vars; + const struct variable **factor_vars; + + enum mv_class exclude; + + /* The weight variable */ + const struct variable *wv; + + bool intercept; +}; + +struct glm_workspace +{ + double total_ssq; + struct moments *totals; +}; + +static void output_glm (const struct glm_spec *, const struct glm_workspace *ws); +static void run_glm (const struct glm_spec *cmd, struct casereader *input, const struct dataset *ds); + +int +cmd_glm (struct lexer *lexer, struct dataset *ds) +{ + const struct dictionary *dict = dataset_dict (ds); + struct glm_spec glm ; + glm.n_dep_vars = 0; + glm.n_factor_vars = 0; + glm.dep_vars = NULL; + glm.factor_vars = NULL; + glm.exclude = MV_ANY; + glm.intercept = true; + glm.wv = dict_get_weight (dict); + + + if (!parse_variables_const (lexer, dict, + &glm.dep_vars, &glm.n_dep_vars, + PV_NO_DUPLICATE | PV_NUMERIC)) + goto error; + + lex_force_match (lexer, T_BY); + + if (!parse_variables_const (lexer, dict, + &glm.factor_vars, &glm.n_factor_vars, + PV_NO_DUPLICATE | PV_NUMERIC)) + goto error; + + if ( glm.n_dep_vars > 1) + { + msg (ME, _("Multivariate analysis is not yet implemented")); + return CMD_FAILURE; + } + + struct const_var_set *factors = const_var_set_create_from_array (glm.factor_vars, glm.n_factor_vars); + + + while (lex_token (lexer) != '.') + { + lex_match (lexer, '/'); + + if (lex_match_id (lexer, "MISSING")) + { + lex_match (lexer, '='); + while (lex_token (lexer) != '.' && lex_token (lexer) != '/') + { + if (lex_match_id (lexer, "INCLUDE")) + { + glm.exclude = MV_SYSTEM; + } + else if (lex_match_id (lexer, "EXCLUDE")) + { + glm.exclude = MV_ANY; + } + else + { + lex_error (lexer, NULL); + goto error; + } + } + } + else if (lex_match_id (lexer, "INTERCEPT")) + { + lex_match (lexer, '='); + while (lex_token (lexer) != '.' && lex_token (lexer) != '/') + { + if (lex_match_id (lexer, "INCLUDE")) + { + glm.intercept = true; + } + else if (lex_match_id (lexer, "EXCLUDE")) + { + glm.intercept = false; + } + else + { + lex_error (lexer, NULL); + goto error; + } + } + } + else if (lex_match_id (lexer, "DESIGN")) + { + size_t n_des; + const struct variable **des; + lex_match (lexer, '='); + + parse_const_var_set_vars (lexer, factors, &des, &n_des, 0); + } + else + { + lex_error (lexer, NULL); + goto error; + } + } + + + { + struct casegrouper *grouper; + struct casereader *group; + bool ok; + + grouper = casegrouper_create_splits (proc_open (ds), dict); + while (casegrouper_get_next_group (grouper, &group)) + run_glm (&glm, group, ds); + ok = casegrouper_destroy (grouper); + ok = proc_commit (ds) && ok; + } + + return CMD_SUCCESS; + + error: + return CMD_FAILURE; +} + +static void dump_matrix (const gsl_matrix *m); + +static void +run_glm (const struct glm_spec *cmd, struct casereader *input, const struct dataset *ds) +{ + int v; + struct taint *taint; + struct dictionary *dict = dataset_dict (ds); + struct casereader *reader; + struct ccase *c; + + struct glm_workspace ws; + + struct categoricals *cats = categoricals_create (cmd->factor_vars, cmd->n_factor_vars, + cmd->wv, cmd->exclude, + NULL, NULL, + NULL, NULL); + + struct covariance *cov = covariance_2pass_create (cmd->n_dep_vars, cmd->dep_vars, + cats, + cmd->wv, cmd->exclude); + + + c = casereader_peek (input, 0); + if (c == NULL) + { + casereader_destroy (input); + return; + } + output_split_file_values (ds, c); + case_unref (c); + + taint = taint_clone (casereader_get_taint (input)); + + ws.totals = moments_create (MOMENT_VARIANCE); + + bool warn_bad_weight = true; + for (reader = casereader_clone (input); + (c = casereader_read (reader)) != NULL; case_unref (c)) + { + double weight = dict_get_case_weight (dict, c, &warn_bad_weight); + + for ( v = 0; v < cmd->n_dep_vars; ++v) + moments_pass_one (ws.totals, case_data (c, cmd->dep_vars[v])->f, weight); + + covariance_accumulate_pass1 (cov, c); + } + casereader_destroy (reader); + + categoricals_done (cats); + + for (reader = casereader_clone (input); + (c = casereader_read (reader)) != NULL; case_unref (c)) + { + double weight = dict_get_case_weight (dict, c, &warn_bad_weight); + + for ( v = 0; v < cmd->n_dep_vars; ++v) + moments_pass_two (ws.totals, case_data (c, cmd->dep_vars[v])->f, weight); + + covariance_accumulate_pass2 (cov, c); + } + casereader_destroy (reader); + + { + gsl_matrix *cm = covariance_calculate_unnormalized (cov); + + dump_matrix (cm); + + ws.total_ssq = gsl_matrix_get (cm, 0, 0); + + reg_sweep (cm, 0); + + dump_matrix (cm); + } + + if (!taint_has_tainted_successor (taint)) + output_glm (cmd, &ws); + + taint_destroy (taint); +} + +static void +output_glm (const struct glm_spec *cmd, const struct glm_workspace *ws) +{ + const struct fmt_spec *wfmt = cmd->wv ? var_get_print_format (cmd->wv) : &F_8_0; + + int f; + int r; + const int heading_columns = 1; + const int heading_rows = 1; + struct tab_table *t ; + + const int nc = 6; + int nr = heading_rows + 4 + cmd->n_factor_vars; + if (cmd->intercept) + nr++; + + t = tab_create (nc, nr); + tab_title (t, _("Tests of Between-Subjects Effects")); + + tab_headers (t, heading_columns, 0, heading_rows, 0); + + tab_box (t, + TAL_2, TAL_2, + -1, TAL_1, + 0, 0, + nc - 1, nr - 1); + + tab_hline (t, TAL_2, 0, nc - 1, heading_rows); + tab_vline (t, TAL_2, heading_columns, 0, nr - 1); + + tab_text (t, 0, 0, TAB_CENTER | TAT_TITLE, _("Source")); + + /* TRANSLATORS: The parameter is a roman numeral */ + tab_text_format (t, 1, 0, TAB_CENTER | TAT_TITLE, _("Type %s Sum of Squares"), "III"); + tab_text (t, 2, 0, TAB_CENTER | TAT_TITLE, _("df")); + tab_text (t, 3, 0, TAB_CENTER | TAT_TITLE, _("Mean Square")); + tab_text (t, 4, 0, TAB_CENTER | TAT_TITLE, _("F")); + tab_text (t, 5, 0, TAB_CENTER | TAT_TITLE, _("Sig.")); + + r = heading_rows; + tab_text (t, 0, r++, TAB_LEFT | TAT_TITLE, _("Corrected Model")); + + double intercept, n_total; + if (cmd->intercept) + { + double mean; + moments_calculate (ws->totals, &n_total, &mean, NULL, NULL, NULL); + intercept = pow2 (mean * n_total) / n_total; + + tab_text (t, 0, r, TAB_LEFT | TAT_TITLE, _("Intercept")); + tab_double (t, 1, r, 0, intercept, NULL); + tab_double (t, 2, r, 0, 1.00, wfmt); + + tab_double (t, 3, r, 0, intercept / 1.0 , NULL); + r++; + } + + for (f = 0; f < cmd->n_factor_vars; ++f) + { + tab_text (t, 0, r++, TAB_LEFT | TAT_TITLE, + var_to_string (cmd->factor_vars[f])); + } + + tab_text (t, 0, r++, TAB_LEFT | TAT_TITLE, _("Error")); + + if (cmd->intercept) + { + double ssq = intercept + ws->total_ssq; + double mse = ssq / n_total; + tab_text (t, 0, r, TAB_LEFT | TAT_TITLE, _("Total")); + tab_double (t, 1, r, 0, ssq, NULL); + tab_double (t, 2, r, 0, n_total, wfmt); + + r++; + } + + tab_text (t, 0, r, TAB_LEFT | TAT_TITLE, _("Corrected Total")); + + tab_double (t, 1, r, 0, ws->total_ssq, NULL); + tab_double (t, 2, r, 0, n_total - 1.0, wfmt); + + tab_submit (t); +} + +static +void dump_matrix (const gsl_matrix *m) +{ + size_t i, j; + for (i = 0; i < m->size1; ++i) + { + for (j = 0; j < m->size2; ++j) + { + double x = gsl_matrix_get (m, i, j); + printf ("%.3f ", x); + } + printf ("\n"); + } + printf ("\n"); +} diff --git a/src/language/stats/glm.q b/src/language/stats/glm.q deleted file mode 100644 index 5f20a2e3..00000000 --- a/src/language/stats/glm.q +++ /dev/null @@ -1,397 +0,0 @@ -/* PSPP - a program for statistical analysis. - Copyright (C) 2007, 2009 Free Software Foundation, Inc. - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - -#include - -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "xalloc.h" -#include "gettext.h" - -/* (headers) */ - -/* (specification) - "GLM" (glm_): - *dependent=custom; - design=custom; - by=varlist; - with=varlist. -*/ -/* (declarations) */ -/* (functions) */ -static struct cmd_glm cmd; - - -/* - Moments for each of the variables used. - */ -struct moments_var -{ - struct moments1 *m; - double *weight; - double *mean; - double *variance; - const struct variable *v; -}; - - -/* - Dependent variable used. - */ -static const struct variable **v_dependent; - -/* - Number of dependent variables. - */ -static size_t n_dependent; - -size_t n_inter; /* Number of interactions. */ -size_t n_members; /* Number of memebr variables in an interaction. */ - -struct interaction_variable **interactions; - -int cmd_glm (struct lexer *lexer, struct dataset *ds); - -static bool run_glm (struct casereader *, - struct cmd_glm *, - const struct dataset *); -/* - If the DESIGN subcommand was not specified, specify all possible - two-way interactions. - */ -static void -check_interactions (struct dataset *ds, struct cmd_glm *cmd) -{ - size_t i; - size_t j; - size_t k = 0; - struct variable **interaction_vars; - - /* - User did not specify the design matrix, so we - specify it here. - */ - n_inter = (cmd->n_by + cmd->n_with) * (cmd->n_by + cmd->n_with - 1) / 2; - interactions = xnmalloc (n_inter, sizeof (*interactions)); - interaction_vars = xnmalloc (2, sizeof (*interaction_vars)); - for (i = 0; i < cmd->n_by; i++) - { - for (j = i + 1; j < cmd->n_by; j++) - { - interaction_vars[0] = cmd->v_by[i]; - interaction_vars[1] = cmd->v_by[j]; - interactions[k] = interaction_variable_create (interaction_vars, 2); - k++; - } - for (j = 0; j < cmd->n_with; j++) - { - interaction_vars[0] = cmd->v_by[i]; - interaction_vars[1] = cmd->v_with[j]; - interactions[k] = interaction_variable_create (interaction_vars, 2); - k++; - } - } - for (i = 0; i < cmd->n_with; i++) - { - for (j = i + 1; j < cmd->n_with; j++) - { - interaction_vars[0] = cmd->v_with[i]; - interaction_vars[1] = cmd->v_with[j]; - interactions[k] = interaction_variable_create (interaction_vars, 2); - k++; - } - } -} -int -cmd_glm (struct lexer *lexer, struct dataset *ds) -{ - struct casegrouper *grouper; - struct casereader *group; - - bool ok; - - if (!parse_glm (lexer, ds, &cmd, NULL)) - return CMD_FAILURE; - - if (!lex_match_id (lexer, "DESIGN")) - { - check_interactions (ds, &cmd); - } - /* Data pass. */ - grouper = casegrouper_create_splits (proc_open (ds), dataset_dict (ds)); - while (casegrouper_get_next_group (grouper, &group)) - { - run_glm (group, &cmd, ds); - } - ok = casegrouper_destroy (grouper); - ok = proc_commit (ds) && ok; - - free (v_dependent); - return ok ? CMD_SUCCESS : CMD_FAILURE; -} - -static int -parse_interactions (struct lexer *lexer, const struct variable **interaction_vars, int n_members, - int max_members, struct dataset *ds) -{ - if (lex_match (lexer, '*')) - { - if (n_members > max_members) - { - max_members *= 2; - xnrealloc (interaction_vars, max_members, sizeof (*interaction_vars)); - } - interaction_vars[n_members] = parse_variable (lexer, dataset_dict (ds)); - parse_interactions (lexer, interaction_vars, n_members++, max_members, ds); - } - return n_members; -} -/* Parser for the design subcommand. */ -static int -glm_custom_design (struct lexer *lexer, struct dataset *ds, - struct cmd_glm *cmd UNUSED, void *aux UNUSED) -{ - size_t n_allocated = 2; - size_t n_members; - struct variable **interaction_vars; - struct variable *this_var; - - interactions = xnmalloc (n_allocated, sizeof (*interactions)); - n_inter = 1; - while (lex_token (lexer) != T_STOP && lex_token (lexer) != '.') - { - this_var = parse_variable (lexer, dataset_dict (ds)); - if (lex_match (lexer, '(')) - { - lex_force_match (lexer, ')'); - } - else if (lex_match (lexer, '*')) - { - interaction_vars = xnmalloc (2 * n_inter, sizeof (*interaction_vars)); - n_members = parse_interactions (lexer, interaction_vars, 1, 2 * n_inter, ds); - if (n_allocated < n_inter) - { - n_allocated *= 2; - xnrealloc (interactions, n_allocated, sizeof (*interactions)); - } - interactions [n_inter - 1] = - interaction_variable_create (interaction_vars, n_members); - n_inter++; - free (interaction_vars); - } - } - return 1; -} -/* Parser for the dependent sub command */ -static int -glm_custom_dependent (struct lexer *lexer, struct dataset *ds, - struct cmd_glm *cmd UNUSED, void *aux UNUSED) -{ - const struct dictionary *dict = dataset_dict (ds); - size_t i; - - if ((lex_token (lexer) != T_ID - || dict_lookup_var (dict, lex_tokid (lexer)) == NULL) - && lex_token (lexer) != T_ALL) - return 2; - - if (!parse_variables_const (lexer, dict, &v_dependent, &n_dependent, PV_NONE)) - { - free (v_dependent); - return 0; - } - for (i = 0; i < n_dependent; i++) - { - assert (var_is_numeric (v_dependent[i])); - } - assert (n_dependent); - if (n_dependent > 1) - msg (SE, _("Multivariate GLM not yet supported")); - n_dependent = 1; /* Drop this line after adding support for multivariate GLM. */ - - return 1; -} - -static linreg * -fit_model (const struct covariance *cov, - const struct variable *dep_var, - const struct variable ** indep_vars, - size_t n_data, size_t n_indep) -{ - linreg *result = NULL; - - return result; -} - -static bool -run_glm (struct casereader *input, - struct cmd_glm *cmd, - const struct dataset *ds) -{ - casenumber row; - const struct variable **numerics = NULL; - const struct variable **categoricals = NULL; - int n_indep = 0; - linreg *model = NULL; - pspp_linreg_opts lopts; - struct ccase *c; - size_t i; - size_t n_data; /* Number of valid cases. */ - size_t n_categoricals = 0; - size_t n_numerics; - struct casereader *reader; - struct covariance *cov; - - c = casereader_peek (input, 0); - if (c == NULL) - { - casereader_destroy (input); - return true; - } - output_split_file_values (ds, c); - case_unref (c); - - if (!v_dependent) - { - dict_get_vars (dataset_dict (ds), &v_dependent, &n_dependent, - 1u << DC_SYSTEM); - } - - lopts.get_depvar_mean_std = 1; - - lopts.get_indep_mean_std = xnmalloc (n_dependent, sizeof (int)); - - - n_numerics = n_dependent; - for (i = 0; i < cmd->n_with; i++) - { - if (var_is_alpha (cmd->v_with[i])) - { - n_categoricals++; - } - else - { - n_numerics++; - } - } - for (i = 0; i < cmd->n_by; i++) - { - if (var_is_alpha (cmd->v_by[i])) - { - n_categoricals++; - } - else - { - n_numerics++; - } - } - numerics = xnmalloc (n_numerics, sizeof *numerics); - categoricals = xnmalloc (n_categoricals, sizeof (*categoricals)); - size_t j = 0; - size_t k = 0; - for (i = 0; i < cmd->n_by; i++) - { - if (var_is_alpha (cmd->v_by[i])) - { - categoricals[j] = cmd->v_by[i]; - j++; - } - else - { - numerics[k] = cmd->v_by[i]; - k++; - } - } - for (i = 0; i < cmd->n_with; i++) - { - if (var_is_alpha (cmd->v_with[i])) - { - categoricals[j] = cmd->v_with[i]; - j++; - } - else - { - numerics[k] = cmd->v_with[i]; - k++; - } - } - for (i = 0; i < n_dependent; i++) - { - numerics[k] = v_dependent[i]; - k++; - } - - cov = covariance_2pass_create (n_numerics, numerics, n_categoricals, categoricals, NULL, MV_NEVER); - - reader = casereader_clone (input); - reader = casereader_create_filter_missing (reader, numerics, n_numerics, - MV_ANY, NULL, NULL); - reader = casereader_create_filter_missing (reader, categoricals, n_categoricals, - MV_ANY, NULL, NULL); - struct casereader *r = casereader_clone (reader); - - reader = casereader_create_counter (reader, &row, -1); - - for (; (c = casereader_read (reader)) != NULL; case_unref (c)) - { - covariance_accumulate_pass1 (cov, c); - } - for (; (c = casereader_read (r)) != NULL; case_unref (c)) - { - covariance_accumulate_pass2 (cov, c); - } - - covariance_destroy (cov); - casereader_destroy (reader); - casereader_destroy (r); - - free (numerics); - free (categoricals); - free (lopts.get_indep_mean_std); - casereader_destroy (input); - - return true; -} - -/* - Local Variables: - mode: c - End: -*/ diff --git a/src/language/stats/kruskal-wallis.c b/src/language/stats/kruskal-wallis.c new file mode 100644 index 00000000..ea8fe8ce --- /dev/null +++ b/src/language/stats/kruskal-wallis.c @@ -0,0 +1,350 @@ +/* Pspp - a program for statistical analysis. + Copyright (C) 2010 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + + +#include + +#include "kruskal-wallis.h" + +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + + +#include "minmax.h" +#include "xalloc.h" + + +/* Returns true iff the independent variable lies in the range [nst->val1, nst->val2] */ +static bool +include_func (const struct ccase *c, void *aux) +{ + const struct n_sample_test *nst = aux; + + if (0 < value_compare_3way (&nst->val1, case_data (c, nst->indep_var), var_get_width (nst->indep_var))) + return false; + + if (0 > value_compare_3way (&nst->val2, case_data (c, nst->indep_var), var_get_width (nst->indep_var))) + return false; + + return true; +} + + +struct rank_entry +{ + struct hmap_node node; + union value group; + + double sum_of_ranks; + double n; +}; + +/* Return the entry with the key GROUP or null if there is no such entry */ +static struct rank_entry * +find_rank_entry (const struct hmap *map, const union value *group, size_t width) +{ + struct rank_entry *re = NULL; + size_t hash = value_hash (group, width, 0); + + HMAP_FOR_EACH_WITH_HASH (re, struct rank_entry, node, hash, map) + { + if (0 == value_compare_3way (group, &re->group, width)) + return re; + } + + return re; +} + +/* Calculates the adjustment necessary for tie compensation */ +static void +distinct_callback (double v UNUSED, casenumber t, double w UNUSED, void *aux) +{ + double *tiebreaker = aux; + + *tiebreaker += pow3 (t) - t; +} + + +struct kw +{ + struct hmap map; + double h; +}; + +static void show_ranks_box (const struct n_sample_test *nst, const struct kw *kw, int n_groups); +static void show_sig_box (const struct n_sample_test *nst, const struct kw *kw); + +void +kruskal_wallis_execute (const struct dataset *ds, + struct casereader *input, + enum mv_class exclude, + const struct npar_test *test, + bool exact UNUSED, + double timer UNUSED) +{ + int i; + struct ccase *c; + bool warn = true; + const struct dictionary *dict = dataset_dict (ds); + const struct n_sample_test *nst = UP_CAST (test, const struct n_sample_test, parent); + const struct caseproto *proto ; + size_t rank_idx ; + + int total_n_groups = 0.0; + + struct kw *kw = xcalloc (nst->n_vars, sizeof *kw); + + /* If the independent variable is missing, then we ignore the case */ + input = casereader_create_filter_missing (input, + &nst->indep_var, 1, + exclude, + NULL, NULL); + + input = casereader_create_filter_weight (input, dict, &warn, NULL); + + /* Remove all those cases which are outside the range (val1, val2) */ + input = casereader_create_filter_func (input, include_func, NULL, + CONST_CAST (struct n_sample_test *, nst), NULL); + + proto = casereader_get_proto (input); + rank_idx = caseproto_get_n_widths (proto); + + /* Rank cases by the v value */ + for (i = 0; i < nst->n_vars; ++i) + { + double tiebreaker = 0.0; + bool warn = true; + enum rank_error rerr = 0; + struct casereader *rr; + struct casereader *r = casereader_clone (input); + + r = sort_execute_1var (r, nst->vars[i]); + + /* Ignore missings in the test variable */ + r = casereader_create_filter_missing (r, &nst->vars[i], 1, + exclude, + NULL, NULL); + + rr = casereader_create_append_rank (r, + nst->vars[i], + dict_get_weight (dict), + &rerr, + distinct_callback, &tiebreaker); + + hmap_init (&kw[i].map); + for (; (c = casereader_read (rr)); case_unref (c)) + { + const union value *group = case_data (c, nst->indep_var); + const size_t group_var_width = var_get_width (nst->indep_var); + struct rank_entry *rank = find_rank_entry (&kw[i].map, group, group_var_width); + + if ( NULL == rank) + { + rank = xzalloc (sizeof *rank); + value_clone (&rank->group, group, group_var_width); + + hmap_insert (&kw[i].map, &rank->node, + value_hash (&rank->group, group_var_width, 0)); + } + + rank->sum_of_ranks += case_data_idx (c, rank_idx)->f; + rank->n += dict_get_case_weight (dict, c, &warn); + + /* If this assertion fires, then either the data wasn't sorted or some other + problem occured */ + assert (rerr == 0); + } + + casereader_destroy (rr); + + /* Calculate the value of h */ + { + struct rank_entry *mre; + double n = 0.0; + + HMAP_FOR_EACH (mre, struct rank_entry, node, &kw[i].map) + { + kw[i].h += pow2 (mre->sum_of_ranks) / mre->n; + n += mre->n; + + total_n_groups ++; + } + kw[i].h *= 12 / (n * ( n + 1)); + kw[i].h -= 3 * (n + 1) ; + + kw[i].h /= 1 - tiebreaker/ (pow3 (n) - n); + } + } + + casereader_destroy (input); + + show_ranks_box (nst, kw, total_n_groups); + show_sig_box (nst, kw); + + /* Cleanup allocated memory */ + for (i = 0 ; i < nst->n_vars; ++i) + { + struct rank_entry *mre, *next; + HMAP_FOR_EACH_SAFE (mre, next, struct rank_entry, node, &kw[i].map) + { + hmap_delete (&kw[i].map, &mre->node); + free (mre); + } + hmap_destroy (&kw[i].map); + } + + free (kw); +} + + +#include +#include "gettext.h" +#define _(msgid) gettext (msgid) + + +static void +show_ranks_box (const struct n_sample_test *nst, const struct kw *kw, int n_groups) +{ + int row; + int i; + const int row_headers = 2; + const int column_headers = 1; + struct tab_table *table = + tab_create (row_headers + 2, column_headers + n_groups + nst->n_vars); + + tab_headers (table, row_headers, 0, column_headers, 0); + + tab_title (table, _("Ranks")); + + /* Vertical lines inside the box */ + tab_box (table, 1, 0, -1, TAL_1, + row_headers, 0, tab_nc (table) - 1, tab_nr (table) - 1 ); + + /* Box around the table */ + tab_box (table, TAL_2, TAL_2, -1, -1, + 0, 0, tab_nc (table) - 1, tab_nr (table) - 1 ); + + tab_text (table, 1, 0, TAT_TITLE, + var_to_string (nst->indep_var) + ); + + tab_text (table, 3, 0, 0, _("Mean Rank")); + tab_text (table, 2, 0, 0, _("N")); + + tab_hline (table, TAL_2, 0, tab_nc (table) -1, column_headers); + tab_vline (table, TAL_2, row_headers, 0, tab_nr (table) - 1); + + + row = column_headers; + for (i = 0 ; i < nst->n_vars ; ++i) + { + int tot = 0; + const struct rank_entry *re; + + if (i > 0) + tab_hline (table, TAL_1, 0, tab_nc (table) -1, row); + + tab_text (table, 0, row, + TAT_TITLE, var_to_string (nst->vars[i])); + + HMAP_FOR_EACH (re, const struct rank_entry, node, &kw[i].map) + { + struct string str; + ds_init_empty (&str); + + var_append_value_name (nst->indep_var, &re->group, &str); + + tab_text (table, 1, row, TAB_LEFT, ds_cstr (&str)); + tab_double (table, 2, row, TAB_LEFT, re->n, &F_8_0); + tab_double (table, 3, row, TAB_LEFT, re->sum_of_ranks / re->n, 0); + + tot += re->n; + row++; + ds_destroy (&str); + } + tab_double (table, 2, row, TAB_LEFT, + tot, &F_8_0); + tab_text (table, 1, row++, TAB_LEFT, _("Total")); + } + + tab_submit (table); +} + + +static void +show_sig_box (const struct n_sample_test *nst, const struct kw *kw) +{ + int i; + const int row_headers = 1; + const int column_headers = 1; + struct tab_table *table = + tab_create (row_headers + nst->n_vars * 2, column_headers + 3); + + tab_headers (table, row_headers, 0, column_headers, 0); + + tab_title (table, _("Test Statistics")); + + tab_text (table, 0, column_headers, + TAT_TITLE | TAB_LEFT , _("Chi-Square")); + + tab_text (table, 0, 1 + column_headers, + TAT_TITLE | TAB_LEFT, _("df")); + + tab_text (table, 0, 2 + column_headers, + TAT_TITLE | TAB_LEFT, _("Asymp. Sig.")); + + /* Box around the table */ + tab_box (table, TAL_2, TAL_2, -1, -1, + 0, 0, tab_nc (table) - 1, tab_nr (table) - 1 ); + + + tab_hline (table, TAL_2, 0, tab_nc (table) -1, column_headers); + tab_vline (table, TAL_2, row_headers, 0, tab_nr (table) - 1); + + for (i = 0 ; i < nst->n_vars; ++i) + { + const double df = hmap_count (&kw[i].map) - 1; + tab_text (table, column_headers + 1 + i, 0, TAT_TITLE, + var_to_string (nst->vars[i]) + ); + + tab_double (table, column_headers + 1 + i, 1, 0, + kw[i].h, 0); + + tab_double (table, column_headers + 1 + i, 2, 0, + df, &F_8_0); + + tab_double (table, column_headers + 1 + i, 3, 0, + gsl_cdf_chisq_Q (kw[i].h, df), + 0); + } + + tab_submit (table); +} diff --git a/src/language/stats/kruskal-wallis.h b/src/language/stats/kruskal-wallis.h new file mode 100644 index 00000000..6194759d --- /dev/null +++ b/src/language/stats/kruskal-wallis.h @@ -0,0 +1,42 @@ +/* PSPP - a program for statistical analysis. + Copyright (C) 2010 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +#if !kruskal_wallis_h +#define kruskal_wallis_h 1 + +#include +#include +#include +#include + + +struct kruskal_wallis_test +{ + struct two_sample_test parent; +}; + +struct casereader; +struct dataset; + +void kruskal_wallis_execute (const struct dataset *ds, + struct casereader *input, + enum mv_class exclude, + const struct npar_test *test, + bool exact, + double timer + ); + +#endif diff --git a/src/language/stats/npar-summary.c b/src/language/stats/npar-summary.c index 4ed897ee..2341761f 100644 --- a/src/language/stats/npar-summary.c +++ b/src/language/stats/npar-summary.c @@ -36,18 +36,18 @@ npar_summary_calc_descriptives (struct descriptives *desc, struct casereader *input, const struct dictionary *dict, const struct variable *const *vv, - int n_vars UNUSED, + int n_vars, enum mv_class filter) { int i = 0; - while (*vv) + for (i = 0 ; i < n_vars; ++i) { double minimum = DBL_MAX; double maximum = -DBL_MAX; double var; struct moments1 *moments = moments1_create (MOMENT_VARIANCE); struct ccase *c; - const struct variable *v = *vv++; + const struct variable *v = vv[i]; struct casereader *pass; pass = casereader_clone (input); @@ -78,9 +78,8 @@ npar_summary_calc_descriptives (struct descriptives *desc, desc[i].min = minimum; desc[i].max = maximum; - - i++; } + casereader_destroy (input); } diff --git a/src/language/stats/npar.c b/src/language/stats/npar.c new file mode 100644 index 00000000..58985354 --- /dev/null +++ b/src/language/stats/npar.c @@ -0,0 +1,954 @@ +/* PSPP - a program for statistical analysis. -*-c-*- + Copyright (C) 2006, 2008, 2009, 2010 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +#include + +#include +#include "npar-summary.h" + +#include +#include + +#include "xalloc.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "gettext.h" +#define _(msgid) gettext (msgid) + +/* Settings for subcommand specifiers. */ +enum missing_type + { + MISS_ANALYSIS, + MISS_LISTWISE, + }; + +/* Array indices for STATISTICS subcommand. */ +enum + { + NPAR_ST_DESCRIPTIVES = 0, + NPAR_ST_QUARTILES = 1, + NPAR_ST_ALL = 2, + NPAR_ST_count + }; + +/* NPAR TESTS structure. */ +struct cmd_npar_tests + { + /* Count variables indicating how many + of the subcommands have been given. */ + int chisquare; + int binomial; + int wilcoxon; + int sign; + int kruskal_wallis; + int missing; + int method; + int statistics; + + /* How missing values should be treated */ + long miss; + + /* Which statistics have been requested */ + int a_statistics[NPAR_ST_count]; + }; + + +struct npar_specs +{ + struct pool *pool; + struct npar_test **test; + size_t n_tests; + + const struct variable **vv; /* Compendium of all variables + (those mentioned on ANY subcommand */ + int n_vars; /* Number of variables in vv */ + + enum mv_class filter; /* Missing values to filter. */ + + bool descriptives; /* Descriptive statistics should be calculated */ + bool quartiles; /* Quartiles should be calculated */ + + bool exact; /* Whether exact calculations have been requested */ + double timer; /* Maximum time (in minutes) to wait for exact calculations */ +}; + + +/* Prototype for custom subcommands of NPAR TESTS. */ +static int npar_chisquare (struct lexer *, struct dataset *, struct npar_specs *); +static int npar_binomial (struct lexer *, struct dataset *, struct npar_specs *); +static int npar_wilcoxon (struct lexer *, struct dataset *, struct npar_specs *); +static int npar_sign (struct lexer *, struct dataset *, struct npar_specs *); +static int npar_kruskal_wallis (struct lexer *, struct dataset *, struct npar_specs *); +static int npar_method (struct lexer *, struct npar_specs *); + +/* Command parsing functions. */ +static int parse_npar_tests (struct lexer *lexer, struct dataset *ds, struct cmd_npar_tests *p, + struct npar_specs *npar_specs ); + +static int +parse_npar_tests (struct lexer *lexer, struct dataset *ds, struct cmd_npar_tests *npt, + struct npar_specs *nps) +{ + npt->chisquare = 0; + npt->binomial = 0; + npt->wilcoxon = 0; + npt->sign = 0; + npt->missing = 0; + npt->miss = MISS_ANALYSIS; + npt->method = 0; + npt->statistics = 0; + memset (npt->a_statistics, 0, sizeof npt->a_statistics); + for (;;) + { + if (lex_match_hyphenated_word (lexer, "CHISQUARE")) + { + lex_match (lexer, '='); + npt->chisquare++; + switch (npar_chisquare (lexer, ds, nps)) + { + case 0: + goto lossage; + case 1: + break; + case 2: + lex_error (lexer, NULL); + goto lossage; + default: + NOT_REACHED (); + } + } + else if (lex_match_hyphenated_word (lexer, "BINOMIAL")) + { + lex_match (lexer, '='); + npt->binomial++; + switch (npar_binomial (lexer, ds, nps)) + { + case 0: + goto lossage; + case 1: + break; + case 2: + lex_error (lexer, NULL); + goto lossage; + default: + NOT_REACHED (); + } + } + else if (lex_match_hyphenated_word (lexer, "K-W") || + lex_match_hyphenated_word (lexer, "KRUSKAL-WALLIS")) + { + lex_match (lexer, '='); + npt->kruskal_wallis++; + switch (npar_kruskal_wallis (lexer, ds, nps)) + { + case 0: + goto lossage; + case 1: + break; + case 2: + lex_error (lexer, NULL); + goto lossage; + default: + NOT_REACHED (); + } + } + else if (lex_match_hyphenated_word (lexer, "WILCOXON")) + { + lex_match (lexer, '='); + npt->wilcoxon++; + switch (npar_wilcoxon (lexer, ds, nps)) + { + case 0: + goto lossage; + case 1: + break; + case 2: + lex_error (lexer, NULL); + goto lossage; + default: + NOT_REACHED (); + } + } + else if (lex_match_hyphenated_word (lexer, "SIGN")) + { + lex_match (lexer, '='); + npt->sign++; + switch (npar_sign (lexer, ds, nps)) + { + case 0: + goto lossage; + case 1: + break; + case 2: + lex_error (lexer, NULL); + goto lossage; + default: + NOT_REACHED (); + } + } + else if (lex_match_hyphenated_word (lexer, "MISSING")) + { + lex_match (lexer, '='); + npt->missing++; + if (npt->missing > 1) + { + msg (SE, _("The %s subcommand may be given only once."), "MISSING"); + goto lossage; + } + while (lex_token (lexer) != '/' && lex_token (lexer) != '.') + { + if (lex_match_hyphenated_word (lexer, "ANALYSIS")) + npt->miss = MISS_ANALYSIS; + else if (lex_match_hyphenated_word (lexer, "LISTWISE")) + npt->miss = MISS_LISTWISE; + else if (lex_match_hyphenated_word (lexer, "INCLUDE")) + nps->filter = MV_SYSTEM; + else if (lex_match_hyphenated_word (lexer, "EXCLUDE")) + nps->filter = MV_ANY; + else + { + lex_error (lexer, NULL); + goto lossage; + } + lex_match (lexer, ','); + } + } + else if (lex_match_hyphenated_word (lexer, "METHOD")) + { + lex_match (lexer, '='); + npt->method++; + if (npt->method > 1) + { + msg (SE, _("The %s subcommand may be given only once."), "METHOD"); + goto lossage; + } + switch (npar_method (lexer, nps)) + { + case 0: + goto lossage; + case 1: + break; + case 2: + lex_error (lexer, NULL); + goto lossage; + default: + NOT_REACHED (); + } + } + else if (lex_match_hyphenated_word (lexer, "STATISTICS")) + { + lex_match (lexer, '='); + npt->statistics++; + while (lex_token (lexer) != '/' && lex_token (lexer) != '.') + { + if (lex_match_hyphenated_word (lexer, "DESCRIPTIVES")) + npt->a_statistics[NPAR_ST_DESCRIPTIVES] = 1; + else if (lex_match_hyphenated_word (lexer, "QUARTILES")) + npt->a_statistics[NPAR_ST_QUARTILES] = 1; + else if (lex_match (lexer, T_ALL)) + npt->a_statistics[NPAR_ST_ALL] = 1; + else + { + lex_error (lexer, NULL); + goto lossage; + } + lex_match (lexer, ','); + } + } + else if ( settings_get_syntax () != COMPATIBLE && lex_match_id (lexer, "ALGORITHM")) + { + lex_match (lexer, '='); + if (lex_match_id (lexer, "COMPATIBLE")) + settings_set_cmd_algorithm (COMPATIBLE); + else if (lex_match_id (lexer, "ENHANCED")) + settings_set_cmd_algorithm (ENHANCED); + } + if (!lex_match (lexer, '/')) + break; + } + + if (lex_token (lexer) != '.') + { + lex_error (lexer, _("expecting end of command")); + goto lossage; + } + + return true; + +lossage: + return false; +} + + +static void one_sample_insert_variables (const struct npar_test *test, + struct hmapx *); + +static void two_sample_insert_variables (const struct npar_test *test, + struct hmapx *); + +static void n_sample_insert_variables (const struct npar_test *test, + struct hmapx *); + +static void +npar_execute (struct casereader *input, + const struct npar_specs *specs, + const struct dataset *ds) +{ + int t; + struct descriptives *summary_descriptives = NULL; + + for ( t = 0 ; t < specs->n_tests; ++t ) + { + const struct npar_test *test = specs->test[t]; + if ( NULL == test->execute ) + { + msg (SW, _("NPAR subcommand not currently implemented.")); + continue; + } + test->execute (ds, casereader_clone (input), specs->filter, test, specs->exact, specs->timer); + } + + if ( specs->descriptives ) + { + summary_descriptives = xnmalloc (sizeof (*summary_descriptives), + specs->n_vars); + + npar_summary_calc_descriptives (summary_descriptives, + casereader_clone (input), + dataset_dict (ds), + specs->vv, specs->n_vars, + specs->filter); + } + + if ( (specs->descriptives || specs->quartiles) + && !taint_has_tainted_successor (casereader_get_taint (input)) ) + do_summary_box (summary_descriptives, specs->vv, specs->n_vars ); + + free (summary_descriptives); + casereader_destroy (input); +} + +int +cmd_npar_tests (struct lexer *lexer, struct dataset *ds) +{ + struct cmd_npar_tests cmd; + bool ok; + int i; + struct npar_specs npar_specs = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; + struct casegrouper *grouper; + struct casereader *input, *group; + struct hmapx var_map = HMAPX_INITIALIZER (var_map); + + + npar_specs.pool = pool_create (); + npar_specs.filter = MV_ANY; + npar_specs.n_vars = -1; + npar_specs.vv = NULL; + + if ( ! parse_npar_tests (lexer, ds, &cmd, &npar_specs) ) + { + pool_destroy (npar_specs.pool); + return CMD_FAILURE; + } + + for (i = 0; i < npar_specs.n_tests; ++i ) + { + const struct npar_test *test = npar_specs.test[i]; + test->insert_variables (test, &var_map); + } + + { + struct hmapx_node *node; + struct variable *var; + npar_specs.n_vars = 0; + + HMAPX_FOR_EACH (var, node, &var_map) + { + npar_specs.n_vars ++; + npar_specs.vv = pool_nrealloc (npar_specs.pool, npar_specs.vv, npar_specs.n_vars, sizeof (*npar_specs.vv)); + npar_specs.vv[npar_specs.n_vars - 1] = var; + } + } + + qsort (npar_specs.vv, npar_specs.n_vars, sizeof (*npar_specs.vv), + compare_var_ptrs_by_name); + + if ( cmd.statistics ) + { + int i; + + for ( i = 0 ; i < NPAR_ST_count; ++i ) + { + if ( cmd.a_statistics[i] ) + { + switch ( i ) + { + case NPAR_ST_DESCRIPTIVES: + npar_specs.descriptives = true; + break; + case NPAR_ST_QUARTILES: + npar_specs.quartiles = true; + break; + case NPAR_ST_ALL: + npar_specs.quartiles = true; + npar_specs.descriptives = true; + break; + default: + NOT_REACHED (); + }; + } + } + } + + input = proc_open (ds); + if ( cmd.miss == MISS_LISTWISE ) + { + input = casereader_create_filter_missing (input, + npar_specs.vv, + npar_specs.n_vars, + npar_specs.filter, + NULL, NULL); + } + + + grouper = casegrouper_create_splits (input, dataset_dict (ds)); + while (casegrouper_get_next_group (grouper, &group)) + npar_execute (group, &npar_specs, ds); + ok = casegrouper_destroy (grouper); + ok = proc_commit (ds) && ok; + + pool_destroy (npar_specs.pool); + hmapx_destroy (&var_map); + + return ok ? CMD_SUCCESS : CMD_CASCADING_FAILURE; +} + +static int +npar_chisquare (struct lexer *lexer, struct dataset *ds, + struct npar_specs *specs) +{ + struct chisquare_test *cstp = pool_alloc (specs->pool, sizeof (*cstp)); + struct one_sample_test *tp = &cstp->parent; + struct npar_test *nt = &tp->parent; + + nt->execute = chisquare_execute; + nt->insert_variables = one_sample_insert_variables; + + if (!parse_variables_const_pool (lexer, specs->pool, dataset_dict (ds), + &tp->vars, &tp->n_vars, + PV_NO_SCRATCH | PV_NO_DUPLICATE)) + { + return 2; + } + + cstp->ranged = false; + + if ( lex_match (lexer, '(')) + { + cstp->ranged = true; + if ( ! lex_force_num (lexer)) return 0; + cstp->lo = lex_integer (lexer); + lex_get (lexer); + lex_force_match (lexer, ','); + if (! lex_force_num (lexer) ) return 0; + cstp->hi = lex_integer (lexer); + if ( cstp->lo >= cstp->hi ) + { + msg (ME, + _("The specified value of HI (%d) is " + "lower than the specified value of LO (%d)"), + cstp->hi, cstp->lo); + return 0; + } + lex_get (lexer); + if (! lex_force_match (lexer, ')')) return 0; + } + + cstp->n_expected = 0; + cstp->expected = NULL; + if ( lex_match (lexer, '/') ) + { + if ( lex_match_id (lexer, "EXPECTED") ) + { + lex_force_match (lexer, '='); + if ( ! lex_match_id (lexer, "EQUAL") ) + { + double f; + int n; + while ( lex_is_number (lexer) ) + { + int i; + n = 1; + f = lex_number (lexer); + lex_get (lexer); + if ( lex_match (lexer, '*')) + { + n = f; + f = lex_number (lexer); + lex_get (lexer); + } + lex_match (lexer, ','); + + cstp->n_expected += n; + cstp->expected = pool_realloc (specs->pool, + cstp->expected, + sizeof (double) * + cstp->n_expected); + for ( i = cstp->n_expected - n ; + i < cstp->n_expected; + ++i ) + cstp->expected[i] = f; + + } + } + } + else + lex_put_back (lexer, '/'); + } + + if ( cstp->ranged && cstp->n_expected > 0 && + cstp->n_expected != cstp->hi - cstp->lo + 1 ) + { + msg (ME, + _("%d expected values were given, but the specified " + "range (%d-%d) requires exactly %d values."), + cstp->n_expected, cstp->lo, cstp->hi, + cstp->hi - cstp->lo +1); + return 0; + } + + specs->n_tests++; + specs->test = pool_realloc (specs->pool, + specs->test, + sizeof (*specs->test) * specs->n_tests); + + specs->test[specs->n_tests - 1] = nt; + + return 1; +} + + +static int +npar_binomial (struct lexer *lexer, struct dataset *ds, + struct npar_specs *specs) +{ + struct binomial_test *btp = pool_alloc (specs->pool, sizeof (*btp)); + struct one_sample_test *tp = &btp->parent; + struct npar_test *nt = &tp->parent; + + nt->execute = binomial_execute; + nt->insert_variables = one_sample_insert_variables; + + btp->category1 = btp->category2 = btp->cutpoint = SYSMIS; + + btp->p = 0.5; + + if ( lex_match (lexer, '(') ) + { + if ( lex_force_num (lexer) ) + { + btp->p = lex_number (lexer); + lex_get (lexer); + lex_force_match (lexer, ')'); + } + else + return 0; + } + else + /* Kludge: q2c swallows the '=' so put it back here */ + lex_put_back (lexer, '='); + + if (lex_match (lexer, '=') ) + { + if (parse_variables_const_pool (lexer, specs->pool, dataset_dict (ds), + &tp->vars, &tp->n_vars, + PV_NUMERIC | PV_NO_SCRATCH | PV_NO_DUPLICATE) ) + { + if (lex_match (lexer, '(')) + { + lex_force_num (lexer); + btp->category1 = lex_number (lexer); + lex_get (lexer); + if ( lex_match (lexer, ',')) + { + if ( ! lex_force_num (lexer) ) return 2; + btp->category2 = lex_number (lexer); + lex_get (lexer); + } + else + { + btp->cutpoint = btp->category1; + } + + lex_force_match (lexer, ')'); + } + } + else + return 2; + + } + + specs->n_tests++; + specs->test = pool_realloc (specs->pool, + specs->test, + sizeof (*specs->test) * specs->n_tests); + + specs->test[specs->n_tests - 1] = nt; + + return 1; +} + + +static bool +parse_two_sample_related_test (struct lexer *lexer, + const struct dictionary *dict, + struct two_sample_test *test_parameters, + struct pool *pool + ); + + +static bool +parse_two_sample_related_test (struct lexer *lexer, + const struct dictionary *dict, + struct two_sample_test *test_parameters, + struct pool *pool + ) +{ + int n = 0; + bool paired = false; + bool with = false; + const struct variable **vlist1; + size_t n_vlist1; + + const struct variable **vlist2; + size_t n_vlist2; + + test_parameters->parent.insert_variables = two_sample_insert_variables; + + if (!parse_variables_const_pool (lexer, pool, + dict, + &vlist1, &n_vlist1, + PV_NUMERIC | PV_NO_SCRATCH | PV_NO_DUPLICATE) ) + return false; + + if ( lex_match (lexer, T_WITH)) + { + with = true; + if ( !parse_variables_const_pool (lexer, pool, dict, + &vlist2, &n_vlist2, + PV_NUMERIC | PV_NO_SCRATCH | PV_NO_DUPLICATE) ) + return false; + + paired = (lex_match (lexer, '(') && + lex_match_id (lexer, "PAIRED") && lex_match (lexer, ')')); + } + + + if ( with ) + { + if (paired) + { + if ( n_vlist1 != n_vlist2) + msg (SE, _("PAIRED was specified but the number of variables " + "preceding WITH (%zu) did not match the number " + "following (%zu)."), n_vlist1, n_vlist2); + + test_parameters->n_pairs = n_vlist1 ; + } + else + { + test_parameters->n_pairs = n_vlist1 * n_vlist2; + } + } + else + { + test_parameters->n_pairs = (n_vlist1 * (n_vlist1 - 1)) / 2 ; + } + + test_parameters->pairs = + pool_alloc (pool, sizeof ( variable_pair) * test_parameters->n_pairs); + + if ( with ) + { + if (paired) + { + int i; + assert (n_vlist1 == n_vlist2); + for ( i = 0 ; i < n_vlist1; ++i ) + { + test_parameters->pairs[n][1] = vlist1[i]; + test_parameters->pairs[n][0] = vlist2[i]; + n++; + } + } + else + { + int i,j; + for ( i = 0 ; i < n_vlist1; ++i ) + { + for ( j = 0 ; j < n_vlist2; ++j ) + { + test_parameters->pairs[n][1] = vlist1[i]; + test_parameters->pairs[n][0] = vlist2[j]; + n++; + } + } + } + } + else + { + int i,j; + for ( i = 0 ; i < n_vlist1 - 1; ++i ) + { + for ( j = i + 1 ; j < n_vlist1; ++j ) + { + assert ( n < test_parameters->n_pairs); + test_parameters->pairs[n][1] = vlist1[i]; + test_parameters->pairs[n][0] = vlist1[j]; + n++; + } + } + } + + assert ( n == test_parameters->n_pairs); + + return true; +} + + +static bool +parse_n_sample_related_test (struct lexer *lexer, + const struct dictionary *dict, + struct n_sample_test *nst, + struct pool *pool + ) +{ + if (!parse_variables_const_pool (lexer, pool, + dict, + &nst->vars, &nst->n_vars, + PV_NUMERIC | PV_NO_SCRATCH | PV_NO_DUPLICATE) ) + return false; + + if ( ! lex_force_match (lexer, T_BY)) + return false; + + nst->indep_var = parse_variable_const (lexer, dict); + + if ( ! lex_force_match (lexer, '(')) + return false; + + value_init (&nst->val1, var_get_width (nst->indep_var)); + if ( ! parse_value (lexer, &nst->val1, var_get_width (nst->indep_var))) + { + value_destroy (&nst->val1, var_get_width (nst->indep_var)); + return false; + } + + if ( ! lex_force_match (lexer, ',')) + return false; + + value_init (&nst->val2, var_get_width (nst->indep_var)); + if ( ! parse_value (lexer, &nst->val2, var_get_width (nst->indep_var))) + { + value_destroy (&nst->val2, var_get_width (nst->indep_var)); + return false; + } + + if ( ! lex_force_match (lexer, ')')) + return false; + + return true; +} + +static int +npar_wilcoxon (struct lexer *lexer, + struct dataset *ds, + struct npar_specs *specs ) +{ + + + struct two_sample_test *tp = pool_alloc (specs->pool, sizeof (*tp)); + struct npar_test *nt = &tp->parent; + nt->execute = wilcoxon_execute; + + if (!parse_two_sample_related_test (lexer, dataset_dict (ds), + tp, specs->pool) ) + return 0; + + specs->n_tests++; + specs->test = pool_realloc (specs->pool, + specs->test, + sizeof (*specs->test) * specs->n_tests); + specs->test[specs->n_tests - 1] = nt; + + return 1; +} + +static int +npar_sign (struct lexer *lexer, struct dataset *ds, + struct npar_specs *specs) +{ + struct two_sample_test *tp = pool_alloc (specs->pool, sizeof (*tp)); + struct npar_test *nt = &tp->parent; + + nt->execute = sign_execute; + + if (!parse_two_sample_related_test (lexer, dataset_dict (ds), + tp, specs->pool) ) + return 0; + + specs->n_tests++; + specs->test = pool_realloc (specs->pool, + specs->test, + sizeof (*specs->test) * specs->n_tests); + specs->test[specs->n_tests - 1] = nt; + + return 1; +} + +static int +npar_kruskal_wallis (struct lexer *lexer, struct dataset *ds, + struct npar_specs *specs) +{ + struct n_sample_test *tp = pool_alloc (specs->pool, sizeof (*tp)); + struct npar_test *nt = &tp->parent; + + nt->insert_variables = n_sample_insert_variables; + + nt->execute = kruskal_wallis_execute; + + if (!parse_n_sample_related_test (lexer, dataset_dict (ds), + tp, specs->pool) ) + return 0; + + specs->n_tests++; + specs->test = pool_realloc (specs->pool, + specs->test, + sizeof (*specs->test) * specs->n_tests); + specs->test[specs->n_tests - 1] = nt; + + return 1; +} + +static void +insert_variable_into_map (struct hmapx *var_map, const struct variable *var) +{ + size_t hash = hash_pointer (var, 0); + struct hmapx_node *node; + const struct variable *v = NULL; + + HMAPX_FOR_EACH_WITH_HASH (v, node, hash, var_map) + { + if ( v == var) + return ; + } + + hmapx_insert (var_map, CONST_CAST (struct variable *, var), hash); +} + +/* Insert the variables for TEST into VAR_MAP */ +static void +one_sample_insert_variables (const struct npar_test *test, + struct hmapx *var_map) +{ + int i; + const struct one_sample_test *ost = UP_CAST (test, const struct one_sample_test, parent); + + for ( i = 0 ; i < ost->n_vars ; ++i ) + insert_variable_into_map (var_map, ost->vars[i]); +} + + +static void +two_sample_insert_variables (const struct npar_test *test, + struct hmapx *var_map) +{ + int i; + const struct two_sample_test *tst = UP_CAST (test, const struct two_sample_test, parent); + + for ( i = 0 ; i < tst->n_pairs ; ++i ) + { + variable_pair *pair = &tst->pairs[i]; + + insert_variable_into_map (var_map, (*pair)[0]); + insert_variable_into_map (var_map, (*pair)[1]); + } +} + +static void +n_sample_insert_variables (const struct npar_test *test, + struct hmapx *var_map) +{ + int i; + const struct n_sample_test *tst = UP_CAST (test, const struct n_sample_test, parent); + + for ( i = 0 ; i < tst->n_vars ; ++i ) + insert_variable_into_map (var_map, tst->vars[i]); + + insert_variable_into_map (var_map, tst->indep_var); +} + + +static int +npar_method (struct lexer *lexer, struct npar_specs *specs) +{ + if ( lex_match_id (lexer, "EXACT") ) + { + specs->exact = true; + specs->timer = 0.0; + if (lex_match_id (lexer, "TIMER")) + { + specs->timer = 5.0; + + if ( lex_match (lexer, '(')) + { + if ( lex_force_num (lexer) ) + { + specs->timer = lex_number (lexer); + lex_get (lexer); + } + lex_force_match (lexer, ')'); + } + } + } + + return 1; +} diff --git a/src/language/stats/npar.h b/src/language/stats/npar.h index 6aed01cf..af093ffb 100644 --- a/src/language/stats/npar.h +++ b/src/language/stats/npar.h @@ -20,18 +20,16 @@ #include #include #include - -#include -#include +#include typedef const struct variable *variable_pair[2]; -struct hsh_table; -struct const_hsh_table; +struct hmapx; struct casefilter; struct casereader; struct dataset; + struct npar_test { void (*execute) (const struct dataset *, @@ -42,9 +40,10 @@ struct npar_test double); void (*insert_variables) (const struct npar_test *, - struct const_hsh_table *); + struct hmapx *); }; + struct one_sample_test { struct npar_test parent; @@ -60,4 +59,14 @@ struct two_sample_test }; +struct n_sample_test +{ + struct npar_test parent; + const struct variable **vars; + size_t n_vars; + + union value val1, val2; + const struct variable *indep_var; +}; + #endif diff --git a/src/language/stats/npar.q b/src/language/stats/npar.q deleted file mode 100644 index 53579722..00000000 --- a/src/language/stats/npar.q +++ /dev/null @@ -1,650 +0,0 @@ -/* PSPP - a program for statistical analysis. -*-c-*- - Copyright (C) 2006, 2008, 2009 Free Software Foundation, Inc. - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see . */ - -#include - - -#include - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "npar-summary.h" - -#include "gettext.h" -#define _(msgid) gettext (msgid) - -/* (headers) */ - -/* (specification) - "NPAR TESTS" (npar_): - +chisquare=custom; - +binomial=custom; - +wilcoxon=custom; - +mcnemar=custom; - +sign=custom; - +cochran=varlist; - +friedman=varlist; - +kendall=varlist; - missing=miss:!analysis/listwise, - incl:include/!exclude; - method=custom; - +statistics[st_]=descriptives,quartiles,all. -*/ -/* (declarations) */ -/* (functions) */ - - -static struct cmd_npar_tests cmd; - - -struct npar_specs -{ - struct pool *pool; - struct npar_test **test; - size_t n_tests; - - const struct variable ** vv; /* Compendium of all variables - (those mentioned on ANY subcommand */ - int n_vars; /* Number of variables in vv */ - - enum mv_class filter; /* Missing values to filter. */ - - bool descriptives; /* Descriptive statistics should be calculated */ - bool quartiles; /* Quartiles should be calculated */ - - bool exact; /* Whether exact calculations have been requested */ - double timer; /* Maximum time (in minutes) to wait for exact calculations */ -}; - -static void one_sample_insert_variables (const struct npar_test *test, - struct const_hsh_table *variables); - -static void two_sample_insert_variables (const struct npar_test *test, - struct const_hsh_table *variables); - - - -static void -npar_execute(struct casereader *input, - const struct npar_specs *specs, - const struct dataset *ds) -{ - int t; - struct descriptives *summary_descriptives = NULL; - - for ( t = 0 ; t < specs->n_tests; ++t ) - { - const struct npar_test *test = specs->test[t]; - if ( NULL == test->execute ) - { - msg (SW, _("NPAR subcommand not currently implemented.")); - continue; - } - test->execute (ds, casereader_clone (input), specs->filter, test, specs->exact, specs->timer); - } - - if ( specs->descriptives ) - { - summary_descriptives = xnmalloc (sizeof (*summary_descriptives), - specs->n_vars); - - npar_summary_calc_descriptives (summary_descriptives, - casereader_clone (input), - dataset_dict (ds), - specs->vv, specs->n_vars, - specs->filter); - } - - if ( (specs->descriptives || specs->quartiles) - && !taint_has_tainted_successor (casereader_get_taint (input)) ) - do_summary_box (summary_descriptives, specs->vv, specs->n_vars ); - - free (summary_descriptives); - casereader_destroy (input); -} - - -int -cmd_npar_tests (struct lexer *lexer, struct dataset *ds) -{ - bool ok; - int i; - struct npar_specs npar_specs = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; - struct const_hsh_table *var_hash; - struct casegrouper *grouper; - struct casereader *input, *group; - - npar_specs.pool = pool_create (); - - var_hash = const_hsh_create_pool (npar_specs.pool, 0, - compare_vars_by_name, hash_var_by_name, - NULL, NULL); - - if ( ! parse_npar_tests (lexer, ds, &cmd, &npar_specs) ) - { - pool_destroy (npar_specs.pool); - return CMD_FAILURE; - } - - for (i = 0; i < npar_specs.n_tests; ++i ) - { - const struct npar_test *test = npar_specs.test[i]; - test->insert_variables (test, var_hash); - } - - npar_specs.vv = (const struct variable **) const_hsh_sort (var_hash); - npar_specs.n_vars = const_hsh_count (var_hash); - - if ( cmd.sbc_statistics ) - { - int i; - - for ( i = 0 ; i < NPAR_ST_count; ++i ) - { - if ( cmd.a_statistics[i] ) - { - switch ( i ) - { - case NPAR_ST_DESCRIPTIVES: - npar_specs.descriptives = true; - break; - case NPAR_ST_QUARTILES: - npar_specs.quartiles = true; - break; - case NPAR_ST_ALL: - npar_specs.quartiles = true; - npar_specs.descriptives = true; - break; - default: - NOT_REACHED(); - }; - } - } - } - - npar_specs.filter = cmd.incl == NPAR_EXCLUDE ? MV_ANY : MV_SYSTEM; - - input = proc_open (ds); - if ( cmd.miss == NPAR_LISTWISE ) - { - input = casereader_create_filter_missing (input, - npar_specs.vv, - npar_specs.n_vars, - npar_specs.filter, - NULL, NULL); - } - - - grouper = casegrouper_create_splits (input, dataset_dict (ds)); - while (casegrouper_get_next_group (grouper, &group)) - npar_execute (group, &npar_specs, ds); - ok = casegrouper_destroy (grouper); - ok = proc_commit (ds) && ok; - - const_hsh_destroy (var_hash); - - pool_destroy (npar_specs.pool); - - return ok ? CMD_SUCCESS : CMD_CASCADING_FAILURE; -} - -int -npar_custom_chisquare (struct lexer *lexer, struct dataset *ds, - struct cmd_npar_tests *cmd UNUSED, void *aux ) -{ - struct npar_specs *specs = aux; - - struct chisquare_test *cstp = pool_alloc(specs->pool, sizeof(*cstp)); - struct one_sample_test *tp = &cstp->parent; - struct npar_test *nt = &tp->parent; - - nt->execute = chisquare_execute; - nt->insert_variables = one_sample_insert_variables; - - if (!parse_variables_const_pool (lexer, specs->pool, dataset_dict (ds), - &tp->vars, &tp->n_vars, - PV_NO_SCRATCH | PV_NO_DUPLICATE)) - { - return 2; - } - - cstp->ranged = false; - - if ( lex_match (lexer, '(')) - { - cstp->ranged = true; - if ( ! lex_force_num (lexer)) return 0; - cstp->lo = lex_integer (lexer); - lex_get (lexer); - lex_force_match (lexer, ','); - if (! lex_force_num (lexer) ) return 0; - cstp->hi = lex_integer (lexer); - if ( cstp->lo >= cstp->hi ) - { - msg(ME, - _("The specified value of HI (%d) is " - "lower than the specified value of LO (%d)"), - cstp->hi, cstp->lo); - return 0; - } - lex_get (lexer); - if (! lex_force_match (lexer, ')')) return 0; - } - - cstp->n_expected = 0; - cstp->expected = NULL; - if ( lex_match (lexer, '/') ) - { - if ( lex_match_id (lexer, "EXPECTED") ) - { - lex_force_match (lexer, '='); - if ( ! lex_match_id (lexer, "EQUAL") ) - { - double f; - int n; - while ( lex_is_number(lexer) ) - { - int i; - n = 1; - f = lex_number (lexer); - lex_get (lexer); - if ( lex_match (lexer, '*')) - { - n = f; - f = lex_number (lexer); - lex_get (lexer); - } - lex_match (lexer, ','); - - cstp->n_expected += n; - cstp->expected = pool_realloc (specs->pool, - cstp->expected, - sizeof(double) * - cstp->n_expected); - for ( i = cstp->n_expected - n ; - i < cstp->n_expected; - ++i ) - cstp->expected[i] = f; - - } - } - } - else - lex_put_back (lexer, '/'); - } - - if ( cstp->ranged && cstp->n_expected > 0 && - cstp->n_expected != cstp->hi - cstp->lo + 1 ) - { - msg(ME, - _("%d expected values were given, but the specified " - "range (%d-%d) requires exactly %d values."), - cstp->n_expected, cstp->lo, cstp->hi, - cstp->hi - cstp->lo +1); - return 0; - } - - specs->n_tests++; - specs->test = pool_realloc (specs->pool, - specs->test, - sizeof(*specs->test) * specs->n_tests); - - specs->test[specs->n_tests - 1] = nt; - - return 1; -} - - -int -npar_custom_binomial (struct lexer *lexer, struct dataset *ds, - struct cmd_npar_tests *cmd UNUSED, void *aux) -{ - struct npar_specs *specs = aux; - struct binomial_test *btp = pool_alloc(specs->pool, sizeof(*btp)); - struct one_sample_test *tp = &btp->parent; - struct npar_test *nt = &tp->parent; - - nt->execute = binomial_execute; - nt->insert_variables = one_sample_insert_variables; - - btp->category1 = btp->category2 = btp->cutpoint = SYSMIS; - - btp->p = 0.5; - - if ( lex_match (lexer, '(') ) - { - if ( lex_force_num (lexer) ) - { - btp->p = lex_number (lexer); - lex_get (lexer); - lex_force_match (lexer, ')'); - } - else - return 0; - } - else - /* Kludge: q2c swallows the '=' so put it back here */ - lex_put_back (lexer, '='); - - - if ( lex_match (lexer, '=') ) - { - if (parse_variables_const_pool (lexer, specs->pool, dataset_dict (ds), - &tp->vars, &tp->n_vars, - PV_NUMERIC | PV_NO_SCRATCH | PV_NO_DUPLICATE) ) - { - if ( lex_match (lexer, '(')) - { - lex_force_num (lexer); - btp->category1 = lex_number (lexer); - lex_get (lexer); - if ( lex_match (lexer, ',')) - { - if ( ! lex_force_num (lexer) ) return 2; - btp->category2 = lex_number (lexer); - lex_get (lexer); - } - else - { - btp->cutpoint = btp->category1; - } - - lex_force_match (lexer, ')'); - } - } - else - return 2; - - } - - specs->n_tests++; - specs->test = pool_realloc (specs->pool, - specs->test, - sizeof(*specs->test) * specs->n_tests); - - specs->test[specs->n_tests - 1] = nt; - - return 1; -} - - -bool parse_two_sample_related_test (struct lexer *lexer, - const struct dictionary *dict, - struct cmd_npar_tests *cmd, - struct two_sample_test *test_parameters, - struct pool *pool - ); - - -bool -parse_two_sample_related_test (struct lexer *lexer, - const struct dictionary *dict, - struct cmd_npar_tests *cmd UNUSED, - struct two_sample_test *test_parameters, - struct pool *pool - ) -{ - int n = 0; - bool paired = false; - bool with = false; - const struct variable **vlist1; - size_t n_vlist1; - - const struct variable **vlist2; - size_t n_vlist2; - - test_parameters->parent.insert_variables = two_sample_insert_variables; - - if (!parse_variables_const_pool (lexer, pool, - dict, - &vlist1, &n_vlist1, - PV_NUMERIC | PV_NO_SCRATCH | PV_NO_DUPLICATE) ) - return false; - - if ( lex_match(lexer, T_WITH)) - { - with = true; - if ( !parse_variables_const_pool (lexer, pool, dict, - &vlist2, &n_vlist2, - PV_NUMERIC | PV_NO_SCRATCH | PV_NO_DUPLICATE) ) - return false; - - paired = (lex_match (lexer, '(') && - lex_match_id (lexer, "PAIRED") && lex_match (lexer, ')')); - } - - - if ( with ) - { - if (paired) - { - if ( n_vlist1 != n_vlist2) - msg (SE, _("PAIRED was specified but the number of variables " - "preceding WITH (%zu) did not match the number " - "following (%zu)."), n_vlist1, n_vlist2); - - test_parameters->n_pairs = n_vlist1 ; - } - else - { - test_parameters->n_pairs = n_vlist1 * n_vlist2; - } - } - else - { - test_parameters->n_pairs = (n_vlist1 * (n_vlist1 - 1)) / 2 ; - } - - test_parameters->pairs = - pool_alloc (pool, sizeof ( variable_pair) * test_parameters->n_pairs); - - if ( with ) - { - if (paired) - { - int i; - assert (n_vlist1 == n_vlist2); - for ( i = 0 ; i < n_vlist1; ++i ) - { - test_parameters->pairs[n][1] = vlist1[i]; - test_parameters->pairs[n][0] = vlist2[i]; - n++; - } - } - else - { - int i,j; - for ( i = 0 ; i < n_vlist1; ++i ) - { - for ( j = 0 ; j < n_vlist2; ++j ) - { - test_parameters->pairs[n][1] = vlist1[i]; - test_parameters->pairs[n][0] = vlist2[j]; - n++; - } - } - } - } - else - { - int i,j; - for ( i = 0 ; i < n_vlist1 - 1; ++i ) - { - for ( j = i + 1 ; j < n_vlist1; ++j ) - { - assert ( n < test_parameters->n_pairs); - test_parameters->pairs[n][1] = vlist1[i]; - test_parameters->pairs[n][0] = vlist1[j]; - n++; - } - } - } - - assert ( n == test_parameters->n_pairs); - - return true; -} - -int -npar_custom_wilcoxon (struct lexer *lexer, - struct dataset *ds, - struct cmd_npar_tests *cmd, void *aux ) -{ - struct npar_specs *specs = aux; - - struct two_sample_test *tp = pool_alloc (specs->pool, sizeof(*tp)); - struct npar_test *nt = &tp->parent; - nt->execute = wilcoxon_execute; - - if (!parse_two_sample_related_test (lexer, dataset_dict (ds), cmd, - tp, specs->pool) ) - return 0; - - specs->n_tests++; - specs->test = pool_realloc (specs->pool, - specs->test, - sizeof(*specs->test) * specs->n_tests); - specs->test[specs->n_tests - 1] = nt; - - return 1; -} - -int -npar_custom_mcnemar (struct lexer *lexer, - struct dataset *ds, - struct cmd_npar_tests *cmd, void *aux ) -{ - struct npar_specs *specs = aux; - - struct two_sample_test *tp = pool_alloc(specs->pool, sizeof(*tp)); - struct npar_test *nt = &tp->parent; - nt->execute = NULL; - - - if (!parse_two_sample_related_test (lexer, dataset_dict (ds), - cmd, tp, specs->pool) ) - return 0; - - specs->n_tests++; - specs->test = pool_realloc (specs->pool, - specs->test, - sizeof(*specs->test) * specs->n_tests); - specs->test[specs->n_tests - 1] = nt; - - return 1; -} - -int -npar_custom_sign (struct lexer *lexer, struct dataset *ds, - struct cmd_npar_tests *cmd, void *aux ) -{ - struct npar_specs *specs = aux; - - struct two_sample_test *tp = pool_alloc(specs->pool, sizeof(*tp)); - struct npar_test *nt = &tp->parent; - - nt->execute = sign_execute; - - if (!parse_two_sample_related_test (lexer, dataset_dict (ds), cmd, - tp, specs->pool) ) - return 0; - - specs->n_tests++; - specs->test = pool_realloc (specs->pool, - specs->test, - sizeof(*specs->test) * specs->n_tests); - specs->test[specs->n_tests - 1] = nt; - - return 1; -} - -/* Insert the variables for TEST into VAR_HASH */ -static void -one_sample_insert_variables (const struct npar_test *test, - struct const_hsh_table *var_hash) -{ - int i; - struct one_sample_test *ost = UP_CAST (test, struct one_sample_test, parent); - - for ( i = 0 ; i < ost->n_vars ; ++i ) - const_hsh_insert (var_hash, ost->vars[i]); -} - -static void -two_sample_insert_variables (const struct npar_test *test, - struct const_hsh_table *var_hash) -{ - int i; - - const struct two_sample_test *tst = (const struct two_sample_test *) test; - - for ( i = 0 ; i < tst->n_pairs ; ++i ) - { - variable_pair *pair = &tst->pairs[i]; - - const_hsh_insert (var_hash, (*pair)[0]); - const_hsh_insert (var_hash, (*pair)[1]); - } - -} - - -static int -npar_custom_method (struct lexer *lexer, struct dataset *ds UNUSED, - struct cmd_npar_tests *test UNUSED, void *aux) -{ - struct npar_specs *specs = aux; - - if ( lex_match_id (lexer, "EXACT") ) - { - specs->exact = true; - specs->timer = 0.0; - if (lex_match_id (lexer, "TIMER")) - { - specs->timer = 5.0; - - if ( lex_match (lexer, '(')) - { - if ( lex_force_num (lexer) ) - { - specs->timer = lex_number (lexer); - lex_get (lexer); - } - lex_force_match (lexer, ')'); - } - } - } - - return 1; -} diff --git a/src/language/stats/oneway.c b/src/language/stats/oneway.c index 3995a1a4..79b40cbd 100644 --- a/src/language/stats/oneway.c +++ b/src/language/stats/oneway.c @@ -19,6 +19,17 @@ #include #include #include +#include +#include +#include + + +#include +#include +#include +#include +#include +#include #include @@ -27,15 +38,9 @@ #include #include -#include -#include - #include -#include #include -#include -#include #include #include @@ -49,6 +54,7 @@ #include "gettext.h" #define _(msgid) gettext (msgid) + enum missing_type { MISS_LISTWISE, @@ -76,7 +82,7 @@ struct contrasts_node bool bad_count; /* True if the number of coefficients does not equal the number of groups */ }; -struct oneway +struct oneway_spec { size_t n_vars; const struct variable **vars; @@ -88,40 +94,72 @@ struct oneway enum missing_type missing_type; enum mv_class exclude; + /* List of contrasts */ + struct ll_list contrast_list; + + /* The weight variable */ + const struct variable *wv; + +}; + +/* Per category data */ +struct descriptive_data +{ + const struct variable *var; + struct moments1 *mom; + + double minimum; + double maximum; +}; + +/* Workspace variable for each dependent variable */ +struct per_var_ws +{ + struct categoricals *cat; + struct covariance *cov; + + double sst; + double sse; + double ssa; + + int n_groups; + + double mse; + double levene_w; +}; + +struct oneway_workspace +{ /* The number of distinct values of the independent variable, when all missing values are disregarded */ int actual_number_of_groups; - /* A hash table containing all the distinct values of the independent - variable */ - struct hsh_table *group_hash; + struct per_var_ws *vws; - /* List of contrasts */ - struct ll_list contrast_list; + /* An array of descriptive data. One for each dependent variable */ + struct descriptive_data **dd_total; }; /* Routines to show the output tables */ -static void show_anova_table (const struct oneway *); -static void show_descriptives (const struct oneway *, const struct dictionary *dict); -static void show_homogeneity (const struct oneway *); +static void show_anova_table (const struct oneway_spec *, const struct oneway_workspace *); +static void show_descriptives (const struct oneway_spec *, const struct oneway_workspace *); +static void show_homogeneity (const struct oneway_spec *, const struct oneway_workspace *); -static void output_oneway (const struct oneway *, const struct dictionary *dict); -static void run_oneway (struct oneway *cmd, struct casereader *input, const struct dataset *ds); +static void output_oneway (const struct oneway_spec *, struct oneway_workspace *ws); +static void run_oneway (const struct oneway_spec *cmd, struct casereader *input, const struct dataset *ds); int cmd_oneway (struct lexer *lexer, struct dataset *ds) { - const struct dictionary *dict = dataset_dict (ds); - - struct oneway oneway ; + const struct dictionary *dict = dataset_dict (ds); + struct oneway_spec oneway ; oneway.n_vars = 0; oneway.vars = NULL; oneway.indep_var = NULL; oneway.stats = 0; oneway.missing_type = MISS_ANALYSIS; oneway.exclude = MV_ANY; - oneway.actual_number_of_groups = 0; - oneway.group_hash = NULL; + oneway.wv = dict_get_weight (dict); ll_init (&oneway.contrast_list); @@ -179,13 +217,13 @@ cmd_oneway (struct lexer *lexer, struct dataset *ds) while (lex_token (lexer) != '.' && lex_token (lexer) != '/') { - union value val; - if ( parse_value (lexer, &val, 0)) + if ( lex_is_number (lexer)) { struct coeff_node *cc = xmalloc (sizeof *cc); - cc->coeff = val.f; + cc->coeff = lex_number (lexer); ll_push_tail (coefficient_list, &cc->ll); + lex_get (lexer); } else { @@ -255,61 +293,127 @@ cmd_oneway (struct lexer *lexer, struct dataset *ds) -static int -compare_double_3way (const void *a_, const void *b_, const void *aux UNUSED) + +static struct descriptive_data * +dd_create (const struct variable *var) { - const double *a = a_; - const double *b = b_; - return *a < *b ? -1 : *a > *b; + struct descriptive_data *dd = xmalloc (sizeof *dd); + + dd->mom = moments1_create (MOMENT_VARIANCE); + dd->minimum = DBL_MAX; + dd->maximum = -DBL_MAX; + dd->var = var; + + return dd; } -static unsigned -do_hash_double (const void *value_, const void *aux UNUSED) +static void +dd_destroy (struct descriptive_data *dd) { - const double *value = value_; - return hash_double (*value, 0); + moments1_destroy (dd->mom); + free (dd); } -static void -free_double (void *value_, const void *aux UNUSED) +static void * +makeit (void *aux1, void *aux2 UNUSED) { - double *value = value_; - free (value); + const struct variable *var = aux1; + + struct descriptive_data *dd = dd_create (var); + + return dd; } -static void postcalc (const struct oneway *cmd); -static void precalc (const struct oneway *cmd); +static void +updateit (void *user_data, + enum mv_class exclude, + const struct variable *wv, + const struct variable *catvar UNUSED, + const struct ccase *c, + void *aux1, void *aux2) +{ + struct descriptive_data *dd = user_data; + + const struct variable *varp = aux1; + + const union value *valx = case_data (c, varp); + + struct descriptive_data *dd_total = aux2; + + double weight; + + if ( var_is_value_missing (varp, valx, exclude)) + return; + + weight = wv != NULL ? case_data (c, wv)->f : 1.0; + moments1_add (dd->mom, valx->f, weight); + if (valx->f < dd->minimum) + dd->minimum = valx->f; + + if (valx->f > dd->maximum) + dd->maximum = valx->f; + + { + const struct variable *var = dd_total->var; + const union value *val = case_data (c, var); + + moments1_add (dd_total->mom, + val->f, + weight); + + if (val->f < dd_total->minimum) + dd_total->minimum = val->f; + + if (val->f > dd_total->maximum) + dd_total->maximum = val->f; + } +} static void -run_oneway (struct oneway *cmd, +run_oneway (const struct oneway_spec *cmd, struct casereader *input, const struct dataset *ds) { + int v; struct taint *taint; struct dictionary *dict = dataset_dict (ds); struct casereader *reader; struct ccase *c; + struct oneway_workspace ws; + + ws.actual_number_of_groups = 0; + ws.vws = xzalloc (cmd->n_vars * sizeof (*ws.vws)); + ws.dd_total = xmalloc (sizeof (struct descriptive_data) * cmd->n_vars); + + for (v = 0 ; v < cmd->n_vars; ++v) + ws.dd_total[v] = dd_create (cmd->vars[v]); + + for (v = 0; v < cmd->n_vars; ++v) + { + ws.vws[v].cat = categoricals_create (&cmd->indep_var, 1, + cmd->wv, cmd->exclude, + makeit, + updateit, + cmd->vars[v], ws.dd_total[v]); + + ws.vws[v].cov = covariance_2pass_create (1, &cmd->vars[v], + ws.vws[v].cat, + cmd->wv, cmd->exclude); + } + c = casereader_peek (input, 0); if (c == NULL) { casereader_destroy (input); - return; + goto finish; } output_split_file_values (ds, c); case_unref (c); taint = taint_clone (casereader_get_taint (input)); - cmd->group_hash = hsh_create (4, - compare_double_3way, - do_hash_double, - free_double, - cmd->indep_var); - - precalc (cmd); - input = casereader_create_filter_missing (input, &cmd->indep_var, 1, cmd->exclude, NULL, NULL); if (cmd->missing_type == MISS_LISTWISE) @@ -317,169 +421,115 @@ run_oneway (struct oneway *cmd, cmd->exclude, NULL, NULL); input = casereader_create_filter_weight (input, dict, NULL, NULL); + + if (cmd->stats & STATS_HOMOGENEITY) + for (v = 0; v < cmd->n_vars; ++v) + { + struct per_var_ws *pvw = &ws.vws[v]; + + pvw->levene_w = levene (input, cmd->indep_var, cmd->vars[v], cmd->wv, cmd->exclude); + } + reader = casereader_clone (input); + for (; (c = casereader_read (reader)) != NULL; case_unref (c)) { - size_t i; - - const double weight = dict_get_case_weight (dict, c, NULL); - - const union value *indep_val = case_data (c, cmd->indep_var); - void **p = hsh_probe (cmd->group_hash, &indep_val->f); - if (*p == NULL) - { - double *value = *p = xmalloc (sizeof *value); - *value = indep_val->f; - } + int i; for (i = 0; i < cmd->n_vars; ++i) { + struct per_var_ws *pvw = &ws.vws[i]; const struct variable *v = cmd->vars[i]; - const union value *val = case_data (c, v); - struct group_proc *gp = group_proc_get (cmd->vars[i]); - struct hsh_table *group_hash = gp->group_hash; - - struct group_statistics *gs; - - gs = hsh_find (group_hash, indep_val ); - - if ( ! gs ) + if ( MISS_ANALYSIS == cmd->missing_type) { - gs = xmalloc (sizeof *gs); - gs->id = *indep_val; - gs->sum = 0; - gs->n = 0; - gs->ssq = 0; - gs->sum_diff = 0; - gs->minimum = DBL_MAX; - gs->maximum = -DBL_MAX; - - hsh_insert ( group_hash, gs ); + if ( var_is_value_missing (v, val, cmd->exclude)) + continue; } - if (!var_is_value_missing (v, val, cmd->exclude)) - { - struct group_statistics *totals = &gp->ugs; - - totals->n += weight; - totals->sum += weight * val->f; - totals->ssq += weight * pow2 (val->f); - - if ( val->f * weight < totals->minimum ) - totals->minimum = val->f * weight; - - if ( val->f * weight > totals->maximum ) - totals->maximum = val->f * weight; - - gs->n += weight; - gs->sum += weight * val->f; - gs->ssq += weight * pow2 (val->f); - - if ( val->f * weight < gs->minimum ) - gs->minimum = val->f * weight; + covariance_accumulate_pass1 (pvw->cov, c); + } + } + casereader_destroy (reader); + reader = casereader_clone (input); + for ( ; (c = casereader_read (reader) ); case_unref (c)) + { + int i; + for (i = 0; i < cmd->n_vars; ++i) + { + struct per_var_ws *pvw = &ws.vws[i]; + const struct variable *v = cmd->vars[i]; + const union value *val = case_data (c, v); - if ( val->f * weight > gs->maximum ) - gs->maximum = val->f * weight; + if ( MISS_ANALYSIS == cmd->missing_type) + { + if ( var_is_value_missing (v, val, cmd->exclude)) + continue; } - gp->n_groups = hsh_count (group_hash ); + covariance_accumulate_pass2 (pvw->cov, c); } - } casereader_destroy (reader); - postcalc (cmd); + for (v = 0; v < cmd->n_vars; ++v) + { + struct per_var_ws *pvw = &ws.vws[v]; + gsl_matrix *cm = covariance_calculate_unnormalized (pvw->cov); + const struct categoricals *cats = covariance_get_categoricals (pvw->cov); - if ( cmd->stats & STATS_HOMOGENEITY ) - levene (dict, casereader_clone (input), cmd->indep_var, - cmd->n_vars, cmd->vars, cmd->exclude); + double n; + moments1_calculate (ws.dd_total[v]->mom, &n, NULL, NULL, NULL, NULL); - casereader_destroy (input); + pvw->sst = gsl_matrix_get (cm, 0, 0); - cmd->actual_number_of_groups = hsh_count (cmd->group_hash); + // gsl_matrix_fprintf (stdout, cm, "%g "); - if (!taint_has_tainted_successor (taint)) - output_oneway (cmd, dict); + reg_sweep (cm, 0); - taint_destroy (taint); -} + pvw->sse = gsl_matrix_get (cm, 0, 0); -/* Pre calculations */ -static void -precalc (const struct oneway *cmd) -{ - size_t i = 0; + pvw->ssa = pvw->sst - pvw->sse; - for (i = 0; i < cmd->n_vars; ++i) - { - struct group_proc *gp = group_proc_get (cmd->vars[i]); - struct group_statistics *totals = &gp->ugs; - - /* Create a hash for each of the dependent variables. - The hash contains a group_statistics structure, - and is keyed by value of the independent variable */ - - gp->group_hash = hsh_create (4, compare_group, hash_group, - (hsh_free_func *) free_group, - cmd->indep_var); - - totals->sum = 0; - totals->n = 0; - totals->ssq = 0; - totals->sum_diff = 0; - totals->maximum = -DBL_MAX; - totals->minimum = DBL_MAX; - } -} + pvw->n_groups = categoricals_total (cats); -/* Post calculations for the ONEWAY command */ -static void -postcalc (const struct oneway *cmd) -{ - size_t i = 0; + pvw->mse = (pvw->sst - pvw->ssa) / (n - pvw->n_groups); + } - for (i = 0; i < cmd->n_vars; ++i) + for (v = 0; v < cmd->n_vars; ++v) { - struct group_proc *gp = group_proc_get (cmd->vars[i]); - struct hsh_table *group_hash = gp->group_hash; - struct group_statistics *totals = &gp->ugs; - - struct hsh_iterator g; - struct group_statistics *gs; + struct categoricals *cats = covariance_get_categoricals (ws.vws[v].cov); - for (gs = hsh_first (group_hash, &g); - gs != 0; - gs = hsh_next (group_hash, &g)) - { - gs->mean = gs->sum / gs->n; - gs->s_std_dev = sqrt (gs->ssq / gs->n - pow2 (gs->mean)); + categoricals_done (cats); + + if (categoricals_total (cats) > ws.actual_number_of_groups) + ws.actual_number_of_groups = categoricals_total (cats); + } - gs->std_dev = sqrt ( - gs->n / (gs->n - 1) * - ( gs->ssq / gs->n - pow2 (gs->mean)) - ); + casereader_destroy (input); - gs->se_mean = gs->std_dev / sqrt (gs->n); - gs->mean_diff = gs->sum_diff / gs->n; - } + if (!taint_has_tainted_successor (taint)) + output_oneway (cmd, &ws); - totals->mean = totals->sum / totals->n; - totals->std_dev = sqrt ( - totals->n / (totals->n - 1) * - (totals->ssq / totals->n - pow2 (totals->mean)) - ); + taint_destroy (taint); - totals->se_mean = totals->std_dev / sqrt (totals->n); + finish: + for (v = 0; v < cmd->n_vars; ++v) + { + covariance_destroy (ws.vws[v].cov); + dd_destroy (ws.dd_total[v]); } + free (ws.vws); + free (ws.dd_total); + } -static void show_contrast_coeffs (const struct oneway *cmd); -static void show_contrast_tests (const struct oneway *cmd); +static void show_contrast_coeffs (const struct oneway_spec *cmd, const struct oneway_workspace *ws); +static void show_contrast_tests (const struct oneway_spec *cmd, const struct oneway_workspace *ws); static void -output_oneway (const struct oneway *cmd, const struct dictionary *dict) +output_oneway (const struct oneway_spec *cmd, struct oneway_workspace *ws) { size_t i = 0; @@ -492,7 +542,7 @@ output_oneway (const struct oneway *cmd, const struct dictionary *dict) struct ll_list *cl = &coeff_list->coefficient_list; ++i; - if (ll_count (cl) != cmd->actual_number_of_groups) + if (ll_count (cl) != ws->actual_number_of_groups) { msg (SW, _("Number of contrast coefficients must equal the number of groups")); @@ -508,36 +558,24 @@ output_oneway (const struct oneway *cmd, const struct dictionary *dict) } if (cmd->stats & STATS_DESCRIPTIVES) - show_descriptives (cmd, dict); + show_descriptives (cmd, ws); if (cmd->stats & STATS_HOMOGENEITY) - show_homogeneity (cmd); - - show_anova_table (cmd); + show_homogeneity (cmd, ws); + show_anova_table (cmd, ws); if (ll_count (&cmd->contrast_list) > 0) { - show_contrast_coeffs (cmd); - show_contrast_tests (cmd); + show_contrast_coeffs (cmd, ws); + show_contrast_tests (cmd, ws); } - - - /* Clean up */ - for (i = 0; i < cmd->n_vars; ++i ) - { - struct hsh_table *group_hash = group_proc_get (cmd->vars[i])->group_hash; - - hsh_destroy (group_hash); - } - - hsh_destroy (cmd->group_hash); } /* Show the ANOVA table */ static void -show_anova_table (const struct oneway *cmd) +show_anova_table (const struct oneway_spec *cmd, const struct oneway_workspace *ws) { size_t i; int n_cols =7; @@ -566,21 +604,17 @@ show_anova_table (const struct oneway *cmd) for (i = 0; i < cmd->n_vars; ++i) { - struct group_statistics *totals = &group_proc_get (cmd->vars[i])->ugs; - struct hsh_table *group_hash = group_proc_get (cmd->vars[i])->group_hash; - struct hsh_iterator g; - struct group_statistics *gs; - double ssa = 0; + double n; + double df1, df2; + double msa; const char *s = var_to_string (cmd->vars[i]); + const struct per_var_ws *pvw = &ws->vws[i]; - for (gs = hsh_first (group_hash, &g); - gs != 0; - gs = hsh_next (group_hash, &g)) - { - ssa += pow2 (gs->sum) / gs->n; - } + moments1_calculate (ws->dd_total[i]->mom, &n, NULL, NULL, NULL, NULL); - ssa -= pow2 (totals->sum) / totals->n; + df1 = pvw->n_groups - 1; + df2 = n - pvw->n_groups; + msa = pvw->ssa / df1; tab_text (t, 0, i * 3 + 1, TAB_LEFT | TAT_TITLE, s); tab_text (t, 1, i * 3 + 1, TAB_LEFT | TAT_TITLE, _("Between Groups")); @@ -590,44 +624,33 @@ show_anova_table (const struct oneway *cmd) if (i > 0) tab_hline (t, TAL_1, 0, n_cols - 1, i * 3 + 1); - { - struct group_proc *gp = group_proc_get (cmd->vars[i]); - const double sst = totals->ssq - pow2 (totals->sum) / totals->n; - const double df1 = gp->n_groups - 1; - const double df2 = totals->n - gp->n_groups; - const double msa = ssa / df1; - gp->mse = (sst - ssa) / df2; + /* Sums of Squares */ + tab_double (t, 2, i * 3 + 1, 0, pvw->ssa, NULL); + tab_double (t, 2, i * 3 + 3, 0, pvw->sst, NULL); + tab_double (t, 2, i * 3 + 2, 0, pvw->sse, NULL); - /* Sums of Squares */ - tab_double (t, 2, i * 3 + 1, 0, ssa, NULL); - tab_double (t, 2, i * 3 + 3, 0, sst, NULL); - tab_double (t, 2, i * 3 + 2, 0, sst - ssa, NULL); + /* Degrees of freedom */ + tab_fixed (t, 3, i * 3 + 1, 0, df1, 4, 0); + tab_fixed (t, 3, i * 3 + 2, 0, df2, 4, 0); + tab_fixed (t, 3, i * 3 + 3, 0, n - 1, 4, 0); + /* Mean Squares */ + tab_double (t, 4, i * 3 + 1, TAB_RIGHT, msa, NULL); + tab_double (t, 4, i * 3 + 2, TAB_RIGHT, pvw->mse, NULL); - /* Degrees of freedom */ - tab_fixed (t, 3, i * 3 + 1, 0, df1, 4, 0); - tab_fixed (t, 3, i * 3 + 2, 0, df2, 4, 0); - tab_fixed (t, 3, i * 3 + 3, 0, totals->n - 1, 4, 0); - - /* Mean Squares */ - tab_double (t, 4, i * 3 + 1, TAB_RIGHT, msa, NULL); - tab_double (t, 4, i * 3 + 2, TAB_RIGHT, gp->mse, NULL); - - { - const double F = msa / gp->mse ; + { + const double F = msa / pvw->mse ; - /* The F value */ - tab_double (t, 5, i * 3 + 1, 0, F, NULL); + /* The F value */ + tab_double (t, 5, i * 3 + 1, 0, F, NULL); - /* The significance */ - tab_double (t, 6, i * 3 + 1, 0, gsl_cdf_fdist_Q (F, df1, df2), NULL); - } + /* The significance */ + tab_double (t, 6, i * 3 + 1, 0, gsl_cdf_fdist_Q (F, df1, df2), NULL); } } - tab_title (t, _("ANOVA")); tab_submit (t); } @@ -635,7 +658,7 @@ show_anova_table (const struct oneway *cmd) /* Show the descriptives table */ static void -show_descriptives (const struct oneway *cmd, const struct dictionary *dict) +show_descriptives (const struct oneway_spec *cmd, const struct oneway_workspace *ws) { size_t v; int n_cols = 10; @@ -645,18 +668,16 @@ show_descriptives (const struct oneway *cmd, const struct dictionary *dict) const double confidence = 0.95; const double q = (1.0 - confidence) / 2.0; - const struct variable *wv = dict_get_weight (dict); - const struct fmt_spec *wfmt = wv ? var_get_print_format (wv) : & F_8_0; + const struct fmt_spec *wfmt = cmd->wv ? var_get_print_format (cmd->wv) : &F_8_0; int n_rows = 2; - for ( v = 0; v < cmd->n_vars; ++v ) - n_rows += group_proc_get (cmd->vars[v])->n_groups + 1; + for (v = 0; v < cmd->n_vars; ++v) + n_rows += ws->actual_number_of_groups + 1; t = tab_create (n_cols, n_rows); tab_headers (t, 2, 0, 2, 0); - /* Put a frame around the entire box, and vertical lines inside */ tab_box (t, TAL_2, TAL_2, @@ -686,39 +707,42 @@ show_descriptives (const struct oneway *cmd, const struct dictionary *dict) tab_text (t, 8, 1, TAB_CENTER | TAT_TITLE, _("Minimum")); tab_text (t, 9, 1, TAB_CENTER | TAT_TITLE, _("Maximum")); - tab_title (t, _("Descriptives")); - row = 2; for (v = 0; v < cmd->n_vars; ++v) { - double T; - double std_error; - - struct group_proc *gp = group_proc_get (cmd->vars[v]); - - struct group_statistics *gs; - struct group_statistics *totals = &gp->ugs; - const char *s = var_to_string (cmd->vars[v]); const struct fmt_spec *fmt = var_get_print_format (cmd->vars[v]); - struct group_statistics *const *gs_array = - (struct group_statistics *const *) hsh_sort (gp->group_hash); int count = 0; + struct per_var_ws *pvw = &ws->vws[v]; + const struct categoricals *cats = covariance_get_categoricals (pvw->cov); + tab_text (t, 0, row, TAB_LEFT | TAT_TITLE, s); if ( v > 0) tab_hline (t, TAL_1, 0, n_cols - 1, row); - for (count = 0; count < hsh_count (gp->group_hash); ++count) + for (count = 0; count < categoricals_total (cats); ++count) { + double T; + double n, mean, variance; + double std_dev, std_error ; + struct string vstr; + + const union value *gval = categoricals_get_value_by_subscript (cats, count); + const struct descriptive_data *dd = categoricals_get_user_data_by_subscript (cats, count); + + moments1_calculate (dd->mom, &n, &mean, &variance, NULL, NULL); + + std_dev = sqrt (variance); + std_error = std_dev / sqrt (n) ; + ds_init_empty (&vstr); - gs = gs_array[count]; - var_append_value_name (cmd->indep_var, &gs->id, &vstr); + var_append_value_name (cmd->indep_var, gval, &vstr); tab_text (t, 1, row + count, TAB_LEFT | TAT_TITLE, @@ -728,61 +752,68 @@ show_descriptives (const struct oneway *cmd, const struct dictionary *dict) /* Now fill in the numbers ... */ - tab_fixed (t, 2, row + count, 0, gs->n, 8, 0); + tab_double (t, 2, row + count, 0, n, wfmt); - tab_double (t, 3, row + count, 0, gs->mean, NULL); + tab_double (t, 3, row + count, 0, mean, NULL); - tab_double (t, 4, row + count, 0, gs->std_dev, NULL); + tab_double (t, 4, row + count, 0, std_dev, NULL); - std_error = gs->std_dev / sqrt (gs->n) ; - tab_double (t, 5, row + count, 0, - std_error, NULL); + + tab_double (t, 5, row + count, 0, std_error, NULL); /* Now the confidence interval */ - T = gsl_cdf_tdist_Qinv (q, gs->n - 1); + T = gsl_cdf_tdist_Qinv (q, n - 1); tab_double (t, 6, row + count, 0, - gs->mean - T * std_error, NULL); + mean - T * std_error, NULL); tab_double (t, 7, row + count, 0, - gs->mean + T * std_error, NULL); + mean + T * std_error, NULL); /* Min and Max */ - tab_double (t, 8, row + count, 0, gs->minimum, fmt); - tab_double (t, 9, row + count, 0, gs->maximum, fmt); + tab_double (t, 8, row + count, 0, dd->minimum, fmt); + tab_double (t, 9, row + count, 0, dd->maximum, fmt); } - tab_text (t, 1, row + count, - TAB_LEFT | TAT_TITLE, _("Total")); + { + double T; + double n, mean, variance; + double std_dev; + double std_error; - tab_double (t, 2, row + count, 0, totals->n, wfmt); + moments1_calculate (ws->dd_total[v]->mom, &n, &mean, &variance, NULL, NULL); - tab_double (t, 3, row + count, 0, totals->mean, NULL); + std_dev = sqrt (variance); + std_error = std_dev / sqrt (n) ; - tab_double (t, 4, row + count, 0, totals->std_dev, NULL); + tab_text (t, 1, row + count, + TAB_LEFT | TAT_TITLE, _("Total")); - std_error = totals->std_dev / sqrt (totals->n) ; + tab_double (t, 2, row + count, 0, n, wfmt); - tab_double (t, 5, row + count, 0, std_error, NULL); + tab_double (t, 3, row + count, 0, mean, NULL); - /* Now the confidence interval */ + tab_double (t, 4, row + count, 0, std_dev, NULL); - T = gsl_cdf_tdist_Qinv (q, totals->n - 1); + tab_double (t, 5, row + count, 0, std_error, NULL); - tab_double (t, 6, row + count, 0, - totals->mean - T * std_error, NULL); + /* Now the confidence interval */ + T = gsl_cdf_tdist_Qinv (q, n - 1); - tab_double (t, 7, row + count, 0, - totals->mean + T * std_error, NULL); + tab_double (t, 6, row + count, 0, + mean - T * std_error, NULL); - /* Min and Max */ + tab_double (t, 7, row + count, 0, + mean + T * std_error, NULL); - tab_double (t, 8, row + count, 0, totals->minimum, fmt); - tab_double (t, 9, row + count, 0, totals->maximum, fmt); + /* Min and Max */ + tab_double (t, 8, row + count, 0, ws->dd_total[v]->minimum, fmt); + tab_double (t, 9, row + count, 0, ws->dd_total[v]->maximum, fmt); + } - row += gp->n_groups + 1; + row += categoricals_total (cats) + 1; } tab_submit (t); @@ -790,19 +821,15 @@ show_descriptives (const struct oneway *cmd, const struct dictionary *dict) /* Show the homogeneity table */ static void -show_homogeneity (const struct oneway *cmd) +show_homogeneity (const struct oneway_spec *cmd, const struct oneway_workspace *ws) { size_t v; int n_cols = 5; size_t n_rows = cmd->n_vars + 1; - struct tab_table *t; - - - t = tab_create (n_cols, n_rows); + struct tab_table *t = tab_create (n_cols, n_rows); tab_headers (t, 1, 0, 1, 0); - /* Put a frame around the entire box, and vertical lines inside */ tab_box (t, TAL_2, TAL_2, @@ -814,7 +841,6 @@ show_homogeneity (const struct oneway *cmd) tab_hline (t, TAL_2, 0, n_cols - 1, 1); tab_vline (t, TAL_2, 1, 0, n_rows - 1); - tab_text (t, 1, 0, TAB_CENTER | TAT_TITLE, _("Levene Statistic")); tab_text (t, 2, 0, TAB_CENTER | TAT_TITLE, _("df1")); tab_text (t, 3, 0, TAB_CENTER | TAT_TITLE, _("df2")); @@ -824,24 +850,27 @@ show_homogeneity (const struct oneway *cmd) for (v = 0; v < cmd->n_vars; ++v) { - double F; + double n; + const struct per_var_ws *pvw = &ws->vws[v]; + double F = pvw->levene_w; + const struct variable *var = cmd->vars[v]; - const struct group_proc *gp = group_proc_get (cmd->vars[v]); const char *s = var_to_string (var); - const struct group_statistics *totals = &gp->ugs; + double df1, df2; - const double df1 = gp->n_groups - 1; - const double df2 = totals->n - gp->n_groups; + moments1_calculate (ws->dd_total[v]->mom, &n, NULL, NULL, NULL, NULL); + + df1 = pvw->n_groups - 1; + df2 = n - pvw->n_groups; tab_text (t, 0, v + 1, TAB_LEFT | TAT_TITLE, s); - F = gp->levene; tab_double (t, 1, v + 1, TAB_RIGHT, F, NULL); tab_fixed (t, 2, v + 1, TAB_RIGHT, df1, 8, 0); tab_fixed (t, 3, v + 1, TAB_RIGHT, df2, 8, 0); /* Now the significance */ - tab_double (t, 4, v + 1, TAB_RIGHT,gsl_cdf_fdist_Q (F, df1, df2), NULL); + tab_double (t, 4, v + 1, TAB_RIGHT, gsl_cdf_fdist_Q (F, df1, df2), NULL); } tab_submit (t); @@ -850,19 +879,19 @@ show_homogeneity (const struct oneway *cmd) /* Show the contrast coefficients table */ static void -show_contrast_coeffs (const struct oneway *cmd) +show_contrast_coeffs (const struct oneway_spec *cmd, const struct oneway_workspace *ws) { int c_num = 0; struct ll *cli; int n_contrasts = ll_count (&cmd->contrast_list); - int n_cols = 2 + cmd->actual_number_of_groups; + int n_cols = 2 + ws->actual_number_of_groups; int n_rows = 2 + n_contrasts; - void *const *group_values; - struct tab_table *t; + const struct covariance *cov = ws->vws[0].cov ; + t = tab_create (n_cols, n_rows); tab_headers (t, 2, 0, 2, 0); @@ -898,34 +927,29 @@ show_contrast_coeffs (const struct oneway *cmd) tab_joint_text (t, 2, 0, n_cols - 1, 0, TAB_CENTER | TAT_TITLE, var_to_string (cmd->indep_var)); - group_values = hsh_sort (cmd->group_hash); - for ( cli = ll_head (&cmd->contrast_list); cli != ll_null (&cmd->contrast_list); cli = ll_next (cli)) { int count = 0; struct contrasts_node *cn = ll_data (cli, struct contrasts_node, ll); - struct ll *coeffi = ll_head (&cn->coefficient_list); + struct ll *coeffi ; tab_text_format (t, 1, c_num + 2, TAB_CENTER, "%d", c_num + 1); - for (count = 0; - count < hsh_count (cmd->group_hash) && coeffi != ll_null (&cn->coefficient_list); - ++count) + for (coeffi = ll_head (&cn->coefficient_list); + coeffi != ll_null (&cn->coefficient_list); + ++count, coeffi = ll_next (coeffi)) { - double *group_value_p; - union value group_value; + const struct categoricals *cats = covariance_get_categoricals (cov); + const union value *val = categoricals_get_value_by_subscript (cats, count); struct string vstr; ds_init_empty (&vstr); - group_value_p = group_values[count]; - group_value.f = *group_value_p; - var_append_value_name (cmd->indep_var, &group_value, &vstr); + var_append_value_name (cmd->indep_var, val, &vstr); - tab_text (t, count + 2, 1, TAB_CENTER | TAT_TITLE, - ds_cstr (&vstr)); + tab_text (t, count + 2, 1, TAB_CENTER | TAT_TITLE, ds_cstr (&vstr)); ds_destroy (&vstr); @@ -937,8 +961,6 @@ show_contrast_coeffs (const struct oneway *cmd) tab_text_format (t, count + 2, c_num + 2, TAB_RIGHT, "%g", coeffn->coeff); } - - coeffi = ll_next (coeffi); } ++c_num; } @@ -949,7 +971,7 @@ show_contrast_coeffs (const struct oneway *cmd) /* Show the results of the contrast tests */ static void -show_contrast_tests (const struct oneway *cmd) +show_contrast_tests (const struct oneway_spec *cmd, const struct oneway_workspace *ws) { int n_contrasts = ll_count (&cmd->contrast_list); size_t v; @@ -977,7 +999,6 @@ show_contrast_tests (const struct oneway *cmd) tab_hline (t, TAL_2, 0, n_cols - 1, 1); tab_vline (t, TAL_2, 3, 0, n_rows - 1); - tab_title (t, _("Contrast Tests")); tab_text (t, 2, 0, TAB_CENTER | TAT_TITLE, _("Contrast")); @@ -989,6 +1010,8 @@ show_contrast_tests (const struct oneway *cmd) for (v = 0; v < cmd->n_vars; ++v) { + const struct per_var_ws *pvw = &ws->vws[v]; + const struct categoricals *cats = covariance_get_categoricals (pvw->cov); struct ll *cli; int i = 0; int lines_per_variable = 2 * n_contrasts; @@ -1001,14 +1024,10 @@ show_contrast_tests (const struct oneway *cmd) ++i, cli = ll_next (cli)) { struct contrasts_node *cn = ll_data (cli, struct contrasts_node, ll); - struct ll *coeffi = ll_head (&cn->coefficient_list); - int ci; + struct ll *coeffi ; + int ci = 0; double contrast_value = 0.0; double coef_msq = 0.0; - struct group_proc *grp_data = group_proc_get (cmd->vars[v]); - struct hsh_table *group_hash = grp_data->group_hash; - - void *const *group_stat_array; double T; double std_error_contrast; @@ -1028,6 +1047,11 @@ show_contrast_tests (const struct oneway *cmd) double df_denominator = 0.0; double df_numerator = 0.0; + + double grand_n; + moments1_calculate (ws->dd_total[v]->mom, &grand_n, NULL, NULL, NULL, NULL); + df = grand_n - pvw->n_groups; + if ( i == 0 ) { tab_text (t, 1, (v * lines_per_variable) + i + 1, @@ -1050,27 +1074,28 @@ show_contrast_tests (const struct oneway *cmd) if (cn->bad_count) continue; - group_stat_array = hsh_sort (group_hash); - - for (ci = 0; - coeffi != ll_null (&cn->coefficient_list) && - ci < hsh_count (group_hash); + for (coeffi = ll_head (&cn->coefficient_list); + coeffi != ll_null (&cn->coefficient_list); ++ci, coeffi = ll_next (coeffi)) { + double n, mean, variance; + const struct descriptive_data *dd = categoricals_get_user_data_by_subscript (cats, ci); struct coeff_node *cn = ll_data (coeffi, struct coeff_node, ll); const double coef = cn->coeff; - struct group_statistics *gs = group_stat_array[ci]; + double winv ; + + moments1_calculate (dd->mom, &n, &mean, &variance, NULL, NULL); - const double winv = pow2 (gs->std_dev) / gs->n; + winv = variance / n; - contrast_value += coef * gs->mean; + contrast_value += coef * mean; - coef_msq += (coef * coef) / gs->n; + coef_msq += (pow2 (coef)) / n; - sec_vneq += (coef * coef) * pow2 (gs->std_dev) /gs->n; + sec_vneq += (pow2 (coef)) * variance / n; - df_numerator += (coef * coef) * winv; - df_denominator += pow2((coef * coef) * winv) / (gs->n - 1); + df_numerator += (pow2 (coef)) * winv; + df_denominator += pow2((pow2 (coef)) * winv) / (n - 1); } sec_vneq = sqrt (sec_vneq); @@ -1084,7 +1109,7 @@ show_contrast_tests (const struct oneway *cmd) n_contrasts, TAB_RIGHT, contrast_value, NULL); - std_error_contrast = sqrt (grp_data->mse * coef_msq); + std_error_contrast = sqrt (pvw->mse * coef_msq); /* Std. Error */ tab_double (t, 4, (v * lines_per_variable) + i + 1, @@ -1099,7 +1124,6 @@ show_contrast_tests (const struct oneway *cmd) TAB_RIGHT, T, NULL); - df = grp_data->ugs.n - grp_data->n_groups; /* Degrees of Freedom */ tab_fixed (t, 6, (v * lines_per_variable) + i + 1, diff --git a/src/language/stats/roc.c b/src/language/stats/roc.c index d1461a59..dd209367 100644 --- a/src/language/stats/roc.c +++ b/src/language/stats/roc.c @@ -397,19 +397,18 @@ struct roc_state WEIGHT is the value of a single count. */ static struct casereader * -accumulate_counts (struct casereader *cutpoint_rdr, +accumulate_counts (struct casereader *input, double result, double weight, bool (*pos_cond) (double, double), int true_index, int false_index) { - const struct caseproto *proto = casereader_get_proto (cutpoint_rdr); + const struct caseproto *proto = casereader_get_proto (input); struct casewriter *w = autopaging_writer_create (proto); - struct casereader *r = casereader_clone (cutpoint_rdr); struct ccase *cpc; double prev_cp = SYSMIS; - for ( ; (cpc = casereader_read (r) ); case_unref (cpc)) + for ( ; (cpc = casereader_read (input) ); case_unref (cpc)) { struct ccase *new_case; const double cp = case_data_idx (cpc, ROC_CUTPOINT)->f; @@ -431,7 +430,7 @@ accumulate_counts (struct casereader *cutpoint_rdr, casewriter_write (w, new_case); } - casereader_destroy (r); + casereader_destroy (input); return casewriter_make_reader (w); } @@ -529,9 +528,12 @@ process_group (const struct variable *var, struct casereader *reader, casereader_destroy (r2); } + casereader_destroy (r1); casereader_destroy (rclone); + caseproto_unref (proto); + return casewriter_make_reader (wtr); } @@ -628,24 +630,29 @@ prepare_cutpoints (struct cmd_roc *roc, struct roc_state *rs, struct casereader int i; struct casereader *r = casereader_clone (input); struct ccase *c; - struct caseproto *proto = caseproto_create (); - struct subcase ordering; - subcase_init (&ordering, ROC_CUTPOINT, 0, SC_ASCEND); + { + struct caseproto *proto = caseproto_create (); + struct subcase ordering; + subcase_init (&ordering, ROC_CUTPOINT, 0, SC_ASCEND); - proto = caseproto_add_width (proto, 0); /* cutpoint */ - proto = caseproto_add_width (proto, 0); /* ROC_TP */ - proto = caseproto_add_width (proto, 0); /* ROC_FN */ - proto = caseproto_add_width (proto, 0); /* ROC_TN */ - proto = caseproto_add_width (proto, 0); /* ROC_FP */ + proto = caseproto_add_width (proto, 0); /* cutpoint */ + proto = caseproto_add_width (proto, 0); /* ROC_TP */ + proto = caseproto_add_width (proto, 0); /* ROC_FN */ + proto = caseproto_add_width (proto, 0); /* ROC_TN */ + proto = caseproto_add_width (proto, 0); /* ROC_FP */ - for (i = 0 ; i < roc->n_vars; ++i) - { - rs[i].cutpoint_wtr = sort_create_writer (&ordering, proto); - rs[i].prev_result = SYSMIS; - rs[i].max = -DBL_MAX; - rs[i].min = DBL_MAX; - } + for (i = 0 ; i < roc->n_vars; ++i) + { + rs[i].cutpoint_wtr = sort_create_writer (&ordering, proto); + rs[i].prev_result = SYSMIS; + rs[i].max = -DBL_MAX; + rs[i].min = DBL_MAX; + } + + caseproto_unref (proto); + subcase_destroy (&ordering); + } for (; (c = casereader_read (r)) != NULL; case_unref (c)) { @@ -692,7 +699,7 @@ do_roc (struct cmd_roc *roc, struct casereader *reader, struct dictionary *dict) struct casereader *negatives = NULL; struct casereader *positives = NULL; - struct caseproto *n_proto = caseproto_create (); + struct caseproto *n_proto = NULL; struct subcase up_ordering; struct subcase down_ordering; @@ -743,14 +750,13 @@ do_roc (struct cmd_roc *roc, struct casereader *reader, struct dictionary *dict) struct ccase *c; struct ccase *cpos; - struct casereader *n_neg ; + struct casereader *n_neg_reader ; const struct variable *var = roc->vars[i]; struct casereader *neg ; struct casereader *pos = casereader_clone (positives); - - struct casereader *n_pos = + struct casereader *n_pos_reader = process_positive_group (var, pos, dict, &rs[i]); if ( negatives == NULL) @@ -760,18 +766,17 @@ do_roc (struct cmd_roc *roc, struct casereader *reader, struct dictionary *dict) neg = casereader_clone (negatives); - n_neg = process_negative_group (var, neg, dict, &rs[i]); - + n_neg_reader = process_negative_group (var, neg, dict, &rs[i]); /* Merge the n_pos and n_neg casereaders */ w = sort_create_writer (&up_ordering, n_proto); - for ( ; (cpos = casereader_read (n_pos) ); case_unref (cpos)) + for ( ; (cpos = casereader_read (n_pos_reader) ); case_unref (cpos)) { struct ccase *pos_case = case_create (n_proto); struct ccase *cneg; const double jpos = case_data_idx (cpos, VALUE)->f; - while ((cneg = casereader_read (n_neg))) + while ((cneg = casereader_read (n_neg_reader))) { struct ccase *nc = case_create (n_proto); @@ -801,6 +806,9 @@ do_roc (struct cmd_roc *roc, struct casereader *reader, struct dictionary *dict) casewriter_write (w, pos_case); } + casereader_destroy (n_pos_reader); + casereader_destroy (n_neg_reader); + /* These aren't used anymore */ #undef N_EQ #undef N_PRED @@ -828,6 +836,7 @@ do_roc (struct cmd_roc *roc, struct casereader *reader, struct dictionary *dict) prev_pos_gt = n_pos_gt; } + casereader_destroy (r); r = casewriter_make_reader (w); } @@ -852,6 +861,7 @@ do_roc (struct cmd_roc *roc, struct casereader *reader, struct dictionary *dict) prev_neg_lt = n_neg_lt; } + casereader_destroy (r); r = casewriter_make_reader (w); } @@ -859,7 +869,7 @@ do_roc (struct cmd_roc *roc, struct casereader *reader, struct dictionary *dict) struct ccase *prev_case = NULL; for ( ; (c = casereader_read (r) ); case_unref (c)) { - const struct ccase *next_case = casereader_peek (r, 0); + struct ccase *next_case = casereader_peek (r, 0); const double j = case_data_idx (c, VALUE)->f; double n_pos_eq = case_data_idx (c, N_POS_EQ)->f; @@ -893,9 +903,12 @@ do_roc (struct cmd_roc *roc, struct casereader *reader, struct dictionary *dict) } + case_unref (next_case); case_unref (prev_case); prev_case = case_clone (c); } + casereader_destroy (r); + case_unref (prev_case); rs[i].auc /= rs[i].n1 * rs[i].n2; if ( roc->invert ) @@ -917,7 +930,14 @@ do_roc (struct cmd_roc *roc, struct casereader *reader, struct dictionary *dict) casereader_destroy (positives); casereader_destroy (negatives); + caseproto_unref (n_proto); + subcase_destroy (&up_ordering); + subcase_destroy (&down_ordering); + output_roc (rs, roc); + + for (i = 0 ; i < roc->n_vars; ++i) + casereader_destroy (rs[i].cutpoint_rdr); free (rs); } diff --git a/src/language/stats/sign.c b/src/language/stats/sign.c index 754b0d7d..38489113 100644 --- a/src/language/stats/sign.c +++ b/src/language/stats/sign.c @@ -80,6 +80,7 @@ output_frequency_table (const struct two_sample_test *t2s, ds_put_cstr (&pair_name, " - "); ds_put_cstr (&pair_name, var_to_string ((*vp)[1])); + tab_text (table, 0, 1 + i * 4, TAB_LEFT, ds_cstr (&pair_name)); ds_destroy (&pair_name); @@ -168,7 +169,7 @@ sign_execute (const struct dataset *ds, int i; bool warn = true; const struct dictionary *dict = dataset_dict (ds); - const struct two_sample_test *t2s = (const struct two_sample_test *) test; + const struct two_sample_test *t2s = UP_CAST (test, const struct two_sample_test, parent); struct ccase *c; struct sign_test_params *stp = xcalloc (sizeof *stp, t2s->n_pairs); diff --git a/src/language/stats/t-test.q b/src/language/stats/t-test.q index 8aee3b15..9eb2c471 100644 --- a/src/language/stats/t-test.q +++ b/src/language/stats/t-test.q @@ -1401,6 +1401,23 @@ group_calc (const struct dictionary *dict, struct t_test_proc *proc, return 0; } + +static bool +is_criteria_value (const struct ccase *c, void *aux) +{ + const struct t_test_proc *proc = aux; + const union value *val = case_data (c, proc->indep_var); + int width = var_get_width (proc->indep_var); + + if ( value_equal (val, &proc->g_value[0], width)) + return true; + + if ( value_equal (val, &proc->g_value[1], width)) + return true; + + return false; +} + static void calculate (struct t_test_proc *proc, struct casereader *input, const struct dataset *ds) @@ -1410,7 +1427,7 @@ calculate (struct t_test_proc *proc, struct trbox test_results_box; struct taint *taint; struct ccase *c; - + int i; c = casereader_peek (input, 0); if (c == NULL) { @@ -1439,8 +1456,20 @@ calculate (struct t_test_proc *proc, break; case T_IND_SAMPLES: group_calc (dict, proc, casereader_clone (input)); - levene (dict, input, proc->indep_var, proc->n_vars, proc->vars, - proc->exclude); + + for (i = 0; i < proc->n_vars; ++i) + { + struct group_proc *grp_data = group_proc_get (proc->vars[i]); + + if ( proc->criterion == CMP_EQ ) + { + input = casereader_create_filter_func (input, is_criteria_value, NULL, + proc, + NULL); + } + + grp_data->levene = levene ( input, proc->indep_var, proc->vars[i], dict_get_weight (dict), proc->exclude); + } break; default: NOT_REACHED (); diff --git a/src/language/stats/wilcoxon.c b/src/language/stats/wilcoxon.c index 197124cf..268296d7 100644 --- a/src/language/stats/wilcoxon.c +++ b/src/language/stats/wilcoxon.c @@ -22,8 +22,6 @@ #include #include -#include -#include #include #include @@ -32,15 +30,12 @@ #include #include #include -#include #include #include #include #include #include #include -#include -#include #include "minmax.h" #include "xalloc.h" @@ -84,7 +79,7 @@ wilcoxon_execute (const struct dataset *ds, int i; bool warn = true; const struct dictionary *dict = dataset_dict (ds); - const struct two_sample_test *t2s = (struct two_sample_test *) test; + const struct two_sample_test *t2s = UP_CAST (test, const struct two_sample_test, parent); struct wilcoxon_state *ws = xcalloc (sizeof (*ws), t2s->n_pairs); const struct variable *weight = dict_get_weight (dict); diff --git a/src/language/syntax-file.c b/src/language/syntax-file.c index 55219724..83bd07b3 100644 --- a/src/language/syntax-file.c +++ b/src/language/syntax-file.c @@ -85,17 +85,8 @@ read_syntax_file (struct getl_interface *s, struct syntax_file_source *sfs = UP_CAST (s, struct syntax_file_source, parent); - /* Open file, if not yet opened. */ if (sfs->syntax_file == NULL) - { - sfs->syntax_file = fn_open (sfs->fn, "r"); - - if (sfs->syntax_file == NULL) - { - msg (ME, _("Opening `%s': %s."), sfs->fn, strerror (errno)); - return false; - } - } + return false; /* Read line from file and remove new-line. Skip initial "#! /usr/bin/pspp" line. */ @@ -142,6 +133,9 @@ create_syntax_file_source (const char *fn) struct syntax_file_source *ss = xzalloc (sizeof (*ss)); ss->fn = xstrdup (fn); + ss->syntax_file = fn_open (ss->fn, "r"); + if (ss->syntax_file == NULL) + msg (ME, _("Opening `%s': %s."), ss->fn, strerror (errno)); ss->parent.interactive = always_false; ss->parent.read = read_syntax_file ; diff --git a/src/language/syntax-string-source.c b/src/language/syntax-string-source.c index 405141cd..4f3c1c14 100644 --- a/src/language/syntax-string-source.c +++ b/src/language/syntax-string-source.c @@ -1,5 +1,5 @@ /* PSPPIRE - a graphical interface for PSPP. - Copyright (C) 2007, 2009 Free Software Foundation, Inc. + Copyright (C) 2007, 2009, 2010 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -54,7 +54,7 @@ name (const struct getl_interface *i UNUSED) static int location (const struct getl_interface *i UNUSED) { - return -1; + return 0; } @@ -100,21 +100,13 @@ read_single_line (struct getl_interface *i, return true; } -struct getl_interface * -create_syntax_string_source (const char *format, ...) +static struct syntax_string_source * +create_syntax_string_source__ (void) { - va_list args; - struct syntax_string_source *sss = xzalloc (sizeof *sss); sss->posn = 0; - ds_init_empty (&sss->buffer); - - va_start (args, format); - ds_put_vformat (&sss->buffer, format, args); - va_end (args); - sss->parent.interactive = always_false; sss->parent.close = do_close; sss->parent.read = read_single_line; @@ -122,6 +114,30 @@ create_syntax_string_source (const char *format, ...) sss->parent.name = name; sss->parent.location = location; + return sss; +} + +struct getl_interface * +create_syntax_string_source (const char *s) +{ + struct syntax_string_source *sss = create_syntax_string_source__ (); + ds_init_cstr (&sss->buffer, s); + return &sss->parent; +} + +struct getl_interface * +create_syntax_format_source (const char *format, ...) +{ + struct syntax_string_source *sss; + va_list args; + + sss = create_syntax_string_source__ (); + + ds_init_empty (&sss->buffer); + + va_start (args, format); + ds_put_vformat (&sss->buffer, format, args); + va_end (args); return &sss->parent; } diff --git a/src/language/syntax-string-source.h b/src/language/syntax-string-source.h index 42d1f4e9..d2e1a9ba 100644 --- a/src/language/syntax-string-source.h +++ b/src/language/syntax-string-source.h @@ -1,5 +1,5 @@ /* PSPPIRE - a graphical interface for PSPP. - Copyright (C) 2007 Free Software Foundation, Inc. + Copyright (C) 2007, 2010 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -17,11 +17,15 @@ #ifndef SYNTAX_STRING_SOURCE_H #define SYNTAX_STRING_SOURCE_H +#include "libpspp/compiler.h" + struct getl_interface; struct syntax_string_source; -struct getl_interface * create_syntax_string_source (const char *fmt, ...); +struct getl_interface *create_syntax_string_source (const char *); +struct getl_interface *create_syntax_format_source (const char *, ...) + PRINTF_FORMAT (1, 2); const char * syntax_string_source_get_syntax (const struct syntax_string_source *s); diff --git a/src/language/tests/float-format.c b/src/language/tests/float-format.c index fed19479..b2d5a166 100644 --- a/src/language/tests/float-format.c +++ b/src/language/tests/float-format.c @@ -136,7 +136,7 @@ parse_fp (struct lexer *lexer, struct fp *fp) msg (SE, _("Hexadecimal floating constant too long.")); return false; } - strncpy ((char *) fp->data, ds_cstr (lex_tokstr (lexer)), sizeof fp->data); + strncpy (CHAR_CAST_BUG (char *,fp->data), ds_cstr (lex_tokstr (lexer)), sizeof fp->data); } lex_get (lexer); diff --git a/src/language/tests/format-guesser-test.c b/src/language/tests/format-guesser-test.c index 72808015..6285fc04 100644 --- a/src/language/tests/format-guesser-test.c +++ b/src/language/tests/format-guesser-test.c @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 2008 Free Software Foundation, Inc. + Copyright (C) 2008, 2010 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -33,7 +33,7 @@ cmd_debug_format_guesser (struct lexer *lexer, struct dataset *ds UNUSED) char format_string[FMT_STRING_LEN_MAX + 1]; g = fmt_guesser_create (); - while (lex_token (lexer) == T_STRING) + while (lex_is_string (lexer)) { fprintf (stderr, "\"%s\" ", ds_cstr (lex_tokstr (lexer))); fmt_guesser_add (g, ds_ss (lex_tokstr (lexer))); diff --git a/src/language/utilities/automake.mk b/src/language/utilities/automake.mk index c4ca92b0..3a3e16d5 100644 --- a/src/language/utilities/automake.mk +++ b/src/language/utilities/automake.mk @@ -8,6 +8,7 @@ language_utilities_sources = \ src/language/utilities/cd.c \ src/language/utilities/date.c \ src/language/utilities/echo.c \ + src/language/utilities/host.c \ src/language/utilities/title.c \ src/language/utilities/include.c \ src/language/utilities/permissions.c diff --git a/src/language/utilities/echo.c b/src/language/utilities/echo.c index ebd6a990..b27b4001 100644 --- a/src/language/utilities/echo.c +++ b/src/language/utilities/echo.c @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 2005, 2009 Free Software Foundation, Inc. + Copyright (C) 2005, 2009, 2010 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -29,7 +29,7 @@ cmd_echo (struct lexer *lexer, struct dataset *ds UNUSED) { struct tab_table *tab; - if (lex_token (lexer) != T_STRING) + if (!lex_force_string (lexer)) return CMD_FAILURE; tab = tab_create(1, 1); diff --git a/src/language/utilities/host.c b/src/language/utilities/host.c new file mode 100644 index 00000000..ac091454 --- /dev/null +++ b/src/language/utilities/host.c @@ -0,0 +1,167 @@ +/* PSPP - a program for statistical analysis. + Copyright (C) 1997-9, 2000, 2009, 2010 Free Software Foundation, Inc. + + This program is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program. If not, see . */ + +#include + +#include +#include +#include +#include +#include +#if HAVE_SYS_WAIT_H +#include +#endif + +#include "data/settings.h" +#include "language/command.h" +#include "language/lexer/lexer.h" +#include "libpspp/assertion.h" +#include "libpspp/compiler.h" +#include "libpspp/message.h" +#include "libpspp/str.h" + +#include "gl/xalloc.h" +#include "gl/xmalloca.h" + +#include "gettext.h" +#define _(msgid) gettext (msgid) +#define N_(msgid) msgid + +#if HAVE_FORK && HAVE_EXECL +/* Spawn an interactive shell process. */ +static bool +shell (void) +{ + int pid; + + pid = fork (); + switch (pid) + { + case 0: + { + const char *shell_fn; + char *shell_process; + + { + int i; + + for (i = 3; i < 20; i++) + close (i); + } + + shell_fn = getenv ("SHELL"); + if (shell_fn == NULL) + shell_fn = "/bin/sh"; + + { + const char *cp = strrchr (shell_fn, '/'); + cp = cp ? &cp[1] : shell_fn; + shell_process = xmalloca (strlen (cp) + 8); + strcpy (shell_process, "-"); + strcat (shell_process, cp); + if (strcmp (cp, "sh")) + shell_process[0] = '+'; + } + + execl (shell_fn, shell_process, NULL); + + _exit (1); + } + + case -1: + msg (SE, _("Couldn't fork: %s."), strerror (errno)); + return false; + + default: + assert (pid > 0); + while (wait (NULL) != pid) + ; + return true; + } +} +#else /* !(HAVE_FORK && HAVE_EXECL) */ +/* Don't know how to spawn an interactive shell. */ +static bool +shell (void) +{ + msg (SE, _("Interactive shell not supported on this platform.")); + return false; +} +#endif + +/* Executes the specified COMMAND in a subshell. Returns true if + successful, false otherwise. */ +static bool +run_command (const char *command) +{ + if (system (NULL) == 0) + { + msg (SE, _("Command shell not supported on this platform.")); + return false; + } + + /* Execute the command. */ + if (system (command) == -1) + msg (SE, _("Error executing command: %s."), strerror (errno)); + + return true; +} + +int +cmd_host (struct lexer *lexer, struct dataset *ds UNUSED) +{ + if (settings_get_safer_mode ()) + { + msg (SE, _("This command not allowed when the SAFER option is set.")); + return CMD_FAILURE; + } + + if (lex_token (lexer) == '.') + return shell () ? CMD_SUCCESS : CMD_FAILURE; + else if (lex_match_id (lexer, "COMMAND")) + { + struct string command; + bool ok; + + lex_match (lexer, '='); + if (!lex_force_match (lexer, '[')) + return CMD_FAILURE; + + ds_init_empty (&command); + while (lex_is_string (lexer)) + { + if (!ds_is_empty (&command)) + ds_put_char (&command, '\n'); + ds_put_substring (&command, ds_ss (lex_tokstr (lexer))); + lex_get (lexer); + } + if (!lex_force_match (lexer, ']')) + { + ds_destroy (&command); + return CMD_FAILURE; + } + + ok = run_command (ds_cstr (&command)); + ds_destroy (&command); + + return ok ? lex_end_of_command (lexer) : CMD_FAILURE; + } + else + { + lex_error (lexer, NULL); + return CMD_FAILURE; + } +} diff --git a/src/language/utilities/include.c b/src/language/utilities/include.c index ceb78771..52d0e09c 100644 --- a/src/language/utilities/include.c +++ b/src/language/utilities/include.c @@ -91,8 +91,8 @@ cmd_insert (struct lexer *lexer, struct dataset *ds UNUSED) syntax_mode = GETL_BATCH; else { - lex_error(lexer, - _("Expecting BATCH or INTERACTIVE after SYNTAX.")); + lex_error (lexer, _("expecting %s or %s after %s"), + "BATCH", "INTERACTIVE", "SYNTAX"); return CMD_FAILURE; } } @@ -109,7 +109,8 @@ cmd_insert (struct lexer *lexer, struct dataset *ds UNUSED) } else { - lex_error (lexer, _("Expecting YES or NO after CD.")); + lex_error (lexer, _("expecting %s or %s after %s"), + "YES", "NO", "CD"); return CMD_FAILURE; } } @@ -126,7 +127,8 @@ cmd_insert (struct lexer *lexer, struct dataset *ds UNUSED) } else { - lex_error (lexer, _("Expecting CONTINUE or STOP after ERROR.")); + lex_error (lexer, _("expecting %s or %s after %s"), + "CONTINUE", "STOP", "ERROR"); return CMD_FAILURE; } } @@ -176,7 +178,7 @@ parse_insert (struct lexer *lexer, char **filename) lex_match (lexer, '='); /* File name can be identifier or string. */ - if (lex_token (lexer) != T_ID && lex_token (lexer) != T_STRING) + if (lex_token (lexer) != T_ID && !lex_is_string (lexer)) { lex_error (lexer, _("expecting file name")); return CMD_FAILURE; diff --git a/src/language/utilities/permissions.c b/src/language/utilities/permissions.c index 03458fce..967b1bd2 100644 --- a/src/language/utilities/permissions.c +++ b/src/language/utilities/permissions.c @@ -47,6 +47,9 @@ cmd_permissions (struct lexer *lexer, struct dataset *ds UNUSED) if (lex_match_id (lexer, "FILE")) lex_match (lexer, '='); + if (!lex_force_string (lexer)) + return CMD_FAILURE; + fn = ds_xstrdup (lex_tokstr (lexer)); lex_force_match (lexer, T_STRING); diff --git a/src/language/utilities/set.q b/src/language/utilities/set.q index 3c0109cc..79fe9216 100644 --- a/src/language/utilities/set.q +++ b/src/language/utilities/set.q @@ -509,7 +509,7 @@ stc_custom_journal (struct lexer *lexer, struct dataset *ds UNUSED, struct cmd_s journal_enable (); else if (lex_match_id (lexer, "OFF") || lex_match_id (lexer, "NO")) journal_disable (); - else if (lex_token (lexer) == T_STRING || lex_token (lexer) == T_ID) + else if (lex_is_string (lexer) || lex_token (lexer) == T_ID) { journal_set_file_name (ds_cstr (lex_tokstr (lexer))); lex_get (lexer); @@ -618,13 +618,13 @@ show_cce (const struct dataset *ds UNUSED) static char * show_decimals (const struct dataset *ds UNUSED) { - return xasprintf ("\"%c\"", settings_get_decimal_char (FMT_F)); + return xasprintf ("`%c'", settings_get_decimal_char (FMT_F)); } static char * show_endcmd (const struct dataset *ds UNUSED) { - return xasprintf ("\"%c\"", settings_get_endcmd ()); + return xasprintf ("`%c'", settings_get_endcmd ()); } static char * @@ -923,6 +923,45 @@ cmd_show (struct lexer *lexer, struct dataset *ds) return CMD_SUCCESS; } + +#define MAX_SAVED_SETTINGS 5 + +static struct settings *saved_settings[MAX_SAVED_SETTINGS]; +static int n_saved_settings; + +int +cmd_preserve (struct lexer *lexer, struct dataset *ds UNUSED) +{ + if (n_saved_settings < MAX_SAVED_SETTINGS) + { + saved_settings[n_saved_settings++] = settings_get (); + return lex_end_of_command (lexer); + } + else + { + msg (SE, _("Too many PRESERVE commands without a RESTORE: at most " + "%d levels of saved settings are allowed."), + MAX_SAVED_SETTINGS); + return CMD_CASCADING_FAILURE; + } +} + +int +cmd_restore (struct lexer *lexer, struct dataset *ds UNUSED) +{ + if (n_saved_settings > 0) + { + struct settings *s = saved_settings[--n_saved_settings]; + settings_set (s); + settings_destroy (s); + return lex_end_of_command (lexer); + } + else + { + msg (SE, _("RESTORE without matching PRESERVE.")); + return CMD_FAILURE; + } +} /* Local Variables: diff --git a/src/language/xforms/compute.c b/src/language/xforms/compute.c index 09fc2155..a508933c 100644 --- a/src/language/xforms/compute.c +++ b/src/language/xforms/compute.c @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 1997-9, 2000, 2009 Free Software Foundation, Inc. + Copyright (C) 1997-9, 2000, 2009, 2010 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -173,10 +173,11 @@ compute_str (void *compute_, struct ccase **c, casenumber case_num) if (compute->test == NULL || expr_evaluate_num (compute->test, *c, case_num) == 1.0) { + char *s; + *c = case_unshare (*c); - expr_evaluate_str (compute->rvalue, *c, case_num, - case_str_rw (*c, compute->variable), - compute->width); + s = CHAR_CAST_BUG (char *, case_str_rw (*c, compute->variable)); + expr_evaluate_str (compute->rvalue, *c, case_num, s, compute->width); } return TRNS_CONTINUE; @@ -216,7 +217,8 @@ compute_str_vec (void *compute_, struct ccase **c, casenumber case_num) vr = vector_get_var (compute->vector, rindx - 1); *c = case_unshare (*c); expr_evaluate_str (compute->rvalue, *c, case_num, - case_str_rw (*c, vr), var_get_width (vr)); + CHAR_CAST_BUG (char *, case_str_rw (*c, vr)), + var_get_width (vr)); } return TRNS_CONTINUE; diff --git a/src/language/xforms/recode.c b/src/language/xforms/recode.c index 62b03ba0..5cfad0ed 100644 --- a/src/language/xforms/recode.c +++ b/src/language/xforms/recode.c @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 1997-9, 2000, 2009 Free Software Foundation, Inc. + Copyright (C) 1997-9, 2000, 2009, 2010 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -20,24 +20,25 @@ #include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "xalloc.h" +#include "data/case.h" +#include "data/data-in.h" +#include "data/dictionary.h" +#include "data/format.h" +#include "data/procedure.h" +#include "data/transformations.h" +#include "data/variable.h" +#include "language/command.h" +#include "language/lexer/lexer.h" +#include "language/lexer/value-parser.h" +#include "language/lexer/variable-parser.h" +#include "libpspp/assertion.h" +#include "libpspp/cast.h" +#include "libpspp/compiler.h" +#include "libpspp/message.h" +#include "libpspp/pool.h" +#include "libpspp/str.h" + +#include "gl/xalloc.h" #include "gettext.h" #define _(msgid) gettext (msgid) @@ -158,6 +159,7 @@ cmd_recode (struct lexer *lexer, struct dataset *ds) /* Create destination variables, if needed. This must be the final step; otherwise we'd have to delete destination variables on failure. */ + trns->dst_dict = dataset_dict (ds); if (trns->src_vars != trns->dst_vars) create_dst_vars (trns, dataset_dict (ds)); @@ -373,7 +375,8 @@ set_map_in_str (struct map_in *in, struct pool *pool, in->type = MAP_SINGLE; value_init_pool (pool, &in->x, width); value_copy_buf_rpad (&in->x, width, - ds_data (string), ds_length (string), ' '); + CHAR_CAST_BUG (uint8_t *, ds_data (string)), + ds_length (string), ' '); } /* Parses a mapping output value into OUT, allocating memory from @@ -388,7 +391,7 @@ parse_map_out (struct lexer *lexer, struct pool *pool, struct map_out *out) } else if (lex_match_id (lexer, "SYSMIS")) set_map_out_num (out, SYSMIS); - else if (lex_token (lexer) == T_STRING) + else if (lex_is_string (lexer)) { set_map_out_str (out, pool, lex_tokstr (lexer)); lex_get (lexer); @@ -543,8 +546,6 @@ create_dst_vars (struct recode_trns *trns, struct dictionary *dict) { size_t i; - trns->dst_dict = dict; - for (i = 0; i < trns->var_cnt; i++) { const struct variable **var = &trns->dst_vars[i]; @@ -606,8 +607,9 @@ static const struct map_out * find_src_string (struct recode_trns *trns, const uint8_t *value, const struct variable *src_var) { - struct mapping *m; + const char *encoding = dict_get_encoding (trns->dst_dict); int width = var_get_width (src_var); + struct mapping *m; for (m = trns->mappings; m < trns->mappings + trns->map_cnt; m++) { @@ -627,11 +629,13 @@ find_src_string (struct recode_trns *trns, const uint8_t *value, case MAP_CONVERT: { union value uv; + char *error; + + error = data_in (ss_buffer (CHAR_CAST_BUG (char *, value), width), + LEGACY_NATIVE, FMT_F, &uv, 0, encoding); + match = error == NULL; + free (error); - msg_disable (); - match = data_in (ss_buffer (value, width), LEGACY_NATIVE, - FMT_F, 0, 0, 0, trns->dst_dict, &uv, 0); - msg_enable (); out->value.f = uv.f; break; } @@ -678,7 +682,7 @@ recode_trns_proc (void *trns_, struct ccase **c, casenumber case_idx UNUSED) } else { - char *dst = case_str_rw (*c, dst_var); + char *dst = CHAR_CAST_BUG (char *, case_str_rw (*c, dst_var)); if (out != NULL) { if (!out->copy_input) diff --git a/src/libpspp/cast.h b/src/libpspp/cast.h index 1e33857c..00e42d66 100644 --- a/src/libpspp/cast.h +++ b/src/libpspp/cast.h @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 2009 Free Software Foundation, Inc. + Copyright (C) 2009, 2010 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -18,6 +18,7 @@ #define LIBPSPP_CAST_H 1 #include +#include "gl/verify.h" /* Expands to a void expression that checks that POINTER is an expression whose type is a qualified or unqualified version of @@ -83,10 +84,39 @@ (CHECK_POINTER_HAS_TYPE (POINTER, TYPE), \ (TYPE) (POINTER)) +/* Casts POINTER to TYPE. Yields a compiler diagnostic if either TYPE or + POINTER is not a pointer to character type. + + PSPP uses "unsigned char" (actually uint8_t) in "union value" and "char" + elsewhere to emphasize that data in union value usually requires reencoding + when transferred to and from other string types. These macros suppress the + warning when implicitly converting between pointers to different character + types, so their use normally marks a bug that should eventually be fixed. + However, until these bugs are fixed, suppressing the warnings is much less + annoying. + + Use CHAR_CAST_BUG if you think there is a bug to be fixed, or if you have + not yet carefully examined the situation, or if you are not sure. + Use CHAR_CAST if you are convinced that this is actually a correct cast. */ +#define CHAR_CAST(TYPE, POINTER) \ + ((void) verify_true (sizeof (*(POINTER)) == 1), \ + (void) (sizeof (*(POINTER) + 1)), \ + (void) verify_true (sizeof (*(TYPE) NULL) == 1), \ + (void) (sizeof (*(TYPE) NULL + 1)), \ + (TYPE) (POINTER)) +#define CHAR_CAST_BUG(TYPE, POINTER) CHAR_CAST(TYPE, POINTER) + /* Given POINTER, a pointer to the given MEMBER within structure STRUCT, returns the address of the STRUCT. */ #define UP_CAST(POINTER, STRUCT, MEMBER) \ (CHECK_POINTER_COMPATIBILITY (&((STRUCT *) 0)->MEMBER, POINTER), \ (STRUCT *) ((char *) (POINTER) - offsetof (STRUCT, MEMBER))) +/* A null pointer constant suitable for use in a varargs parameter list. + + This is useful because a literal 0 may not have the same width as a null + pointer. NULL by itself is also insufficient because in C it may expand to + simply 0. */ +#define NULL_SENTINEL ((void *) NULL) + #endif /* libpspp/cast.h */ diff --git a/src/libpspp/getl.c b/src/libpspp/getl.c index 43d2a56f..9db6c3ae 100644 --- a/src/libpspp/getl.c +++ b/src/libpspp/getl.c @@ -212,18 +212,18 @@ getl_source_name (const struct source_stream *ss) return s->interface->name (s->interface); } -/* Returns the location within the current source, or -1 if there is - no current source */ +/* Returns the line number within the current source, or 0 if there is no + current source. */ int getl_source_location (const struct source_stream *ss) { const struct getl_source *s = current_source (ss); if ( ll_is_empty (&ss->sources) ) - return -1; + return 0; if ( !s->interface->location ) - return -1; + return 0; return s->interface->location (s->interface); } diff --git a/src/libpspp/hash.c b/src/libpspp/hash.c index eb43b54e..9101d1f1 100644 --- a/src/libpspp/hash.c +++ b/src/libpspp/hash.c @@ -542,7 +542,7 @@ hsh_dump (struct hsh_table *h) void **entry = h->entries; int i; - printf (_("hash table:")); + printf ("hash table:"); for (i = 0; i < h->size; i++) printf (" %p", *entry++); printf ("\n"); diff --git a/src/libpspp/i18n.c b/src/libpspp/i18n.c index 02aefb5b..49346171 100644 --- a/src/libpspp/i18n.c +++ b/src/libpspp/i18n.c @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 2006, 2009 Free Software Foundation, Inc. + Copyright (C) 2006, 2009, 2010 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -15,31 +15,30 @@ along with this program. If not, see . */ #include -#include + +#include "libpspp/i18n.h" + #include +#include +#include +#include +#include #include -#include #include +#include #include -#include -#include -#include -#include -#include "assertion.h" -#include "hmapx.h" -#include "hash-functions.h" -#include "pool.h" - -#include "i18n.h" -#include "version.h" +#include "libpspp/assertion.h" +#include "libpspp/hmapx.h" +#include "libpspp/hash-functions.h" +#include "libpspp/pool.h" +#include "libpspp/str.h" +#include "libpspp/version.h" -#include -#include "xstrndup.h" - -#if HAVE_NL_LANGINFO -#include -#endif +#include "gl/localcharset.h" +#include "gl/xalloc.h" +#include "gl/relocatable.h" +#include "gl/xstrndup.h" struct converter { @@ -79,7 +78,7 @@ create_iconv (const char* tocode, const char* fromcode) const int err = errno; fprintf (stderr, "Warning: " - "cannot create a converter for \"%s\" to \"%s\": %s\n", + "cannot create a converter for `%s' to `%s': %s\n", fromcode, tocode, strerror (err)); } @@ -87,8 +86,9 @@ create_iconv (const char* tocode, const char* fromcode) } -/* Similar to recode_string_pool, but allocates the returned value on the heap instead of - in a pool. It is the caller's responsibility to free the returned value. */ +/* Similar to recode_string_pool, but allocates the returned value on the heap + instead of in a pool. It is the caller's responsibility to free the + returned value. */ char * recode_string (const char *to, const char *from, const char *text, int length) @@ -97,117 +97,135 @@ recode_string (const char *to, const char *from, } -/* -Converts the string TEXT, which should be encoded in FROM-encoding, to a -dynamically allocated string in TO-encoding. Any characters which cannot -be converted will be represented by '?'. +/* Uses CONV to convert the INBYTES starting at IP into the OUTBYTES starting + at OP, and appends a null terminator to the output. + + Returns the output length if successful, -1 if the output buffer is too + small. */ +static ssize_t +try_recode (iconv_t conv, + const char *ip, size_t inbytes, + char *op_, size_t outbytes) +{ + /* FIXME: Need to ensure that this char is valid in the target encoding */ + const char fallbackchar = '?'; + char *op = op_; -LENGTH should be the length of the string or -1, if null terminated. + /* Put the converter into the initial shift state, in case there was any + state information left over from its last usage. */ + iconv (conv, NULL, 0, NULL, 0); -The returned string will be allocated on POOL. + while (iconv (conv, (ICONV_CONST char **) &ip, &inbytes, + &op, &outbytes) == -1) + switch (errno) + { + case EINVAL: + if (outbytes < 2) + return -1; + *op++ = fallbackchar; + *op = '\0'; + return op - op_; + + case EILSEQ: + if (outbytes == 0) + return -1; + *op++ = fallbackchar; + outbytes--; + ip++; + inbytes--; + break; + + case E2BIG: + return -1; + + default: + /* should never happen */ + fprintf (stderr, "Character conversion error: %s\n", strerror (errno)); + NOT_REACHED (); + break; + } -This function's behaviour differs from that of g_convert_with_fallback provided -by GLib. The GLib function will fail (returns NULL) if any part of the input -string is not valid in the declared input encoding. This function however perseveres -even in the presence of badly encoded input. -*/ + if (outbytes == 0) + return -1; + + *op = '\0'; + return op - op_; +} + +/* Converts the string TEXT, which should be encoded in FROM-encoding, to a + dynamically allocated string in TO-encoding. Any characters which cannot be + converted will be represented by '?'. + + LENGTH should be the length of the string or -1, if null terminated. + + The returned string will be allocated on POOL. + + This function's behaviour differs from that of g_convert_with_fallback + provided by GLib. The GLib function will fail (returns NULL) if any part of + the input string is not valid in the declared input encoding. This function + however perseveres even in the presence of badly encoded input. */ char * recode_string_pool (const char *to, const char *from, - const char *text, int length, struct pool *pool) + const char *text, int length, struct pool *pool) { - char *outbuf = 0; - size_t outbufferlength; - size_t result; - char *op ; - size_t inbytes = 0; - size_t outbytes ; - iconv_t conv ; - - /* FIXME: Need to ensure that this char is valid in the target encoding */ - const char fallbackchar = '?'; + struct substring out; if ( text == NULL ) return NULL; if ( length == -1 ) - length = strlen(text); + length = strlen (text); - if (to == NULL) - to = default_encoding; + out = recode_substring_pool (to, from, ss_buffer (text, length), pool); + return out.string; +} - if (from == NULL) - from = default_encoding; +/* Converts the string TEXT, which should be encoded in FROM-encoding, to a + dynamically allocated string in TO-encoding. Any characters which cannot be + converted will be represented by '?'. - for ( outbufferlength = 1 ; outbufferlength != 0; outbufferlength <<= 1 ) - if ( outbufferlength > length) - break; + The returned string will be null-terminated and allocated on POOL. - outbuf = pool_malloc (pool, outbufferlength); - op = outbuf; + This function's behaviour differs from that of g_convert_with_fallback + provided by GLib. The GLib function will fail (returns NULL) if any part of + the input string is not valid in the declared input encoding. This function + however perseveres even in the presence of badly encoded input. */ +struct substring +recode_substring_pool (const char *to, const char *from, + struct substring text, struct pool *pool) +{ + size_t outbufferlength; + iconv_t conv ; - outbytes = outbufferlength; - inbytes = length; + if (to == NULL) + to = default_encoding; + if (from == NULL) + from = default_encoding; conv = create_iconv (to, from); if ( (iconv_t) -1 == conv ) - return xstrdup (text); - - do { - const char *ip = text; - result = iconv (conv, (ICONV_CONST char **) &text, &inbytes, - &op, &outbytes); - - if ( -1 == result ) - { - int the_error = errno; - - switch (the_error) - { - case EILSEQ: - case EINVAL: - if ( outbytes > 0 ) - { - *op++ = fallbackchar; - outbytes--; - text++; - inbytes--; - break; - } - /* Fall through */ - case E2BIG: - pool_free (pool, outbuf); - outbufferlength <<= 1; - outbuf = pool_malloc (pool, outbufferlength); - op = outbuf; - outbytes = outbufferlength; - inbytes = length; - text = ip; - break; - default: - /* should never happen */ - fprintf (stderr, "Character conversion error: %s\n", strerror (the_error)); - NOT_REACHED (); - break; - } - } - } while ( -1 == result ); - - if (outbytes == 0 ) { - char *const oldaddr = outbuf; - outbuf = pool_realloc (pool, outbuf, outbufferlength + 1); - - op += (outbuf - oldaddr) ; + struct substring out; + ss_alloc_substring (&out, text); + return out; } - *op = '\0'; + for ( outbufferlength = 1 ; outbufferlength != 0; outbufferlength <<= 1 ) + if ( outbufferlength > text.length) + { + char *output = pool_malloc (pool, outbufferlength); + ssize_t output_len = try_recode (conv, text.string, text.length, + output, outbufferlength); + if (output_len >= 0) + return ss_buffer (output, output_len); + pool_free (pool, output); + } - return outbuf; + NOT_REACHED (); } - void i18n_init (void) { @@ -311,7 +329,7 @@ i18n_done (void) bool valid_encoding (const char *enc) { - iconv_t conv = iconv_open ("UTF8", enc); + iconv_t conv = iconv_open (UTF8, enc); if ( conv == (iconv_t) -1) return false; diff --git a/src/libpspp/i18n.h b/src/libpspp/i18n.h index e2663a02..37bd9440 100644 --- a/src/libpspp/i18n.h +++ b/src/libpspp/i18n.h @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 2006 Free Software Foundation, Inc. + Copyright (C) 2006, 2010 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -26,36 +26,15 @@ void i18n_init (void); struct pool; - -/* -Converts the string TEXT, which should be encoded in FROM-encoding, to a -dynamically allocated string in TO-encoding. Any characters which cannot -be converted will be represented by '?'. - -LENGTH should be the length of the string or -1, if null terminated. - -The returned string will be allocated on POOL. - -This function's behaviour differs from that of g_convert_with_fallback provided -by GLib. The GLib function will fail (returns NULL) if any part of the input -string is not valid in the declared input encoding. This function however perseveres -even in the presence of badly encoded input. -*/ -char *recode_string_pool (const char *to, const char *from, - const char *text, int length, struct pool *pool); - - - -/* Similar to recode_string_pool, but allocates the returned value on the heap instead of - in a pool. It is the caller's responsibility to free the returned value. */ char *recode_string (const char *to, const char *from, - const char *text, int len); - + const char *text, int len); +char *recode_string_pool (const char *to, const char *from, + const char *text, int length, struct pool *); +struct substring recode_substring_pool (const char *to, const char *from, + struct substring text, struct pool *); bool valid_encoding (const char *enc); -/* Return the decimal separator according to the - system locale */ char get_system_decimal (void); const char * get_default_encoding (void); diff --git a/src/libpspp/message.c b/src/libpspp/message.c index 4ba8a8f7..ed6d6e7a 100644 --- a/src/libpspp/message.c +++ b/src/libpspp/message.c @@ -57,6 +57,10 @@ msg (enum msg_class class, const char *format, ...) m.severity = msg_class_to_severity (class); va_start (args, format); m.text = xvasprintf (format, args); + m.where.file_name = NULL; + m.where.line_number = 0; + m.where.first_column = 0; + m.where.last_column = 0; va_end (args); msg_emit (&m); @@ -114,13 +118,25 @@ msg_to_string (const struct msg *m, const char *command_name) ds_init_empty (&s); if (m->category != MSG_C_GENERAL - && (m->where.file_name || m->where.line_number != -1)) + && (m->where.file_name + || m->where.line_number > 0 + || m->where.first_column > 0)) { if (m->where.file_name) - ds_put_format (&s, "%s:", m->where.file_name); - if (m->where.line_number != -1) - ds_put_format (&s, "%d:", m->where.line_number); - ds_put_char (&s, ' '); + ds_put_format (&s, "%s", m->where.file_name); + if (m->where.line_number > 0) + { + if (!ds_is_empty (&s)) + ds_put_char (&s, ':'); + ds_put_format (&s, "%d", m->where.line_number); + } + if (m->where.first_column > 0) + { + ds_put_format (&s, ".%d", m->where.first_column); + if (m->where.last_column > m->where.first_column + 1) + ds_put_format (&s, "-%d", m->where.last_column - 1); + } + ds_put_cstr (&s, ": "); } switch (m->severity) @@ -199,7 +215,9 @@ submit_note (char *s) m.category = MSG_C_GENERAL; m.severity = MSG_S_NOTE; m.where.file_name = NULL; - m.where.line_number = -1; + m.where.line_number = 0; + m.where.first_column = 0; + m.where.last_column = 0; m.text = s; msg_handler (&m); free (s); @@ -253,12 +271,18 @@ process_msg (const struct msg *m) void msg_emit (struct msg *m) { - if ( s_stream ) - get_msg_location (s_stream, &m->where); + if ( s_stream && m->where.file_name == NULL ) + { + struct msg_locator loc; + + get_msg_location (s_stream, &loc); + m->where.file_name = loc.file_name; + m->where.line_number = loc.line_number; + } else { m->where.file_name = NULL; - m->where.line_number = -1; + m->where.line_number = 0; } if (!messages_disabled) @@ -288,7 +312,7 @@ msg_enable (void) /* Private functions. */ void -request_bug_report_and_abort (const char *msg) +request_bug_report (const char *msg) { fprintf (stderr, "******************************************************\n"); fprintf (stderr, "You have discovered a bug in PSPP. Please report this\n"); @@ -310,7 +334,5 @@ request_bug_report_and_abort (const char *msg) #endif ); fprintf (stderr, "******************************************************\n"); - - _exit (EXIT_FAILURE); } diff --git a/src/libpspp/message.h b/src/libpspp/message.h index bdd27a5e..fad7816f 100644 --- a/src/libpspp/message.h +++ b/src/libpspp/message.h @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 1997-9, 2000, 2006 Free Software Foundation, Inc. + Copyright (C) 1997-9, 2000, 2006, 2010 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -70,8 +70,10 @@ msg_class_from_category_and_severity (enum msg_category category, /* A file location. */ struct msg_locator { - char *file_name; /* File name. */ - int line_number; /* Line number. */ + char *file_name; /* File name (NULL if none). */ + int line_number; /* Line number (0 if none). */ + int first_column; /* 1-based column number (0 if none). */ + int last_column; /* 1-based exclusive last column (0 if none). */ }; /* A message. */ @@ -115,7 +117,7 @@ void msg_ui_disable_warnings (bool); /* Used in panic situations only. */ -void request_bug_report_and_abort (const char *msg) NO_RETURN; +void request_bug_report (const char *msg); #endif /* message.h */ diff --git a/src/libpspp/model-checker.c b/src/libpspp/model-checker.c index 80198f82..940f89aa 100644 --- a/src/libpspp/model-checker.c +++ b/src/libpspp/model-checker.c @@ -707,7 +707,7 @@ mc_parser_option_callback (int id, void *mc_options_) mc_options_set_strategy (options, MC_RANDOM); else error (1, 0, - "strategy must be \"broad\", \"deep\", or \"random\""); + "strategy must be `broad', `deep', or `random'"); break; case OPT_MAX_DEPTH: @@ -756,8 +756,8 @@ mc_parser_option_callback (int id, void *mc_options_) else if (!strcmp (optarg, "random")) mc_options_set_queue_limit_strategy (options, MC_DROP_RANDOM); else - error (1, 0, "--queue-drop argument must be \"newest\", " - "\"oldest\", or \"random\""); + error (1, 0, "--queue-drop argument must be `newest' " + "`oldest' or `random'"); break; case OPT_SEED: diff --git a/src/libpspp/str.c b/src/libpspp/str.c index 71f54474..9f0cb6e3 100644 --- a/src/libpspp/str.c +++ b/src/libpspp/str.c @@ -30,6 +30,7 @@ #include #include "minmax.h" #include "xalloc.h" +#include "xmemdup0.h" #include "xsize.h" /* Reverses the order of NBYTES bytes at address P, thus converting @@ -379,14 +380,13 @@ ss_tail (struct substring ss, size_t cnt) return ss; } -/* Makes a malloc()'d copy of the contents of OLD +/* Makes a malloc()'d, null-terminated copy of the contents of OLD and stores it in NEW. */ void ss_alloc_substring (struct substring *new, struct substring old) { - new->string = xmalloc (old.length); + new->string = xmemdup0 (old.string, old.length); new->length = old.length; - memcpy (new->string, old.string, old.length); } /* Allocates room for a CNT-character string in NEW. */ @@ -1465,7 +1465,9 @@ ds_relocate (struct string *st) { ds_clear (st); ds_put_cstr (st, rel); - free ((char *) rel); + /* The documentation for relocate says that casting away const + and then freeing is appropriate ... */ + free (CONST_CAST (char *, rel)); } } diff --git a/src/math/categoricals.c b/src/math/categoricals.c index 5aba65b7..c8b337e4 100644 --- a/src/math/categoricals.c +++ b/src/math/categoricals.c @@ -26,6 +26,7 @@ #include #include #include +#include #include @@ -34,11 +35,13 @@ struct value_node struct hmap_node node; /* Node in hash map. */ union value value; /* The value being labeled. */ double cc; /* The total of the weights of cases with this value */ + + void *user_data; /* A pointer to data which the caller can store stuff */ + int subscript; /* A zero based integer, unique within the variable. Can be used as an index into an array */ }; - struct var_params { /* A map indexed by a union values */ @@ -59,6 +62,18 @@ struct var_params }; +/* Comparison function to sort the reverse_value_map in ascending order */ +static int +compare_value_node (const void *vn1_, const void *vn2_, const void *aux) +{ + const struct value_node * const *vn1 = vn1_; + const struct value_node * const *vn2 = vn2_; + const struct var_params *vp = aux; + + return value_compare_3way (&(*vn1)->value, &(*vn2)->value, var_get_width (vp->var)); +} + + struct categoricals { /* The weight variable */ @@ -84,6 +99,16 @@ struct categoricals /* Missing values to be excluded */ enum mv_class exclude; + + /* Function to be called on each update */ + update_func *update; + + /* Function specified by the caller to create user_data */ + user_data_create_func *user_data_create; + + /* Auxilliary data to be passed to update and user_data_create_func*/ + void *aux1; + void *aux2; }; @@ -152,7 +177,7 @@ categoricals_dump (const struct categoricals *cat) printf ("\nReverse variable map:\n"); - for (v = 0 ; v < cat->n_cats_total - cat->n_vars; ++v) + for (v = 0 ; v < cat->n_cats_total; ++v) printf ("%d ", cat->reverse_variable_map[v]); printf ("\n"); } @@ -179,10 +204,12 @@ lookup_value (const struct hmap *map, const struct variable *var, const union va } - struct categoricals * -categoricals_create (const struct variable **v, size_t n_vars, - const struct variable *wv, enum mv_class exclude) +categoricals_create (const struct variable *const *v, size_t n_vars, + const struct variable *wv, enum mv_class exclude, + user_data_create_func *udf, + update_func *update, void *aux1, void *aux2 + ) { size_t i; struct categoricals *cat = xmalloc (sizeof *cat); @@ -194,6 +221,12 @@ categoricals_create (const struct variable **v, size_t n_vars, cat->reverse_variable_map = NULL; cat->pool = pool_create (); cat->exclude = exclude; + cat->update = update; + cat->user_data_create = udf; + + cat->aux1 = aux1; + cat->aux2 = aux2; + cat->vp = pool_calloc (cat->pool, cat->n_vp, sizeof *cat->vp); @@ -246,10 +279,16 @@ categoricals_update (struct categoricals *cat, const struct ccase *c) cat->n_vars++; node->subscript = cat->vp[i].n_cats++ ; + + if (cat->user_data_create) + node->user_data = cat->user_data_create (cat->aux1, cat->aux2); } node->cc += weight; cat->vp[i].cc += weight; + + if (cat->update) + cat->update (node->user_data, cat->exclude, cat->wv, var, c, cat->aux1, cat->aux2); } } @@ -283,7 +322,7 @@ categoricals_done (struct categoricals *cat) int v; int idx = 0; cat->reverse_variable_map = pool_calloc (cat->pool, - cat->n_cats_total - cat->n_vars, + cat->n_cats_total, sizeof *cat->reverse_variable_map); for (v = 0 ; v < cat->n_vp; ++v) @@ -303,14 +342,18 @@ categoricals_done (struct categoricals *cat) vp->reverse_value_map[vn->subscript] = vn; } + /* For some purposes (eg CONTRASTS in ONEWAY) the values need to be sorted */ + sort (vp->reverse_value_map, vp->n_cats, sizeof (const struct value_node *), + compare_value_node, vp); + /* Populate the reverse variable map. - This implementation considers the first value of each categorical variable - as the basis. Therefore, this loop starts from 1 instead of 0 */ - for (i = 1; i < vp->n_cats; ++i) + */ + for (i = 0; i < vp->n_cats; ++i) cat->reverse_variable_map[idx++] = v; } assert (cat->n_vars <= cat->n_vp); + } @@ -319,7 +362,7 @@ reverse_variable_lookup (const struct categoricals *cat, int subscript) { assert (cat->reverse_variable_map); assert (subscript >= 0); - assert (subscript < cat->n_cats_total - cat->n_vars); + assert (subscript < cat->n_cats_total); return cat->reverse_variable_map[subscript]; } @@ -386,3 +429,15 @@ categoricals_get_n_variables (const struct categoricals *cat) { return cat->n_vars; } + + + +void * +categoricals_get_user_data_by_subscript (const struct categoricals *cat, int subscript) +{ + int vindex = reverse_variable_lookup (cat, subscript); + const struct var_params *vp = &cat->vp[vindex]; + + const struct value_node *vn = vp->reverse_value_map [subscript - vp->base_subscript]; + return vn->user_data; +} diff --git a/src/math/categoricals.h b/src/math/categoricals.h index 2f86ce1d..09ced7d7 100644 --- a/src/math/categoricals.h +++ b/src/math/categoricals.h @@ -27,8 +27,19 @@ struct ccase; union value ; -struct categoricals *categoricals_create (const struct variable **v, size_t n_vars, - const struct variable *wv, enum mv_class exclude); +typedef void update_func (void *user_data, + enum mv_class exclude, + const struct variable *wv, + const struct variable *catvar, + const struct ccase *c, + void *aux1, void *aux2); + +typedef void *user_data_create_func (void *aux1, void *aux2); + +struct categoricals *categoricals_create (const struct variable *const *v, size_t n_vars, + const struct variable *wv, enum mv_class exclude, + user_data_create_func *udf, + update_func *update, void *aux1, void *aux2); void categoricals_destroy (struct categoricals *); @@ -63,6 +74,8 @@ double categoricals_get_sum_by_subscript (const struct categoricals *cat, int su double categoricals_get_binary_by_subscript (const struct categoricals *cat, int subscript, const struct ccase *c); +void * categoricals_get_user_data_by_subscript (const struct categoricals *cat, int subscript); + diff --git a/src/math/covariance.c b/src/math/covariance.c index b5a4166d..aa7f4177 100644 --- a/src/math/covariance.c +++ b/src/math/covariance.c @@ -68,7 +68,7 @@ struct covariance { /* The variables for which the covariance matrix is to be calculated. */ size_t n_vars; - const struct variable **vars; + const struct variable *const *vars; /* Categorical variables. */ struct categoricals *categoricals; @@ -131,7 +131,7 @@ covariance_moments (const struct covariance *cov, int m) /* Create a covariance struct. */ struct covariance * -covariance_1pass_create (size_t n_vars, const struct variable **vars, +covariance_1pass_create (size_t n_vars, const struct variable *const *vars, const struct variable *weight, enum mv_class exclude) { size_t i; @@ -170,8 +170,8 @@ covariance_1pass_create (size_t n_vars, const struct variable **vars, until then. */ struct covariance * -covariance_2pass_create (size_t n_vars, const struct variable **vars, - size_t n_catvars, const struct variable **catvars, +covariance_2pass_create (size_t n_vars, const struct variable *const *vars, + struct categoricals *cats, const struct variable *wv, enum mv_class exclude) { size_t i; @@ -197,7 +197,7 @@ covariance_2pass_create (size_t n_vars, const struct variable **vars, cov->n_cm = -1; cov->cm = NULL; - cov->categoricals = categoricals_create (catvars, n_catvars, wv, exclude); + cov->categoricals = cats; return cov; } @@ -296,7 +296,8 @@ covariance_accumulate_pass1 (struct covariance *cov, const struct ccase *c) cov->state = 1; } - categoricals_update (cov->categoricals, c); + if (cov->categoricals) + categoricals_update (cov->categoricals, c); for (i = 0 ; i < cov->dim; ++i) { @@ -342,8 +343,11 @@ covariance_accumulate_pass2 (struct covariance *cov, const struct ccase *c) assert (cov->state == 1); cov->state = 2; - cov->dim = cov->n_vars + - categoricals_total (cov->categoricals) - categoricals_get_n_variables (cov->categoricals); + cov->dim = cov->n_vars; + + if (cov->categoricals) + cov->dim += categoricals_total (cov->categoricals) + - categoricals_get_n_variables (cov->categoricals); cov->n_cm = (cov->dim * (cov->dim - 1) ) / 2; cov->cm = xcalloc (sizeof *cov->cm, cov->n_cm); @@ -355,7 +359,8 @@ covariance_accumulate_pass2 (struct covariance *cov, const struct ccase *c) cov->moments[i] = resize_matrix (cov->moments[i], cov->dim); } - categoricals_done (cov->categoricals); + if (cov->categoricals) + categoricals_done (cov->categoricals); /* Populate the moments matrices with the categorical value elements */ for (i = cov->n_vars; i < cov->dim; ++i) @@ -698,6 +703,14 @@ covariance_calculate_unnormalized (struct covariance *cov) } } +/* Function to access the categoricals used by COV + The return value is owned by the COV +*/ +const struct categoricals * +covariance_get_categoricals (const struct covariance *cov) +{ + return cov->categoricals; +} /* Destroy the COV object */ diff --git a/src/math/covariance.h b/src/math/covariance.h index 3d29dcea..cb83e151 100644 --- a/src/math/covariance.h +++ b/src/math/covariance.h @@ -26,13 +26,14 @@ struct covariance; struct variable; struct ccase ; +struct categoricals; -struct covariance * covariance_1pass_create (size_t n_vars, const struct variable **vars, +struct covariance * covariance_1pass_create (size_t n_vars, const struct variable *const *vars, const struct variable *wv, enum mv_class excl); struct covariance * -covariance_2pass_create (size_t n_vars, const struct variable **vars, - size_t n_catvars, const struct variable **catvars, +covariance_2pass_create (size_t n_vars, const struct variable *const *vars, + struct categoricals *cats, const struct variable *wv, enum mv_class excl); void covariance_accumulate (struct covariance *, const struct ccase *); @@ -46,4 +47,6 @@ void covariance_destroy (struct covariance *cov); const gsl_matrix *covariance_moments (const struct covariance *cov, int m); +const struct categoricals * covariance_get_categoricals (const struct covariance *cov); + #endif diff --git a/src/math/histogram.c b/src/math/histogram.c index 3c88c385..0c641b56 100644 --- a/src/math/histogram.c +++ b/src/math/histogram.c @@ -65,7 +65,7 @@ histogram_create (int bins, double min, double max) int n = ceil (max / (bin_width_2) ) ; - assert (max > min); + assert (max >= min); if ( ! (n % 2 ) ) n++; upper_limit = n * bin_width_2; diff --git a/src/math/levene.c b/src/math/levene.c index 5ff474dc..b92441b3 100644 --- a/src/math/levene.c +++ b/src/math/levene.c @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 2004, 2009, 2010 Free Software Foundation, Inc. + Copyright (C) 2010 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -15,307 +15,168 @@ along with this program. If not, see . */ #include + #include "levene.h" -#include -#include -#include -#include -#include "group-proc.h" -#include -#include -#include -#include -#include -#include "group.h" #include -#include - -#include "xalloc.h" - - -/* This module calculates the Levene statistic for variables. - - Just for reference, the Levene Statistic is a defines as follows: - - W = \frac{ (n-k)\sum_{i=1}^k n_i(Z_{iL} - Z_{LL})^2} - { (k-1)\sum_{i=1}^k \sum_{j=1}^{n_i} (Z_{ij} - Z_{iL})^2} - - where: - k is the number of groups - n is the total number of samples - n_i is the number of samples in the ith group - Z_{ij} is | Y_{ij} - Y_{iL} | where Y_{iL} is the mean of the ith group - Z_{iL} is the mean of Z_{ij} over the ith group - Z_{LL} is the grand mean of Z_{ij} - - Imagine calculating that with pencil and paper! - */ - - -struct levene_info -{ - - /* Per group statistics */ - struct t_test_proc **group_stats; - - /* The independent variable */ - const struct variable *v_indep; - - /* Number of dependent variables */ - size_t n_dep; - - /* The dependent variables */ - const struct variable **v_dep; - - /* Filter for missing values */ - enum mv_class exclude; +#include - /* An array of lz_stats for each variable */ - struct lz_stats *lz; +#include +#include +#include - /* The denominator for the expression for the Levene */ - double *lz_denominator; -}; +#include -/* Per variable statistics */ -struct lz_stats +struct lev { - /* Total of all lz */ - double grand_total; - - /* Mean of all lz */ - double grand_mean; + struct hmap_node node; + union value group; + int width; - /* The total number of cases */ - double total_n ; - - /* Number of groups */ - int n_groups; + double t_bar; + double z_mean; + double n; }; -/* First pass */ -static void levene_precalc (const struct levene_info *l); -static int levene_calc (const struct dictionary *dict, const struct ccase *, - const struct levene_info *l); -static void levene_postcalc (struct levene_info *); - - -/* Second pass */ -static void levene2_precalc (struct levene_info *l); -static int levene2_calc (const struct dictionary *, const struct ccase *, - struct levene_info *l); -static void levene2_postcalc (struct levene_info *); - -void -levene(const struct dictionary *dict, - struct casereader *reader, - const struct variable *v_indep, size_t n_dep, - const struct variable **v_dep, - enum mv_class exclude) -{ - struct casereader *pass1, *pass2; - struct ccase *c; - struct levene_info l; - - l.n_dep = n_dep; - l.v_indep = v_indep; - l.v_dep = v_dep; - l.exclude = exclude; - l.lz = xnmalloc (l.n_dep, sizeof *l.lz); - l.lz_denominator = xnmalloc (l.n_dep, sizeof *l.lz_denominator); - - casereader_split (reader, &pass1, &pass2); - - levene_precalc (&l); - for (; (c = casereader_read (pass1)) != NULL; case_unref (c)) - levene_calc (dict, c, &l); - casereader_destroy (pass1); - levene_postcalc (&l); - - levene2_precalc(&l); - for (; (c = casereader_read (pass2)) != NULL; case_unref (c)) - levene2_calc (dict, c, &l); - casereader_destroy (pass2); - levene2_postcalc (&l); - - free (l.lz_denominator); - free (l.lz); -} - -static void -levene_precalc (const struct levene_info *l) +static struct lev * +find_group (struct hmap *map, const union value *target, int width) { - size_t i; - - for(i = 0; i < l->n_dep ; ++i ) + struct lev *l = NULL; + unsigned int hash = value_hash (target, width, 0); + HMAP_FOR_EACH_WITH_HASH (l, struct lev, node, hash, map) { - const struct variable *var = l->v_dep[i]; - struct group_proc *gp = group_proc_get (var); - struct group_statistics *gs; - struct hsh_iterator hi; - - l->lz[i].grand_total = 0; - l->lz[i].total_n = 0; - l->lz[i].n_groups = gp->n_groups ; - - - for ( gs = hsh_first(gp->group_hash, &hi); - gs != NULL; - gs = hsh_next(gp->group_hash, &hi)) - { - gs->lz_total = 0; - } - + if (value_equal (&l->group, target, width)) + break; + l = NULL; } + return l; } -static int -levene_calc (const struct dictionary *dict, const struct ccase *c, - const struct levene_info *l) -{ - size_t i; - bool warn = false; - const union value *gv = case_data (c, l->v_indep); - struct group_statistics key; - double weight = dict_get_case_weight (dict, c, &warn); - - key.id = *gv; - - for (i = 0; i < l->n_dep; ++i) - { - const struct variable *var = l->v_dep[i]; - struct group_proc *gp = group_proc_get (var); - double levene_z; - const union value *v = case_data (c, var); - struct group_statistics *gs; - - gs = hsh_find(gp->group_hash,(void *) &key ); - if ( gs == NULL ) - continue ; - - if ( !var_is_value_missing (var, v, l->exclude)) - { - levene_z= fabs(v->f - gs->mean); - l->lz[i].grand_total += levene_z * weight; - l->lz[i].total_n += weight; - - gs->lz_total += levene_z * weight; - } - } - return 0; -} - - -static void -levene_postcalc (struct levene_info *l) +double +levene (struct casereader *rx, const struct variable *gvar, + const struct variable *var, const struct variable *wv, + enum mv_class exclude) { - size_t v; - - for (v = 0; v < l->n_dep; ++v) - { - /* This is Z_LL */ - l->lz[v].grand_mean = l->lz[v].grand_total / l->lz[v].total_n ; - } + double numerator = 0.0; + double denominator = 0.0; + int n_groups = 0; + double z_grand_mean = 0.0; + double grand_n = 0.0; + struct hmap map = HMAP_INITIALIZER (map); -} - - - -static void -levene2_precalc (struct levene_info *l) -{ - size_t v; - + struct ccase *c; + struct casereader *r = casereader_clone (rx); - /* This stuff could go in the first post calc . . . */ - for (v = 0; - v < l->n_dep; - ++v) + for (; (c = casereader_read (r)) != NULL; case_unref (c)) { - struct hsh_iterator hi; - struct group_statistics *g; - - const struct variable *var = l->v_dep[v] ; - struct hsh_table *hash = group_proc_get (var)->group_hash; - + struct lev *l = NULL; + const union value *target = case_data (c, gvar); + int width = var_get_width (gvar); + unsigned int hash = value_hash (target, width, 0); + const double x = case_data (c, var)->f; + const double weight = wv ? case_data (c, wv)->f : 1.0; + + if (var_is_value_missing (var, case_data (c, var), exclude)) + continue; - for (g = hsh_first(hash,&hi); g != NULL; g = hsh_next(hash, &hi)) + l = find_group (&map, target, width); + + if (l == NULL) { - g->lz_mean = g->lz_total / g->n ; + l = xzalloc (sizeof *l); + value_clone (&l->group, target, width); + hmap_insert (&map, &l->node, hash); } - l->lz_denominator[v] = 0; - } -} -static int -levene2_calc (const struct dictionary *dict, const struct ccase *c, - struct levene_info *l) -{ - size_t i; - bool warn = false; - - double weight = dict_get_case_weight (dict, c, &warn); - - const union value *gv = case_data (c, l->v_indep); - struct group_statistics key; + l->n += weight; + l->t_bar += x * weight; + grand_n += weight; + } + casereader_destroy (r); + + { + struct lev *l; + HMAP_FOR_EACH (l, struct lev, node, &map) + { + l->t_bar /= l->n; + } + } - key.id = *gv; + n_groups = hmap_count (&map); - for (i = 0; i < l->n_dep; ++i) + r = casereader_clone (rx); + for (; (c = casereader_read (r)) != NULL; case_unref (c)) { - double levene_z; - const struct variable *var = l->v_dep[i] ; - const union value *v = case_data (c, var); - struct group_statistics *gs; - - gs = hsh_find(group_proc_get (var)->group_hash,(void *) &key ); + const union value *target = case_data (c, gvar); + int width = var_get_width (gvar); + const double x = case_data (c, var)->f; + const double weight = wv ? case_data (c, wv)->f : 1.0; - if ( gs == NULL ) + if (var_is_value_missing (var, case_data (c, var), exclude)) continue; - if ( !var_is_value_missing (var, v, l->exclude)) - { - levene_z = fabs(v->f - gs->mean); - l->lz_denominator[i] += weight * pow2 (levene_z - gs->lz_mean); - } - } - - return 0; -} + struct lev *l = find_group (&map, target, width); + assert (l); + + l->z_mean += fabs (x - l->t_bar) * weight; + z_grand_mean += fabs (x - l->t_bar) * weight; + } + casereader_destroy (r); + + { + struct lev *l; + HMAP_FOR_EACH (l, struct lev, node, &map) + { + l->z_mean /= l->n; + } + } -static void -levene2_postcalc (struct levene_info *l) -{ - size_t v; + z_grand_mean /= grand_n; - for (v = 0; v < l->n_dep; ++v) + r = casereader_clone (rx); + for (; (c = casereader_read (r)) != NULL; case_unref (c)) { - double lz_numerator = 0; - struct hsh_iterator hi; - struct group_statistics *g; + double z; + const union value *target = case_data (c, gvar); + int width = var_get_width (gvar); + const double x = case_data (c, var)->f; + const double weight = wv ? case_data (c, wv)->f : 1.0; - const struct variable *var = l->v_dep[v] ; - struct group_proc *gp = group_proc_get (var); - struct hsh_table *hash = gp->group_hash; - - for (g = hsh_first(hash, &hi); g != NULL; g = hsh_next(hash, &hi)) - { - lz_numerator += g->n * pow2(g->lz_mean - l->lz[v].grand_mean ); - } - lz_numerator *= ( gp->ugs.n - gp->n_groups ); - - l->lz_denominator[v] *= (gp->n_groups - 1); + if (var_is_value_missing (var, case_data (c, var), exclude)) + continue; - gp->levene = lz_numerator / l->lz_denominator[v] ; + struct lev *l = find_group (&map, target, width); + assert (l); + z = fabs (x - l->t_bar); + denominator += pow2 (z - l->z_mean) * weight; } -} + casereader_destroy (r); + + denominator *= n_groups - 1; + + { + double grand_n = 0.0; + struct hmap_node *next; + struct lev *l; + HMAP_FOR_EACH_SAFE (l, next, struct lev, node, &map) + { + numerator += l->n * pow2 (l->z_mean - z_grand_mean); + grand_n += l->n; + + /* We don't need these anymore */ + free (l); + } + numerator *= grand_n - n_groups ; + hmap_destroy (&map); + } + return numerator/ denominator; +} diff --git a/src/math/levene.h b/src/math/levene.h index 67a4a115..c5e8bc3b 100644 --- a/src/math/levene.h +++ b/src/math/levene.h @@ -17,29 +17,15 @@ #if !levene_h #define levene_h 1 -#include -#include -#include +struct casereader; +struct variable; -/* Calculate the Levene statistic -The independent variable : v_indep; +enum mv_class; -Number of dependent variables : n_dep; +double +levene (struct casereader *rx, const struct variable *gvar, + const struct variable *var, const struct variable *wv, enum mv_class exclude ); -The dependent variables : v_dep; -*/ - - -struct dictionary ; -struct casefilter ; - -void levene(const struct dictionary *dict, struct casereader *, - const struct variable *v_indep, size_t n_dep, - const struct variable **v_dep, - enum mv_class exclude); - - - -#endif /* levene_h */ +#endif diff --git a/src/math/linreg.c b/src/math/linreg.c index fe01ac39..63d1a0f9 100644 --- a/src/math/linreg.c +++ b/src/math/linreg.c @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 2005 Free Software Foundation, Inc. + Copyright (C) 2005, 2010 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -461,9 +461,3 @@ linreg_get_depvar_mean (linreg *c) { return c->depvar_mean; } -static -linreg_set_dependent_column (linreg *c, int column) -{ - c->dependent_column = column; -} - diff --git a/src/math/order-stats.c b/src/math/order-stats.c index e550d2b2..9f54e873 100644 --- a/src/math/order-stats.c +++ b/src/math/order-stats.c @@ -131,8 +131,6 @@ order_stats_accumulate (struct order_stats **os, size_t nos, if ( var_is_value_missing (var, case_data (cx, var), exclude)) continue; - case_unref (prev_cx); - if ( prev_value == -DBL_MAX || prev_value == this_value) c_i += weight; @@ -142,6 +140,7 @@ order_stats_accumulate (struct order_stats **os, size_t nos, c_i = weight; } + case_unref (prev_cx); cc_i += weight; prev_value = this_value; prev_cx = case_ref (cx); diff --git a/src/math/sort.c b/src/math/sort.c index 8719d877..5b82277c 100644 --- a/src/math/sort.c +++ b/src/math/sort.c @@ -169,7 +169,9 @@ static struct casewriter_class sort_casewriter_class = }; /* Reads all the cases from INPUT. Sorts the cases according to - ORDERING. Returns the sorted cases in a new casereader. */ + ORDERING. Returns the sorted cases in a new casereader. + INPUT is destroyed by this function. + */ struct casereader * sort_execute (struct casereader *input, const struct subcase *ordering) { @@ -181,7 +183,7 @@ sort_execute (struct casereader *input, const struct subcase *ordering) /* Reads all the cases from INPUT. Sorts the cases in ascending order according to VARIABLE. Returns the sorted cases in a - new casereader. */ + new casereader. INPUT is destroyed by this function. */ struct casereader * sort_execute_1var (struct casereader *input, const struct variable *var) { diff --git a/src/output/ascii.c b/src/output/ascii.c index 730a8244..c9f96b21 100644 --- a/src/output/ascii.c +++ b/src/output/ascii.c @@ -22,27 +22,28 @@ #include #include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include "error.h" -#include "minmax.h" -#include "xalloc.h" +#include "data/file-name.h" +#include "data/settings.h" +#include "libpspp/assertion.h" +#include "libpspp/cast.h" +#include "libpspp/compiler.h" +#include "libpspp/message.h" +#include "libpspp/start-date.h" +#include "libpspp/string-map.h" +#include "libpspp/version.h" +#include "output/cairo.h" +#include "output/chart-item-provider.h" +#include "output/driver-provider.h" +#include "output/message-item.h" +#include "output/options.h" +#include "output/render.h" +#include "output/tab.h" +#include "output/table-item.h" +#include "output/text-item.h" + +#include "gl/error.h" +#include "gl/minmax.h" +#include "gl/xalloc.h" #include "gettext.h" #define _(msgid) gettext (msgid) @@ -184,7 +185,7 @@ ascii_create (const char *file_name, enum settings_output_devices device_type, "bold", EMPH_BOLD, "underline", EMPH_UNDERLINE, "none", EMPH_NONE, - (char *) NULL); + NULL_SENTINEL); a->chart_file_name = parse_chart_file_name (opt (d, o, "charts", file_name)); @@ -357,7 +358,7 @@ ascii_flush (struct output_driver *driver) ascii_close_page (a); if (fn_close (a->file_name, a->file) != 0) - error (0, errno, _("ascii: closing output file \"%s\""), + error (0, errno, _("ascii: closing output file `%s'"), a->file_name); a->file = NULL; } @@ -803,7 +804,7 @@ ascii_open_page (struct ascii_driver *a) } else { - error (0, errno, _("ascii: opening output file \"%s\""), + error (0, errno, _("ascii: opening output file `%s'"), a->file_name); a->error = true; return false; diff --git a/src/output/cairo.c b/src/output/cairo.c index d4f31aad..5a310c61 100644 --- a/src/output/cairo.c +++ b/src/output/cairo.c @@ -190,7 +190,7 @@ parse_font (struct output_driver *d, struct string_map *options, desc = pango_font_description_from_string (string); if (desc == NULL) { - error (0, 0, _("\"%s\": bad font specification"), string); + error (0, 0, _("`%s': bad font specification"), string); /* Fall back to DEFAULT_VALUE, which had better be a valid font description. */ @@ -354,7 +354,7 @@ xr_create (const char *file_name, enum settings_output_devices device_type, status = cairo_surface_status (surface); if (status != CAIRO_STATUS_SUCCESS) { - error (0, 0, _("error opening output file \"%s\": %s"), + error (0, 0, _("error opening output file `%s': %s"), file_name, cairo_status_to_string (status)); cairo_surface_destroy (surface); goto error; @@ -1038,7 +1038,7 @@ xr_draw_png_chart (const struct chart_item *item, status = cairo_surface_write_to_png (surface, file_name); if (status != CAIRO_STATUS_SUCCESS) - error (0, 0, _("error writing output file \"%s\": %s"), + error (0, 0, _("error writing output file `%s': %s"), file_name, cairo_status_to_string (status)); cairo_destroy (cr); diff --git a/src/output/csv.c b/src/output/csv.c index 626dc2fa..c648bfa7 100644 --- a/src/output/csv.c +++ b/src/output/csv.c @@ -84,7 +84,7 @@ csv_create (const char *file_name, enum settings_output_devices device_type, if (csv->file == NULL) { - error (0, errno, _("error opening output file \"%s\""), csv->file_name); + error (0, errno, _("error opening output file `%s'"), csv->file_name); output_driver_destroy (d); return NULL; } diff --git a/src/output/driver.c b/src/output/driver.c index 6d836354..136b4c4f 100644 --- a/src/output/driver.c +++ b/src/output/driver.c @@ -327,8 +327,9 @@ output_driver_create (struct string_map *options) device_type = SETTINGS_DEVICE_LISTING; else { + /* TRANSLATORS: Don't translate the words `terminal' or `listing'. */ error (0, 0, _("%s is not a valid device type (the choices are " - "\"terminal\" and \"listing\")"), device_string); + "`terminal' and `listing')"), device_string); device_type = default_device_type (file_name); } @@ -340,7 +341,7 @@ output_driver_create (struct string_map *options) const char *key; STRING_MAP_FOR_EACH_KEY (key, node, options) - error (0, 0, _("%s: unknown option \"%s\""), file_name, key); + error (0, 0, _("%s: unknown option `%s'"), file_name, key); } string_map_clear (options); diff --git a/src/output/html.c b/src/output/html.c index 989752b6..5aec959c 100644 --- a/src/output/html.c +++ b/src/output/html.c @@ -103,7 +103,7 @@ html_create (const char *file_name, enum settings_output_devices device_type, html->file = fn_open (html->file_name, "w"); if (html->file == NULL) { - error (0, errno, _("error opening output file \"%s\""), html->file_name); + error (0, errno, _("error opening output file `%s'"), html->file_name); goto error; } @@ -116,8 +116,8 @@ html_create (const char *file_name, enum settings_output_devices device_type, fputs ("\n", html->file); fputs ("\n", html->file); - fputs ("