From f89c3702a75f5a5e0e2ca119510b319a9061ff58 Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Fri, 4 Oct 2019 02:45:40 +0800 Subject: [PATCH 01/78] initial exploration of adding a chinese translation of messages working version of chinese translation --- R/between.R | 2 +- R/data.table.R | 2 +- inst/po/zh_CN/LC_MESSAGES/R-data.table.mo | Bin 0 -> 463 bytes po/R-data.table.pot | 1730 +++++++++++++++++ po/R-zh_CN.po | 2104 +++++++++++++++++++++ src/data.table.h | 7 + 6 files changed, 3843 insertions(+), 2 deletions(-) create mode 100644 inst/po/zh_CN/LC_MESSAGES/R-data.table.mo create mode 100644 po/R-data.table.pot create mode 100644 po/R-zh_CN.po diff --git a/R/between.R b/R/between.R index a49cea461b..4e358c3310 100644 --- a/R/between.R +++ b/R/between.R @@ -1,6 +1,6 @@ # is x[i] in between lower[i] and upper[i] ? between = function(x, lower, upper, incbounds=TRUE, NAbounds=TRUE, check=FALSE) { - if (is.logical(x)) stop("between has been x of type logical") + if (is.logical(x)) stop("between has been passed an argument x of type logical") if (is.logical(lower)) lower = as.integer(lower) # typically NA (which is logical type) if (is.logical(upper)) upper = as.integer(upper) # typically NA (which is logical type) is.px = function(x) inherits(x, "POSIXct") diff --git a/R/data.table.R b/R/data.table.R index 15cc632f4a..d6e4188030 100644 --- a/R/data.table.R +++ b/R/data.table.R @@ -183,7 +183,7 @@ replace_dot_alias = function(e) { } return(x) } - if (!mult %chin% c("first","last","all")) stop("mult argument can only be 'first','last' or 'all'") + if (!mult %chin% c("first","last","all")) stop("mult argument can only be 'first', 'last' or 'all'") missingroll = missing(roll) if (length(roll)!=1L || is.na(roll)) stop("roll must be a single TRUE, FALSE, positive/negative integer/double including +Inf and -Inf or 'nearest'") if (is.character(roll)) { diff --git a/inst/po/zh_CN/LC_MESSAGES/R-data.table.mo b/inst/po/zh_CN/LC_MESSAGES/R-data.table.mo new file mode 100644 index 0000000000000000000000000000000000000000..1a599bd7d1f787813e0f87fb87496992180a9b1b GIT binary patch literal 463 zcmYk1ze@u#6vyLl=-}Y&kjV;?^R85_=MRM1LZQ_n)!Fne*2rD1)E`b^L^1a<#Wt7BQl6}6c+FF|!W8Ci*PW^WTTJ@g6DGE)qMD*bC@?f5rp-k1>tur+@bH+dQpHRh(~Wsz=tPfWW6soP zr}RW5OMOKOk_z9U@Un?>+}fqg!O2}Nx#i)-uF&1bS4uABj%Io8GBk_QJ}og)VAO?H zDr_pb_|yMMxlAtAb8BdNBbk__FMJq==l4+9z5Oz*JqvATIcq>-E4F&9zaJy?WFbc G6h%LKyN?|J literal 0 HcmV?d00001 diff --git a/po/R-data.table.pot b/po/R-data.table.pot new file mode 100644 index 0000000000..b8f94b3d87 --- /dev/null +++ b/po/R-data.table.pot @@ -0,0 +1,1730 @@ +msgid "" +msgstr "" +"Project-Id-Version: data.table 1.12.5\n" +"POT-Creation-Date: 2019-10-04 17:06\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + + +msgid "data.table package loaded. When developing don't load package" +msgstr "" + +msgid "Internal error -- difftime objects may not be added to IDate, but Ops dispatch should have intervened to prevent this" +msgstr "" + +msgid "binary + is not defined for \"IDate\" objects" +msgstr "" + +msgid "can only subtract from \"IDate\" objects" +msgstr "" + +msgid "Internal error: storage mode of IDate is somehow no longer integer" +msgstr "" + +msgid "unary - is not defined for \"IDate\" objects" +msgstr "" + +msgid "Internal error -- difftime objects may not be subtracted from IDate, but Ops dispatch should have intervened to prevent this" +msgstr "" + +msgid "Valid options for ms are 'truncate'," +msgstr "" + +msgid "'nearest', and 'ceil'." +msgstr "" + +msgid "as.data.table.array method should only be called for arrays with 3+ dimensions; use the matrix method for 2-dimensional arrays" +msgstr "" + +msgid "Argument 'value.name' must be scalar character, non-NA and at least one character" +msgstr "" + +msgid "Argument 'sorted' must be scalar logical and non-NA" +msgstr "" + +msgid "Argument 'na.rm' must be scalar logical and non-NA" +msgstr "" + +msgid "Please provide either 'key' or 'sorted', but not both." +msgstr "" + +msgid "Argument 'value.name' should not overlap with column names in result:" +msgstr "" + +msgid "POSIXlt column type detected and converted to POSIXct. We do not recommend use of POSIXlt at all because it uses 40 bytes to store one date." +msgstr "" + +msgid "Item" +msgstr "" + +msgid "has" +msgstr "" + +msgid "rows but longest item has" +msgstr "" + +msgid "; recycled with remainder." +msgstr "" + +msgid "has 0 rows but longest item has" +msgstr "" + +msgid "; filled with NA" +msgstr "" + +msgid "A column may not be called .SD. That has special meaning." +msgstr "" + +msgid "class must be length 1" +msgstr "" + +msgid "between has been passed an argument x of type logical" +msgstr "" + +msgid "'between' function the 'x' argument is a POSIX class while 'lower' was not, coercion to POSIX failed with:" +msgstr "" + +msgid "'between' function the 'x' argument is a POSIX class while 'upper' was not, coercion to POSIX failed with:" +msgstr "" + +msgid "'between' lower= and upper= are both POSIXct but have different tzone attributes:" +msgstr "" + +msgid ". Please align their time zones." +msgstr "" + +msgid "'between' arguments are all POSIXct but have mismatched tzone attributes:" +msgstr "" + +msgid ". The UTC times will be compared." +msgstr "" + +msgid "trying to use integer64 class when 'bit64' package is not installed" +msgstr "" + +msgid "Not yet implemented NAbounds=TRUE for this non-numeric and non-character type" +msgstr "" + +msgid "Some lower>upper for this non-numeric and non-character type" +msgstr "" + +msgid "RHS has length()" +msgstr "" + +msgid "; expecting length 2." +msgstr "" + +msgid "c" +msgstr "" + +msgid "Perhaps you meant %s?" +msgstr "" + +msgid "The first element should be the lower bound(s);" +msgstr "" + +msgid "the second element should be the upper bound(s)." +msgstr "" + +msgid "x." +msgstr "" + +msgid "is type" +msgstr "" + +msgid "which is not supported by data.table join" +msgstr "" + +msgid "i." +msgstr "" + +msgid "Attempting roll join on factor column when joining x." +msgstr "" + +msgid "to i." +msgstr "" + +msgid ". Only integer, double or character columns may be roll joined." +msgstr "" + +msgid "Incompatible join types: x." +msgstr "" + +msgid "(" +msgstr "" + +msgid ") and i." +msgstr "" + +msgid "). Factor columns must join to factor or character columns." +msgstr "" + +msgid ")" +msgstr "" + +msgid "Incompatible join types:" +msgstr "" + +msgid "is type integer64 but" +msgstr "" + +msgid "is type double and contains fractions" +msgstr "" + +msgid "roll is not implemented for non-equi joins yet." +msgstr "" + +msgid "Column name '_nqgrp_' is reserved for non-equi joins." +msgstr "" + +msgid "key argument of data.table() must be character" +msgstr "" + +msgid "Object '" +msgstr "" + +msgid "' not found. Perhaps you intended" +msgstr "" + +msgid "," +msgstr "" + +msgid "or" +msgstr "" + +msgid "more" +msgstr "" + +msgid "' not found amongst" +msgstr "" + +msgid "and" +msgstr "" + +msgid "Provide either by= or keyby= but not both" +msgstr "" + +msgid "Ignoring keyby= because j= is not supplied" +msgstr "" + +msgid "Ignoring by= because j= is not supplied" +msgstr "" + +msgid "When on= is provided but not i=, on= must be a named list or data.table|frame, and a natural join (i.e. join on common names) is invoked. Ignoring on= which is '" +msgstr "" + +msgid "'." +msgstr "" + +msgid "i and j are both missing so ignoring the other arguments. This warning will be upgraded to error in future." +msgstr "" + +msgid "mult argument can only be 'first', 'last' or 'all'" +msgstr "" + +msgid "roll must be a single TRUE, FALSE, positive/negative integer/double including +Inf and -Inf or 'nearest'" +msgstr "" + +msgid "roll is '" +msgstr "" + +msgid "' (type character). Only valid character value is 'nearest'." +msgstr "" + +msgid "rollends must be a logical vector" +msgstr "" + +msgid "rollends must be length 1 or 2" +msgstr "" + +msgid "nomatch= must be either NA or NULL (or 0 for backwards compatibility which is the same as NULL)" +msgstr "" + +msgid "which= must be a logical vector length 1. Either FALSE, TRUE or NA." +msgstr "" + +msgid "which==" +msgstr "" + +msgid "(meaning return row numbers) but j is also supplied. Either you need row numbers or the result of j, but only one type of result can be returned." +msgstr "" + +msgid "which=NA with nomatch=0 would always return an empty vector. Please change or remove either which or nomatch." +msgstr "" + +msgid "j must be provided when with=FALSE" +msgstr "" + +msgid "The symbol .. is invalid. The .. prefix must be followed by at least one character." +msgstr "" + +msgid "Variable '" +msgstr "" + +msgid "' is not found in calling scope. Looking in calling scope because you used the .. prefix." +msgstr "" + +msgid "Variable '.." +msgstr "" + +msgid "' does exist in calling scope though, so please just removed the .. prefix from that variable name in calling scope." +msgstr "" + +msgid "Both '" +msgstr "" + +msgid "' and '.." +msgstr "" + +msgid "' exist in calling scope. Please remove the '.." +msgstr "" + +msgid "' variable in calling scope for clarity." +msgstr "" + +msgid "Internal error: DT[, ..var] should be dealt with by the branch above now." +msgstr "" + +msgid "' is not found in calling scope. Looking in calling scope because you set with=FALSE. Also, please use .. symbol prefix and remove with=FALSE." +msgstr "" + +msgid "You have wrapped := with {} which is ok but then := must be the only thing inside {}. You have something else inside {} as well. Consider placing the {} on the RHS of := instead; e.g. DT[,someCol:={tmpVar1<-...;tmpVar2<-...;tmpVar1*tmpVar2}" +msgstr "" + +msgid ":= with keyby is only possible when i is not supplied since you can't setkey on a subset of rows. Either change keyby to by or remove i" +msgstr "" + +msgid "nomatch isn't relevant together with :=, ignoring nomatch" +msgstr "" + +msgid "not-join '!' prefix is present on i but nomatch is provided. Please remove nomatch." +msgstr "" + +msgid "is not found in calling scope" +msgstr "" + +msgid "When the first argument inside DT[...] is a single symbol (e.g. DT[var]), data.table looks for var in calling scope." +msgstr "" + +msgid "i is invalid type (matrix). Perhaps in future a 2 column matrix could return a list of elements of DT (in the spirit of A[B] in FAQ 2.14). Please report to data.table issue tracker if you'd like this, or add your comments to FR #657." +msgstr "" + +msgid "When i is a data.table (or character vector), the columns to join by must be specified using 'on=' argument (see ?data.table), by keying x (i.e. sorted, and, marked as sorted, see ?setkey), or by sharing column names between x and i (i.e., a natural join). Keyed joins might have further speed benefits on very large data due to x being sorted in RAM." +msgstr "" + +msgid "Attempting to do natural join but no common columns in provided tables" +msgstr "" + +msgid "Internal error. Cannot by=.EACHI when joining to a secondary key, yet" +msgstr "" + +msgid "Internal error. irows has length in by=.EACHI" +msgstr "" + +msgid "logical error. i is not a data.table, but 'on' argument is provided." +msgstr "" + +msgid "i has evaluated to type" +msgstr "" + +msgid ". Expecting logical, integer or double." +msgstr "" + +msgid "i evaluates to a logical vector length" +msgstr "" + +msgid "but there are" +msgstr "" + +msgid "rows. Recycling of logical i is no longer allowed as it hides more bugs than is worth the rare convenience. Explicitly use rep(...,length=.N) if you really need to recycle." +msgstr "" + +msgid "Internal error: notjoin but byjoin or !integer or nomatch==NA" +msgstr "" + +msgid "with=FALSE together with := was deprecated in v1.9.4 released Oct 2014. Please wrap the LHS of := with parentheses; e.g., DT[,(myVar):=sum(b),by=a] to assign to column name(s) held in variable myVar. See ?':=' for other examples. As warned in 2014, this is now a warning." +msgstr "" + +msgid "with=FALSE ignored, it isn't needed when using :=. See ?':=' for examples." +msgstr "" + +msgid "column(s) not removed because not found:" +msgstr "" + +msgid "column(s) not found:" +msgstr "" + +msgid "of j is" +msgstr "" + +msgid "which is outside the column number range [1,ncol=" +msgstr "" + +msgid "]" +msgstr "" + +msgid "j mixes positives and negatives" +msgstr "" + +msgid "When with=FALSE, j-argument should be of type logical/character/integer indicating the columns to select." +msgstr "" + +msgid "by=c(...), key(...) or names(...) must evaluate to 'character'" +msgstr "" + +msgid "'by' is a character vector length" +msgstr "" + +msgid "but one or more items include a comma. Either pass a vector of column names (which can contain spaces, but no commas), or pass a vector length 1 containing comma separated column names. See ?data.table for other possibilities." +msgstr "" + +msgid "Internal error: irows isn't integer" +msgstr "" + +msgid "'by' appears to evaluate to column names but isn't c() or key(). Use by=list(...) if you can. Otherwise, by=eval" +msgstr "" + +msgid "should work. This is for efficiency so data.table can detect which columns are needed." +msgstr "" + +msgid "'by' or 'keyby' must evaluate to a vector or a list of vectors (where 'list' includes data.table and data.frame which are lists, too)" +msgstr "" + +msgid "column or expression" +msgstr "" + +msgid "of 'by' or 'keyby' is type" +msgstr "" + +msgid ". Do not quote column names. Usage: DT[,sum(colC),by=list(colA,month(colB))]" +msgstr "" + +msgid "The items in the 'by' or 'keyby' list are length (" +msgstr "" + +msgid "). Each must be length" +msgstr "" + +msgid "; the same length as there are rows in x (after subsetting if i is provided)." +msgstr "" + +msgid "of the .() or list() passed to j is missing" +msgstr "" + +msgid ".SDcols missing at the following indices:" +msgstr "" + +msgid ".SDcols is numeric but has both +ve and -ve indices" +msgstr "" + +msgid ".SDcols is numeric but out of bounds [1," +msgstr "" + +msgid "] at:" +msgstr "" + +msgid ".SDcols should be column numbers or names" +msgstr "" + +msgid "Some items of .SDcols are not column names:" +msgstr "" + +msgid "This j doesn't use .SD but .SDcols has been supplied. Ignoring .SDcols. See ?data.table." +msgstr "" + +msgid ".SD is locked. Using := in .SD's j is reserved for possible future use; a tortuously flexible way to modify by group. Use := in j directly to modify by group by reference." +msgstr "" + +msgid "In `:=`(col1=val1, col2=val2, ...) form, all arguments must be named." +msgstr "" + +msgid "LHS of := must be a symbol, or an atomic vector (column names or positions)." +msgstr "" + +msgid "LHS of := appears to be column positions but are outside [1,ncol] range. New columns can only be added by name." +msgstr "" + +msgid "LHS of := isn't column names ('character') or positions ('integer' or 'numeric')" +msgstr "" + +msgid "Invalid .internal.selfref detected and fixed by taking a (shallow) copy of the data.table so that := can add this new column by reference. At an earlier point, this data.table has been copied by R (or was created manually using structure() or similar). Avoid names<- and attr<- which in R currently (and oddly) may copy the whole data.table. Use set* syntax instead to avoid copying: ?set, ?setnames and ?setattr. If this message doesn't help, please report your use case to the data.table issue tracker so the root cause can be fixed or this message improved." +msgstr "" + +msgid "Cannot assign to an under-allocated recursively indexed list -- L[[i]][,:=] syntax is only valid when i is length 1, but it's length" +msgstr "" + +msgid "Internal error -- item '" +msgstr "" + +msgid "' not found in names of list" +msgstr "" + +msgid "Internal error -- column(s) not found:" +msgstr "" + +msgid "strptime() usage detected and wrapped with as.POSIXct(). This is to minimize the chance of assigning POSIXlt columns, which use 40+ bytes to store one date (versus 8 for POSIXct). Use as.POSIXct() (which will call strptime() as needed internally) to avoid this warning." +msgstr "" + +msgid "' is not found in calling scope. Looking in calling scope because this symbol was prefixed with .. in the j= parameter." +msgstr "" + +msgid "Internal error: xcolAns does not pass checks:" +msgstr "" + +msgid "Internal error: irows is NULL when making join result at R level. Should no longer happen now we use CsubsetDT earlier." +msgstr "" + +msgid "j (the 2nd argument inside [...]) is a single symbol but column name '" +msgstr "" + +msgid "' is not found. Perhaps you intended DT[, .." +msgstr "" + +msgid "]. This difference to data.frame is deliberate and explained in FAQ 1.1." +msgstr "" + +msgid "Internal error: j has created a data.table result containing a NULL column" +msgstr "" + +msgid "The column '.N' can't be grouped because it conflicts with the special .N variable. Try setnames(DT,'.N','N') first." +msgstr "" + +msgid "The column '.I' can't be grouped because it conflicts with the special .I variable. Try setnames(DT,'.I','I') first." +msgstr "" + +msgid "logical error. i is not data.table, but mult='all' and 'by'=.EACHI" +msgstr "" + +msgid "Internal error: by= is missing" +msgstr "" + +msgid "Internal error: byindex not the index name" +msgstr "" + +msgid "Internal error: byindex not found" +msgstr "" + +msgid "Unable to optimize call to mean() and could be very slow. You must name 'na.rm' like that otherwise if you do mean(x,TRUE) the TRUE is taken to mean 'trim' which is the 2nd argument of mean. 'trim' is not yet optimized." +msgstr "" + +msgid "Internal error: length(irows)!=length(o__)" +msgstr "" + +msgid "The setkey() normally performed by keyby= has been skipped (as if by= was used) because := is being used together with keyby= but the keyby= contains some expressions. To avoid this warning, use by= instead, or provide existing column names to keyby=." +msgstr "" + +msgid "Internal error: jvnames is length" +msgstr "" + +msgid "but ans is" +msgstr "" + +msgid "and bynames is" +msgstr "" + +msgid "rownames and rownames.value cannot both be used at the same time" +msgstr "" + +msgid "length(rownames)==" +msgstr "" + +msgid "but nrow(DT)==" +msgstr "" + +msgid ". The rownames argument specifies a single column name or number. Consider rownames.value= instead." +msgstr "" + +msgid "length(rownames)==0 but should be a single column name or number, or NULL" +msgstr "" + +msgid "rownames is TRUE but key has multiple columns" +msgstr "" + +msgid "; taking first column x[,1] as rownames" +msgstr "" + +msgid "'" +msgstr "" + +msgid "' is not a column of x" +msgstr "" + +msgid "as.integer(rownames)==" +msgstr "" + +msgid "]." +msgstr "" + +msgid "length(rownames.value)==" +msgstr "" + +msgid "but should be nrow(x)==" +msgstr "" + +msgid "When i is a matrix in DT[i]<-value syntax, it doesn't make sense to provide j" +msgstr "" + +msgid "j must be an atomic vector, see ?is.atomic" +msgstr "" + +msgid "NA in j" +msgstr "" + +msgid "j must be vector of column name or positions" +msgstr "" + +msgid "Attempt to assign to column position greater than ncol(x). Create the column by name, instead. This logic intends to catch (most likely) user errors." +msgstr "" + +msgid "data.table inherits from data.frame (from v1.5), but this data.table does not. Has it been created manually (e.g. by using 'structure' rather than 'data.table') or saved to disk using a prior version of data.table?" +msgstr "" + +msgid "attempting to assign invalid object to dimnames of a data.table" +msgstr "" + +msgid "data.tables do not have rownames" +msgstr "" + +msgid "Can't assign" +msgstr "" + +msgid "colnames to a" +msgstr "" + +msgid "-column data.table" +msgstr "" + +msgid "'subset' must evaluate to logical" +msgstr "" + +msgid "Argument 'invert' must be logical TRUE/FALSE" +msgstr "" + +msgid "x argument must be a data.table" +msgstr "" + +msgid "group length is 0 but data nrow > 0" +msgstr "" + +msgid "passing 'f' argument together with 'by' is not allowed, use 'by' when split by column in data.table and 'f' when split by external factor" +msgstr "" + +msgid "Either 'by' or 'f' argument must be supplied" +msgstr "" + +msgid "Column '.ll.tech.split' is reserved for split.data.table processing" +msgstr "" + +msgid "Column '.nm.tech.split' is reserved for split.data.table processing" +msgstr "" + +msgid "Argument 'by' must refer to column names in x" +msgstr "" + +msgid "Argument 'by' must refer only to atomic-type columns, but the following columns are non-atomic:" +msgstr "" + +msgid "x is not a data.table. Shallow copy is a copy of the vector of column pointers (only), so is only meaningful for data.table" +msgstr "" + +msgid "setalloccol attempting to modify `*tmp*`" +msgstr "" + +msgid "Input is a length=1 logical that points to the same address as R's global value. Therefore the attribute has not been set by reference, rather on a copy. You will need to assign the result back to a variable. See issue #1281." +msgstr "" + +msgid "x is not a data.table or data.frame" +msgstr "" + +msgid "x has" +msgstr "" + +msgid "columns but its names are length" +msgstr "" + +msgid "Passed a vector of type '" +msgstr "" + +msgid "'. Needs to be type 'character'." +msgstr "" + +msgid "names to a" +msgstr "" + +msgid "column data.table" +msgstr "" + +msgid "When 'new' is provided, 'old' must be provided too" +msgstr "" + +msgid "'new' is not a character vector or a function" +msgstr "" + +msgid "NA in 'new' at positions" +msgstr "" + +msgid "Some duplicates exist in 'old':" +msgstr "" + +msgid "'old' is type" +msgstr "" + +msgid "but should be integer, double or character" +msgstr "" + +msgid "'old' is length" +msgstr "" + +msgid "but 'new' is length" +msgstr "" + +msgid "NA (or out of bounds) in 'old' at positions" +msgstr "" + +msgid "of 'old' is '" +msgstr "" + +msgid "' which appears several times in column names. Just the first will be changed. There are" +msgstr "" + +msgid "other items in old that are also duplicated in column names." +msgstr "" + +msgid "Items of 'old' not found in column names:" +msgstr "" + +msgid ". Consider skip_absent=TRUE." +msgstr "" + +msgid "Internal error: length(i)!=length(new)" +msgstr "" + +msgid "x has some duplicated column name(s):" +msgstr "" + +msgid ". Please remove or rename the duplicate(s) and try again." +msgstr "" + +msgid "Input is" +msgstr "" + +msgid "but should be a plain list of items to be stacked" +msgstr "" + +msgid "idcol must be a logical or character vector of length 1. If logical TRUE the id column will named '.id'." +msgstr "" + +msgid "use.names=NA invalid" +msgstr "" + +msgid "use.names='check' cannot be used explicitly because the value 'check' is new in v1.12.2 and subject to change. It is just meant to convey default behavior. See ?rbindlist." +msgstr "" + +msgid "Check that is.data.table(DT) == TRUE. Otherwise, := and `:=`(...) are defined for use in j, once only and in particular ways. See help(\":=\")." +msgstr "" + +msgid "setDF only accepts data.table, data.frame or list of equal length as input" +msgstr "" + +msgid "rownames contains duplicates" +msgstr "" + +msgid "rownames incorrect length; expected" +msgstr "" + +msgid "names, got" +msgstr "" + +msgid "All elements in argument 'x' to 'setDF' must be of same length" +msgstr "" + +msgid "Cannot find symbol" +msgstr "" + +msgid "Cannot convert '" +msgstr "" + +msgid "' to data.table by reference because binding is locked. It is very likely that '" +msgstr "" + +msgid "' resides within a package (or an environment) that is locked to prevent modifying its variable bindings. Try copying the object to your current environment, ex: var <- copy(var) and then using setDT again." +msgstr "" + +msgid "Some columns are a multi-column type (such as a matrix column):" +msgstr "" + +msgid ". setDT will retain these columns as-is but subsequent operations like grouping and joining may fail. Please consider as.data.table() instead which will create a new column for each embedded column." +msgstr "" + +msgid "Column" +msgstr "" + +msgid "is of POSIXlt type. Please convert it to POSIXct using as.POSIXct and run setDT again. We do not recommend use of POSIXlt at all because it uses 40 bytes to store one date." +msgstr "" + +msgid "All elements in argument 'x' to 'setDT' must be of same length, but the profile of input lengths (length:frequency) is:" +msgstr "" + +msgid "%s:%d" +msgstr "" + +msgid "The first entry with fewer than" +msgstr "" + +msgid "entries is" +msgstr "" + +msgid "Argument 'x' to 'setDT' should be a 'list', 'data.frame' or 'data.table'" +msgstr "" + +msgid "Item '" +msgstr "" + +msgid "' not found in names of input list" +msgstr "" + +msgid "'prefix' must be NULL or a character vector of length 1." +msgstr "" + +msgid "x is a single vector, non-NULL 'cols' doesn't make sense." +msgstr "" + +msgid "x is a list, 'cols' cannot be 0-length." +msgstr "" + +msgid "RHS of" +msgstr "" + +msgid "is length" +msgstr "" + +msgid "which is not 1 or nrow (" +msgstr "" + +msgid "). For robustness, no recycling is allowed (other than of length 1 RHS). Consider %in% instead." +msgstr "" + +msgid "Internal error in .isFastSubsettable. Please report to data.table developers" +msgstr "" + +msgid "'on' argument should be a named atomic vector of column names indicating which columns in 'i' should be joined with which columns in 'x'." +msgstr "" + +msgid "Found more than one operator in one 'on' statement:" +msgstr "" + +msgid ". Please specify a single operator." +msgstr "" + +msgid "'on' contains no column name:" +msgstr "" + +msgid ". Each 'on' clause must contain one or two column names." +msgstr "" + +msgid "'on' contains more than 2 column names:" +msgstr "" + +msgid "Invalid operators" +msgstr "" + +msgid ". Only allowed operators are" +msgstr "" + +msgid "." +msgstr "" + +msgid "'fromLast' must be TRUE or FALSE" +msgstr "" + +msgid "x must be an atomic vector or data.frames/data.tables" +msgstr "" + +msgid "Using '" +msgstr "" + +msgid "' as value column. Use 'value.var' to override" +msgstr "" + +msgid "The dcast generic in data.table has been passed a" +msgstr "" + +msgid ", but data.table::dcast currently only has a method for data.tables. Please confirm your input is a data.table, with setDT(" +msgstr "" + +msgid ") or as.data.table(" +msgstr "" + +msgid "). If you intend to use a reshape2::dcast, try installing that package first, but do note that reshape2 is deprecated and you should be migrating your code away from using it." +msgstr "" + +msgid "and will attempt to redirect to the reshape2::dcast; please note that reshape2 is deprecated, and this redirection is now deprecated as well. Please do this redirection yourself like reshape2::dcast(" +msgstr "" + +msgid "). In the next version, this warning will become an error." +msgstr "" + +msgid "Invalid formula. Cast formula should be of the form LHS ~ RHS, for e.g., a + b ~ c." +msgstr "" + +msgid "data.table to cast must have unique column names" +msgstr "" + +msgid "value.var values [" +msgstr "" + +msgid "] are not found in 'data'." +msgstr "" + +msgid "When 'fun.aggregate' and 'value.var' are both lists, 'value.var' must be either of length =1 or =length(fun.aggregate)." +msgstr "" + +msgid "'data' must be a data.table." +msgstr "" + +msgid "'drop' must be logical TRUE/FALSE" +msgstr "" + +msgid "Column [" +msgstr "" + +msgid "] not found or of unknown type." +msgstr "" + +msgid "Columns specified in formula can not be of type list" +msgstr "" + +msgid "Can not cast an empty data.table" +msgstr "" + +msgid "Aggregate function missing, defaulting to 'length'" +msgstr "" + +msgid "Internal error -- empty rhsnames in dcast; please report" +msgstr "" + +msgid "The melt generic in data.table has been passed a" +msgstr "" + +msgid ", but data.table::melt currently only has a method for data.tables. Please confirm your input is a data.table, with setDT(" +msgstr "" + +msgid "). If you intend to use a method from reshape2, try installing that package first, but do note that reshape2 is deprecated and you should be migrating your code away from using it." +msgstr "" + +msgid "and will attempt to redirect to the relevant reshape2 method; please note that reshape2 is deprecated, and this redirection is now deprecated as well. To continue using melt methods from reshape2 while both libraries are attached, e.g. melt.list, you can prepend the namespace like reshape2::melt(" +msgstr "" + +msgid "Input patterns must be of type character." +msgstr "" + +msgid "'data' must be a data.table" +msgstr "" + +msgid "'value.name' provided in both 'measure.vars'" +msgstr "" + +msgid "and 'value.name argument'; value provided in" +msgstr "" + +msgid "'measure.vars' is given precedence." +msgstr "" + +msgid "Please provide a name to each element of 'measure.vars'." +msgstr "" + +msgid "y and x must both be data.tables. Use `setDT()` to convert list/data.frames to data.tables by reference or as.data.table() to convert to data.tables by copying." +msgstr "" + +msgid "maxgap must be a non-negative integer value of length 1" +msgstr "" + +msgid "minoverlap must be a positive integer value of length 1" +msgstr "" + +msgid "which must be a logical vector of length 1. Either TRUE/FALSE" +msgstr "" + +msgid "nomatch must either be NA or NULL" +msgstr "" + +msgid "maxgap and minoverlap arguments are not yet implemented." +msgstr "" + +msgid "'y' must be keyed (i.e., sorted, and, marked as sorted). Call setkey(y, ...) first, see ?setkey. Also check the examples in ?foverlaps." +msgstr "" + +msgid "'by.x' and 'by.y' should contain at least two column names (or numbers) each - corresponding to 'start' and 'end' points of intervals. Please see ?foverlaps and examples for more info." +msgstr "" + +msgid "Invalid numeric value for 'by.x'; it should be a vector with values 1 <= by.x <= length(x)" +msgstr "" + +msgid "Invalid numeric value for 'by.y'; it should be a vector with values 1 <= by.y <= length(y)" +msgstr "" + +msgid "A non-empty vector of column names or numbers is required for by.x" +msgstr "" + +msgid "A non-empty vector of column names or numbers is required for by.y" +msgstr "" + +msgid "The first" +msgstr "" + +msgid "columns of y's key must be identical to the columns specified in by.y." +msgstr "" + +msgid "Elements listed in 'by.x' must be valid names in data.table 'x'" +msgstr "" + +msgid "Duplicate columns are not allowed in overlap joins. This may change in the future." +msgstr "" + +msgid "length(by.x) != length(by.y). Columns specified in by.x should correspond to columns specified in by.y and should be of same lengths." +msgstr "" + +msgid "y has some duplicated column name(s):" +msgstr "" + +msgid "The last two columns in by.x should correspond to the 'start' and 'end' intervals in data.table 'x' and must be integer/numeric type." +msgstr "" + +msgid "NA values in data.table 'x' start column: '" +msgstr "" + +msgid "'. All rows with NA values in the range columns must be removed for foverlaps() to work." +msgstr "" + +msgid "NA values in data.table 'x' end column: '" +msgstr "" + +msgid "All entries in column" +msgstr "" + +msgid "should be <= corresponding entries in column" +msgstr "" + +msgid "in data.table 'x'." +msgstr "" + +msgid "The last two columns in by.y should correspond to the 'start' and 'end' intervals in data.table 'y' and must be integer/numeric type." +msgstr "" + +msgid "NA values in data.table 'y' start column: '" +msgstr "" + +msgid "NA values in data.table 'y' end column: '" +msgstr "" + +msgid "in data.table 'y'." +msgstr "" + +msgid "Some interval cols are of type POSIXct while others are not. Please ensure all interval cols are (or are not) of POSIXct type" +msgstr "" + +msgid "POSIXct interval cols have mixed timezones. Overlaps are performed on the internal numerical representation of POSIXct objects (always in UTC epoch time), therefore printed values may give the impression that values don't overlap but their internal representations do Please ensure that POSIXct type interval cols have identical 'tzone' attributes to avoid confusion." +msgstr "" + +msgid "Not yet implemented" +msgstr "" + +msgid "maxgap > minoverlap. maxgap will have no effect here." +msgstr "" + +msgid "length(na.last) = 0" +msgstr "" + +msgid "length(na.last) > 1, only the first element will be used" +msgstr "" + +msgid "x is a single vector, non-NULL 'cols' doesn't make sense" +msgstr "" + +msgid "x is a list, 'cols' can not be 0-length" +msgstr "" + +msgid "Used more than one of the arguments input=, file=, text= and cmd=." +msgstr "" + +msgid "Argument 'encoding' must be 'unknown', 'UTF-8' or 'Latin-1'." +msgstr "" + +msgid "'text=' is type" +msgstr "" + +msgid "but must be character." +msgstr "" + +msgid "input= must be a single character string containing a file name, a system command containing at least one space, a URL starting 'http[s]://', 'ftp[s]://' or 'file://', or, the input data itself containing at least one \\n or \\r" +msgstr "" + +msgid "input= contains no \\n or \\r, but starts with a space. Please remove the leading space, or use text=, file= or cmd=" +msgstr "" + +msgid "Input URL requires https:// connection for which fread() requires 'curl' package which cannot be found. Please install 'curl' using 'install.packages('curl')'." +msgstr "" + +msgid "Taking input= as a system command ('" +msgstr "" + +msgid "') and a variable has been used in the expression passed to `input=`. Please use fread(cmd=...). There is a security concern if you are creating an app, and the app could have a malicious user, and the app is not running in a secure environment; e.g. the app is running as root. Please read item 5 in the NEWS file for v1.11.6 for more information and for the option to suppress this message." +msgstr "" + +msgid "File '" +msgstr "" + +msgid "' does not exist or is non-readable. getwd()=='" +msgstr "" + +msgid "' is a directory. Not yet implemented." +msgstr "" + +msgid "' has size 0. Returning a NULL" +msgstr "" + +msgid "data.table" +msgstr "" + +msgid "data.frame" +msgstr "" + +msgid "To read gz and bz2 files directly, fread() requires 'R.utils' package which cannot be found. Please install 'R.utils' using 'install.packages('R.utils')'." +msgstr "" + +msgid "'autostart' is now deprecated and ignored. Consider skip='string' or skip=n" +msgstr "" + +msgid "colClasses is type 'logical' which is ok if all NA but it has some TRUE or FALSE values in it which is not allowed. Please consider the drop= or select= argument instead. See ?fread." +msgstr "" + +msgid "colClasses is not type list or character vector" +msgstr "" + +msgid "colClasses=\"NULL\" (quoted) is interpreted as colClasses=NULL (the default) as opposed to dropping every column." +msgstr "" + +msgid "strip.white==TRUE (default) and \"\" is present in na.strings, so any number of spaces in string columns will already be read as ." +msgstr "" + +msgid "Since strip.white=TRUE (default), use na.strings=\"\" to specify that any number of spaces in a string column should be read as ." +msgstr "" + +msgid "But strip.white=FALSE. Use strip.white=TRUE (default) together with na.strings=\"\" to turn any number of spaces in string columns into " +msgstr "" + +msgid "'data.table' relies on the package 'yaml' to parse the file header; please add this to your library with install.packages('yaml') and try again." +msgstr "" + +msgid "Combining a search string as 'skip' and reading a YAML header may not work as expected -- currently," +msgstr "" + +msgid "reading will proceed to search for 'skip' from the beginning of the file, NOT from the end of" +msgstr "" + +msgid "the metadata; please file an issue on GitHub if you'd like to see more intuitive behavior supported." +msgstr "" + +msgid "Encountered <" +msgstr "" + +msgid "..." +msgstr "" + +msgid "> at the first" +msgstr "" + +msgid "unskipped line (" +msgstr "" + +msgid "), which does not constitute the start to a valid YAML header" +msgstr "" + +msgid "(expecting something matching regex \"" +msgstr "" + +msgid "\"); please check your input and try again." +msgstr "" + +msgid "Reached the end of the file before finding a completion to the YAML header. A valid YAML header is bookended by lines matching" +msgstr "" + +msgid "the regex \"" +msgstr "" + +msgid "\". Please double check the input file is a valid csvy." +msgstr "" + +msgid "User-supplied 'header' will override that found in metadata." +msgstr "" + +msgid "User-supplied column names in 'col.names' will override those found in YAML metadata." +msgstr "" + +msgid "colClasses dictated by user input and those read from YAML header are in conflict (specifically, for column" +msgstr "" + +msgid "s" +msgstr "" + +msgid "[" +msgstr "" + +msgid "]); the proceeding assumes the user input was" +msgstr "" + +msgid "an intentional override and will ignore the types implied by the YAML header; please exclude" +msgstr "" + +msgid "these columns" +msgstr "" + +msgid "this column from colClasses if this was unintentional." +msgstr "" + +msgid "User-supplied 'sep' will override that found in metadata." +msgstr "" + +msgid "User-supplied 'quote' will override that found in metadata." +msgstr "" + +msgid "User-supplied 'dec' will override that found in metadata." +msgstr "" + +msgid "User-supplied 'na.strings' will override that found in metadata." +msgstr "" + +msgid "Column '" +msgstr "" + +msgid "' was requested to be '" +msgstr "" + +msgid "' but fread encountered the following" +msgstr "" + +msgid "error" +msgstr "" + +msgid "warning" +msgstr "" + +msgid ":" +msgstr "" + +msgid "so the column has been left as type '" +msgstr "" + +msgid "key argument of data.table() must be a character vector naming columns (NB: col.names are applied before this)" +msgstr "" + +msgid "index argument of data.table() must be a character vector naming columns (NB: col.names are applied before this)" +msgstr "" + +msgid "dateTimeAs must be a single string" +msgstr "" + +msgid "dateTimeAs must be 'ISO','squash','epoch' or 'write.csv'" +msgstr "" + +msgid "logicalAsInt has been renamed logical01. Use logical01 only, not both." +msgstr "" + +msgid "x being coerced from class: matrix to data.table" +msgstr "" + +msgid "Input has no columns; doing nothing." +msgstr "" + +msgid "If you intended to overwrite the file at" +msgstr "" + +msgid "with an empty one, please use file.remove first." +msgstr "" + +msgid "Input has no columns; creating an empty file at '" +msgstr "" + +msgid "' and exiting." +msgstr "" + +msgid "'data.table' relies on the package 'yaml' to write the file header; please add this to your library with install.packages('yaml') and try again." +msgstr "" + +msgid "Argument 'x' must be a data.table object" +msgstr "" + +msgid "Argument 'by' must be a character vector of column names used in grouping." +msgstr "" + +msgid "Argument 'id' must be a logical scalar." +msgstr "" + +msgid "Argument 'x' is a 0-column data.table; no measure to apply grouping over." +msgstr "" + +msgid "Input data.table must not contain duplicate column names." +msgstr "" + +msgid "Argument 'by' must have unique column names for grouping." +msgstr "" + +msgid "Argument 'sets' must be a list of character vectors." +msgstr "" + +msgid "All columns used in 'sets' argument must be in 'by' too. Columns used in 'sets' but not present in 'by':" +msgstr "" + +msgid "When using `id=TRUE` the 'x' data.table must not have a column named 'grouping'." +msgstr "" + +msgid "Character vectors in 'sets' list must not have duplicated column names within a single grouping set." +msgstr "" + +msgid "Double counting is going to happen. Argument 'sets' should be unique without taking order into account, unless you really want double counting, then get used to that warning. Otherwise `sets=unique(lapply(sets, sort))` will do the trick." +msgstr "" + +msgid "Expression passed to grouping sets function must not update by reference. Use ':=' on results of your grouping function." +msgstr "" + +msgid "When using `id=TRUE` the 'j' expression must not evaluate to a column named 'grouping'." +msgstr "" + +msgid "There exists duplicated column names in the results, ensure the column passed/evaluated in `j` and those in `by` are not overlapping." +msgstr "" + +msgid "Using integer64 class columns require to have 'bit64' package installed." +msgstr "" + +msgid "internal error, package:xts is on search path but could not be loaded via requireNamespace" +msgstr "" + +msgid "Argument 'sort' should be logical TRUE/FALSE" +msgstr "" + +msgid "Argument 'no.dups' should be logical TRUE/FALSE" +msgstr "" + +msgid "You are trying to join data.tables where" +msgstr "" + +msgid "'x' and 'y' arguments are" +msgstr "" + +msgid "'x' argument is" +msgstr "" + +msgid "'y' argument is" +msgstr "" + +msgid "0 columns data.table." +msgstr "" + +msgid "`by.x` and `by.y` must be of same length." +msgstr "" + +msgid "Supplied both `by` and `by.x/by.y`. `by` argument will be ignored." +msgstr "" + +msgid "A non-empty vector of column names are required for `by.x` and `by.y`." +msgstr "" + +msgid "Elements listed in `by.x` must be valid column names in x." +msgstr "" + +msgid "Elements listed in `by.y` must be valid column names in y." +msgstr "" + +msgid "A non-empty vector of column names for `by` is required." +msgstr "" + +msgid "Elements listed in `by` must be valid column names in x and y" +msgstr "" + +msgid "column names" +msgstr "" + +msgid "are duplicated in the result" +msgstr "" + +msgid "IN DEVELOPMENT built" +msgstr "" + +msgid "using" +msgstr "" + +msgid "threads (see ?getDTthreads). Latest news: r-datatable.com" +msgstr "" + +msgid "**********\nThis development version of data.table was built more than 4 weeks ago. Please update: data.table::update.dev.pkg()\n**********" +msgstr "" + +msgid "**********\nThis installation of data.table has not detected OpenMP support. It should still work but in single-threaded mode." +msgstr "" + +msgid "If this is a Mac, please ensure you are using R>=3.4.0 and have followed our Mac instructions here: https://github.com/Rdatatable/data.table/wiki/Installation." +msgstr "" + +msgid "This warning message should not occur on Windows or Linux. If it does, please file a GitHub issue.\n**********" +msgstr "" + +msgid "There is no" +msgstr "" + +msgid "package in provided repository." +msgstr "" + +msgid "The option 'datatable.nomatch' is being used and is not set to the default NA. This option is still honored for now but will be deprecated in future. Please see NEWS for 1.12.4 for detailed information and motivation. To specify inner join, please specify `nomatch=NULL` explicitly in your calls rather than changing the default using this option." +msgstr "" + +msgid "The datatable." +msgstr "" + +msgid "version (" +msgstr "" + +msgid ") does not match the package (" +msgstr "" + +msgid "). Please close all R sessions to release the old" +msgstr "" + +msgid "and reinstall data.table in a fresh R session. The root cause is that R's package installer can in some unconfirmed circumstances leave a package in a state that is apparently functional but where new R code is calling old C code silently: https://bugs.r-project.org/bugzilla/show_bug.cgi?id=17478. Once a package is in this mismatch state it may produce wrong results silently until you next upgrade the package. Please help by adding precise circumstances to 17478 to move the status to confirmed. This mismatch between R and C code can happen with any package not just data.table. It is just that data.table has added this check." +msgstr "" + +msgid "Option 'datatable.old.bywithoutby' has been removed as warned for 2 years. It is now ignored. Please use by=.EACHI instead and stop using this option." +msgstr "" + +msgid "Unexpected base R behaviour: list(x) has copied x" +msgstr "" + +msgid "Unexpected base R behaviour: names<- has copied column contents" +msgstr "" + +msgid "Unexpected base R behaviour: DF[2,2]<- did not copy column 2 which was assigned to" +msgstr "" + +msgid "Unexpected base R behaviour: DF[2,2]<- copied the first column which was not assigned to, too" +msgstr "" + +msgid "Unexpected base R behaviour: DF[2,2]<- has not copied address(DF)" +msgstr "" + +msgid "Reminder to data.table developers: don't use getRversion() internally. Add a behaviour test to .onLoad instead." +msgstr "" + +msgid "Provide either threads= or percent= but not both" +msgstr "" + +msgid "percent= is provided but is length" +msgstr "" + +msgid "percent==" +msgstr "" + +msgid "but should be a number between 2 and 100" +msgstr "" + +msgid "Valid options for col.names are 'auto', 'top', and 'none'" +msgstr "" + +msgid "Column classes will be suppressed when col.names is 'none'" +msgstr "" + +msgid "Internal structure doesn't seem to be a list. Possibly corrupt data.table." +msgstr "" + +msgid "x may no longer be the character name of the data.table. The possibility was undocumented and has been removed." +msgstr "" + +msgid "set2key() is now deprecated. Please use setindex() instead." +msgstr "" + +msgid "set2keyv() is now deprecated. Please use setindexv() instead." +msgstr "" + +msgid "key2() is now deprecated. Please use indices() instead." +msgstr "" + +msgid "key(x)<-value is deprecated and not supported. Please change to use setkey() with perhaps copy(). Has been warning since 2012 and will be an error in future." +msgstr "" + +msgid "x is not a data.table" +msgstr "" + +msgid "cols is not a character vector. Please see further information in ?setkey." +msgstr "" + +msgid "Setting a physical key on .SD is reserved for possible future use; to modify the original data's order by group. Try setindex() instead. Or, set*(copy(.SD)) as a (slow) last resort." +msgstr "" + +msgid "cols is a character vector of zero length. Removed the key, but use NULL instead, or wrap with suppressWarnings() to avoid this warning." +msgstr "" + +msgid "cols is the empty string. Use NULL to remove the key." +msgstr "" + +msgid "cols contains some blanks." +msgstr "" + +msgid "some columns are not in the data.table:" +msgstr "" + +msgid "x contains a column called '.xi'. Conflicts with internal use by data.table." +msgstr "" + +msgid "' is type '" +msgstr "" + +msgid "' which is not supported as a key column type, currently." +msgstr "" + +msgid "Internal error. 'cols' should be character at this point in setkey; please report." +msgstr "" + +msgid "Internal error: index '" +msgstr "" + +msgid "' exists but is invalid" +msgstr "" + +msgid "Use 'if (length(o <- forderv(DT,by))) ...' for efficiency in one step, so you have o as well if not sorted." +msgstr "" + +msgid "x is vector but 'by' is supplied" +msgstr "" + +msgid "x is a single vector, non-NULL 'by' doesn't make sense" +msgstr "" + +msgid "Attempting to order a 0-column data.table or data.frame." +msgstr "" + +msgid "The first item passed to [f]order is a plain list but there are more items. It should be a data.table or data.frame." +msgstr "" + +msgid "Internal code should not be being called on type double" +msgstr "" + +msgid "Input is not a vector of type double. New parallel sort has only been done for double vectors so far. Using one thread." +msgstr "" + +msgid "New parallel sort has not been implemented for decreasing=TRUE so far. Using one thread." +msgstr "" + +msgid "New parallel sort has not been implemented for vectors containing NA values so far. Using one thread." +msgstr "" + +msgid "x must be a data.frame or data.table." +msgstr "" + +msgid "x must be a data.frame or data.table" +msgstr "" + +msgid "na.last must be logical TRUE/FALSE" +msgstr "" + +msgid "cols is not a character vector. Please see further information in ?setorder." +msgstr "" + +msgid "cols is a character vector of zero length. Use NULL instead, or wrap with suppressWarnings() to avoid this warning." +msgstr "" + +msgid "' which is not supported for ordering currently." +msgstr "" + +msgid "'sorted' is TRUE but element" +msgstr "" + +msgid "is non-atomic, which can't be sorted; try setting sorted = FALSE" +msgstr "" + +msgid "Cross product of elements provided to CJ() would result in" +msgstr "" + +msgid "rows which exceeds .Machine$integer.max ==" +msgstr "" + +msgid "x and y must both be data.tables" +msgstr "" + +msgid "length(by.x) != length(by.y)" +msgstr "" + +msgid "When x's column ('" +msgstr "" + +msgid "') is character, the corresponding column in y ('" +msgstr "" + +msgid "') should be factor or character, but found incompatible type '" +msgstr "" + +msgid "') is factor, the corresponding column in y ('" +msgstr "" + +msgid "') should be character or factor, but found incompatible type '" +msgstr "" + +msgid "') is integer or numeric, the corresponding column in y ('" +msgstr "" + +msgid "') can not be character or logical types, but found incompatible type '" +msgstr "" + +msgid "argument 'all' should be logical of length one" +msgstr "" + +msgid "x and y must have the same column names" +msgstr "" + +msgid "x and y must have the same column order" +msgstr "" + +msgid "unsupported column type" +msgstr "" + +msgid "found in x or y:" +msgstr "" + +msgid "of x is '" +msgstr "" + +msgid "' but the corresponding item of y is '" +msgstr "" + +msgid "None of the datasets should contain a column named '.seqn'" +msgstr "" + +msgid "'target' and 'current' must both be data.tables" +msgstr "" + +msgid "Internal error: ncol(current)==ncol(target) was checked above" +msgstr "" + +msgid "None of the datasets to compare should contain a column named '.seqn'" +msgstr "" + +msgid "Datasets to compare with 'ignore.row.order' must not have unsupported column types:" +msgstr "" + +msgid "Argument 'tolerance' was forced to lowest accepted value `sqrt(.Machine$double.eps)` from provided" +msgstr "" + +msgid "Duplicate rows in datasets, numeric columns and ignore.row.order cannot be used with non 0 tolerance argument" +msgstr "" + +msgid "Factor columns and ignore.row.order cannot be used with non 0 tolerance argument" +msgstr "" + +msgid "Internal error: factor type mismatch should have been caught earlier" +msgstr "" + +msgid "argument 'fill' ignored, only make sense for type='const'" +msgstr "" + +msgid "order.col='" +msgstr "" + +msgid "' not a column name of info" +msgstr "" + +msgid "data.table package is loaded. Unload or start a fresh R session." +msgstr "" + +msgid "'script' argument should not be NULL" +msgstr "" + +msgid "does not exist" +msgstr "" + +msgid "Timings count mismatch:" +msgstr "" + +msgid "vs" +msgstr "" + +msgid "out of" +msgstr "" + +msgid "in" +msgstr "" + +msgid "on" +msgstr "" + +msgid ". [" +msgstr "" + +msgid "Search" +msgstr "" + +msgid "for test number" +msgstr "" + +msgid "Test" +msgstr "" + +msgid "is invalid: when error= is provided it does not make sense to pass y as well" +msgstr "" + +msgid "Use started.at=proc.time() not Sys.time() (POSIXt and slow)" +msgstr "" + +msgid "make.names='" +msgstr "" + +msgid "' not found in names of input" +msgstr "" + +msgid "make.names=" +msgstr "" + +msgid "is out of range [1,ncol=" +msgstr "" + +msgid "'names' must be TRUE/FALSE or a character vector." +msgstr "" + +msgid "'keep' should contain integer values between" +msgstr "" + +msgid "length(names) (=" +msgstr "" + +msgid ") is not equal to length(" +msgstr "" + +msgid ") (=" +msgstr "" + +msgid ")." +msgstr "" + +msgid "l not type list" +msgstr "" + +msgid "x not boolean" +msgstr "" + +msgid "Some columns are type 'integer64' but package bit64 is not installed. Those columns will print as strange looking floating point data. There is no need to reload the data. Simply install.packages('bit64') to obtain the integer64 print method and print the data again." +msgstr "" + +msgid "Pattern" +msgstr "" + +msgid "not found: [" +msgstr "" + +msgid "Input xts object should not have 'index' column because it would result in duplicate column names. Rename 'index' column in xts or use `keep.rownames=FALSE` and add index manually as another column." +msgstr "" + +msgid "data.table must have a time based column in first position, use `setcolorder` function to change the order, or see ?timeBased for supported types" +msgstr "" + +msgid "Following columns are not numeric and will be omitted:" +msgstr "" diff --git a/po/R-zh_CN.po b/po/R-zh_CN.po new file mode 100644 index 0000000000..2469c2fe1d --- /dev/null +++ b/po/R-zh_CN.po @@ -0,0 +1,2104 @@ +msgid "" +msgstr "" +"Project-Id-Version: data.table 1.12.5\n" +"POT-Creation-Date: 2019-10-04 17:06\n" +"PO-Revision-Date: 2019-10-04 17:06+08\n" +"Last-Translator: Michael Chirico \n" +"Language-Team: Mandarin\n" +"Language: Mandarin\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +msgid "data.table package loaded. When developing don't load package" +msgstr "" + +msgid "" +"Internal error -- difftime objects may not be added to IDate, but Ops " +"dispatch should have intervened to prevent this" +msgstr "" + +msgid "binary + is not defined for \"IDate\" objects" +msgstr "" + +msgid "can only subtract from \"IDate\" objects" +msgstr "" + +msgid "Internal error: storage mode of IDate is somehow no longer integer" +msgstr "" + +msgid "unary - is not defined for \"IDate\" objects" +msgstr "" + +msgid "" +"Internal error -- difftime objects may not be subtracted from IDate, but Ops " +"dispatch should have intervened to prevent this" +msgstr "" + +msgid "Valid options for ms are 'truncate'," +msgstr "" + +msgid "'nearest', and 'ceil'." +msgstr "" + +msgid "" +"as.data.table.array method should only be called for arrays with 3+ " +"dimensions; use the matrix method for 2-dimensional arrays" +msgstr "" + +msgid "" +"Argument 'value.name' must be scalar character, non-NA and at least one " +"character" +msgstr "" + +msgid "Argument 'sorted' must be scalar logical and non-NA" +msgstr "" + +msgid "Argument 'na.rm' must be scalar logical and non-NA" +msgstr "" + +msgid "Please provide either 'key' or 'sorted', but not both." +msgstr "" + +msgid "Argument 'value.name' should not overlap with column names in result:" +msgstr "" + +msgid "" +"POSIXlt column type detected and converted to POSIXct. We do not recommend " +"use of POSIXlt at all because it uses 40 bytes to store one date." +msgstr "" + +msgid "Item" +msgstr "" + +msgid "has" +msgstr "" + +msgid "rows but longest item has" +msgstr "" + +msgid "; recycled with remainder." +msgstr "" + +msgid "has 0 rows but longest item has" +msgstr "" + +msgid "; filled with NA" +msgstr "" + +msgid "A column may not be called .SD. That has special meaning." +msgstr "" + +msgid "class must be length 1" +msgstr "" + +msgid "between has been passed an argument x of type logical" +msgstr "" + +msgid "" +"'between' function the 'x' argument is a POSIX class while 'lower' was not, " +"coercion to POSIX failed with:" +msgstr "" + +msgid "" +"'between' function the 'x' argument is a POSIX class while 'upper' was not, " +"coercion to POSIX failed with:" +msgstr "" + +msgid "" +"'between' lower= and upper= are both POSIXct but have different tzone " +"attributes:" +msgstr "" + +msgid ". Please align their time zones." +msgstr "" + +msgid "" +"'between' arguments are all POSIXct but have mismatched tzone attributes:" +msgstr "" + +msgid ". The UTC times will be compared." +msgstr "" + +msgid "trying to use integer64 class when 'bit64' package is not installed" +msgstr "" + +msgid "" +"Not yet implemented NAbounds=TRUE for this non-numeric and non-character type" +msgstr "" + +msgid "Some lower>upper for this non-numeric and non-character type" +msgstr "" + +msgid "RHS has length()" +msgstr "" + +msgid "; expecting length 2." +msgstr "" + +msgid "c" +msgstr "" + +msgid "Perhaps you meant %s?" +msgstr "" + +msgid "The first element should be the lower bound(s);" +msgstr "" + +msgid "the second element should be the upper bound(s)." +msgstr "" + +msgid "x." +msgstr "" + +msgid "is type" +msgstr "" + +msgid "which is not supported by data.table join" +msgstr "" + +msgid "i." +msgstr "" + +msgid "Attempting roll join on factor column when joining x." +msgstr "" + +msgid "to i." +msgstr "" + +msgid ". Only integer, double or character columns may be roll joined." +msgstr "" + +msgid "Incompatible join types: x." +msgstr "" + +msgid "(" +msgstr "" + +msgid ") and i." +msgstr "" + +msgid "). Factor columns must join to factor or character columns." +msgstr "" + +msgid ")" +msgstr "" + +msgid "Incompatible join types:" +msgstr "" + +msgid "is type integer64 but" +msgstr "" + +msgid "is type double and contains fractions" +msgstr "" + +msgid "roll is not implemented for non-equi joins yet." +msgstr "" + +msgid "Column name '_nqgrp_' is reserved for non-equi joins." +msgstr "" + +msgid "key argument of data.table() must be character" +msgstr "" + +msgid "Object '" +msgstr "" + +msgid "' not found. Perhaps you intended" +msgstr "" + +msgid "," +msgstr "" + +msgid "or" +msgstr "" + +msgid "more" +msgstr "" + +msgid "' not found amongst" +msgstr "" + +msgid "and" +msgstr "" + +msgid "Provide either by= or keyby= but not both" +msgstr "" + +msgid "Ignoring keyby= because j= is not supplied" +msgstr "" + +msgid "Ignoring by= because j= is not supplied" +msgstr "" + +msgid "" +"When on= is provided but not i=, on= must be a named list or data.table|" +"frame, and a natural join (i.e. join on common names) is invoked. Ignoring " +"on= which is '" +msgstr "" + +msgid "'." +msgstr "" + +msgid "" +"i and j are both missing so ignoring the other arguments. This warning will " +"be upgraded to error in future." +msgstr "" + +msgid "mult argument can only be 'first', 'last' or 'all'" +msgstr "" + +msgid "" +"roll must be a single TRUE, FALSE, positive/negative integer/double " +"including +Inf and -Inf or 'nearest'" +msgstr "" + +msgid "roll is '" +msgstr "" + +msgid "' (type character). Only valid character value is 'nearest'." +msgstr "" + +msgid "rollends must be a logical vector" +msgstr "" + +msgid "rollends must be length 1 or 2" +msgstr "" + +msgid "" +"nomatch= must be either NA or NULL (or 0 for backwards compatibility which " +"is the same as NULL)" +msgstr "" + +msgid "which= must be a logical vector length 1. Either FALSE, TRUE or NA." +msgstr "" + +msgid "which==" +msgstr "" + +msgid "" +"(meaning return row numbers) but j is also supplied. Either you need row " +"numbers or the result of j, but only one type of result can be returned." +msgstr "" + +msgid "" +"which=NA with nomatch=0 would always return an empty vector. Please change " +"or remove either which or nomatch." +msgstr "" + +msgid "j must be provided when with=FALSE" +msgstr "" + +msgid "" +"The symbol .. is invalid. The .. prefix must be followed by at least one " +"character." +msgstr "" + +msgid "Variable '" +msgstr "" + +msgid "" +"' is not found in calling scope. Looking in calling scope because you used " +"the .. prefix." +msgstr "" + +msgid "Variable '.." +msgstr "" + +msgid "" +"' does exist in calling scope though, so please just removed the .. prefix " +"from that variable name in calling scope." +msgstr "" + +msgid "Both '" +msgstr "" + +msgid "' and '.." +msgstr "" + +msgid "' exist in calling scope. Please remove the '.." +msgstr "" + +msgid "' variable in calling scope for clarity." +msgstr "" + +msgid "" +"Internal error: DT[, ..var] should be dealt with by the branch above now." +msgstr "" + +msgid "" +"' is not found in calling scope. Looking in calling scope because you set " +"with=FALSE. Also, please use .. symbol prefix and remove with=FALSE." +msgstr "" + +msgid "" +"You have wrapped := with {} which is ok but then := must be the only thing " +"inside {}. You have something else inside {} as well. Consider placing the " +"{} on the RHS of := instead; e.g. DT[,someCol:={tmpVar1<-...;tmpVar2<-...;" +"tmpVar1*tmpVar2}" +msgstr "" + +msgid "" +":= with keyby is only possible when i is not supplied since you can't setkey " +"on a subset of rows. Either change keyby to by or remove i" +msgstr "" + +msgid "nomatch isn't relevant together with :=, ignoring nomatch" +msgstr "" + +msgid "" +"not-join '!' prefix is present on i but nomatch is provided. Please remove " +"nomatch." +msgstr "" + +msgid "is not found in calling scope" +msgstr "" + +msgid "" +"When the first argument inside DT[...] is a single symbol (e.g. DT[var]), " +"data.table looks for var in calling scope." +msgstr "" + +msgid "" +"i is invalid type (matrix). Perhaps in future a 2 column matrix could return " +"a list of elements of DT (in the spirit of A[B] in FAQ 2.14). Please report " +"to data.table issue tracker if you'd like this, or add your comments to FR " +"#657." +msgstr "" + +msgid "" +"When i is a data.table (or character vector), the columns to join by must be " +"specified using 'on=' argument (see ?data.table), by keying x (i.e. sorted, " +"and, marked as sorted, see ?setkey), or by sharing column names between x " +"and i (i.e., a natural join). Keyed joins might have further speed benefits " +"on very large data due to x being sorted in RAM." +msgstr "" + +msgid "Attempting to do natural join but no common columns in provided tables" +msgstr "" + +msgid "Internal error. Cannot by=.EACHI when joining to a secondary key, yet" +msgstr "" + +msgid "Internal error. irows has length in by=.EACHI" +msgstr "" + +msgid "logical error. i is not a data.table, but 'on' argument is provided." +msgstr "" + +msgid "i has evaluated to type" +msgstr "" + +msgid ". Expecting logical, integer or double." +msgstr "" + +msgid "i evaluates to a logical vector length" +msgstr "" + +msgid "but there are" +msgstr "" + +msgid "" +"rows. Recycling of logical i is no longer allowed as it hides more bugs than " +"is worth the rare convenience. Explicitly use rep(...,length=.N) if you " +"really need to recycle." +msgstr "" + +msgid "Internal error: notjoin but byjoin or !integer or nomatch==NA" +msgstr "" + +msgid "" +"with=FALSE together with := was deprecated in v1.9.4 released Oct 2014. " +"Please wrap the LHS of := with parentheses; e.g., DT[,(myVar):=sum(b),by=a] " +"to assign to column name(s) held in variable myVar. See ?':=' for other " +"examples. As warned in 2014, this is now a warning." +msgstr "" + +msgid "" +"with=FALSE ignored, it isn't needed when using :=. See ?':=' for examples." +msgstr "" + +msgid "column(s) not removed because not found:" +msgstr "" + +msgid "column(s) not found:" +msgstr "" + +msgid "of j is" +msgstr "" + +msgid "which is outside the column number range [1,ncol=" +msgstr "" + +msgid "]" +msgstr "" + +msgid "j mixes positives and negatives" +msgstr "" + +msgid "" +"When with=FALSE, j-argument should be of type logical/character/integer " +"indicating the columns to select." +msgstr "" + +msgid "by=c(...), key(...) or names(...) must evaluate to 'character'" +msgstr "" + +msgid "'by' is a character vector length" +msgstr "" + +msgid "" +"but one or more items include a comma. Either pass a vector of column names " +"(which can contain spaces, but no commas), or pass a vector length 1 " +"containing comma separated column names. See ?data.table for other " +"possibilities." +msgstr "" + +msgid "Internal error: irows isn't integer" +msgstr "" + +msgid "" +"'by' appears to evaluate to column names but isn't c() or key(). Use " +"by=list(...) if you can. Otherwise, by=eval" +msgstr "" + +msgid "" +"should work. This is for efficiency so data.table can detect which columns " +"are needed." +msgstr "" + +msgid "" +"'by' or 'keyby' must evaluate to a vector or a list of vectors (where 'list' " +"includes data.table and data.frame which are lists, too)" +msgstr "" + +msgid "column or expression" +msgstr "" + +msgid "of 'by' or 'keyby' is type" +msgstr "" + +msgid "" +". Do not quote column names. Usage: DT[,sum(colC),by=list(colA,month(colB))]" +msgstr "" + +msgid "The items in the 'by' or 'keyby' list are length (" +msgstr "" + +msgid "). Each must be length" +msgstr "" + +msgid "" +"; the same length as there are rows in x (after subsetting if i is provided)." +msgstr "" + +msgid "of the .() or list() passed to j is missing" +msgstr "" + +msgid ".SDcols missing at the following indices:" +msgstr "" + +msgid ".SDcols is numeric but has both +ve and -ve indices" +msgstr "" + +msgid ".SDcols is numeric but out of bounds [1," +msgstr "" + +msgid "] at:" +msgstr "" + +msgid ".SDcols should be column numbers or names" +msgstr "" + +msgid "Some items of .SDcols are not column names:" +msgstr "" + +msgid "" +"This j doesn't use .SD but .SDcols has been supplied. Ignoring .SDcols. See ?" +"data.table." +msgstr "" + +msgid "" +".SD is locked. Using := in .SD's j is reserved for possible future use; a " +"tortuously flexible way to modify by group. Use := in j directly to modify " +"by group by reference." +msgstr "" + +msgid "In `:=`(col1=val1, col2=val2, ...) form, all arguments must be named." +msgstr "" + +msgid "" +"LHS of := must be a symbol, or an atomic vector (column names or positions)." +msgstr "" + +msgid "" +"LHS of := appears to be column positions but are outside [1,ncol] range. New " +"columns can only be added by name." +msgstr "" + +msgid "" +"LHS of := isn't column names ('character') or positions ('integer' or " +"'numeric')" +msgstr "" + +msgid "" +"Invalid .internal.selfref detected and fixed by taking a (shallow) copy of " +"the data.table so that := can add this new column by reference. At an " +"earlier point, this data.table has been copied by R (or was created manually " +"using structure() or similar). Avoid names<- and attr<- which in R currently " +"(and oddly) may copy the whole data.table. Use set* syntax instead to avoid " +"copying: ?set, ?setnames and ?setattr. If this message doesn't help, please " +"report your use case to the data.table issue tracker so the root cause can " +"be fixed or this message improved." +msgstr "" + +msgid "" +"Cannot assign to an under-allocated recursively indexed list -- L[[i]][,:=] " +"syntax is only valid when i is length 1, but it's length" +msgstr "" + +msgid "Internal error -- item '" +msgstr "" + +msgid "' not found in names of list" +msgstr "" + +msgid "Internal error -- column(s) not found:" +msgstr "" + +msgid "" +"strptime() usage detected and wrapped with as.POSIXct(). This is to minimize " +"the chance of assigning POSIXlt columns, which use 40+ bytes to store one " +"date (versus 8 for POSIXct). Use as.POSIXct() (which will call strptime() as " +"needed internally) to avoid this warning." +msgstr "" + +msgid "" +"' is not found in calling scope. Looking in calling scope because this " +"symbol was prefixed with .. in the j= parameter." +msgstr "" + +msgid "Internal error: xcolAns does not pass checks:" +msgstr "" + +msgid "" +"Internal error: irows is NULL when making join result at R level. Should no " +"longer happen now we use CsubsetDT earlier." +msgstr "" + +msgid "j (the 2nd argument inside [...]) is a single symbol but column name '" +msgstr "" + +msgid "' is not found. Perhaps you intended DT[, .." +msgstr "" + +msgid "" +"]. This difference to data.frame is deliberate and explained in FAQ 1.1." +msgstr "" + +msgid "" +"Internal error: j has created a data.table result containing a NULL column" +msgstr "" + +msgid "" +"The column '.N' can't be grouped because it conflicts with the special .N " +"variable. Try setnames(DT,'.N','N') first." +msgstr "" + +msgid "" +"The column '.I' can't be grouped because it conflicts with the special .I " +"variable. Try setnames(DT,'.I','I') first." +msgstr "" + +msgid "logical error. i is not data.table, but mult='all' and 'by'=.EACHI" +msgstr "" + +msgid "Internal error: by= is missing" +msgstr "" + +msgid "Internal error: byindex not the index name" +msgstr "" + +msgid "Internal error: byindex not found" +msgstr "" + +msgid "" +"Unable to optimize call to mean() and could be very slow. You must name 'na." +"rm' like that otherwise if you do mean(x,TRUE) the TRUE is taken to mean " +"'trim' which is the 2nd argument of mean. 'trim' is not yet optimized." +msgstr "" + +msgid "Internal error: length(irows)!=length(o__)" +msgstr "" + +msgid "" +"The setkey() normally performed by keyby= has been skipped (as if by= was " +"used) because := is being used together with keyby= but the keyby= contains " +"some expressions. To avoid this warning, use by= instead, or provide " +"existing column names to keyby=." +msgstr "" + +msgid "Internal error: jvnames is length" +msgstr "" + +msgid "but ans is" +msgstr "" + +msgid "and bynames is" +msgstr "" + +msgid "rownames and rownames.value cannot both be used at the same time" +msgstr "" + +msgid "length(rownames)==" +msgstr "" + +msgid "but nrow(DT)==" +msgstr "" + +msgid "" +". The rownames argument specifies a single column name or number. Consider " +"rownames.value= instead." +msgstr "" + +msgid "" +"length(rownames)==0 but should be a single column name or number, or NULL" +msgstr "" + +msgid "rownames is TRUE but key has multiple columns" +msgstr "" + +msgid "; taking first column x[,1] as rownames" +msgstr "" + +msgid "'" +msgstr "" + +msgid "' is not a column of x" +msgstr "" + +msgid "as.integer(rownames)==" +msgstr "" + +msgid "]." +msgstr "" + +msgid "length(rownames.value)==" +msgstr "" + +msgid "but should be nrow(x)==" +msgstr "" + +msgid "" +"When i is a matrix in DT[i]<-value syntax, it doesn't make sense to provide j" +msgstr "" + +msgid "j must be an atomic vector, see ?is.atomic" +msgstr "" + +msgid "NA in j" +msgstr "" + +msgid "j must be vector of column name or positions" +msgstr "" + +msgid "" +"Attempt to assign to column position greater than ncol(x). Create the column " +"by name, instead. This logic intends to catch (most likely) user errors." +msgstr "" + +msgid "" +"data.table inherits from data.frame (from v1.5), but this data.table does " +"not. Has it been created manually (e.g. by using 'structure' rather than " +"'data.table') or saved to disk using a prior version of data.table?" +msgstr "" + +msgid "attempting to assign invalid object to dimnames of a data.table" +msgstr "" + +msgid "data.tables do not have rownames" +msgstr "" + +msgid "Can't assign" +msgstr "" + +msgid "colnames to a" +msgstr "" + +msgid "-column data.table" +msgstr "" + +msgid "'subset' must evaluate to logical" +msgstr "" + +msgid "Argument 'invert' must be logical TRUE/FALSE" +msgstr "" + +msgid "x argument must be a data.table" +msgstr "" + +msgid "group length is 0 but data nrow > 0" +msgstr "" + +msgid "" +"passing 'f' argument together with 'by' is not allowed, use 'by' when split " +"by column in data.table and 'f' when split by external factor" +msgstr "" + +msgid "Either 'by' or 'f' argument must be supplied" +msgstr "" + +msgid "Column '.ll.tech.split' is reserved for split.data.table processing" +msgstr "" + +msgid "Column '.nm.tech.split' is reserved for split.data.table processing" +msgstr "" + +msgid "Argument 'by' must refer to column names in x" +msgstr "" + +msgid "" +"Argument 'by' must refer only to atomic-type columns, but the following " +"columns are non-atomic:" +msgstr "" + +msgid "" +"x is not a data.table. Shallow copy is a copy of the vector of column " +"pointers (only), so is only meaningful for data.table" +msgstr "" + +msgid "setalloccol attempting to modify `*tmp*`" +msgstr "" + +msgid "" +"Input is a length=1 logical that points to the same address as R's global " +"value. Therefore the attribute has not been set by reference, rather on a " +"copy. You will need to assign the result back to a variable. See issue #1281." +msgstr "" + +msgid "x is not a data.table or data.frame" +msgstr "" + +msgid "x has" +msgstr "" + +msgid "columns but its names are length" +msgstr "" + +msgid "Passed a vector of type '" +msgstr "" + +msgid "'. Needs to be type 'character'." +msgstr "" + +msgid "names to a" +msgstr "" + +msgid "column data.table" +msgstr "" + +msgid "When 'new' is provided, 'old' must be provided too" +msgstr "" + +msgid "'new' is not a character vector or a function" +msgstr "" + +msgid "NA in 'new' at positions" +msgstr "" + +msgid "Some duplicates exist in 'old':" +msgstr "" + +msgid "'old' is type" +msgstr "" + +msgid "but should be integer, double or character" +msgstr "" + +msgid "'old' is length" +msgstr "" + +msgid "but 'new' is length" +msgstr "" + +msgid "NA (or out of bounds) in 'old' at positions" +msgstr "" + +msgid "of 'old' is '" +msgstr "" + +msgid "" +"' which appears several times in column names. Just the first will be " +"changed. There are" +msgstr "" + +msgid "other items in old that are also duplicated in column names." +msgstr "" + +msgid "Items of 'old' not found in column names:" +msgstr "" + +msgid ". Consider skip_absent=TRUE." +msgstr "" + +msgid "Internal error: length(i)!=length(new)" +msgstr "" + +msgid "x has some duplicated column name(s):" +msgstr "" + +msgid ". Please remove or rename the duplicate(s) and try again." +msgstr "" + +msgid "Input is" +msgstr "" + +msgid "but should be a plain list of items to be stacked" +msgstr "" + +msgid "" +"idcol must be a logical or character vector of length 1. If logical TRUE the " +"id column will named '.id'." +msgstr "" + +msgid "use.names=NA invalid" +msgstr "" + +msgid "" +"use.names='check' cannot be used explicitly because the value 'check' is new " +"in v1.12.2 and subject to change. It is just meant to convey default " +"behavior. See ?rbindlist." +msgstr "" + +msgid "" +"Check that is.data.table(DT) == TRUE. Otherwise, := and `:=`(...) are " +"defined for use in j, once only and in particular ways. See help(\":=\")." +msgstr "" + +msgid "" +"setDF only accepts data.table, data.frame or list of equal length as input" +msgstr "" + +msgid "rownames contains duplicates" +msgstr "" + +msgid "rownames incorrect length; expected" +msgstr "" + +msgid "names, got" +msgstr "" + +msgid "All elements in argument 'x' to 'setDF' must be of same length" +msgstr "" + +msgid "Cannot find symbol" +msgstr "" + +msgid "Cannot convert '" +msgstr "" + +msgid "" +"' to data.table by reference because binding is locked. It is very likely " +"that '" +msgstr "" + +msgid "" +"' resides within a package (or an environment) that is locked to prevent " +"modifying its variable bindings. Try copying the object to your current " +"environment, ex: var <- copy(var) and then using setDT again." +msgstr "" + +msgid "Some columns are a multi-column type (such as a matrix column):" +msgstr "" + +msgid "" +". setDT will retain these columns as-is but subsequent operations like " +"grouping and joining may fail. Please consider as.data.table() instead which " +"will create a new column for each embedded column." +msgstr "" + +msgid "Column" +msgstr "" + +msgid "" +"is of POSIXlt type. Please convert it to POSIXct using as.POSIXct and run " +"setDT again. We do not recommend use of POSIXlt at all because it uses 40 " +"bytes to store one date." +msgstr "" + +msgid "" +"All elements in argument 'x' to 'setDT' must be of same length, but the " +"profile of input lengths (length:frequency) is:" +msgstr "" + +msgid "%s:%d" +msgstr "" + +msgid "The first entry with fewer than" +msgstr "" + +msgid "entries is" +msgstr "" + +msgid "" +"Argument 'x' to 'setDT' should be a 'list', 'data.frame' or 'data.table'" +msgstr "" + +msgid "Item '" +msgstr "" + +msgid "' not found in names of input list" +msgstr "" + +msgid "'prefix' must be NULL or a character vector of length 1." +msgstr "" + +msgid "x is a single vector, non-NULL 'cols' doesn't make sense." +msgstr "" + +msgid "x is a list, 'cols' cannot be 0-length." +msgstr "" + +msgid "RHS of" +msgstr "" + +msgid "is length" +msgstr "" + +msgid "which is not 1 or nrow (" +msgstr "" + +msgid "" +"). For robustness, no recycling is allowed (other than of length 1 RHS). " +"Consider %in% instead." +msgstr "" + +msgid "" +"Internal error in .isFastSubsettable. Please report to data.table developers" +msgstr "" + +msgid "" +"'on' argument should be a named atomic vector of column names indicating " +"which columns in 'i' should be joined with which columns in 'x'." +msgstr "" + +msgid "Found more than one operator in one 'on' statement:" +msgstr "" + +msgid ". Please specify a single operator." +msgstr "" + +msgid "'on' contains no column name:" +msgstr "" + +msgid ". Each 'on' clause must contain one or two column names." +msgstr "" + +msgid "'on' contains more than 2 column names:" +msgstr "" + +msgid "Invalid operators" +msgstr "" + +msgid ". Only allowed operators are" +msgstr "" + +msgid "." +msgstr "" + +msgid "'fromLast' must be TRUE or FALSE" +msgstr "" + +msgid "x must be an atomic vector or data.frames/data.tables" +msgstr "" + +msgid "Using '" +msgstr "" + +msgid "' as value column. Use 'value.var' to override" +msgstr "" + +msgid "The dcast generic in data.table has been passed a" +msgstr "" + +msgid "" +", but data.table::dcast currently only has a method for data.tables. Please " +"confirm your input is a data.table, with setDT(" +msgstr "" + +msgid ") or as.data.table(" +msgstr "" + +msgid "" +"). If you intend to use a reshape2::dcast, try installing that package " +"first, but do note that reshape2 is deprecated and you should be migrating " +"your code away from using it." +msgstr "" + +msgid "" +"and will attempt to redirect to the reshape2::dcast; please note that " +"reshape2 is deprecated, and this redirection is now deprecated as well. " +"Please do this redirection yourself like reshape2::dcast(" +msgstr "" + +msgid "). In the next version, this warning will become an error." +msgstr "" + +msgid "" +"Invalid formula. Cast formula should be of the form LHS ~ RHS, for e.g., a + " +"b ~ c." +msgstr "" + +msgid "data.table to cast must have unique column names" +msgstr "" + +msgid "value.var values [" +msgstr "" + +msgid "] are not found in 'data'." +msgstr "" + +msgid "" +"When 'fun.aggregate' and 'value.var' are both lists, 'value.var' must be " +"either of length =1 or =length(fun.aggregate)." +msgstr "" + +msgid "'data' must be a data.table." +msgstr "" + +msgid "'drop' must be logical TRUE/FALSE" +msgstr "" + +msgid "Column [" +msgstr "" + +msgid "] not found or of unknown type." +msgstr "" + +msgid "Columns specified in formula can not be of type list" +msgstr "" + +msgid "Can not cast an empty data.table" +msgstr "" + +msgid "Aggregate function missing, defaulting to 'length'" +msgstr "" + +msgid "Internal error -- empty rhsnames in dcast; please report" +msgstr "" + +msgid "The melt generic in data.table has been passed a" +msgstr "" + +msgid "" +", but data.table::melt currently only has a method for data.tables. Please " +"confirm your input is a data.table, with setDT(" +msgstr "" + +msgid "" +"). If you intend to use a method from reshape2, try installing that package " +"first, but do note that reshape2 is deprecated and you should be migrating " +"your code away from using it." +msgstr "" + +msgid "" +"and will attempt to redirect to the relevant reshape2 method; please note " +"that reshape2 is deprecated, and this redirection is now deprecated as well. " +"To continue using melt methods from reshape2 while both libraries are " +"attached, e.g. melt.list, you can prepend the namespace like reshape2::melt(" +msgstr "" + +msgid "Input patterns must be of type character." +msgstr "" + +msgid "'data' must be a data.table" +msgstr "" + +msgid "'value.name' provided in both 'measure.vars'" +msgstr "" + +msgid "and 'value.name argument'; value provided in" +msgstr "" + +msgid "'measure.vars' is given precedence." +msgstr "" + +msgid "Please provide a name to each element of 'measure.vars'." +msgstr "" + +msgid "" +"y and x must both be data.tables. Use `setDT()` to convert list/data.frames " +"to data.tables by reference or as.data.table() to convert to data.tables by " +"copying." +msgstr "" + +msgid "maxgap must be a non-negative integer value of length 1" +msgstr "" + +msgid "minoverlap must be a positive integer value of length 1" +msgstr "" + +msgid "which must be a logical vector of length 1. Either TRUE/FALSE" +msgstr "" + +msgid "nomatch must either be NA or NULL" +msgstr "" + +msgid "maxgap and minoverlap arguments are not yet implemented." +msgstr "" + +msgid "" +"'y' must be keyed (i.e., sorted, and, marked as sorted). Call setkey(y, ...) " +"first, see ?setkey. Also check the examples in ?foverlaps." +msgstr "" + +msgid "" +"'by.x' and 'by.y' should contain at least two column names (or numbers) each " +"- corresponding to 'start' and 'end' points of intervals. Please see ?" +"foverlaps and examples for more info." +msgstr "" + +msgid "" +"Invalid numeric value for 'by.x'; it should be a vector with values 1 <= by." +"x <= length(x)" +msgstr "" + +msgid "" +"Invalid numeric value for 'by.y'; it should be a vector with values 1 <= by." +"y <= length(y)" +msgstr "" + +msgid "A non-empty vector of column names or numbers is required for by.x" +msgstr "" + +msgid "A non-empty vector of column names or numbers is required for by.y" +msgstr "" + +msgid "The first" +msgstr "" + +msgid "columns of y's key must be identical to the columns specified in by.y." +msgstr "" + +msgid "Elements listed in 'by.x' must be valid names in data.table 'x'" +msgstr "" + +msgid "" +"Duplicate columns are not allowed in overlap joins. This may change in the " +"future." +msgstr "" + +msgid "" +"length(by.x) != length(by.y). Columns specified in by.x should correspond to " +"columns specified in by.y and should be of same lengths." +msgstr "" + +msgid "y has some duplicated column name(s):" +msgstr "" + +msgid "" +"The last two columns in by.x should correspond to the 'start' and 'end' " +"intervals in data.table 'x' and must be integer/numeric type." +msgstr "" + +msgid "NA values in data.table 'x' start column: '" +msgstr "" + +msgid "" +"'. All rows with NA values in the range columns must be removed for " +"foverlaps() to work." +msgstr "" + +msgid "NA values in data.table 'x' end column: '" +msgstr "" + +msgid "All entries in column" +msgstr "" + +msgid "should be <= corresponding entries in column" +msgstr "" + +msgid "in data.table 'x'." +msgstr "" + +msgid "" +"The last two columns in by.y should correspond to the 'start' and 'end' " +"intervals in data.table 'y' and must be integer/numeric type." +msgstr "" + +msgid "NA values in data.table 'y' start column: '" +msgstr "" + +msgid "NA values in data.table 'y' end column: '" +msgstr "" + +msgid "in data.table 'y'." +msgstr "" + +msgid "" +"Some interval cols are of type POSIXct while others are not. Please ensure " +"all interval cols are (or are not) of POSIXct type" +msgstr "" + +msgid "" +"POSIXct interval cols have mixed timezones. Overlaps are performed on the " +"internal numerical representation of POSIXct objects (always in UTC epoch " +"time), therefore printed values may give the impression that values don't " +"overlap but their internal representations do Please ensure that POSIXct " +"type interval cols have identical 'tzone' attributes to avoid confusion." +msgstr "" + +msgid "Not yet implemented" +msgstr "" + +msgid "maxgap > minoverlap. maxgap will have no effect here." +msgstr "" + +msgid "length(na.last) = 0" +msgstr "" + +msgid "length(na.last) > 1, only the first element will be used" +msgstr "" + +msgid "x is a single vector, non-NULL 'cols' doesn't make sense" +msgstr "" + +msgid "x is a list, 'cols' can not be 0-length" +msgstr "" + +msgid "Used more than one of the arguments input=, file=, text= and cmd=." +msgstr "" + +msgid "Argument 'encoding' must be 'unknown', 'UTF-8' or 'Latin-1'." +msgstr "" + +msgid "'text=' is type" +msgstr "" + +msgid "but must be character." +msgstr "" + +msgid "" +"input= must be a single character string containing a file name, a system " +"command containing at least one space, a URL starting 'http[s]://', " +"'ftp[s]://' or 'file://', or, the input data itself containing at least one " +"\\n or \\r" +msgstr "" + +msgid "" +"input= contains no \\n or \\r, but starts with a space. Please remove the " +"leading space, or use text=, file= or cmd=" +msgstr "" + +msgid "" +"Input URL requires https:// connection for which fread() requires 'curl' " +"package which cannot be found. Please install 'curl' using 'install." +"packages('curl')'." +msgstr "" + +msgid "Taking input= as a system command ('" +msgstr "" + +msgid "" +"') and a variable has been used in the expression passed to `input=`. Please " +"use fread(cmd=...). There is a security concern if you are creating an app, " +"and the app could have a malicious user, and the app is not running in a " +"secure environment; e.g. the app is running as root. Please read item 5 in " +"the NEWS file for v1.11.6 for more information and for the option to " +"suppress this message." +msgstr "" + +msgid "File '" +msgstr "文件'" + +msgid "' does not exist or is non-readable. getwd()=='" +msgstr "" + +msgid "' is a directory. Not yet implemented." +msgstr "'是个目录。还没有编程实现。" + +msgid "' has size 0. Returning a NULL" +msgstr "" + +msgid "data.table" +msgstr "" + +msgid "data.frame" +msgstr "" + +msgid "" +"To read gz and bz2 files directly, fread() requires 'R.utils' package which " +"cannot be found. Please install 'R.utils' using 'install.packages('R." +"utils')'." +msgstr "" + +msgid "" +"'autostart' is now deprecated and ignored. Consider skip='string' or skip=n" +msgstr "" + +msgid "" +"colClasses is type 'logical' which is ok if all NA but it has some TRUE or " +"FALSE values in it which is not allowed. Please consider the drop= or " +"select= argument instead. See ?fread." +msgstr "" + +msgid "colClasses is not type list or character vector" +msgstr "" + +msgid "" +"colClasses=\"NULL\" (quoted) is interpreted as colClasses=NULL (the default) " +"as opposed to dropping every column." +msgstr "" + +msgid "" +"strip.white==TRUE (default) and \"\" is present in na.strings, so any number " +"of spaces in string columns will already be read as ." +msgstr "" + +msgid "" +"Since strip.white=TRUE (default), use na.strings=\"\" to specify that any " +"number of spaces in a string column should be read as ." +msgstr "" + +msgid "" +"But strip.white=FALSE. Use strip.white=TRUE (default) together with na." +"strings=\"\" to turn any number of spaces in string columns into " +msgstr "" + +msgid "" +"'data.table' relies on the package 'yaml' to parse the file header; please " +"add this to your library with install.packages('yaml') and try again." +msgstr "" + +msgid "" +"Combining a search string as 'skip' and reading a YAML header may not work " +"as expected -- currently," +msgstr "" + +msgid "" +"reading will proceed to search for 'skip' from the beginning of the file, " +"NOT from the end of" +msgstr "" + +msgid "" +"the metadata; please file an issue on GitHub if you'd like to see more " +"intuitive behavior supported." +msgstr "" + +msgid "Encountered <" +msgstr "" + +msgid "..." +msgstr "" + +msgid "> at the first" +msgstr "" + +msgid "unskipped line (" +msgstr "" + +msgid "), which does not constitute the start to a valid YAML header" +msgstr "" + +msgid "(expecting something matching regex \"" +msgstr "" + +msgid "\"); please check your input and try again." +msgstr "" + +msgid "" +"Reached the end of the file before finding a completion to the YAML header. " +"A valid YAML header is bookended by lines matching" +msgstr "" + +msgid "the regex \"" +msgstr "" + +msgid "\". Please double check the input file is a valid csvy." +msgstr "" + +msgid "User-supplied 'header' will override that found in metadata." +msgstr "" + +msgid "" +"User-supplied column names in 'col.names' will override those found in YAML " +"metadata." +msgstr "" + +msgid "" +"colClasses dictated by user input and those read from YAML header are in " +"conflict (specifically, for column" +msgstr "" + +msgid "s" +msgstr "" + +msgid "[" +msgstr "" + +msgid "]); the proceeding assumes the user input was" +msgstr "" + +msgid "" +"an intentional override and will ignore the types implied by the YAML " +"header; please exclude" +msgstr "" + +msgid "these columns" +msgstr "" + +msgid "this column from colClasses if this was unintentional." +msgstr "" + +msgid "User-supplied 'sep' will override that found in metadata." +msgstr "" + +msgid "User-supplied 'quote' will override that found in metadata." +msgstr "" + +msgid "User-supplied 'dec' will override that found in metadata." +msgstr "" + +msgid "User-supplied 'na.strings' will override that found in metadata." +msgstr "" + +msgid "Column '" +msgstr "" + +msgid "' was requested to be '" +msgstr "" + +msgid "' but fread encountered the following" +msgstr "" + +msgid "error" +msgstr "" + +msgid "warning" +msgstr "" + +msgid ":" +msgstr "" + +msgid "so the column has been left as type '" +msgstr "" + +msgid "" +"key argument of data.table() must be a character vector naming columns (NB: " +"col.names are applied before this)" +msgstr "" + +msgid "" +"index argument of data.table() must be a character vector naming columns " +"(NB: col.names are applied before this)" +msgstr "" + +msgid "dateTimeAs must be a single string" +msgstr "" + +msgid "dateTimeAs must be 'ISO','squash','epoch' or 'write.csv'" +msgstr "" + +msgid "logicalAsInt has been renamed logical01. Use logical01 only, not both." +msgstr "" + +msgid "x being coerced from class: matrix to data.table" +msgstr "" + +msgid "Input has no columns; doing nothing." +msgstr "" + +msgid "If you intended to overwrite the file at" +msgstr "" + +msgid "with an empty one, please use file.remove first." +msgstr "" + +msgid "Input has no columns; creating an empty file at '" +msgstr "" + +msgid "' and exiting." +msgstr "" + +msgid "" +"'data.table' relies on the package 'yaml' to write the file header; please " +"add this to your library with install.packages('yaml') and try again." +msgstr "" + +msgid "Argument 'x' must be a data.table object" +msgstr "" + +msgid "" +"Argument 'by' must be a character vector of column names used in grouping." +msgstr "" + +msgid "Argument 'id' must be a logical scalar." +msgstr "" + +msgid "" +"Argument 'x' is a 0-column data.table; no measure to apply grouping over." +msgstr "" + +msgid "Input data.table must not contain duplicate column names." +msgstr "" + +msgid "Argument 'by' must have unique column names for grouping." +msgstr "" + +msgid "Argument 'sets' must be a list of character vectors." +msgstr "" + +msgid "" +"All columns used in 'sets' argument must be in 'by' too. Columns used in " +"'sets' but not present in 'by':" +msgstr "" + +msgid "" +"When using `id=TRUE` the 'x' data.table must not have a column named " +"'grouping'." +msgstr "" + +msgid "" +"Character vectors in 'sets' list must not have duplicated column names " +"within a single grouping set." +msgstr "" + +msgid "" +"Double counting is going to happen. Argument 'sets' should be unique without " +"taking order into account, unless you really want double counting, then get " +"used to that warning. Otherwise `sets=unique(lapply(sets, sort))` will do " +"the trick." +msgstr "" + +msgid "" +"Expression passed to grouping sets function must not update by reference. " +"Use ':=' on results of your grouping function." +msgstr "" + +msgid "" +"When using `id=TRUE` the 'j' expression must not evaluate to a column named " +"'grouping'." +msgstr "" + +msgid "" +"There exists duplicated column names in the results, ensure the column " +"passed/evaluated in `j` and those in `by` are not overlapping." +msgstr "" + +msgid "" +"Using integer64 class columns require to have 'bit64' package installed." +msgstr "" + +msgid "" +"internal error, package:xts is on search path but could not be loaded via " +"requireNamespace" +msgstr "" + +msgid "Argument 'sort' should be logical TRUE/FALSE" +msgstr "" + +msgid "Argument 'no.dups' should be logical TRUE/FALSE" +msgstr "" + +msgid "You are trying to join data.tables where" +msgstr "" + +msgid "'x' and 'y' arguments are" +msgstr "" + +msgid "'x' argument is" +msgstr "" + +msgid "'y' argument is" +msgstr "" + +msgid "0 columns data.table." +msgstr "" + +msgid "`by.x` and `by.y` must be of same length." +msgstr "" + +msgid "Supplied both `by` and `by.x/by.y`. `by` argument will be ignored." +msgstr "" + +msgid "A non-empty vector of column names are required for `by.x` and `by.y`." +msgstr "" + +msgid "Elements listed in `by.x` must be valid column names in x." +msgstr "" + +msgid "Elements listed in `by.y` must be valid column names in y." +msgstr "" + +msgid "A non-empty vector of column names for `by` is required." +msgstr "" + +msgid "Elements listed in `by` must be valid column names in x and y" +msgstr "" + +msgid "column names" +msgstr "" + +msgid "are duplicated in the result" +msgstr "" + +msgid "IN DEVELOPMENT built" +msgstr "" + +msgid "using" +msgstr "" + +msgid "threads (see ?getDTthreads). Latest news: r-datatable.com" +msgstr "" + +msgid "" +"**********\n" +"This development version of data.table was built more than 4 weeks ago. " +"Please update: data.table::update.dev.pkg()\n" +"**********" +msgstr "" + +msgid "" +"**********\n" +"This installation of data.table has not detected OpenMP support. It should " +"still work but in single-threaded mode." +msgstr "" + +msgid "" +"If this is a Mac, please ensure you are using R>=3.4.0 and have followed our " +"Mac instructions here: https://github.com/Rdatatable/data.table/wiki/" +"Installation." +msgstr "" + +msgid "" +"This warning message should not occur on Windows or Linux. If it does, " +"please file a GitHub issue.\n" +"**********" +msgstr "" + +msgid "There is no" +msgstr "" + +msgid "package in provided repository." +msgstr "" + +msgid "" +"The option 'datatable.nomatch' is being used and is not set to the default " +"NA. This option is still honored for now but will be deprecated in future. " +"Please see NEWS for 1.12.4 for detailed information and motivation. To " +"specify inner join, please specify `nomatch=NULL` explicitly in your calls " +"rather than changing the default using this option." +msgstr "" + +msgid "The datatable." +msgstr "" + +msgid "version (" +msgstr "" + +msgid ") does not match the package (" +msgstr "" + +msgid "). Please close all R sessions to release the old" +msgstr "" + +msgid "" +"and reinstall data.table in a fresh R session. The root cause is that R's " +"package installer can in some unconfirmed circumstances leave a package in a " +"state that is apparently functional but where new R code is calling old C " +"code silently: https://bugs.r-project.org/bugzilla/show_bug.cgi?id=17478. " +"Once a package is in this mismatch state it may produce wrong results " +"silently until you next upgrade the package. Please help by adding precise " +"circumstances to 17478 to move the status to confirmed. This mismatch " +"between R and C code can happen with any package not just data.table. It is " +"just that data.table has added this check." +msgstr "" + +msgid "" +"Option 'datatable.old.bywithoutby' has been removed as warned for 2 years. " +"It is now ignored. Please use by=.EACHI instead and stop using this option." +msgstr "" + +msgid "Unexpected base R behaviour: list(x) has copied x" +msgstr "" + +msgid "Unexpected base R behaviour: names<- has copied column contents" +msgstr "" + +msgid "" +"Unexpected base R behaviour: DF[2,2]<- did not copy column 2 which was " +"assigned to" +msgstr "" + +msgid "" +"Unexpected base R behaviour: DF[2,2]<- copied the first column which was not " +"assigned to, too" +msgstr "" + +msgid "Unexpected base R behaviour: DF[2,2]<- has not copied address(DF)" +msgstr "" + +msgid "" +"Reminder to data.table developers: don't use getRversion() internally. Add a " +"behaviour test to .onLoad instead." +msgstr "" + +msgid "Provide either threads= or percent= but not both" +msgstr "" + +msgid "percent= is provided but is length" +msgstr "" + +msgid "percent==" +msgstr "" + +msgid "but should be a number between 2 and 100" +msgstr "" + +msgid "Valid options for col.names are 'auto', 'top', and 'none'" +msgstr "" + +msgid "Column classes will be suppressed when col.names is 'none'" +msgstr "" + +msgid "" +"Internal structure doesn't seem to be a list. Possibly corrupt data.table." +msgstr "" + +msgid "" +"x may no longer be the character name of the data.table. The possibility was " +"undocumented and has been removed." +msgstr "" + +msgid "set2key() is now deprecated. Please use setindex() instead." +msgstr "" + +msgid "set2keyv() is now deprecated. Please use setindexv() instead." +msgstr "" + +msgid "key2() is now deprecated. Please use indices() instead." +msgstr "" + +msgid "" +"key(x)<-value is deprecated and not supported. Please change to use setkey() " +"with perhaps copy(). Has been warning since 2012 and will be an error in " +"future." +msgstr "" + +msgid "x is not a data.table" +msgstr "" + +msgid "" +"cols is not a character vector. Please see further information in ?setkey." +msgstr "" + +msgid "" +"Setting a physical key on .SD is reserved for possible future use; to modify " +"the original data's order by group. Try setindex() instead. Or, set*(copy(." +"SD)) as a (slow) last resort." +msgstr "" + +msgid "" +"cols is a character vector of zero length. Removed the key, but use NULL " +"instead, or wrap with suppressWarnings() to avoid this warning." +msgstr "" + +msgid "cols is the empty string. Use NULL to remove the key." +msgstr "" + +msgid "cols contains some blanks." +msgstr "" + +msgid "some columns are not in the data.table:" +msgstr "" + +msgid "" +"x contains a column called '.xi'. Conflicts with internal use by data.table." +msgstr "" + +msgid "' is type '" +msgstr "" + +msgid "' which is not supported as a key column type, currently." +msgstr "" + +msgid "" +"Internal error. 'cols' should be character at this point in setkey; please " +"report." +msgstr "" + +msgid "Internal error: index '" +msgstr "" + +msgid "' exists but is invalid" +msgstr "" + +msgid "" +"Use 'if (length(o <- forderv(DT,by))) ...' for efficiency in one step, so " +"you have o as well if not sorted." +msgstr "" + +msgid "x is vector but 'by' is supplied" +msgstr "" + +msgid "x is a single vector, non-NULL 'by' doesn't make sense" +msgstr "" + +msgid "Attempting to order a 0-column data.table or data.frame." +msgstr "" + +msgid "" +"The first item passed to [f]order is a plain list but there are more items. " +"It should be a data.table or data.frame." +msgstr "" + +msgid "Internal code should not be being called on type double" +msgstr "" + +msgid "" +"Input is not a vector of type double. New parallel sort has only been done " +"for double vectors so far. Using one thread." +msgstr "" + +msgid "" +"New parallel sort has not been implemented for decreasing=TRUE so far. Using " +"one thread." +msgstr "" + +msgid "" +"New parallel sort has not been implemented for vectors containing NA values " +"so far. Using one thread." +msgstr "" + +msgid "x must be a data.frame or data.table." +msgstr "" + +msgid "x must be a data.frame or data.table" +msgstr "" + +msgid "na.last must be logical TRUE/FALSE" +msgstr "" + +msgid "" +"cols is not a character vector. Please see further information in ?setorder." +msgstr "" + +msgid "" +"cols is a character vector of zero length. Use NULL instead, or wrap with " +"suppressWarnings() to avoid this warning." +msgstr "" + +msgid "' which is not supported for ordering currently." +msgstr "" + +msgid "'sorted' is TRUE but element" +msgstr "" + +msgid "is non-atomic, which can't be sorted; try setting sorted = FALSE" +msgstr "" + +msgid "Cross product of elements provided to CJ() would result in" +msgstr "" + +msgid "rows which exceeds .Machine$integer.max ==" +msgstr "" + +msgid "x and y must both be data.tables" +msgstr "" + +msgid "length(by.x) != length(by.y)" +msgstr "" + +msgid "When x's column ('" +msgstr "" + +msgid "') is character, the corresponding column in y ('" +msgstr "" + +msgid "') should be factor or character, but found incompatible type '" +msgstr "" + +msgid "') is factor, the corresponding column in y ('" +msgstr "" + +msgid "') should be character or factor, but found incompatible type '" +msgstr "" + +msgid "') is integer or numeric, the corresponding column in y ('" +msgstr "" + +msgid "') can not be character or logical types, but found incompatible type '" +msgstr "" + +msgid "argument 'all' should be logical of length one" +msgstr "" + +msgid "x and y must have the same column names" +msgstr "" + +msgid "x and y must have the same column order" +msgstr "" + +msgid "unsupported column type" +msgstr "" + +msgid "found in x or y:" +msgstr "" + +msgid "of x is '" +msgstr "" + +msgid "' but the corresponding item of y is '" +msgstr "" + +msgid "None of the datasets should contain a column named '.seqn'" +msgstr "" + +msgid "'target' and 'current' must both be data.tables" +msgstr "" + +msgid "Internal error: ncol(current)==ncol(target) was checked above" +msgstr "" + +msgid "None of the datasets to compare should contain a column named '.seqn'" +msgstr "" + +msgid "" +"Datasets to compare with 'ignore.row.order' must not have unsupported column " +"types:" +msgstr "" + +msgid "" +"Argument 'tolerance' was forced to lowest accepted value `sqrt(.Machine" +"$double.eps)` from provided" +msgstr "" + +msgid "" +"Duplicate rows in datasets, numeric columns and ignore.row.order cannot be " +"used with non 0 tolerance argument" +msgstr "" + +msgid "" +"Factor columns and ignore.row.order cannot be used with non 0 tolerance " +"argument" +msgstr "" + +msgid "Internal error: factor type mismatch should have been caught earlier" +msgstr "" + +msgid "argument 'fill' ignored, only make sense for type='const'" +msgstr "" + +msgid "order.col='" +msgstr "" + +msgid "' not a column name of info" +msgstr "" + +msgid "data.table package is loaded. Unload or start a fresh R session." +msgstr "" + +msgid "'script' argument should not be NULL" +msgstr "" + +msgid "does not exist" +msgstr "" + +msgid "Timings count mismatch:" +msgstr "" + +msgid "vs" +msgstr "" + +msgid "out of" +msgstr "" + +msgid "in" +msgstr "" + +msgid "on" +msgstr "" + +msgid ". [" +msgstr "" + +msgid "Search" +msgstr "" + +msgid "for test number" +msgstr "" + +msgid "Test" +msgstr "" + +msgid "" +"is invalid: when error= is provided it does not make sense to pass y as well" +msgstr "" + +msgid "Use started.at=proc.time() not Sys.time() (POSIXt and slow)" +msgstr "" + +msgid "make.names='" +msgstr "" + +msgid "' not found in names of input" +msgstr "" + +msgid "make.names=" +msgstr "" + +msgid "is out of range [1,ncol=" +msgstr "" + +msgid "'names' must be TRUE/FALSE or a character vector." +msgstr "" + +msgid "'keep' should contain integer values between" +msgstr "" + +msgid "length(names) (=" +msgstr "" + +msgid ") is not equal to length(" +msgstr "" + +msgid ") (=" +msgstr "" + +msgid ")." +msgstr "" + +msgid "l not type list" +msgstr "" + +msgid "x not boolean" +msgstr "" + +msgid "" +"Some columns are type 'integer64' but package bit64 is not installed. Those " +"columns will print as strange looking floating point data. There is no need " +"to reload the data. Simply install.packages('bit64') to obtain the integer64 " +"print method and print the data again." +msgstr "" + +msgid "Pattern" +msgstr "" + +msgid "not found: [" +msgstr "" + +msgid "" +"Input xts object should not have 'index' column because it would result in " +"duplicate column names. Rename 'index' column in xts or use `keep." +"rownames=FALSE` and add index manually as another column." +msgstr "" + +msgid "" +"data.table must have a time based column in first position, use " +"`setcolorder` function to change the order, or see ?timeBased for supported " +"types" +msgstr "" + +msgid "Following columns are not numeric and will be omitted:" +msgstr "" diff --git a/src/data.table.h b/src/data.table.h index 1f5c9cd5ff..dd27e7f571 100644 --- a/src/data.table.h +++ b/src/data.table.h @@ -63,6 +63,13 @@ typedef R_xlen_t RLEN; #define ALTREP(x) 0 // for R<3.5.0, see issue #2866 and grep for "ALTREP" to see comments where it's used #endif +#ifdef ENABLE_NLS +#include +#define _(String) dgettext ("data.table", String) +#else +#define _(String) (String) +#endif + // init.c SEXP char_integer64; SEXP char_ITime; From e7208a402d42fc733d9a829ba2c87cb7ba0955c2 Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Sat, 5 Oct 2019 21:50:34 +0800 Subject: [PATCH 02/78] adding another .mo file that was untracked --- inst/po/en@quot/LC_MESSAGES/R-data.table.mo | Bin 0 -> 87120 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 inst/po/en@quot/LC_MESSAGES/R-data.table.mo diff --git a/inst/po/en@quot/LC_MESSAGES/R-data.table.mo b/inst/po/en@quot/LC_MESSAGES/R-data.table.mo new file mode 100644 index 0000000000000000000000000000000000000000..8d628eced2b060217f28870325eca3aff0c246d0 GIT binary patch literal 87120 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 q9lf)I1;c(WAhq&B6P8 zw~9)#xPQbAN^zP$)OM|@=HPx)--#2K*FmAkcm28&eY;2D2Cvp6|IRPxthJW0Z7n9W z{;TMPfgW)VUhjGvFg=QNaxlp4G(`M~!zLu`^fEEgX7@*I@e z594voYm-uhg!w{R&a){ulbD``8%gXsI`=9pwf1G8f?h&qxw=nEp5}y@+8-lhkGfhp T`+idxVNw=KuJwoyoY?;b8ikhM literal 0 HcmV?d00001 From 12a169f85df7fd1ec55ef8ef984d7de4557eca23 Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Sun, 13 Oct 2019 17:03:08 +0800 Subject: [PATCH 03/78] trying to get the .pot for src/ files --- src/assign.c | 156 +-- src/between.c | 22 +- src/bmerge.c | 46 +- src/chmatch.c | 10 +- src/cj.c | 2 +- src/coalesce.c | 20 +- src/data.table.pot | 2482 ++++++++++++++++++++++++++++++++++++++++++++ src/dogroups.c | 63 +- src/fastmean.c | 8 +- src/fcast.c | 14 +- src/fifelse.c | 22 +- src/fmelt.c | 64 +- src/forder.c | 36 +- src/frank.c | 24 +- src/freadR.c | 18 +- src/froll.c | 4 +- src/frollR.c | 60 +- src/fsort.c | 10 +- src/fwriteR.c | 14 +- src/gsumm.c | 126 +-- src/ijoin.c | 30 +- src/init.c | 66 +- src/nafill.c | 14 +- src/openmp-utils.c | 14 +- src/rbindlist.c | 44 +- src/reorder.c | 16 +- src/shift.c | 14 +- src/subset.c | 36 +- src/transpose.c | 12 +- src/types.c | 4 +- src/uniqlist.c | 40 +- src/utils.c | 26 +- src/vecseq.c | 14 +- src/wrappers.c | 14 +- 34 files changed, 3013 insertions(+), 532 deletions(-) create mode 100644 src/data.table.pot diff --git a/src/assign.c b/src/assign.c index 1d33f9c3c2..cb9909d6ac 100644 --- a/src/assign.c +++ b/src/assign.c @@ -6,12 +6,12 @@ static void finalizer(SEXP p) { SEXP x; R_len_t n, l, tl; - if(!R_ExternalPtrAddr(p)) error("Internal error: finalizer hasn't received an ExternalPtr"); // # nocov + if(!R_ExternalPtrAddr(p)) error(_("Internal error: finalizer hasn't received an ExternalPtr")); // # nocov p = R_ExternalPtrTag(p); - if (!isString(p)) error("Internal error: finalizer's ExternalPtr doesn't see names in tag"); // # nocov + if (!isString(p)) error(_("Internal error: finalizer's ExternalPtr doesn't see names in tag")); // # nocov l = LENGTH(p); tl = TRUELENGTH(p); - if (l<0 || tl0 but 0 but l) ? n : l); // e.g. test 848 and 851 in R > 3.0.2 // added (n>l) ? ... for #970, see test 1481. // TO DO: test realloc names if selfrefnamesok (users can setattr(x,"name") themselves for example. // if (TRUELENGTH(getAttrib(dt,R_NamesSymbol))!=tl) - // error("Internal error: tl of dt passes checks, but tl of names (%d) != tl of dt (%d)", tl, TRUELENGTH(getAttrib(dt,R_NamesSymbol))); // # nocov + // error(_("Internal error: tl of dt passes checks, but tl of names (%d) != tl of dt (%d)"), tl, TRUELENGTH(getAttrib(dt,R_NamesSymbol))); // # nocov tl = TRUELENGTH(dt); // R <= 2.13.2 and we didn't catch uninitialized tl somehow - if (tl<0) error("Internal error, tl of class is marked but tl<0."); // # nocov - if (tl>0 && tl0 && tll+10000) warning("tl (%d) is greater than 10,000 items over-allocated (l = %d). If you didn't set the datatable.alloccol option to be very large, please report to data.table issue tracker including the result of sessionInfo().",tl,l); if (n>tl) return(shallow(dt,R_NilValue,n)); // usual case (increasing alloc) if (n=0 and not NA.", ans); + error(_("getOption('datatable.alloc')==%d. It must be >=0 and not NA."), ans); return ans; } SEXP alloccolwrapper(SEXP dt, SEXP overAllocArg, SEXP verbose) { - if (!isLogical(verbose) || length(verbose)!=1) error("verbose must be TRUE or FALSE"); + if (!isLogical(verbose) || length(verbose)!=1) error(_("verbose must be TRUE or FALSE")); int overAlloc = checkOverAlloc(overAllocArg); SEXP ans = PROTECT(alloccol(dt, length(dt)+overAlloc, LOGICAL(verbose)[0])); @@ -286,10 +286,10 @@ SEXP assign(SEXP dt, SEXP rows, SEXP cols, SEXP newcolnames, SEXP values) const char *c1, *tc1, *tc2; int *buf, newKeyLength, indexNo; size_t size; // must be size_t otherwise overflow later in memcpy - if (isNull(dt)) error("assign has been passed a NULL dt"); - if (TYPEOF(dt) != VECSXP) error("dt passed to assign isn't type VECSXP"); + if (isNull(dt)) error(_("assign has been passed a NULL dt")); + if (TYPEOF(dt) != VECSXP) error(_("dt passed to assign isn't type VECSXP")); if (islocked(dt)) - error(".SD is locked. Updating .SD by reference using := or set are reserved for future use. Use := in j directly. Or use copy(.SD) as a (slow) last resort, until shallow() is exported."); + error(_(".SD is locked. Updating .SD by reference using := or set are reserved for future use. Use := in j directly. Or use copy(.SD) as a (slow) last resort, until shallow() is exported.")); // We allow set() on data.frame too; e.g. package Causata uses set() on a data.frame in tests/testTransformationReplay.R // := is only allowed on a data.table. However, the ":=" = stop(...) message in data.table.R will have already @@ -297,15 +297,15 @@ SEXP assign(SEXP dt, SEXP rows, SEXP cols, SEXP newcolnames, SEXP values) // For data.frame, can use set() on existing columns but not add new ones because DF are not over-allocated. bool isDataTable = INHERITS(dt, char_datatable); if (!isDataTable && !INHERITS(dt, char_dataframe)) - error("Internal error: dt passed to Cassign is not a data.table or data.frame"); // # nocov + error(_("Internal error: dt passed to Cassign is not a data.table or data.frame")); // # nocov oldncol = LENGTH(dt); SEXP names = PROTECT(getAttrib(dt, R_NamesSymbol)); protecti++; - if (isNull(names)) error("dt passed to assign has no names"); + if (isNull(names)) error(_("dt passed to assign has no names")); if (length(names)!=oldncol) - error("Internal error in assign: length of names (%d) is not length of dt (%d)",length(names),oldncol); // # nocov + error(_("Internal error in assign: length of names (%d) is not length of dt (%d)"),length(names),oldncol); // # nocov if (isNull(dt)) { - error("data.table is NULL; malformed. A null data.table should be an empty list. typeof() should always return 'list' for data.table."); // # nocov + error(_("data.table is NULL; malformed. A null data.table should be an empty list. typeof() should always return 'list' for data.table.")); // # nocov // Not possible to test because R won't permit attributes be attached to NULL (which is good and we like); warning from R 3.4.0+ tested by 944.5 } const int nrow = LENGTH(dt) ? length(VECTOR_ELT(dt,0)) : @@ -322,13 +322,13 @@ SEXP assign(SEXP dt, SEXP rows, SEXP cols, SEXP newcolnames, SEXP values) warning("Coerced i from numeric to integer. Please pass integer for efficiency; e.g., 2L rather than 2"); } if (!isInteger(rows)) - error("i is type '%s'. Must be integer, or numeric is coerced with warning. If i is a logical subset, simply wrap with which(), and take the which() outside the loop if possible for efficiency.", type2char(TYPEOF(rows))); + error(_("i is type '%s'. Must be integer, or numeric is coerced with warning. If i is a logical subset, simply wrap with which(), and take the which() outside the loop if possible for efficiency."), type2char(TYPEOF(rows))); targetlen = length(rows); numToDo = 0; const int *rowsd = INTEGER(rows); for (i=0; inrow) - error("i[%d] is %d which is out of range [1,nrow=%d].",i+1,rowsd[i],nrow); // set() reaches here (test 2005.2); := reaches the same error in subset.c first + error(_("i[%d] is %d which is out of range [1,nrow=%d]."),i+1,rowsd[i],nrow); // set() reaches here (test 2005.2); := reaches the same error in subset.c first if (rowsd[i]>=1) numToDo++; } if (verbose) Rprintf("Assigning to %d row subset of %d rows\n", numToDo, nrow); @@ -358,7 +358,7 @@ SEXP assign(SEXP dt, SEXP rows, SEXP cols, SEXP newcolnames, SEXP values) if (INTEGER(tmp)[i] == 0) buf[k++] = i; } if (k>0) { - if (!isDataTable) error("set() on a data.frame is for changing existing columns, not adding new ones. Please use a data.table for that. data.table's are over-allocated and don't shallow copy."); + if (!isDataTable) error(_("set() on a data.frame is for changing existing columns, not adding new ones. Please use a data.table for that. data.table's are over-allocated and don't shallow copy.")); newcolnames = PROTECT(allocVector(STRSXP, k)); protecti++; for (i=0; i1; // initial value; may be revised below if (verbose) Rprintf("RHS_list_of_columns == %s\n", RHS_list_of_columns ? "true" : "false"); if (TYPEOF(values)==VECSXP && length(cols)==1 && length(values)==1) { @@ -387,7 +387,7 @@ SEXP assign(SEXP dt, SEXP rows, SEXP cols, SEXP newcolnames, SEXP values) } if (RHS_list_of_columns) { if (length(values)==0) - error("Supplied %d columns to be assigned an empty list (which may be an empty data.table or data.frame since they are lists too). " + error(_("Supplied %d columns to be assigned an empty list (which may be an empty data.table or data.frame since they are lists too). ") "To delete multiple columns use NULL instead. To add multiple empty list columns, use list(list()).", length(cols)); if (length(values)!=length(cols)) { if (length(values)==1) { // test 351.1; c("colA","colB"):=list(13:15) uses 13:15 for both columns @@ -395,7 +395,7 @@ SEXP assign(SEXP dt, SEXP rows, SEXP cols, SEXP newcolnames, SEXP values) RHS_list_of_columns = false; if (verbose) Rprintf("Recycling single RHS list item across %d columns. Please unwrap RHS.\n", length(cols)); } else { - error("Supplied %d columns to be assigned %d items. Please see NEWS for v1.12.2.", length(cols), length(values)); + error(_("Supplied %d columns to be assigned %d items. Please see NEWS for v1.12.2."), length(cols), length(values)); } } } @@ -403,24 +403,24 @@ SEXP assign(SEXP dt, SEXP rows, SEXP cols, SEXP newcolnames, SEXP values) for (i=0; ioldncol+length(newcolnames)) { - if (!isDataTable) error("Item %d of column numbers in j is %d which is outside range [1,ncol=%d]. set() on a data.frame is for changing existing columns, not adding new ones. Please use a data.table for that.", i+1, coln, oldncol); - else error("Item %d of column numbers in j is %d which is outside range [1,ncol=%d]. Use column names instead in j to add new columns.", i+1, coln, oldncol); + if (!isDataTable) error(_("Item %d of column numbers in j is %d which is outside range [1,ncol=%d]. set() on a data.frame is for changing existing columns, not adding new ones. Please use a data.table for that."), i+1, coln, oldncol); + else error(_("Item %d of column numbers in j is %d which is outside range [1,ncol=%d]. Use column names instead in j to add new columns."), i+1, coln, oldncol); } coln--; SEXP thisvalue = RHS_list_of_columns ? VECTOR_ELT(values, i) : values; vlen = length(thisvalue); - if (isNull(thisvalue) && !isNull(rows)) error("When deleting columns, i should not be provided"); // #1082, #3089 + if (isNull(thisvalue) && !isNull(rows)) error(_("When deleting columns, i should not be provided")); // #1082, #3089 if (coln+1 <= oldncol) colnam = STRING_ELT(names,coln); else colnam = STRING_ELT(newcolnames,coln-length(names)); if (coln+1 <= oldncol && isNull(thisvalue)) continue; // delete existing column(s) afterwards, near end of this function //if (vlen<1 && nrow>0) { if (coln+1 <= oldncol && nrow>0 && vlen<1 && numToDo>0) { // numToDo > 0 fixes #2829, see test 1911 - error("RHS of assignment to existing column '%s' is zero length but not NULL. If you intend to delete the column use NULL. Otherwise, the RHS must have length > 0; e.g., NA_integer_. If you are trying to change the column type to be an empty list column then, as with all column type changes, provide a full length RHS vector such as vector('list',nrow(DT)); i.e., 'plonk' in the new column.", CHAR(STRING_ELT(names,coln))); + error(_("RHS of assignment to existing column '%s' is zero length but not NULL. If you intend to delete the column use NULL. Otherwise, the RHS must have length > 0; e.g., NA_integer_. If you are trying to change the column type to be an empty list column then, as with all column type changes, provide a full length RHS vector such as vector('list',nrow(DT)); i.e., 'plonk' in the new column."), CHAR(STRING_ELT(names,coln))); } if (coln+1 > oldncol && TYPEOF(thisvalue)!=VECSXP) { // list() is ok for new columns newcolnum = coln-length(names); if (newcolnum<0 || newcolnum>=length(newcolnames)) - error("Internal error in assign.c: length(newcolnames)=%d, length(names)=%d, coln=%d", length(newcolnames), length(names), coln); // # nocov + error(_("Internal error in assign.c: length(newcolnames)=%d, length(names)=%d, coln=%d"), length(newcolnames), length(names), coln); // # nocov if (isNull(thisvalue)) { warning("Column '%s' does not exist to remove",CHAR(STRING_ELT(newcolnames,newcolnum))); continue; @@ -432,12 +432,12 @@ SEXP assign(SEXP dt, SEXP rows, SEXP cols, SEXP newcolnames, SEXP values) const SEXP existing = (coln+1)<=oldncol ? VECTOR_ELT(dt,coln) : R_NilValue; if (isFactor(existing) && !isString(thisvalue) && TYPEOF(thisvalue)!=INTSXP && TYPEOF(thisvalue)!=LGLSXP && !isReal(thisvalue) && !isNewList(thisvalue)) { // !=INTSXP includes factor - error("Can't assign to column '%s' (type 'factor') a value of type '%s' (not character, factor, integer or numeric)", + error(_("Can't assign to column '%s' (type 'factor') a value of type '%s' (not character, factor, integer or numeric)"), CHAR(STRING_ELT(names,coln)),type2char(TYPEOF(thisvalue))); } if (nrow>0 && targetlen>0 && vlen>1 && vlen!=targetlen && (TYPEOF(existing)!=VECSXP || TYPEOF(thisvalue)==VECSXP)) { // note that isNewList(R_NilValue) is true so it needs to be TYPEOF(existing)!=VECSXP above - error("Supplied %d items to be assigned to %d items of column '%s'. If you wish to 'recycle' the RHS please " + error(_("Supplied %d items to be assigned to %d items of column '%s'. If you wish to 'recycle' the RHS please ") "use rep() to make this intent clear to readers of your code.", vlen, targetlen, CHAR(colnam)); } } @@ -448,18 +448,18 @@ SEXP assign(SEXP dt, SEXP rows, SEXP cols, SEXP newcolnames, SEXP values) oldtncol = TRUELENGTH(dt); // TO DO: oldtncol can be just called tl now, as we won't realloc here any more. if (oldtncololdncol+10000L) warning("truelength (%d) is greater than 10,000 items over-allocated (length = %d). See ?truelength. If you didn't set the datatable.alloccol option very large, please report to data.table issue tracker including the result of sessionInfo().",oldtncol, oldncol); if (oldtncol < oldncol+LENGTH(newcolnames)) - error("Internal error: DT passed to assign has not been allocated enough column slots. l=%d, tl=%d, adding %d", oldncol, oldtncol, LENGTH(newcolnames)); // # nocov + error(_("Internal error: DT passed to assign has not been allocated enough column slots. l=%d, tl=%d, adding %d"), oldncol, oldtncol, LENGTH(newcolnames)); // # nocov if (!selfrefnamesok(dt,verbose)) - error("It appears that at some earlier point, names of this data.table have been reassigned. Please ensure to use setnames() rather than names<- or colnames<-. Otherwise, please report to data.table issue tracker."); // # nocov + error(_("It appears that at some earlier point, names of this data.table have been reassigned. Please ensure to use setnames() rather than names<- or colnames<-. Otherwise, please report to data.table issue tracker.")); // # nocov // Can growVector at this point easily enough, but it shouldn't happen in first place so leave it as // strong error message for now. else if (TRUELENGTH(names) != oldtncol) - error("Internal error: selfrefnames is ok but tl names [%d] != tl [%d]", TRUELENGTH(names), oldtncol); // # nocov + error(_("Internal error: selfrefnames is ok but tl names [%d] != tl [%d]"), TRUELENGTH(names), oldtncol); // # nocov SETLENGTH(dt, oldncol+LENGTH(newcolnames)); SETLENGTH(names, oldncol+LENGTH(newcolnames)); for (i=0; i1 && slen!=len && (!isNewList(target) || isNewList(source))) - error("Internal error: recycle length error not caught earlier. slen=%d len=%d", slen, len); // # nocov + error(_("Internal error: recycle length error not caught earlier. slen=%d len=%d"), slen, len); // # nocov // Internal error because the column has already been added to the DT, so length mismatch should have been caught before adding the column. // for 5647 this used to limit slen to len, but no longer if (colname==NULL) - error("Internal error: memrecycle has received NULL colname"); // # nocov + error(_("Internal error: memrecycle has received NULL colname")); // # nocov *memrecycle_message = '\0'; int protecti=0; if (isNewList(source)) { @@ -716,7 +716,7 @@ const char *memrecycle(SEXP target, SEXP where, int start, int len, SEXP source, if (sourceIsFactor || targetIsFactor) { if (!targetIsFactor) { if (!isString(target) && !isNewList(target)) - error("Cannot assign 'factor' to '%s'. Factors can only be assigned to factor, character or list columns.", type2char(TYPEOF(target))); + error(_("Cannot assign 'factor' to '%s'. Factors can only be assigned to factor, character or list columns."), type2char(TYPEOF(target))); // else assigning factor to character is left to later below, avoiding wasteful asCharacterFactor } else if (!sourceIsFactor && !isString(source)) { // target is factor @@ -730,7 +730,7 @@ const char *memrecycle(SEXP target, SEXP where, int start, int len, SEXP source, for (int i=0; inlevel) { - error("Assigning factor numbers to column %d named '%s'. But %d is outside the level range [1,%d]", colnum, colname, val, nlevel); + error(_("Assigning factor numbers to column %d named '%s'. But %d is outside the level range [1,%d]"), colnum, colname, val, nlevel); } } } else { @@ -738,13 +738,13 @@ const char *memrecycle(SEXP target, SEXP where, int start, int len, SEXP source, for (int i=0; inlevel)) { - error("Assigning factor numbers to column %d named '%s'. But %f is outside the level range [1,%d], or is not a whole number.", colnum, colname, val, nlevel); + error(_("Assigning factor numbers to column %d named '%s'. But %f is outside the level range [1,%d], or is not a whole number."), colnum, colname, val, nlevel); } } } // Now just let the valid level numbers fall through to regular assign by BODY below } else { - error("Cannot assign '%s' to 'factor'. Factor columns can be assigned factor, character, NA in any type, or level numbers.", type2char(TYPEOF(source))); + error(_("Cannot assign '%s' to 'factor'. Factor columns can be assigned factor, character, NA in any type, or level numbers."), type2char(TYPEOF(source))); } } else { // either factor or character being assigned to factor column @@ -765,7 +765,7 @@ const char *memrecycle(SEXP target, SEXP where, int start, int len, SEXP source, // # nocov start for (int j=0; j(INT_MAX/2) ? INT_MAX : nalloc*2; char *tmp = (char *)realloc(saveds, nalloc*sizeof(SEXP)); if (tmp==NULL) { // C spec states that if realloc() fails the original block is left untouched; it is not freed or moved. We rely on that here. savetl_end(); // # nocov free(saveds) happens inside savetl_end - error("Failed to realloc saveds to %d items in savetl", nalloc); // # nocov + error(_("Failed to realloc saveds to %d items in savetl"), nalloc); // # nocov } saveds = (SEXP *)tmp; tmp = (char *)realloc(savedtl, nalloc*sizeof(R_len_t)); if (tmp==NULL) { savetl_end(); // # nocov - error("Failed to realloc savedtl to %d items in savetl", nalloc); // # nocov + error(_("Failed to realloc savedtl to %d items in savetl"), nalloc); // # nocov } savedtl = (R_len_t *)tmp; } @@ -1204,13 +1204,13 @@ void savetl_end() { SEXP setcharvec(SEXP x, SEXP which, SEXP newx) { int w; - if (!isString(x)) error("x must be a character vector"); - if (!isInteger(which)) error("'which' must be an integer vector"); - if (!isString(newx)) error("'new' must be a character vector"); - if (LENGTH(newx)!=LENGTH(which)) error("'new' is length %d. Should be the same as length of 'which' (%d)",LENGTH(newx),LENGTH(which)); + if (!isString(x)) error(_("x must be a character vector")); + if (!isInteger(which)) error(_("'which' must be an integer vector")); + if (!isString(newx)) error(_("'new' must be a character vector")); + if (LENGTH(newx)!=LENGTH(which)) error(_("'new' is length %d. Should be the same as length of 'which' (%d)"),LENGTH(newx),LENGTH(which)); for (int i=0; iLENGTH(x)) error("Item %d of 'which' is %d which is outside range of the length %d character vector", i+1,w,LENGTH(x)); + if (w==NA_INTEGER || w<1 || w>LENGTH(x)) error(_("Item %d of 'which' is %d which is outside range of the length %d character vector"), i+1,w,LENGTH(x)); SET_STRING_ELT(x, w-1, STRING_ELT(newx, i)); } return R_NilValue; @@ -1220,18 +1220,18 @@ SEXP setcolorder(SEXP x, SEXP o) { SEXP names = getAttrib(x, R_NamesSymbol); const int *od = INTEGER(o), ncol=LENGTH(x); - if (isNull(names)) error("dt passed to setcolorder has no names"); + if (isNull(names)) error(_("dt passed to setcolorder has no names")); if (ncol != LENGTH(names)) - error("Internal error: dt passed to setcolorder has %d columns but %d names", ncol, LENGTH(names)); // # nocov + error(_("Internal error: dt passed to setcolorder has %d columns but %d names"), ncol, LENGTH(names)); // # nocov // Double-check here at C level that o[] is a strict permutation of 1:ncol. Reordering columns by reference makes no // difference to generations/refcnt so we can write behind barrier in this very special case of strict permutation. bool *seen = Calloc(ncol, bool); for (int i=0; incol) - error("Internal error: o passed to Csetcolorder contains an NA or out-of-bounds"); // # nocov + error(_("Internal error: o passed to Csetcolorder contains an NA or out-of-bounds")); // # nocov if (seen[od[i]-1]) - error("Internal error: o passed to Csetcolorder contains a duplicate"); // # nocov + error(_("Internal error: o passed to Csetcolorder contains a duplicate")); // # nocov seen[od[i]-1] = true; } Free(seen); diff --git a/src/between.c b/src/between.c index d7de5c7175..653a28c339 100644 --- a/src/between.c +++ b/src/between.c @@ -9,17 +9,17 @@ SEXP between(SEXP x, SEXP lower, SEXP upper, SEXP incbounds, SEXP NAboundsArg, S if ((nl!=1 && nl!=longest) || (nu!=1 && nu!=longest) || (nx!=1 && nx!=longest)) { - error("Incompatible vector lengths: length(x)==%d length(lower)==%d length(upper)==%d. Each should be either length 1 or the length of the longest.", nx, nl, nu); + error(_("Incompatible vector lengths: length(x)==%d length(lower)==%d length(upper)==%d. Each should be either length 1 or the length of the longest."), nx, nl, nu); } const int longestBound = MAX(nl, nu); // just for when check=TRUE if (!isLogical(incbounds) || LOGICAL(incbounds)[0]==NA_LOGICAL) - error("incbounds must be TRUE or FALSE"); + error(_("incbounds must be TRUE or FALSE")); const bool open = !LOGICAL(incbounds)[0]; if (!isLogical(NAboundsArg) || LOGICAL(NAboundsArg)[0]==FALSE) - error("NAbounds must be TRUE or NA"); + error(_("NAbounds must be TRUE or NA")); const bool NAbounds = LOGICAL(NAboundsArg)[0]==TRUE; if (!isLogical(checkArg) || LOGICAL(checkArg)[0]==NA_LOGICAL) - error("check must be TRUE or FALSE"); + error(_("check must be TRUE or FALSE")); const bool check = LOGICAL(checkArg)[0]; const bool verbose = GetVerbose(); @@ -61,7 +61,7 @@ SEXP between(SEXP x, SEXP lower, SEXP upper, SEXP incbounds, SEXP NAboundsArg, S if (check) for (int i=0; iu) - error("Item %d of lower (%d) is greater than item %d of upper (%d)", (i&lowMask)+1, l, (i&uppMask)+1, u); + error(_("Item %d of lower (%d) is greater than item %d of upper (%d)"), (i&lowMask)+1, l, (i&uppMask)+1, u); } if (NAbounds) { // default NAbounds==TRUE => NA bound means TRUE; i.e. asif lower=-Inf or upper==Inf) #pragma omp parallel for num_threads(getDTthreads()) @@ -85,14 +85,14 @@ SEXP between(SEXP x, SEXP lower, SEXP upper, SEXP incbounds, SEXP NAboundsArg, S case REALSXP: if (Rinherits(x, char_integer64)) { if (!Rinherits(lower, char_integer64) || !Rinherits(upper, char_integer64)) - error("x is integer64 but lower and/or upper are not."); // e.g. between(int64, character, character) + error(_("x is integer64 but lower and/or upper are not.")); // e.g. between(int64, character, character) const int64_t *lp = (int64_t *)REAL(lower); const int64_t *up = (int64_t *)REAL(upper); const int64_t *xp = (int64_t *)REAL(x); if (check) for (int i=0; iu) - error("Item %d of lower (%lld) is greater than item %d of upper (%lld)", (i&lowMask)+1, l, (i&uppMask)+1, u); + error(_("Item %d of lower (%lld) is greater than item %d of upper (%lld)"), (i&lowMask)+1, l, (i&uppMask)+1, u); } if (NAbounds) { #pragma omp parallel for num_threads(getDTthreads()) @@ -112,14 +112,14 @@ SEXP between(SEXP x, SEXP lower, SEXP upper, SEXP incbounds, SEXP NAboundsArg, S if (verbose) Rprintf("between parallel processing of integer64 took %8.3fs\n", omp_get_wtime()-tic); } else { if (Rinherits(lower, char_integer64) || Rinherits(upper, char_integer64)) - error("x is not integer64 but lower and/or upper is integer64. Please align classes."); + error(_("x is not integer64 but lower and/or upper is integer64. Please align classes.")); const double *lp = REAL(lower); const double *up = REAL(upper); const double *xp = REAL(x); if (check) for (int i=0; iu) - error("Item %d of lower (%f) is greater than item %d of upper (%f)", (i&lowMask)+1, l, (i&uppMask)+1, u); + error(_("Item %d of lower (%f) is greater than item %d of upper (%f)"), (i&lowMask)+1, l, (i&uppMask)+1, u); } if (open) { if (NAbounds) { @@ -169,7 +169,7 @@ SEXP between(SEXP x, SEXP lower, SEXP upper, SEXP incbounds, SEXP NAboundsArg, S if (check) for (int i=0; i0) - error("Item %d of lower ('%s') is greater than item %d of upper ('%s')", (i&lowMask)+1, CHAR(l), (i&uppMask)+1, CHAR(u)); + error(_("Item %d of lower ('%s') is greater than item %d of upper ('%s')"), (i&lowMask)+1, CHAR(l), (i&uppMask)+1, CHAR(u)); } if (NAbounds) { for (int i=0; i LENGTH(xcolsArg)) error("Internal error: length(icols) [%d] > length(xcols) [%d]", LENGTH(icolsArg), LENGTH(xcolsArg)); // # nocov + if (!isInteger(icolsArg)) error(_("Internal error: icols is not integer vector")); // # nocov + if (!isInteger(xcolsArg)) error(_("Internal error: xcols is not integer vector")); // # nocov + if (LENGTH(icolsArg) > LENGTH(xcolsArg)) error(_("Internal error: length(icols) [%d] > length(xcols) [%d]"), LENGTH(icolsArg), LENGTH(xcolsArg)); // # nocov icols = INTEGER(icolsArg); xcols = INTEGER(xcolsArg); xN = LENGTH(VECTOR_ELT(x,0)); iN = ilen = anslen = LENGTH(VECTOR_ELT(i,0)); ncol = LENGTH(icolsArg); // there may be more sorted columns in x than involved in the join for(int col=0; colLENGTH(i) || icols[col]<1) error("icols[%d]=%d outside range [1,length(i)=%d]", col, icols[col], LENGTH(i)); - if (xcols[col]>LENGTH(x) || xcols[col]<1) error("xcols[%d]=%d outside range [1,length(x)=%d]", col, xcols[col], LENGTH(x)); + if (icols[col]==NA_INTEGER) error(_("Internal error. icols[%d] is NA"), col); // # nocov + if (xcols[col]==NA_INTEGER) error(_("Internal error. xcols[%d] is NA"), col); // # nocov + if (icols[col]>LENGTH(i) || icols[col]<1) error(_("icols[%d]=%d outside range [1,length(i)=%d]"), col, icols[col], LENGTH(i)); + if (xcols[col]>LENGTH(x) || xcols[col]<1) error(_("xcols[%d]=%d outside range [1,length(x)=%d]"), col, xcols[col], LENGTH(x)); int it = TYPEOF(VECTOR_ELT(i, icols[col]-1)); int xt = TYPEOF(VECTOR_ELT(x, xcols[col]-1)); - if (iN && it!=xt) error("typeof x.%s (%s) != typeof i.%s (%s)", CHAR(STRING_ELT(getAttrib(x,R_NamesSymbol),xcols[col]-1)), type2char(xt), CHAR(STRING_ELT(getAttrib(i,R_NamesSymbol),icols[col]-1)), type2char(it)); + if (iN && it!=xt) error(_("typeof x.%s (%s) != typeof i.%s (%s)"), CHAR(STRING_ELT(getAttrib(x,R_NamesSymbol),xcols[col]-1)), type2char(xt), CHAR(STRING_ELT(getAttrib(i,R_NamesSymbol),icols[col]-1)), type2char(it)); } // raise(SIGINT); // rollArg, rollendsArg roll = 0.0; rollToNearest = FALSE; if (isString(rollarg)) { - if (strcmp(CHAR(STRING_ELT(rollarg,0)),"nearest") != 0) error("roll is character but not 'nearest'"); - if (TYPEOF(VECTOR_ELT(i, icols[ncol-1]-1))==STRSXP) error("roll='nearest' can't be applied to a character column, yet."); + if (strcmp(CHAR(STRING_ELT(rollarg,0)),"nearest") != 0) error(_("roll is character but not 'nearest'")); + if (TYPEOF(VECTOR_ELT(i, icols[ncol-1]-1))==STRSXP) error(_("roll='nearest' can't be applied to a character column, yet.")); roll=1.0; rollToNearest=TRUE; // the 1.0 here is just any non-0.0, so roll!=0.0 can be used later } else { - if (!isReal(rollarg)) error("Internal error: roll is not character or double"); // # nocov + if (!isReal(rollarg)) error(_("Internal error: roll is not character or double")); // # nocov roll = REAL(rollarg)[0]; // more common case (rolling forwards or backwards) or no roll when 0.0 } rollabs = fabs(roll); if (!isLogical(rollendsArg) || LENGTH(rollendsArg) != 2) - error("rollends must be a length 2 logical vector"); + error(_("rollends must be a length 2 logical vector")); rollends = LOGICAL(rollendsArg); // nomatch arg @@ -86,20 +86,20 @@ SEXP bmerge(SEXP iArg, SEXP xArg, SEXP icolsArg, SEXP xcolsArg, SEXP isorted, SE if (!strcmp(CHAR(STRING_ELT(multArg, 0)), "all")) mult = ALL; else if (!strcmp(CHAR(STRING_ELT(multArg, 0)), "first")) mult = FIRST; else if (!strcmp(CHAR(STRING_ELT(multArg, 0)), "last")) mult = LAST; - else error("Internal error: invalid value for 'mult'. please report to data.table issue tracker"); // # nocov + else error(_("Internal error: invalid value for 'mult'. please report to data.table issue tracker")); // # nocov // opArg if (!isInteger(opArg) || length(opArg) != ncol) - error("Internal error: opArg is not an integer vector of length equal to length(on)"); // # nocov + error(_("Internal error: opArg is not an integer vector of length equal to length(on)")); // # nocov op = INTEGER(opArg); if (!isInteger(nqgrpArg)) - error("Internal error: nqgrpArg must be an integer vector"); // # nocov + error(_("Internal error: nqgrpArg must be an integer vector")); // # nocov nqgrp = nqgrpArg; // set global for bmerge_r scols = (!length(nqgrpArg)) ? 0 : -1; // starting col index, -1 is external group column for non-equi join case // nqmaxgrpArg if (!isInteger(nqmaxgrpArg) || length(nqmaxgrpArg) != 1 || INTEGER(nqmaxgrpArg)[0] <= 0) - error("Intrnal error: nqmaxgrpArg is not a positive length-1 integer vector"); // # nocov + error(_("Intrnal error: nqmaxgrpArg is not a positive length-1 integer vector")); // # nocov nqmaxgrp = INTEGER(nqmaxgrpArg)[0]; if (nqmaxgrp>1 && mult == ALL) { // non-equi case with mult=ALL, may need reallocation @@ -108,7 +108,7 @@ SEXP bmerge(SEXP iArg, SEXP xArg, SEXP icolsArg, SEXP xcolsArg, SEXP isorted, SE retLength = Calloc(anslen, int); retIndex = Calloc(anslen, int); if (retFirst==NULL || retLength==NULL || retIndex==NULL) - error("Internal error in allocating memory for non-equi join"); // # nocov + error(_("Internal error in allocating memory for non-equi join")); // # nocov // initialise retIndex here directly, as next loop is meant for both equi and non-equi joins for (int j=0; jxuppIn) error("Internal error: xlow!=xupp-1 || xlowxuppIn"); // # nocov + if (xlow != xupp-1 || xlowxuppIn) error(_("Internal error: xlow!=xupp-1 || xlowxuppIn")); // # nocov if (rollToNearest) { // value of roll ignored currently when nearest if ( (!lowmax || xlow>xlowIn) && (!uppmax || xupp, YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-10-13 16:58+0800\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: assign.c:9 +msgid "Internal error: finalizer hasn't received an ExternalPtr" +msgstr "" + +#: assign.c:11 +msgid "Internal error: finalizer's ExternalPtr doesn't see names in tag" +msgstr "" + +#: assign.c:14 +#, c-format +msgid "Internal error: finalizer sees l=%d, tl=%d" +msgstr "" + +#: assign.c:126 +msgid "Internal error: .internal.selfref ptr is not NULL or R_NilValue" +msgstr "" + +#: assign.c:128 +msgid "Internal error: .internal.selfref tag isn't NULL or a character vector" +msgstr "" + +#: assign.c:170 +msgid "Internal error: length(names)>0 but =0 and not NA." +msgstr "" + +#: assign.c:241 fsort.c:109 nafill.c:73 +msgid "verbose must be TRUE or FALSE" +msgstr "" + +#: assign.c:289 +msgid "assign has been passed a NULL dt" +msgstr "" + +#: assign.c:290 +msgid "dt passed to assign isn't type VECSXP" +msgstr "" + +#: assign.c:292 +msgid "" +".SD is locked. Updating .SD by reference using := or set are reserved for " +"future use. Use := in j directly. Or use copy(.SD) as a (slow) last resort, " +"until shallow() is exported." +msgstr "" + +#: assign.c:300 +msgid "Internal error: dt passed to Cassign is not a data.table or data.frame" +msgstr "" + +#: assign.c:304 +msgid "dt passed to assign has no names" +msgstr "" + +#: assign.c:306 +#, c-format +msgid "Internal error in assign: length of names (%d) is not length of dt (%d)" +msgstr "" + +#: assign.c:308 +msgid "" +"data.table is NULL; malformed. A null data.table should be an empty list. " +"typeof() should always return 'list' for data.table." +msgstr "" + +#: assign.c:325 +#, c-format +msgid "" +"i is type '%s'. Must be integer, or numeric is coerced with warning. If i is " +"a logical subset, simply wrap with which(), and take the which() outside the " +"loop if possible for efficiency." +msgstr "" + +#: assign.c:331 +#, c-format +msgid "i[%d] is %d which is out of range [1,nrow=%d]." +msgstr "" + +#: assign.c:361 +msgid "" +"set() on a data.frame is for changing existing columns, not adding new ones. " +"Please use a data.table for that. data.table's are over-allocated and don't " +"shallow copy." +msgstr "" + +#: assign.c:375 +#, c-format +msgid "" +"j is type '%s'. Must be integer, character, or numeric is coerced with " +"warning." +msgstr "" + +#: assign.c:377 +msgid "" +"Can't assign to the same column twice in the same query (duplicates " +"detected)." +msgstr "" + +#: assign.c:378 +msgid "newcolnames is supplied but isn't a character vector" +msgstr "" + +#: assign.c:390 +#, c-format +msgid "" +"Supplied %d columns to be assigned an empty list (which may be an empty data." +"table or data.frame since they are lists too). " +msgstr "" + +#: assign.c:398 +#, c-format +msgid "" +"Supplied %d columns to be assigned %d items. Please see NEWS for v1.12.2." +msgstr "" + +#: assign.c:406 +#, c-format +msgid "" +"Item %d of column numbers in j is %d which is outside range [1,ncol=%d]. " +"set() on a data.frame is for changing existing columns, not adding new ones. " +"Please use a data.table for that." +msgstr "" + +#: assign.c:407 +#, c-format +msgid "" +"Item %d of column numbers in j is %d which is outside range [1,ncol=%d]. Use " +"column names instead in j to add new columns." +msgstr "" + +#: assign.c:412 +msgid "When deleting columns, i should not be provided" +msgstr "" + +#: assign.c:418 +#, c-format +msgid "" +"RHS of assignment to existing column '%s' is zero length but not NULL. If " +"you intend to delete the column use NULL. Otherwise, the RHS must have " +"length > 0; e.g., NA_integer_. If you are trying to change the column type " +"to be an empty list column then, as with all column type changes, provide a " +"full length RHS vector such as vector('list',nrow(DT)); i.e., 'plonk' in the " +"new column." +msgstr "" + +#: assign.c:423 +#, c-format +msgid "" +"Internal error in assign.c: length(newcolnames)=%d, length(names)=%d, coln=%d" +msgstr "" + +#: assign.c:435 +#, c-format +msgid "" +"Can't assign to column '%s' (type 'factor') a value of type '%s' (not " +"character, factor, integer or numeric)" +msgstr "" + +#: assign.c:440 +#, c-format +msgid "" +"Supplied %d items to be assigned to %d items of column '%s'. If you wish to " +"'recycle' the RHS please " +msgstr "" + +#: assign.c:451 +msgid "" +"This data.table has either been loaded from disk (e.g. using readRDS()/" +"load()) or constructed manually (e.g. using structure()). Please run setDT() " +"or setalloccol() on it first (to pre-allocate space for new columns) before " +"assigning by reference to it." +msgstr "" + +#: assign.c:452 +#, c-format +msgid "" +"Internal error: oldtncol(%d) < oldncol(%d). Please report to data.table " +"issue tracker, including result of sessionInfo()." +msgstr "" + +#: assign.c:456 +#, c-format +msgid "" +"Internal error: DT passed to assign has not been allocated enough column " +"slots. l=%d, tl=%d, adding %d" +msgstr "" + +#: assign.c:458 +msgid "" +"It appears that at some earlier point, names of this data.table have been " +"reassigned. Please ensure to use setnames() rather than names<- or " +"colnames<-. Otherwise, please report to data.table issue tracker." +msgstr "" + +#: assign.c:462 +#, c-format +msgid "Internal error: selfrefnames is ok but tl names [%d] != tl [%d]" +msgstr "" + +#: assign.c:473 +msgid "" +"Internal error: earlier error 'When deleting columns, i should not be " +"provided' did not happen." +msgstr "" + +#: assign.c:566 +msgid "Internal error: index name ends with trailing __" +msgstr "" + +#: assign.c:571 +msgid "Internal error: Couldn't allocate memory for s4." +msgstr "" + +#: assign.c:582 +msgid "Internal error: Couldn't allocate memory for s5." +msgstr "" + +#: assign.c:689 +#, c-format +msgid "Internal error: recycle length error not caught earlier. slen=%d len=%d" +msgstr "" + +#: assign.c:693 +msgid "Internal error: memrecycle has received NULL colname" +msgstr "" + +#: assign.c:719 +#, c-format +msgid "" +"Cannot assign 'factor' to '%s'. Factors can only be assigned to factor, " +"character or list columns." +msgstr "" + +#: assign.c:733 +#, c-format +msgid "" +"Assigning factor numbers to column %d named '%s'. But %d is outside the " +"level range [1,%d]" +msgstr "" + +#: assign.c:741 +#, c-format +msgid "" +"Assigning factor numbers to column %d named '%s'. But %f is outside the " +"level range [1,%d], or is not a whole number." +msgstr "" + +#: assign.c:747 +#, c-format +msgid "" +"Cannot assign '%s' to 'factor'. Factor columns can be assigned factor, " +"character, NA in any type, or level numbers." +msgstr "" + +#: assign.c:768 +msgid "" +"Internal error: levels of target are either not unique or have truelength<0" +msgstr "" + +#: assign.c:807 +#, c-format +msgid "Unable to allocate working memory of %d bytes to combine factor levels" +msgstr "" + +#: assign.c:814 +msgid "Internal error: extra level check sum failed" +msgstr "" + +#: assign.c:839 +#, c-format +msgid "" +"Cannot coerce 'list' RHS to 'integer64' to match the type of the target " +"column (column %d named '%s')." +msgstr "" + +#: assign.c:945 +#, c-format +msgid "type '%s' cannot be coerced to '%s'" +msgstr "" + +#: assign.c:1065 +msgid "" +"To assign integer64 to a character column, please use as.character() for " +"clarity." +msgstr "" + +#: assign.c:1076 +#, c-format +msgid "Unsupported column type in assign.c:memrecycle '%s'" +msgstr "" + +#: assign.c:1123 +#, c-format +msgid "Internal error: writeNA passed a vector of type '%s'" +msgstr "" + +#: assign.c:1154 +#, c-format +msgid "" +"Internal error: savetl_init checks failed (%d %d %p %p). please report to " +"data.table issue tracker." +msgstr "" + +#: assign.c:1162 +#, c-format +msgid "Failed to allocate initial %d items in savetl_init" +msgstr "" + +#: assign.c:1171 +#, c-format +msgid "" +"Internal error: reached maximum %d items for savetl. Please report to data." +"table issue tracker." +msgstr "" + +#: assign.c:1178 +#, c-format +msgid "Failed to realloc saveds to %d items in savetl" +msgstr "" + +#: assign.c:1184 +#, c-format +msgid "Failed to realloc savedtl to %d items in savetl" +msgstr "" + +#: assign.c:1207 +msgid "x must be a character vector" +msgstr "" + +#: assign.c:1208 +msgid "'which' must be an integer vector" +msgstr "" + +#: assign.c:1209 +msgid "'new' must be a character vector" +msgstr "" + +#: assign.c:1210 +#, c-format +msgid "'new' is length %d. Should be the same as length of 'which' (%d)" +msgstr "" + +#: assign.c:1213 +#, c-format +msgid "" +"Item %d of 'which' is %d which is outside range of the length %d character " +"vector" +msgstr "" + +#: assign.c:1223 +msgid "dt passed to setcolorder has no names" +msgstr "" + +#: assign.c:1225 +#, c-format +msgid "Internal error: dt passed to setcolorder has %d columns but %d names" +msgstr "" + +#: assign.c:1232 +msgid "" +"Internal error: o passed to Csetcolorder contains an NA or out-of-bounds" +msgstr "" + +#: assign.c:1234 +msgid "Internal error: o passed to Csetcolorder contains a duplicate" +msgstr "" + +#: between.c:12 +#, c-format +msgid "" +"Incompatible vector lengths: length(x)==%d length(lower)==%d length(upper)==" +"%d. Each should be either length 1 or the length of the longest." +msgstr "" + +#: between.c:16 +msgid "incbounds must be TRUE or FALSE" +msgstr "" + +#: between.c:19 +msgid "NAbounds must be TRUE or NA" +msgstr "" + +#: between.c:22 +msgid "check must be TRUE or FALSE" +msgstr "" + +#: between.c:64 +#, c-format +msgid "Item %d of lower (%d) is greater than item %d of upper (%d)" +msgstr "" + +#: between.c:88 +msgid "x is integer64 but lower and/or upper are not." +msgstr "" + +#: between.c:95 +#, c-format +msgid "Item %d of lower (%lld) is greater than item %d of upper (%lld)" +msgstr "" + +#: between.c:115 +msgid "" +"x is not integer64 but lower and/or upper is integer64. Please align classes." +msgstr "" + +#: between.c:122 +#, c-format +msgid "Item %d of lower (%f) is greater than item %d of upper (%f)" +msgstr "" + +#: between.c:172 +#, c-format +msgid "Item %d of lower ('%s') is greater than item %d of upper ('%s')" +msgstr "" + +#: between.c:190 +#, c-format +msgid "" +"Internal error: between.c unsupported type '%s' should have been caught at R " +"level" +msgstr "" + +#: bmerge.c:48 +msgid "Internal error: icols is not integer vector" +msgstr "" + +#: bmerge.c:49 +msgid "Internal error: xcols is not integer vector" +msgstr "" + +#: bmerge.c:50 +#, c-format +msgid "Internal error: length(icols) [%d] > length(xcols) [%d]" +msgstr "" + +#: bmerge.c:57 +#, c-format +msgid "Internal error. icols[%d] is NA" +msgstr "" + +#: bmerge.c:58 +#, c-format +msgid "Internal error. xcols[%d] is NA" +msgstr "" + +#: bmerge.c:59 +#, c-format +msgid "icols[%d]=%d outside range [1,length(i)=%d]" +msgstr "" + +#: bmerge.c:60 +#, c-format +msgid "xcols[%d]=%d outside range [1,length(x)=%d]" +msgstr "" + +#: bmerge.c:63 +#, c-format +msgid "typeof x.%s (%s) != typeof i.%s (%s)" +msgstr "" + +#: bmerge.c:70 +msgid "roll is character but not 'nearest'" +msgstr "" + +#: bmerge.c:71 +msgid "roll='nearest' can't be applied to a character column, yet." +msgstr "" + +#: bmerge.c:74 +msgid "Internal error: roll is not character or double" +msgstr "" + +#: bmerge.c:79 +msgid "rollends must be a length 2 logical vector" +msgstr "" + +#: bmerge.c:89 uniqlist.c:270 +msgid "" +"Internal error: invalid value for 'mult'. please report to data.table issue " +"tracker" +msgstr "" + +#: bmerge.c:93 +msgid "" +"Internal error: opArg is not an integer vector of length equal to length(on)" +msgstr "" + +#: bmerge.c:96 +msgid "Internal error: nqgrpArg must be an integer vector" +msgstr "" + +#: bmerge.c:102 +msgid "Intrnal error: nqmaxgrpArg is not a positive length-1 integer vector" +msgstr "" + +#: bmerge.c:111 +msgid "Internal error in allocating memory for non-equi join" +msgstr "" + +#: bmerge.c:156 +msgid "Internal error: xoArg is not an integer vector" +msgstr "" + +#: bmerge.c:271 bmerge.c:379 +#, c-format +msgid "" +"Internal error in bmerge_r for '%s' column. Unrecognized value op[col]=%d" +msgstr "" + +#: bmerge.c:303 +#, c-format +msgid "Only '==' operator is supported for columns of type %s." +msgstr "" + +#: bmerge.c:410 +#, c-format +msgid "Type '%s' not supported for joining/merging" +msgstr "" + +#: bmerge.c:468 +msgid "Internal error: xlow!=xupp-1 || xlowxuppIn" +msgstr "" + +#: chmatch.c:4 +#, c-format +msgid "x is type '%s' (must be 'character' or NULL)" +msgstr "" + +#: chmatch.c:5 +#, c-format +msgid "table is type '%s' (must be 'character' or NULL)" +msgstr "" + +#: chmatch.c:6 +msgid "Internal error: either chin or chmatchdup should be true not both" +msgstr "" + +#: chmatch.c:30 +#, c-format +msgid "" +"Internal error: CHARSXP '%s' has a negative truelength (%d). Please file an " +"issue on the data.table tracker." +msgstr "" + +#: chmatch.c:60 +#, c-format +msgid "" +"Failed to allocate %lld bytes working memory in chmatchdup: length(table)=%d " +"length(unique(table))=%d" +msgstr "" + +#: cj.c:89 +#, c-format +msgid "Type '%s' not supported by CJ." +msgstr "" + +#: coalesce.c:5 +msgid "Internal error in coalesce.c: input is list(...) at R level" +msgstr "" + +#: coalesce.c:7 +msgid "" +"Internal error in coalesce.c: argument 'inplaceArg' must be TRUE or FALSE" +msgstr "" + +#: coalesce.c:16 +msgid "" +"The first argument is a list, data.table or data.frame. In this case there " +"should be no other arguments provided." +msgstr "" + +#: coalesce.c:32 +#, c-format +msgid "" +"Item 1 is a factor but item %d is not a factor. When factors are involved, " +"all items must be factor." +msgstr "" + +#: coalesce.c:34 +#, c-format +msgid "" +"Item %d is a factor but its levels are not identical to the first item's " +"levels." +msgstr "" + +#: coalesce.c:38 +#, c-format +msgid "" +"Item %d is a factor but item 1 is not a factor. When factors are involved, " +"all items must be factor." +msgstr "" + +#: coalesce.c:41 +#, c-format +msgid "" +"Item %d is type %s but the first item is type %s. Please coerce before " +"coalescing." +msgstr "" + +#: coalesce.c:43 +#, c-format +msgid "Item %d has a different class than item 1." +msgstr "" + +#: coalesce.c:46 +#, c-format +msgid "" +"Item %d is length %d but the first item is length %d. Only singletons are " +"recycled." +msgstr "" + +#: coalesce.c:166 +#, c-format +msgid "Unsupported type: %s" +msgstr "" + +#: dogroups.c:14 +msgid "Internal error: order not integer vector" +msgstr "" + +#: dogroups.c:15 +msgid "Internal error: starts not integer" +msgstr "" + +#: dogroups.c:16 +msgid "Internal error: lens not integer" +msgstr "" + +#: dogroups.c:18 +msgid "Internal error: jiscols not NULL but o__ has length" +msgstr "" + +#: dogroups.c:19 +msgid "Internal error: xjiscols not NULL but o__ has length" +msgstr "" + +#: dogroups.c:20 +msgid "'env' should be an environment" +msgstr "" + +#: dogroups.c:39 +#, c-format +msgid "" +"Internal error: unsupported size-0 type '%s' in column %d of 'by' should " +"have been caught earlier" +msgstr "" + +#: dogroups.c:43 +#, c-format +msgid "!length(bynames)[%d]==length(groups)[%d]==length(grpcols)[%d]" +msgstr "" + +#: dogroups.c:62 +msgid "row.names attribute of .SD not found" +msgstr "" + +#: dogroups.c:64 +#, c-format +msgid "" +"row.names of .SD isn't integer length 2 with NA as first item; i.e., ." +"set_row_names(). [%s %d %d]" +msgstr "" + +#: dogroups.c:69 +msgid "length(names)!=length(SD)" +msgstr "" + +#: dogroups.c:73 +#, c-format +msgid "" +"Internal error: size-0 type %d in .SD column %d should have been caught " +"earlier" +msgstr "" + +#: dogroups.c:83 +msgid "length(xknames)!=length(xSD)" +msgstr "" + +#: dogroups.c:87 +#, c-format +msgid "" +"Internal error: type %d in .xSD column %d should have been caught by now" +msgstr "" + +#: dogroups.c:91 +#, c-format +msgid "length(iSD)[%d] != length(jiscols)[%d]" +msgstr "" + +#: dogroups.c:92 +#, c-format +msgid "length(xSD)[%d] != length(xjiscols)[%d]" +msgstr "" + +#: dogroups.c:155 dogroups.c:184 +msgid "Internal error. Type of column should have been checked by now" +msgstr "" + +#: dogroups.c:273 +#, c-format +msgid "j evaluates to type '%s'. Must evaluate to atomic vector or list." +msgstr "" + +#: dogroups.c:281 +msgid "" +"All items in j=list(...) should be atomic vectors or lists. If you are " +"trying something like j=list(.SD,newcol=mean(colA)) then use := by group " +"instead (much quicker), or cbind or merge afterwards." +msgstr "" + +#: dogroups.c:291 +msgid "" +"RHS is NULL when grouping :=. Makes no sense to delete a column by group. " +"Perhaps use an empty vector instead." +msgstr "" + +#: dogroups.c:295 +#, c-format +msgid "" +"Supplied %d items to be assigned to group %d of size %d in column '%s'. The " +"RHS length must either be 1 (single values are ok) or match the LHS length " +"exactly. If you wish to 'recycle' the RHS please use rep() explicitly to " +"make this intent clear to readers of your code." +msgstr "" + +#: dogroups.c:304 +msgid "" +"Internal error: Trying to add new column by reference but tl is full; " +"setalloccol should have run first at R level before getting to this point in " +"dogroups" +msgstr "" + +#: dogroups.c:326 +msgid "j doesn't evaluate to the same number of columns for each group" +msgstr "" + +#: dogroups.c:360 +#, c-format +msgid "" +"Column %d of j's result for the first group is NULL. We rely on the column " +"types of the first result to decide the type expected for the remaining " +"groups (and require consistency). NULL columns are acceptable for later " +"groups (and those are replaced with NA of appropriate type and recycled) but " +"not for the first. Please use a typed empty vector instead, such as " +"integer() or numeric()." +msgstr "" + +#: dogroups.c:386 +#, c-format +msgid "dogroups: length(ans)[%d]!=ngrpcols[%d]+njval[%d]" +msgstr "" + +#: dogroups.c:426 +#, c-format +msgid "" +"Column %d of result for group %d is type '%s' but expecting type '%s'. " +"Column types must be consistent for each group." +msgstr "" + +#: dogroups.c:428 +#, c-format +msgid "" +"Supplied %d items for column %d of group %d which has %d rows. The RHS " +"length must either be 1 (single values are ok) or match the LHS length " +"exactly. If you wish to 'recycle' the RHS please use rep() explicitly to " +"make this intent clear to readers of your code." +msgstr "" + +#: dogroups.c:453 +#, c-format +msgid "Internal error: block 0 [%d] and block 1 [%d] have both run" +msgstr "" + +#: dogroups.c:481 +msgid "growVector passed NULL" +msgstr "" + +#: fastmean.c:39 +msgid "narm should be TRUE or FALSE" +msgstr "" + +#: fastmean.c:45 +#, c-format +msgid "fastmean was passed type %s, not numeric or logical" +msgstr "" + +#: fastmean.c:83 fastmean.c:111 +#, c-format +msgid "Internal error: type '%s' not caught earlier in fastmean" +msgstr "" + +#: fcast.c:80 +#, c-format +msgid "Unsupported column type in fcast val: '%s'" +msgstr "" + +#: fifelse.c:5 +msgid "Argument 'test' must be logical." +msgstr "" + +#: fifelse.c:23 +#, c-format +msgid "" +"'yes' is of type %s but 'no' is of type %s. Please make sure that both " +"arguments have the same type." +msgstr "" + +#: fifelse.c:28 +msgid "" +"'yes' has different class than 'no'. Please make sure that both arguments " +"have the same class." +msgstr "" + +#: fifelse.c:33 +msgid "'yes' and 'no' are both type factor but their levels are different." +msgstr "" + +#: fifelse.c:38 +#, c-format +msgid "Length of 'yes' is %lld but must be 1 or length of 'test' (%lld)." +msgstr "" + +#: fifelse.c:40 +#, c-format +msgid "Length of 'no' is %lld but must be 1 or length of 'test' (%lld)." +msgstr "" + +#: fifelse.c:51 +#, c-format +msgid "Length of 'na' is %lld but must be 1" +msgstr "" + +#: fifelse.c:57 +#, c-format +msgid "" +"'yes' is of type %s but 'na' is of type %s. Please make sure that both " +"arguments have the same type." +msgstr "" + +#: fifelse.c:59 +msgid "" +"'yes' has different class than 'na'. Please make sure that both arguments " +"have the same class." +msgstr "" + +#: fifelse.c:63 +msgid "'yes' and 'na' are both type factor but their levels are different." +msgstr "" + +#: fifelse.c:133 +#, c-format +msgid "Type %s is not supported." +msgstr "" + +#: fmelt.c:18 +msgid "'x' must be an integer" +msgstr "" + +#: fmelt.c:19 +msgid "'n' must be a positive integer" +msgstr "" + +#: fmelt.c:41 +msgid "Argument to 'which' must be logical" +msgstr "" + +#: fmelt.c:70 +msgid "concat: 'vec must be a character vector" +msgstr "" + +#: fmelt.c:71 +msgid "concat: 'idx' must be an integer vector of length >= 0" +msgstr "" + +#: fmelt.c:75 +msgid "" +"concat: 'idx' must take values between 0 and length(vec); 0 <= idx <= " +"length(vec)" +msgstr "" + +#: fmelt.c:102 +#, c-format +msgid "Unknown 'measure.vars' type %s at index %d of list" +msgstr "" + +#: fmelt.c:154 fmelt.c:219 +#, c-format +msgid "Unknown 'id.vars' type %s, must be character or integer vector" +msgstr "" + +#: fmelt.c:159 fmelt.c:223 +msgid "One or more values in 'id.vars' is invalid." +msgstr "" + +#: fmelt.c:184 +#, c-format +msgid "" +"Unknown 'measure.vars' type %s, must be character or integer vector/list" +msgstr "" + +#: fmelt.c:193 fmelt.c:239 +msgid "One or more values in 'measure.vars' is invalid." +msgstr "" + +#: fmelt.c:231 +#, c-format +msgid "Unknown 'measure.vars' type %s, must be character or integer vector" +msgstr "" + +#: fmelt.c:276 +msgid "" +"When 'measure.vars' is a list, 'value.name' must be a character vector of " +"length =1 or =length(measure.vars)." +msgstr "" + +#: fmelt.c:277 +msgid "" +"When 'measure.vars' is either not specified or a character/integer vector, " +"'value.name' must be a character vector of length =1." +msgstr "" + +#: fmelt.c:280 +msgid "'variable.name' must be a character/integer vector of length=1." +msgstr "" + +#: fmelt.c:329 +msgid "" +"Internal error: combineFactorLevels in fmelt.c expects all-character input" +msgstr "" + +#: fmelt.c:332 +msgid "" +"Internal error: combineFactorLevels in fmelt.c expects a character target to " +"factorize" +msgstr "" + +#: fmelt.c:490 +#, c-format +msgid "Unknown column type '%s' for column '%s'." +msgstr "" + +#: fmelt.c:514 +#, c-format +msgid "Internal error: fmelt.c:getvarcols %d %d" +msgstr "" + +#: fmelt.c:662 +#, c-format +msgid "Unknown column type '%s' for column '%s' in 'data'" +msgstr "" + +#: fmelt.c:673 +msgid "Input is not of type VECSXP, expected a data.table, data.frame or list" +msgstr "" + +#: fmelt.c:674 +msgid "Argument 'value.factor' should be logical TRUE/FALSE" +msgstr "" + +#: fmelt.c:675 +msgid "Argument 'variable.factor' should be logical TRUE/FALSE" +msgstr "" + +#: fmelt.c:676 +msgid "Argument 'na.rm' should be logical TRUE/FALSE." +msgstr "" + +#: fmelt.c:677 +msgid "Argument 'variable.name' must be a character vector" +msgstr "" + +#: fmelt.c:678 +msgid "Argument 'value.name' must be a character vector" +msgstr "" + +#: fmelt.c:679 +msgid "Argument 'verbose' should be logical TRUE/FALSE" +msgstr "" + +#: fmelt.c:687 +msgid "names(data) is NULL. Please report to data.table-help" +msgstr "" + +#: forder.c:374 +msgid "Must an integer or numeric vector length 1" +msgstr "" + +#: forder.c:375 +msgid "Must be 2, 1 or 0" +msgstr "" + +#: forder.c:431 +msgid "" +"Internal error: input is not either a list of columns, or an atomic vector." +msgstr "" + +#: forder.c:433 +msgid "" +"Internal error: input is an atomic vector (not a list of columns) but by= is " +"not NULL" +msgstr "" + +#: forder.c:435 +msgid "" +"Input is an atomic vector (not a list of columns) but order= is not a length " +"1 integer" +msgstr "" + +#: forder.c:448 +msgid "Internal error: DT is an empty list() of 0 columns" +msgstr "" + +#: forder.c:450 +#, c-format +msgid "" +"Internal error: DT has %d columns but 'by' is either not integer or is " +"length 0" +msgstr "" + +#: forder.c:452 +#, c-format +msgid "" +"Either order= is not integer or its length (%d) is different to by='s length " +"(%d)" +msgstr "" + +#: forder.c:458 +#, c-format +msgid "internal error: 'by' value %d out of range [1,%d]" +msgstr "" + +#: forder.c:460 +#, c-format +msgid "Column %d is length %d which differs from length of column 1 (%d)\n" +msgstr "" + +#: forder.c:464 +msgid "retGrp= must be TRUE or FALSE" +msgstr "" + +#: forder.c:467 +msgid "sort= must be TRUE or FALSE" +msgstr "" + +#: forder.c:470 +msgid "At least one of retGrp= or sort= must be TRUE" +msgstr "" + +#: forder.c:472 +msgid "na.last must be logical TRUE, FALSE or NA of length 1" +msgstr "" + +#: forder.c:1301 +msgid "x must be either NULL or an integer vector" +msgstr "" + +#: forder.c:1303 +msgid "nrow must be integer vector length 1" +msgstr "" + +#: forder.c:1305 +#, c-format +msgid "nrow==%d but must be >=0" +msgstr "" + +#: forder.c:1322 +msgid "x must be type 'double'" +msgstr "" + +#: frank.c:11 +#, c-format +msgid "Internal error. Argument 'x' to Cdt_na is type '%s' not 'list'" +msgstr "" + +#: frank.c:12 +#, c-format +msgid "Internal error. Argument 'cols' to Cdt_na is type '%s' not 'integer'" +msgstr "" + +#: frank.c:16 frank.c:146 subset.c:263 +#, c-format +msgid "Item %d of 'cols' is %d which is outside 1-based range [1,ncol(x)=%d]" +msgstr "" + +#: frank.c:26 frank.c:155 +#, c-format +msgid "" +"Column %d of input list x is length %d, inconsistent with first column of " +"that item which is length %d." +msgstr "" + +#: frank.c:65 frank.c:202 transpose.c:88 +#, c-format +msgid "Unsupported column type '%s'" +msgstr "" + +#: frank.c:83 +msgid "" +"Internal error: invalid ties.method for frankv(), should have been caught " +"before. please report to data.table issue tracker" +msgstr "" + +#: frank.c:130 +#, c-format +msgid "Internal error: unknown ties value in frank: %d" +msgstr "" + +#: frank.c:141 +#, c-format +msgid "Internal error. Argument 'x' to CanyNA is type '%s' not 'list'" +msgstr "" + +#: frank.c:142 +#, c-format +msgid "Internal error. Argument 'cols' to CanyNA is type '%s' not 'integer'" +msgstr "" + +#: freadR.c:84 +msgid "" +"Internal error: freadR input not a single character string: a filename or " +"the data itself. Should have been caught at R level." +msgstr "" + +#: freadR.c:101 +msgid "" +"Internal error: freadR sep not a single character. R level catches this." +msgstr "" + +#: freadR.c:105 +msgid "" +"Internal error: freadR dec not a single character. R level catches this." +msgstr "" + +#: freadR.c:112 +msgid "quote= must be a single character, blank \")\", or FALSE" +msgstr "" + +#: freadR.c:137 +msgid "Internal error: skip not integer or string in freadR.c" +msgstr "" + +#: freadR.c:140 +#, c-format +msgid "Internal error: NAstringsArg is type '%s'. R level catches this" +msgstr "" + +#: freadR.c:153 +#, c-format +msgid "nThread(%d)<1" +msgstr "" + +#: freadR.c:160 +msgid "'integer64' must be a single character string" +msgstr "" + +#: freadR.c:660 +#, c-format +msgid "%s" +msgstr "" + +#: froll.c:428 +#, c-format +msgid "%s: results from provided FUN are not length 1" +msgstr "" + +#: froll.c:438 +#, c-format +msgid "%s: results from provided FUN are not of type double" +msgstr "" + +#: frollR.c:15 +msgid "x must be of type numeric or logical" +msgstr "" + +#: frollR.c:26 +msgid "x must be list, data.frame or data.table of numeric or logical types" +msgstr "" + +#: frollR.c:47 frollR.c:264 +msgid "n must be non 0 length" +msgstr "" + +#: frollR.c:50 +msgid "adaptive must be TRUE or FALSE" +msgstr "" + +#: frollR.c:58 +msgid "n must be integer, list is accepted for adaptive TRUE" +msgstr "" + +#: frollR.c:65 frollR.c:256 frollR.c:259 +msgid "n must be integer" +msgstr "" + +#: frollR.c:72 +msgid "n must be positive integer values (> 0)" +msgstr "" + +#: frollR.c:81 frollR.c:93 +msgid "n must be integer vector or list of integer vectors" +msgstr "" + +#: frollR.c:104 gsumm.c:342 gsumm.c:577 gsumm.c:686 gsumm.c:805 gsumm.c:950 +#: gsumm.c:1262 gsumm.c:1403 uniqlist.c:350 +msgid "na.rm must be TRUE or FALSE" +msgstr "" + +#: frollR.c:107 +msgid "hasNA must be TRUE, FALSE or NA" +msgstr "" + +#: frollR.c:109 +msgid "" +"using hasNA FALSE and na.rm TRUE does not make sense, if you know there are " +"NA values use hasNA TRUE, otherwise leave it as default NA" +msgstr "" + +#: frollR.c:119 frollR.c:275 +msgid "" +"Internal error: invalid align argument in rolling function, should have been " +"caught before. please report to data.table issue tracker." +msgstr "" + +#: frollR.c:122 +msgid "" +"using adaptive TRUE and align argument different than 'right' is not " +"implemented" +msgstr "" + +#: frollR.c:135 +msgid "" +"adaptive rolling function can only process 'x' having equal length of " +"elements, like data.table or data.frame; If you want to call rolling " +"function on list having variable length of elements call it for each field " +"separately" +msgstr "" + +#: frollR.c:137 +msgid "" +"length of integer vector(s) provided as list to 'n' argument must be equal " +"to number of observations provided in 'x'" +msgstr "" + +#: frollR.c:151 +msgid "" +"Internal error: invalid fun argument in rolling function, should have been " +"caught before. please report to data.table issue tracker." +msgstr "" + +#: frollR.c:155 frollR.c:279 nafill.c:136 shift.c:21 +msgid "fill must be a vector of length 1" +msgstr "" + +#: frollR.c:169 frollR.c:292 +msgid "fill must be numeric" +msgstr "" + +#: frollR.c:185 +msgid "" +"Internal error: invalid algo argument in rolling function, should have been " +"caught before. please report to data.table issue tracker." +msgstr "" + +#: frollR.c:190 +#, c-format +msgid "Internal error: badaptive=%d but ik is not integer" +msgstr "" + +#: frollR.c:219 +#, c-format +msgid "Internal error: Unknown sfun value in froll: %d" +msgstr "" + +#: frollR.c:238 +msgid "internal error: 'fun' must be a function" +msgstr "" + +#: frollR.c:240 +msgid "internal error: 'rho' should be an environment" +msgstr "" + +#: fsort.c:111 +msgid "x must be a vector of type 'double' currently" +msgstr "" + +#: fsort.c:157 +msgid "Cannot yet handle negatives." +msgstr "" + +#: fsort.c:173 +msgid "Unable to allocate working memory" +msgstr "" + +#: fsort.c:230 +msgid "Internal error: counts[nBatch-1][MSBsize-1] != length(x)" +msgstr "" + +#: fwriteR.c:41 +msgid "Internal error: col passed to getMaxCategLen is missing levels" +msgstr "" + +#: fwriteR.c:75 +msgid "Internal error: getMaxListItemLen should have caught this up front." +msgstr "" + +#: fwriteR.c:98 +#, c-format +msgid "" +"Row %d of list column is type '%s' - not yet implemented. fwrite() can write " +"list columns containing items which are atomic vectors of" +msgstr "" + +#: fwriteR.c:170 +msgid "" +"fwrite must be passed an object of type list; e.g. data.frame, data.table" +msgstr "" + +#: fwriteR.c:234 +#, c-format +msgid "Column %d's length (%d) is not the same as column 1's length (%d)" +msgstr "" + +#: fwriteR.c:237 +#, c-format +msgid "Column %d's type is '%s' - not yet implemented in fwrite." +msgstr "" + +#: fwriteR.c:270 +#, c-format +msgid "" +"sep ('%c'), sep2 ('%c') and dec ('%c') must all be different. Column %d is a " +"list column." +msgstr "" + +#: gsumm.c:43 +msgid "env is not an environment" +msgstr "" + +#: gsumm.c:45 +msgid "o is not an integer vector" +msgstr "" + +#: gsumm.c:46 +msgid "f is not an integer vector" +msgstr "" + +#: gsumm.c:47 +msgid "l is not an integer vector" +msgstr "" + +#: gsumm.c:56 +msgid "irowsArg is neither an integer vector nor NULL" +msgstr "" + +#: gsumm.c:58 +#, c-format +msgid "length(f)=%d != length(l)=%d" +msgstr "" + +#: gsumm.c:66 +#, c-format +msgid "o has length %d but sum(l)=%d" +msgstr "" + +#: gsumm.c:69 +msgid "Internal error: o's maxgrpn attribute mismatches recalculated maxgrpn" +msgstr "" + +#: gsumm.c:89 +#, c-format +msgid "" +"Internal error: nrow=%d ngrp=%d nbit=%d shift=%d highSize=%d nBatch=%d " +"batchSize=%d lastBatchSize=%d\n" +msgstr "" + +#: gsumm.c:116 +msgid "" +"Internal error: Failed to allocate counts or TMP when assigning g in gforce" +msgstr "" + +#: gsumm.c:334 +#, c-format +msgid "gather implemented for INTSXP, REALSXP, and CPLXSXP but not '%s'" +msgstr "" + +#: gsumm.c:345 +msgid "sum is not meaningful for factors." +msgstr "" + +#: gsumm.c:350 gsumm.c:606 +#, c-format +msgid "nrow [%d] != length(x) [%d] in gsum" +msgstr "" + +#: gsumm.c:565 +#, c-format +msgid "" +"Type '%s' not supported by GForce sum (gsum). Either add the prefix base::" +"sum(.) or turn off GForce optimization using options(datatable.optimize=1)" +msgstr "" + +#: gsumm.c:578 +msgid "" +"GForce mean can only be applied to columns, not .SD or similar. Likely " +"you're looking for 'DT[,lapply(.SD,mean),by=,.SDcols=]'. See ?data.table." +msgstr "" + +#: gsumm.c:579 +msgid "mean is not meaningful for factors." +msgstr "" + +#: gsumm.c:599 +#, c-format +msgid "Internal error: gsum returned type '%s'. typeof(x) is '%s'" +msgstr "" + +#: gsumm.c:609 +#, c-format +msgid "Unable to allocate %d * %d bytes for sum in gmean na.rm=TRUE" +msgstr "" + +#: gsumm.c:612 +#, c-format +msgid "Unable to allocate %d * %d bytes for counts in gmean na.rm=TRUE" +msgstr "" + +#: gsumm.c:638 +#, c-format +msgid "Unable to allocate %d * %d bytes for si in gmean na.rm=TRUE" +msgstr "" + +#: gsumm.c:650 +#, c-format +msgid "" +"Type '%s' not supported by GForce mean (gmean) na.rm=TRUE. Either add the " +"prefix base::mean(.) or turn off GForce optimization using options(datatable." +"optimize=1)" +msgstr "" + +#: gsumm.c:674 +msgid "Internal error: unsupported type at the end of gmean" +msgstr "" + +#: gsumm.c:687 +msgid "" +"GForce min can only be applied to columns, not .SD or similar. To find min " +"of all items in a list such as .SD, either add the prefix base::min(.SD) or " +"turn off GForce optimization using options(datatable.optimize=1). More " +"likely, you may be looking for 'DT[,lapply(.SD,min),by=,.SDcols=]'" +msgstr "" + +#: gsumm.c:688 +msgid "min is not meaningful for factors." +msgstr "" + +#: gsumm.c:693 +#, c-format +msgid "nrow [%d] != length(x) [%d] in gmin" +msgstr "" + +#: gsumm.c:791 +msgid "Type 'complex' has no well-defined min" +msgstr "" + +#: gsumm.c:794 +#, c-format +msgid "" +"Type '%s' not supported by GForce min (gmin). Either add the prefix base::" +"min(.) or turn off GForce optimization using options(datatable.optimize=1)" +msgstr "" + +#: gsumm.c:806 +msgid "" +"GForce max can only be applied to columns, not .SD or similar. To find max " +"of all items in a list such as .SD, either add the prefix base::max(.SD) or " +"turn off GForce optimization using options(datatable.optimize=1). More " +"likely, you may be looking for 'DT[,lapply(.SD,max),by=,.SDcols=]'" +msgstr "" + +#: gsumm.c:807 +msgid "max is not meaningful for factors." +msgstr "" + +#: gsumm.c:812 +#, c-format +msgid "nrow [%d] != length(x) [%d] in gmax" +msgstr "" + +#: gsumm.c:937 +msgid "Type 'complex' has no well-defined max" +msgstr "" + +#: gsumm.c:940 +#, c-format +msgid "" +"Type '%s' not supported by GForce max (gmax). Either add the prefix base::" +"max(.) or turn off GForce optimization using options(datatable.optimize=1)" +msgstr "" + +#: gsumm.c:951 +msgid "" +"GForce median can only be applied to columns, not .SD or similar. To find " +"median of all items in a list such as .SD, either add the prefix stats::" +"median(.SD) or turn off GForce optimization using options(datatable." +"optimize=1). More likely, you may be looking for 'DT[,lapply(.SD,median)," +"by=,.SDcols=]'" +msgstr "" + +#: gsumm.c:952 +msgid "median is not meaningful for factors." +msgstr "" + +#: gsumm.c:955 +#, c-format +msgid "nrow [%d] != length(x) [%d] in gmedian" +msgstr "" + +#: gsumm.c:992 +#, c-format +msgid "" +"Type '%s' not supported by GForce median (gmedian). Either add the prefix " +"stats::median(.) or turn " +msgstr "" + +#: gsumm.c:1006 +#, c-format +msgid "nrow [%d] != length(x) [%d] in gtail" +msgstr "" + +#: gsumm.c:1074 +#, c-format +msgid "" +"Type '%s' not supported by GForce tail (gtail). Either add the prefix utils::" +"tail(.) or turn off GForce optimization using options(datatable.optimize=1)" +msgstr "" + +#: gsumm.c:1086 gsumm.c:1177 +#, c-format +msgid "nrow [%d] != length(x) [%d] in ghead" +msgstr "" + +#: gsumm.c:1154 +#, c-format +msgid "" +"Type '%s' not supported by GForce head (ghead). Either add the prefix utils::" +"head(.) or turn off GForce optimization using options(datatable.optimize=1)" +msgstr "" + +#: gsumm.c:1162 +msgid "" +"Internal error, gtail is only implemented for n=1. This should have been " +"caught before. please report to data.table issue tracker." +msgstr "" + +#: gsumm.c:1167 +msgid "" +"Internal error, ghead is only implemented for n=1. This should have been " +"caught before. please report to data.table issue tracker." +msgstr "" + +#: gsumm.c:1173 +msgid "" +"Internal error, `g[` (gnthvalue) is only implemented single value subsets " +"with positive index, e.g., .SD[2]. This should have been caught before. " +"please report to data.table issue tracker." +msgstr "" + +#: gsumm.c:1251 +#, c-format +msgid "" +"Type '%s' not supported by GForce subset `[` (gnthvalue). Either add the " +"prefix utils::head(.) or turn off GForce optimization using " +"options(datatable.optimize=1)" +msgstr "" + +#: gsumm.c:1263 +msgid "" +"GForce var/sd can only be applied to columns, not .SD or similar. For the " +"full covariance matrix of all items in a list such as .SD, either add the " +"prefix stats::var(.SD) (or stats::sd(.SD)) or turn off GForce optimization " +"using options(datatable.optimize=1). Alternatively, if you only need the " +"diagonal elements, 'DT[,lapply(.SD,var),by=,.SDcols=]' is the optimized way " +"to do this." +msgstr "" + +#: gsumm.c:1264 +msgid "var/sd is not meaningful for factors." +msgstr "" + +#: gsumm.c:1267 +#, c-format +msgid "nrow [%d] != length(x) [%d] in gvar" +msgstr "" + +#: gsumm.c:1383 +#, c-format +msgid "" +"Type '%s' not supported by GForce var (gvar). Either add the prefix stats::" +"var(.) or turn off GForce optimization using options(datatable.optimize=1)" +msgstr "" + +#: gsumm.c:1385 +#, c-format +msgid "" +"Type '%s' not supported by GForce sd (gsd). Either add the prefix stats::" +"sd(.) or turn off GForce optimization using options(datatable.optimize=1)" +msgstr "" + +#: gsumm.c:1404 +msgid "" +"GForce prod can only be applied to columns, not .SD or similar. To multiply " +"all items in a list such as .SD, either add the prefix base::prod(.SD) or " +"turn off GForce optimization using options(datatable.optimize=1). More " +"likely, you may be looking for 'DT[,lapply(.SD,prod),by=,.SDcols=]'" +msgstr "" + +#: gsumm.c:1405 +msgid "prod is not meaningful for factors." +msgstr "" + +#: gsumm.c:1410 +#, c-format +msgid "nrow [%d] != length(x) [%d] in gprod" +msgstr "" + +#: gsumm.c:1412 +#, c-format +msgid "Unable to allocate %d * %d bytes for gprod" +msgstr "" + +#: gsumm.c:1447 +#, c-format +msgid "" +"Type '%s' not supported by GForce prod (gprod). Either add the prefix base::" +"prod(.) or turn off GForce optimization using options(datatable.optimize=1)" +msgstr "" + +#: ijoin.c:22 ijoin.c:243 +msgid "" +"Internal error: invalid value for 'mult'; this should have been caught " +"before. please report to data.table issue tracker" +msgstr "" + +#: ijoin.c:29 ijoin.c:250 +msgid "" +"Internal error: invalid value for 'type'; this should have been caught " +"before. please report to data.table issue tracker" +msgstr "" + +#: ijoin.c:56 ijoin.c:121 +#, c-format +msgid "Internal error: unknown type in mult=%d in lookup: %d" +msgstr "" + +#: ijoin.c:124 ijoin.c:215 +#, c-format +msgid "Internal error: unknown mult in lookup: %d" +msgstr "" + +#: ijoin.c:160 +#, c-format +msgid "Internal error: unknown type lookup should have been caught earlier: %d" +msgstr "" + +#: ijoin.c:212 +#, c-format +msgid "" +"Internal error: unknown type in mult=%d in lookup should have been caught " +"earlier: %d" +msgstr "" + +#: ijoin.c:323 +#, c-format +msgid "Internal error: unknown type in mult=ALL in overlaps: %d" +msgstr "" + +#: ijoin.c:464 ijoin.c:571 ijoin.c:720 +#, c-format +msgid "Internal error: unknown type in mult=%d in overlaps: %d" +msgstr "" + +#: ijoin.c:723 +#, c-format +msgid "Internal error: unknown mult in overlaps: %d" +msgstr "" + +#: init.c:198 +#, c-format +msgid "" +"Pointers are %d bytes, greater than 8. We have not tested on any " +"architecture greater than 64bit yet." +msgstr "" + +#: init.c:209 +#, c-format +msgid "Checking NA_INTEGER [%d] == INT_MIN [%d] %s" +msgstr "" + +#: init.c:210 +#, c-format +msgid "Checking NA_INTEGER [%d] == NA_LOGICAL [%d] %s" +msgstr "" + +#: init.c:211 +#, c-format +msgid "Checking sizeof(int) [%d] is 4 %s" +msgstr "" + +#: init.c:212 +#, c-format +msgid "Checking sizeof(double) [%d] is 8 %s" +msgstr "" + +#: init.c:214 +#, c-format +msgid "Checking sizeof(long long) [%d] is 8 %s" +msgstr "" + +#: init.c:215 +#, c-format +msgid "Checking sizeof(pointer) [%d] is 4 or 8 %s" +msgstr "" + +#: init.c:216 +#, c-format +msgid "Checking sizeof(SEXP) [%d] == sizeof(pointer) [%d] %s" +msgstr "" + +#: init.c:217 +#, c-format +msgid "Checking sizeof(uint64_t) [%d] is 8 %s" +msgstr "" + +#: init.c:218 +#, c-format +msgid "Checking sizeof(int64_t) [%d] is 8 %s" +msgstr "" + +#: init.c:219 +#, c-format +msgid "Checking sizeof(signed char) [%d] is 1 %s" +msgstr "" + +#: init.c:220 +#, c-format +msgid "Checking sizeof(int8_t) [%d] is 1 %s" +msgstr "" + +#: init.c:221 +#, c-format +msgid "Checking sizeof(uint8_t) [%d] is 1 %s" +msgstr "" + +#: init.c:222 +#, c-format +msgid "Checking sizeof(int16_t) [%d] is 2 %s" +msgstr "" + +#: init.c:223 +#, c-format +msgid "Checking sizeof(uint16_t) [%d] is 2 %s" +msgstr "" + +#: init.c:226 +#, c-format +msgid "Checking LENGTH(allocVector(INTSXP,2)) [%d] is 2 %s" +msgstr "" + +#: init.c:227 +#, c-format +msgid "Checking TRUELENGTH(allocVector(INTSXP,2)) [%d] is 0 %s" +msgstr "" + +#: init.c:234 +#, c-format +msgid "Checking memset(&i,0,sizeof(int)); i == (int)0 %s" +msgstr "" + +#: init.c:237 +#, c-format +msgid "Checking memset(&ui, 0, sizeof(unsigned int)); ui == (unsigned int)0 %s" +msgstr "" + +#: init.c:240 +#, c-format +msgid "Checking memset(&d, 0, sizeof(double)); d == (double)0.0 %s" +msgstr "" + +#: init.c:243 +#, c-format +msgid "Checking memset(&ld, 0, sizeof(long double)); ld == (long double)0.0 %s" +msgstr "" + +#: init.c:246 +msgid "The ascii character '/' is not just before '0'" +msgstr "" + +#: init.c:247 +msgid "The C expression (uint_fast8_t)('/'-'0')<10 is true. Should be false." +msgstr "" + +#: init.c:248 +msgid "The ascii character ':' is not just after '9'" +msgstr "" + +#: init.c:249 +msgid "The C expression (uint_fast8_t)('9'-':')<10 is true. Should be false." +msgstr "" + +#: init.c:254 +#, c-format +msgid "Conversion of NA_INT64 via double failed %lld!=%lld" +msgstr "" + +#: init.c:258 +msgid "NA_INT64_D (negative -0.0) is not == 0.0." +msgstr "" + +#: init.c:259 +msgid "NA_INT64_D (negative -0.0) is not ==-0.0." +msgstr "" + +#: init.c:260 +msgid "ISNAN(NA_INT64_D) is TRUE but should not be" +msgstr "" + +#: init.c:261 +msgid "isnan(NA_INT64_D) is TRUE but should not be" +msgstr "" + +#: init.c:290 +#, c-format +msgid "PRINTNAME(install(\")integer64\")) has returned %s not %s" +msgstr "" + +#: init.c:359 +msgid ".Last.value in namespace is not a length 1 integer" +msgstr "" + +#: nafill.c:83 +msgid "" +"'x' argument is atomic vector, in-place update is supported only for list/" +"data.table" +msgstr "" + +#: nafill.c:85 nafill.c:95 +msgid "'x' argument must be numeric type, or list/data.table of numeric types" +msgstr "" + +#: nafill.c:133 nafill.c:161 +msgid "" +"Internal error: invalid type argument in nafillR function, should have been " +"caught before. Please report to data.table issue tracker." +msgstr "" + +#: openmp-utils.c:67 +msgid "'verbose' must be TRUE or FALSE" +msgstr "" + +#: openmp-utils.c:91 +msgid "" +"restore_after_fork= must be TRUE, FALSE, or NULL (default). " +"getDTthreads(verbose=TRUE) reports the current setting.\n" +msgstr "" + +#: openmp-utils.c:105 +#, c-format +msgid "" +"threads= must be either NULL (default) or a single number. It has length %d" +msgstr "" + +#: openmp-utils.c:107 +msgid "threads= must be either NULL (default) or type integer/numeric" +msgstr "" + +#: openmp-utils.c:109 +msgid "" +"threads= must be either NULL or a single integer >= 0. See ?setDTthreads." +msgstr "" + +#: openmp-utils.c:114 +msgid "Internal error: percent= must be TRUE or FALSE at C level" +msgstr "" + +#: openmp-utils.c:117 +#, c-format +msgid "" +"Internal error: threads==%d should be between 2 and 100 (percent=TRUE at C " +"level)." +msgstr "" + +#: rbindlist.c:8 +msgid "fill= should be TRUE or FALSE" +msgstr "" + +#: rbindlist.c:10 +msgid "use.names= should be TRUE, FALSE, or not used (\")check\" by default)" +msgstr "" + +#: rbindlist.c:12 +msgid "" +"Input to rbindlist must be a list. This list can contain data.tables, data." +"frames or plain lists." +msgstr "" + +#: rbindlist.c:20 +msgid "Internal error: rbindlist.c idcol is not a single string" +msgstr "" + +#: rbindlist.c:31 +#, c-format +msgid "Item %d of input is not a data.frame, data.table or list" +msgstr "" + +#: rbindlist.c:39 +#, c-format +msgid "" +"Item %d has %d columns, inconsistent with item %d which has %d columns. To " +"fill missing columns use fill=TRUE." +msgstr "" + +#: rbindlist.c:42 +#, c-format +msgid "Item %d has %d columns but %d column names. Invalid object." +msgstr "" + +#: rbindlist.c:49 +#, c-format +msgid "" +"Column %d of item %d is length %d inconsistent with column %d which is " +"length %d. Only length-1 columns are recycled." +msgstr "" + +#: rbindlist.c:62 +#, c-format +msgid "" +"Total rows in the list is %lld which is larger than the maximum number of " +"rows, currently %d" +msgstr "" + +#: rbindlist.c:63 +msgid "use.names=TRUE but no item of input list has any names" +msgstr "" + +#: rbindlist.c:71 +#, c-format +msgid "" +"Failed to allocate upper bound of %lld unique column names [sum(lapply(l," +"ncol))]" +msgstr "" + +#: rbindlist.c:102 +#, c-format +msgid "Failed to allocate nuniq=%d items working memory in rbindlist.c" +msgstr "" + +#: rbindlist.c:136 +#, c-format +msgid "Failed to allocate ncol=%d items working memory in rbindlist.c" +msgstr "" + +#: rbindlist.c:191 +msgid "" +"Internal error: usenames==NA but fill=TRUE. usenames should have been set to " +"TRUE earlier with warning." +msgstr "" + +#: rbindlist.c:206 +msgid "" +"Internal error: could not find the first column name not present in earlier " +"item" +msgstr "" + +#: rbindlist.c:218 +#, c-format +msgid "" +"Internal error: usenames==NA but an out-of-order name has been found in an " +"item with no names or the first item. [%d]" +msgstr "" + +#: rbindlist.c:297 +#, c-format +msgid "" +"Column %d of item %d has type 'factor' but has no levels; i.e. malformed." +msgstr "" + +#: rbindlist.c:315 +#, c-format +msgid "" +"Class attribute on column %d of item %d does not match with column %d of " +"item %d." +msgstr "" + +#: rbindlist.c:325 +#, c-format +msgid "" +"Internal error: column %d of result is determined to be integer64 but " +"maxType=='%s' != REALSXP" +msgstr "" + +#: rbindlist.c:361 +#, c-format +msgid "" +"Failed to allocate working memory for %d ordered factor levels of result " +"column %d" +msgstr "" + +#: rbindlist.c:432 +#, c-format +msgid "" +"Failed to allocate working memory for %d factor levels of result column %d " +"when reading item %d of item %d" +msgstr "" + +#: reorder.c:17 +#, c-format +msgid "Item %d of list is type '%s' which isn't yet supported (SIZEOF=%d)" +msgstr "" + +#: reorder.c:19 +#, c-format +msgid "" +"Column %d is length %d which differs from length of column 1 (%d). Invalid " +"data.table." +msgstr "" + +#: reorder.c:27 +#, c-format +msgid "" +"reorder accepts vectors but this non-VECSXP is type '%s' which isn't yet " +"supported (SIZEOF=%d)" +msgstr "" + +#: reorder.c:28 +msgid "" +"Internal error in reorder.c: cannot reorder an ALTREP vector. Please see " +"NEWS item 2 in v1.11.4 and report this as a bug." +msgstr "" + +#: reorder.c:33 +msgid "order must be an integer vector" +msgstr "" + +#: reorder.c:34 +#, c-format +msgid "nrow(x)[%d]!=length(order)[%d]" +msgstr "" + +#: reorder.c:48 +#, c-format +msgid "order is not a permutation of 1:nrow[%d]" +msgstr "" + +#: reorder.c:57 +#, c-format +msgid "" +"Unable to allocate %d * %d bytes of working memory for reordering data.table" +msgstr "" + +#: shift.c:17 +#, c-format +msgid "" +"type '%s' passed to shift(). Must be a vector, list, data.frame or data.table" +msgstr "" + +#: shift.c:24 shift.c:28 +msgid "" +"Internal error: invalid type for shift(), should have been caught before. " +"please report to data.table issue tracker" +msgstr "" + +#: shift.c:31 +msgid "Internal error: k must be integer" +msgstr "" + +#: shift.c:33 +#, c-format +msgid "Item %d of n is NA" +msgstr "" + +#: shift.c:158 +#, c-format +msgid "Unsupported type '%s'" +msgstr "" + +#: subset.c:7 +#, c-format +msgid "Internal error: subsetVectorRaw length(ans)==%d n=%d" +msgstr "" + +#: subset.c:88 +#, c-format +msgid "" +"Internal error: column type '%s' not supported by data.table subset. All " +"known types are supported so please report as bug." +msgstr "" + +#: subset.c:97 subset.c:121 +#, c-format +msgid "Internal error. 'idx' is type '%s' not 'integer'" +msgstr "" + +#: subset.c:122 +#, c-format +msgid "" +"Internal error. 'maxArg' is type '%s' and length %d, should be an integer " +"singleton" +msgstr "" + +#: subset.c:123 +msgid "Internal error: allowOverMax must be TRUE/FALSE" +msgstr "" + +#: subset.c:125 +#, c-format +msgid "Internal error. max is %d, must be >= 0." +msgstr "" + +#: subset.c:149 +#, c-format +msgid "i[%d] is %d which is out of range [1,nrow=%d]" +msgstr "" + +#: subset.c:161 +#, c-format +msgid "" +"Item %d of i is %d and item %d is %d. Cannot mix positives and negatives." +msgstr "" + +#: subset.c:171 +#, c-format +msgid "Item %d of i is %d and item %d is NA. Cannot mix negatives and NA." +msgstr "" + +#: subset.c:223 +#, c-format +msgid "Column %d is NULL; malformed data.table." +msgstr "" + +#: subset.c:226 +#, c-format +msgid "Column %d ['%s'] is a data.frame or data.table; malformed data.table." +msgstr "" + +#: subset.c:231 +#, c-format +msgid "" +"Column %d ['%s'] is length %d but column 1 is length %d; malformed data." +"table." +msgstr "" + +#: subset.c:247 +#, c-format +msgid "Internal error. Argument 'x' to CsubsetDT is type '%s' not 'list'" +msgstr "" + +#: subset.c:260 +#, c-format +msgid "Internal error. Argument 'cols' to Csubset is type '%s' not 'integer'" +msgstr "" + +#: subset.c:337 +msgid "" +"Internal error: NULL can not be subset. It is invalid for a data.table to " +"contain a NULL column." +msgstr "" + +#: subset.c:339 +msgid "" +"Internal error: CsubsetVector is internal-use-only but has received " +"negatives, zeros or out-of-range" +msgstr "" + +#: transpose.c:9 +msgid "l must be a list." +msgstr "" + +#: transpose.c:13 +msgid "ignore.empty should be logical TRUE/FALSE." +msgstr "" + +#: transpose.c:16 +msgid "" +"keep.names should be either NULL, or the name of the first column of the " +"result in which to place the names of the input" +msgstr "" + +#: transpose.c:19 +msgid "fill must be a length 1 vector, such as the default NA" +msgstr "" + +#: transpose.c:28 +#, c-format +msgid "Item %d of list input is not an atomic vector" +msgstr "" + +#: types.c:23 +#, c-format +msgid "" +"%s: %d:\n" +"%s:" +msgstr "" + +#: types.c:55 +msgid "internal error: status, nx, nk must be integer" +msgstr "" + +#: uniqlist.c:14 +msgid "Internal error: uniqlist has not been passed a list of columns" +msgstr "" + +#: uniqlist.c:17 +msgid "Internal error: uniqlist has been passed a non-integer order" +msgstr "" + +#: uniqlist.c:18 +msgid "Internal error: uniqlist has been passed a length-0 order" +msgstr "" + +#: uniqlist.c:19 +#, c-format +msgid "Internal error: uniqlist has been passed length(order)==%d but nrow==%d" +msgstr "" + +#: uniqlist.c:96 uniqlist.c:127 uniqlist.c:208 uniqlist.c:245 uniqlist.c:318 +#, c-format +msgid "Type '%s' not supported" +msgstr "" + +#: uniqlist.c:148 +msgid "Input argument 'x' to 'uniqlengths' must be an integer vector" +msgstr "" + +#: uniqlist.c:149 +msgid "" +"Input argument 'n' to 'uniqlengths' must be an integer vector of length 1" +msgstr "" + +#: uniqlist.c:167 +msgid "cols must be an integer vector with length >= 1" +msgstr "" + +#: uniqlist.c:171 +#, c-format +msgid "Item %d of cols is %d which is outside range of l [1,length(l)=%d]" +msgstr "" + +#: uniqlist.c:174 +#, c-format +msgid "" +"All elements to input list must be of same length. Element [%d] has length " +"%llu != length of first element = %llu." +msgstr "" + +#: uniqlist.c:255 +msgid "Internal error: nestedid was not passed a list length 1 or more" +msgstr "" + +#: uniqlist.c:262 +#, c-format +msgid "Internal error: nrows[%d]>0 but ngrps==0" +msgstr "" + +#: uniqlist.c:264 +msgid "cols must be an integer vector of positive length" +msgstr "" + +#: uniqlist.c:349 +msgid "x is not a logical vector" +msgstr "" + +#: utils.c:73 +#, c-format +msgid "Unsupported type '%s' passed to allNA()" +msgstr "" + +#: utils.c:92 +msgid "'x' argument must be data.table compatible" +msgstr "" + +#: utils.c:94 +msgid "'check_dups' argument must be TRUE or FALSE" +msgstr "" + +#: utils.c:110 +msgid "" +"argument specifying columns is type 'double' and one or more items in it are " +"not whole integers" +msgstr "" + +#: utils.c:116 +#, c-format +msgid "argument specifying columns specify non existing column(s): cols[%d]=%d" +msgstr "" + +#: utils.c:121 +msgid "'x' argument data.table has no names" +msgstr "" + +#: utils.c:126 +#, c-format +msgid "" +"argument specifying columns specify non existing column(s): cols[%d]='%s'" +msgstr "" + +#: utils.c:129 +msgid "argument specifying columns must be character or numeric" +msgstr "" + +#: utils.c:132 +msgid "argument specifying columns specify duplicated column(s)" +msgstr "" + +#: utils.c:138 +#, c-format +msgid "%s: fill argument must be length 1" +msgstr "" + +#: utils.c:171 +#, c-format +msgid "%s: fill argument must be numeric" +msgstr "" + +#: utils.c:274 +#, c-format +msgid "Internal error: unsupported type '%s' passed to copyAsPlain()" +msgstr "" + +#: utils.c:278 +#, c-format +msgid "" +"Internal error: type '%s' passed to copyAsPlain() but it seems " +"copyMostAttrib() retains ALTREP attributes" +msgstr "" + +#: vecseq.c:13 +msgid "x must be an integer vector" +msgstr "" + +#: vecseq.c:14 +msgid "len must be an integer vector" +msgstr "" + +#: vecseq.c:15 +msgid "x and len must be the same length" +msgstr "" + +#: vecseq.c:21 +msgid "" +"Join results in more than 2^31 rows (internal vecseq reached physical " +"limit). Very likely misspecified join. Check for duplicate key values in i " +"each of which join to the same group in x over and over again. If that's ok, " +"try by=.EACHI to run j for each group to avoid the large allocation. " +"Otherwise, please search for this error message in the FAQ, Wiki, Stack " +"Overflow and data.table issue tracker for advice." +msgstr "" + +#: vecseq.c:25 +msgid "clamp must be a double vector length 1" +msgstr "" + +#: vecseq.c:27 +msgid "clamp must be positive" +msgstr "" + +#: vecseq.c:28 +#, c-format +msgid "" +"Join results in %d rows; more than %d = nrow(x)+nrow(i). Check for duplicate " +"key values in i each of which join to the same group in x over and over " +"again. If that's ok, try by=.EACHI to run j for each group to avoid the " +"large allocation. If you are sure you wish to proceed, rerun with allow." +"cartesian=TRUE. Otherwise, please search for this error message in the FAQ, " +"Wiki, Stack Overflow and data.table issue tracker for advice." +msgstr "" + +#: wrappers.c:11 +msgid "Attribute name must be a character vector of length 1" +msgstr "" + +#: wrappers.c:16 +msgid "" +"Internal structure doesn't seem to be a list. Can't set class to be 'data." +"table' or 'data.frame'. Use 'as.data.table()' or 'as.data.frame()' methods " +"instead." +msgstr "" + +#: wrappers.c:59 +msgid "First argument to setlistelt must be a list()" +msgstr "" + +#: wrappers.c:60 +msgid "Second argument to setlistelt must a length 1 integer vector" +msgstr "" + +#: wrappers.c:62 +#, c-format +msgid "i (%d) is outside the range of items [1,%d]" +msgstr "" + +#: wrappers.c:84 +msgid "x isn't a VECSXP" +msgstr "" + +#: wrappers.c:99 +#, c-format +msgid "" +"dim.data.table expects a data.table as input (which is a list), but seems to " +"be of type %s" +msgstr "" diff --git a/src/dogroups.c b/src/dogroups.c index a68ab5f9f7..568b0286b1 100644 --- a/src/dogroups.c +++ b/src/dogroups.c @@ -11,13 +11,13 @@ SEXP dogroups(SEXP dt, SEXP dtcols, SEXP groups, SEXP grpcols, SEXP jiscols, SEX Rboolean wasvector, firstalloc=FALSE, NullWarnDone=FALSE; clock_t tstart=0, tblock[10]={0}; int nblock[10]={0}; - if (!isInteger(order)) error("Internal error: order not integer vector"); // # nocov - if (TYPEOF(starts) != INTSXP) error("Internal error: starts not integer"); // # nocov - if (TYPEOF(lens) != INTSXP) error("Internal error: lens not integer"); // # nocov - // starts can now be NA (<0): if (INTEGER(starts)[0]<0 || INTEGER(lens)[0]<0) error("starts[1]<0 or lens[1]<0"); - if (!isNull(jiscols) && LENGTH(order) && !LOGICAL(on)[0]) error("Internal error: jiscols not NULL but o__ has length"); // # nocov - if (!isNull(xjiscols) && LENGTH(order) && !LOGICAL(on)[0]) error("Internal error: xjiscols not NULL but o__ has length"); // # nocov - if(!isEnvironment(env)) error("’env’ should be an environment"); + if (!isInteger(order)) error(_("Internal error: order not integer vector")); // # nocov + if (TYPEOF(starts) != INTSXP) error(_("Internal error: starts not integer")); // # nocov + if (TYPEOF(lens) != INTSXP) error(_("Internal error: lens not integer")); // # nocov + // starts can now be NA (<0): if (INTEGER(starts)[0]<0 || INTEGER(lens)[0]<0) error(_("starts[1]<0 or lens[1]<0")); + if (!isNull(jiscols) && LENGTH(order) && !LOGICAL(on)[0]) error(_("Internal error: jiscols not NULL but o__ has length")); // # nocov + if (!isNull(xjiscols) && LENGTH(order) && !LOGICAL(on)[0]) error(_("Internal error: xjiscols not NULL but o__ has length")); // # nocov + if(!isEnvironment(env)) error(_("'env' should be an environment")); ngrp = length(starts); // the number of groups (nrow(groups) will be larger when by) ngrpcols = length(grpcols); nrowgroups = length(VECTOR_ELT(groups,0)); @@ -36,11 +36,11 @@ SEXP dogroups(SEXP dt, SEXP dtcols, SEXP groups, SEXP grpcols, SEXP jiscols, SEX SET_STRING_ELT(bynames, i, STRING_ELT(getAttrib(groups,R_NamesSymbol), j)); defineVar(install(CHAR(STRING_ELT(bynames,i))), VECTOR_ELT(BY,i), env); // by vars can be used by name in j as well as via .BY if (SIZEOF(VECTOR_ELT(BY,i))==0) - error("Internal error: unsupported size-0 type '%s' in column %d of 'by' should have been caught earlier", type2char(TYPEOF(VECTOR_ELT(BY, i))), i+1); // #nocov + error(_("Internal error: unsupported size-0 type '%s' in column %d of 'by' should have been caught earlier"), type2char(TYPEOF(VECTOR_ELT(BY, i))), i+1); // #nocov } setAttrib(BY, R_NamesSymbol, bynames); // Fix for #5415 - BY doesn't retain names anymore R_LockBinding(sym_BY, env); - if (isNull(jiscols) && (length(bynames)!=length(groups) || length(bynames)!=length(grpcols))) error("!length(bynames)[%d]==length(groups)[%d]==length(grpcols)[%d]",length(bynames),length(groups),length(grpcols)); + if (isNull(jiscols) && (length(bynames)!=length(groups) || length(bynames)!=length(grpcols))) error(_("!length(bynames)[%d]==length(groups)[%d]==length(grpcols)[%d]"),length(bynames),length(groups),length(grpcols)); // TO DO: check this check above. N = PROTECT(findVar(install(".N"), env)); nprotect++; // PROTECT for rchk @@ -59,18 +59,18 @@ SEXP dogroups(SEXP dt, SEXP dtcols, SEXP groups, SEXP grpcols, SEXP jiscols, SEX // fetch rownames of .SD. rownames[1] is set to -thislen for each group, in case .SD is passed to // non data.table aware package that uses rownames for (s = ATTRIB(SD); s != R_NilValue && TAG(s)!=R_RowNamesSymbol; s = CDR(s)); // getAttrib0 basically but that's hidden in attrib.c - if (s==R_NilValue) error("row.names attribute of .SD not found"); + if (s==R_NilValue) error(_("row.names attribute of .SD not found")); rownames = CAR(s); - if (!isInteger(rownames) || LENGTH(rownames)!=2 || INTEGER(rownames)[0]!=NA_INTEGER) error("row.names of .SD isn't integer length 2 with NA as first item; i.e., .set_row_names(). [%s %d %d]",type2char(TYPEOF(rownames)),LENGTH(rownames),INTEGER(rownames)[0]); + if (!isInteger(rownames) || LENGTH(rownames)!=2 || INTEGER(rownames)[0]!=NA_INTEGER) error(_("row.names of .SD isn't integer length 2 with NA as first item; i.e., .set_row_names(). [%s %d %d]"),type2char(TYPEOF(rownames)),LENGTH(rownames),INTEGER(rownames)[0]); // fetch names of .SD and prepare symbols. In case they are copied-on-write by user assigning to those variables // using <- in j (which is valid, useful and tested), they are repointed to the .SD cols for each group. SEXP names = PROTECT(getAttrib(SDall, R_NamesSymbol)); nprotect++; - if (length(names) != length(SDall)) error("length(names)!=length(SD)"); + if (length(names) != length(SDall)) error(_("length(names)!=length(SD)")); SEXP *nameSyms = (SEXP *)R_alloc(length(names), sizeof(SEXP)); for(int i=0; i1 && vlen!=grpn) { SEXP colname = isNull(target) ? STRING_ELT(newnames, INTEGER(lhs)[j]-origncol-1) : STRING_ELT(dtnames,INTEGER(lhs)[j]-1); - error("Supplied %d items to be assigned to group %d of size %d in column '%s'. The RHS length must either be 1 (single values are ok) or match the LHS length exactly. If you wish to 'recycle' the RHS please use rep() explicitly to make this intent clear to readers of your code.",vlen,i+1,grpn,CHAR(colname)); + error(_("Supplied %d items to be assigned to group %d of size %d in column '%s'. The RHS length must either be 1 (single values are ok) or match the LHS length exactly. If you wish to 'recycle' the RHS please use rep() explicitly to make this intent clear to readers of your code."),vlen,i+1,grpn,CHAR(colname)); // e.g. in #4990 `:=` did not issue recycling warning during grouping. Now it is error not warning. } } @@ -301,7 +301,7 @@ SEXP dogroups(SEXP dt, SEXP dtcols, SEXP groups, SEXP grpcols, SEXP jiscols, SEX RHS = VECTOR_ELT(jval,j%LENGTH(jval)); if (isNull(target)) { // first time adding to new column - if (TRUELENGTH(dt) < INTEGER(lhs)[j]) error("Internal error: Trying to add new column by reference but tl is full; setalloccol should have run first at R level before getting to this point in dogroups"); // # nocov + if (TRUELENGTH(dt) < INTEGER(lhs)[j]) error(_("Internal error: Trying to add new column by reference but tl is full; setalloccol should have run first at R level before getting to this point in dogroups")); // # nocov target = PROTECT(allocNAVectorLike(RHS, LENGTH(VECTOR_ELT(dt,0)))); // Even if we could know reliably to switch from allocNAVectorLike to allocVector for slight speedup, user code could still // contain a switched halt, and in that case we'd want the groups not yet done to have NA rather than 0 or uninitialized. @@ -323,7 +323,7 @@ SEXP dogroups(SEXP dt, SEXP dtcols, SEXP groups, SEXP grpcols, SEXP jiscols, SEX } maxn = 0; if (njval==0) njval = LENGTH(jval); // for first group, then the rest (when non 0) must conform to the first >0 group - if (njval!=LENGTH(jval)) error("j doesn't evaluate to the same number of columns for each group"); // this would be a problem even if we unlisted afterwards. This way the user finds out earlier though so he can fix and rerun sooner. + if (njval!=LENGTH(jval)) error(_("j doesn't evaluate to the same number of columns for each group")); // this would be a problem even if we unlisted afterwards. This way the user finds out earlier though so he can fix and rerun sooner. for (int j=0; jmaxn ? k : maxn; @@ -357,7 +357,7 @@ SEXP dogroups(SEXP dt, SEXP dtcols, SEXP groups, SEXP grpcols, SEXP jiscols, SEX for(int j=0; j0 if (TYPEOF(source) != TYPEOF(target)) - error("Column %d of result for group %d is type '%s' but expecting type '%s'. Column types must be consistent for each group.", j+1, i+1, type2char(TYPEOF(source)), type2char(TYPEOF(target))); + error(_("Column %d of result for group %d is type '%s' but expecting type '%s'. Column types must be consistent for each group."), j+1, i+1, type2char(TYPEOF(source)), type2char(TYPEOF(target))); if (thislen>1 && thislen!=maxn && grpn>0) { // grpn>0 for grouping empty tables; test 1986 - error("Supplied %d items for column %d of group %d which has %d rows. The RHS length must either be 1 (single values are ok) or match the LHS length exactly. If you wish to 'recycle' the RHS please use rep() explicitly to make this intent clear to readers of your code.", thislen, j+1, i+1, maxn); + error(_("Supplied %d items for column %d of group %d which has %d rows. The RHS length must either be 1 (single values are ok) or match the LHS length exactly. If you wish to 'recycle' the RHS please use rep() explicitly to make this intent clear to readers of your code."), thislen, j+1, i+1, maxn); } memrecycle(target, R_NilValue, thisansloc, maxn, source, 0, ""); } @@ -450,7 +450,7 @@ SEXP dogroups(SEXP dt, SEXP dtcols, SEXP groups, SEXP grpcols, SEXP jiscols, SEX for (int j=0; j0; Rprintf("\n %s took %.3fs for %d groups\n", w ? "collecting discontiguous groups" : "memcpy contiguous groups", 1.0*tblock[w]/CLOCKS_PER_SEC, nblock[w]); @@ -478,7 +478,7 @@ SEXP growVector(SEXP x, R_len_t newlen) // * much shorter and faster SEXP newx; R_len_t i, len = length(x); - if (isNull(x)) error("growVector passed NULL"); + if (isNull(x)) error(_("growVector passed NULL")); PROTECT(newx = allocVector(TYPEOF(x), newlen)); // TO DO: R_realloc(?) here? if (newlen < len) len=newlen; // i.e. shrink switch (TYPEOF(x)) { @@ -547,4 +547,3 @@ SEXP growVector(SEXP x, R_len_t newlen) // > system.time(dt[, list(list(y)), by=x]) // user system elapsed // 30.827 0.239 32.306 - diff --git a/src/fastmean.c b/src/fastmean.c index fedcfe2acd..75c6c033ce 100644 --- a/src/fastmean.c +++ b/src/fastmean.c @@ -36,13 +36,13 @@ SEXP fastmean(SEXP args) if (length(args)>2) { tmp = CADDR(args); if (!isLogical(tmp) || LENGTH(tmp)!=1 || LOGICAL(tmp)[0]==NA_LOGICAL) - error("narm should be TRUE or FALSE"); // # nocov ; [.data.table should construct the .External call correctly + error(_("narm should be TRUE or FALSE")); // # nocov ; [.data.table should construct the .External call correctly narm=LOGICAL(tmp)[0]; } PROTECT(ans = allocNAVector(REALSXP, 1)); copyMostAttrib(x, ans); if (!isInteger(x) && !isReal(x) && !isLogical(x)) { - error("fastmean was passed type %s, not numeric or logical", type2char(TYPEOF(x))); + error(_("fastmean was passed type %s, not numeric or logical"), type2char(TYPEOF(x))); } l = LENGTH(x); if (narm) { @@ -80,7 +80,7 @@ SEXP fastmean(SEXP args) REAL(ans)[0] = (double) s; break; default: - error("Internal error: type '%s' not caught earlier in fastmean", type2char(TYPEOF(x))); // # nocov + error(_("Internal error: type '%s' not caught earlier in fastmean"), type2char(TYPEOF(x))); // # nocov } } else { // narm==FALSE switch(TYPEOF(x)) { @@ -108,7 +108,7 @@ SEXP fastmean(SEXP args) REAL(ans)[0] = (double) s; break; default: - error("Internal error: type '%s' not caught earlier in fastmean", type2char(TYPEOF(x))); // # nocov + error(_("Internal error: type '%s' not caught earlier in fastmean"), type2char(TYPEOF(x))); // # nocov } } UNPROTECT(1); diff --git a/src/fcast.c b/src/fcast.c index 991689ee84..ff8c98fc7b 100644 --- a/src/fcast.c +++ b/src/fcast.c @@ -77,7 +77,7 @@ SEXP fcast(SEXP lhs, SEXP val, SEXP nrowArg, SEXP ncolArg, SEXP idxArg, SEXP fil } } break; - default: error("Unsupported column type in fcast val: '%s'", type2char(TYPEOF(thiscol))); // #nocov + default: error(_("Unsupported column type in fcast val: '%s'"), type2char(TYPEOF(thiscol))); // #nocov } UNPROTECT(nprotect); } @@ -94,7 +94,7 @@ SEXP fcast(SEXP lhs, SEXP val, SEXP nrowArg, SEXP ncolArg, SEXP idxArg, SEXP fil // SEXP zero_init(R_len_t n) { // R_len_t i; // SEXP ans; -// if (n < 0) error("Input argument 'n' to 'zero_init' must be >= 0"); +// if (n < 0) error(_("Input argument 'n' to 'zero_init' must be >= 0")); // ans = PROTECT(allocVector(INTSXP, n)); // for (i=0; i 0"); +// if (!isNewList(s) || isNull(s)) error(_("Argument 's' to 'cross_join' must be a list of length > 0")); // PROTECT(call = lang3(install("do.call"), install("CJ"), s)); // r = eval(call, env); // UNPROTECT(1); @@ -130,7 +130,7 @@ SEXP fcast(SEXP lhs, SEXP val, SEXP nrowArg, SEXP ncolArg, SEXP idxArg, SEXP fil // SEXP diff_int(SEXP x, R_len_t n) { // R_len_t i; // SEXP ans; -// if (TYPEOF(x) != INTSXP) error("Argument 'x' to 'diff_int' must be an integer vector"); +// if (TYPEOF(x) != INTSXP) error(_("Argument 'x' to 'diff_int' must be an integer vector")); // ans = PROTECT(allocVector(INTSXP, length(x))); // for (i=1; i= 1 // for (i=0; i1 ? INT64_MAX : 0; // for scalar 'a' bitwise AND will reset iterator to first element: pa[i & amask] -> pa[0] const int64_t bmask = len2>1 ? INT64_MAX : 0; @@ -48,19 +48,19 @@ SEXP fifelseR(SEXP l, SEXP a, SEXP b, SEXP na) { bool nonna = !isNull(na); if (nonna) { if (xlength(na) != 1) - error("Length of 'na' is %lld but must be 1", xlength(na)); + error(_("Length of 'na' is %lld but must be 1"), xlength(na)); SEXPTYPE tn = TYPEOF(na); if (tn == LGLSXP && LOGICAL(na)[0]==NA_LOGICAL) { nonna = false; } else { if (tn != ta) - error("'yes' is of type %s but 'na' is of type %s. Please make sure that both arguments have the same type.", type2char(ta), type2char(tn)); + error(_("'yes' is of type %s but 'na' is of type %s. Please make sure that both arguments have the same type."), type2char(ta), type2char(tn)); if (!R_compute_identical(PROTECT(getAttrib(a,R_ClassSymbol)), PROTECT(getAttrib(na,R_ClassSymbol)), 0)) - error("'yes' has different class than 'na'. Please make sure that both arguments have the same class."); + error(_("'yes' has different class than 'na'. Please make sure that both arguments have the same class.")); UNPROTECT(2); if (isFactor(a)) { if (!R_compute_identical(PROTECT(getAttrib(a,R_LevelsSymbol)), PROTECT(getAttrib(na,R_LevelsSymbol)), 0)) - error("'yes' and 'na' are both type factor but their levels are different."); + error(_("'yes' and 'na' are both type factor but their levels are different.")); UNPROTECT(2); } } @@ -130,7 +130,7 @@ SEXP fifelseR(SEXP l, SEXP a, SEXP b, SEXP na) { } } break; default: - error("Type %s is not supported.", type2char(ta)); + error(_("Type %s is not supported."), type2char(ta)); } SEXP l_names = PROTECT(getAttrib(l, R_NamesSymbol)); nprotect++; diff --git a/src/fmelt.c b/src/fmelt.c index d4a9112a84..bbd616f81d 100644 --- a/src/fmelt.c +++ b/src/fmelt.c @@ -15,8 +15,8 @@ SEXP seq_int(int n, int start) { // very specific "set_diff" for integers SEXP set_diff(SEXP x, int n) { - if (TYPEOF(x) != INTSXP) error("'x' must be an integer"); - if (n <= 0) error("'n' must be a positive integer"); + if (TYPEOF(x) != INTSXP) error(_("'x' must be an integer")); + if (n <= 0) error(_("'n' must be a positive integer")); SEXP table = PROTECT(seq_int(n, 1)); // TODO: using match to 1:n seems odd here, why use match at all SEXP xmatch = PROTECT(match(x, table, 0)); // Old comment:took a while to realise: matches vec against x - thanks to comment from Matt in assign.c! const int *ixmatch = INTEGER(xmatch); @@ -38,7 +38,7 @@ SEXP which(SEXP x, Rboolean val) { int j=0, n = length(x); SEXP ans; - if (!isLogical(x)) error("Argument to 'which' must be logical"); + if (!isLogical(x)) error(_("Argument to 'which' must be logical")); const int *ix = LOGICAL(x); int *buf = (int *) R_alloc(n, sizeof(int)); for (int i=0; i= 0"); + if (TYPEOF(vec) != STRSXP) error(_("concat: 'vec must be a character vector")); + if (!isInteger(idx) || length(idx) < 0) error(_("concat: 'idx' must be an integer vector of length >= 0")); const int *iidx = INTEGER(idx); for (int i=0; i length(vec)) - error("concat: 'idx' must take values between 0 and length(vec); 0 <= idx <= length(vec)"); + error(_("concat: 'idx' must take values between 0 and length(vec); 0 <= idx <= length(vec)")); } PROTECT(v = allocVector(STRSXP, nidx > 5 ? 5 : nidx)); for (int i=0; i ncol) - error("One or more values in 'id.vars' is invalid."); + error(_("One or more values in 'id.vars' is invalid.")); else if (!LOGICAL(booltmp)[i]) targetcols++; else continue; } @@ -181,7 +181,7 @@ SEXP checkVars(SEXP DT, SEXP id, SEXP measure, Rboolean verbose) { case REALSXP : tmp2 = PROTECT(coerceVector(measure, INTSXP)); protecti++; break; case INTSXP : tmp2 = measure; break; case VECSXP : tmp2 = PROTECT(measurelist(measure, dtnames)); protecti++; break; - default : error("Unknown 'measure.vars' type %s, must be character or integer vector/list", type2char(TYPEOF(measure))); + default : error(_("Unknown 'measure.vars' type %s, must be character or integer vector/list"), type2char(TYPEOF(measure))); } tmp = tmp2; if (isNewList(measure)) { @@ -190,7 +190,7 @@ SEXP checkVars(SEXP DT, SEXP id, SEXP measure, Rboolean verbose) { booltmp = PROTECT(duplicated(tmp, FALSE)); protecti++; for (i=0; i ncol) - error("One or more values in 'measure.vars' is invalid."); + error(_("One or more values in 'measure.vars' is invalid.")); else if (!LOGICAL(booltmp)[i]) targetcols++; else continue; } @@ -216,11 +216,11 @@ SEXP checkVars(SEXP DT, SEXP id, SEXP measure, Rboolean verbose) { case STRSXP : tmp = PROTECT(chmatch(id, dtnames, 0)); protecti++; break; case REALSXP : tmp = PROTECT(coerceVector(id, INTSXP)); protecti++; break; case INTSXP : tmp = id; break; - default : error("Unknown 'id.vars' type %s, must be character or integer vector", type2char(TYPEOF(id))); + default : error(_("Unknown 'id.vars' type %s, must be character or integer vector"), type2char(TYPEOF(id))); } for (i=0; i ncol) - error("One or more values in 'id.vars' is invalid."); + error(_("One or more values in 'id.vars' is invalid.")); } idcols = PROTECT(tmp); protecti++; switch(TYPEOF(measure)) { @@ -228,7 +228,7 @@ SEXP checkVars(SEXP DT, SEXP id, SEXP measure, Rboolean verbose) { case REALSXP : tmp2 = PROTECT(coerceVector(measure, INTSXP)); protecti++; break; case INTSXP : tmp2 = measure; break; case VECSXP : tmp2 = PROTECT(measurelist(measure, dtnames)); protecti++; break; - default : error("Unknown 'measure.vars' type %s, must be character or integer vector", type2char(TYPEOF(measure))); + default : error(_("Unknown 'measure.vars' type %s, must be character or integer vector"), type2char(TYPEOF(measure))); } tmp = tmp2; if (isNewList(measure)) { @@ -236,7 +236,7 @@ SEXP checkVars(SEXP DT, SEXP id, SEXP measure, Rboolean verbose) { } for (i=0; i ncol) - error("One or more values in 'measure.vars' is invalid."); + error(_("One or more values in 'measure.vars' is invalid.")); } if (isNewList(measure)) valuecols = tmp2; else { @@ -273,11 +273,11 @@ static void preprocess(SEXP DT, SEXP id, SEXP measure, SEXP varnames, SEXP valna data->lvalues = length(data->valuecols); data->narm = narm; if (length(valnames) != data->lvalues) { - if (isNewList(measure)) error("When 'measure.vars' is a list, 'value.name' must be a character vector of length =1 or =length(measure.vars)."); - else error("When 'measure.vars' is either not specified or a character/integer vector, 'value.name' must be a character vector of length =1."); + if (isNewList(measure)) error(_("When 'measure.vars' is a list, 'value.name' must be a character vector of length =1 or =length(measure.vars).")); + else error(_("When 'measure.vars' is either not specified or a character/integer vector, 'value.name' must be a character vector of length =1.")); } if (length(varnames) != 1) - error("'variable.name' must be a character/integer vector of length=1."); + error(_("'variable.name' must be a character/integer vector of length=1.")); data->leach = (int *)R_alloc(data->lvalues, sizeof(int)); data->isidentical = (int *)R_alloc(data->lvalues, sizeof(int)); data->isfactor = (int *)R_alloc(data->lvalues, sizeof(int)); @@ -326,10 +326,10 @@ static SEXP combineFactorLevels(SEXP factorLevels, SEXP target, int * factorType int maxlevels=0, nitem=length(factorLevels); for (int i=0; inarm) counter += thislen; UNPROTECT(thisprotecti); // inside inner loop (note that it's double loop) so as to limit use of protection stack @@ -511,7 +511,7 @@ SEXP getvarcols(SEXP DT, SEXP dtnames, Rboolean varfactor, Rboolean verbose, str SEXP ansvars=PROTECT(allocVector(VECSXP, 1)); protecti++; SEXP target; if (data->lvalues==1 && length(VECTOR_ELT(data->valuecols, 0)) != data->lmax) - error("Internal error: fmelt.c:getvarcols %d %d", length(VECTOR_ELT(data->valuecols, 0)), data->lmax); // # nocov + error(_("Internal error: fmelt.c:getvarcols %d %d"), length(VECTOR_ELT(data->valuecols, 0)), data->lmax); // # nocov if (!varfactor) { SET_VECTOR_ELT(ansvars, 0, target=allocVector(STRSXP, data->totlen)); if (data->lvalues == 1) { @@ -659,7 +659,7 @@ SEXP getidcols(SEXP DT, SEXP dtnames, Rboolean verbose, struct processData *data } } break; - default : error("Unknown column type '%s' for column '%s' in 'data'", type2char(TYPEOF(thiscol)), CHAR(STRING_ELT(dtnames, INTEGER(data->idcols)[i]-1))); + default : error(_("Unknown column type '%s' for column '%s' in 'data'"), type2char(TYPEOF(thiscol)), CHAR(STRING_ELT(dtnames, INTEGER(data->idcols)[i]-1))); } } UNPROTECT(1); @@ -670,13 +670,13 @@ SEXP fmelt(SEXP DT, SEXP id, SEXP measure, SEXP varfactor, SEXP valfactor, SEXP SEXP dtnames, ansvals, ansvars, ansids, ansnames, ans; Rboolean narm=FALSE, verbose=FALSE; - if (!isNewList(DT)) error("Input is not of type VECSXP, expected a data.table, data.frame or list"); - if (!isLogical(valfactor)) error("Argument 'value.factor' should be logical TRUE/FALSE"); - if (!isLogical(varfactor)) error("Argument 'variable.factor' should be logical TRUE/FALSE"); - if (!isLogical(narmArg)) error("Argument 'na.rm' should be logical TRUE/FALSE."); - if (!isString(varnames)) error("Argument 'variable.name' must be a character vector"); - if (!isString(valnames)) error("Argument 'value.name' must be a character vector"); - if (!isLogical(verboseArg)) error("Argument 'verbose' should be logical TRUE/FALSE"); + if (!isNewList(DT)) error(_("Input is not of type VECSXP, expected a data.table, data.frame or list")); + if (!isLogical(valfactor)) error(_("Argument 'value.factor' should be logical TRUE/FALSE")); + if (!isLogical(varfactor)) error(_("Argument 'variable.factor' should be logical TRUE/FALSE")); + if (!isLogical(narmArg)) error(_("Argument 'na.rm' should be logical TRUE/FALSE.")); + if (!isString(varnames)) error(_("Argument 'variable.name' must be a character vector")); + if (!isString(valnames)) error(_("Argument 'value.name' must be a character vector")); + if (!isLogical(verboseArg)) error(_("Argument 'verbose' should be logical TRUE/FALSE")); int ncol = LENGTH(DT); if (!ncol) { if (verbose) Rprintf("ncol(data) is 0. Nothing to melt. Returning original data.table."); @@ -684,7 +684,7 @@ SEXP fmelt(SEXP DT, SEXP id, SEXP measure, SEXP varfactor, SEXP valfactor, SEXP } int protecti=0; dtnames = PROTECT(getAttrib(DT, R_NamesSymbol)); protecti++; - if (isNull(dtnames)) error("names(data) is NULL. Please report to data.table-help"); + if (isNull(dtnames)) error(_("names(data) is NULL. Please report to data.table-help")); if (LOGICAL(narmArg)[0] == TRUE) narm = TRUE; if (LOGICAL(verboseArg)[0] == TRUE) verbose = TRUE; struct processData data; diff --git a/src/forder.c b/src/forder.c index 80caa82a76..544ba7768d 100644 --- a/src/forder.c +++ b/src/forder.c @@ -371,8 +371,8 @@ static uint64_t dmask=0; SEXP setNumericRounding(SEXP droundArg) // init.c has initial call with default of 2 { - if (!isInteger(droundArg) || LENGTH(droundArg)!=1) error("Must an integer or numeric vector length 1"); - if (INTEGER(droundArg)[0] < 0 || INTEGER(droundArg)[0] > 2) error("Must be 2, 1 or 0"); + if (!isInteger(droundArg) || LENGTH(droundArg)!=1) error(_("Must an integer or numeric vector length 1")); + if (INTEGER(droundArg)[0] < 0 || INTEGER(droundArg)[0] > 2) error(_("Must be 2, 1 or 0")); dround = INTEGER(droundArg)[0]; dmask = dround ? 1 << (8*dround-1) : 0; return R_NilValue; @@ -428,11 +428,11 @@ SEXP forder(SEXP DT, SEXP by, SEXP retGrpArg, SEXP sortGroupsArg, SEXP ascArg, S if (!isNewList(DT)) { if (!isVectorAtomic(DT)) - error("Internal error: input is not either a list of columns, or an atomic vector."); // # nocov; caught by colnamesInt at R level, test 1962.0472 + error(_("Internal error: input is not either a list of columns, or an atomic vector.")); // # nocov; caught by colnamesInt at R level, test 1962.0472 if (!isNull(by)) - error("Internal error: input is an atomic vector (not a list of columns) but by= is not NULL"); // # nocov; caught at R level, test 1962.043 + error(_("Internal error: input is an atomic vector (not a list of columns) but by= is not NULL")); // # nocov; caught at R level, test 1962.043 if (!isInteger(ascArg) || LENGTH(ascArg)!=1) - error("Input is an atomic vector (not a list of columns) but order= is not a length 1 integer"); + error(_("Input is an atomic vector (not a list of columns) but order= is not a length 1 integer")); if (verbose) Rprintf("forder.c received a vector type '%s' length %d\n", type2char(TYPEOF(DT)), length(DT)); SEXP tt = PROTECT(allocVector(VECSXP, 1)); n_protect++; @@ -445,31 +445,31 @@ SEXP forder(SEXP DT, SEXP by, SEXP retGrpArg, SEXP sortGroupsArg, SEXP ascArg, S Rprintf("forder.c received %d rows and %d columns\n", length(VECTOR_ELT(DT,0)), length(DT)); } if (!length(DT)) - error("Internal error: DT is an empty list() of 0 columns"); // # nocov should have been caught be colnamesInt, test 2099.1 + error(_("Internal error: DT is an empty list() of 0 columns")); // # nocov should have been caught be colnamesInt, test 2099.1 if (!isInteger(by) || !LENGTH(by)) - error("Internal error: DT has %d columns but 'by' is either not integer or is length 0", length(DT)); // # nocov colnamesInt catches, 2099.2 + error(_("Internal error: DT has %d columns but 'by' is either not integer or is length 0"), length(DT)); // # nocov colnamesInt catches, 2099.2 if (!isInteger(ascArg) || LENGTH(ascArg)!=LENGTH(by)) - error("Either order= is not integer or its length (%d) is different to by='s length (%d)", LENGTH(ascArg), LENGTH(by)); + error(_("Either order= is not integer or its length (%d) is different to by='s length (%d)"), LENGTH(ascArg), LENGTH(by)); nrow = length(VECTOR_ELT(DT,0)); int n_cplx = 0; for (int i=0; i length(DT)) - error("internal error: 'by' value %d out of range [1,%d]", by_i, length(DT)); // # nocov # R forderv already catch that using C colnamesInt + error(_("internal error: 'by' value %d out of range [1,%d]"), by_i, length(DT)); // # nocov # R forderv already catch that using C colnamesInt if ( nrow != length(VECTOR_ELT(DT, by_i-1)) ) - error("Column %d is length %d which differs from length of column 1 (%d)\n", INTEGER(by)[i], length(VECTOR_ELT(DT, INTEGER(by)[i]-1)), nrow); + error(_("Column %d is length %d which differs from length of column 1 (%d)\n"), INTEGER(by)[i], length(VECTOR_ELT(DT, INTEGER(by)[i]-1)), nrow); if (TYPEOF(VECTOR_ELT(DT, by_i-1)) == CPLXSXP) n_cplx++; } if (!isLogical(retGrpArg) || LENGTH(retGrpArg)!=1 || INTEGER(retGrpArg)[0]==NA_LOGICAL) - error("retGrp= must be TRUE or FALSE"); + error(_("retGrp= must be TRUE or FALSE")); retgrp = LOGICAL(retGrpArg)[0]==TRUE; if (!isLogical(sortGroupsArg) || LENGTH(sortGroupsArg)!=1 || INTEGER(sortGroupsArg)[0]==NA_LOGICAL ) - error("sort= must be TRUE or FALSE"); + error(_("sort= must be TRUE or FALSE")); sortType = LOGICAL(sortGroupsArg)[0]==TRUE; // if sortType is 1, it is later flipped between +1/-1 according to ascArg. Otherwise ascArg is ignored when sortType==0 if (!retgrp && !sortType) - error("At least one of retGrp= or sort= must be TRUE"); + error(_("At least one of retGrp= or sort= must be TRUE")); if (!isLogical(naArg) || LENGTH(naArg) != 1) - error("na.last must be logical TRUE, FALSE or NA of length 1"); + error(_("na.last must be logical TRUE, FALSE or NA of length 1")); nalast = (LOGICAL(naArg)[0] == NA_LOGICAL) ? -1 : LOGICAL(naArg)[0]; // 1=na last, 0=na first (default), -1=remove na if (nrow==0) { @@ -1298,11 +1298,11 @@ SEXP isOrderedSubset(SEXP x, SEXP nrowArg) // specialized for use in [.data.table only // Ignores 0s but heeds NAs and any out-of-range (which result in NA) { - if (!isNull(x) && !isInteger(x)) error("x must be either NULL or an integer vector"); + if (!isNull(x) && !isInteger(x)) error(_("x must be either NULL or an integer vector")); if (length(x)<=1) return(ScalarLogical(TRUE)); // a single NA when length(x)==1 is ordered (e.g. tests 128 & 130) otherwise anyNA => FALSE - if (!isInteger(nrowArg) || LENGTH(nrowArg)!=1) error("nrow must be integer vector length 1"); + if (!isInteger(nrowArg) || LENGTH(nrowArg)!=1) error(_("nrow must be integer vector length 1")); const int nrow = INTEGER(nrowArg)[0]; - if (nrow<0) error("nrow==%d but must be >=0", nrow); + if (nrow<0) error(_("nrow==%d but must be >=0"), nrow); const int *xd = INTEGER(x), xlen=LENGTH(x); for (int i=0, last=INT_MIN; iLENGTH(x)) - error("Item %d of 'cols' is %d which is outside 1-based range [1,ncol(x)=%d]", i+1, elem, LENGTH(x)); + error(_("Item %d of 'cols' is %d which is outside 1-based range [1,ncol(x)=%d]"), i+1, elem, LENGTH(x)); if (!n) n = length(VECTOR_ELT(x, elem-1)); } SEXP ans = PROTECT(allocVector(LGLSXP, n)); @@ -23,7 +23,7 @@ SEXP dt_na(SEXP x, SEXP cols) { SEXP v = VECTOR_ELT(x, INTEGER(cols)[i]-1); if (!length(v) || isNewList(v) || isList(v)) continue; // like stats:::na.omit.data.frame, skip list/pairlist columns if (n != length(v)) - error("Column %d of input list x is length %d, inconsistent with first column of that item which is length %d.", i+1,length(v),n); + error(_("Column %d of input list x is length %d, inconsistent with first column of that item which is length %d."), i+1,length(v),n); switch (TYPEOF(v)) { case LGLSXP: { const int *iv = LOGICAL(v); @@ -62,7 +62,7 @@ SEXP dt_na(SEXP x, SEXP cols) { } break; default: - error("Unsupported column type '%s'", type2char(TYPEOF(v))); + error(_("Unsupported column type '%s'"), type2char(TYPEOF(v))); } } UNPROTECT(1); @@ -80,7 +80,7 @@ SEXP frank(SEXP xorderArg, SEXP xstartArg, SEXP xlenArg, SEXP ties_method) { else if (!strcmp(CHAR(STRING_ELT(ties_method, 0)), "dense")) ties = DENSE; else if (!strcmp(CHAR(STRING_ELT(ties_method, 0)), "sequence")) ties = SEQUENCE; // else if (!strcmp(CHAR(STRING_ELT(ties_method, 0)), "runlength")) ties = RUNLENGTH; - else error("Internal error: invalid ties.method for frankv(), should have been caught before. please report to data.table issue tracker"); // # nocov + else error(_("Internal error: invalid ties.method for frankv(), should have been caught before. please report to data.table issue tracker")); // # nocov n = length(xorderArg); SEXP ans = (ties == MEAN) ? PROTECT(allocVector(REALSXP, n)) : PROTECT(allocVector(INTSXP, n)); int *ians = INTEGER(ans); @@ -127,7 +127,7 @@ SEXP frank(SEXP xorderArg, SEXP xstartArg, SEXP xlenArg, SEXP ties_method) { // INTEGER(ans)[xorder[j]-1] = k++; // } // break; - default: error("Internal error: unknown ties value in frank: %d", ties); // #nocov + default: error(_("Internal error: unknown ties value in frank: %d"), ties); // #nocov } } UNPROTECT(1); @@ -138,12 +138,12 @@ SEXP frank(SEXP xorderArg, SEXP xstartArg, SEXP xlenArg, SEXP ties_method) { SEXP anyNA(SEXP x, SEXP cols) { int i, j, n=0, elem; - if (!isNewList(x)) error("Internal error. Argument 'x' to CanyNA is type '%s' not 'list'", type2char(TYPEOF(x))); // #nocov - if (!isInteger(cols)) error("Internal error. Argument 'cols' to CanyNA is type '%s' not 'integer'", type2char(TYPEOF(cols))); // # nocov + if (!isNewList(x)) error(_("Internal error. Argument 'x' to CanyNA is type '%s' not 'list'"), type2char(TYPEOF(x))); // #nocov + if (!isInteger(cols)) error(_("Internal error. Argument 'cols' to CanyNA is type '%s' not 'integer'"), type2char(TYPEOF(cols))); // # nocov for (i=0; iLENGTH(x)) - error("Item %d of 'cols' is %d which is outside 1-based range [1,ncol(x)=%d]", i+1, elem, LENGTH(x)); + error(_("Item %d of 'cols' is %d which is outside 1-based range [1,ncol(x)=%d]"), i+1, elem, LENGTH(x)); if (!n) n = length(VECTOR_ELT(x, elem-1)); } SEXP ans = PROTECT(allocVector(LGLSXP, 1)); @@ -152,7 +152,7 @@ SEXP anyNA(SEXP x, SEXP cols) { SEXP v = VECTOR_ELT(x, INTEGER(cols)[i]-1); if (!length(v) || isNewList(v) || isList(v)) continue; // like stats:::na.omit.data.frame, skip list/pairlist columns if (n != length(v)) - error("Column %d of input list x is length %d, inconsistent with first column of that item which is length %d.", i+1,length(v),n); + error(_("Column %d of input list x is length %d, inconsistent with first column of that item which is length %d."), i+1,length(v),n); j=0; switch (TYPEOF(v)) { case LGLSXP: { @@ -199,7 +199,7 @@ SEXP anyNA(SEXP x, SEXP cols) { } break; default: - error("Unsupported column type '%s'", type2char(TYPEOF(v))); + error(_("Unsupported column type '%s'"), type2char(TYPEOF(v))); } if (LOGICAL(ans)[0]) break; } diff --git a/src/freadR.c b/src/freadR.c index 817805cfac..6b832fc710 100644 --- a/src/freadR.c +++ b/src/freadR.c @@ -81,7 +81,7 @@ SEXP freadR( dtnrows = 0; const char *ch, *ch2; if (!isString(inputArg) || LENGTH(inputArg)!=1) - error("Internal error: freadR input not a single character string: a filename or the data itself. Should have been caught at R level."); // # nocov + error(_("Internal error: freadR input not a single character string: a filename or the data itself. Should have been caught at R level.")); // # nocov ch = ch2 = (const char *)CHAR(STRING_ELT(inputArg,0)); while (*ch2!='\n' && *ch2!='\r' && *ch2!='\0') ch2++; args.input = (*ch2=='\0') ? R_ExpandFileName(ch) : ch; // for convenience so user doesn't have to call path.expand() @@ -98,18 +98,18 @@ SEXP freadR( } if (!isString(sepArg) || LENGTH(sepArg)!=1 || strlen(CHAR(STRING_ELT(sepArg,0)))>1) - error("Internal error: freadR sep not a single character. R level catches this."); // # nocov + error(_("Internal error: freadR sep not a single character. R level catches this.")); // # nocov args.sep = CHAR(STRING_ELT(sepArg,0))[0]; // '\0' when default "auto" was replaced by "" at R level if (!(isString(decArg) && LENGTH(decArg)==1 && strlen(CHAR(STRING_ELT(decArg,0)))==1)) - error("Internal error: freadR dec not a single character. R level catches this."); // # nocov + error(_("Internal error: freadR dec not a single character. R level catches this.")); // # nocov args.dec = CHAR(STRING_ELT(decArg,0))[0]; if (IS_FALSE(quoteArg)) { args.quote = '\0'; } else { if (!isString(quoteArg) || LENGTH(quoteArg)!=1 || strlen(CHAR(STRING_ELT(quoteArg,0))) > 1) - error("quote= must be a single character, blank \"\", or FALSE"); + error(_("quote= must be a single character, blank \")\", or FALSE"); args.quote = CHAR(STRING_ELT(quoteArg,0))[0]; } @@ -134,10 +134,10 @@ SEXP freadR( args.skipString = CHAR(STRING_ELT(skipArg,0)); // LENGTH==1 was checked at R level } else if (isInteger(skipArg)) { args.skipNrow = (int64_t)INTEGER(skipArg)[0]; - } else error("Internal error: skip not integer or string in freadR.c"); // # nocov + } else error(_("Internal error: skip not integer or string in freadR.c")); // # nocov if (!isNull(NAstringsArg) && !isString(NAstringsArg)) - error("Internal error: NAstringsArg is type '%s'. R level catches this", type2char(TYPEOF(NAstringsArg))); // # nocov + error(_("Internal error: NAstringsArg is type '%s'. R level catches this"), type2char(TYPEOF(NAstringsArg))); // # nocov int nnas = length(NAstringsArg); const char **NAstrings = (const char **)R_alloc((nnas + 1), sizeof(char*)); // +1 for the final NULL to save a separate nna variable for (int i=0; idbl_v[k-1] = REAL(eval0)[0]; @@ -435,7 +435,7 @@ void frollapply(double *x, int64_t nx, double *w, int k, ans_t *ans, int align, Rprintf("%s: results from provided FUN are not of type double, coercion from integer or logical will be applied on each iteration\n", __func__); ans->dbl_v[k-1] = REAL(coerceVector(eval0, REALSXP))[0]; } else { - error("%s: results from provided FUN are not of type double", __func__); + error(_("%s: results from provided FUN are not of type double"), __func__); } } UNPROTECT(1); // eval0 diff --git a/src/frollR.c b/src/frollR.c index 66ac763c73..5985f4a46f 100644 --- a/src/frollR.c +++ b/src/frollR.c @@ -12,7 +12,7 @@ SEXP coerceToRealListR(SEXP obj) { } else if (isInteger(obj) || isLogical(obj)) { SET_VECTOR_ELT(x, 0, coerceVector(obj, REALSXP)); } else { - error("x must be of type numeric or logical"); + error(_("x must be of type numeric or logical")); } } else { R_len_t nobj = length(obj); @@ -23,7 +23,7 @@ SEXP coerceToRealListR(SEXP obj) { } else if (isInteger(VECTOR_ELT(obj, i)) || isLogical(VECTOR_ELT(obj, i))) { SET_VECTOR_ELT(x, i, coerceVector(VECTOR_ELT(obj, i), REALSXP)); } else { - error("x must be list, data.frame or data.table of numeric or logical types"); + error(_("x must be list, data.frame or data.table of numeric or logical types")); } } } @@ -44,10 +44,10 @@ SEXP frollfunR(SEXP fun, SEXP obj, SEXP k, SEXP fill, SEXP algo, SEXP align, SEX R_len_t nx=length(x); // number of columns to roll on if (xlength(k) == 0) // check that window is non zero length - error("n must be non 0 length"); + error(_("n must be non 0 length")); if (!isLogical(adaptive) || length(adaptive) != 1 || LOGICAL(adaptive)[0] == NA_LOGICAL) - error("adaptive must be TRUE or FALSE"); + error(_("adaptive must be TRUE or FALSE")); bool badaptive = LOGICAL(adaptive)[0]; R_len_t nk = 0; // number of rolling windows, for adaptive might be atomic to be wrapped into list, 0 for clang -Wall @@ -55,21 +55,21 @@ SEXP frollfunR(SEXP fun, SEXP obj, SEXP k, SEXP fill, SEXP algo, SEXP align, SEX SEXP kl = R_NilValue; // holds adaptive window width, if doing adaptive roll fun if (!badaptive) { // validating n input for adaptive=FALSE if (isNewList(k)) - error("n must be integer, list is accepted for adaptive TRUE"); + error(_("n must be integer, list is accepted for adaptive TRUE")); if (isInteger(k)) { // check that k is integer vector ik = k; } else if (isReal(k)) { // if n is double then convert to integer ik = PROTECT(coerceVector(k, INTSXP)); protecti++; } else { - error("n must be integer"); + error(_("n must be integer")); } nk = length(k); R_len_t i=0; // check that all window values positive while (i < nk && INTEGER(ik)[i] > 0) i++; if (i != nk) - error("n must be positive integer values (> 0)"); + error(_("n must be positive integer values (> 0)")); } else { // validating n input for adaptive=TRUE if (isVectorAtomic(k)) { // if not-list then wrap into list kl = PROTECT(allocVector(VECSXP, 1)); protecti++; @@ -78,7 +78,7 @@ SEXP frollfunR(SEXP fun, SEXP obj, SEXP k, SEXP fill, SEXP algo, SEXP align, SEX } else if (isReal(k)) { // if n is double then convert to integer SET_VECTOR_ELT(kl, 0, coerceVector(k, INTSXP)); } else { - error("n must be integer vector or list of integer vectors"); + error(_("n must be integer vector or list of integer vectors")); } nk = 1; } else { @@ -90,7 +90,7 @@ SEXP frollfunR(SEXP fun, SEXP obj, SEXP k, SEXP fill, SEXP algo, SEXP align, SEX } else if (isReal(VECTOR_ELT(k, i))) { // coerce double types to integer SET_VECTOR_ELT(kl, i, coerceVector(VECTOR_ELT(k, i), INTSXP)); } else { - error("n must be integer vector or list of integer vectors"); + error(_("n must be integer vector or list of integer vectors")); } } } @@ -101,12 +101,12 @@ SEXP frollfunR(SEXP fun, SEXP obj, SEXP k, SEXP fill, SEXP algo, SEXP align, SEX } if (!IS_TRUE_OR_FALSE(narm)) - error("na.rm must be TRUE or FALSE"); + error(_("na.rm must be TRUE or FALSE")); if (!isLogical(hasna) || length(hasna)!=1) - error("hasNA must be TRUE, FALSE or NA"); + error(_("hasNA must be TRUE, FALSE or NA")); if (LOGICAL(hasna)[0]==FALSE && LOGICAL(narm)[0]) - error("using hasNA FALSE and na.rm TRUE does not make sense, if you know there are NA values use hasNA TRUE, otherwise leave it as default NA"); + error(_("using hasNA FALSE and na.rm TRUE does not make sense, if you know there are NA values use hasNA TRUE, otherwise leave it as default NA")); int ialign; // decode align to integer if (!strcmp(CHAR(STRING_ELT(align, 0)), "right")) @@ -116,10 +116,10 @@ SEXP frollfunR(SEXP fun, SEXP obj, SEXP k, SEXP fill, SEXP algo, SEXP align, SEX else if (!strcmp(CHAR(STRING_ELT(align, 0)), "left")) ialign = -1; else - error("Internal error: invalid align argument in rolling function, should have been caught before. please report to data.table issue tracker."); // # nocov + error(_("Internal error: invalid align argument in rolling function, should have been caught before. please report to data.table issue tracker.")); // # nocov if (badaptive && ialign!=1) - error("using adaptive TRUE and align argument different than 'right' is not implemented"); + error(_("using adaptive TRUE and align argument different than 'right' is not implemented")); SEXP ans = PROTECT(allocVector(VECSXP, nk * nx)); protecti++; // allocate list to keep results if (verbose) @@ -132,9 +132,9 @@ SEXP frollfunR(SEXP fun, SEXP obj, SEXP k, SEXP fill, SEXP algo, SEXP align, SEX for (R_len_t j=0; j 0 && (inx[i]!=inx[i-1])) // variable length list input not allowed for adaptive roll - error("adaptive rolling function can only process 'x' having equal length of elements, like data.table or data.frame; If you want to call rolling function on list having variable length of elements call it for each field separately"); + error(_("adaptive rolling function can only process 'x' having equal length of elements, like data.table or data.frame; If you want to call rolling function on list having variable length of elements call it for each field separately")); if (xlength(VECTOR_ELT(kl, j))!=inx[0]) // check that length of integer vectors in n list match to xrows[0] ([0] and not [i] because there is above check for equal xrows) - error("length of integer vector(s) provided as list to 'n' argument must be equal to number of observations provided in 'x'"); + error(_("length of integer vector(s) provided as list to 'n' argument must be equal to number of observations provided in 'x'")); } SET_VECTOR_ELT(ans, i*nk+j, allocVector(REALSXP, inx[i]));// allocate answer vector for this column-window dans[i*nk+j] = ((ans_t) { .dbl_v=REAL(VECTOR_ELT(ans, i*nk+j)), .status=0, .message={"\0","\0","\0","\0"} }); @@ -148,11 +148,11 @@ SEXP frollfunR(SEXP fun, SEXP obj, SEXP k, SEXP fill, SEXP algo, SEXP align, SEX } else if (!strcmp(CHAR(STRING_ELT(fun, 0)), "sum")) { sfun = SUM; } else { - error("Internal error: invalid fun argument in rolling function, should have been caught before. please report to data.table issue tracker."); // # nocov + error(_("Internal error: invalid fun argument in rolling function, should have been caught before. please report to data.table issue tracker.")); // # nocov } if (length(fill) != 1) - error("fill must be a vector of length 1"); + error(_("fill must be a vector of length 1")); double dfill; if (isInteger(fill)) { @@ -166,7 +166,7 @@ SEXP frollfunR(SEXP fun, SEXP obj, SEXP k, SEXP fill, SEXP algo, SEXP align, SEX } else if (isLogical(fill) && LOGICAL(fill)[0]==NA_LOGICAL){ dfill = NA_REAL; } else { - error("fill must be numeric"); + error(_("fill must be numeric")); } bool bnarm = LOGICAL(narm)[0]; @@ -182,12 +182,12 @@ SEXP frollfunR(SEXP fun, SEXP obj, SEXP k, SEXP fill, SEXP algo, SEXP align, SEX else if (!strcmp(CHAR(STRING_ELT(algo, 0)), "exact")) ialgo = 1; // exact = 1 else - error("Internal error: invalid algo argument in rolling function, should have been caught before. please report to data.table issue tracker."); // # nocov + error(_("Internal error: invalid algo argument in rolling function, should have been caught before. please report to data.table issue tracker.")); // # nocov int* iik = NULL; if (!badaptive) { if (!isInteger(ik)) - error("Internal error: badaptive=%d but ik is not integer", badaptive); // # nocov + error(_("Internal error: badaptive=%d but ik is not integer"), badaptive); // # nocov iik = INTEGER(ik); // pointer to non-adaptive window width, still can be vector when doing multiple windows } else { // ik is still R_NilValue from initialization. But that's ok as it's only needed below when !badaptive. @@ -216,7 +216,7 @@ SEXP frollfunR(SEXP fun, SEXP obj, SEXP k, SEXP fill, SEXP algo, SEXP align, SEX fadaptiverollsum(ialgo, dx[i], inx[i], &dans[i*nk+j], ikl[j], dfill, bnarm, ihasna, verbose); break; default: - error("Internal error: Unknown sfun value in froll: %d", sfun); // #nocov + error(_("Internal error: Unknown sfun value in froll: %d"), sfun); // #nocov } } } @@ -235,9 +235,9 @@ SEXP frollapplyR(SEXP fun, SEXP obj, SEXP k, SEXP fill, SEXP align, SEXP rho) { const bool verbose = GetVerbose(); if (!isFunction(fun)) - error("internal error: 'fun' must be a function"); // # nocov + error(_("internal error: 'fun' must be a function")); // # nocov if (!isEnvironment(rho)) - error("internal error: 'rho' should be an environment"); // # nocov + error(_("internal error: 'rho' should be an environment")); // # nocov if (!xlength(obj)) return(obj); @@ -253,15 +253,15 @@ SEXP frollapplyR(SEXP fun, SEXP obj, SEXP k, SEXP fill, SEXP align, SEXP rho) { SEXP ik = PROTECT(coerceVector(k, INTSXP)); protecti++; k = ik; } else { - error("n must be integer"); + error(_("n must be integer")); } } else { - error("n must be integer"); + error(_("n must be integer")); } } R_len_t nk = length(k); if (nk == 0) - error("n must be non 0 length"); + error(_("n must be non 0 length")); int *ik = INTEGER(k); int ialign; @@ -272,11 +272,11 @@ SEXP frollapplyR(SEXP fun, SEXP obj, SEXP k, SEXP fill, SEXP align, SEXP rho) { } else if (!strcmp(CHAR(STRING_ELT(align, 0)), "left")) { ialign = -1; } else { - error("Internal error: invalid align argument in rolling function, should have been caught before. please report to data.table issue tracker."); // # nocov + error(_("Internal error: invalid align argument in rolling function, should have been caught before. please report to data.table issue tracker.")); // # nocov } if (length(fill) != 1) - error("fill must be a vector of length 1"); + error(_("fill must be a vector of length 1")); double dfill; if (isInteger(fill)) { if (INTEGER(fill)[0]==NA_LOGICAL) { @@ -289,7 +289,7 @@ SEXP frollapplyR(SEXP fun, SEXP obj, SEXP k, SEXP fill, SEXP align, SEXP rho) { } else if (isLogical(fill) && LOGICAL(fill)[0]==NA_LOGICAL){ dfill = NA_REAL; } else { - error("fill must be numeric"); + error(_("fill must be numeric")); } SEXP ans = PROTECT(allocVector(VECSXP, nk * nx)); protecti++; diff --git a/src/fsort.c b/src/fsort.c index 2de548f9bd..f4760ec4a0 100644 --- a/src/fsort.c +++ b/src/fsort.c @@ -106,9 +106,9 @@ SEXP fsort(SEXP x, SEXP verboseArg) { double t[10]; t[0] = wallclock(); if (!isLogical(verboseArg) || LENGTH(verboseArg)!=1 || LOGICAL(verboseArg)[0]==NA_LOGICAL) - error("verbose must be TRUE or FALSE"); + error(_("verbose must be TRUE or FALSE")); Rboolean verbose = LOGICAL(verboseArg)[0]; - if (!isNumeric(x)) error("x must be a vector of type 'double' currently"); + if (!isNumeric(x)) error(_("x must be a vector of type 'double' currently")); // TODO: not only detect if already sorted, but if it is, just return x to save the duplicate SEXP ansVec = PROTECT(allocVector(REALSXP, xlength(x))); @@ -154,7 +154,7 @@ SEXP fsort(SEXP x, SEXP verboseArg) { if (maxs[i]>max) max=maxs[i]; } if (verbose) Rprintf("Range = [%g,%g]\n", min, max); - if (min < 0.0) error("Cannot yet handle negatives."); + if (min < 0.0) error(_("Cannot yet handle negatives.")); // TODO: -0ULL should allow negatives // avoid twiddle function call as expensive in recent tests (0.34 vs 2.7) // possibly twiddle once to *ans, then untwiddle at the end in a fast parallel sweep @@ -170,7 +170,7 @@ SEXP fsort(SEXP x, SEXP verboseArg) { if (verbose) Rprintf("maxBit=%d; MSBNbits=%d; shift=%d; MSBsize=%d\n", maxBit, MSBNbits, shift, MSBsize); R_xlen_t *counts = calloc(nBatch*MSBsize, sizeof(R_xlen_t)); - if (counts==NULL) error("Unable to allocate working memory"); + if (counts==NULL) error(_("Unable to allocate working memory")); // provided MSBsize>=9, each batch is a multiple of at least one 4k page, so no page overlap // TODO: change all calloc, malloc and free to Calloc and Free to be robust to error() and catch ooms. @@ -227,7 +227,7 @@ SEXP fsort(SEXP x, SEXP verboseArg) { // sort bins by size, largest first to minimise last-man-home R_xlen_t *msbCounts = counts + (nBatch-1)*MSBsize; // msbCounts currently contains the ending position of each MSB (the starting location of the next) even across empty - if (msbCounts[MSBsize-1] != xlength(x)) error("Internal error: counts[nBatch-1][MSBsize-1] != length(x)"); // # nocov + if (msbCounts[MSBsize-1] != xlength(x)) error(_("Internal error: counts[nBatch-1][MSBsize-1] != length(x)")); // # nocov R_xlen_t *msbFrom = malloc(MSBsize*sizeof(R_xlen_t)); int *order = malloc(MSBsize*sizeof(int)); R_xlen_t cumSum = 0; diff --git a/src/fwriteR.c b/src/fwriteR.c index 8040631db6..75b4510709 100644 --- a/src/fwriteR.c +++ b/src/fwriteR.c @@ -38,7 +38,7 @@ const int getMaxStringLen(const SEXP *col, const int64_t n) { const int getMaxCategLen(SEXP col) { col = getAttrib(col, R_LevelsSymbol); - if (!isString(col)) error("Internal error: col passed to getMaxCategLen is missing levels"); + if (!isString(col)) error(_("Internal error: col passed to getMaxCategLen is missing levels")); return getMaxStringLen( STRING_PTR(col), LENGTH(col) ); } @@ -72,7 +72,7 @@ void writeList(SEXP *col, int64_t row, char **pch) { SEXP v = col[row]; int32_t wf = whichWriter(v); if (TYPEOF(v)==VECSXP || wf==INT32_MIN || isFactor(v)) { - error("Internal error: getMaxListItemLen should have caught this up front."); // # nocov + error(_("Internal error: getMaxListItemLen should have caught this up front.")); // # nocov } char *ch = *pch; write_chars(sep2start, &ch); @@ -95,7 +95,7 @@ const int getMaxListItemLen(const SEXP *col, const int64_t n) { if (this==last) continue; // no point calling LENGTH() again on the same string; LENGTH is unlikely as fast as single pointer compare int32_t wf = whichWriter(this); if (TYPEOF(this)==VECSXP || wf==INT32_MIN || isFactor(this)) { - error("Row %d of list column is type '%s' - not yet implemented. fwrite() can write list columns containing items which are atomic vectors of" \ + error(_("Row %d of list column is type '%s' - not yet implemented. fwrite() can write list columns containing items which are atomic vectors of") \ " type logical, integer, integer64, double, complex and character.", i+1, isFactor(this) ? "factor" : type2char(TYPEOF(this))); } int width = writerMaxLen[wf]; @@ -167,7 +167,7 @@ SEXP fwriteR( SEXP verbose_Arg ) { - if (!isNewList(DF)) error("fwrite must be passed an object of type list; e.g. data.frame, data.table"); + if (!isNewList(DF)) error(_("fwrite must be passed an object of type list; e.g. data.frame, data.table")); fwriteMainArgs args; args.is_gzip = LOGICAL(is_gzip_Arg)[0]; args.bom = LOGICAL(bom_Arg)[0]; @@ -231,10 +231,10 @@ SEXP fwriteR( for (int j=0; jmaxgrpn) maxgrpn = grpsize[i]; // old comment to be checked: 'needed for #2046 and #2111 when maxgrpn attribute is not attached to empty o' } - if (LENGTH(o) && LENGTH(o)!=nrow) error("o has length %d but sum(l)=%d", LENGTH(o), nrow); + if (LENGTH(o) && LENGTH(o)!=nrow) error(_("o has length %d but sum(l)=%d"), LENGTH(o), nrow); { SEXP tt = getAttrib(o, install("maxgrpn")); - if (length(tt)==1 && INTEGER(tt)[0]!=maxgrpn) error("Internal error: o's maxgrpn attribute mismatches recalculated maxgrpn"); // # nocov + if (length(tt)==1 && INTEGER(tt)[0]!=maxgrpn) error(_("Internal error: o's maxgrpn attribute mismatches recalculated maxgrpn")); // # nocov } int nb = nbit(ngrp-1); @@ -86,7 +86,7 @@ SEXP gforce(SEXP env, SEXP jsub, SEXP o, SEXP f, SEXP l, SEXP irowsArg) { // TODO: enable stress-test mode in tests only (#3205) which can be turned off by default in release to decrease overhead on small data // if that is established to be biting (it may be fine). if (nBatch<1 || batchSize<1 || lastBatchSize<1) { - error("Internal error: nrow=%d ngrp=%d nbit=%d shift=%d highSize=%d nBatch=%d batchSize=%d lastBatchSize=%d\n", // # nocov + error(_("Internal error: nrow=%d ngrp=%d nbit=%d shift=%d highSize=%d nBatch=%d batchSize=%d lastBatchSize=%d\n"), // # nocov nrow, ngrp, nb, shift, highSize, nBatch, batchSize, lastBatchSize); // # nocov } // initial population of g: @@ -113,7 +113,7 @@ SEXP gforce(SEXP env, SEXP jsub, SEXP o, SEXP f, SEXP l, SEXP irowsArg) { //Rprintf("When assigning grp[o] = g, highSize=%d nb=%d shift=%d nBatch=%d\n", highSize, nb, shift, nBatch); int *counts = calloc(nBatch*highSize, sizeof(int)); // TODO: cache-line align and make highSize a multiple of 64 int *TMP = malloc(nrow*2*sizeof(int)); - if (!counts || !TMP ) error("Internal error: Failed to allocate counts or TMP when assigning g in gforce"); + if (!counts || !TMP ) error(_("Internal error: Failed to allocate counts or TMP when assigning g in gforce")); #pragma omp parallel for num_threads(getDTthreads()) // schedule(dynamic,1) for (int b=0; b8) error("Pointers are %d bytes, greater than 8. We have not tested on any architecture greater than 64bit yet.", sizeof(char *)); + if (sizeof(char *)>8) error(_("Pointers are %d bytes, greater than 8. We have not tested on any architecture greater than 64bit yet."), sizeof(char *)); // One place we need the largest sizeof is the working memory malloc in reorder.c } @@ -206,59 +206,59 @@ void attribute_visible R_init_datatable(DllInfo *info) R_useDynamicSymbols(info, FALSE); setSizes(); const char *msg = "... failed. Please forward this message to maintainer('data.table')."; - if ((int)NA_INTEGER != (int)INT_MIN) error("Checking NA_INTEGER [%d] == INT_MIN [%d] %s", NA_INTEGER, INT_MIN, msg); - if ((int)NA_INTEGER != (int)NA_LOGICAL) error("Checking NA_INTEGER [%d] == NA_LOGICAL [%d] %s", NA_INTEGER, NA_LOGICAL, msg); - if (sizeof(int) != 4) error("Checking sizeof(int) [%d] is 4 %s", sizeof(int), msg); - if (sizeof(double) != 8) error("Checking sizeof(double) [%d] is 8 %s", sizeof(double), msg); // 8 on both 32bit and 64bit - // alignof not available in C99: if (alignof(double) != 8) error("Checking alignof(double) [%d] is 8 %s", alignof(double), msg); // 8 on both 32bit and 64bit - if (sizeof(long long) != 8) error("Checking sizeof(long long) [%d] is 8 %s", sizeof(long long), msg); - if (sizeof(char *) != 4 && sizeof(char *) != 8) error("Checking sizeof(pointer) [%d] is 4 or 8 %s", sizeof(char *), msg); - if (sizeof(SEXP) != sizeof(char *)) error("Checking sizeof(SEXP) [%d] == sizeof(pointer) [%d] %s", sizeof(SEXP), sizeof(char *), msg); - if (sizeof(uint64_t) != 8) error("Checking sizeof(uint64_t) [%d] is 8 %s", sizeof(uint64_t), msg); - if (sizeof(int64_t) != 8) error("Checking sizeof(int64_t) [%d] is 8 %s", sizeof(int64_t), msg); - if (sizeof(signed char) != 1) error("Checking sizeof(signed char) [%d] is 1 %s", sizeof(signed char), msg); - if (sizeof(int8_t) != 1) error("Checking sizeof(int8_t) [%d] is 1 %s", sizeof(int8_t), msg); - if (sizeof(uint8_t) != 1) error("Checking sizeof(uint8_t) [%d] is 1 %s", sizeof(uint8_t), msg); - if (sizeof(int16_t) != 2) error("Checking sizeof(int16_t) [%d] is 2 %s", sizeof(int16_t), msg); - if (sizeof(uint16_t) != 2) error("Checking sizeof(uint16_t) [%d] is 2 %s", sizeof(uint16_t), msg); + if ((int)NA_INTEGER != (int)INT_MIN) error(_("Checking NA_INTEGER [%d] == INT_MIN [%d] %s"), NA_INTEGER, INT_MIN, msg); + if ((int)NA_INTEGER != (int)NA_LOGICAL) error(_("Checking NA_INTEGER [%d] == NA_LOGICAL [%d] %s"), NA_INTEGER, NA_LOGICAL, msg); + if (sizeof(int) != 4) error(_("Checking sizeof(int) [%d] is 4 %s"), sizeof(int), msg); + if (sizeof(double) != 8) error(_("Checking sizeof(double) [%d] is 8 %s"), sizeof(double), msg); // 8 on both 32bit and 64bit + // alignof not available in C99: if (alignof(double) != 8) error(_("Checking alignof(double) [%d] is 8 %s"), alignof(double), msg); // 8 on both 32bit and 64bit + if (sizeof(long long) != 8) error(_("Checking sizeof(long long) [%d] is 8 %s"), sizeof(long long), msg); + if (sizeof(char *) != 4 && sizeof(char *) != 8) error(_("Checking sizeof(pointer) [%d] is 4 or 8 %s"), sizeof(char *), msg); + if (sizeof(SEXP) != sizeof(char *)) error(_("Checking sizeof(SEXP) [%d] == sizeof(pointer) [%d] %s"), sizeof(SEXP), sizeof(char *), msg); + if (sizeof(uint64_t) != 8) error(_("Checking sizeof(uint64_t) [%d] is 8 %s"), sizeof(uint64_t), msg); + if (sizeof(int64_t) != 8) error(_("Checking sizeof(int64_t) [%d] is 8 %s"), sizeof(int64_t), msg); + if (sizeof(signed char) != 1) error(_("Checking sizeof(signed char) [%d] is 1 %s"), sizeof(signed char), msg); + if (sizeof(int8_t) != 1) error(_("Checking sizeof(int8_t) [%d] is 1 %s"), sizeof(int8_t), msg); + if (sizeof(uint8_t) != 1) error(_("Checking sizeof(uint8_t) [%d] is 1 %s"), sizeof(uint8_t), msg); + if (sizeof(int16_t) != 2) error(_("Checking sizeof(int16_t) [%d] is 2 %s"), sizeof(int16_t), msg); + if (sizeof(uint16_t) != 2) error(_("Checking sizeof(uint16_t) [%d] is 2 %s"), sizeof(uint16_t), msg); SEXP tmp = PROTECT(allocVector(INTSXP,2)); - if (LENGTH(tmp)!=2) error("Checking LENGTH(allocVector(INTSXP,2)) [%d] is 2 %s", LENGTH(tmp), msg); - if (TRUELENGTH(tmp)!=0) error("Checking TRUELENGTH(allocVector(INTSXP,2)) [%d] is 0 %s", TRUELENGTH(tmp), msg); + if (LENGTH(tmp)!=2) error(_("Checking LENGTH(allocVector(INTSXP,2)) [%d] is 2 %s"), LENGTH(tmp), msg); + if (TRUELENGTH(tmp)!=0) error(_("Checking TRUELENGTH(allocVector(INTSXP,2)) [%d] is 0 %s"), TRUELENGTH(tmp), msg); UNPROTECT(1); // According to IEEE (http://en.wikipedia.org/wiki/IEEE_754-1985#Zero) we can rely on 0.0 being all 0 bits. // But check here anyway just to be sure, just in case this answer is right (http://stackoverflow.com/a/2952680/403310). int i = 314; memset(&i, 0, sizeof(int)); - if (i != 0) error("Checking memset(&i,0,sizeof(int)); i == (int)0 %s", msg); + if (i != 0) error(_("Checking memset(&i,0,sizeof(int)); i == (int)0 %s"), msg); unsigned int ui = 314; memset(&ui, 0, sizeof(unsigned int)); - if (ui != 0) error("Checking memset(&ui, 0, sizeof(unsigned int)); ui == (unsigned int)0 %s", msg); + if (ui != 0) error(_("Checking memset(&ui, 0, sizeof(unsigned int)); ui == (unsigned int)0 %s"), msg); double d = 3.14; memset(&d, 0, sizeof(double)); - if (d != 0.0) error("Checking memset(&d, 0, sizeof(double)); d == (double)0.0 %s", msg); + if (d != 0.0) error(_("Checking memset(&d, 0, sizeof(double)); d == (double)0.0 %s"), msg); long double ld = 3.14; memset(&ld, 0, sizeof(long double)); - if (ld != 0.0) error("Checking memset(&ld, 0, sizeof(long double)); ld == (long double)0.0 %s", msg); + if (ld != 0.0) error(_("Checking memset(&ld, 0, sizeof(long double)); ld == (long double)0.0 %s"), msg); // Check unsigned cast used in fread.c. This isn't overflow/underflow, just cast. - if ((uint_fast8_t)('0'-'/') != 1) error("The ascii character '/' is not just before '0'"); - if ((uint_fast8_t)('/'-'0') < 10) error("The C expression (uint_fast8_t)('/'-'0')<10 is true. Should be false."); - if ((uint_fast8_t)(':'-'9') != 1) error("The ascii character ':' is not just after '9'"); - if ((uint_fast8_t)('9'-':') < 10) error("The C expression (uint_fast8_t)('9'-':')<10 is true. Should be false."); + if ((uint_fast8_t)('0'-'/') != 1) error(_("The ascii character '/' is not just before '0'")); + if ((uint_fast8_t)('/'-'0') < 10) error(_("The C expression (uint_fast8_t)('/'-'0')<10 is true. Should be false.")); + if ((uint_fast8_t)(':'-'9') != 1) error(_("The ascii character ':' is not just after '9'")); + if ((uint_fast8_t)('9'-':') < 10) error(_("The C expression (uint_fast8_t)('9'-':')<10 is true. Should be false.")); // Variables rather than #define for NA_INT64 to ensure correct usage; i.e. not casted NA_INT64_LL = LLONG_MIN; NA_INT64_D = LLtoD(NA_INT64_LL); - if (NA_INT64_LL != DtoLL(NA_INT64_D)) error("Conversion of NA_INT64 via double failed %lld!=%lld", NA_INT64_LL, DtoLL(NA_INT64_D)); + if (NA_INT64_LL != DtoLL(NA_INT64_D)) error(_("Conversion of NA_INT64 via double failed %lld!=%lld"), NA_INT64_LL, DtoLL(NA_INT64_D)); // LLONG_MIN when punned to double is the sign bit set and then all zeros in exponent and significand i.e. -0.0 // That's why we must never test for NA_INT64_D using == in double type. Must always DtoLL and compare long long types. // Assigning NA_INT64_D to a REAL is ok however. - if (NA_INT64_D != 0.0) error("NA_INT64_D (negative -0.0) is not == 0.0."); - if (NA_INT64_D != -0.0) error("NA_INT64_D (negative -0.0) is not ==-0.0."); - if (ISNAN(NA_INT64_D)) error("ISNAN(NA_INT64_D) is TRUE but should not be"); - if (isnan(NA_INT64_D)) error("isnan(NA_INT64_D) is TRUE but should not be"); + if (NA_INT64_D != 0.0) error(_("NA_INT64_D (negative -0.0) is not == 0.0.")); + if (NA_INT64_D != -0.0) error(_("NA_INT64_D (negative -0.0) is not ==-0.0.")); + if (ISNAN(NA_INT64_D)) error(_("ISNAN(NA_INT64_D) is TRUE but should not be")); + if (isnan(NA_INT64_D)) error(_("isnan(NA_INT64_D) is TRUE but should not be")); NA_CPLX.r = NA_REAL; // NA_REAL is defined as R_NaReal which is not a strict constant and thus initializer {NA_REAL, NA_REAL} can't be used in .h NA_CPLX.i = NA_REAL; // https://github.com/Rdatatable/data.table/pull/3689/files#r304117234 @@ -287,7 +287,7 @@ void attribute_visible R_init_datatable(DllInfo *info) if (TYPEOF(char_integer64) != CHARSXP) { // checking one is enough in case of any R-devel changes - error("PRINTNAME(install(\"integer64\")) has returned %s not %s", type2char(TYPEOF(char_integer64)), type2char(CHARSXP)); // # nocov + error(_("PRINTNAME(install(\")integer64\")) has returned %s not %s", type2char(TYPEOF(char_integer64)), type2char(CHARSXP)); // # nocov } // create commonly used symbols, same as R_*Symbol but internal to DT @@ -356,7 +356,7 @@ SEXP hasOpenMP() { extern int *_Last_updated; // assign.c SEXP initLastUpdated(SEXP var) { - if (!isInteger(var) || LENGTH(var)!=1) error(".Last.value in namespace is not a length 1 integer"); + if (!isInteger(var) || LENGTH(var)!=1) error(_(".Last.value in namespace is not a length 1 integer")); _Last_updated = INTEGER(var); return R_NilValue; } diff --git a/src/nafill.c b/src/nafill.c index 841d9f6fb1..6236504425 100644 --- a/src/nafill.c +++ b/src/nafill.c @@ -70,7 +70,7 @@ void nafillInteger64(int64_t *x, uint_fast64_t nx, unsigned int type, int64_t fi SEXP nafillR(SEXP obj, SEXP type, SEXP fill, SEXP inplace, SEXP cols, SEXP verbose) { int protecti=0; if (!IS_TRUE_OR_FALSE(verbose)) - error("verbose must be TRUE or FALSE"); + error(_("verbose must be TRUE or FALSE")); bool bverbose = LOGICAL(verbose)[0]; if (!xlength(obj)) @@ -80,9 +80,9 @@ SEXP nafillR(SEXP obj, SEXP type, SEXP fill, SEXP inplace, SEXP cols, SEXP verbo SEXP x = R_NilValue; if (isVectorAtomic(obj)) { if (binplace) - error("'x' argument is atomic vector, in-place update is supported only for list/data.table"); + error(_("'x' argument is atomic vector, in-place update is supported only for list/data.table")); else if (!isReal(obj) && !isInteger(obj)) - error("'x' argument must be numeric type, or list/data.table of numeric types"); + error(_("'x' argument must be numeric type, or list/data.table of numeric types")); x = PROTECT(allocVector(VECSXP, 1)); protecti++; // wrap into list SET_VECTOR_ELT(x, 0, obj); } else { @@ -92,7 +92,7 @@ SEXP nafillR(SEXP obj, SEXP type, SEXP fill, SEXP inplace, SEXP cols, SEXP verbo for (int i=0; i= 0. See ?setDTthreads."); + error(_("threads= must be either NULL or a single integer >= 0. See ?setDTthreads.")); } UNPROTECT(protecti); int num_procs = imax(omp_get_num_procs(), 1); // max just in case omp_get_num_procs() returns <= 0 (perhaps error, or unsupported) if (!isLogical(percent) || length(percent)!=1 || LOGICAL(percent)[0]==NA_LOGICAL) { - error("Internal error: percent= must be TRUE or FALSE at C level"); // # nocov + error(_("Internal error: percent= must be TRUE or FALSE at C level")); // # nocov } if (LOGICAL(percent)[0]) { - if (n<2 || n>100) error("Internal error: threads==%d should be between 2 and 100 (percent=TRUE at C level).", n); // # nocov + if (n<2 || n>100) error(_("Internal error: threads==%d should be between 2 and 100 (percent=TRUE at C level)."), n); // # nocov n = num_procs*n/100; // if 0 it will be reset to 1 in the imax() below } else { if (n==0 || n>num_procs) n = num_procs; // setDTthreads(0) == setDTthread(percent=100); i.e. use all logical CPUs (the default in 1.12.0 and before, from 1.12.2 it's 50%) diff --git a/src/rbindlist.c b/src/rbindlist.c index f9bba8bb78..e12d1df8e5 100644 --- a/src/rbindlist.c +++ b/src/rbindlist.c @@ -5,11 +5,11 @@ SEXP rbindlist(SEXP l, SEXP usenamesArg, SEXP fillArg, SEXP idcolArg) { if (!isLogical(fillArg) || LENGTH(fillArg) != 1 || LOGICAL(fillArg)[0] == NA_LOGICAL) - error("fill= should be TRUE or FALSE"); + error(_("fill= should be TRUE or FALSE")); if (!isLogical(usenamesArg) || LENGTH(usenamesArg)!=1) - error("use.names= should be TRUE, FALSE, or not used (\"check\" by default)"); // R levels converts "check" to NA + error(_("use.names= should be TRUE, FALSE, or not used (\")check\" by default)"); // R levels converts "check" to NA if (!length(l)) return(l); - if (TYPEOF(l) != VECSXP) error("Input to rbindlist must be a list. This list can contain data.tables, data.frames or plain lists."); + if (TYPEOF(l) != VECSXP) error(_("Input to rbindlist must be a list. This list can contain data.tables, data.frames or plain lists.")); Rboolean usenames = LOGICAL(usenamesArg)[0]; const bool fill = LOGICAL(fillArg)[0]; if (fill && usenames!=TRUE) { @@ -17,7 +17,7 @@ SEXP rbindlist(SEXP l, SEXP usenamesArg, SEXP fillArg, SEXP idcolArg) usenames=TRUE; } const bool idcol = !isNull(idcolArg); - if (idcol && (!isString(idcolArg) || LENGTH(idcolArg)!=1)) error("Internal error: rbindlist.c idcol is not a single string"); // # nocov + if (idcol && (!isString(idcolArg) || LENGTH(idcolArg)!=1)) error(_("Internal error: rbindlist.c idcol is not a single string")); // # nocov int ncol=0, first=0; int64_t nrow=0, upperBoundUniqueNames=1; bool anyNames=false; @@ -28,25 +28,25 @@ SEXP rbindlist(SEXP l, SEXP usenamesArg, SEXP fillArg, SEXP idcolArg) eachMax[i] = 0; SEXP li = VECTOR_ELT(l, i); if (isNull(li)) continue; - if (TYPEOF(li) != VECSXP) error("Item %d of input is not a data.frame, data.table or list", i+1); + if (TYPEOF(li) != VECSXP) error(_("Item %d of input is not a data.frame, data.table or list"), i+1); const int thisncol = length(li); if (!thisncol) continue; - // delete as now more flexible ... if (fill && isNull(getAttrib(li, R_NamesSymbol))) error("When fill=TRUE every item of the input must have column names. Item %d does not.", i+1); + // delete as now more flexible ... if (fill && isNull(getAttrib(li, R_NamesSymbol))) error(_("When fill=TRUE every item of the input must have column names. Item %d does not."), i+1); if (fill) { if (thisncol>ncol) ncol=thisncol; // this section initializes ncol with max ncol. ncol may be increased when usenames is accounted for further down } else { if (ncol==0) { ncol=thisncol; first=i; } - else if (thisncol!=ncol) error("Item %d has %d columns, inconsistent with item %d which has %d columns. To fill missing columns use fill=TRUE.", i+1, thisncol, first+1, ncol); + else if (thisncol!=ncol) error(_("Item %d has %d columns, inconsistent with item %d which has %d columns. To fill missing columns use fill=TRUE."), i+1, thisncol, first+1, ncol); } int nNames = length(getAttrib(li, R_NamesSymbol)); - if (nNames>0 && nNames!=thisncol) error("Item %d has %d columns but %d column names. Invalid object.", i+1, thisncol, nNames); + if (nNames>0 && nNames!=thisncol) error(_("Item %d has %d columns but %d column names. Invalid object."), i+1, thisncol, nNames); if (nNames>0) anyNames=true; upperBoundUniqueNames += nNames; int maxLen=0, whichMax=0; for (int j=0; jmaxLen) { maxLen=tt; whichMax=j; } } for (int j=0; j1 && tt!=maxLen) error("Column %d of item %d is length %d inconsistent with column %d which is length %d. Only length-1 columns are recycled.", j+1, i+1, tt, whichMax+1, maxLen); + if (tt>1 && tt!=maxLen) error(_("Column %d of item %d is length %d inconsistent with column %d which is length %d. Only length-1 columns are recycled."), j+1, i+1, tt, whichMax+1, maxLen); if (tt==0 && maxLen>0 && numZero++==0) { firstZeroCol = j; firstZeroItem=i; } } eachMax[i] = maxLen; @@ -59,8 +59,8 @@ SEXP rbindlist(SEXP l, SEXP usenamesArg, SEXP fillArg, SEXP idcolArg) firstZeroCol+1, ch, firstZeroItem+1, numZero-1, numZero==2?"":"s"); } if (nrow==0 && ncol==0) return(R_NilValue); - if (nrow>INT32_MAX) error("Total rows in the list is %lld which is larger than the maximum number of rows, currently %d", nrow, INT32_MAX); - if (usenames==TRUE && !anyNames) error("use.names=TRUE but no item of input list has any names"); + if (nrow>INT32_MAX) error(_("Total rows in the list is %lld which is larger than the maximum number of rows, currently %d"), nrow, INT32_MAX); + if (usenames==TRUE && !anyNames) error(_("use.names=TRUE but no item of input list has any names")); int *colMap=NULL; // maps each column in final result to the column of each list item if (usenames==TRUE || usenames==NA_LOGICAL) { @@ -68,7 +68,7 @@ SEXP rbindlist(SEXP l, SEXP usenamesArg, SEXP fillArg, SEXP idcolArg) // when use.names==NA we also proceed here as if use.names was TRUE to save new code and then check afterwards the map is 1:ncol for every item // first find number of unique column names present; i.e. length(unique(unlist(lapply(l,names)))) SEXP *uniq = (SEXP *)malloc(upperBoundUniqueNames * sizeof(SEXP)); // upperBoundUniqueNames was initialized with 1 to ensure this is defined (otherwise 0 when no item has names) - if (!uniq) error("Failed to allocate upper bound of %lld unique column names [sum(lapply(l,ncol))]", upperBoundUniqueNames); + if (!uniq) error(_("Failed to allocate upper bound of %lld unique column names [sum(lapply(l,ncol))]"), upperBoundUniqueNames); savetl_init(); int nuniq=0; for (int i=0; iTYPEORDER(maxType)) maxType=thisType; if (isFactor(thisCol)) { - if (isNull(getAttrib(thisCol,R_LevelsSymbol))) error("Column %d of item %d has type 'factor' but has no levels; i.e. malformed.", w+1, i+1); + if (isNull(getAttrib(thisCol,R_LevelsSymbol))) error(_("Column %d of item %d has type 'factor' but has no levels; i.e. malformed."), w+1, i+1); factor = true; if (isOrdered(thisCol)) { orderedFactor = true; @@ -312,7 +312,7 @@ SEXP rbindlist(SEXP l, SEXP usenamesArg, SEXP fillArg, SEXP idcolArg) if (!R_compute_identical(PROTECT(getAttrib(thisCol, R_ClassSymbol)), PROTECT(getAttrib(firstCol, R_ClassSymbol)), 0)) { - error("Class attribute on column %d of item %d does not match with column %d of item %d.", w+1, i+1, firstw+1, firsti+1); + error(_("Class attribute on column %d of item %d does not match with column %d of item %d."), w+1, i+1, firstw+1, firsti+1); } UNPROTECT(2); } @@ -322,7 +322,7 @@ SEXP rbindlist(SEXP l, SEXP usenamesArg, SEXP fillArg, SEXP idcolArg) if (!foundName) { static char buff[12]; sprintf(buff,"V%d",j+1), SET_STRING_ELT(ansNames, idcol+j, mkChar(buff)); foundName=buff; } if (factor) maxType=INTSXP; // if any items are factors then a factor is created (could be an option) if (int64 && maxType!=REALSXP) - error("Internal error: column %d of result is determined to be integer64 but maxType=='%s' != REALSXP", j+1, type2char(maxType)); // # nocov + error(_("Internal error: column %d of result is determined to be integer64 but maxType=='%s' != REALSXP"), j+1, type2char(maxType)); // # nocov SEXP target; SET_VECTOR_ELT(ans, idcol+j, target=allocVector(maxType, nrow)); // does not initialize logical & numerics, but does initialize character and list if (!factor) copyMostAttrib(firstCol, target); // all but names,dim and dimnames; mainly for class. And if so, we want a copy here, not keepattr's SET_ATTRIB. @@ -358,7 +358,7 @@ SEXP rbindlist(SEXP l, SEXP usenamesArg, SEXP fillArg, SEXP idcolArg) const SEXP *sd = STRING_PTR(longestLevels); nLevel = allocLevel = longestLen; levelsRaw = (SEXP *)malloc(nLevel * sizeof(SEXP)); - if (!levelsRaw) { savetl_end(); error("Failed to allocate working memory for %d ordered factor levels of result column %d", nLevel, idcol+j+1); } + if (!levelsRaw) { savetl_end(); error(_("Failed to allocate working memory for %d ordered factor levels of result column %d"), nLevel, idcol+j+1); } for (int k=0; k0) savetl(s); @@ -429,7 +429,7 @@ SEXP rbindlist(SEXP l, SEXP usenamesArg, SEXP fillArg, SEXP idcolArg) for (int k=0; k maxSize) maxSize=SIZEOF(v); if (ALTREP(v)) SET_VECTOR_ELT(x, i, copyAsPlain(v)); @@ -24,14 +24,14 @@ SEXP reorder(SEXP x, SEXP order) copySharedColumns(x); // otherwise two columns which point to the same vector would be reordered and then re-reordered, issues linked in PR#3768 } else { if (SIZEOF(x)!=4 && SIZEOF(x)!=8 && SIZEOF(x)!=16) - error("reorder accepts vectors but this non-VECSXP is type '%s' which isn't yet supported (SIZEOF=%d)", type2char(TYPEOF(x)), SIZEOF(x)); - if (ALTREP(x)) error("Internal error in reorder.c: cannot reorder an ALTREP vector. Please see NEWS item 2 in v1.11.4 and report this as a bug."); // # nocov + error(_("reorder accepts vectors but this non-VECSXP is type '%s' which isn't yet supported (SIZEOF=%d)"), type2char(TYPEOF(x)), SIZEOF(x)); + if (ALTREP(x)) error(_("Internal error in reorder.c: cannot reorder an ALTREP vector. Please see NEWS item 2 in v1.11.4 and report this as a bug.")); // # nocov maxSize = SIZEOF(x); nrow = length(x); ncol = 1; } - if (!isInteger(order)) error("order must be an integer vector"); - if (length(order) != nrow) error("nrow(x)[%d]!=length(order)[%d]",nrow,length(order)); + if (!isInteger(order)) error(_("order must be an integer vector")); + if (length(order) != nrow) error(_("nrow(x)[%d]!=length(order)[%d]"),nrow,length(order)); int nprotect = 0; if (ALTREP(order)) { order=PROTECT(copyAsPlain(order)); nprotect++; } // TODO: if it's an ALTREP sequence some optimizations are possible rather than expand @@ -45,7 +45,7 @@ SEXP reorder(SEXP x, SEXP order) const int end = i; for (int i=start; i<=end; i++) { int itmp = idx[i]-1; - if (itmpend) error("order is not a permutation of 1:nrow[%d]", nrow); + if (itmpend) error(_("order is not a permutation of 1:nrow[%d]"), nrow); } // Creorder is for internal use (so we should get the input right!), but the check above seems sensible. The for loop above should run // in neglible time (sequential with prefetch). It will catch NAs anywhere but won't catch duplicates. But doing so would be going too @@ -54,7 +54,7 @@ SEXP reorder(SEXP x, SEXP order) char *TMP = malloc(nrow * maxSize); // enough RAM for a copy of one column (of largest type). Writes into the [start,end] subset. Outside [start,end] is wasted in that rarer case // to save a "-start" in the deep loop below in all cases. - if (!TMP) error("Unable to allocate %d * %d bytes of working memory for reordering data.table", end-start+1, maxSize); + if (!TMP) error(_("Unable to allocate %d * %d bytes of working memory for reordering data.table"), end-start+1, maxSize); for (int i=0; imax since they should have been dealt with by convertNegAndZeroIdx() called ealier at R level. // single cache efficient sweep with prefetch, so very low priority to go parallel { - if (!isInteger(idx)) error("Internal error. 'idx' is type '%s' not 'integer'", type2char(TYPEOF(idx))); // # nocov + if (!isInteger(idx)) error(_("Internal error. 'idx' is type '%s' not 'integer'"), type2char(TYPEOF(idx))); // # nocov bool anyLess=false, anyNA=false; int last = INT32_MIN; int *idxp = INTEGER(idx), n=LENGTH(idx); @@ -118,11 +118,11 @@ SEXP convertNegAndZeroIdx(SEXP idx, SEXP maxArg, SEXP allowOverMax) // + a little more efficient than negativeSubscript in src/main/subscript.c (it's private to R so we can't call it anyway) // allowOverMaxArg is false when := (test 1024), otherwise true for selecting - if (!isInteger(idx)) error("Internal error. 'idx' is type '%s' not 'integer'", type2char(TYPEOF(idx))); // # nocov - if (!isInteger(maxArg) || length(maxArg)!=1) error("Internal error. 'maxArg' is type '%s' and length %d, should be an integer singleton", type2char(TYPEOF(maxArg)), length(maxArg)); // # nocov - if (!isLogical(allowOverMax) || LENGTH(allowOverMax)!=1 || LOGICAL(allowOverMax)[0]==NA_LOGICAL) error("Internal error: allowOverMax must be TRUE/FALSE"); // # nocov + if (!isInteger(idx)) error(_("Internal error. 'idx' is type '%s' not 'integer'"), type2char(TYPEOF(idx))); // # nocov + if (!isInteger(maxArg) || length(maxArg)!=1) error(_("Internal error. 'maxArg' is type '%s' and length %d, should be an integer singleton"), type2char(TYPEOF(maxArg)), length(maxArg)); // # nocov + if (!isLogical(allowOverMax) || LENGTH(allowOverMax)!=1 || LOGICAL(allowOverMax)[0]==NA_LOGICAL) error(_("Internal error: allowOverMax must be TRUE/FALSE")); // # nocov int max = INTEGER(maxArg)[0], n=LENGTH(idx); - if (max<0) error("Internal error. max is %d, must be >= 0.", max); // # nocov includes NA which will print as INT_MIN + if (max<0) error(_("Internal error. max is %d, must be >= 0."), max); // # nocov includes NA which will print as INT_MIN int *idxp = INTEGER(idx); bool stop = false; @@ -146,7 +146,7 @@ SEXP convertNegAndZeroIdx(SEXP idx, SEXP maxArg, SEXP allowOverMax) else if (elem>max && firstOverMax==0) firstOverMax=i+1; } if (firstOverMax && LOGICAL(allowOverMax)[0]==FALSE) { - error("i[%d] is %d which is out of range [1,nrow=%d]", firstOverMax, idxp[firstOverMax-1], max); + error(_("i[%d] is %d which is out of range [1,nrow=%d]"), firstOverMax, idxp[firstOverMax-1], max); } int countPos = n-countNeg-countZero-countNA; @@ -158,7 +158,7 @@ SEXP convertNegAndZeroIdx(SEXP idx, SEXP maxArg, SEXP allowOverMax) if (firstNeg==0 && elem<0 && elem!=NA_INTEGER) firstNeg=i+1; i++; } - error("Item %d of i is %d and item %d is %d. Cannot mix positives and negatives.", firstNeg, idxp[firstNeg-1], firstPos, idxp[firstPos-1]); + error(_("Item %d of i is %d and item %d is %d. Cannot mix positives and negatives."), firstNeg, idxp[firstNeg-1], firstPos, idxp[firstPos-1]); } if (countNeg && countNA) { int i=0, firstNeg=0, firstNA=0; @@ -168,7 +168,7 @@ SEXP convertNegAndZeroIdx(SEXP idx, SEXP maxArg, SEXP allowOverMax) if (firstNA==0 && elem==NA_INTEGER) firstNA=i+1; i++; } - error("Item %d of i is %d and item %d is NA. Cannot mix negatives and NA.", firstNeg, idxp[firstNeg-1], firstNA); + error(_("Item %d of i is %d and item %d is NA. Cannot mix negatives and NA."), firstNeg, idxp[firstNeg-1], firstNA); } SEXP ans; @@ -220,15 +220,15 @@ SEXP convertNegAndZeroIdx(SEXP idx, SEXP maxArg, SEXP allowOverMax) static void checkCol(SEXP col, int colNum, int nrow, SEXP x) { - if (isNull(col)) error("Column %d is NULL; malformed data.table.", colNum); + if (isNull(col)) error(_("Column %d is NULL; malformed data.table."), colNum); if (isNewList(col) && INHERITS(col, char_dataframe)) { SEXP names = getAttrib(x, R_NamesSymbol); - error("Column %d ['%s'] is a data.frame or data.table; malformed data.table.", + error(_("Column %d ['%s'] is a data.frame or data.table; malformed data.table."), colNum, isNull(names)?"":CHAR(STRING_ELT(names,colNum-1))); } if (length(col)!=nrow) { SEXP names = getAttrib(x, R_NamesSymbol); - error("Column %d ['%s'] is length %d but column 1 is length %d; malformed data.table.", + error(_("Column %d ['%s'] is length %d but column 1 is length %d; malformed data.table."), colNum, isNull(names)?"":CHAR(STRING_ELT(names,colNum-1)), length(col), nrow); } } @@ -244,7 +244,7 @@ static void checkCol(SEXP col, int colNum, int nrow, SEXP x) SEXP subsetDT(SEXP x, SEXP rows, SEXP cols) { int nprotect=0; - if (!isNewList(x)) error("Internal error. Argument 'x' to CsubsetDT is type '%s' not 'list'", type2char(TYPEOF(rows))); // # nocov + if (!isNewList(x)) error(_("Internal error. Argument 'x' to CsubsetDT is type '%s' not 'list'"), type2char(TYPEOF(rows))); // # nocov if (!length(x)) return(x); // return empty list const int nrow = length(VECTOR_ELT(x,0)); @@ -257,10 +257,10 @@ SEXP subsetDT(SEXP x, SEXP rows, SEXP cols) { if (err!=NULL) error(err); } - if (!isInteger(cols)) error("Internal error. Argument 'cols' to Csubset is type '%s' not 'integer'", type2char(TYPEOF(cols))); // # nocov + if (!isInteger(cols)) error(_("Internal error. Argument 'cols' to Csubset is type '%s' not 'integer'"), type2char(TYPEOF(cols))); // # nocov for (int i=0; iLENGTH(x)) error("Item %d of 'cols' is %d which is outside 1-based range [1,ncol(x)=%d]", i+1, this, LENGTH(x)); + if (this<1 || this>LENGTH(x)) error(_("Item %d of 'cols' is %d which is outside 1-based range [1,ncol(x)=%d]"), i+1, this, LENGTH(x)); } int overAlloc = checkOverAlloc(GetOption(install("datatable.alloccol"), R_NilValue)); @@ -334,9 +334,9 @@ SEXP subsetVector(SEXP x, SEXP idx) { // idx is 1-based passed from R level bool anyNA=false, orderedSubset=false; int nprotect=0; if (isNull(x)) - error("Internal error: NULL can not be subset. It is invalid for a data.table to contain a NULL column."); // # nocov + error(_("Internal error: NULL can not be subset. It is invalid for a data.table to contain a NULL column.")); // # nocov if (check_idx(idx, length(x), &anyNA, &orderedSubset) != NULL) - error("Internal error: CsubsetVector is internal-use-only but has received negatives, zeros or out-of-range"); // # nocov + error(_("Internal error: CsubsetVector is internal-use-only but has received negatives, zeros or out-of-range")); // # nocov SEXP ans = PROTECT(allocVector(TYPEOF(x), length(idx))); nprotect++; copyMostAttrib(x, ans); subsetVectorRaw(ans, x, idx, anyNA); diff --git a/src/transpose.c b/src/transpose.c index 6f6acc1a38..aa52303ac6 100644 --- a/src/transpose.c +++ b/src/transpose.c @@ -6,17 +6,17 @@ SEXP transpose(SEXP l, SEXP fill, SEXP ignoreArg, SEXP keepNamesArg) { int nprotect=0; if (!isNewList(l)) - error("l must be a list."); + error(_("l must be a list.")); if (!length(l)) return(copyAsPlain(l)); if (!isLogical(ignoreArg) || LOGICAL(ignoreArg)[0]==NA_LOGICAL) - error("ignore.empty should be logical TRUE/FALSE."); + error(_("ignore.empty should be logical TRUE/FALSE.")); bool ignore = LOGICAL(ignoreArg)[0]; if (!(isNull(keepNamesArg) || (isString(keepNamesArg) && LENGTH(keepNamesArg)==1))) - error("keep.names should be either NULL, or the name of the first column of the result in which to place the names of the input"); + error(_("keep.names should be either NULL, or the name of the first column of the result in which to place the names of the input")); bool rn = !isNull(keepNamesArg); if (length(fill) != 1) - error("fill must be a length 1 vector, such as the default NA"); + error(_("fill must be a length 1 vector, such as the default NA")); R_len_t ln = LENGTH(l); // preprocessing @@ -25,7 +25,7 @@ SEXP transpose(SEXP l, SEXP fill, SEXP ignoreArg, SEXP keepNamesArg) { for (int i=0; imaxlen) maxlen=len; zerolen += (len==0); @@ -85,7 +85,7 @@ SEXP transpose(SEXP l, SEXP fill, SEXP ignoreArg, SEXP keepNamesArg) { } } break; default : - error("Unsupported column type '%s'", type2char(maxtype)); + error(_("Unsupported column type '%s'"), type2char(maxtype)); } UNPROTECT(1); // inside the loop to save the protection stack k++; diff --git a/src/types.c b/src/types.c index cbcf55c306..93742a7a0e 100644 --- a/src/types.c +++ b/src/types.c @@ -20,7 +20,7 @@ void ansMsg(ans_t *ans, int n, bool verbose, const char *func) { if (ans[i].message[2][0] != '\0') warning("%s: %d:\n%s", func, i+1, ans[i].message[2]); if (ans[i].status == 3) - error("%s: %d:\n%s:", func, i+1, ans[i].message[3]); + error(_("%s: %d:\n%s:"), func, i+1, ans[i].message[3]); } } @@ -52,7 +52,7 @@ void testRaiseMsg(ans_t *ans, int istatus, bool verbose) { } SEXP testMsgR(SEXP status, SEXP x, SEXP k) { if (!isInteger(status) || !isInteger(x) || !isInteger(k)) - error("internal error: status, nx, nk must be integer"); // # nocov + error(_("internal error: status, nx, nk must be integer")); // # nocov int protecti = 0; const bool verbose = GetVerbose(); int istatus = INTEGER(status)[0], nx = INTEGER(x)[0], nk = INTEGER(k)[0]; diff --git a/src/uniqlist.c b/src/uniqlist.c index e2fe01d8bb..dd1484cdf7 100644 --- a/src/uniqlist.c +++ b/src/uniqlist.c @@ -11,12 +11,12 @@ SEXP uniqlist(SEXP l, SEXP order) // (maximum length the number of rows) and the length returned in anslen. // No NA in order which is guaranteed since internal-only. Used at R level internally (Cuniqlist) but is not and should not be exported. // DONE: ans is now grown - if (!isNewList(l)) error("Internal error: uniqlist has not been passed a list of columns"); // # nocov + if (!isNewList(l)) error(_("Internal error: uniqlist has not been passed a list of columns")); // # nocov R_len_t ncol = length(l); R_len_t nrow = length(VECTOR_ELT(l,0)); - if (!isInteger(order)) error("Internal error: uniqlist has been passed a non-integer order"); // # nocov - if (LENGTH(order)<1) error("Internal error: uniqlist has been passed a length-0 order"); // # nocov - if (LENGTH(order)>1 && LENGTH(order)!=nrow) error("Internal error: uniqlist has been passed length(order)==%d but nrow==%d", LENGTH(order), nrow); // # nocov + if (!isInteger(order)) error(_("Internal error: uniqlist has been passed a non-integer order")); // # nocov + if (LENGTH(order)<1) error(_("Internal error: uniqlist has been passed a length-0 order")); // # nocov + if (LENGTH(order)>1 && LENGTH(order)!=nrow) error(_("Internal error: uniqlist has been passed length(order)==%d but nrow==%d"), LENGTH(order), nrow); // # nocov bool via_order = INTEGER(order)[0] != -1; // has an ordering vector been passed in that we have to hop via? Don't use MISSING() here as it appears unstable on Windows unsigned long long *ulv; // for numeric check speed-up @@ -93,7 +93,7 @@ SEXP uniqlist(SEXP l, SEXP order) } } break; default : - error("Type '%s' not supported", type2char(TYPEOF(v))); // # nocov + error(_("Type '%s' not supported"), type2char(TYPEOF(v))); // # nocov } } else { // ncol>1 @@ -124,7 +124,7 @@ SEXP uniqlist(SEXP l, SEXP order) } break; default : - error("Type '%s' not supported", type2char(TYPEOF(v))); // # nocov + error(_("Type '%s' not supported"), type2char(TYPEOF(v))); // # nocov } } if (!b) { @@ -145,8 +145,8 @@ SEXP uniqlist(SEXP l, SEXP order) SEXP uniqlengths(SEXP x, SEXP n) { // seems very similar to rbindlist.c:uniq_lengths. TODO: centralize into common function - if (TYPEOF(x) != INTSXP) error("Input argument 'x' to 'uniqlengths' must be an integer vector"); - if (TYPEOF(n) != INTSXP || length(n) != 1) error("Input argument 'n' to 'uniqlengths' must be an integer vector of length 1"); + if (TYPEOF(x) != INTSXP) error(_("Input argument 'x' to 'uniqlengths' must be an integer vector")); + if (TYPEOF(n) != INTSXP || length(n) != 1) error(_("Input argument 'n' to 'uniqlengths' must be an integer vector of length 1")); R_len_t len = length(x); SEXP ans = PROTECT(allocVector(INTSXP, len)); for (R_len_t i=1; i= 1"); + if (!isInteger(cols) || lencols==0) error(_("cols must be an integer vector with length >= 1")); int *icols = INTEGER(cols); for (int i=0; incol) error("Item %d of cols is %d which is outside range of l [1,length(l)=%d]", i+1, elem, ncol); + if (elem<1 || elem>ncol) error(_("Item %d of cols is %d which is outside range of l [1,length(l)=%d]"), i+1, elem, ncol); } for (int i=1; i0); SEXP v, ans; - if (!isNewList(l) || length(l) < 1) error("Internal error: nestedid was not passed a list length 1 or more"); // # nocov + if (!isNewList(l) || length(l) < 1) error(_("Internal error: nestedid was not passed a list length 1 or more")); // # nocov R_len_t nrows = length(VECTOR_ELT(l,0)), ncols = length(cols); if (nrows==0) return(allocVector(INTSXP, 0)); R_len_t thisi, previ, ansgrpsize=1000, nansgrp=0; R_len_t *ansgrp = Calloc(ansgrpsize, R_len_t), starts, grplen; // #3401 fix. Needs to be Calloc due to Realloc below .. else segfaults. R_len_t ngrps = length(grps); bool *i64 = (bool *)R_alloc(ncols, sizeof(bool)); - if (ngrps==0) error("Internal error: nrows[%d]>0 but ngrps==0", nrows); // # nocov + if (ngrps==0) error(_("Internal error: nrows[%d]>0 but ngrps==0"), nrows); // # nocov R_len_t resetctr=0, rlen = length(resetvals) ? INTEGER(resetvals)[0] : 0; - if (!isInteger(cols) || ncols == 0) error("cols must be an integer vector of positive length"); + if (!isInteger(cols) || ncols == 0) error(_("cols must be an integer vector of positive length")); // mult arg enum {ALL, FIRST, LAST} mult = ALL; if (!strcmp(CHAR(STRING_ELT(multArg, 0)), "all")) mult = ALL; else if (!strcmp(CHAR(STRING_ELT(multArg, 0)), "first")) mult = FIRST; else if (!strcmp(CHAR(STRING_ELT(multArg, 0)), "last")) mult = LAST; - else error("Internal error: invalid value for 'mult'. please report to data.table issue tracker"); // # nocov + else error(_("Internal error: invalid value for 'mult'. please report to data.table issue tracker")); // # nocov // integer64 for (int j=0; j= dtwiddle(xd, previ); } break; default: - error("Type '%s' not supported", type2char(TYPEOF(v))); // # nocov + error(_("Type '%s' not supported"), type2char(TYPEOF(v))); // # nocov } } if (b) break; @@ -346,8 +346,8 @@ SEXP nestedid(SEXP l, SEXP cols, SEXP order, SEXP grps, SEXP resetvals, SEXP mul SEXP uniqueNlogical(SEXP x, SEXP narmArg) { // single pass; short-circuit and return as soon as all 3 values are found - if (!isLogical(x)) error("x is not a logical vector"); - if (!isLogical(narmArg) || length(narmArg)!=1 || INTEGER(narmArg)[0]==NA_INTEGER) error("na.rm must be TRUE or FALSE"); + if (!isLogical(x)) error(_("x is not a logical vector")); + if (!isLogical(narmArg) || length(narmArg)!=1 || INTEGER(narmArg)[0]==NA_INTEGER) error(_("na.rm must be TRUE or FALSE")); bool narm = LOGICAL(narmArg)[0]==1; const R_xlen_t n = xlength(x); if (n==0) diff --git a/src/utils.c b/src/utils.c index 77af6f0df2..7a455826d7 100644 --- a/src/utils.c +++ b/src/utils.c @@ -70,7 +70,7 @@ bool allNA(SEXP x, bool errorForBadType) { return true; }} if (!errorForBadType) return false; - error("Unsupported type '%s' passed to allNA()", type2char(TYPEOF(x))); // e.g. VECSXP; tests 2116.16-18 + error(_("Unsupported type '%s' passed to allNA()"), type2char(TYPEOF(x))); // e.g. VECSXP; tests 2116.16-18 // turned off allNA list support for now to avoid accidentally using it internally where we did not intend; allNA not yet exported // https://github.com/Rdatatable/data.table/pull/3909#discussion_r329065950 } @@ -89,9 +89,9 @@ SEXP allNAR(SEXP x) { */ SEXP colnamesInt(SEXP x, SEXP cols, SEXP check_dups) { if (!isNewList(x)) - error("'x' argument must be data.table compatible"); + error(_("'x' argument must be data.table compatible")); if (!IS_TRUE_OR_FALSE(check_dups)) - error("'check_dups' argument must be TRUE or FALSE"); + error(_("'check_dups' argument must be TRUE or FALSE")); int protecti = 0; R_len_t nx = length(x); R_len_t nc = length(cols); @@ -107,35 +107,35 @@ SEXP colnamesInt(SEXP x, SEXP cols, SEXP check_dups) { ricols = cols; } else if (isReal(cols)) { if (!isRealReallyInt(cols)) - error("argument specifying columns is type 'double' and one or more items in it are not whole integers"); + error(_("argument specifying columns is type 'double' and one or more items in it are not whole integers")); ricols = PROTECT(coerceVector(cols, INTSXP)); protecti++; } int *icols = INTEGER(ricols); for (int i=0; inx) || (icols[i]<1)) - error("argument specifying columns specify non existing column(s): cols[%d]=%d", i+1, icols[i]); // handles NAs also + error(_("argument specifying columns specify non existing column(s): cols[%d]=%d"), i+1, icols[i]); // handles NAs also } } else if (isString(cols)) { SEXP xnames = PROTECT(getAttrib(x, R_NamesSymbol)); protecti++; if (isNull(xnames)) - error("'x' argument data.table has no names"); + error(_("'x' argument data.table has no names")); ricols = PROTECT(chmatch(cols, xnames, 0)); protecti++; int *icols = INTEGER(ricols); for (int i=0; ilimit) error("Join results in %d rows; more than %d = nrow(x)+nrow(i). Check for duplicate key values in i each of which join to the same group in x over and over again. If that's ok, try by=.EACHI to run j for each group to avoid the large allocation. If you are sure you wish to proceed, rerun with allow.cartesian=TRUE. Otherwise, please search for this error message in the FAQ, Wiki, Stack Overflow and data.table issue tracker for advice.", reslen, (int)limit); + if (limit<0) error(_("clamp must be positive")); + if (reslen>limit) error(_("Join results in %d rows; more than %d = nrow(x)+nrow(i). Check for duplicate key values in i each of which join to the same group in x over and over again. If that's ok, try by=.EACHI to run j for each group to avoid the large allocation. If you are sure you wish to proceed, rerun with allow.cartesian=TRUE. Otherwise, please search for this error message in the FAQ, Wiki, Stack Overflow and data.table issue tracker for advice."), reslen, (int)limit); } SEXP ans = PROTECT(allocVector(INTSXP, reslen)); int *ians = INTEGER(ans); diff --git a/src/wrappers.c b/src/wrappers.c index af9ac39ccf..272355b35e 100644 --- a/src/wrappers.c +++ b/src/wrappers.c @@ -8,12 +8,12 @@ SEXP setattrib(SEXP x, SEXP name, SEXP value) { - if (!isString(name) || LENGTH(name)!=1) error("Attribute name must be a character vector of length 1"); + if (!isString(name) || LENGTH(name)!=1) error(_("Attribute name must be a character vector of length 1")); if (!isNewList(x) && strcmp(CHAR(STRING_ELT(name,0)),"class")==0 && isString(value) && LENGTH(value)>0 && (strcmp(CHAR(STRING_ELT(value, 0)),"data.table")==0 || strcmp(CHAR(STRING_ELT(value,0)),"data.frame")==0) ) { - error("Internal structure doesn't seem to be a list. Can't set class to be 'data.table' or 'data.frame'. Use 'as.data.table()' or 'as.data.frame()' methods instead."); + error(_("Internal structure doesn't seem to be a list. Can't set class to be 'data.table' or 'data.frame'. Use 'as.data.table()' or 'as.data.frame()' methods instead.")); } if (isLogical(x) && LENGTH(x)==1 && (x==ScalarLogical(TRUE) || x==ScalarLogical(FALSE) || x==ScalarLogical(NA_LOGICAL))) { // R's internal globals, #1281 @@ -56,10 +56,10 @@ SEXP setlistelt(SEXP l, SEXP i, SEXP value) { R_len_t i2; // Internal use only. So that := can update elements of a list of data.table, #2204. Just needed to overallocate/grow the VECSXP. - if (!isNewList(l)) error("First argument to setlistelt must be a list()"); - if (!isInteger(i) || LENGTH(i)!=1) error("Second argument to setlistelt must a length 1 integer vector"); + if (!isNewList(l)) error(_("First argument to setlistelt must be a list()")); + if (!isInteger(i) || LENGTH(i)!=1) error(_("Second argument to setlistelt must a length 1 integer vector")); i2 = INTEGER(i)[0]; - if (LENGTH(l) < i2 || i2<1) error("i (%d) is outside the range of items [1,%d]",i2,LENGTH(l)); + if (LENGTH(l) < i2 || i2<1) error(_("i (%d) is outside the range of items [1,%d]"),i2,LENGTH(l)); SET_VECTOR_ELT(l, i2-1, value); return(R_NilValue); } @@ -81,7 +81,7 @@ SEXP expandAltRep(SEXP x) // At R level (for example [.data.table) we use and benefit from altrep vectors very much. It's just as columns that we expand them. // See extensive discussion in issue #2866 - if (TYPEOF(x) != VECSXP) error("x isn't a VECSXP"); + if (TYPEOF(x) != VECSXP) error(_("x isn't a VECSXP")); for (int i=0; i Date: Wed, 16 Oct 2019 00:45:25 +0800 Subject: [PATCH 04/78] adding warning()s from C --- src/assign.c | 18 +++++++++--------- src/dogroups.c | 4 ++-- src/fmelt.c | 4 ++-- src/fread.c | 2 +- src/freadR.c | 2 +- src/fwriteR.c | 2 +- src/gsumm.c | 14 +++++++------- src/openmp-utils.c | 4 ++-- src/rbindlist.c | 17 ++++++++--------- src/subset.c | 4 ++-- src/types.c | 2 +- 11 files changed, 36 insertions(+), 37 deletions(-) diff --git a/src/assign.c b/src/assign.c index cb9909d6ac..4595fa979f 100644 --- a/src/assign.c +++ b/src/assign.c @@ -216,7 +216,7 @@ SEXP alloccol(SEXP dt, R_len_t n, Rboolean verbose) // R <= 2.13.2 and we didn't catch uninitialized tl somehow if (tl<0) error(_("Internal error, tl of class is marked but tl<0.")); // # nocov if (tl>0 && tll+10000) warning("tl (%d) is greater than 10,000 items over-allocated (l = %d). If you didn't set the datatable.alloccol option to be very large, please report to data.table issue tracker including the result of sessionInfo().",tl,l); + if (tl>l+10000) warning(_("tl (%d) is greater than 10,000 items over-allocated (l = %d). If you didn't set the datatable.alloccol option to be very large, please report to data.table issue tracker including the result of sessionInfo()."),tl,l); if (n>tl) return(shallow(dt,R_NilValue,n)); // usual case (increasing alloc) if (n=length(newcolnames)) error(_("Internal error in assign.c: length(newcolnames)=%d, length(names)=%d, coln=%d"), length(newcolnames), length(names), coln); // # nocov if (isNull(thisvalue)) { - warning("Column '%s' does not exist to remove",CHAR(STRING_ELT(newcolnames,newcolnum))); + warning(_("Column '%s' does not exist to remove"),CHAR(STRING_ELT(newcolnames,newcolnum))); continue; } // RHS of assignment to new column is zero length but we'll use its type to create all-NA column of that type } if (isMatrix(thisvalue) && (j=INTEGER(getAttrib(thisvalue, R_DimSymbol))[1]) > 1) // matrix passes above (considered atomic vector) - warning("%d column matrix RHS of := will be treated as one vector", j); + warning(_("%d column matrix RHS of := will be treated as one vector"), j); const SEXP existing = (coln+1)<=oldncol ? VECTOR_ELT(dt,coln) : R_NilValue; if (isFactor(existing) && !isString(thisvalue) && TYPEOF(thisvalue)!=INTSXP && TYPEOF(thisvalue)!=LGLSXP && !isReal(thisvalue) && !isNewList(thisvalue)) { // !=INTSXP includes factor @@ -451,7 +451,7 @@ SEXP assign(SEXP dt, SEXP rows, SEXP cols, SEXP newcolnames, SEXP values) if (oldtncol==0) error(_("This data.table has either been loaded from disk (e.g. using readRDS()/load()) or constructed manually (e.g. using structure()). Please run setDT() or setalloccol() on it first (to pre-allocate space for new columns) before assigning by reference to it.")); // #2996 error(_("Internal error: oldtncol(%d) < oldncol(%d). Please report to data.table issue tracker, including result of sessionInfo()."), oldtncol, oldncol); // # nocov } - if (oldtncol>oldncol+10000L) warning("truelength (%d) is greater than 10,000 items over-allocated (length = %d). See ?truelength. If you didn't set the datatable.alloccol option very large, please report to data.table issue tracker including the result of sessionInfo().",oldtncol, oldncol); + if (oldtncol>oldncol+10000L) warning(_("truelength (%d) is greater than 10,000 items over-allocated (length = %d). See ?truelength. If you didn't set the datatable.alloccol option very large, please report to data.table issue tracker including the result of sessionInfo()."),oldtncol, oldncol); if (oldtncol < oldncol+LENGTH(newcolnames)) error(_("Internal error: DT passed to assign has not been allocated enough column slots. l=%d, tl=%d, adding %d"), oldncol, oldtncol, LENGTH(newcolnames)); // # nocov if (!selfrefnamesok(dt,verbose)) @@ -830,7 +830,7 @@ const char *memrecycle(SEXP target, SEXP where, int start, int len, SEXP source, } } } else if (isString(source) && !isString(target) && !isNewList(target)) { - warning("Coercing 'character' RHS to '%s' to match the type of the target column (column %d named '%s').", + warning(_("Coercing 'character' RHS to '%s' to match the type of the target column (column %d named '%s')."), type2char(TYPEOF(target)), colnum, colname); // this "Coercing ..." warning first to give context in case coerceVector warns 'NAs introduced by coercion' source = PROTECT(coerceVector(source, TYPEOF(target))); protecti++; @@ -841,7 +841,7 @@ const char *memrecycle(SEXP target, SEXP where, int start, int len, SEXP source, } // as in base R; e.g. let as.double(list(1,2,3)) work but not as.double(list(1,c(2,4),3)) // relied on by NNS, simstudy and table.express; tests 1294.* - warning("Coercing 'list' RHS to '%s' to match the type of the target column (column %d named '%s').", + warning(_("Coercing 'list' RHS to '%s' to match the type of the target column (column %d named '%s')."), type2char(TYPEOF(target)), colnum, colname); source = PROTECT(coerceVector(source, TYPEOF(target))); protecti++; } else if ((TYPEOF(target)!=TYPEOF(source) || targetIsI64!=sourceIsI64) && !isNewList(target)) { diff --git a/src/dogroups.c b/src/dogroups.c index 568b0286b1..3056d49473 100644 --- a/src/dogroups.c +++ b/src/dogroups.c @@ -316,7 +316,7 @@ SEXP dogroups(SEXP dt, SEXP dtcols, SEXP groups, SEXP grpcols, SEXP jiscols, SEX const char *warn = memrecycle(target, order, INTEGER(starts)[i]-1, grpn, RHS, 0, ""); // can't error here because length mismatch already checked for all jval columns before starting to add any new columns if (warn) - warning("Group %d column '%s': %s", i+1, CHAR(STRING_ELT(dtnames,INTEGER(lhs)[j]-1)), warn); + warning(_("Group %d column '%s': %s"), i+1, CHAR(STRING_ELT(dtnames,INTEGER(lhs)[j]-1)), warn); } UNPROTECT(1); // jval continue; @@ -416,7 +416,7 @@ SEXP dogroups(SEXP dt, SEXP dtcols, SEXP groups, SEXP grpcols, SEXP jiscols, SEX // including NULL and typed empty vectors, fill with NA // A NULL in the first group's jval isn't allowed; caught above after allocating ans if (!NullWarnDone && maxn>1) { // maxn==1 in tests 172,280,281,282,403,405 and 406 - warning("Item %d of j's result for group %d is zero length. This will be filled with %d NAs to match the longest column in this result. Later groups may have a similar problem but only the first is reported to save filling the warning buffer.", j+1, i+1, maxn); + warning(_("Item %d of j's result for group %d is zero length. This will be filled with %d NAs to match the longest column in this result. Later groups may have a similar problem but only the first is reported to save filling the warning buffer."), j+1, i+1, maxn); NullWarnDone = TRUE; } writeNA(target, thisansloc, maxn); diff --git a/src/fmelt.c b/src/fmelt.c index bbd616f81d..2311d54948 100644 --- a/src/fmelt.c +++ b/src/fmelt.c @@ -145,7 +145,7 @@ SEXP checkVars(SEXP DT, SEXP id, SEXP measure, Rboolean verbose) { } valuecols = PROTECT(allocVector(VECSXP, 1)); protecti++; SET_VECTOR_ELT(valuecols, 0, tmp); - warning("id.vars and measure.vars are internally guessed when both are 'NULL'. All non-numeric/integer/logical type columns are considered id.vars, which in this case are columns [%s]. Consider providing at least one of 'id' or 'measure' vars in future.", CHAR(STRING_ELT(concat(dtnames, idcols), 0))); + warning(_("id.vars and measure.vars are internally guessed when both are 'NULL'. All non-numeric/integer/logical type columns are considered id.vars, which in this case are columns [%s]. Consider providing at least one of 'id' or 'measure' vars in future."), CHAR(STRING_ELT(concat(dtnames, idcols), 0))); } else if (!isNull(id) && isNull(measure)) { switch(TYPEOF(id)) { case STRSXP : PROTECT(tmp = chmatch(id, dtnames, 0)); protecti++; break; @@ -382,7 +382,7 @@ SEXP getvaluecols(SEXP DT, SEXP dtnames, Rboolean valfactor, Rboolean verbose, s for (int i=0; ilvalues; ++i) { SEXP thisvaluecols = VECTOR_ELT(data->valuecols, i); if (!data->isidentical[i]) - warning("'measure.vars' [%s] are not all of the same type. By order of hierarchy, the molten data value column will be of type '%s'. All measure variables not of type '%s' will be coerced too. Check DETAILS in ?melt.data.table for more on coercion.\n", CHAR(STRING_ELT(concat(dtnames, thisvaluecols), 0)), type2char(data->maxtype[i]), type2char(data->maxtype[i])); + warning(_("'measure.vars' [%s] are not all of the same type. By order of hierarchy, the molten data value column will be of type '%s'. All measure variables not of type '%s' will be coerced too. Check DETAILS in ?melt.data.table for more on coercion.\n"), CHAR(STRING_ELT(concat(dtnames, thisvaluecols), 0)), type2char(data->maxtype[i]), type2char(data->maxtype[i])); if (data->maxtype[i] == VECSXP && data->narm) { if (verbose) Rprintf("The molten data value type is a list at item %d. 'na.rm=TRUE' is ignored.\n", i+1); data->narm = FALSE; diff --git a/src/fread.c b/src/fread.c index bb885eb088..d46fe2f5aa 100644 --- a/src/fread.c +++ b/src/fread.c @@ -188,7 +188,7 @@ static inline int64_t clamp_szt(int64_t x, int64_t lower, int64_t upper) { * Parameter `limit` cannot exceed 500. * The data might contain % characters. Therefore, careful to ensure that if the msg * is constructed manually (using say snprintf) that warning(), stop() - * and Rprintf() are all called as warning("%s", msg) and not warning(msg). + * and Rprintf() are all called as warning(_("%s"), msg) and not warning(msg). */ static const char* strlim(const char *ch, size_t limit) { static char buf[1002]; diff --git a/src/freadR.c b/src/freadR.c index 6b832fc710..8e3b1b8d4b 100644 --- a/src/freadR.c +++ b/src/freadR.c @@ -654,7 +654,7 @@ void __halt(bool warn, const char *format, ...) { vsnprintf(msg, 2000, format, args); va_end(args); freadCleanup(); // this closes mmp hence why we just copied substrings from mmp to msg[] first since mmp is now invalid - // if (warn) warning("%s", msg); + // if (warn) warning(_("%s"), msg); // this warning() call doesn't seem to honor warn=2 straight away in R 3.6, so now always call error() directly to be sure // we were going via warning() before to get the (converted from warning) prefix in the message (which we could mimic in future) error(_("%s"), msg); // include "%s" because data in msg might include '%' diff --git a/src/fwriteR.c b/src/fwriteR.c index 75b4510709..c3644dc048 100644 --- a/src/fwriteR.c +++ b/src/fwriteR.c @@ -176,7 +176,7 @@ SEXP fwriteR( args.filename = CHAR(STRING_ELT(filename_Arg, 0)); args.ncol = length(DF); if (args.ncol==0) { - warning("fwrite was passed an empty list of no columns. Nothing to write."); + warning(_("fwrite was passed an empty list of no columns. Nothing to write.")); return R_NilValue; } args.nrow = length(VECTOR_ELT(DF, 0)); diff --git a/src/gsumm.c b/src/gsumm.c index 29a43c4d95..3cd17d685d 100644 --- a/src/gsumm.c +++ b/src/gsumm.c @@ -401,7 +401,7 @@ SEXP gsum(SEXP x, SEXP narmArg, SEXP warnOverflowArg) //Rprintf("gsum int took %.3f\n", wallclock()-started); if (overflow) { UNPROTECT(1); // discard the result with overflow - if (warnOverflow) warning("The sum of an integer column for a group was more than type 'integer' can hold so the result has been coerced to 'numeric' automatically for convenience."); + if (warnOverflow) warning(_("The sum of an integer column for a group was more than type 'integer' can hold so the result has been coerced to 'numeric' automatically for convenience.")); ans = PROTECT(allocVector(REALSXP, ngrp)); double *restrict ansp = REAL(ans); memset(ansp, 0, ngrp*sizeof(double)); @@ -714,7 +714,7 @@ SEXP gmin(SEXP x, SEXP narm) } for (i=0; iINT_MAX) { - warning("Ignoring invalid %s==\"%s\". Not an integer >= 1. Please remove any characters that are not a digit [0-9]. See ?data.table::setDTthreads.", name, val); + warning(_("Ignoring invalid %s==\")%s\". Not an integer >= 1. Please remove any characters that are not a digit [0-9]. See ?data.table::setDTthreads.", name, val); return def; } return (int)ans; @@ -37,7 +37,7 @@ void initDTthreads() { int perc = getIntEnv("R_DATATABLE_NUM_PROCS_PERCENT", 50); // use "NUM_PROCS" to use the same name as the OpenMP function this uses // 50% of logical CPUs by default; half of 8 is 4 on laptop with 4 cores. Leaves plenty of room for other processes: #3395 & #3298 if (perc<=1 || perc>100) { - warning("Ignoring invalid R_DATATABLE_NUM_PROCS_PERCENT==%d. If used it must be an integer between 2 and 100. Default is 50. See ?setDTtheads.", perc); + warning(_("Ignoring invalid R_DATATABLE_NUM_PROCS_PERCENT==%d. If used it must be an integer between 2 and 100. Default is 50. See ?setDTtheads."), perc); // not allowing 1 is to catch attempts to use 1 or 1.0 to represent 100%. perc = 50; } diff --git a/src/rbindlist.c b/src/rbindlist.c index e12d1df8e5..ee9bf56388 100644 --- a/src/rbindlist.c +++ b/src/rbindlist.c @@ -13,7 +13,7 @@ SEXP rbindlist(SEXP l, SEXP usenamesArg, SEXP fillArg, SEXP idcolArg) Rboolean usenames = LOGICAL(usenamesArg)[0]; const bool fill = LOGICAL(fillArg)[0]; if (fill && usenames!=TRUE) { - if (usenames==FALSE) warning("use.names= cannot be FALSE when fill is TRUE. Setting use.names=TRUE."); // else no warning if usenames==NA (default) + if (usenames==FALSE) warning(_("use.names= cannot be FALSE when fill is TRUE. Setting use.names=TRUE.")); // else no warning if usenames==NA (default) usenames=TRUE; } const bool idcol = !isNull(idcolArg); @@ -55,7 +55,7 @@ SEXP rbindlist(SEXP l, SEXP usenamesArg, SEXP fillArg, SEXP idcolArg) if (numZero) { // #1871 SEXP names = getAttrib(VECTOR_ELT(l, firstZeroItem), R_NamesSymbol); const char *ch = names==R_NilValue ? "" : CHAR(STRING_ELT(names, firstZeroCol)); - warning("Column %d ['%s'] of item %d is length 0. This (and %d other%s like it) has been filled with NA (NULL for list columns) to make each item uniform.", + warning(_("Column %d ['%s'] of item %d is length 0. This (and %d other%s like it) has been filled with NA (NULL for list columns) to make each item uniform."), firstZeroCol+1, ch, firstZeroItem+1, numZero-1, numZero==2?"":"s"); } if (nrow==0 && ncol==0) return(R_NilValue); @@ -207,7 +207,7 @@ SEXP rbindlist(SEXP l, SEXP usenamesArg, SEXP fillArg, SEXP idcolArg) SEXP s = getAttrib(VECTOR_ELT(l, i), R_NamesSymbol); int w2 = colMap[i*ncol + j]; const char *str = isString(s) ? CHAR(STRING_ELT(s,w2)) : ""; - snprintf(buff, 1000, "Column %d ['%s'] of item %d is missing in item %d. Use fill=TRUE to fill with NA (NULL for list columns), or use.names=FALSE to ignore column names.%s", + snprintf(buff, 1000, _("Column %d ['%s'] of item %d is missing in item %d. Use fill=TRUE to fill with NA (NULL for list columns), or use.names=FALSE to ignore column names.%s"), w2+1, str, i+1, missi+1, extra ); if (usenames==TRUE) error(buff); i = LENGTH(l); // break from outer i loop @@ -216,7 +216,7 @@ SEXP rbindlist(SEXP l, SEXP usenamesArg, SEXP fillArg, SEXP idcolArg) if (w!=j && usenames==NA_LOGICAL) { SEXP s = getAttrib(VECTOR_ELT(l, i), R_NamesSymbol); if (!isString(s) || i==0) error(_("Internal error: usenames==NA but an out-of-order name has been found in an item with no names or the first item. [%d]"), i); - snprintf(buff, 1000, "Column %d ['%s'] of item %d appears in position %d in item %d. Set use.names=TRUE to match by column name, or use.names=FALSE to ignore column names.%s", + snprintf(buff, 1000, _("Column %d ['%s'] of item %d appears in position %d in item %d. Set use.names=TRUE to match by column name, or use.names=FALSE to ignore column names.%s"), w+1, CHAR(STRING_ELT(s,w)), i+1, j+1, i, extra); i = LENGTH(l); break; @@ -225,14 +225,14 @@ SEXP rbindlist(SEXP l, SEXP usenamesArg, SEXP fillArg, SEXP idcolArg) if (buff[0]) { SEXP opt = GetOption(install("datatable.rbindlist.check"), R_NilValue); if (!isNull(opt) && !(isString(opt) && length(opt)==1)) { - warning("options()$datatable.rbindlist.check is set but is not a single string. See news item 5 in v1.12.2."); + warning(_("options()$datatable.rbindlist.check is set but is not a single string. See news item 5 in v1.12.2.")); opt = R_NilValue; } const char *o = isNull(opt) ? "message" : CHAR(STRING_ELT(opt,0)); if (strcmp(o,"message")==0) { eval(PROTECT(lang2(install("message"),PROTECT(ScalarString(mkChar(buff))))), R_GlobalEnv); UNPROTECT(2); } else if (strcmp(o,"warning")==0) warning(buff); else if (strcmp(o,"error")==0) error(buff); - else if (strcmp(o,"none")!=0) warning("options()$datatable.rbindlist.check=='%s' which is not 'message'|'warning'|'error'|'none'. See news item 5 in v1.12.2.", o); + else if (strcmp(o,"none")!=0) warning(_("options()$datatable.rbindlist.check=='%s' which is not 'message'|'warning'|'error'|'none'. See news item 5 in v1.12.2."), o); } } } @@ -328,7 +328,7 @@ SEXP rbindlist(SEXP l, SEXP usenamesArg, SEXP fillArg, SEXP idcolArg) if (!factor) copyMostAttrib(firstCol, target); // all but names,dim and dimnames; mainly for class. And if so, we want a copy here, not keepattr's SET_ATTRIB. if (factor && anyNotStringOrFactor) { - // in future warn, or use list column instead ... warning("Column %d contains a factor but not all items for the column are character or factor", idcol+j+1); + // in future warn, or use list column instead ... warning(_("Column %d contains a factor but not all items for the column are character or factor"), idcol+j+1); // some coercing from (likely) integer/numeric to character will be needed. But this coerce can feasibly fail with out-of-memory, so we have to do it up-front // before the savetl_init() because we have no hook to clean up tl if coerceVector fails. if (coercedForFactor==NULL) { coercedForFactor=PROTECT(allocVector(VECSXP, LENGTH(l))); nprotect++; } @@ -519,7 +519,7 @@ SEXP rbindlist(SEXP l, SEXP usenamesArg, SEXP fillArg, SEXP idcolArg) } // else coerces if needed within memrecycle; with a no-alloc direct coerce from 1.12.4 (PR #3909) const char *ret = memrecycle(target, R_NilValue, ansloc, thisnrow, thisCol, idcol+j+1, foundName); - if (ret) warning("Column %d of item %d: %s", w+1, i+1, ret); + if (ret) warning(_("Column %d of item %d: %s"), w+1, i+1, ret); // e.g. when precision is lost like assigning 3.4 to integer64; test 2007.2 // TODO: but maxType should handle that and this should never warn } @@ -530,4 +530,3 @@ SEXP rbindlist(SEXP l, SEXP usenamesArg, SEXP fillArg, SEXP idcolArg) UNPROTECT(nprotect); // ans, coercedForFactor, thisCol return(ans); } - diff --git a/src/subset.c b/src/subset.c index ca4a074cd3..f7bb6db9e6 100644 --- a/src/subset.c +++ b/src/subset.c @@ -204,9 +204,9 @@ SEXP convertNegAndZeroIdx(SEXP idx, SEXP maxArg, SEXP allowOverMax) } } if (countBeyond) - warning("Item %d of i is %d but there are only %d rows. Ignoring this and %d more like it out of %d.", firstBeyond, idxp[firstBeyond-1], max, countBeyond-1, n); + warning(_("Item %d of i is %d but there are only %d rows. Ignoring this and %d more like it out of %d."), firstBeyond, idxp[firstBeyond-1], max, countBeyond-1, n); if (countDup) - warning("Item %d of i is %d which removes that item but that has occurred before. Ignoring this dup and %d other dups.", firstDup, idxp[firstDup-1], countDup-1); + warning(_("Item %d of i is %d which removes that item but that has occurred before. Ignoring this dup and %d other dups."), firstDup, idxp[firstDup-1], countDup-1); int ansn = max-countRemoved; ans = PROTECT(allocVector(INTSXP, ansn)); int *ansp = INTEGER(ans); diff --git a/src/types.c b/src/types.c index 93742a7a0e..ce451e2bcc 100644 --- a/src/types.c +++ b/src/types.c @@ -18,7 +18,7 @@ void ansMsg(ans_t *ans, int n, bool verbose, const char *func) { if (ans[i].message[1][0] != '\0') REprintf("%s: %d:\n%s", func, i+1, ans[i].message[1]); if (ans[i].message[2][0] != '\0') - warning("%s: %d:\n%s", func, i+1, ans[i].message[2]); + warning(_("%s: %d:\n%s"), func, i+1, ans[i].message[2]); if (ans[i].status == 3) error(_("%s: %d:\n%s:"), func, i+1, ans[i].message[3]); } From b987a1da362a64e2da523f681243268958895e43 Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Wed, 16 Oct 2019 00:53:40 +0800 Subject: [PATCH 05/78] C messages with DTPRINT or Rprintf --- src/assign.c | 30 +++---- src/between.c | 10 +-- src/coalesce.c | 2 +- src/dogroups.c | 16 ++-- src/fmelt.c | 12 +-- src/forder.c | 26 +++--- src/fread.c | 196 ++++++++++++++++++++++----------------------- src/freadR.c | 4 +- src/froll.c | 8 +- src/frollR.c | 12 +-- src/fsort.c | 16 ++-- src/fwrite.c | 36 ++++----- src/fwriteR.c | 4 +- src/gsumm.c | 30 +++---- src/ijoin.c | 10 +-- src/inrange.c | 4 +- src/nafill.c | 2 +- src/openmp-utils.c | 20 ++--- src/rbindlist.c | 2 +- src/types.c | 4 +- src/utils.c | 2 +- 21 files changed, 223 insertions(+), 223 deletions(-) diff --git a/src/assign.c b/src/assign.c index 4595fa979f..8e1651fdca 100644 --- a/src/assign.c +++ b/src/assign.c @@ -120,7 +120,7 @@ static int _selfrefok(SEXP x, Rboolean checkNames, Rboolean verbose) { } p = R_ExternalPtrAddr(v); if (p==NULL) { - if (verbose) Rprintf(".internal.selfref ptr is NULL. This is expected and normal for a data.table loaded from disk. Please remember to always setDT() immediately after loading to prevent unexpected behavior. If this table was not loaded from disk or you've already run setDT(), please report to data.table issue tracker.\n"); + if (verbose) Rprintf(_(".internal.selfref ptr is NULL. This is expected and normal for a data.table loaded from disk. Please remember to always setDT() immediately after loading to prevent unexpected behavior. If this table was not loaded from disk or you've already run setDT(), please report to data.table issue tracker.\n")); return -1; } if (!isNull(p)) error(_("Internal error: .internal.selfref ptr is not NULL or R_NilValue")); // # nocov @@ -218,7 +218,7 @@ SEXP alloccol(SEXP dt, R_len_t n, Rboolean verbose) if (tl>0 && tll+10000) warning(_("tl (%d) is greater than 10,000 items over-allocated (l = %d). If you didn't set the datatable.alloccol option to be very large, please report to data.table issue tracker including the result of sessionInfo()."),tl,l); if (n>tl) return(shallow(dt,R_NilValue,n)); // usual case (increasing alloc) - if (n=1) numToDo++; } - if (verbose) Rprintf("Assigning to %d row subset of %d rows\n", numToDo, nrow); + if (verbose) Rprintf(_("Assigning to %d row subset of %d rows\n"), numToDo, nrow); // TODO: include in message if any rows are assigned several times (e.g. by=.EACHI with dups in i) if (numToDo==0) { if (!length(newcolnames)) { @@ -339,7 +339,7 @@ SEXP assign(SEXP dt, SEXP rows, SEXP cols, SEXP newcolnames, SEXP values) UNPROTECT(protecti); return(dt); // all items of rows either 0 or NA. !length(newcolnames) for #759 } - if (verbose) Rprintf("Added %d new column%s initialized with all-NA\n", + if (verbose) Rprintf(_("Added %d new column%s initialized with all-NA\n"), length(newcolnames), (length(newcolnames)>1)?"s":""); } } @@ -377,12 +377,12 @@ SEXP assign(SEXP dt, SEXP rows, SEXP cols, SEXP newcolnames, SEXP values) if (any_duplicated(cols,FALSE)) error(_("Can't assign to the same column twice in the same query (duplicates detected).")); if (!isNull(newcolnames) && !isString(newcolnames)) error(_("newcolnames is supplied but isn't a character vector")); bool RHS_list_of_columns = TYPEOF(values)==VECSXP && length(cols)>1; // initial value; may be revised below - if (verbose) Rprintf("RHS_list_of_columns == %s\n", RHS_list_of_columns ? "true" : "false"); + if (verbose) Rprintf(_("RHS_list_of_columns == %s\n"), RHS_list_of_columns ? "true" : "false"); if (TYPEOF(values)==VECSXP && length(cols)==1 && length(values)==1) { SEXP item = VECTOR_ELT(values,0); if (isNull(item) || length(item)==1 || length(item)==targetlen) { RHS_list_of_columns=true; - if (verbose) Rprintf("RHS_list_of_columns revised to true because RHS list has 1 item which is NULL, or whose length %d is either 1 or targetlen (%d). Please unwrap RHS.\n", length(item), targetlen); + if (verbose) Rprintf(_("RHS_list_of_columns revised to true because RHS list has 1 item which is NULL, or whose length %d is either 1 or targetlen (%d). Please unwrap RHS.\n"), length(item), targetlen); } } if (RHS_list_of_columns) { @@ -393,7 +393,7 @@ SEXP assign(SEXP dt, SEXP rows, SEXP cols, SEXP newcolnames, SEXP values) if (length(values)==1) { // test 351.1; c("colA","colB"):=list(13:15) uses 13:15 for both columns values = VECTOR_ELT(values,0); RHS_list_of_columns = false; - if (verbose) Rprintf("Recycling single RHS list item across %d columns. Please unwrap RHS.\n", length(cols)); + if (verbose) Rprintf(_("Recycling single RHS list item across %d columns. Please unwrap RHS.\n"), length(cols)); } else { error(_("Supplied %d columns to be assigned %d items. Please see NEWS for v1.12.2."), length(cols), length(values)); } @@ -481,12 +481,12 @@ SEXP assign(SEXP dt, SEXP rows, SEXP cols, SEXP newcolnames, SEXP values) (TYPEOF(values)!=VECSXP && i>0) // assigning the same values to a second column. Have to ensure a copy #2540 ) { if (verbose) { - Rprintf("RHS for item %d has been duplicated because NAMED==%d MAYBE_SHARED==%d, but then is being plonked. length(values)==%d; length(cols)==%d)\n", + Rprintf(_("RHS for item %d has been duplicated because NAMED==%d MAYBE_SHARED==%d, but then is being plonked. length(values)==%d; length(cols)==%d)\n"), i+1, NAMED(thisvalue), MAYBE_SHARED(thisvalue), length(values), length(cols)); } thisvalue = copyAsPlain(thisvalue); // PROTECT not needed as assigned as element to protected list below. } else { - if (verbose) Rprintf("Direct plonk of unnamed RHS, no copy. NAMED==%d, MAYBE_SHARED==%d\n", NAMED(thisvalue), MAYBE_SHARED(thisvalue)); // e.g. DT[,a:=as.character(a)] as tested by 754.5 + if (verbose) Rprintf(_("Direct plonk of unnamed RHS, no copy. NAMED==%d, MAYBE_SHARED==%d\n"), NAMED(thisvalue), MAYBE_SHARED(thisvalue)); // e.g. DT[,a:=as.character(a)] as tested by 754.5 } SET_VECTOR_ELT(dt, coln, thisvalue); // plonk new column in as it's already the correct length setAttrib(thisvalue, R_NamesSymbol, R_NilValue); // clear names such as DT[,a:=mapvector[a]] @@ -555,7 +555,7 @@ SEXP assign(SEXP dt, SEXP rows, SEXP cols, SEXP newcolnames, SEXP values) if (*tc1!='_' || *(tc1+1)!='_') { // fix for #1396 if (verbose) { - Rprintf("Dropping index '%s' as it doesn't have '__' at the beginning of its name. It was very likely created by v1.9.4 of data.table.\n", tc1); + Rprintf(_("Dropping index '%s' as it doesn't have '__' at the beginning of its name. It was very likely created by v1.9.4 of data.table.\n"), tc1); } setAttrib(index, a, R_NilValue); indexNo++; @@ -600,7 +600,7 @@ SEXP assign(SEXP dt, SEXP rows, SEXP cols, SEXP newcolnames, SEXP values) setAttrib(index, a, R_NilValue); SET_STRING_ELT(indexNames, indexNo, NA_STRING); if (verbose) { - Rprintf("Dropping index '%s' due to an update on a key column\n", c1+2); + Rprintf(_("Dropping index '%s' due to an update on a key column\n"), c1+2); } } else if(newKeyLength < strlen(c1)) { SEXP s4Str = PROTECT(mkString(s4)); @@ -609,14 +609,14 @@ SEXP assign(SEXP dt, SEXP rows, SEXP cols, SEXP newcolnames, SEXP values) SET_TAG(s, install(s4)); SET_STRING_ELT(indexNames, indexNo, mkChar(s4)); if (verbose) - Rprintf("Shortening index '%s' to '%s' due to an update on a key column\n", c1+2, s4 + 2); + Rprintf(_("Shortening index '%s' to '%s' due to an update on a key column\n"), c1+2, s4 + 2); } else { // indexLength > 0 || shortened name present already // indexLength > 0 indicates reordering. Drop it to avoid spurious reordering in non-indexed columns (#2372) // shortened anme already present indicates that index needs to be dropped to avoid duplicate indices. setAttrib(index, a, R_NilValue); SET_STRING_ELT(indexNames, indexNo, NA_STRING); if (verbose) - Rprintf("Dropping index '%s' due to an update on a key column\n", c1+2); + Rprintf(_("Dropping index '%s' due to an update on a key column\n"), c1+2); } UNPROTECT(1); // s4Str } //else: index is not affected by assign: nothing to be done @@ -847,7 +847,7 @@ const char *memrecycle(SEXP target, SEXP where, int start, int len, SEXP source, } else if ((TYPEOF(target)!=TYPEOF(source) || targetIsI64!=sourceIsI64) && !isNewList(target)) { if (GetVerbose()) { // only take the (small) cost of GetVerbose() (search of options() list) when types don't match - Rprintf("Zero-copy coerce when assigning '%s' to '%s' column %d named '%s'.\n", + Rprintf(_("Zero-copy coerce when assigning '%s' to '%s' column %d named '%s'.\n"), sourceIsI64 ? "integer64" : type2char(TYPEOF(source)), targetIsI64 ? "integer64" : type2char(TYPEOF(target)), colnum, colname); diff --git a/src/between.c b/src/between.c index 653a28c339..c1b6f14561 100644 --- a/src/between.c +++ b/src/between.c @@ -79,7 +79,7 @@ SEXP between(SEXP x, SEXP lower, SEXP upper, SEXP incbounds, SEXP NAboundsArg, S ansp[i] = (lok && uok) ? l+open<=elem && elem<=u-open : ((uok && elem>u-open) || (lok && elemu-open) || (lok && elem=u) || (lok && elem<=l)) ? FALSE : NA_LOGICAL; } } - if (verbose) Rprintf("between parallel processing of double with open bounds took %8.3fs\n", omp_get_wtime()-tic); + if (verbose) Rprintf(_("between parallel processing of double with open bounds took %8.3fs\n"), omp_get_wtime()-tic); } else { if (NAbounds) { #pragma omp parallel for num_threads(getDTthreads()) @@ -154,7 +154,7 @@ SEXP between(SEXP x, SEXP lower, SEXP upper, SEXP incbounds, SEXP NAboundsArg, S ansp[i] = (lok && uok) ? l<=elem && elem<=u : ((uok && elem>u) || (lok && elem0; - Rprintf("\n %s took %.3fs for %d groups\n", w ? "collecting discontiguous groups" : "memcpy contiguous groups", + Rprintf(_("\n %s took %.3fs for %d groups\n"), w ? "collecting discontiguous groups" : "memcpy contiguous groups", 1.0*tblock[w]/CLOCKS_PER_SEC, nblock[w]); - Rprintf(" eval(j) took %.3fs for %d calls\n", 1.0*tblock[2]/CLOCKS_PER_SEC, nblock[2]); + Rprintf(_(" eval(j) took %.3fs for %d calls\n"), 1.0*tblock[2]/CLOCKS_PER_SEC, nblock[2]); } UNPROTECT(nprotect); return(ans); @@ -495,7 +495,7 @@ SEXP growVector(SEXP x, R_len_t newlen) default : memcpy((char *)DATAPTR(newx), (char *)DATAPTR(x), len*SIZEOF(x)); // SIZEOF() returns size_t (just as sizeof()) so * shouldn't overflow // TODO remove DATAPTR } - // if (verbose) Rprintf("Growing vector from %d to %d items of type '%s'\n", len, newlen, type2char(TYPEOF(x))); + // if (verbose) Rprintf(_("Growing vector from %d to %d items of type '%s'\n"), len, newlen, type2char(TYPEOF(x))); // Would print for every column if here. Now just up in dogroups (one msg for each table grow). keepattr(newx,x); UNPROTECT(1); diff --git a/src/fmelt.c b/src/fmelt.c index 2311d54948..896f7e8b1c 100644 --- a/src/fmelt.c +++ b/src/fmelt.c @@ -172,8 +172,8 @@ SEXP checkVars(SEXP DT, SEXP id, SEXP measure, Rboolean verbose) { SET_VECTOR_ELT(valuecols, 0, tmp2); idcols = tmp; if (verbose) { - Rprintf("'measure.vars' is missing. Assigning all columns other than 'id.vars' columns as 'measure.vars'.\n"); - if (length(tmp2)) Rprintf("Assigned 'measure.vars' are [%s].\n", CHAR(STRING_ELT(concat(dtnames, tmp2), 0))); + Rprintf(_("'measure.vars' is missing. Assigning all columns other than 'id.vars' columns as 'measure.vars'.\n")); + if (length(tmp2)) Rprintf(_("Assigned 'measure.vars' are [%s].\n"), CHAR(STRING_ELT(concat(dtnames, tmp2), 0))); } } else if (isNull(id) && !isNull(measure)) { switch(TYPEOF(measure)) { @@ -208,8 +208,8 @@ SEXP checkVars(SEXP DT, SEXP id, SEXP measure, Rboolean verbose) { SET_VECTOR_ELT(valuecols, 0, tmp2); } if (verbose) { - Rprintf("'id.vars' is missing. Assigning all columns other than 'measure.vars' columns as 'id.vars'.\n"); - if (length(idcols)) Rprintf("Assigned 'id.vars' are [%s].\n", CHAR(STRING_ELT(concat(dtnames, idcols), 0))); + Rprintf(_("'id.vars' is missing. Assigning all columns other than 'measure.vars' columns as 'id.vars'.\n")); + if (length(idcols)) Rprintf(_("Assigned 'id.vars' are [%s].\n"), CHAR(STRING_ELT(concat(dtnames, idcols), 0))); } } else if (!isNull(id) && !isNull(measure)) { switch(TYPEOF(id)) { @@ -384,7 +384,7 @@ SEXP getvaluecols(SEXP DT, SEXP dtnames, Rboolean valfactor, Rboolean verbose, s if (!data->isidentical[i]) warning(_("'measure.vars' [%s] are not all of the same type. By order of hierarchy, the molten data value column will be of type '%s'. All measure variables not of type '%s' will be coerced too. Check DETAILS in ?melt.data.table for more on coercion.\n"), CHAR(STRING_ELT(concat(dtnames, thisvaluecols), 0)), type2char(data->maxtype[i]), type2char(data->maxtype[i])); if (data->maxtype[i] == VECSXP && data->narm) { - if (verbose) Rprintf("The molten data value type is a list at item %d. 'na.rm=TRUE' is ignored.\n", i+1); + if (verbose) Rprintf(_("The molten data value type is a list at item %d. 'na.rm=TRUE' is ignored.\n"), i+1); data->narm = FALSE; } } @@ -679,7 +679,7 @@ SEXP fmelt(SEXP DT, SEXP id, SEXP measure, SEXP varfactor, SEXP valfactor, SEXP if (!isLogical(verboseArg)) error(_("Argument 'verbose' should be logical TRUE/FALSE")); int ncol = LENGTH(DT); if (!ncol) { - if (verbose) Rprintf("ncol(data) is 0. Nothing to melt. Returning original data.table."); + if (verbose) Rprintf(_("ncol(data) is 0. Nothing to melt. Returning original data.table.")); return(DT); } int protecti=0; diff --git a/src/forder.c b/src/forder.c index 544ba7768d..59d5cd61c3 100644 --- a/src/forder.c +++ b/src/forder.c @@ -434,7 +434,7 @@ SEXP forder(SEXP DT, SEXP by, SEXP retGrpArg, SEXP sortGroupsArg, SEXP ascArg, S if (!isInteger(ascArg) || LENGTH(ascArg)!=1) error(_("Input is an atomic vector (not a list of columns) but order= is not a length 1 integer")); if (verbose) - Rprintf("forder.c received a vector type '%s' length %d\n", type2char(TYPEOF(DT)), length(DT)); + Rprintf(_("forder.c received a vector type '%s' length %d\n"), type2char(TYPEOF(DT)), length(DT)); SEXP tt = PROTECT(allocVector(VECSXP, 1)); n_protect++; SET_VECTOR_ELT(tt, 0, DT); DT = tt; @@ -442,7 +442,7 @@ SEXP forder(SEXP DT, SEXP by, SEXP retGrpArg, SEXP sortGroupsArg, SEXP ascArg, S INTEGER(by)[0] = 1; } else { if (verbose) - Rprintf("forder.c received %d rows and %d columns\n", length(VECTOR_ELT(DT,0)), length(DT)); + Rprintf(_("forder.c received %d rows and %d columns\n"), length(VECTOR_ELT(DT,0)), length(DT)); } if (!length(DT)) error(_("Internal error: DT is an empty list() of 0 columns")); // # nocov should have been caught be colnamesInt, test 2099.1 @@ -504,7 +504,7 @@ SEXP forder(SEXP DT, SEXP by, SEXP retGrpArg, SEXP sortGroupsArg, SEXP ascArg, S if (n_cplx) { CplxPart=PROTECT(allocVector(REALSXP, nrow)); n_protect++; } // one alloc is reused for each part TEND(2); for (int col=0; col>=1; } @@ -613,7 +613,7 @@ SEXP forder(SEXP DT, SEXP by, SEXP retGrpArg, SEXP sortGroupsArg, SEXP ascArg, S const uint64_t naval = ((nalast==1) == asc) ? max+1+isReal*2 : min-1-isReal*2; const uint64_t nanval = ((nalast==1) == asc) ? max+2 : min-2; // only used when isReal - // Rprintf("asc=%d min2=%llu max2=%llu naval==%llu nanval==%llu\n", asc, min2, max2, naval, nanval); + // Rprintf(_("asc=%d min2=%llu max2=%llu naval==%llu nanval==%llu\n"), asc, min2, max2, naval, nanval); // several columns could squash into 1 byte. due to this bit squashing is why we deal // with asc|desc here, otherwise it could be done in the ugrp sorting by reversing the ugrp insert sort @@ -706,11 +706,11 @@ SEXP forder(SEXP DT, SEXP by, SEXP retGrpArg, SEXP sortGroupsArg, SEXP ascArg, S } nradix += nbyte-1+(spare==0); TEND(4) - // Rprintf("Written key for column %d\n", col); + // Rprintf(_("Written key for column %d\n"), col); } if (key[nradix]!=NULL) nradix++; // nradix now number of bytes in key #ifdef TIMING_ON - Rprintf("nradix=%d\n", nradix); + Rprintf(_("nradix=%d\n"), nradix); #endif int nth = getDTthreads(); @@ -782,10 +782,10 @@ SEXP forder(SEXP DT, SEXP by, SEXP retGrpArg, SEXP sortGroupsArg, SEXP ascArg, S int last=NBLOCK-1; while (last>=0 && nblock[last]==0) last--; // remove unused timing slots for (int i=0; i<=last; i++) { - Rprintf("Timing block %2d%s = %8.3f %8d\n", i, (i>=17&&i<=19)?"(*)":" ", tblock[i], nblock[i]); + Rprintf(_("Timing block %2d%s = %8.3f %8d\n"), i, (i>=17&&i<=19)?"(*)":" ", tblock[i], nblock[i]); } for (int i=0; i<=256; i++) { - if (stat[i]) Rprintf("stat[%03d]==%10zd\n", i, stat[i]); + if (stat[i]) Rprintf(_("stat[%03d]==%10zd\n"), i, stat[i]); } } #endif @@ -821,7 +821,7 @@ void radix_r(const int from, const int to, const int radix) { } else if (my_n<=256) { // if (getDTthreads()==1) - // Rprintf("insert clause: radix=%d, my_n=%d, from=%d, to=%d\n", radix, my_n, from, to); + // Rprintf(_("insert clause: radix=%d, my_n=%d, from=%d, to=%d\n"), radix, my_n, from, to); // insert sort with some twists: // i) detects if grouped; if sortType==0 can then skip // ii) keeps group appearance order at byte level to minimize movement @@ -933,7 +933,7 @@ void radix_r(const int from, const int to, const int radix) { return; } else if (my_n<=UINT16_MAX) { // UINT16_MAX==65535 (important not 65536) - // if (getDTthreads()==1) Rprintf("counting clause: radix=%d, my_n=%d\n", radix, my_n); + // if (getDTthreads()==1) Rprintf(_("counting clause: radix=%d, my_n=%d\n"), radix, my_n); uint16_t my_counts[256] = {0}; // Needs to be all-0 on entry. This ={0} initialization should be fast as it's on stack. Otherwise, we have to manage // a stack of counts anyway since this is called recursively and these counts are needed to make the recursive calls. // This thread-private stack alloc has no chance of false sharing and gives omp and compiler best chance. diff --git a/src/fread.c b/src/fread.c index d46fe2f5aa..f18261f25d 100644 --- a/src/fread.c +++ b/src/fread.c @@ -146,10 +146,10 @@ bool freadCleanup(void) // may call freadCleanup(), thus resulting in an infinite loop. #ifdef WIN32 if (!UnmapViewOfFile(mmp)) - DTPRINT("System error %d unmapping view of file\n", GetLastError()); // # nocov + DTPRINT(_("System error %d unmapping view of file\n"), GetLastError()); // # nocov #else if (munmap(mmp, fileSize)) - DTPRINT("System errno %d unmapping file: %s\n", errno, strerror(errno)); // # nocov + DTPRINT(_("System errno %d unmapping file: %s\n"), errno, strerror(errno)); // # nocov #endif mmp = NULL; } @@ -439,8 +439,8 @@ void copyFile(size_t fileSize, const char *msg, bool verbose) // only called in sof = mmp_copy; eof = (char *)mmp_copy + fileSize; tt = wallclock()-tt; - if (tt>0.5) DTPRINT("Avoidable %.3f seconds. %s time to copy.\n", tt, msg); // not warning as that could feasibly cause CRAN tests to fail, say, if test machine is heavily loaded - if (verbose) DTPRINT(" File copy in RAM took %.3f seconds.\n", tt); + if (tt>0.5) DTPRINT(_("Avoidable %.3f seconds. %s time to copy.\n"), tt, msg); // not warning as that could feasibly cause CRAN tests to fail, say, if test machine is heavily loaded + if (verbose) DTPRINT(_(" File copy in RAM took %.3f seconds.\n"), tt); } @@ -1031,7 +1031,7 @@ static int detect_types( const char **pch, int8_t type[], int ncol, bool *bumped if (eol(&ch)) return 0; // empty line int field=0; while (field>(%d)", strlim(ch,20), quoteRule); + // DTPRINT(_("<<%s>>(%d)"), strlim(ch,20), quoteRule); skip_white(&ch); const char *fieldStart = ch; while (tmpType[field]<=CT_STRING) { @@ -1095,14 +1095,14 @@ int freadMain(freadMainArgs _args) { DTWARN("Previous fread() session was not cleaned up properly. Cleaned up ok at the beginning of this fread() call.\n"); // # nocov } - if (verbose) DTPRINT("[01] Check arguments\n"); + if (verbose) DTPRINT(_("[01] Check arguments\n")); int nth = args.nth; { int maxth = omp_get_max_threads(); if (nth > maxth) nth = maxth; if (nth <= 0) nth += maxth; if (nth <= 0) nth = 1; - if (verbose) DTPRINT(" Using %d threads (omp_get_max_threads()=%d, nth=%d)\n", nth, maxth, args.nth); + if (verbose) DTPRINT(_(" Using %d threads (omp_get_max_threads()=%d, nth=%d)\n"), nth, maxth, args.nth); } uint64_t ui64 = NA_FLOAT64_I64; @@ -1143,21 +1143,21 @@ int freadMain(freadMainArgs _args) { disabled_parsers[CT_BOOL8_N] = !args.logical01; if (verbose) { if (*NAstrings == NULL) { - DTPRINT(" No NAstrings provided.\n"); + DTPRINT(_(" No NAstrings provided.\n")); } else { - DTPRINT(" NAstrings = ["); + DTPRINT(_(" NAstrings = [")); const char * const* s = NAstrings; while (*s++) DTPRINT(*s? "<<%s>>, " : "<<%s>>", s[-1]); - DTPRINT("]\n"); + DTPRINT(_("]\n")); if (any_number_like_NAstrings) - DTPRINT(" One or more of the NAstrings looks like a number.\n"); + DTPRINT(_(" One or more of the NAstrings looks like a number.\n")); else - DTPRINT(" None of the NAstrings look like numbers.\n"); + DTPRINT(_(" None of the NAstrings look like numbers.\n")); } - if (args.skipNrow >= 0) DTPRINT(" skip num lines = %llu\n", (llu)args.skipNrow); - if (args.skipString) DTPRINT(" skip to string = <<%s>>\n", args.skipString); - DTPRINT(" show progress = %d\n", args.showProgress); - DTPRINT(" 0/1 column will be read as %s\n", args.logical01? "boolean" : "integer"); + if (args.skipNrow >= 0) DTPRINT(_(" skip num lines = %llu\n"), (llu)args.skipNrow); + if (args.skipString) DTPRINT(_(" skip to string = <<%s>>\n"), args.skipString); + DTPRINT(_(" show progress = %d\n"), args.showProgress); + DTPRINT(_(" 0/1 column will be read as %s\n"), args.logical01? "boolean" : "integer"); } stripWhite = args.stripWhite; @@ -1185,17 +1185,17 @@ int freadMain(freadMainArgs _args) { //********************************************************************************************* double tMap; // moment when memory-map step has finished { - if (verbose) DTPRINT("[02] Opening the file\n"); + if (verbose) DTPRINT(_("[02] Opening the file\n")); mmp = NULL; if (args.input) { - if (verbose) DTPRINT(" `input` argument is provided rather than a file name, interpreting as raw text to read\n"); + if (verbose) DTPRINT(_(" `input` argument is provided rather than a file name, interpreting as raw text to read\n")); sof = args.input; fileSize = strlen(sof); eof = sof+fileSize; if (*eof!='\0') STOP("Internal error: last byte of character input isn't \\0"); // # nocov } else if (args.filename) { - if (verbose) DTPRINT(" Opening file %s\n", args.filename); + if (verbose) DTPRINT(_(" Opening file %s\n"), args.filename); const char* fnam = args.filename; #ifndef WIN32 int fd = open(fnam, O_RDONLY); @@ -1207,7 +1207,7 @@ int freadMain(freadMainArgs _args) { } fileSize = (size_t) stat_buf.st_size; if (fileSize == 0) {close(fd); STOP("File is empty: %s", fnam);} - if (verbose) DTPRINT(" File opened, size = %s.\n", filesize_to_str(fileSize)); + if (verbose) DTPRINT(_(" File opened, size = %s.\n"), filesize_to_str(fileSize)); // No MAP_POPULATE for faster nrows=10 and to make possible earlier progress bar in row count stage // Mac doesn't appear to support MAP_POPULATE anyway (failed on CRAN when I tried). @@ -1235,7 +1235,7 @@ int freadMain(freadMainArgs _args) { if (GetFileSizeEx(hFile,&liFileSize)==0) { CloseHandle(hFile); STOP("GetFileSizeEx failed (returned 0) on file: %s", fnam); } fileSize = (size_t)liFileSize.QuadPart; if (fileSize<=0) { CloseHandle(hFile); STOP("File is empty: %s", fnam); } - if (verbose) DTPRINT(" File opened, size = %s.\n", filesize_to_str(fileSize)); + if (verbose) DTPRINT(_(" File opened, size = %s.\n"), filesize_to_str(fileSize)); HANDLE hMap=CreateFileMapping(hFile, NULL, PAGE_WRITECOPY, 0, 0, NULL); if (hMap==NULL) { CloseHandle(hFile); STOP("This is Windows, CreateFileMapping returned error %d for file %s", GetLastError(), fnam); } mmp = MapViewOfFile(hMap,FILE_MAP_COPY,0,0,fileSize); // fileSize must be <= hilo passed to CreateFileMapping above. @@ -1248,7 +1248,7 @@ int freadMain(freadMainArgs _args) { nbit<=32 ? "Please upgrade to 64bit" : "There is probably not enough contiguous virtual memory available"); // # nocov } sof = (const char*) mmp; - if (verbose) DTPRINT(" Memory mapped ok\n"); + if (verbose) DTPRINT(_(" Memory mapped ok\n")); } else { STOP("Internal error: Neither `input` nor `filename` are given, nothing to read."); // # nocov } @@ -1267,11 +1267,11 @@ int freadMain(freadMainArgs _args) { // See: issues #1087, #1465 and #1612 //********************************************************************************************* { - if (verbose) DTPRINT("[03] Detect and skip BOM\n"); + if (verbose) DTPRINT(_("[03] Detect and skip BOM\n")); if (fileSize >= 3 && memcmp(sof, "\xEF\xBB\xBF", 3) == 0) { sof += 3; // ienc = CE_UTF8; - if (verbose) DTPRINT(" UTF-8 byte order mark EF BB BF found at the start of the file and skipped.\n"); + if (verbose) DTPRINT(_(" UTF-8 byte order mark EF BB BF found at the start of the file and skipped.\n")); } else if (fileSize >= 4 && memcmp(sof, "\x84\x31\x95\x33", 4) == 0) { sof += 4; @@ -1284,7 +1284,7 @@ int freadMain(freadMainArgs _args) { if (eof>sof && (eof[-1]=='\x1A' || eof[-1]=='\0')) { char c = eof[-1]; while (eof>sof && eof[-1]==c) eof--; - if (verbose) DTPRINT(" Last byte(s) of input found to be %s and removed.\n", + if (verbose) DTPRINT(_(" Last byte(s) of input found to be %s and removed.\n"), c ? "0x1A (Ctrl+Z)" : "0x00 (NUL)"); } if (eof<=sof) STOP("Input is empty or only contains BOM or terminal control characters"); @@ -1294,7 +1294,7 @@ int freadMain(freadMainArgs _args) { //********************************************************************************************* // [4] Terminate mmap with \0 //********************************************************************************************* - if (verbose) DTPRINT("[04] Arrange mmap to be \\0 terminated\n"); + if (verbose) DTPRINT(_("[04] Arrange mmap to be \\0 terminated\n")); // First, set 'eol_one_r' for use by eol() to know if \r-only line ending is allowed, #2371 ch = sof; @@ -1326,14 +1326,14 @@ int freadMain(freadMainArgs _args) { if (!lastEOLreplaced) { // very unusual branch because properly formed csv will have final eol if (fileSize%4096!=0) { - if (verbose) DTPRINT(" File ends abruptly with '%c'. Final end-of-line is missing. Using cow page to write 0 to the last byte.\n", eof[-1]); + if (verbose) DTPRINT(_(" File ends abruptly with '%c'. Final end-of-line is missing. Using cow page to write 0 to the last byte.\n"), eof[-1]); // We could do this routinely (i.e. when there is a final newline too) but we desire to run all tests through the harder // branch above that replaces the final newline with \0 to test that logic (e.g. test 893 which causes a type bump in the last // field) since we rely on that logic to avoid the copy below when fileSize$4096==0 but there is a final eol ok. // TODO: portable way to discover relevant page size. 4096 is lowest common denominator, though, and should suffice. } else { const char *msg = "This file is very unusual: it ends abruptly without a final newline, and also its size is a multiple of 4096 bytes. Please properly end the last row with a newline using for example 'echo >> file' to avoid this "; - if (verbose) DTPRINT(" File ends abruptly with '%c'. Copying file in RAM. %s copy.\n", eof[-1], msg); + if (verbose) DTPRINT(_(" File ends abruptly with '%c'. Copying file in RAM. %s copy.\n"), eof[-1], msg); // In future, we may discover a way to mmap fileSize+1 on all OS when fileSize%4096==0, reliably. If and when, this clause can be updated with no code impact elsewhere. copyFile(fileSize, msg, verbose); } @@ -1367,7 +1367,7 @@ int freadMain(freadMainArgs _args) { int row1line = 1; // The line number where the data starts. Normally row 1 is column names and row1line ends up == 2. { ch = pos; - if (verbose) DTPRINT("[05] Skipping initial rows if needed\n"); + if (verbose) DTPRINT(_("[05] Skipping initial rows if needed\n")); // line is for error and warning messages so considers raw \n whether inside quoted fields or not, just // like wc -l, head -n and tail -n @@ -1379,7 +1379,7 @@ int freadMain(freadMainArgs _args) { pos = ch; ch = sof; while (ch sof && verbose) DTPRINT(" Skipped to line %llu in the file", (llu)row1line); + if (ch > sof && verbose) DTPRINT(_(" Skipped to line %llu in the file"), (llu)row1line); if (ch>=eof) STOP("skip=%llu but the input only has %llu line%s", (llu)args.skipNrow, (llu)row1line, row1line>1?"s":""); pos = ch; } @@ -1404,8 +1404,8 @@ int freadMain(freadMainArgs _args) { } if (ch>=eof) STOP("Input is either empty, fully whitespace, or skip has been set after the last non-whitespace."); if (verbose) { - if (lineStart>ch) DTPRINT(" Moved forward to first non-blank line (%d)\n", row1line); - DTPRINT(" Positioned on line %d starting: <<%s>>\n", row1line, strlim(lineStart, 30)); + if (lineStart>ch) DTPRINT(_(" Moved forward to first non-blank line (%d)\n"), row1line); + DTPRINT(_(" Positioned on line %d starting: <<%s>>\n"), row1line, strlim(lineStart, 30)); } ch = pos = lineStart; } @@ -1423,11 +1423,11 @@ int freadMain(freadMainArgs _args) { const char *prevStart = NULL; // the start of the non-empty line before the first not-ignored row (for warning message later, or taking as column names) int jumpLines = (int)umin(100,nrowLimit); // how many lines from each jump point to use. If nrowLimit is supplied, nJumps is later set to 1 as well. { - if (verbose) DTPRINT("[06] Detect separator, quoting rule, and ncolumns\n"); + if (verbose) DTPRINT(_("[06] Detect separator, quoting rule, and ncolumns\n")); if (args.sep == '\n') { // '\n' because '\0' is taken already to mean 'auto' // unusual - if (verbose) DTPRINT(" sep='\\n' passed in meaning read lines as single character column\n"); + if (verbose) DTPRINT(_(" sep='\\n' passed in meaning read lines as single character column\n")); sep = 127; // ASCII DEL: a character different from \r, \n and \0 that isn't in the data whiteChar = 0; quoteRule = 3; // Ignore quoting @@ -1446,14 +1446,14 @@ int freadMain(freadMainArgs _args) { // seps[] not *seps for writeability (http://stackoverflow.com/a/164258/403310) char topSep=127; // which sep 'wins' top place (see top* below). By default 127 (ascii del) means no sep i.e. single-column input (1 field) if (args.sep == '\0') { - if (verbose) DTPRINT(" Detecting sep automatically ...\n"); + if (verbose) DTPRINT(_(" Detecting sep automatically ...\n")); nseps = (int) strlen(seps); } else { seps[0] = args.sep; seps[1] = '\0'; nseps = 1; //topSep = args.sep; - if (verbose) DTPRINT(" Using supplied sep '%s'\n", args.sep=='\t' ? "\\t" : seps); + if (verbose) DTPRINT(_(" Using supplied sep '%s'\n"), args.sep=='\t' ? "\\t" : seps); } int topNumLines=0; // the most number of lines with the same number of fields, so far int topNumFields=1; // how many fields that was, to resolve ties @@ -1468,7 +1468,7 @@ int freadMain(freadMainArgs _args) { sep = seps[s]; whiteChar = (sep==' ' ? '\t' : (sep=='\t' ? ' ' : 0)); // 0 means both ' ' and '\t' to be skipped ch = pos; - // if (verbose) DTPRINT(" Trying sep='%c' with quoteRule %d ...\n", sep, quoteRule); + // if (verbose) DTPRINT(_(" Trying sep='%c' with quoteRule %d ...\n"), sep, quoteRule); if (fill) { if (quoteRule>1 && quote) continue; // turn off self-healing quote rule when filling @@ -1487,7 +1487,7 @@ int freadMain(freadMainArgs _args) { firstJumpEnd = ch; // to know how many bytes jump 0 is, for nrow estimate later (a less-good estimate when fill=true since line lengths vary more) if (verbose) { DTPRINT((unsigned)sep<32 ? " sep=%#02x" : " sep='%c'", sep); - DTPRINT(" with %d fields using quote rule %d\n", topNumFields, quoteRule); + DTPRINT(_(" with %d fields using quote rule %d\n"), topNumFields, quoteRule); } } } else { @@ -1537,14 +1537,14 @@ int freadMain(freadMainArgs _args) { if (topSkip<0) topSkip=0; // inelegant but will do for now to pass single row input such as test 890 if (verbose) { DTPRINT((unsigned)sep<32 ? " sep=%#02x" : " sep='%c'", sep); - DTPRINT(" with %d lines of %d fields using quote rule %d\n", topNumLines, topNumFields, topQuoteRule); + DTPRINT(_(" with %d lines of %d fields using quote rule %d\n"), topNumLines, topNumFields, topQuoteRule); } } } } } if (!firstJumpEnd) { - if (verbose) DTPRINT(" No sep and quote rule found a block of 2x2 or greater. Single column input.\n"); + if (verbose) DTPRINT(_(" No sep and quote rule found a block of 2x2 or greater. Single column input.\n")); topNumFields = 1; ASSERT(topSep==127, "Single column input has topSep=%d", topSep); sep = topSep; @@ -1586,24 +1586,24 @@ int freadMain(freadMainArgs _args) { ch = pos; // move back to start of line since countfields() moved to next if (!fill && tt!=ncol) STOP("Internal error: first line has field count %d but expecting %d", tt, ncol); // # nocov if (verbose) { - DTPRINT(" Detected %d columns on line %d. This line is either column " + DTPRINT(_(" Detected %d columns on line %d. This line is either column ") "names or first data row. Line starts as: <<%s>>\n", tt, row1line, strlim(pos, 30)); - DTPRINT(" Quote rule picked = %d\n", quoteRule); - DTPRINT(" fill=%s and the most number of columns found is %d\n", fill?"true":"false", ncol); + DTPRINT(_(" Quote rule picked = %d\n"), quoteRule); + DTPRINT(_(" fill=%s and the most number of columns found is %d\n"), fill?"true":"false", ncol); } if (ncol==1 && lastEOLreplaced && (eof[-1]=='\n' || eof[-1]=='\r')) { // Multiple newlines at the end are significant in the case of 1-column files only (multiple NA at the end) if (fileSize%4096==0) { const char *msg = "This file is very unusual: it's one single column, ends with 2 or more end-of-line (representing several NA at the end), and is a multiple of 4096, too."; - if (verbose) DTPRINT(" Copying file in RAM. %s\n", msg); + if (verbose) DTPRINT(_(" Copying file in RAM. %s\n"), msg); ASSERT(mmp_copy==NULL, "Internal error: mmp has already been copied due to abrupt non-eol ending, so it does not end with 2 or more eol.", 1/*dummy arg for macro*/); // #nocov copyFile(fileSize, msg, verbose); pos = sof + (pos-(const char *)mmp); firstJumpEnd = sof + (firstJumpEnd-(const char *)mmp); } else { - if (verbose) DTPRINT(" 1-column file ends with 2 or more end-of-line. Restoring last eol using extra byte in cow page.\n"); + if (verbose) DTPRINT(_(" 1-column file ends with 2 or more end-of-line. Restoring last eol using extra byte in cow page.\n")); eof++; } *_const_cast(eof-1) = eol_one_r ? '\r' : '\n'; @@ -1622,8 +1622,8 @@ int freadMain(freadMainArgs _args) { double meanLineLen=0.0; // Average length (in bytes) of a single line in the input file size_t bytesRead=0; // Bytes in the data section (i.e. excluding column names, header and footer, if any) { - if (verbose) DTPRINT("[07] Detect column types, good nrow estimate and whether first row is column names\n"); - if (verbose && args.header!=NA_BOOL8) DTPRINT(" 'header' changed by user from 'auto' to %s\n", args.header?"true":"false"); + if (verbose) DTPRINT(_("[07] Detect column types, good nrow estimate and whether first row is column names\n")); + if (verbose && args.header!=NA_BOOL8) DTPRINT(_(" 'header' changed by user from 'auto' to %s\n"), args.header?"true":"false"); type = (int8_t *)malloc((size_t)ncol * sizeof(int8_t)); tmpType = (int8_t *)malloc((size_t)ncol * sizeof(int8_t)); // used i) in sampling to not stop on errors when bad jump point and ii) when accepting user overrides @@ -1648,10 +1648,10 @@ int freadMain(freadMainArgs _args) { // *2 to get a good spacing. We don't want overlaps resulting in double counting. } if (verbose) { - DTPRINT(" Number of sampling jump points = %d because ", nJumps); - if (nrowLimit1 && !fill) || (!eol(&ch) && ch!=eof) ) { - if (verbose) DTPRINT(" A line with too-%s fields (%d/%d) was found on line %d of sample jump %d. %s\n", + if (verbose) DTPRINT(_(" A line with too-%s fields (%d/%d) was found on line %d of sample jump %d. %s\n"), thisNcol0 ? "Most likely this jump landed awkwardly so type bumps here will be skipped." : ""); bumped = false; if (jump==0) lastRowEnd=eof; // to prevent the end from being tested; e.g. a short file with blank line within first 100 like test 976 @@ -1716,7 +1716,7 @@ int freadMain(freadMainArgs _args) { memcpy(type, tmpType, (size_t)ncol); } if (verbose && (bumped || jump==0 || jump==nJumps-1)) { - DTPRINT(" Type codes (jump %03d) : %s Quote rule %d\n", jump, typesAsString(ncol), quoteRule); + DTPRINT(_(" Type codes (jump %03d) : %s Quote rule %d\n"), jump, typesAsString(ncol), quoteRule); } } @@ -1729,7 +1729,7 @@ int freadMain(freadMainArgs _args) { if (tmpType[j]==CT_STRING && type[j] allocnrow) STOP("Internal error: sampleLines(%llu) > allocnrow(%llu)", (llu)sampleLines, (llu)allocnrow); // # nocov } } if (nrowLimit < allocnrow) { - if (verbose) DTPRINT(" Alloc limited to lower nrows=%llu passed in.\n", (llu)nrowLimit); + if (verbose) DTPRINT(_(" Alloc limited to lower nrows=%llu passed in.\n"), (llu)nrowLimit); estnrow = allocnrow = nrowLimit; } } @@ -1841,7 +1841,7 @@ int freadMain(freadMainArgs _args) { double tLayout; // Timer for assigning column names const char *colNamesAnchor = pos; { - if (verbose) DTPRINT("[08] Assign column names\n"); + if (verbose) DTPRINT(_("[08] Assign column names\n")); ch = pos; // back to start of first row (column names if header==true) @@ -1889,11 +1889,11 @@ int freadMain(freadMainArgs _args) { size_t rowSize4; // Total bytesize of all fields having sizeof==4 size_t rowSize8; // Total bytesize of all fields having sizeof==8 { - if (verbose) DTPRINT("[09] Apply user overrides on column types\n"); + if (verbose) DTPRINT(_("[09] Apply user overrides on column types\n")); ch = pos; memcpy(tmpType, type, (size_t)ncol) ; if (!userOverride(type, colNames, colNamesAnchor, ncol)) { // colNames must not be changed but type[] can be - if (verbose) DTPRINT(" Cancelled by user: userOverride() returned false."); // # nocov + if (verbose) DTPRINT(_(" Cancelled by user: userOverride() returned false.")); // # nocov freadCleanup(); // # nocov return 1; // # nocov } @@ -1925,7 +1925,7 @@ int freadMain(freadMainArgs _args) { rowSize8 += (size[j] & 8); if (type[j] == CT_STRING) nStringCols++; else nNonStringCols++; } - if (verbose) DTPRINT(" After %d type and %d drop user overrides : %s\n", nUserBumped, ndrop, typesAsString(ncol)); + if (verbose) DTPRINT(_(" After %d type and %d drop user overrides : %s\n"), nUserBumped, ndrop, typesAsString(ncol)); tColType = wallclock(); } @@ -1933,8 +1933,8 @@ int freadMain(freadMainArgs _args) { // [10] Allocate the result columns //********************************************************************************************* if (verbose) { - DTPRINT("[10] Allocate memory for the datatable\n"); - DTPRINT(" Allocating %d column slots (%d - %d dropped) with %llu rows\n", + DTPRINT(_("[10] Allocate memory for the datatable\n")); + DTPRINT(_(" Allocating %d column slots (%d - %d dropped) with %llu rows\n"), ncol-ndrop, ncol, ndrop, (llu)allocnrow); } size_t DTbytes = allocateDT(type, size, ncol, ndrop, allocnrow); @@ -1991,10 +1991,10 @@ int freadMain(freadMainArgs _args) { if (initialBuffRows > INT32_MAX) STOP("Buffer size %lld is too large\n", initialBuffRows); nth = imin(nJumps, nth); - if (verbose) DTPRINT("[11] Read the data\n"); + if (verbose) DTPRINT(_("[11] Read the data\n")); read: // we'll return here to reread any columns with out-of-sample type exceptions, or dirty jumps restartTeam = false; - if (verbose) DTPRINT(" jumps=[%d..%d), chunk_size=%llu, total_size=%llu\n", + if (verbose) DTPRINT(_(" jumps=[%d..%d), chunk_size=%llu, total_size=%llu\n"), jump0, nJumps, (llu)chunkBytes, (llu)(eof-pos)); ASSERT(allocnrow <= nrowLimit, "allocnrow(%llu) <= nrowLimit(%llu)", (llu)allocnrow, (llu)nrowLimit); #pragma omp parallel num_threads(nth) @@ -2111,7 +2111,7 @@ int freadMain(freadMainArgs _args) { if (sep!=' ' && !any_number_like_NAstrings) { // TODO: can this 'if' be dropped somehow? Can numeric NAstrings be dealt with afterwards in one go as numeric comparison? // Try most common and fastest branch first: no whitespace, no quoted numeric, ",," means NA while (j < ncol) { - // DTPRINT("Field %d: '%.10s' as type %d (tch=%p)\n", j+1, tch, type[j], tch); + // DTPRINT(_("Field %d: '%.10s' as type %d (tch=%p)\n"), j+1, tch, type[j], tch); fieldStart = tch; int8_t thisType = type[j]; // fetch shared type once. Cannot read half-written byte is one reason type's type is single byte to avoid atomic read here. int8_t thisSize = size[j]; @@ -2336,14 +2336,14 @@ int freadMain(freadMainArgs _args) { if (extraAllocRows) { allocnrow += extraAllocRows; if (allocnrow > nrowLimit) allocnrow = nrowLimit; - if (verbose) DTPRINT(" Too few rows allocated. Allocating additional %llu rows (now nrows=%llu) and continue reading from jump %d\n", + if (verbose) DTPRINT(_(" Too few rows allocated. Allocating additional %llu rows (now nrows=%llu) and continue reading from jump %d\n"), (llu)extraAllocRows, (llu)allocnrow, jump0); allocateDT(type, size, ncol, ncol - nStringCols - nNonStringCols, allocnrow); extraAllocRows = 0; goto read; } if (restartTeam) { - if (verbose) DTPRINT(" Restarting team from jump %d. nSwept==%d quoteRule==%d\n", jump0, nSwept, quoteRule); + if (verbose) DTPRINT(_(" Restarting team from jump %d. nSwept==%d quoteRule==%d\n"), jump0, nSwept, quoteRule); ASSERT(nSwept>0 || quoteRuleBumpedCh!=NULL, "Internal error: team restart but nSwept==%d and quoteRuleBumpedCh==%p", nSwept, quoteRuleBumpedCh); // # nocov goto read; } @@ -2363,7 +2363,7 @@ int freadMain(freadMainArgs _args) { for (int i=0; idbl_v[i] = fill; } @@ -432,7 +432,7 @@ void frollapply(double *x, int64_t nx, double *w, int k, ans_t *ans, int align, } else { if (teval0==INTSXP || teval0==LGLSXP) { if (verbose) - Rprintf("%s: results from provided FUN are not of type double, coercion from integer or logical will be applied on each iteration\n", __func__); + Rprintf(_("%s: results from provided FUN are not of type double, coercion from integer or logical will be applied on each iteration\n"), __func__); ans->dbl_v[k-1] = REAL(coerceVector(eval0, REALSXP))[0]; } else { error(_("%s: results from provided FUN are not of type double"), __func__); @@ -457,12 +457,12 @@ void frollapply(double *x, int64_t nx, double *w, int k, ans_t *ans, int align, if (ans->status < 3 && align < 1) { int k_ = align==-1 ? k-1 : floor(k/2); if (verbose) - Rprintf("%s: align %d, shift answer by %d\n", __func__, align, -k_); + Rprintf(_("%s: align %d, shift answer by %d\n"), __func__, align, -k_); memmove((char *)ans->dbl_v, (char *)ans->dbl_v + (k_*sizeof(double)), (nx-k_)*sizeof(double)); for (int64_t i=nx-k_; idbl_v[i] = fill; } } if (verbose) - Rprintf("%s: took %.3fs\n", __func__, omp_get_wtime()-tic); + Rprintf(_("%s: took %.3fs\n"), __func__, omp_get_wtime()-tic); } diff --git a/src/frollR.c b/src/frollR.c index 5985f4a46f..3cc5bbcf31 100644 --- a/src/frollR.c +++ b/src/frollR.c @@ -123,7 +123,7 @@ SEXP frollfunR(SEXP fun, SEXP obj, SEXP k, SEXP fill, SEXP algo, SEXP align, SEX SEXP ans = PROTECT(allocVector(VECSXP, nk * nx)); protecti++; // allocate list to keep results if (verbose) - Rprintf("%s: allocating memory for results %dx%d\n", __func__, nx, nk); + Rprintf(_("%s: allocating memory for results %dx%d\n"), __func__, nx, nk); ans_t *dans = (ans_t *)R_alloc(nx*nk, sizeof(ans_t)); // answer columns as array of ans_t struct double* dx[nx]; // pointers to source columns uint64_t inx[nx]; // to not recalculate `length(x[[i]])` we store it in extra array @@ -195,9 +195,9 @@ SEXP frollfunR(SEXP fun, SEXP obj, SEXP k, SEXP fill, SEXP algo, SEXP align, SEX if (verbose) { if (ialgo==0) - Rprintf("%s: %d column(s) and %d window(s), if product > 1 then entering parallel execution\n", __func__, nx, nk); + Rprintf(_("%s: %d column(s) and %d window(s), if product > 1 then entering parallel execution\n"), __func__, nx, nk); else if (ialgo==1) - Rprintf("%s: %d column(s) and %d window(s), not entering parallel execution here because algo='exact' will compute results in parallel\n", __func__, nx, nk); + Rprintf(_("%s: %d column(s) and %d window(s), not entering parallel execution here because algo='exact' will compute results in parallel\n"), __func__, nx, nk); } #pragma omp parallel for if (ialgo==0 && nx*nk>1) schedule(auto) collapse(2) num_threads(getDTthreads()) for (R_len_t i=0; imax) max=maxs[i]; } - if (verbose) Rprintf("Range = [%g,%g]\n", min, max); + if (verbose) Rprintf(_("Range = [%g,%g]\n"), min, max); if (min < 0.0) error(_("Cannot yet handle negatives.")); // TODO: -0ULL should allow negatives // avoid twiddle function call as expensive in recent tests (0.34 vs 2.7) @@ -167,14 +167,14 @@ SEXP fsort(SEXP x, SEXP verboseArg) { int MSBNbits = maxBit > 15 ? 16 : maxBit+1; // how many bits make up the MSB int shift = maxBit + 1 - MSBNbits; // the right shift to leave the MSB bits remaining size_t MSBsize = 1LL< 65,536) - if (verbose) Rprintf("maxBit=%d; MSBNbits=%d; shift=%d; MSBsize=%d\n", maxBit, MSBNbits, shift, MSBsize); + if (verbose) Rprintf(_("maxBit=%d; MSBNbits=%d; shift=%d; MSBsize=%d\n"), maxBit, MSBNbits, shift, MSBsize); R_xlen_t *counts = calloc(nBatch*MSBsize, sizeof(R_xlen_t)); if (counts==NULL) error(_("Unable to allocate working memory")); // provided MSBsize>=9, each batch is a multiple of at least one 4k page, so no page overlap // TODO: change all calloc, malloc and free to Calloc and Free to be robust to error() and catch ooms. - if (verbose) Rprintf("counts is %dMB (%d pages per nBatch=%d, batchSize=%lld, lastBatchSize=%lld)\n", + if (verbose) Rprintf(_("counts is %dMB (%d pages per nBatch=%d, batchSize=%lld, lastBatchSize=%lld)\n"), nBatch*MSBsize*sizeof(R_xlen_t)/(1024*1024), nBatch*MSBsize*sizeof(R_xlen_t)/(4*1024*nBatch), nBatch, batchSize, lastBatchSize); t[3] = wallclock(); @@ -243,12 +243,12 @@ SEXP fsort(SEXP x, SEXP verboseArg) { // TODO: time this qsort but likely insignificant. if (verbose) { - Rprintf("Top 5 MSB counts: "); for(int i=0; i<5; i++) Rprintf("%lld ", msbCounts[order[i]]); Rprintf("\n"); - Rprintf("Reduced MSBsize from %d to ", MSBsize); + Rprintf(_("Top 5 MSB counts: ")); for(int i=0; i<5; i++) Rprintf(_("%lld "), msbCounts[order[i]]); Rprintf(_("\n")); + Rprintf(_("Reduced MSBsize from %d to "), MSBsize); } while (MSBsize>0 && msbCounts[order[MSBsize-1]] < 2) MSBsize--; if (verbose) { - Rprintf("%d by excluding 0 and 1 counts\n", MSBsize); + Rprintf(_("%d by excluding 0 and 1 counts\n"), MSBsize); } t[6] = wallclock(); @@ -305,7 +305,7 @@ SEXP fsort(SEXP x, SEXP verboseArg) { double tot = t[7]-t[0]; if (verbose) for (int i=1; i<=7; i++) { - Rprintf("%d: %.3f (%4.1f%%)\n", i, t[i]-t[i-1], 100.*(t[i]-t[i-1])/tot); + Rprintf(_("%d: %.3f (%4.1f%%)\n"), i, t[i]-t[i-1], 100.*(t[i]-t[i-1])/tot); } UNPROTECT(nprotect); diff --git a/src/fwrite.c b/src/fwrite.c index 0ed9f2184a..af7ad3dd31 100644 --- a/src/fwrite.c +++ b/src/fwrite.c @@ -227,7 +227,7 @@ void writeFloat64(double *col, int64_t row, char **pch) uint64_t l = y * SIZE_SF; // low magnitude mult 10^NUM_SF // l now contains NUM_SF+1 digits as integer where repeated /10 below is accurate - // if (verbose) Rprintf("\nTRACE: acc=%.20Le ; y=%.20Le ; l=%llu ; e=%d ", acc, y, l, exp); + // if (verbose) Rprintf(_("\nTRACE: acc=%.20Le ; y=%.20Le ; l=%llu ; e=%d "), acc, y, l, exp); if (l%10 >= 5) l+=10; // use the last digit to round l /= 10; @@ -610,15 +610,15 @@ void fwriteMain(fwriteMainArgs args) if (eolLen<=0) STOP("eol must be 1 or more bytes (usually either \\n or \\r\\n) but is length %d", eolLen); if (args.verbose) { - DTPRINT("Column writers: "); + DTPRINT(_("Column writers: ")); if (args.ncol<=50) { - for (int j=0; j= 2) { - if (args.verbose && !hasPrinted) DTPRINT("\n"); - DTPRINT("\rWritten %.1f%% of %d rows in %d secs using %d thread%s. " + if (args.verbose && !hasPrinted) DTPRINT(_("\n")); + DTPRINT(_("\rWritten %.1f%% of %d rows in %d secs using %d thread%s. ") "maxBuffUsed=%d%%. ETA %d secs. ", (100.0*end)/args.nrow, args.nrow, (int)(now-startTime), nth, nth==1?"":"s", maxBuffUsedPC, ETA); @@ -929,10 +929,10 @@ void fwriteMain(fwriteMainArgs args) if (hasPrinted) { // # nocov start if (!failed) { // clear the progress meter - DTPRINT("\r " + DTPRINT(_("\r ") " \r"); } else { // don't clear any potentially helpful output before error - DTPRINT("\n"); + DTPRINT(_("\n")); } // # nocov end } diff --git a/src/fwriteR.c b/src/fwriteR.c index c3644dc048..2170ddcdbb 100644 --- a/src/fwriteR.c +++ b/src/fwriteR.c @@ -259,11 +259,11 @@ SEXP fwriteR( args.dec = *CHAR(STRING_ELT(dec_Arg,0)); if (!firstListColumn) { - if (args.verbose) Rprintf("No list columns are present. Setting sep2='' otherwise quote='auto' would quote fields containing sep2.\n"); + if (args.verbose) Rprintf(_("No list columns are present. Setting sep2='' otherwise quote='auto' would quote fields containing sep2.\n")); args.sep2 = sep2 = '\0'; } else { if (args.verbose) { - Rprintf("If quote='auto', fields will be quoted if the field contains either sep ('%c') or sep2 ('%c') because column %d is a list column.\n", + Rprintf(_("If quote='auto', fields will be quoted if the field contains either sep ('%c') or sep2 ('%c') because column %d is a list column.\n"), args.sep, args.sep2, firstListColumn ); } if (args.dec==args.sep || args.dec==args.sep2 || args.sep==args.sep2) { diff --git a/src/gsumm.c b/src/gsumm.c index 3cd17d685d..685aafa977 100644 --- a/src/gsumm.c +++ b/src/gsumm.c @@ -95,7 +95,7 @@ SEXP gforce(SEXP env, SEXP jsub, SEXP o, SEXP f, SEXP l, SEXP irowsArg) { int *elem = grp + fp[g]-1; for (int j=0; j>shift) + 1; - //Rprintf("When assigning grp[o] = g, highSize=%d nb=%d shift=%d nBatch=%d\n", highSize, nb, shift, nBatch); + //Rprintf(_("When assigning grp[o] = g, highSize=%d nb=%d shift=%d nBatch=%d\n"), highSize, nb, shift, nBatch); int *counts = calloc(nBatch*highSize, sizeof(int)); // TODO: cache-line align and make highSize a multiple of 64 int *TMP = malloc(nrow*2*sizeof(int)); if (!counts || !TMP ) error(_("Internal error: Failed to allocate counts or TMP when assigning g in gforce")); @@ -137,7 +137,7 @@ SEXP gforce(SEXP env, SEXP jsub, SEXP o, SEXP f, SEXP l, SEXP irowsArg) { *p = my_g[i]; } } - //Rprintf("gforce assign TMP (o,g) pairs took %.3f\n", wallclock()-started); started=wallclock(); + //Rprintf(_("gforce assign TMP (o,g) pairs took %.3f\n"), wallclock()-started); started=wallclock(); #pragma omp parallel for num_threads(getDTthreads()) for (int h=0; h= ss[i] due to ordering from R-side // // if ee[i] >= ss[i+1], then there's overlap, pick largest of ee[i], ee[i+1] // while(++i < n && ee >= (new_ss = starts[i]-1)) { // new_ee = new_ss + len[i]-1; // ee = ee > new_ee ? ee : new_ee; // } - // // Rprintf("Moved to %d, start=%d, end=%d\n", i, ss, ee); + // // Rprintf(_("Moved to %d, start=%d, end=%d\n"), i, ss, ee); // for (j=ss; j<=ee; j++) ans[nxo ? xo[j]-1 : j] = 1; // } return (R_NilValue); diff --git a/src/nafill.c b/src/nafill.c index 6236504425..75b3e1356e 100644 --- a/src/nafill.c +++ b/src/nafill.c @@ -174,7 +174,7 @@ SEXP nafillR(SEXP obj, SEXP type, SEXP fill, SEXP inplace, SEXP cols, SEXP verbo ansMsg(vans, nx, bverbose, __func__); if (bverbose) - Rprintf("%s: parallel processing of %d column(s) took %.3fs\n", __func__, nx, toc-tic); + Rprintf(_("%s: parallel processing of %d column(s) took %.3fs\n"), __func__, nx, toc-tic); UNPROTECT(protecti); if (binplace) { diff --git a/src/openmp-utils.c b/src/openmp-utils.c index 29d643f5a4..f1d732459f 100644 --- a/src/openmp-utils.c +++ b/src/openmp-utils.c @@ -67,20 +67,20 @@ SEXP getDTthreads_R(SEXP verbose) { if (!isLogical(verbose) || LENGTH(verbose)!=1 || INTEGER(verbose)[0]==NA_LOGICAL) error(_("'verbose' must be TRUE or FALSE")); if (LOGICAL(verbose)[0]) { #ifndef _OPENMP - Rprintf("This installation of data.table has not been compiled with OpenMP support.\n"); + Rprintf(_("This installation of data.table has not been compiled with OpenMP support.\n")); #endif // this output is captured, paste0(collapse="; ")'d, and placed at the end of test.data.table() for display in the last 13 lines of CRAN check logs // it is also printed at the start of test.data.table() so that we can trace any Killed events on CRAN before the end is reached // this is printed verbatim (e.g. without using data.table to format the output) in case there is a problem even with simple data.table creation/printing - Rprintf(" omp_get_num_procs() %d\n", omp_get_num_procs()); - Rprintf(" R_DATATABLE_NUM_PROCS_PERCENT %s\n", mygetenv("R_DATATABLE_NUM_PROCS_PERCENT", "unset (default 50)")); - Rprintf(" R_DATATABLE_NUM_THREADS %s\n", mygetenv("R_DATATABLE_NUM_THREADS", "unset")); - Rprintf(" omp_get_thread_limit() %d\n", omp_get_thread_limit()); - Rprintf(" omp_get_max_threads() %d\n", omp_get_max_threads()); - Rprintf(" OMP_THREAD_LIMIT %s\n", mygetenv("OMP_THREAD_LIMIT", "unset")); // CRAN sets to 2 - Rprintf(" OMP_NUM_THREADS %s\n", mygetenv("OMP_NUM_THREADS", "unset")); - Rprintf(" RestoreAfterFork %s\n", RestoreAfterFork ? "true" : "false"); - Rprintf(" data.table is using %d threads. See ?setDTthreads.\n", getDTthreads()); + Rprintf(_(" omp_get_num_procs() %d\n"), omp_get_num_procs()); + Rprintf(_(" R_DATATABLE_NUM_PROCS_PERCENT %s\n"), mygetenv("R_DATATABLE_NUM_PROCS_PERCENT", "unset (default 50)")); + Rprintf(_(" R_DATATABLE_NUM_THREADS %s\n"), mygetenv("R_DATATABLE_NUM_THREADS", "unset")); + Rprintf(_(" omp_get_thread_limit() %d\n"), omp_get_thread_limit()); + Rprintf(_(" omp_get_max_threads() %d\n"), omp_get_max_threads()); + Rprintf(_(" OMP_THREAD_LIMIT %s\n"), mygetenv("OMP_THREAD_LIMIT", "unset")); // CRAN sets to 2 + Rprintf(_(" OMP_NUM_THREADS %s\n"), mygetenv("OMP_NUM_THREADS", "unset")); + Rprintf(_(" RestoreAfterFork %s\n"), RestoreAfterFork ? "true" : "false"); + Rprintf(_(" data.table is using %d threads. See ?setDTthreads.\n"), getDTthreads()); } return ScalarInteger(getDTthreads()); } diff --git a/src/rbindlist.c b/src/rbindlist.c index ee9bf56388..4b0d0e0f42 100644 --- a/src/rbindlist.c +++ b/src/rbindlist.c @@ -185,7 +185,7 @@ SEXP rbindlist(SEXP l, SEXP usenamesArg, SEXP fillArg, SEXP idcolArg) free(colMapRaw); // local scope in this branch to ensure can't be used below // to view map when debugging ... - // for (int i=0; i1?"s":""); + if (GetVerbose()) Rprintf(_("Found and copied %d column%s with a shared memory address\n"), nShared, nShared>1?"s":""); // GetVerbose() (slightly expensive call of all options) called here only when needed } } From 4d950a2c998d23067b038f2c42c260d3956af046 Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Wed, 16 Oct 2019 01:04:20 +0800 Subject: [PATCH 06/78] adding STOP messages --- src/fread.c | 80 +++++++++++++++++++++++++-------------------------- src/freadR.c | 42 +++++++++++++-------------- src/fwrite.c | 26 ++++++++--------- src/fwriteR.c | 2 +- 4 files changed, 75 insertions(+), 75 deletions(-) diff --git a/src/fread.c b/src/fread.c index f18261f25d..f84f87ff28 100644 --- a/src/fread.c +++ b/src/fread.c @@ -103,7 +103,7 @@ typedef struct FieldParseContext { static void Field(FieldParseContext *ctx); #define ASSERT(cond, msg, ...) \ - if (!(cond)) STOP("Internal error in line %d of fread.c, please report on data.table GitHub: " msg, __LINE__, __VA_ARGS__) // # nocov + if (!(cond)) STOP(_("Internal error in line %d of fread.c, please report on data.table GitHub: ") msg, __LINE__, __VA_ARGS__) // # nocov @@ -209,7 +209,7 @@ static char *typeLetter = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopq static char *typesAsString(int ncol) { int nLetters = strlen(typeLetter); - if (NUMTYPE>nLetters) STOP("Internal error: NUMTYPE(%d) > nLetters(%d)", NUMTYPE, nLetters); // # nocov + if (NUMTYPE>nLetters) STOP(_("Internal error: NUMTYPE(%d) > nLetters(%d)"), NUMTYPE, nLetters); // # nocov static char str[101]; int i=0; if (ncol<=100) { @@ -434,7 +434,7 @@ void copyFile(size_t fileSize, const char *msg, bool verbose) // only called in { double tt = wallclock(); mmp_copy = (char *)malloc((size_t)fileSize + 1/* extra \0 */); - if (!mmp_copy) STOP("Unable to allocate %s of contiguous virtual RAM. %s allocation.", filesize_to_str(fileSize), msg); + if (!mmp_copy) STOP(_("Unable to allocate %s of contiguous virtual RAM. %s allocation."), filesize_to_str(fileSize), msg); memcpy(mmp_copy, mmp, fileSize); sof = mmp_copy; eof = (char *)mmp_copy + fileSize; @@ -1110,7 +1110,7 @@ int freadMain(freadMainArgs _args) { int64_t nrowLimit = args.nrowLimit; NAstrings = args.NAstrings; - if (NAstrings==NULL) STOP("Internal error: NAstrings is itself NULL. When empty it should be pointer to NULL."); // # nocov + if (NAstrings==NULL) STOP(_("Internal error: NAstrings is itself NULL. When empty it should be pointer to NULL.")); // # nocov any_number_like_NAstrings = false; blank_is_a_NAstring = false; // if we know there are no nastrings which are numbers (like -999999) then in the number @@ -1128,12 +1128,12 @@ int freadMain(freadMainArgs _args) { const char *ch = *nastr; size_t nchar = strlen(ch); if (isspace(ch[0]) || isspace(ch[nchar-1])) - STOP("freadMain: NAstring <<%s>> has whitespace at the beginning or end", ch); + STOP(_("freadMain: NAstring <<%s>> has whitespace at the beginning or end"), ch); if (strcmp(ch,"T")==0 || strcmp(ch,"F")==0 || strcmp(ch,"TRUE")==0 || strcmp(ch,"FALSE")==0 || strcmp(ch,"True")==0 || strcmp(ch,"False")==0 || strcmp(ch,"1")==0 || strcmp(ch,"0")==0) - STOP("freadMain: NAstring <<%s>> is recognized as type boolean, this is not permitted.", ch); + STOP(_("freadMain: NAstring <<%s>> is recognized as type boolean, this is not permitted."), ch); char *end; errno = 0; strtod(ch, &end); // careful not to let "" get to here (see continue above) as strtod considers "" numeric @@ -1165,10 +1165,10 @@ int freadMain(freadMainArgs _args) { fill = args.fill; dec = args.dec; quote = args.quote; - if (args.sep == quote && quote!='\0') STOP("sep == quote ('%c') is not allowed", quote); - if (dec=='\0') STOP("dec='' not allowed. Should be '.' or ','"); - if (args.sep == dec) STOP("sep == dec ('%c') is not allowed", dec); - if (quote == dec) STOP("quote == dec ('%c') is not allowed", dec); + if (args.sep == quote && quote!='\0') STOP(_("sep == quote ('%c') is not allowed"), quote); + if (dec=='\0') STOP(_("dec='' not allowed. Should be '.' or ','")); + if (args.sep == dec) STOP(_("sep == dec ('%c') is not allowed"), dec); + if (quote == dec) STOP(_("quote == dec ('%c') is not allowed"), dec); // since quote=='\0' when user passed quote="", the logic in this file uses '*ch==quote && quote' otherwise // the ending \0 at eof could be treated as a quote (test xxx) @@ -1192,21 +1192,21 @@ int freadMain(freadMainArgs _args) { sof = args.input; fileSize = strlen(sof); eof = sof+fileSize; - if (*eof!='\0') STOP("Internal error: last byte of character input isn't \\0"); // # nocov + if (*eof!='\0') STOP(_("Internal error: last byte of character input isn't \\0")); // # nocov } else if (args.filename) { if (verbose) DTPRINT(_(" Opening file %s\n"), args.filename); const char* fnam = args.filename; #ifndef WIN32 int fd = open(fnam, O_RDONLY); - if (fd==-1) STOP("file not found: %s",fnam); + if (fd==-1) STOP(_("file not found: %s"),fnam); struct stat stat_buf; if (fstat(fd, &stat_buf) == -1) { close(fd); // # nocov - STOP("Opened file ok but couldn't obtain its size: %s", fnam); // # nocov + STOP(_("Opened file ok but couldn't obtain its size: %s"), fnam); // # nocov } fileSize = (size_t) stat_buf.st_size; - if (fileSize == 0) {close(fd); STOP("File is empty: %s", fnam);} + if (fileSize == 0) {close(fd); STOP(_("File is empty: %s"), fnam);} if (verbose) DTPRINT(_(" File opened, size = %s.\n"), filesize_to_str(fileSize)); // No MAP_POPULATE for faster nrows=10 and to make possible earlier progress bar in row count stage @@ -1224,33 +1224,33 @@ int freadMain(freadMainArgs _args) { hFile = CreateFile(fnam, GENERIC_READ, FILE_SHARE_READ|FILE_SHARE_WRITE, NULL, OPEN_EXISTING, 0, NULL); // FILE_SHARE_WRITE is required otherwise if the file is open in Excel, CreateFile fails. Should be ok now. if (hFile==INVALID_HANDLE_VALUE) { - if (GetLastError()==ERROR_FILE_NOT_FOUND) STOP("File not found: %s",fnam); + if (GetLastError()==ERROR_FILE_NOT_FOUND) STOP(_("File not found: %s"),fnam); if (attempts<4) Sleep(250); // 250ms } attempts++; // Looped retry to avoid ephemeral locks by system utilities as recommended here : http://support.microsoft.com/kb/316609 } - if (hFile==INVALID_HANDLE_VALUE) STOP("Unable to open file after %d attempts (error %d): %s", attempts, GetLastError(), fnam); + if (hFile==INVALID_HANDLE_VALUE) STOP(_("Unable to open file after %d attempts (error %d): %s"), attempts, GetLastError(), fnam); LARGE_INTEGER liFileSize; - if (GetFileSizeEx(hFile,&liFileSize)==0) { CloseHandle(hFile); STOP("GetFileSizeEx failed (returned 0) on file: %s", fnam); } + if (GetFileSizeEx(hFile,&liFileSize)==0) { CloseHandle(hFile); STOP(_("GetFileSizeEx failed (returned 0) on file: %s"), fnam); } fileSize = (size_t)liFileSize.QuadPart; - if (fileSize<=0) { CloseHandle(hFile); STOP("File is empty: %s", fnam); } + if (fileSize<=0) { CloseHandle(hFile); STOP(_("File is empty: %s"), fnam); } if (verbose) DTPRINT(_(" File opened, size = %s.\n"), filesize_to_str(fileSize)); HANDLE hMap=CreateFileMapping(hFile, NULL, PAGE_WRITECOPY, 0, 0, NULL); - if (hMap==NULL) { CloseHandle(hFile); STOP("This is Windows, CreateFileMapping returned error %d for file %s", GetLastError(), fnam); } + if (hMap==NULL) { CloseHandle(hFile); STOP(_("This is Windows, CreateFileMapping returned error %d for file %s"), GetLastError(), fnam); } mmp = MapViewOfFile(hMap,FILE_MAP_COPY,0,0,fileSize); // fileSize must be <= hilo passed to CreateFileMapping above. CloseHandle(hMap); // we don't need to keep the file open; the MapView keeps an internal reference; CloseHandle(hFile); // see https://msdn.microsoft.com/en-us/library/windows/desktop/aa366537(v=vs.85).aspx if (mmp == NULL) { #endif int nbit = 8*sizeof(char *); // #nocov - STOP("Opened %s file ok but could not memory map it. This is a %dbit process. %s.", filesize_to_str(fileSize), nbit, + STOP(_("Opened %s file ok but could not memory map it. This is a %dbit process. %s."), filesize_to_str(fileSize), nbit, nbit<=32 ? "Please upgrade to 64bit" : "There is probably not enough contiguous virtual memory available"); // # nocov } sof = (const char*) mmp; if (verbose) DTPRINT(_(" Memory mapped ok\n")); } else { - STOP("Internal error: Neither `input` nor `filename` are given, nothing to read."); // # nocov + STOP(_("Internal error: Neither `input` nor `filename` are given, nothing to read.")); // # nocov } eof = sof + fileSize; tMap = wallclock(); @@ -1279,7 +1279,7 @@ int freadMain(freadMainArgs _args) { DTWARN("GB-18030 encoding detected, however fread() is unable to decode it. Some character fields may be garbled.\n"); } else if (fileSize >= 2 && sof[0] + sof[1] == '\xFE' + '\xFF') { // either 0xFE 0xFF or 0xFF 0xFE - STOP("File is encoded in UTF-16, this encoding is not supported by fread(). Please recode the file to UTF-8."); + STOP(_("File is encoded in UTF-16, this encoding is not supported by fread(). Please recode the file to UTF-8.")); } if (eof>sof && (eof[-1]=='\x1A' || eof[-1]=='\0')) { char c = eof[-1]; @@ -1287,7 +1287,7 @@ int freadMain(freadMainArgs _args) { if (verbose) DTPRINT(_(" Last byte(s) of input found to be %s and removed.\n"), c ? "0x1A (Ctrl+Z)" : "0x00 (NUL)"); } - if (eof<=sof) STOP("Input is empty or only contains BOM or terminal control characters"); + if (eof<=sof) STOP(_("Input is empty or only contains BOM or terminal control characters")); } @@ -1373,7 +1373,7 @@ int freadMain(freadMainArgs _args) { // like wc -l, head -n and tail -n if (args.skipString) { ch = strstr(sof, args.skipString); // as there is now a \0 at the end, this is safely bounded - if (!ch) STOP("skip='%s' not found in input (it is case sensitive and literal; i.e., no patterns, wildcards or regex)", + if (!ch) STOP(_("skip='%s' not found in input (it is case sensitive and literal; i.e., no patterns, wildcards or regex)"), args.skipString); while (ch>sof && ch[-1]!='\n') ch--; // move to beginning of line pos = ch; @@ -1393,7 +1393,7 @@ int freadMain(freadMainArgs _args) { } } if (ch > sof && verbose) DTPRINT(_(" Skipped to line %llu in the file"), (llu)row1line); - if (ch>=eof) STOP("skip=%llu but the input only has %llu line%s", (llu)args.skipNrow, (llu)row1line, row1line>1?"s":""); + if (ch>=eof) STOP(_("skip=%llu but the input only has %llu line%s"), (llu)args.skipNrow, (llu)row1line, row1line>1?"s":""); pos = ch; } @@ -1402,7 +1402,7 @@ int freadMain(freadMainArgs _args) { while (ch=eof) STOP("Input is either empty, fully whitespace, or skip has been set after the last non-whitespace."); + if (ch>=eof) STOP(_("Input is either empty, fully whitespace, or skip has been set after the last non-whitespace.")); if (verbose) { if (lineStart>ch) DTPRINT(_(" Moved forward to first non-blank line (%d)\n"), row1line); DTPRINT(_(" Positioned on line %d starting: <<%s>>\n"), row1line, strlim(lineStart, 30)); @@ -1560,7 +1560,7 @@ int freadMain(freadMainArgs _args) { topQuoteRule = quoteRule; } } - if (!firstJumpEnd) STOP("Single column input contains invalid quotes. Self healing only effective when ncol>1"); + if (!firstJumpEnd) STOP(_("Single column input contains invalid quotes. Self healing only effective when ncol>1")); } quoteRule = topQuoteRule; @@ -1581,10 +1581,10 @@ int freadMain(freadMainArgs _args) { } } - if (ncol<1 || row1line<1) STOP("Internal error: ncol==%d line==%d after detecting sep, ncol and first line", ncol, row1line); // # nocov + if (ncol<1 || row1line<1) STOP(_("Internal error: ncol==%d line==%d after detecting sep, ncol and first line"), ncol, row1line); // # nocov int tt = countfields(&ch); ch = pos; // move back to start of line since countfields() moved to next - if (!fill && tt!=ncol) STOP("Internal error: first line has field count %d but expecting %d", tt, ncol); // # nocov + if (!fill && tt!=ncol) STOP(_("Internal error: first line has field count %d but expecting %d"), tt, ncol); // # nocov if (verbose) { DTPRINT(_(" Detected %d columns on line %d. This line is either column ") "names or first data row. Line starts as: <<%s>>\n", @@ -1627,7 +1627,7 @@ int freadMain(freadMainArgs _args) { type = (int8_t *)malloc((size_t)ncol * sizeof(int8_t)); tmpType = (int8_t *)malloc((size_t)ncol * sizeof(int8_t)); // used i) in sampling to not stop on errors when bad jump point and ii) when accepting user overrides - if (!type || !tmpType) STOP("Failed to allocate 2 x %d bytes for type and tmpType: %s", ncol, strerror(errno)); + if (!type || !tmpType) STOP(_("Failed to allocate 2 x %d bytes for type and tmpType: %s"), ncol, strerror(errno)); int8_t type0 = 1; while (disabled_parsers[type0]) type0++; @@ -1741,20 +1741,20 @@ int freadMain(freadMainArgs _args) { // Maybe previous line (if there is one, prevStart!=NULL) contains column names but there are too few (which is why it didn't become the first data row). ch = prevStart; int tt = countfields(&ch); - if (tt==ncol) STOP("Internal error: row before first data row has the same number of fields but we're not using it."); // # nocov - if (ch!=pos) STOP("Internal error: ch!=pos after counting fields in the line before the first data row."); // # nocov + if (tt==ncol) STOP(_("Internal error: row before first data row has the same number of fields but we're not using it.")); // # nocov + if (ch!=pos) STOP(_("Internal error: ch!=pos after counting fields in the line before the first data row.")); // # nocov if (verbose) DTPRINT(_("Types in 1st data row match types in 2nd data row but previous row has %d fields. Taking previous row as column names."), tt); if (ttncol) { - if (fill) STOP("Internal error: fill=true but there is a previous row which should already have been filled."); // # nocov + if (fill) STOP(_("Internal error: fill=true but there is a previous row which should already have been filled.")); // # nocov DTWARN("Detected %d column names but the data has %d columns. Filling rows automatically. Set fill=TRUE explicitly to avoid this warning.\n", tt, ncol); fill = true; type = (int8_t *)realloc(type, (size_t)tt * sizeof(int8_t)); tmpType = (int8_t *)realloc(tmpType, (size_t)tt * sizeof(int8_t)); - if (!type || !tmpType) STOP("Failed to realloc 2 x %d bytes for type and tmpType: %s", tt, strerror(errno)); + if (!type || !tmpType) STOP(_("Failed to realloc 2 x %d bytes for type and tmpType: %s"), tt, strerror(errno)); for (int j=ncol; j allocnrow) STOP("Internal error: sampleLines(%llu) > allocnrow(%llu)", (llu)sampleLines, (llu)allocnrow); // # nocov + if (sampleLines > allocnrow) STOP(_("Internal error: sampleLines(%llu) > allocnrow(%llu)"), (llu)sampleLines, (llu)allocnrow); // # nocov } } if (nrowLimit < allocnrow) { @@ -1849,7 +1849,7 @@ int freadMain(freadMainArgs _args) { colNames = NULL; // userOverride will assign V1, V2, etc } else { colNames = (lenOff*) calloc((size_t)ncol, sizeof(lenOff)); - if (!colNames) STOP("Unable to allocate %d*%d bytes for column name pointers: %s", ncol, sizeof(lenOff), strerror(errno)); + if (!colNames) STOP(_("Unable to allocate %d*%d bytes for column name pointers: %s"), ncol, sizeof(lenOff), strerror(errno)); if (sep==' ') while (*ch==' ') ch++; void *targets[9] = {NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, colNames + autoFirstColName}; FieldParseContext fctx = { @@ -1871,7 +1871,7 @@ int freadMain(freadMainArgs _args) { } if (eol(&ch)) pos = ++ch; else if (*ch=='\0') pos = ch; - else STOP("Internal error: reading colnames ending on '%c'", *ch); // # nocov + else STOP(_("Internal error: reading colnames ending on '%c'"), *ch); // # nocov // now on first data row (row after column names) // when fill=TRUE and column names shorter (test 1635.2), leave calloc initialized lenOff.len==0 } @@ -1903,7 +1903,7 @@ int freadMain(freadMainArgs _args) { rowSize4 = 0; rowSize8 = 0; size = (int8_t *)malloc((size_t)ncol * sizeof(int8_t)); // TODO: remove size[] when we implement Pasha's idea to += size inside processor - if (!size) STOP("Failed to allocate %d bytes for size array: %s", ncol, strerror(errno)); + if (!size) STOP(_("Failed to allocate %d bytes for size array: %s"), ncol, strerror(errno)); nStringCols = 0; nNonStringCols = 0; for (int j=0; j INT32_MAX) STOP("Buffer size %lld is too large\n", initialBuffRows); + if (initialBuffRows > INT32_MAX) STOP(_("Buffer size %lld is too large\n"), initialBuffRows); nth = imin(nJumps, nth); if (verbose) DTPRINT(_("[11] Read the data\n")); @@ -2329,7 +2329,7 @@ int freadMain(freadMainArgs _args) { if (stopTeam) { if (internalErr[0]!='\0') { - STOP("%s", internalErr); // # nocov + STOP(_("%s"), internalErr); // # nocov } stopTeam = false; diff --git a/src/freadR.c b/src/freadR.c index d4c332e0d0..6d79b2a150 100644 --- a/src/freadR.c +++ b/src/freadR.c @@ -165,7 +165,7 @@ SEXP freadR( readInt64As = CT_STRING; } else if (strcmp(tt,"double")==0 || strcmp(tt,"numeric")==0) { readInt64As = CT_FLOAT64; - } else STOP("Invalid value integer64='%s'. Must be 'integer64', 'character', 'double' or 'numeric'", tt); + } else STOP(_("Invalid value integer64='%s'. Must be 'integer64', 'character', 'double' or 'numeric'"), tt); colClassesSxp = colClassesArg; @@ -173,19 +173,19 @@ SEXP freadR( dropSxp = dropArg; selectColClasses = false; if (!isNull(selectSxp)) { - if (!isNull(dropSxp)) STOP("Use either select= or drop= but not both."); + if (!isNull(dropSxp)) STOP(_("Use either select= or drop= but not both.")); if (isNewList(selectArg)) { if (!isNull(colClassesSxp)) - STOP("select= is type list for specifying types in select=, but colClasses= has been provided as well. Please remove colClasses=."); + STOP(_("select= is type list for specifying types in select=, but colClasses= has been provided as well. Please remove colClasses=.")); if (!length(getAttrib(selectArg, R_NamesSymbol))) - STOP("select= is type list but has no names; expecting list(type1=cols1, type2=cols2, ...)"); + STOP(_("select= is type list but has no names; expecting list(type1=cols1, type2=cols2, ...)")); colClassesSxp = selectArg; selectColClasses = true; selectSxp = R_NilValue; } else { if (!isNull(getAttrib(selectArg, R_NamesSymbol))) { if (!isNull(colClassesSxp)) - STOP("select= is a named vector specifying the columns to select and their types, but colClasses= has been provided as well. Please remove colClasses=."); + STOP(_("select= is a named vector specifying the columns to select and their types, but colClasses= has been provided as well. Please remove colClasses=.")); colClassesSxp = selectArg; selectSxp = getAttrib(selectArg, R_NamesSymbol); selectColClasses = true; @@ -193,7 +193,7 @@ SEXP freadR( } } else { if (TYPEOF(colClassesSxp)==VECSXP && !length(getAttrib(colClassesSxp, R_NamesSymbol))) - STOP("colClasses is type list but has no names"); + STOP(_("colClasses is type list but has no names")); } // Encoding, #563: Borrowed from do_setencoding from base R @@ -203,7 +203,7 @@ SEXP freadR( if (strcmp(tt, "unknown")==0) ienc = CE_NATIVE; else if (strcmp(tt, "Latin-1")==0) ienc = CE_LATIN1; else if (strcmp(tt, "UTF-8")==0) ienc = CE_UTF8; - else STOP("encoding='%s' invalid. Must be 'unknown', 'Latin-1' or 'UTF-8'", tt); // # nocov + else STOP(_("encoding='%s' invalid. Must be 'unknown', 'Latin-1' or 'UTF-8'"), tt); // # nocov // === end extras === RCHK = PROTECT(allocVector(VECSXP, 4)); @@ -244,8 +244,8 @@ static void applyDrop(SEXP items, int8_t *type, int ncol, int dropSource) { bool userOverride(int8_t *type, lenOff *colNames, const char *anchor, int ncol) { // use typeSize superfluously to avoid not-used warning; otherwise could move typeSize from fread.h into fread.c - if (typeSize[CT_BOOL8_N]!=1) STOP("Internal error: typeSize[CT_BOOL8_N] != 1"); // # nocov - if (typeSize[CT_STRING]!=8) STOP("Internal error: typeSize[CT_STRING] != 1"); // # nocov + if (typeSize[CT_BOOL8_N]!=1) STOP(_("Internal error: typeSize[CT_BOOL8_N] != 1")); // # nocov + if (typeSize[CT_STRING]!=8) STOP(_("Internal error: typeSize[CT_STRING] != 1")); // # nocov colNamesSxp = R_NilValue; SET_VECTOR_ELT(RCHK, 1, colNamesSxp=allocVector(STRSXP, ncol)); for (int i=0; incol) STOP("Column number %d (select[%d]) is too large for this table, which only has %d columns.",k,i+1,ncol); - if (type[k-1]<0) STOP("Column number %d ('%s') has been selected twice by select=", k, CHAR(STRING_ELT(colNamesSxp,k-1))); + if (k<0) STOP(_("Column number %d (select[%d]) is negative but should be in the range [1,ncol=%d]. Consider drop= for column exclusion."),k,i+1,ncol); + if (k==0) STOP(_("select = 0 (select[%d]) has no meaning. All values of select should be in the range [1,ncol=%d]."),i+1,ncol); + if (k>ncol) STOP(_("Column number %d (select[%d]) is too large for this table, which only has %d columns."),k,i+1,ncol); + if (type[k-1]<0) STOP(_("Column number %d ('%s') has been selected twice by select="), k, CHAR(STRING_ELT(colNamesSxp,k-1))); type[k-1] *= -1; // detect and error on duplicates on all types without calling duplicated() at all selectRankD[k-1] = rank++; // rank not i to skip missing column names } @@ -310,12 +310,12 @@ bool userOverride(int8_t *type, lenOff *colNames, const char *anchor, int ncol) SEXP typeEnum_idx = PROTECT(chmatch(colClassesSxp, typeRName_sxp, NUT)); if (LENGTH(colClassesSxp)==1) { signed char newType = typeEnum[INTEGER(typeEnum_idx)[0]-1]; - if (newType == CT_DROP) STOP("colClasses='NULL' is not permitted; i.e. to drop all columns and load nothing"); + if (newType == CT_DROP) STOP(_("colClasses='NULL' is not permitted; i.e. to drop all columns and load nothing")); for (int i=0; i CT_BOOL8_L) STOP("Field size is 1 but the field is of type %d\n", type[j]); + if (type[j] > CT_BOOL8_L) STOP(_("Field size is 1 but the field is of type %d\n"), type[j]); Rboolean *dest = (Rboolean *)((char *)DATAPTR(VECTOR_ELT(DT, resj)) + DTi*sizeof(Rboolean)); char *src1 = (char*)buff1 + off1; for (int i=0; i1024) STOP("buffMB=%d outside [1,1024]", args.buffMB); + if (args.buffMB<1 || args.buffMB>1024) STOP(_("buffMB=%d outside [1,1024]"), args.buffMB); size_t buffSize = (size_t)1024*1024*args.buffMB; int eolLen=strlen(args.eol), naLen=strlen(args.na); // Aside: codacy wants strnlen but strnlen is not in C99 (neither is strlen_s). To pass `gcc -std=c99 -Wall -pedantic` // we'd need `#define _POSIX_C_SOURCE 200809L` before #include but that seems a step too far // and platform specific. We prefer to be pure C99. - if (eolLen<=0) STOP("eol must be 1 or more bytes (usually either \\n or \\r\\n) but is length %d", eolLen); + if (eolLen<=0) STOP(_("eol must be 1 or more bytes (usually either \\n or \\r\\n) but is length %d"), eolLen); if (args.verbose) { DTPRINT(_("Column writers: ")); @@ -651,7 +651,7 @@ void fwriteMain(fwriteMainArgs args) width = getMaxListItemLen(args.columns[j], args.nrow); break; default: - STOP("Internal error: type %d has no max length method implemented", args.whichFun[j]); // # nocov + STOP(_("Internal error: type %d has no max length method implemented"), args.whichFun[j]); // # nocov } } if (args.whichFun[j]==WF_Float64 && args.scipen>0) width+=MIN(args.scipen,350); // clamp width to IEEE754 max to avoid scipen=99999 allocating buffer larger than can ever be written @@ -700,7 +700,7 @@ void fwriteMain(fwriteMainArgs args) } if (headerLen) { char *buff = malloc(headerLen); - if (!buff) STOP("Unable to allocate %d MiB for header: %s", headerLen / 1024 / 1024, strerror(errno)); + if (!buff) STOP(_("Unable to allocate %d MiB for header: %s"), headerLen / 1024 / 1024, strerror(errno)); char *ch = buff; if (args.bom) {*ch++=(char)0xEF; *ch++=(char)0xBB; *ch++=(char)0xBF; } // 3 appears above (search for "bom") memcpy(ch, args.yaml, yamlLen); @@ -728,13 +728,13 @@ void fwriteMain(fwriteMainArgs args) z_stream stream; if(init_stream(&stream)) { free(buff); // # nocov - STOP("Can't allocate gzip stream structure"); // # nocov + STOP(_("Can't allocate gzip stream structure")); // # nocov } size_t zbuffSize = deflateBound(&stream, headerLen); char *zbuff = malloc(zbuffSize); if (!zbuff) { free(buff); // # nocov - STOP("Unable to allocate %d MiB for zbuffer: %s", zbuffSize / 1024 / 1024, strerror(errno)); // # nocov + STOP(_("Unable to allocate %d MiB for zbuffer: %s"), zbuffSize / 1024 / 1024, strerror(errno)); // # nocov } size_t zbuffUsed = zbuffSize; ret1 = compressbuff(&stream, zbuff, &zbuffUsed, buff, (int)(ch-buff)); @@ -749,8 +749,8 @@ void fwriteMain(fwriteMainArgs args) // # nocov start int errwrite = errno; // capture write errno now incase close fails with a different errno CLOSE(f); - if (ret1) STOP("Compress gzip error: %d", ret1); - else STOP("%s: '%s'", strerror(errwrite), args.filename); + if (ret1) STOP(_("Compress gzip error: %d"), ret1); + else STOP(_("%s: '%s'"), strerror(errwrite), args.filename); // # nocov end } } @@ -758,7 +758,7 @@ void fwriteMain(fwriteMainArgs args) if (args.verbose) DTPRINT(_("done in %.3fs\n"), 1.0*(wallclock()-t0)); if (args.nrow == 0) { if (args.verbose) DTPRINT(_("No data rows present (nrow==0)\n")); - if (f!=-1 && CLOSE(f)) STOP("%s: '%s'", strerror(errno), args.filename); + if (f!=-1 && CLOSE(f)) STOP(_("%s: '%s'"), strerror(errno), args.filename); return; } @@ -790,7 +790,7 @@ void fwriteMain(fwriteMainArgs args) if(args.is_gzip){ z_stream stream; if(init_stream(&stream)) - STOP("Can't allocate gzip stream structure"); // # nocov + STOP(_("Can't allocate gzip stream structure")); // # nocov zbuffSize = deflateBound(&stream, buffSize); deflateEnd(&stream); } @@ -938,16 +938,16 @@ void fwriteMain(fwriteMainArgs args) } if (f!=-1 && CLOSE(f) && !failed) - STOP("%s: '%s'", strerror(errno), args.filename); // # nocov + STOP(_("%s: '%s'"), strerror(errno), args.filename); // # nocov // quoted '%s' in case of trailing spaces in the filename // If a write failed, the line above tries close() to clean up, but that might fail as well. So the // '&& !failed' is to not report the error as just 'closing file' but the next line for more detail // from the original error. if (failed<0) { - STOP("Error %d: one or more threads failed to allocate buffers or there was a compression error." // # nocov + STOP(_("Error %d: one or more threads failed to allocate buffers or there was a compression error.") // # nocov " Please try again with verbose=TRUE and try searching online for this error message.\n", failed); // # nocov } else if (failed>0) { - STOP("%s: '%s'", strerror(failed), args.filename); // # nocov + STOP(_("%s: '%s'"), strerror(failed), args.filename); // # nocov } return; } diff --git a/src/fwriteR.c b/src/fwriteR.c index 2170ddcdbb..96352837c3 100644 --- a/src/fwriteR.c +++ b/src/fwriteR.c @@ -100,7 +100,7 @@ const int getMaxListItemLen(const SEXP *col, const int64_t n) { } int width = writerMaxLen[wf]; if (width==0) { - if (wf!=WF_String) STOP("Internal error: row %d of list column has no max length method implemented", i+1); // # nocov + if (wf!=WF_String) STOP(_("Internal error: row %d of list column has no max length method implemented"), i+1); // # nocov const int l = LENGTH(this); for (int j=0; j Date: Wed, 16 Oct 2019 01:09:16 +0800 Subject: [PATCH 07/78] DTWARN messages --- src/fread.c | 18 +++++++++--------- src/freadR.c | 16 ++++++++-------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/src/fread.c b/src/fread.c index f84f87ff28..afc778d5fc 100644 --- a/src/fread.c +++ b/src/fread.c @@ -1092,7 +1092,7 @@ int freadMain(freadMainArgs _args) { bool warningsAreErrors = args.warningsAreErrors; if (freadCleanup()) { - DTWARN("Previous fread() session was not cleaned up properly. Cleaned up ok at the beginning of this fread() call.\n"); // # nocov + DTWARN(_("Previous fread() session was not cleaned up properly. Cleaned up ok at the beginning of this fread() call.\n")); // # nocov } if (verbose) DTPRINT(_("[01] Check arguments\n")); @@ -1276,7 +1276,7 @@ int freadMain(freadMainArgs _args) { else if (fileSize >= 4 && memcmp(sof, "\x84\x31\x95\x33", 4) == 0) { sof += 4; // ienc = CE_GB18030; - DTWARN("GB-18030 encoding detected, however fread() is unable to decode it. Some character fields may be garbled.\n"); + DTWARN(_("GB-18030 encoding detected, however fread() is unable to decode it. Some character fields may be garbled.\n")); } else if (fileSize >= 2 && sof[0] + sof[1] == '\xFE' + '\xFF') { // either 0xFE 0xFF or 0xFF 0xFE STOP(_("File is encoded in UTF-16, this encoding is not supported by fread(). Please recode the file to UTF-8.")); @@ -1565,7 +1565,7 @@ int freadMain(freadMainArgs _args) { quoteRule = topQuoteRule; if (quoteRule>1 && quote) { - DTWARN("Found and resolved improper quoting in first %d rows. If the fields are not quoted (e.g. field separator does not appear within any field), try quote=\"\" to avoid this warning.", jumpLines); + DTWARN(_("Found and resolved improper quoting in first %d rows. If the fields are not quoted (e.g. field separator does not appear within any field), try quote=\")\" to avoid this warning.", jumpLines); // TODO: include line number and text in warning. Could loop again with the standard quote rule to find the line that fails. } sep = topSep; @@ -1746,11 +1746,11 @@ int freadMain(freadMainArgs _args) { if (verbose) DTPRINT(_("Types in 1st data row match types in 2nd data row but previous row has %d fields. Taking previous row as column names."), tt); if (ttncol) { if (fill) STOP(_("Internal error: fill=true but there is a previous row which should already have been filled.")); // # nocov - DTWARN("Detected %d column names but the data has %d columns. Filling rows automatically. Set fill=TRUE explicitly to avoid this warning.\n", tt, ncol); + DTWARN(_("Detected %d column names but the data has %d columns. Filling rows automatically. Set fill=TRUE explicitly to avoid this warning.\n"), tt, ncol); fill = true; type = (int8_t *)realloc(type, (size_t)tt * sizeof(int8_t)); tmpType = (int8_t *)realloc(tmpType, (size_t)tt * sizeof(int8_t)); @@ -1910,7 +1910,7 @@ int freadMain(freadMainArgs _args) { if (type[j]==CT_DROP) { size[j]=0; ndrop++; continue; } if (type[j]> of inherent type '%s' down to '%s' ignored. Only overrides to a higher type are currently supported. " \ + DTWARN(_("Attempt to override column %d <<%.*s>> of inherent type '%s' down to '%s' ignored. Only overrides to a higher type are currently supported. ") \ "If this was intended, please coerce to the lower type afterwards.", j+1, colNames[j].len, colNamesAnchor+colNames[j].off, typeName[tmpType[j]], typeName[type[j]]); } @@ -2425,18 +2425,18 @@ int freadMain(freadMainArgs _args) { while (ch>", strlim(skippedFooter,500)); + DTWARN(_("Discarded single-line footer: <<%s>>"), strlim(skippedFooter,500)); } else { ch = headPos; int tt = countfields(&ch); - DTWARN("Stopped early on line %llu. Expected %d fields but found %d. Consider fill=TRUE and comment.char=. First discarded non-empty line: <<%s>>", + DTWARN(_("Stopped early on line %llu. Expected %d fields but found %d. Consider fill=TRUE and comment.char=. First discarded non-empty line: <<%s>>"), (llu)DTi+row1line, ncol, tt, strlim(skippedFooter,500)); } } } if (quoteRuleBumpedCh!=NULL && quoteRuleBumpedCh>. If the fields are not quoted (e.g. field separator does not appear within any field), try quote=\"\" to avoid this warning.", (llu)quoteRuleBumpedLine, strlim(quoteRuleBumpedCh, 500)); + DTWARN(_("Found and resolved improper quoting out-of-sample. First healed line %llu: <<%s>>. If the fields are not quoted (e.g. field separator does not appear within any field), try quote=\")\" to avoid this warning.", (llu)quoteRuleBumpedLine, strlim(quoteRuleBumpedCh, 500)); } if (verbose) { diff --git a/src/freadR.c b/src/freadR.c index 6d79b2a150..d8897801b1 100644 --- a/src/freadR.c +++ b/src/freadR.c @@ -226,11 +226,11 @@ static void applyDrop(SEXP items, int8_t *type, int ncol, int dropSource) { else snprintf(buff, 50, "colClasses[[%d]][%d]", dropSource+1, j+1); if (k==NA_INTEGER) { if (isString(items)) - DTWARN("Column name '%s' (%s) not found", CHAR(STRING_ELT(items, j)), buff); + DTWARN(_("Column name '%s' (%s) not found"), CHAR(STRING_ELT(items, j)), buff); else - DTWARN("%s is NA", buff); + DTWARN(_("%s is NA"), buff); } else { - DTWARN("%s is %d which is out of range [1,ncol=%d]", buff, k, ncol); + DTWARN(_("%s is %d which is out of range [1,ncol=%d]"), buff, k, ncol); } } else { type[k-1] = CT_DROP; @@ -279,7 +279,7 @@ bool userOverride(int8_t *type, lenOff *colNames, const char *anchor, int ncol) if (isString(selectSxp)) { selectInts = INTEGER(PROTECT(chmatch(selectSxp, colNamesSxp, NA_INTEGER))); nprotect++; for (int i=0; i=1 && k<=ncol) { if (type[k-1]<0) - DTWARN("Column %d ('%s') appears more than once in colClasses. The second time is colClasses[[%d]][%d].", k, CHAR(STRING_ELT(colNamesSxp,k-1)), i+1, j+1); + DTWARN(_("Column %d ('%s') appears more than once in colClasses. The second time is colClasses[[%d]][%d]."), k, CHAR(STRING_ELT(colNamesSxp,k-1)), i+1, j+1); else if (type[k-1]!=CT_DROP) { type[k-1] = -thisType; // freadMain checks bump up only not down. Deliberately don't catch here to test freadMain; e.g. test 959 if (w==NUT) SET_STRING_ELT(colClassesAs, k-1, STRING_ELT(listNames,i)); if (selectRankD) selectRankD[k-1] = rank++; } } else { - DTWARN("Column number %d (colClasses[[%d]][%d]) is out of range [1,ncol=%d]", k, i+1, j+1, ncol); + DTWARN(_("Column number %d (colClasses[[%d]][%d]) is out of range [1,ncol=%d]"), k, i+1, j+1, ncol); } } } From a30930dde690db36f6a41b4bf6933cbc1edea576 Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Wed, 16 Oct 2019 01:13:01 +0800 Subject: [PATCH 08/78] Error in forder --- src/forder.c | 42 +++++++++++++++++++++--------------------- src/fwrite.c | 5 ++--- 2 files changed, 23 insertions(+), 24 deletions(-) diff --git a/src/forder.c b/src/forder.c index 59d5cd61c3..e3af8c602a 100644 --- a/src/forder.c +++ b/src/forder.c @@ -61,7 +61,7 @@ static bool notFirst=false; * We have to trap on exit anyway to call savetl_end(). * NB: R_alloc() would be more convenient (fails within) and robust (auto free) but there is no R_realloc(). Implementing R_realloc() would be an alloc and copy, iiuc. * Calloc/Realloc needs to be Free'd, even before error() [R-exts$6.1.2]. An oom within Calloc causes a previous Calloc to leak so Calloc would still needs to be trapped anyway. - * Therefore, using <> approach to cleanup() on error. + * Therefore, using <> approach to cleanup() on error. */ static void free_ustr() { @@ -100,7 +100,7 @@ static void push(const int *x, const int n) { if (gs_thread_alloc[me] < newn) { gs_thread_alloc[me] = (newn < nrow/3) ? (1+(newn*2)/4096)*4096 : nrow; // [2|3] to not overflow and 3 not 2 to avoid allocating close to nrow (nrow groups occurs when all size 1 groups) gs_thread[me] = realloc(gs_thread[me], gs_thread_alloc[me]*sizeof(int)); - if (gs_thread[me]==NULL) Error("Failed to realloc thread private group size buffer to %d*4bytes", (int)gs_thread_alloc[me]); + if (gs_thread[me]==NULL) Error(_("Failed to realloc thread private group size buffer to %d*4bytes"), (int)gs_thread_alloc[me]); } memcpy(gs_thread[me]+gs_thread_n[me], x, n*sizeof(int)); gs_thread_n[me] += n; @@ -114,7 +114,7 @@ static void flush() { if (gs_alloc < newn) { gs_alloc = (newn < nrow/3) ? (1+(newn*2)/4096)*4096 : nrow; gs = realloc(gs, gs_alloc*sizeof(int)); - if (gs==NULL) Error("Failed to realloc group size result to %d*4bytes", (int)gs_alloc); + if (gs==NULL) Error(_("Failed to realloc group size result to %d*4bytes"), (int)gs_alloc); } memcpy(gs+gs_n, gs_thread[me], n*sizeof(int)); gs_n += n; @@ -257,7 +257,7 @@ static void cradix_r(SEXP *xsub, int n, int radix) memset(thiscounts, 0, 256*sizeof(int)); return; } - if (thiscounts[0] != 0) Error("Logical error. counts[0]=%d in cradix but should have been decremented to 0. radix=%d", thiscounts[0], radix); + if (thiscounts[0] != 0) Error(_("Logical error. counts[0]=%d in cradix but should have been decremented to 0. radix=%d"), thiscounts[0], radix); itmp = 0; for (int i=1; i<256; i++) { if (thiscounts[i] == 0) continue; @@ -272,9 +272,9 @@ static void cradix_r(SEXP *xsub, int n, int radix) static void cradix(SEXP *x, int n) { cradix_counts = (int *)calloc(ustr_maxlen*256, sizeof(int)); // counts for the letters of left-aligned strings - if (!cradix_counts) Error("Failed to alloc cradix_counts"); + if (!cradix_counts) Error(_("Failed to alloc cradix_counts")); cradix_xtmp = (SEXP *)malloc(ustr_n*sizeof(SEXP)); - if (!cradix_xtmp) Error("Failed to alloc cradix_tmp"); + if (!cradix_xtmp) Error(_("Failed to alloc cradix_tmp")); cradix_r(x, n, 0); free(cradix_counts); cradix_counts=NULL; free(cradix_xtmp); cradix_xtmp=NULL; @@ -285,8 +285,8 @@ static void range_str(SEXP *x, int n, uint64_t *out_min, uint64_t *out_max, int { int na_count=0; bool anyneedutf8=false; - if (ustr_n!=0) Error("Internal error: ustr isn't empty when starting range_str: ustr_n=%d, ustr_alloc=%d", ustr_n, ustr_alloc); // # nocov - if (ustr_maxlen!=0) Error("Internal error: ustr_maxlen isn't 0 when starting range_str"); // # nocov + if (ustr_n!=0) Error(_("Internal error: ustr isn't empty when starting range_str: ustr_n=%d, ustr_alloc=%d"), ustr_n, ustr_alloc); // # nocov + if (ustr_maxlen!=0) Error(_("Internal error: ustr_maxlen isn't 0 when starting range_str")); // # nocov // savetl_init() has already been called at the start of forder #pragma omp parallel for num_threads(getDTthreads()) for(int i=0; in) ustr_alloc = n; // clamp at n. Reaches n when fully unique (no dups) ustr = realloc(ustr, ustr_alloc * sizeof(SEXP)); - if (ustr==NULL) Error("Unable to realloc %d * %d bytes in range_str", ustr_alloc, sizeof(SEXP)); // # nocov + if (ustr==NULL) Error(_("Unable to realloc %d * %d bytes in range_str"), ustr_alloc, sizeof(SEXP)); // # nocov } ustr[ustr_n++] = s; SET_TRUELENGTH(s, -ustr_n); // unique in any order is fine. first-appearance order is achieved later in count_group @@ -324,7 +324,7 @@ static void range_str(SEXP *x, int n, uint64_t *out_min, uint64_t *out_max, int SEXP ustr2 = PROTECT(allocVector(STRSXP, ustr_n)); for (int i=0; i>(dround*8)) /*+Inf*/; - Error("Unknown non-finite value; not NA, NaN, -Inf or +Inf"); // # nocov + Error(_("Unknown non-finite value; not NA, NaN, -Inf or +Inf")); // # nocov } void radix_r(const int from, const int to, const int radix); @@ -511,7 +511,7 @@ SEXP forder(SEXP DT, SEXP by, SEXP retGrpArg, SEXP sortGroupsArg, SEXP ascArg, S if (sortType) { sortType=INTEGER(ascArg)[col]; // if sortType!=0 (not first-appearance) then +1/-1 comes from ascArg. if (sortType!=1 && sortType!=-1) - Error("Item %d of order (ascending/descending) is %d. Must be +1 or -1.", col+1, sortType); + Error(_("Item %d of order (ascending/descending) is %d. Must be +1 or -1."), col+1, sortType); } //Rprintf(_("sortType = %d\n"), sortType); switch(TYPEOF(x)) { @@ -553,7 +553,7 @@ SEXP forder(SEXP DT, SEXP by, SEXP retGrpArg, SEXP sortGroupsArg, SEXP ascArg, S range_str(STRING_PTR(x), nrow, &min, &max, &na_count); break; default: - Error("Column %d passed to [f]order is type '%s', not yet supported.", col+1, type2char(TYPEOF(x))); + Error(_("Column %d passed to [f]order is type '%s', not yet supported."), col+1, type2char(TYPEOF(x))); } TEND(3); if (na_count==nrow || (min>0 && min==max && na_count==0 && infnan_count==0)) { @@ -702,7 +702,7 @@ SEXP forder(SEXP DT, SEXP by, SEXP retGrpArg, SEXP sortGroupsArg, SEXP ascArg, S free_ustr(); // ustr could be left allocated and reused, but free now in case large and we're tight on ram break; default: - Error("Internal error: column not supported not caught earlier"); // # nocov + Error(_("Internal error: column not supported not caught earlier")); // # nocov } nradix += nbyte-1+(spare==0); TEND(4) @@ -716,12 +716,12 @@ SEXP forder(SEXP DT, SEXP by, SEXP retGrpArg, SEXP sortGroupsArg, SEXP ascArg, S int nth = getDTthreads(); TMP = (int *)malloc(nth*UINT16_MAX*sizeof(int)); // used by counting sort (my_n<=65536) in radix_r() UGRP = (uint8_t *)malloc(nth*256); // TODO: align TMP and UGRP to cache lines (and do the same for stack allocations too) - if (!TMP || !UGRP /*|| TMP%64 || UGRP%64*/) Error("Failed to allocate TMP or UGRP or they weren't cache line aligned: nth=%d", nth); + if (!TMP || !UGRP /*|| TMP%64 || UGRP%64*/) Error(_("Failed to allocate TMP or UGRP or they weren't cache line aligned: nth=%d"), nth); if (retgrp) { gs_thread = calloc(nth, sizeof(int *)); // thread private group size buffers gs_thread_alloc = calloc(nth, sizeof(int)); gs_thread_n = calloc(nth, sizeof(int)); - if (!gs_thread || !gs_thread_alloc || !gs_thread_n) Error("Could not allocate (very tiny) group size thread buffers"); + if (!gs_thread || !gs_thread_alloc || !gs_thread_n) Error(_("Could not allocate (very tiny) group size thread buffers")); } if (nradix) { radix_r(0, nrow-1, 0); // top level recursive call: (from, to, radix) @@ -1041,7 +1041,7 @@ void radix_r(const int from, const int to, const int radix) { uint16_t *counts = calloc(nBatch*256,sizeof(uint16_t)); uint8_t *ugrps = malloc(nBatch*256*sizeof(uint8_t)); int *ngrps = calloc(nBatch ,sizeof(int)); - if (!counts || !ugrps || !ngrps) Error("Failed to allocate parallel counts. my_n=%d, nBatch=%d", my_n, nBatch); + if (!counts || !ugrps || !ngrps) Error(_("Failed to allocate parallel counts. my_n=%d, nBatch=%d"), my_n, nBatch); bool skip=true; const int n_rem = nradix-radix-1; // how many radix are remaining after this one @@ -1150,7 +1150,7 @@ void radix_r(const int from, const int to, const int radix) { TEND(18 + notFirst*3) if (!skip) { int *TMP = malloc(my_n * sizeof(int)); - if (!TMP) Error("Unable to allocate TMP for my_n=%d items in parallel batch counting", my_n); + if (!TMP) Error(_("Unable to allocate TMP for my_n=%d items in parallel batch counting"), my_n); #pragma omp parallel for num_threads(getDTthreads()) for (int batch=0; batch= 2) { if (args.verbose && !hasPrinted) DTPRINT(_("\n")); DTPRINT(_("\rWritten %.1f%% of %d rows in %d secs using %d thread%s. ") - "maxBuffUsed=%d%%. ETA %d secs. ", + _("maxBuffUsed=%d%%. ETA %d secs. "), (100.0*end)/args.nrow, args.nrow, (int)(now-startTime), nth, nth==1?"":"s", maxBuffUsedPC, ETA); // TODO: use progress() as in fread @@ -945,10 +945,9 @@ void fwriteMain(fwriteMainArgs args) // from the original error. if (failed<0) { STOP(_("Error %d: one or more threads failed to allocate buffers or there was a compression error.") // # nocov - " Please try again with verbose=TRUE and try searching online for this error message.\n", failed); // # nocov + _(" Please try again with verbose=TRUE and try searching online for this error message.\n"), failed); // # nocov } else if (failed>0) { STOP(_("%s: '%s'"), strerror(failed), args.filename); // # nocov } return; } - From 57eeaced6d959a98b1cd351e94bc1f7b96fa84bf Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Wed, 16 Oct 2019 01:38:22 +0800 Subject: [PATCH 09/78] odds&ends more messages --- src/assign.c | 7 ++----- src/fread.c | 16 +++++++-------- src/freadR.c | 3 +-- src/froll.c | 48 ++++++++++++++++++++++----------------------- src/frolladaptive.c | 40 ++++++++++++++++++------------------- src/fwrite.c | 7 +++---- src/fwriteR.c | 5 ++--- src/gsumm.c | 3 +-- src/rbindlist.c | 12 ++++++------ 9 files changed, 66 insertions(+), 75 deletions(-) diff --git a/src/assign.c b/src/assign.c index 8e1651fdca..11dfbb51e9 100644 --- a/src/assign.c +++ b/src/assign.c @@ -387,8 +387,7 @@ SEXP assign(SEXP dt, SEXP rows, SEXP cols, SEXP newcolnames, SEXP values) } if (RHS_list_of_columns) { if (length(values)==0) - error(_("Supplied %d columns to be assigned an empty list (which may be an empty data.table or data.frame since they are lists too). ") - "To delete multiple columns use NULL instead. To add multiple empty list columns, use list(list()).", length(cols)); + error(_("Supplied %d columns to be assigned an empty list (which may be an empty data.table or data.frame since they are lists too). To delete multiple columns use NULL instead. To add multiple empty list columns, use list(list())."), length(cols)); if (length(values)!=length(cols)) { if (length(values)==1) { // test 351.1; c("colA","colB"):=list(13:15) uses 13:15 for both columns values = VECTOR_ELT(values,0); @@ -437,8 +436,7 @@ SEXP assign(SEXP dt, SEXP rows, SEXP cols, SEXP newcolnames, SEXP values) } if (nrow>0 && targetlen>0 && vlen>1 && vlen!=targetlen && (TYPEOF(existing)!=VECSXP || TYPEOF(thisvalue)==VECSXP)) { // note that isNewList(R_NilValue) is true so it needs to be TYPEOF(existing)!=VECSXP above - error(_("Supplied %d items to be assigned to %d items of column '%s'. If you wish to 'recycle' the RHS please ") - "use rep() to make this intent clear to readers of your code.", vlen, targetlen, CHAR(colnam)); + error(_("Supplied %d items to be assigned to %d items of column '%s'. If you wish to 'recycle' the RHS please use rep() to make this intent clear to readers of your code."), vlen, targetlen, CHAR(colnam)); } } // having now checked the inputs, from this point there should be no errors so we can now proceed to @@ -1246,4 +1244,3 @@ SEXP setcolorder(SEXP x, SEXP o) Free(tmp); return(R_NilValue); } - diff --git a/src/fread.c b/src/fread.c index afc778d5fc..296bb7c336 100644 --- a/src/fread.c +++ b/src/fread.c @@ -1245,7 +1245,7 @@ int freadMain(freadMainArgs _args) { #endif int nbit = 8*sizeof(char *); // #nocov STOP(_("Opened %s file ok but could not memory map it. This is a %dbit process. %s."), filesize_to_str(fileSize), nbit, - nbit<=32 ? "Please upgrade to 64bit" : "There is probably not enough contiguous virtual memory available"); // # nocov + nbit<=32 ? _("Please upgrade to 64bit") : _("There is probably not enough contiguous virtual memory available")); // # nocov } sof = (const char*) mmp; if (verbose) DTPRINT(_(" Memory mapped ok\n")); @@ -1301,8 +1301,8 @@ int freadMain(freadMainArgs _args) { while (ch>\n", + DTPRINT(_(" Detected %d columns on line %d. This line is either column names or first data row. Line starts as: <<%s>>\n"), tt, row1line, strlim(pos, 30)); DTPRINT(_(" Quote rule picked = %d\n"), quoteRule); DTPRINT(_(" fill=%s and the most number of columns found is %d\n"), fill?"true":"false", ncol); @@ -1596,7 +1595,7 @@ int freadMain(freadMainArgs _args) { if (ncol==1 && lastEOLreplaced && (eof[-1]=='\n' || eof[-1]=='\r')) { // Multiple newlines at the end are significant in the case of 1-column files only (multiple NA at the end) if (fileSize%4096==0) { - const char *msg = "This file is very unusual: it's one single column, ends with 2 or more end-of-line (representing several NA at the end), and is a multiple of 4096, too."; + const char *msg = _("This file is very unusual: it's one single column, ends with 2 or more end-of-line (representing several NA at the end), and is a multiple of 4096, too."); if (verbose) DTPRINT(_(" Copying file in RAM. %s\n"), msg); ASSERT(mmp_copy==NULL, "Internal error: mmp has already been copied due to abrupt non-eol ending, so it does not end with 2 or more eol.", 1/*dummy arg for macro*/); // #nocov copyFile(fileSize, msg, verbose); @@ -1910,8 +1909,7 @@ int freadMain(freadMainArgs _args) { if (type[j]==CT_DROP) { size[j]=0; ndrop++; continue; } if (type[j]> of inherent type '%s' down to '%s' ignored. Only overrides to a higher type are currently supported. ") \ - "If this was intended, please coerce to the lower type afterwards.", + DTWARN(_("Attempt to override column %d <<%.*s>> of inherent type '%s' down to '%s' ignored. Only overrides to a higher type are currently supported. If this was intended, please coerce to the lower type afterwards."), j+1, colNames[j].len, colNamesAnchor+colNames[j].off, typeName[tmpType[j]], typeName[type[j]]); } type[j] = tmpType[j]; @@ -2214,7 +2212,7 @@ int freadMain(freadMainArgs _args) { if (verbose) { char temp[1001]; int len = snprintf(temp, 1000, - "Column %d (\"%.*s\") bumped from '%s' to '%s' due to <<%.*s>> on row %llu\n", + _("Column %d (\"%.*s\") bumped from '%s' to '%s' due to <<%.*s>> on row %llu\n"), j+1, colNames[j].len, colNamesAnchor + colNames[j].off, typeName[abs(joldType)], typeName[abs(thisType)], (int)(tch-fieldStart), fieldStart, (llu)(ctx.DTi+myNrow)); diff --git a/src/freadR.c b/src/freadR.c index d8897801b1..2834010074 100644 --- a/src/freadR.c +++ b/src/freadR.c @@ -316,7 +316,7 @@ bool userOverride(int8_t *type, lenOff *colNames, const char *anchor, int ncol) } else if (selectColClasses==false) { if (LENGTH(colClassesSxp)!=ncol) STOP(_("colClasses= is an unnamed vector of types, length %d, but there are %d columns in the input. To specify types for a subset of columns, you can use ") - "a named vector, list format, or specify types using select= instead of colClasses=. Please see examples in ?fread.", LENGTH(colClassesSxp), ncol); + _("a named vector, list format, or specify types using select= instead of colClasses=. Please see examples in ?fread."), LENGTH(colClassesSxp), ncol); for (int i=0; imessage[0]), 500, "%s: window width longer than input vector, returning all NA vector\n", __func__); + snprintf(end(ans->message[0]), 500, _("%s: window width longer than input vector, returning all NA vector\n"), __func__); // implicit n_message limit discussed here: https://github.com/Rdatatable/data.table/issues/3423#issuecomment-487722586 for (int i=0; idbl_v[i] = fill; @@ -33,14 +33,14 @@ void frollmean(unsigned int algo, double *x, uint64_t nx, ans_t *ans, int k, int if (ans->status < 3 && align < 1) { // align center or left, only when no errors occurred int k_ = align==-1 ? k-1 : floor(k/2); // offset to shift if (verbose) - snprintf(end(ans->message[0]), 500, "%s: align %d, shift answer by %d\n", __func__, align, -k_); + snprintf(end(ans->message[0]), 500, _("%s: align %d, shift answer by %d\n"), __func__, align, -k_); memmove((char *)ans->dbl_v, (char *)ans->dbl_v + (k_*sizeof(double)), (nx-k_)*sizeof(double)); // apply shift to achieve expected align for (uint64_t i=nx-k_; idbl_v[i] = fill; } } if (verbose) - snprintf(end(ans->message[0]), 500, "%s: processing algo %u took %.3fs\n", __func__, algo, omp_get_wtime()-tic); + snprintf(end(ans->message[0]), 500, _("%s: processing algo %u took %.3fs\n"), __func__, algo, omp_get_wtime()-tic); } /* fast rolling mean - fast * when no info on NA (hasNA argument) then assume no NAs run faster version @@ -49,7 +49,7 @@ void frollmean(unsigned int algo, double *x, uint64_t nx, ans_t *ans, int k, int */ void frollmeanFast(double *x, uint64_t nx, ans_t *ans, int k, double fill, bool narm, int hasna, bool verbose) { if (verbose) - snprintf(end(ans->message[0]), 500, "%s: running for input length %llu, window %d, hasna %d, narm %d\n", __func__, (unsigned long long int)nx, k, hasna, (int)narm); + snprintf(end(ans->message[0]), 500, _("%s: running for input length %llu, window %d, hasna %d, narm %d\n"), __func__, (unsigned long long int)nx, k, hasna, (int)narm); long double w = 0.0; // sliding window aggregate bool truehasna = hasna>0; // flag to re-run with NA support if NAs detected if (!truehasna) { @@ -69,20 +69,20 @@ void frollmeanFast(double *x, uint64_t nx, ans_t *ans, int k, double fill, bool if (!R_FINITE((double) w)) { // mark to re-run with NA care if (hasna==-1) { // raise warning ans->status = 2; - snprintf(end(ans->message[2]), 500, "%s: hasNA=FALSE used but NA (or other non-finite) value(s) are present in input, use default hasNA=NA to avoid this warning", __func__); + snprintf(end(ans->message[2]), 500, _("%s: hasNA=FALSE used but NA (or other non-finite) value(s) are present in input, use default hasNA=NA to avoid this warning"), __func__); } if (verbose) - snprintf(end(ans->message[0]), 500, "%s: NA (or other non-finite) value(s) are present in input, re-running with extra care for NAs\n", __func__); + snprintf(end(ans->message[0]), 500, _("%s: NA (or other non-finite) value(s) are present in input, re-running with extra care for NAs\n"), __func__); w = 0.0; truehasna = true; } } else { // early stopping branch when NAs detected in first k obs if (hasna==-1) { // raise warning ans->status = 2; - snprintf(end(ans->message[2]), 500, "%s: hasNA=FALSE used but NA (or other non-finite) value(s) are present in input, use default hasNA=NA to avoid this warning", __func__); + snprintf(end(ans->message[2]), 500, _("%s: hasNA=FALSE used but NA (or other non-finite) value(s) are present in input, use default hasNA=NA to avoid this warning"), __func__); } if (verbose) - snprintf(end(ans->message[0]), 500, "%s: NA (or other non-finite) value(s) are present in input, skip non-NA attempt and run with extra care for NAs\n", __func__); + snprintf(end(ans->message[0]), 500, _("%s: NA (or other non-finite) value(s) are present in input, skip non-NA attempt and run with extra care for NAs\n"), __func__); w = 0.0; truehasna = true; } @@ -138,7 +138,7 @@ void frollmeanFast(double *x, uint64_t nx, ans_t *ans, int k, double fill, bool */ void frollmeanExact(double *x, uint64_t nx, ans_t *ans, int k, double fill, bool narm, int hasna, bool verbose) { if (verbose) - snprintf(end(ans->message[0]), 500, "%s: running in parallel for input length %llu, window %d, hasna %d, narm %d\n", __func__, (unsigned long long int)nx, k, hasna, (int)narm); + snprintf(end(ans->message[0]), 500, _("%s: running in parallel for input length %llu, window %d, hasna %d, narm %d\n"), __func__, (unsigned long long int)nx, k, hasna, (int)narm); for (int i=0; idbl_v[i] = fill; } @@ -170,13 +170,13 @@ void frollmeanExact(double *x, uint64_t nx, ans_t *ans, int k, double fill, bool if (truehasna) { if (hasna==-1) { // raise warning ans->status = 2; - snprintf(end(ans->message[2]), 500, "%s: hasNA=FALSE used but NA (or other non-finite) value(s) are present in input, use default hasNA=NA to avoid this warning", __func__); + snprintf(end(ans->message[2]), 500, _("%s: hasNA=FALSE used but NA (or other non-finite) value(s) are present in input, use default hasNA=NA to avoid this warning"), __func__); } if (verbose) { if (narm) { - snprintf(end(ans->message[0]), 500, "%s: NA (or other non-finite) value(s) are present in input, re-running with extra care for NAs\n", __func__); + snprintf(end(ans->message[0]), 500, _("%s: NA (or other non-finite) value(s) are present in input, re-running with extra care for NAs\n"), __func__); } else { - snprintf(end(ans->message[0]), 500, "%s: NA (or other non-finite) value(s) are present in input, na.rm was FALSE so in 'exact' implementation NAs were handled already, no need to re-run\n", __func__); + snprintf(end(ans->message[0]), 500, _("%s: NA (or other non-finite) value(s) are present in input, na.rm was FALSE so in 'exact' implementation NAs were handled already, no need to re-run\n"), __func__); } } } @@ -224,7 +224,7 @@ void frollmeanExact(double *x, uint64_t nx, ans_t *ans, int k, double fill, bool void frollsum(unsigned int algo, double *x, uint64_t nx, ans_t *ans, int k, int align, double fill, bool narm, int hasna, bool verbose) { if (nx < k) { if (verbose) - snprintf(end(ans->message[0]), 500, "%s: window width longer than input vector, returning all NA vector\n", __func__); + snprintf(end(ans->message[0]), 500, _("%s: window width longer than input vector, returning all NA vector\n"), __func__); for (int i=0; idbl_v[i] = fill; } @@ -241,18 +241,18 @@ void frollsum(unsigned int algo, double *x, uint64_t nx, ans_t *ans, int k, int if (ans->status < 3 && align < 1) { int k_ = align==-1 ? k-1 : floor(k/2); if (verbose) - snprintf(end(ans->message[0]), 500, "%s: align %d, shift answer by %d\n", __func__, align, -k_); + snprintf(end(ans->message[0]), 500, _("%s: align %d, shift answer by %d\n"), __func__, align, -k_); memmove((char *)ans->dbl_v, (char *)ans->dbl_v + (k_*sizeof(double)), (nx-k_)*sizeof(double)); for (uint64_t i=nx-k_; idbl_v[i] = fill; } } if (verbose) - snprintf(end(ans->message[0]), 500, "%s: processing algo %u took %.3fs\n", __func__, algo, omp_get_wtime()-tic); + snprintf(end(ans->message[0]), 500, _("%s: processing algo %u took %.3fs\n"), __func__, algo, omp_get_wtime()-tic); } void frollsumFast(double *x, uint64_t nx, ans_t *ans, int k, double fill, bool narm, int hasna, bool verbose) { if (verbose) - snprintf(end(ans->message[0]), 500, "%s: running for input length %llu, window %d, hasna %d, narm %d\n", __func__, (unsigned long long int)nx, k, hasna, (int)narm); + snprintf(end(ans->message[0]), 500, _("%s: running for input length %llu, window %d, hasna %d, narm %d\n"), __func__, (unsigned long long int)nx, k, hasna, (int)narm); long double w = 0.0; bool truehasna = hasna>0; if (!truehasna) { @@ -272,20 +272,20 @@ void frollsumFast(double *x, uint64_t nx, ans_t *ans, int k, double fill, bool n if (!R_FINITE((double) w)) { if (hasna==-1) { ans->status = 2; - snprintf(end(ans->message[2]), 500, "%s: hasNA=FALSE used but NA (or other non-finite) value(s) are present in input, use default hasNA=NA to avoid this warning", __func__); + snprintf(end(ans->message[2]), 500, _("%s: hasNA=FALSE used but NA (or other non-finite) value(s) are present in input, use default hasNA=NA to avoid this warning"), __func__); } if (verbose) - snprintf(end(ans->message[0]), 500, "%s: NA (or other non-finite) value(s) are present in input, re-running with extra care for NAs\n", __func__); + snprintf(end(ans->message[0]), 500, _("%s: NA (or other non-finite) value(s) are present in input, re-running with extra care for NAs\n"), __func__); w = 0.0; truehasna = true; } } else { if (hasna==-1) { ans->status = 2; - snprintf(end(ans->message[2]), 500, "%s: hasNA=FALSE used but NA (or other non-finite) value(s) are present in input, use default hasNA=NA to avoid this warning", __func__); + snprintf(end(ans->message[2]), 500, _("%s: hasNA=FALSE used but NA (or other non-finite) value(s) are present in input, use default hasNA=NA to avoid this warning"), __func__); } if (verbose) - snprintf(end(ans->message[0]), 500, "%s: NA (or other non-finite) value(s) are present in input, skip non-NA attempt and run with extra care for NAs\n", __func__); + snprintf(end(ans->message[0]), 500, _("%s: NA (or other non-finite) value(s) are present in input, skip non-NA attempt and run with extra care for NAs\n"), __func__); w = 0.0; truehasna = true; } @@ -336,7 +336,7 @@ void frollsumFast(double *x, uint64_t nx, ans_t *ans, int k, double fill, bool n } void frollsumExact(double *x, uint64_t nx, ans_t *ans, int k, double fill, bool narm, int hasna, bool verbose) { if (verbose) - snprintf(end(ans->message[0]), 500, "%s: running in parallel for input length %llu, window %d, hasna %d, narm %d\n", __func__, (unsigned long long int)nx, k, hasna, (int)narm); + snprintf(end(ans->message[0]), 500, _("%s: running in parallel for input length %llu, window %d, hasna %d, narm %d\n"), __func__, (unsigned long long int)nx, k, hasna, (int)narm); for (int i=0; idbl_v[i] = fill; } @@ -363,13 +363,13 @@ void frollsumExact(double *x, uint64_t nx, ans_t *ans, int k, double fill, bool if (truehasna) { if (hasna==-1) { ans->status = 2; - snprintf(end(ans->message[2]), 500, "%s: hasNA=FALSE used but NA (or other non-finite) value(s) are present in input, use default hasNA=NA to avoid this warning", __func__); + snprintf(end(ans->message[2]), 500, _("%s: hasNA=FALSE used but NA (or other non-finite) value(s) are present in input, use default hasNA=NA to avoid this warning"), __func__); } if (verbose) { if (narm) { - snprintf(end(ans->message[0]), 500, "%s: NA (or other non-finite) value(s) are present in input, re-running with extra care for NAs\n", __func__); + snprintf(end(ans->message[0]), 500, _("%s: NA (or other non-finite) value(s) are present in input, re-running with extra care for NAs\n"), __func__); } else { - snprintf(end(ans->message[0]), 500, "%s: NA (or other non-finite) value(s) are present in input, na.rm was FALSE so in 'exact' implementation NAs were handled already, no need to re-run\n", __func__); + snprintf(end(ans->message[0]), 500, _("%s: NA (or other non-finite) value(s) are present in input, na.rm was FALSE so in 'exact' implementation NAs were handled already, no need to re-run\n"), __func__); } } } diff --git a/src/frolladaptive.c b/src/frolladaptive.c index 9dc5581a83..2da77343d4 100644 --- a/src/frolladaptive.c +++ b/src/frolladaptive.c @@ -20,7 +20,7 @@ void fadaptiverollmean(unsigned int algo, double *x, uint64_t nx, ans_t *ans, in fadaptiverollmeanExact(x, nx, ans, k, fill, narm, hasna, verbose); } if (verbose) - snprintf(end(ans->message[0]), 500, "%s: processing algo %u took %.3fs\n", __func__, algo, omp_get_wtime()-tic); + snprintf(end(ans->message[0]), 500, _("%s: processing algo %u took %.3fs\n"), __func__, algo, omp_get_wtime()-tic); // implicit n_message limit discussed here: https://github.com/Rdatatable/data.table/issues/3423#issuecomment-487722586 } /* fast adaptive rolling mean - fast @@ -30,13 +30,13 @@ void fadaptiverollmean(unsigned int algo, double *x, uint64_t nx, ans_t *ans, in */ void fadaptiverollmeanFast(double *x, uint64_t nx, ans_t *ans, int *k, double fill, bool narm, int hasna, bool verbose) { if (verbose) - snprintf(end(ans->message[0]), 500, "%s: running for input length %llu, hasna %d, narm %d\n", __func__, (unsigned long long int)nx, hasna, (int) narm); + snprintf(end(ans->message[0]), 500, _("%s: running for input length %llu, hasna %d, narm %d\n"), __func__, (unsigned long long int)nx, hasna, (int) narm); bool truehasna = hasna>0; // flag to re-run if NAs detected long double w = 0.0; double *cs = malloc(nx*sizeof(double)); // cumsum vector, same as double cs[nx] but no segfault if (!cs) { // # nocov start ans->status = 3; // raise error - snprintf(ans->message[3], 500, "%s: Unable to allocate memory for cumsum", __func__); + snprintf(ans->message[3], 500, _("%s: Unable to allocate memory for cumsum"), __func__); free(cs); return; } // # nocov end @@ -59,10 +59,10 @@ void fadaptiverollmeanFast(double *x, uint64_t nx, ans_t *ans, int *k, double fi } else { // update truehasna flag if NAs detected if (hasna==-1) { // raise warning ans->status = 2; - snprintf(end(ans->message[2]), 500, "%s: hasNA=FALSE used but NA (or other non-finite) value(s) are present in input, use default hasNA=NA to avoid this warning", __func__); + snprintf(end(ans->message[2]), 500, _("%s: hasNA=FALSE used but NA (or other non-finite) value(s) are present in input, use default hasNA=NA to avoid this warning"), __func__); } if (verbose) - snprintf(end(ans->message[0]), 500, "%s: NA (or other non-finite) value(s) are present in input, re-running with extra care for NAs\n", __func__); + snprintf(end(ans->message[0]), 500, _("%s: NA (or other non-finite) value(s) are present in input, re-running with extra care for NAs\n"), __func__); w = 0.0; truehasna = true; } @@ -72,7 +72,7 @@ void fadaptiverollmeanFast(double *x, uint64_t nx, ans_t *ans, int *k, double fi uint64_t *cn = malloc(nx*sizeof(uint64_t)); // cumulative NA counter, used the same way as cumsum, same as uint64_t cn[nx] but no segfault if (!cn) { // # nocov start ans->status = 3; // raise error - snprintf(ans->message[3], 500, "%s: Unable to allocate memory for cum NA counter", __func__); + snprintf(ans->message[3], 500, _("%s: Unable to allocate memory for cum NA counter"), __func__); free(cs); free(cn); return; @@ -115,7 +115,7 @@ void fadaptiverollmeanFast(double *x, uint64_t nx, ans_t *ans, int *k, double fi */ void fadaptiverollmeanExact(double *x, uint64_t nx, ans_t *ans, int *k, double fill, bool narm, int hasna, bool verbose) { if (verbose) - snprintf(end(ans->message[0]), 500, "%s: running in parallel for input length %llu, hasna %d, narm %d\n", __func__, (unsigned long long int)nx, hasna, (int) narm); + snprintf(end(ans->message[0]), 500, _("%s: running in parallel for input length %llu, hasna %d, narm %d\n"), __func__, (unsigned long long int)nx, hasna, (int) narm); bool truehasna = hasna>0; // flag to re-run if NAs detected if (!truehasna || !narm) { // narm=FALSE handled here as NAs properly propagated in exact algo #pragma omp parallel for num_threads(getDTthreads()) @@ -148,13 +148,13 @@ void fadaptiverollmeanExact(double *x, uint64_t nx, ans_t *ans, int *k, double f if (truehasna) { if (hasna==-1) { // raise warning ans->status = 2; - snprintf(end(ans->message[2]), 500, "%s: hasNA=FALSE used but NA (or other non-finite) value(s) are present in input, use default hasNA=NA to avoid this warning", __func__); + snprintf(end(ans->message[2]), 500, _("%s: hasNA=FALSE used but NA (or other non-finite) value(s) are present in input, use default hasNA=NA to avoid this warning"), __func__); } if (verbose) { if (narm) { - snprintf(end(ans->message[0]), 500, "%s: NA (or other non-finite) value(s) are present in input, re-running with extra care for NAs\n", __func__); + snprintf(end(ans->message[0]), 500, _("%s: NA (or other non-finite) value(s) are present in input, re-running with extra care for NAs\n"), __func__); } else { - snprintf(end(ans->message[0]), 500, "%s: NA (or other non-finite) value(s) are present in input, na.rm was FALSE so in 'exact' implementation NAs were handled already, no need to re-run\n", __func__); + snprintf(end(ans->message[0]), 500, _("%s: NA (or other non-finite) value(s) are present in input, na.rm was FALSE so in 'exact' implementation NAs were handled already, no need to re-run\n"), __func__); } } } @@ -215,17 +215,17 @@ void fadaptiverollsum(unsigned int algo, double *x, uint64_t nx, ans_t *ans, int fadaptiverollsumExact(x, nx, ans, k, fill, narm, hasna, verbose); } if (verbose) - snprintf(end(ans->message[0]), 500, "%s: processing algo %u took %.3fs\n", __func__, algo, omp_get_wtime()-tic); + snprintf(end(ans->message[0]), 500, _("%s: processing algo %u took %.3fs\n"), __func__, algo, omp_get_wtime()-tic); } void fadaptiverollsumFast(double *x, uint64_t nx, ans_t *ans, int *k, double fill, bool narm, int hasna, bool verbose) { if (verbose) - snprintf(end(ans->message[0]), 500, "%s: running for input length %llu, hasna %d, narm %d\n", __func__, (unsigned long long int)nx, hasna, (int) narm); + snprintf(end(ans->message[0]), 500, _("%s: running for input length %llu, hasna %d, narm %d\n"), __func__, (unsigned long long int)nx, hasna, (int) narm); bool truehasna = hasna>0; long double w = 0.0; double *cs = malloc(nx*sizeof(double)); if (!cs) { // # nocov start ans->status = 3; - snprintf(ans->message[3], 500, "%s: Unable to allocate memory for cumsum", __func__); + snprintf(ans->message[3], 500, _("%s: Unable to allocate memory for cumsum"), __func__); free(cs); return; } // # nocov end @@ -248,10 +248,10 @@ void fadaptiverollsumFast(double *x, uint64_t nx, ans_t *ans, int *k, double fil } else { if (hasna==-1) { ans->status = 2; - snprintf(end(ans->message[2]), 500, "%s: hasNA=FALSE used but NA (or other non-finite) value(s) are present in input, use default hasNA=NA to avoid this warning", __func__); + snprintf(end(ans->message[2]), 500, _("%s: hasNA=FALSE used but NA (or other non-finite) value(s) are present in input, use default hasNA=NA to avoid this warning"), __func__); } if (verbose) - snprintf(end(ans->message[0]), 500, "%s: NA (or other non-finite) value(s) are present in input, re-running with extra care for NAs\n", __func__); + snprintf(end(ans->message[0]), 500, _("%s: NA (or other non-finite) value(s) are present in input, re-running with extra care for NAs\n"), __func__); w = 0.0; truehasna = true; } @@ -261,7 +261,7 @@ void fadaptiverollsumFast(double *x, uint64_t nx, ans_t *ans, int *k, double fil uint64_t *cn = malloc(nx*sizeof(uint64_t)); if (!cn) { // # nocov start ans->status = 3; - snprintf(ans->message[3], 500, "%s: Unable to allocate memory for cum NA counter", __func__); + snprintf(ans->message[3], 500, _("%s: Unable to allocate memory for cum NA counter"), __func__); free(cs); free(cn); return; @@ -299,7 +299,7 @@ void fadaptiverollsumFast(double *x, uint64_t nx, ans_t *ans, int *k, double fil } void fadaptiverollsumExact(double *x, uint64_t nx, ans_t *ans, int *k, double fill, bool narm, int hasna, bool verbose) { if (verbose) - snprintf(end(ans->message[0]), 500, "%s: running in parallel for input length %llu, hasna %d, narm %d\n", __func__, (unsigned long long int)nx, hasna, (int) narm); + snprintf(end(ans->message[0]), 500, _("%s: running in parallel for input length %llu, hasna %d, narm %d\n"), __func__, (unsigned long long int)nx, hasna, (int) narm); bool truehasna = hasna>0; if (!truehasna || !narm) { #pragma omp parallel for num_threads(getDTthreads()) @@ -327,13 +327,13 @@ void fadaptiverollsumExact(double *x, uint64_t nx, ans_t *ans, int *k, double fi if (truehasna) { if (hasna==-1) { ans->status = 2; - snprintf(end(ans->message[2]), 500, "%s: hasNA=FALSE used but NA (or other non-finite) value(s) are present in input, use default hasNA=NA to avoid this warning", __func__); + snprintf(end(ans->message[2]), 500, _("%s: hasNA=FALSE used but NA (or other non-finite) value(s) are present in input, use default hasNA=NA to avoid this warning"), __func__); } if (verbose) { if (narm) { - snprintf(end(ans->message[0]), 500, "%s: NA (or other non-finite) value(s) are present in input, re-running with extra care for NAs\n", __func__); + snprintf(end(ans->message[0]), 500, _("%s: NA (or other non-finite) value(s) are present in input, re-running with extra care for NAs\n"), __func__); } else { - snprintf(end(ans->message[0]), 500, "%s: NA (or other non-finite) value(s) are present in input, na.rm was FALSE so in 'exact' implementation NAs were handled already, no need to re-run\n", __func__); + snprintf(end(ans->message[0]), 500, _("%s: NA (or other non-finite) value(s) are present in input, na.rm was FALSE so in 'exact' implementation NAs were handled already, no need to re-run\n"), __func__); } } } diff --git a/src/fwrite.c b/src/fwrite.c index a12cc65059..bd1185dee2 100644 --- a/src/fwrite.c +++ b/src/fwrite.c @@ -678,8 +678,8 @@ void fwriteMain(fwriteMainArgs args) // # nocov start int erropen = errno; STOP(access( args.filename, F_OK ) != -1 ? - "%s: '%s'. Failed to open existing file for writing. Do you have write permission to it? Is this Windows and does another process such as Excel have it open?" : - "%s: '%s'. Unable to create new file for writing (it does not exist already). Do you have permission to write here, is there space on the disk and does the path exist?", + _("%s: '%s'. Failed to open existing file for writing. Do you have write permission to it? Is this Windows and does another process such as Excel have it open?") : + _("%s: '%s'. Unable to create new file for writing (it does not exist already). Do you have permission to write here, is there space on the disk and does the path exist?"), strerror(erropen), args.filename); // # nocov end } @@ -888,8 +888,7 @@ void fwriteMain(fwriteMainArgs args) int ETA = (int)((args.nrow-end)*((now-startTime)/end)); if (hasPrinted || ETA >= 2) { if (args.verbose && !hasPrinted) DTPRINT(_("\n")); - DTPRINT(_("\rWritten %.1f%% of %d rows in %d secs using %d thread%s. ") - _("maxBuffUsed=%d%%. ETA %d secs. "), + DTPRINT(_("\rWritten %.1f%% of %d rows in %d secs using %d thread%s. maxBuffUsed=%d%%. ETA %d secs. "), (100.0*end)/args.nrow, args.nrow, (int)(now-startTime), nth, nth==1?"":"s", maxBuffUsedPC, ETA); // TODO: use progress() as in fread diff --git a/src/fwriteR.c b/src/fwriteR.c index 96352837c3..115f2a761b 100644 --- a/src/fwriteR.c +++ b/src/fwriteR.c @@ -95,8 +95,8 @@ const int getMaxListItemLen(const SEXP *col, const int64_t n) { if (this==last) continue; // no point calling LENGTH() again on the same string; LENGTH is unlikely as fast as single pointer compare int32_t wf = whichWriter(this); if (TYPEOF(this)==VECSXP || wf==INT32_MIN || isFactor(this)) { - error(_("Row %d of list column is type '%s' - not yet implemented. fwrite() can write list columns containing items which are atomic vectors of") \ - " type logical, integer, integer64, double, complex and character.", i+1, isFactor(this) ? "factor" : type2char(TYPEOF(this))); + error(_("Row %d of list column is type '%s' - not yet implemented. fwrite() can write list columns containing items which are atomic vectors of type logical, integer, integer64, double, complex and character."), + i+1, isFactor(this) ? "factor" : type2char(TYPEOF(this))); } int width = writerMaxLen[wf]; if (width==0) { @@ -290,4 +290,3 @@ SEXP fwriteR( UNPROTECT(protecti); return(R_NilValue); } - diff --git a/src/gsumm.c b/src/gsumm.c index 685aafa977..e106ddc336 100644 --- a/src/gsumm.c +++ b/src/gsumm.c @@ -989,8 +989,7 @@ SEXP gmedian(SEXP x, SEXP narmArg) { }} break; default: - error(_("Type '%s' not supported by GForce median (gmedian). Either add the prefix stats::median(.) or turn ") - "off GForce optimization using options(datatable.optimize=1)", type2char(TYPEOF(x))); + error(_("Type '%s' not supported by GForce median (gmedian). Either add the prefix stats::median(.) or turn off GForce optimization using options(datatable.optimize=1)"), type2char(TYPEOF(x))); } if (!isInt64) copyMostAttrib(x, ans); // else the integer64 class needs to be dropped since double is always returned by gmedian diff --git a/src/rbindlist.c b/src/rbindlist.c index 4b0d0e0f42..a882648305 100644 --- a/src/rbindlist.c +++ b/src/rbindlist.c @@ -193,8 +193,8 @@ SEXP rbindlist(SEXP l, SEXP usenamesArg, SEXP fillArg, SEXP idcolArg) // Ensure no missings in both cases, and (when usenames==NA) all columns in same order too // We proceeded earlier as if fill was true, so varying ncol items will have missings here char buff[1001] = ""; - const char *extra = usenames==TRUE?"":" use.names='check' (default from v1.12.2) emits this message and proceeds as if use.names=FALSE for "\ - " backwards compatibility. See news item 5 in v1.12.2 for options to control this message."; + const char *extra = usenames==TRUE?"":_(" use.names='check' (default from v1.12.2) emits this message and proceeds as if use.names=FALSE for "\ + " backwards compatibility. See news item 5 in v1.12.2 for options to control this message."); for (int i=0; i=last) { // if tl>=0 then also tl>=last because last<=0 if (tl>=0) { sprintf(warnStr, // not direct warning as we're inside tl region - "Column %d of item %d is an ordered factor but level %d ['%s'] is missing from the ordered levels from column %d of item %d. " \ - "Each set of ordered factor levels should be an ordered subset of the first longest. A regular factor will be created for this column.", + _("Column %d of item %d is an ordered factor but level %d ['%s'] is missing from the ordered levels from column %d of item %d. " \ + "Each set of ordered factor levels should be an ordered subset of the first longest. A regular factor will be created for this column."), w+1, i+1, k+1, CHAR(s), longestW+1, longestI+1); } else { sprintf(warnStr, - "Column %d of item %d is an ordered factor with '%s'<'%s' in its levels. But '%s'<'%s' in the ordered levels from column %d of item %d. " \ - "A regular factor will be created for this column due to this ambiguity.", + _("Column %d of item %d is an ordered factor with '%s'<'%s' in its levels. But '%s'<'%s' in the ordered levels from column %d of item %d. " \ + "A regular factor will be created for this column due to this ambiguity."), w+1, i+1, CHAR(levelsD[k-1]), CHAR(s), CHAR(s), CHAR(levelsD[k-1]), longestW+1, longestI+1); // k>=1 (so k-1 is ok) because when k==0 last==0 and this branch wouldn't happen } From 9d596ac9717c6edc5a20c20c5ee4a8fc87f2bf48 Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Wed, 16 Oct 2019 01:43:05 +0800 Subject: [PATCH 10/78] cannot use _() with \r --- src/fwrite.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/fwrite.c b/src/fwrite.c index bd1185dee2..7099f8bf83 100644 --- a/src/fwrite.c +++ b/src/fwrite.c @@ -888,9 +888,9 @@ void fwriteMain(fwriteMainArgs args) int ETA = (int)((args.nrow-end)*((now-startTime)/end)); if (hasPrinted || ETA >= 2) { if (args.verbose && !hasPrinted) DTPRINT(_("\n")); - DTPRINT(_("\rWritten %.1f%% of %d rows in %d secs using %d thread%s. maxBuffUsed=%d%%. ETA %d secs. "), - (100.0*end)/args.nrow, args.nrow, (int)(now-startTime), nth, nth==1?"":"s", - maxBuffUsedPC, ETA); + DTPRINT("\rWritten %.1f%% of %d rows in %d secs using %d thread%s. maxBuffUsed=%d%%. ETA %d secs. ", + (100.0*end)/args.nrow, args.nrow, (int)(now-startTime), nth, nth==1?"":"s", + maxBuffUsedPC, ETA); // TODO: use progress() as in fread nextTime = now+1; hasPrinted = true; @@ -928,7 +928,7 @@ void fwriteMain(fwriteMainArgs args) if (hasPrinted) { // # nocov start if (!failed) { // clear the progress meter - DTPRINT(_("\r ") + DTPRINT("\r " " \r"); } else { // don't clear any potentially helpful output before error DTPRINT(_("\n")); From 710400a45c7998a19417bf899474eb7208e7f2f0 Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Wed, 16 Oct 2019 01:43:23 +0800 Subject: [PATCH 11/78] update .pot for src files --- src/data.table.pot | 2226 ++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 2064 insertions(+), 162 deletions(-) diff --git a/src/data.table.pot b/src/data.table.pot index eef36dc413..1bb137587e 100644 --- a/src/data.table.pot +++ b/src/data.table.pot @@ -1,5 +1,5 @@ # SOME DESCRIPTIVE TITLE. -# Copyright (C) 2019 +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the PACKAGE package. # FIRST AUTHOR , YEAR. # @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: PACKAGE VERSION\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-10-13 16:58+0800\n" +"POT-Creation-Date: 2019-10-16 01:42+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -30,6 +30,15 @@ msgstr "" msgid "Internal error: finalizer sees l=%d, tl=%d" msgstr "" +#: assign.c:123 +msgid "" +".internal.selfref ptr is NULL. This is expected and normal for a data.table " +"loaded from disk. Please remember to always setDT() immediately after " +"loading to prevent unexpected behavior. If this table was not loaded from " +"disk or you've already run setDT(), please report to data.table issue " +"tracker.\n" +msgstr "" + #: assign.c:126 msgid "Internal error: .internal.selfref ptr is not NULL or R_NilValue" msgstr "" @@ -72,6 +81,22 @@ msgid "" "table issue tracker: tl (%d) < l (%d) but tl of class is marked." msgstr "" +#: assign.c:219 +#, c-format +msgid "" +"tl (%d) is greater than 10,000 items over-allocated (l = %d). If you didn't " +"set the datatable.alloccol option to be very large, please report to data." +"table issue tracker including the result of sessionInfo()." +msgstr "" + +#: assign.c:221 +#, c-format +msgid "" +"Attempt to reduce allocation from %d to %d ignored. Can only increase " +"allocation via shallow copy. Please do not use DT[...]<- or DT$someCol<-. " +"Use := inside DT[...] instead." +msgstr "" + #: assign.c:229 msgid "" "Has getOption('datatable.alloccol') somehow become unset? It should be a " @@ -135,6 +160,17 @@ msgid "" "typeof() should always return 'list' for data.table." msgstr "" +#: assign.c:317 +#, c-format +msgid "Assigning to all %d rows\n" +msgstr "" + +#: assign.c:322 +msgid "" +"Coerced i from numeric to integer. Please pass integer for efficiency; e.g., " +"2L rather than 2" +msgstr "" + #: assign.c:325 #, c-format msgid "" @@ -148,6 +184,20 @@ msgstr "" msgid "i[%d] is %d which is out of range [1,nrow=%d]." msgstr "" +#: assign.c:334 +#, c-format +msgid "Assigning to %d row subset of %d rows\n" +msgstr "" + +#: assign.c:342 +#, c-format +msgid "Added %d new column%s initialized with all-NA\n" +msgstr "" + +#: assign.c:347 +msgid "length(LHS)==0; no columns to delete or assign RHS to." +msgstr "" + #: assign.c:361 msgid "" "set() on a data.frame is for changing existing columns, not adding new ones. " @@ -155,6 +205,12 @@ msgid "" "shallow copy." msgstr "" +#: assign.c:372 +msgid "" +"Coerced j from numeric to integer. Please pass integer for efficiency; e.g., " +"2L rather than 2" +msgstr "" + #: assign.c:375 #, c-format msgid "" @@ -172,20 +228,38 @@ msgstr "" msgid "newcolnames is supplied but isn't a character vector" msgstr "" +#: assign.c:380 +#, c-format +msgid "RHS_list_of_columns == %s\n" +msgstr "" + +#: assign.c:385 +#, c-format +msgid "" +"RHS_list_of_columns revised to true because RHS list has 1 item which is " +"NULL, or whose length %d is either 1 or targetlen (%d). Please unwrap RHS.\n" +msgstr "" + #: assign.c:390 #, c-format msgid "" "Supplied %d columns to be assigned an empty list (which may be an empty data." -"table or data.frame since they are lists too). " +"table or data.frame since they are lists too). To delete multiple columns " +"use NULL instead. To add multiple empty list columns, use list(list())." +msgstr "" + +#: assign.c:395 +#, c-format +msgid "Recycling single RHS list item across %d columns. Please unwrap RHS.\n" msgstr "" -#: assign.c:398 +#: assign.c:397 #, c-format msgid "" "Supplied %d columns to be assigned %d items. Please see NEWS for v1.12.2." msgstr "" -#: assign.c:406 +#: assign.c:405 #, c-format msgid "" "Item %d of column numbers in j is %d which is outside range [1,ncol=%d]. " @@ -193,18 +267,18 @@ msgid "" "Please use a data.table for that." msgstr "" -#: assign.c:407 +#: assign.c:406 #, c-format msgid "" "Item %d of column numbers in j is %d which is outside range [1,ncol=%d]. Use " "column names instead in j to add new columns." msgstr "" -#: assign.c:412 +#: assign.c:411 msgid "When deleting columns, i should not be provided" msgstr "" -#: assign.c:418 +#: assign.c:417 #, c-format msgid "" "RHS of assignment to existing column '%s' is zero length but not NULL. If " @@ -215,27 +289,38 @@ msgid "" "new column." msgstr "" -#: assign.c:423 +#: assign.c:422 #, c-format msgid "" "Internal error in assign.c: length(newcolnames)=%d, length(names)=%d, coln=%d" msgstr "" -#: assign.c:435 +#: assign.c:424 +#, c-format +msgid "Column '%s' does not exist to remove" +msgstr "" + +#: assign.c:430 +#, c-format +msgid "%d column matrix RHS of := will be treated as one vector" +msgstr "" + +#: assign.c:434 #, c-format msgid "" "Can't assign to column '%s' (type 'factor') a value of type '%s' (not " "character, factor, integer or numeric)" msgstr "" -#: assign.c:440 +#: assign.c:439 #, c-format msgid "" "Supplied %d items to be assigned to %d items of column '%s'. If you wish to " -"'recycle' the RHS please " +"'recycle' the RHS please use rep() to make this intent clear to readers of " +"your code." msgstr "" -#: assign.c:451 +#: assign.c:449 msgid "" "This data.table has either been loaded from disk (e.g. using readRDS()/" "load()) or constructed manually (e.g. using structure()). Please run setDT() " @@ -243,197 +328,254 @@ msgid "" "assigning by reference to it." msgstr "" -#: assign.c:452 +#: assign.c:450 #, c-format msgid "" "Internal error: oldtncol(%d) < oldncol(%d). Please report to data.table " "issue tracker, including result of sessionInfo()." msgstr "" -#: assign.c:456 +#: assign.c:452 +#, c-format +msgid "" +"truelength (%d) is greater than 10,000 items over-allocated (length = %d). " +"See ?truelength. If you didn't set the datatable.alloccol option very large, " +"please report to data.table issue tracker including the result of " +"sessionInfo()." +msgstr "" + +#: assign.c:454 #, c-format msgid "" "Internal error: DT passed to assign has not been allocated enough column " "slots. l=%d, tl=%d, adding %d" msgstr "" -#: assign.c:458 +#: assign.c:456 msgid "" "It appears that at some earlier point, names of this data.table have been " "reassigned. Please ensure to use setnames() rather than names<- or " "colnames<-. Otherwise, please report to data.table issue tracker." msgstr "" -#: assign.c:462 +#: assign.c:460 #, c-format msgid "Internal error: selfrefnames is ok but tl names [%d] != tl [%d]" msgstr "" -#: assign.c:473 +#: assign.c:471 msgid "" "Internal error: earlier error 'When deleting columns, i should not be " "provided' did not happen." msgstr "" -#: assign.c:566 +#: assign.c:482 +#, c-format +msgid "" +"RHS for item %d has been duplicated because NAMED==%d MAYBE_SHARED==%d, but " +"then is being plonked. length(values)==%d; length(cols)==%d)\n" +msgstr "" + +#: assign.c:487 +#, c-format +msgid "Direct plonk of unnamed RHS, no copy. NAMED==%d, MAYBE_SHARED==%d\n" +msgstr "" + +#: assign.c:556 +#, c-format +msgid "" +"Dropping index '%s' as it doesn't have '__' at the beginning of its name. It " +"was very likely created by v1.9.4 of data.table.\n" +msgstr "" + +#: assign.c:564 msgid "Internal error: index name ends with trailing __" msgstr "" -#: assign.c:571 +#: assign.c:569 msgid "Internal error: Couldn't allocate memory for s4." msgstr "" -#: assign.c:582 +#: assign.c:580 msgid "Internal error: Couldn't allocate memory for s5." msgstr "" -#: assign.c:689 +#: assign.c:601 assign.c:617 +#, c-format +msgid "Dropping index '%s' due to an update on a key column\n" +msgstr "" + +#: assign.c:610 +#, c-format +msgid "Shortening index '%s' to '%s' due to an update on a key column\n" +msgstr "" + +#: assign.c:687 #, c-format msgid "Internal error: recycle length error not caught earlier. slen=%d len=%d" msgstr "" -#: assign.c:693 +#: assign.c:691 msgid "Internal error: memrecycle has received NULL colname" msgstr "" -#: assign.c:719 +#: assign.c:717 #, c-format msgid "" "Cannot assign 'factor' to '%s'. Factors can only be assigned to factor, " "character or list columns." msgstr "" -#: assign.c:733 +#: assign.c:731 #, c-format msgid "" "Assigning factor numbers to column %d named '%s'. But %d is outside the " "level range [1,%d]" msgstr "" -#: assign.c:741 +#: assign.c:739 #, c-format msgid "" "Assigning factor numbers to column %d named '%s'. But %f is outside the " "level range [1,%d], or is not a whole number." msgstr "" -#: assign.c:747 +#: assign.c:745 #, c-format msgid "" "Cannot assign '%s' to 'factor'. Factor columns can be assigned factor, " "character, NA in any type, or level numbers." msgstr "" -#: assign.c:768 +#: assign.c:766 msgid "" "Internal error: levels of target are either not unique or have truelength<0" msgstr "" -#: assign.c:807 +#: assign.c:805 #, c-format msgid "Unable to allocate working memory of %d bytes to combine factor levels" msgstr "" -#: assign.c:814 +#: assign.c:812 msgid "Internal error: extra level check sum failed" msgstr "" -#: assign.c:839 +#: assign.c:831 +#, c-format +msgid "" +"Coercing 'character' RHS to '%s' to match the type of the target column " +"(column %d named '%s')." +msgstr "" + +#: assign.c:837 #, c-format msgid "" "Cannot coerce 'list' RHS to 'integer64' to match the type of the target " "column (column %d named '%s')." msgstr "" -#: assign.c:945 +#: assign.c:842 +#, c-format +msgid "" +"Coercing 'list' RHS to '%s' to match the type of the target column (column " +"%d named '%s')." +msgstr "" + +#: assign.c:848 +#, c-format +msgid "Zero-copy coerce when assigning '%s' to '%s' column %d named '%s'.\n" +msgstr "" + +#: assign.c:943 #, c-format msgid "type '%s' cannot be coerced to '%s'" msgstr "" -#: assign.c:1065 +#: assign.c:1063 msgid "" "To assign integer64 to a character column, please use as.character() for " "clarity." msgstr "" -#: assign.c:1076 +#: assign.c:1074 #, c-format msgid "Unsupported column type in assign.c:memrecycle '%s'" msgstr "" -#: assign.c:1123 +#: assign.c:1121 #, c-format msgid "Internal error: writeNA passed a vector of type '%s'" msgstr "" -#: assign.c:1154 +#: assign.c:1152 #, c-format msgid "" "Internal error: savetl_init checks failed (%d %d %p %p). please report to " "data.table issue tracker." msgstr "" -#: assign.c:1162 +#: assign.c:1160 #, c-format msgid "Failed to allocate initial %d items in savetl_init" msgstr "" -#: assign.c:1171 +#: assign.c:1169 #, c-format msgid "" "Internal error: reached maximum %d items for savetl. Please report to data." "table issue tracker." msgstr "" -#: assign.c:1178 +#: assign.c:1176 #, c-format msgid "Failed to realloc saveds to %d items in savetl" msgstr "" -#: assign.c:1184 +#: assign.c:1182 #, c-format msgid "Failed to realloc savedtl to %d items in savetl" msgstr "" -#: assign.c:1207 +#: assign.c:1205 msgid "x must be a character vector" msgstr "" -#: assign.c:1208 +#: assign.c:1206 msgid "'which' must be an integer vector" msgstr "" -#: assign.c:1209 +#: assign.c:1207 msgid "'new' must be a character vector" msgstr "" -#: assign.c:1210 +#: assign.c:1208 #, c-format msgid "'new' is length %d. Should be the same as length of 'which' (%d)" msgstr "" -#: assign.c:1213 +#: assign.c:1211 #, c-format msgid "" "Item %d of 'which' is %d which is outside range of the length %d character " "vector" msgstr "" -#: assign.c:1223 +#: assign.c:1221 msgid "dt passed to setcolorder has no names" msgstr "" -#: assign.c:1225 +#: assign.c:1223 #, c-format msgid "Internal error: dt passed to setcolorder has %d columns but %d names" msgstr "" -#: assign.c:1232 +#: assign.c:1230 msgid "" "Internal error: o passed to Csetcolorder contains an NA or out-of-bounds" msgstr "" -#: assign.c:1234 +#: assign.c:1232 msgid "Internal error: o passed to Csetcolorder contains a duplicate" msgstr "" @@ -461,6 +603,11 @@ msgstr "" msgid "Item %d of lower (%d) is greater than item %d of upper (%d)" msgstr "" +#: between.c:82 +#, c-format +msgid "between parallel processing of integer took %8.3fs\n" +msgstr "" + #: between.c:88 msgid "x is integer64 but lower and/or upper are not." msgstr "" @@ -470,6 +617,11 @@ msgstr "" msgid "Item %d of lower (%lld) is greater than item %d of upper (%lld)" msgstr "" +#: between.c:112 +#, c-format +msgid "between parallel processing of integer64 took %8.3fs\n" +msgstr "" + #: between.c:115 msgid "" "x is not integer64 but lower and/or upper is integer64. Please align classes." @@ -480,11 +632,26 @@ msgstr "" msgid "Item %d of lower (%f) is greater than item %d of upper (%f)" msgstr "" +#: between.c:140 +#, c-format +msgid "between parallel processing of double with open bounds took %8.3fs\n" +msgstr "" + +#: between.c:157 +#, c-format +msgid "between parallel processing of double with closed bounds took %8.3fs\n" +msgstr "" + #: between.c:172 #, c-format msgid "Item %d of lower ('%s') is greater than item %d of upper ('%s')" msgstr "" +#: between.c:187 +#, c-format +msgid "between non-parallel processing of character took %8.3fs\n" +msgstr "" + #: between.c:190 #, c-format msgid "" @@ -681,6 +848,10 @@ msgid "" "recycled." msgstr "" +#: coalesce.c:50 +msgid "coalesce copied first item (inplace=FALSE)\n" +msgstr "" + #: coalesce.c:166 #, c-format msgid "Unsupported type: %s" @@ -802,6 +973,11 @@ msgid "" "dogroups" msgstr "" +#: dogroups.c:319 +#, c-format +msgid "Group %d column '%s': %s" +msgstr "" + #: dogroups.c:326 msgid "j doesn't evaluate to the same number of columns for each group" msgstr "" @@ -817,11 +993,49 @@ msgid "" "integer() or numeric()." msgstr "" +#: dogroups.c:363 +msgid "" +"j appears to be a named vector. The same names will likely be created over " +"and over again for each group and slow things down. Try and pass a named " +"list (which data.table optimizes) or an unnamed list() instead.\n" +msgstr "" + +#: dogroups.c:365 +#, c-format +msgid "" +"Column %d of j is a named vector (each item down the rows is named, " +"somehow). Please remove those names for efficiency (to save creating them " +"over and over for each group). They are ignored anyway.\n" +msgstr "" + +#: dogroups.c:373 +msgid "" +"The result of j is a named list. It's very inefficient to create the same " +"names over and over again for each group. When j=list(...), any names are " +"detected, removed and put back after grouping has completed, for efficiency. " +"Using j=transform(), for example, prevents that speedup (consider changing " +"to :=). This message may be upgraded to warning in future.\n" +msgstr "" + +#: dogroups.c:385 +#, c-format +msgid "dogroups: growing from %d to %d rows\n" +msgstr "" + #: dogroups.c:386 #, c-format msgid "dogroups: length(ans)[%d]!=ngrpcols[%d]+njval[%d]" msgstr "" +#: dogroups.c:419 +#, c-format +msgid "" +"Item %d of j's result for group %d is zero length. This will be filled with " +"%d NAs to match the longest column in this result. Later groups may have a " +"similar problem but only the first is reported to save filling the warning " +"buffer." +msgstr "" + #: dogroups.c:426 #, c-format msgid "" @@ -838,11 +1052,28 @@ msgid "" "make this intent clear to readers of your code." msgstr "" +#: dogroups.c:443 +#, c-format +msgid "Wrote less rows (%d) than allocated (%d).\n" +msgstr "" + #: dogroups.c:453 #, c-format msgid "Internal error: block 0 [%d] and block 1 [%d] have both run" msgstr "" +#: dogroups.c:455 +#, c-format +msgid "" +"\n" +" %s took %.3fs for %d groups\n" +msgstr "" + +#: dogroups.c:457 +#, c-format +msgid " eval(j) took %.3fs for %d calls\n" +msgstr "" + #: dogroups.c:481 msgid "growVector passed NULL" msgstr "" @@ -955,6 +1186,15 @@ msgstr "" msgid "Unknown 'measure.vars' type %s at index %d of list" msgstr "" +#: fmelt.c:148 +#, c-format +msgid "" +"id.vars and measure.vars are internally guessed when both are 'NULL'. All " +"non-numeric/integer/logical type columns are considered id.vars, which in " +"this case are columns [%s]. Consider providing at least one of 'id' or " +"'measure' vars in future." +msgstr "" + #: fmelt.c:154 fmelt.c:219 #, c-format msgid "Unknown 'id.vars' type %s, must be character or integer vector" @@ -964,6 +1204,17 @@ msgstr "" msgid "One or more values in 'id.vars' is invalid." msgstr "" +#: fmelt.c:175 +msgid "" +"'measure.vars' is missing. Assigning all columns other than 'id.vars' " +"columns as 'measure.vars'.\n" +msgstr "" + +#: fmelt.c:176 +#, c-format +msgid "Assigned 'measure.vars' are [%s].\n" +msgstr "" + #: fmelt.c:184 #, c-format msgid "" @@ -974,6 +1225,17 @@ msgstr "" msgid "One or more values in 'measure.vars' is invalid." msgstr "" +#: fmelt.c:211 +msgid "" +"'id.vars' is missing. Assigning all columns other than 'measure.vars' " +"columns as 'id.vars'.\n" +msgstr "" + +#: fmelt.c:212 +#, c-format +msgid "Assigned 'id.vars' are [%s].\n" +msgstr "" + #: fmelt.c:231 #, c-format msgid "Unknown 'measure.vars' type %s, must be character or integer vector" @@ -1006,6 +1268,21 @@ msgid "" "factorize" msgstr "" +#: fmelt.c:385 +#, c-format +msgid "" +"'measure.vars' [%s] are not all of the same type. By order of hierarchy, the " +"molten data value column will be of type '%s'. All measure variables not of " +"type '%s' will be coerced too. Check DETAILS in ?melt.data.table for more on " +"coercion.\n" +msgstr "" + +#: fmelt.c:387 +#, c-format +msgid "" +"The molten data value type is a list at item %d. 'na.rm=TRUE' is ignored.\n" +msgstr "" + #: fmelt.c:490 #, c-format msgid "Unknown column type '%s' for column '%s'." @@ -1049,10 +1326,63 @@ msgstr "" msgid "Argument 'verbose' should be logical TRUE/FALSE" msgstr "" +#: fmelt.c:682 +msgid "ncol(data) is 0. Nothing to melt. Returning original data.table." +msgstr "" + #: fmelt.c:687 msgid "names(data) is NULL. Please report to data.table-help" msgstr "" +#: forder.c:103 +#, c-format +msgid "Failed to realloc thread private group size buffer to %d*4bytes" +msgstr "" + +#: forder.c:117 +#, c-format +msgid "Failed to realloc group size result to %d*4bytes" +msgstr "" + +#: forder.c:260 +#, c-format +msgid "" +"Logical error. counts[0]=%d in cradix but should have been decremented to 0. " +"radix=%d" +msgstr "" + +#: forder.c:275 +msgid "Failed to alloc cradix_counts" +msgstr "" + +#: forder.c:277 +msgid "Failed to alloc cradix_tmp" +msgstr "" + +#: forder.c:288 +#, c-format +msgid "" +"Internal error: ustr isn't empty when starting range_str: ustr_n=%d, " +"ustr_alloc=%d" +msgstr "" + +#: forder.c:289 +msgid "Internal error: ustr_maxlen isn't 0 when starting range_str" +msgstr "" + +#: forder.c:309 +#, c-format +msgid "Unable to realloc %d * %d bytes in range_str" +msgstr "" + +#: forder.c:327 +msgid "Failed to alloc ustr3 when converting strings to UTF8" +msgstr "" + +#: forder.c:345 +msgid "Failed to alloc tl when converting strings to UTF8" +msgstr "" + #: forder.c:374 msgid "Must an integer or numeric vector length 1" msgstr "" @@ -1061,6 +1391,10 @@ msgstr "" msgid "Must be 2, 1 or 0" msgstr "" +#: forder.c:409 +msgid "Unknown non-finite value; not NA, NaN, -Inf or +Inf" +msgstr "" + #: forder.c:431 msgid "" "Internal error: input is not either a list of columns, or an atomic vector." @@ -1078,6 +1412,16 @@ msgid "" "1 integer" msgstr "" +#: forder.c:437 +#, c-format +msgid "forder.c received a vector type '%s' length %d\n" +msgstr "" + +#: forder.c:445 +#, c-format +msgid "forder.c received %d rows and %d columns\n" +msgstr "" + #: forder.c:448 msgid "Internal error: DT is an empty list() of 0 columns" msgstr "" @@ -1122,6 +1466,77 @@ msgstr "" msgid "na.last must be logical TRUE, FALSE or NA of length 1" msgstr "" +#: forder.c:514 +#, c-format +msgid "Item %d of order (ascending/descending) is %d. Must be +1 or -1." +msgstr "" + +#: forder.c:540 +#, c-format +msgid "" +"\n" +"*** Column %d passed to forder is a date stored as an 8 byte double but no " +"fractions are present. Please consider a 4 byte integer date such as IDate " +"to save space and time.\n" +msgstr "" + +#: forder.c:556 +#, c-format +msgid "Column %d passed to [f]order is type '%s', not yet supported." +msgstr "" + +#: forder.c:705 +msgid "Internal error: column not supported not caught earlier" +msgstr "" + +#: forder.c:713 +#, c-format +msgid "nradix=%d\n" +msgstr "" + +#: forder.c:719 +#, c-format +msgid "" +"Failed to allocate TMP or UGRP or they weren't cache line aligned: nth=%d" +msgstr "" + +#: forder.c:724 +msgid "Could not allocate (very tiny) group size thread buffers" +msgstr "" + +#: forder.c:785 +#, c-format +msgid "Timing block %2d%s = %8.3f %8d\n" +msgstr "" + +#: forder.c:788 +#, c-format +msgid "stat[%03d]==%10zd\n" +msgstr "" + +#: forder.c:1044 +#, c-format +msgid "Failed to allocate parallel counts. my_n=%d, nBatch=%d" +msgstr "" + +#: forder.c:1153 +#, c-format +msgid "Unable to allocate TMP for my_n=%d items in parallel batch counting" +msgstr "" + +#: forder.c:1260 +msgid "" +"is.sorted (R level) and fsorted (C level) only to be used on vectors. If " +"needed on a list/data.table, you'll need the order anyway if not sorted, so " +"use if (length(o<-forder(...))) for efficiency in one step, or equivalent at " +"C level" +msgstr "" + +#: forder.c:1292 +#, c-format +msgid "type '%s' is not yet supported" +msgstr "" + #: forder.c:1301 msgid "x must be either NULL or an integer vector" msgstr "" @@ -1187,184 +1602,1397 @@ msgstr "" msgid "Internal error. Argument 'cols' to CanyNA is type '%s' not 'integer'" msgstr "" -#: freadR.c:84 +#: fread.c:106 +#, c-format msgid "" -"Internal error: freadR input not a single character string: a filename or " -"the data itself. Should have been caught at R level." +"Internal error in line %d of fread.c, please report on data.table GitHub: " msgstr "" -#: freadR.c:101 -msgid "" -"Internal error: freadR sep not a single character. R level catches this." +#: fread.c:149 +#, c-format +msgid "System error %d unmapping view of file\n" msgstr "" -#: freadR.c:105 -msgid "" -"Internal error: freadR dec not a single character. R level catches this." +#: fread.c:152 +#, c-format +msgid "System errno %d unmapping file: %s\n" msgstr "" -#: freadR.c:112 -msgid "quote= must be a single character, blank \")\", or FALSE" +#: fread.c:212 +#, c-format +msgid "Internal error: NUMTYPE(%d) > nLetters(%d)" msgstr "" -#: freadR.c:137 -msgid "Internal error: skip not integer or string in freadR.c" +#: fread.c:437 +#, c-format +msgid "Unable to allocate %s of contiguous virtual RAM. %s allocation." msgstr "" -#: freadR.c:140 +#: fread.c:442 +#, c-format +msgid "Avoidable %.3f seconds. %s time to copy.\n" +msgstr "" + +#: fread.c:443 +#, c-format +msgid " File copy in RAM took %.3f seconds.\n" +msgstr "" + +#: fread.c:1095 +msgid "" +"Previous fread() session was not cleaned up properly. Cleaned up ok at the " +"beginning of this fread() call.\n" +msgstr "" + +#: fread.c:1098 +msgid "[01] Check arguments\n" +msgstr "" + +#: fread.c:1105 +#, c-format +msgid " Using %d threads (omp_get_max_threads()=%d, nth=%d)\n" +msgstr "" + +#: fread.c:1113 +msgid "" +"Internal error: NAstrings is itself NULL. When empty it should be pointer to " +"NULL." +msgstr "" + +#: fread.c:1131 +#, c-format +msgid "freadMain: NAstring <<%s>> has whitespace at the beginning or end" +msgstr "" + +#: fread.c:1136 +#, c-format +msgid "" +"freadMain: NAstring <<%s>> is recognized as type boolean, this is not " +"permitted." +msgstr "" + +#: fread.c:1146 +msgid " No NAstrings provided.\n" +msgstr "" + +#: fread.c:1148 +msgid " NAstrings = [" +msgstr "" + +#: fread.c:1151 +msgid "]\n" +msgstr "" + +#: fread.c:1153 +msgid " One or more of the NAstrings looks like a number.\n" +msgstr "" + +#: fread.c:1155 +msgid " None of the NAstrings look like numbers.\n" +msgstr "" + +#: fread.c:1157 +#, c-format +msgid " skip num lines = %llu\n" +msgstr "" + +#: fread.c:1158 +#, c-format +msgid " skip to string = <<%s>>\n" +msgstr "" + +#: fread.c:1159 +#, c-format +msgid " show progress = %d\n" +msgstr "" + +#: fread.c:1160 +#, c-format +msgid " 0/1 column will be read as %s\n" +msgstr "" + +#: fread.c:1168 +#, c-format +msgid "sep == quote ('%c') is not allowed" +msgstr "" + +#: fread.c:1169 +msgid "dec='' not allowed. Should be '.' or ','" +msgstr "" + +#: fread.c:1170 +#, c-format +msgid "sep == dec ('%c') is not allowed" +msgstr "" + +#: fread.c:1171 +#, c-format +msgid "quote == dec ('%c') is not allowed" +msgstr "" + +#: fread.c:1188 +msgid "[02] Opening the file\n" +msgstr "" + +#: fread.c:1191 +msgid "" +" `input` argument is provided rather than a file name, interpreting as raw " +"text to read\n" +msgstr "" + +#: fread.c:1195 +msgid "Internal error: last byte of character input isn't \\0" +msgstr "" + +#: fread.c:1198 +#, c-format +msgid " Opening file %s\n" +msgstr "" + +#: fread.c:1202 +#, c-format +msgid "file not found: %s" +msgstr "" + +#: fread.c:1206 +#, c-format +msgid "Opened file ok but couldn't obtain its size: %s" +msgstr "" + +#: fread.c:1209 fread.c:1237 +#, c-format +msgid "File is empty: %s" +msgstr "" + +#: fread.c:1210 fread.c:1238 +#, c-format +msgid " File opened, size = %s.\n" +msgstr "" + +#: fread.c:1227 +#, c-format +msgid "File not found: %s" +msgstr "" + +#: fread.c:1233 +#, c-format +msgid "Unable to open file after %d attempts (error %d): %s" +msgstr "" + +#: fread.c:1235 +#, c-format +msgid "GetFileSizeEx failed (returned 0) on file: %s" +msgstr "" + +#: fread.c:1240 +#, c-format +msgid "This is Windows, CreateFileMapping returned error %d for file %s" +msgstr "" + +#: fread.c:1247 +#, c-format +msgid "" +"Opened %s file ok but could not memory map it. This is a %dbit process. %s." +msgstr "" + +#: fread.c:1248 +msgid "Please upgrade to 64bit" +msgstr "" + +#: fread.c:1248 +msgid "There is probably not enough contiguous virtual memory available" +msgstr "" + +#: fread.c:1251 +msgid " Memory mapped ok\n" +msgstr "" + +#: fread.c:1253 +msgid "" +"Internal error: Neither `input` nor `filename` are given, nothing to read." +msgstr "" + +#: fread.c:1270 +msgid "[03] Detect and skip BOM\n" +msgstr "" + +#: fread.c:1274 +msgid "" +" UTF-8 byte order mark EF BB BF found at the start of the file and " +"skipped.\n" +msgstr "" + +#: fread.c:1279 +msgid "" +"GB-18030 encoding detected, however fread() is unable to decode it. Some " +"character fields may be garbled.\n" +msgstr "" + +#: fread.c:1282 +msgid "" +"File is encoded in UTF-16, this encoding is not supported by fread(). Please " +"recode the file to UTF-8." +msgstr "" + +#: fread.c:1287 +#, c-format +msgid " Last byte(s) of input found to be %s and removed.\n" +msgstr "" + +#: fread.c:1290 +msgid "Input is empty or only contains BOM or terminal control characters" +msgstr "" + +#: fread.c:1297 +msgid "[04] Arrange mmap to be \\0 terminated\n" +msgstr "" + +#: fread.c:1304 +msgid "" +" No \\n exists in the file at all, so single \\r (if any) will be taken as " +"one line ending. This is unusual but will happen normally when there is no " +"\\r either; e.g. a single line missing its end of line.\n" +msgstr "" + +#: fread.c:1305 +msgid "" +" \\n has been found in the input and different lines can end with different " +"line endings (e.g. mixed \\n and \\r\\n in one file). This is common and " +"ideal.\n" +msgstr "" + +#: fread.c:1329 +#, c-format +msgid "" +" File ends abruptly with '%c'. Final end-of-line is missing. Using cow page " +"to write 0 to the last byte.\n" +msgstr "" + +#: fread.c:1336 +#, c-format +msgid " File ends abruptly with '%c'. Copying file in RAM. %s copy.\n" +msgstr "" + +#: fread.c:1370 +msgid "[05] Skipping initial rows if needed\n" +msgstr "" + +#: fread.c:1376 +#, c-format +msgid "" +"skip='%s' not found in input (it is case sensitive and literal; i.e., no " +"patterns, wildcards or regex)" +msgstr "" + +#: fread.c:1382 +#, c-format +msgid "" +"Found skip='%s' on line %llu. Taking this to be header row or first row of " +"data.\n" +msgstr "" + +#: fread.c:1395 +#, c-format +msgid " Skipped to line %llu in the file" +msgstr "" + +#: fread.c:1396 +#, c-format +msgid "skip=%llu but the input only has %llu line%s" +msgstr "" + +#: fread.c:1405 +msgid "" +"Input is either empty, fully whitespace, or skip has been set after the last " +"non-whitespace." +msgstr "" + +#: fread.c:1407 +#, c-format +msgid " Moved forward to first non-blank line (%d)\n" +msgstr "" + +#: fread.c:1408 +#, c-format +msgid " Positioned on line %d starting: <<%s>>\n" +msgstr "" + +#: fread.c:1426 +msgid "[06] Detect separator, quoting rule, and ncolumns\n" +msgstr "" + +#: fread.c:1430 +msgid " sep='\\n' passed in meaning read lines as single character column\n" +msgstr "" + +#: fread.c:1449 +msgid " Detecting sep automatically ...\n" +msgstr "" + +#: fread.c:1456 +#, c-format +msgid " Using supplied sep '%s'\n" +msgstr "" + +#: fread.c:1490 +#, c-format +msgid " with %d fields using quote rule %d\n" +msgstr "" + +#: fread.c:1540 +#, c-format +msgid " with %d lines of %d fields using quote rule %d\n" +msgstr "" + +#: fread.c:1547 +msgid "" +" No sep and quote rule found a block of 2x2 or greater. Single column " +"input.\n" +msgstr "" + +#: fread.c:1563 +msgid "" +"Single column input contains invalid quotes. Self healing only effective " +"when ncol>1" +msgstr "" + +#: fread.c:1568 +#, c-format +msgid "" +"Found and resolved improper quoting in first %d rows. If the fields are not " +"quoted (e.g. field separator does not appear within any field), try quote=" +"\")\" to avoid this warning." +msgstr "" + +#: fread.c:1584 +#, c-format +msgid "" +"Internal error: ncol==%d line==%d after detecting sep, ncol and first line" +msgstr "" + +#: fread.c:1587 +#, c-format +msgid "Internal error: first line has field count %d but expecting %d" +msgstr "" + +#: fread.c:1589 +#, c-format +msgid "" +" Detected %d columns on line %d. This line is either column names or first " +"data row. Line starts as: <<%s>>\n" +msgstr "" + +#: fread.c:1591 +#, c-format +msgid " Quote rule picked = %d\n" +msgstr "" + +#: fread.c:1592 +#, c-format +msgid " fill=%s and the most number of columns found is %d\n" +msgstr "" + +#: fread.c:1598 +msgid "" +"This file is very unusual: it's one single column, ends with 2 or more end-" +"of-line (representing several NA at the end), and is a multiple of 4096, too." +msgstr "" + +#: fread.c:1599 +#, c-format +msgid " Copying file in RAM. %s\n" +msgstr "" + +#: fread.c:1605 +msgid "" +" 1-column file ends with 2 or more end-of-line. Restoring last eol using " +"extra byte in cow page.\n" +msgstr "" + +#: fread.c:1624 +msgid "" +"[07] Detect column types, good nrow estimate and whether first row is column " +"names\n" +msgstr "" + +#: fread.c:1625 +#, c-format +msgid " 'header' changed by user from 'auto' to %s\n" +msgstr "" + +#: fread.c:1629 +#, c-format +msgid "Failed to allocate 2 x %d bytes for type and tmpType: %s" +msgstr "" + +#: fread.c:1650 +#, c-format +msgid " Number of sampling jump points = %d because " +msgstr "" + +#: fread.c:1651 +#, c-format +msgid "nrow limit (%llu) supplied\n" +msgstr "" + +#: fread.c:1652 +msgid "jump0size==0\n" +msgstr "" + +#: fread.c:1653 +#, c-format +msgid "(%llu bytes from row 1 to eof) / (2 * %llu jump0size) == %llu\n" +msgstr "" + +#: fread.c:1691 +#, c-format +msgid "" +" A line with too-%s fields (%d/%d) was found on line %d of sample jump %d. " +"%s\n" +msgstr "" + +#: fread.c:1718 +#, c-format +msgid " Type codes (jump %03d) : %s Quote rule %d\n" +msgstr "" + +#: fread.c:1731 +#, c-format +msgid "" +" 'header' determined to be true due to column %d containing a string on row " +"1 and a lower type (%s) in the rest of the %d sample rows\n" +msgstr "" + +#: fread.c:1743 +msgid "" +"Internal error: row before first data row has the same number of fields but " +"we're not using it." +msgstr "" + +#: fread.c:1744 +msgid "" +"Internal error: ch!=pos after counting fields in the line before the first " +"data row." +msgstr "" + +#: fread.c:1745 +#, c-format +msgid "" +"Types in 1st data row match types in 2nd data row but previous row has %d " +"fields. Taking previous row as column names." +msgstr "" + +#: fread.c:1748 +#, c-format +msgid "" +"Detected %d column names but the data has %d columns (i.e. invalid file). " +"Added %d extra default column name%s\n" +msgstr "" + +#: fread.c:1751 +msgid "" +"Internal error: fill=true but there is a previous row which should already " +"have been filled." +msgstr "" + +#: fread.c:1752 +#, c-format +msgid "" +"Detected %d column names but the data has %d columns. Filling rows " +"automatically. Set fill=TRUE explicitly to avoid this warning.\n" +msgstr "" + +#: fread.c:1756 +#, c-format +msgid "Failed to realloc 2 x %d bytes for type and tmpType: %s" +msgstr "" + +#: fread.c:1776 +#, c-format +msgid "" +" 'header' determined to be %s because there are%s number fields in the " +"first and only row\n" +msgstr "" + +#: fread.c:1779 +msgid "" +" 'header' determined to be true because all columns are type string and a " +"better guess is not possible\n" +msgstr "" + +#: fread.c:1781 +msgid "" +" 'header' determined to be false because there are some number columns and " +"those columns do not have a string field at the top of them\n" +msgstr "" + +#: fread.c:1797 +#, c-format +msgid " Type codes (first row) : %s Quote rule %d\n" +msgstr "" + +#: fread.c:1806 +#, c-format +msgid "" +" All rows were sampled since file is small so we know nrow=%llu exactly\n" +msgstr "" + +#: fread.c:1818 fread.c:1825 +msgid " =====\n" +msgstr "" + +#: fread.c:1819 +#, c-format +msgid "" +" Sampled %llu rows (handled \\n inside quoted fields) at %d jump points\n" +msgstr "" + +#: fread.c:1820 +#, c-format +msgid " Bytes from first data row on line %d to the end of last row: %llu\n" +msgstr "" + +#: fread.c:1821 +#, c-format +msgid " Line length: mean=%.2f sd=%.2f min=%d max=%d\n" +msgstr "" + +#: fread.c:1822 +#, c-format +msgid " Estimated number of rows: %llu / %.2f = %llu\n" +msgstr "" + +#: fread.c:1823 +#, c-format +msgid "" +" Initial alloc = %llu rows (%llu + %d%%) using bytes/max(mean-2*sd,min) " +"clamped between [1.1*estn, 2.0*estn]\n" +msgstr "" + +#: fread.c:1827 +#, c-format +msgid "Internal error: sampleLines(%llu) > allocnrow(%llu)" +msgstr "" + +#: fread.c:1831 +#, c-format +msgid " Alloc limited to lower nrows=%llu passed in.\n" +msgstr "" + +#: fread.c:1843 +msgid "[08] Assign column names\n" +msgstr "" + +#: fread.c:1851 +#, c-format +msgid "Unable to allocate %d*%d bytes for column name pointers: %s" +msgstr "" + +#: fread.c:1873 +#, c-format +msgid "Internal error: reading colnames ending on '%c'" +msgstr "" + +#: fread.c:1891 +msgid "[09] Apply user overrides on column types\n" +msgstr "" + +#: fread.c:1895 +msgid " Cancelled by user: userOverride() returned false." +msgstr "" + +#: fread.c:1905 +#, c-format +msgid "Failed to allocate %d bytes for size array: %s" +msgstr "" + +#: fread.c:1912 +#, c-format +msgid "" +"Attempt to override column %d <<%.*s>> of inherent type '%s' down to '%s' " +"ignored. Only overrides to a higher type are currently supported. If this " +"was intended, please coerce to the lower type afterwards." +msgstr "" + +#: fread.c:1926 +#, c-format +msgid " After %d type and %d drop user overrides : %s\n" +msgstr "" + +#: fread.c:1934 +msgid "[10] Allocate memory for the datatable\n" +msgstr "" + +#: fread.c:1935 +#, c-format +msgid " Allocating %d column slots (%d - %d dropped) with %llu rows\n" +msgstr "" + +#: fread.c:1989 +#, c-format +msgid "Buffer size %lld is too large\n" +msgstr "" + +#: fread.c:1992 +msgid "[11] Read the data\n" +msgstr "" + +#: fread.c:1995 +#, c-format +msgid " jumps=[%d..%d), chunk_size=%llu, total_size=%llu\n" +msgstr "" + +#: fread.c:2215 +#, c-format +msgid "" +"Column %d (\"%.*s\") bumped from '%s' to '%s' due to <<%.*s>> on row %llu\n" +msgstr "" + +#: fread.c:2330 fread.c:2465 freadR.c:660 +#, c-format +msgid "%s" +msgstr "" + +#: fread.c:2337 +#, c-format +msgid "" +" Too few rows allocated. Allocating additional %llu rows (now nrows=%llu) " +"and continue reading from jump %d\n" +msgstr "" + +#: fread.c:2344 +#, c-format +msgid " Restarting team from jump %d. nSwept==%d quoteRule==%d\n" +msgstr "" + +#: fread.c:2364 +#, c-format +msgid " %d out-of-sample type bumps: %s\n" +msgstr "" + +#: fread.c:2400 +#, c-format +msgid "" +"Read %llu rows x %d columns from %s file in %02d:%06.3f wall clock time\n" +msgstr "" + +#: fread.c:2407 +msgid "[12] Finalizing the datatable\n" +msgstr "" + +#: fread.c:2408 +msgid " Type counts:\n" +msgstr "" + +#: fread.c:2410 +#, c-format +msgid "%10d : %-9s '%c'\n" +msgstr "" + +#: fread.c:2426 +#, c-format +msgid "Discarded single-line footer: <<%s>>" +msgstr "" + +#: fread.c:2431 +#, c-format +msgid "" +"Stopped early on line %llu. Expected %d fields but found %d. Consider " +"fill=TRUE and comment.char=. First discarded non-empty line: <<%s>>" +msgstr "" + +#: fread.c:2437 +#, c-format +msgid "" +"Found and resolved improper quoting out-of-sample. First healed line %llu: <<" +"%s>>. If the fields are not quoted (e.g. field separator does not appear " +"within any field), try quote=\")\" to avoid this warning." +msgstr "" + +#: fread.c:2441 +msgid "=============================\n" +msgstr "" + +#: fread.c:2443 +#, c-format +msgid "%8.3fs (%3.0f%%) Memory map %.3fGB file\n" +msgstr "" + +#: fread.c:2444 +#, c-format +msgid "%8.3fs (%3.0f%%) sep=" +msgstr "" + +#: fread.c:2446 +#, c-format +msgid " ncol=%d and header detection\n" +msgstr "" + +#: fread.c:2447 +#, c-format +msgid "%8.3fs (%3.0f%%) Column type detection using %llu sample rows\n" +msgstr "" + +#: fread.c:2449 +#, c-format +msgid "" +"%8.3fs (%3.0f%%) Allocation of %llu rows x %d cols (%.3fGB) of which %llu " +"(%3.0f%%) rows used\n" +msgstr "" + +#: fread.c:2453 +#, c-format +msgid "" +"%8.3fs (%3.0f%%) Reading %d chunks (%d swept) of %.3fMB (each chunk %d rows) " +"using %d threads\n" +msgstr "" + +#: fread.c:2455 +#, c-format +msgid "" +" + %8.3fs (%3.0f%%) Parse to row-major thread buffers (grown %d times)\n" +msgstr "" + +#: fread.c:2456 +#, c-format +msgid " + %8.3fs (%3.0f%%) Transpose\n" +msgstr "" + +#: fread.c:2457 +#, c-format +msgid " + %8.3fs (%3.0f%%) Waiting\n" +msgstr "" + +#: fread.c:2458 +#, c-format +msgid "" +"%8.3fs (%3.0f%%) Rereading %d columns due to out-of-sample type exceptions\n" +msgstr "" + +#: fread.c:2460 +#, c-format +msgid "%8.3fs Total\n" +msgstr "" + +#: freadR.c:84 +msgid "" +"Internal error: freadR input not a single character string: a filename or " +"the data itself. Should have been caught at R level." +msgstr "" + +#: freadR.c:92 +msgid "" +"Input contains a \\n or is \")\". Taking this to be text input (not a " +"filename)\n" +msgstr "" + +#: freadR.c:95 +msgid "Input contains no \\n. Taking this to be a filename to open\n" +msgstr "" + +#: freadR.c:101 +msgid "" +"Internal error: freadR sep not a single character. R level catches this." +msgstr "" + +#: freadR.c:105 +msgid "" +"Internal error: freadR dec not a single character. R level catches this." +msgstr "" + +#: freadR.c:112 +msgid "quote= must be a single character, blank \")\", or FALSE" +msgstr "" + +#: freadR.c:137 +msgid "Internal error: skip not integer or string in freadR.c" +msgstr "" + +#: freadR.c:140 #, c-format msgid "Internal error: NAstringsArg is type '%s'. R level catches this" msgstr "" -#: freadR.c:153 +#: freadR.c:153 +#, c-format +msgid "nThread(%d)<1" +msgstr "" + +#: freadR.c:160 +msgid "'integer64' must be a single character string" +msgstr "" + +#: freadR.c:168 +#, c-format +msgid "" +"Invalid value integer64='%s'. Must be 'integer64', 'character', 'double' or " +"'numeric'" +msgstr "" + +#: freadR.c:176 +msgid "Use either select= or drop= but not both." +msgstr "" + +#: freadR.c:179 +msgid "" +"select= is type list for specifying types in select=, but colClasses= has " +"been provided as well. Please remove colClasses=." +msgstr "" + +#: freadR.c:181 +msgid "" +"select= is type list but has no names; expecting list(type1=cols1, " +"type2=cols2, ...)" +msgstr "" + +#: freadR.c:188 +msgid "" +"select= is a named vector specifying the columns to select and their types, " +"but colClasses= has been provided as well. Please remove colClasses=." +msgstr "" + +#: freadR.c:196 freadR.c:346 +msgid "colClasses is type list but has no names" +msgstr "" + +#: freadR.c:206 +#, c-format +msgid "encoding='%s' invalid. Must be 'unknown', 'Latin-1' or 'UTF-8'" +msgstr "" + +#: freadR.c:229 +#, c-format +msgid "Column name '%s' (%s) not found" +msgstr "" + +#: freadR.c:231 +#, c-format +msgid "%s is NA" +msgstr "" + +#: freadR.c:233 +#, c-format +msgid "%s is %d which is out of range [1,ncol=%d]" +msgstr "" + +#: freadR.c:247 +msgid "Internal error: typeSize[CT_BOOL8_N] != 1" +msgstr "" + +#: freadR.c:248 +msgid "Internal error: typeSize[CT_STRING] != 1" +msgstr "" + +#: freadR.c:282 +#, c-format +msgid "" +"Column name '%s' not found in column name header (case sensitive), skipping." +msgstr "" + +#: freadR.c:292 #, c-format -msgid "nThread(%d)<1" +msgid "" +"Column number %d (select[%d]) is negative but should be in the range [1,ncol=" +"%d]. Consider drop= for column exclusion." msgstr "" -#: freadR.c:160 -msgid "'integer64' must be a single character string" +#: freadR.c:293 +#, c-format +msgid "" +"select = 0 (select[%d]) has no meaning. All values of select should be in " +"the range [1,ncol=%d]." msgstr "" -#: freadR.c:660 +#: freadR.c:294 #, c-format -msgid "%s" +msgid "" +"Column number %d (select[%d]) is too large for this table, which only has %d " +"columns." +msgstr "" + +#: freadR.c:295 +#, c-format +msgid "Column number %d ('%s') has been selected twice by select=" +msgstr "" + +#: freadR.c:313 +msgid "" +"colClasses='NULL' is not permitted; i.e. to drop all columns and load nothing" +msgstr "" + +#: freadR.c:318 +#, c-format +msgid "" +"colClasses= is an unnamed vector of types, length %d, but there are %d " +"columns in the input. To specify types for a subset of columns, you can use " +msgstr "" + +#: freadR.c:319 +msgid "" +"a named vector, list format, or specify types using select= instead of " +"colClasses=. Please see examples in ?fread." +msgstr "" + +#: freadR.c:329 +msgid "Internal error: selectInts is NULL but selectColClasses is true" +msgstr "" + +#: freadR.c:330 +msgid "" +"Internal error: length(selectSxp)!=length(colClassesSxp) but " +"selectColClasses is true" +msgstr "" + +#: freadR.c:344 +#, c-format +msgid "colClasses is type '%s' but should be list or character" +msgstr "" + +#: freadR.c:368 +#, c-format +msgid "Column name '%s' (colClasses[[%d]][%d]) not found" +msgstr "" + +#: freadR.c:370 +#, c-format +msgid "colClasses[[%d]][%d] is NA" +msgstr "" + +#: freadR.c:374 +#, c-format +msgid "" +"Column %d ('%s') appears more than once in colClasses. The second time is " +"colClasses[[%d]][%d]." +msgstr "" + +#: freadR.c:381 +#, c-format +msgid "Column number %d (colClasses[[%d]][%d]) is out of range [1,ncol=%d]" +msgstr "" + +#: freadR.c:583 +#, c-format +msgid "Field size is 1 but the field is of type %d\n" +msgstr "" + +#: freadR.c:592 +#, c-format +msgid "Internal error: unexpected field of size %d\n" +msgstr "" + +#: froll.c:18 froll.c:227 froll.c:411 +#, c-format +msgid "%s: window width longer than input vector, returning all NA vector\n" +msgstr "" + +#: froll.c:36 froll.c:244 froll.c:460 +#, c-format +msgid "%s: align %d, shift answer by %d\n" +msgstr "" + +#: froll.c:43 froll.c:251 frolladaptive.c:23 frolladaptive.c:218 +#, c-format +msgid "%s: processing algo %u took %.3fs\n" +msgstr "" + +#: froll.c:52 froll.c:255 +#, c-format +msgid "%s: running for input length %llu, window %d, hasna %d, narm %d\n" +msgstr "" + +#: froll.c:72 froll.c:82 froll.c:173 froll.c:275 froll.c:285 froll.c:366 +#: frolladaptive.c:62 frolladaptive.c:151 frolladaptive.c:251 +#: frolladaptive.c:330 +#, c-format +msgid "" +"%s: hasNA=FALSE used but NA (or other non-finite) value(s) are present in " +"input, use default hasNA=NA to avoid this warning" +msgstr "" + +#: froll.c:75 froll.c:177 froll.c:278 froll.c:370 frolladaptive.c:65 +#: frolladaptive.c:155 frolladaptive.c:254 frolladaptive.c:334 +#, c-format +msgid "" +"%s: NA (or other non-finite) value(s) are present in input, re-running with " +"extra care for NAs\n" +msgstr "" + +#: froll.c:85 froll.c:288 +#, c-format +msgid "" +"%s: NA (or other non-finite) value(s) are present in input, skip non-NA " +"attempt and run with extra care for NAs\n" +msgstr "" + +#: froll.c:141 froll.c:339 +#, c-format +msgid "" +"%s: running in parallel for input length %llu, window %d, hasna %d, narm %d\n" +msgstr "" + +#: froll.c:179 froll.c:372 frolladaptive.c:157 frolladaptive.c:336 +#, c-format +msgid "" +"%s: NA (or other non-finite) value(s) are present in input, na.rm was FALSE " +"so in 'exact' implementation NAs were handled already, no need to re-run\n" +msgstr "" + +#: froll.c:428 +#, c-format +msgid "%s: results from provided FUN are not length 1" +msgstr "" + +#: froll.c:435 +#, c-format +msgid "" +"%s: results from provided FUN are not of type double, coercion from integer " +"or logical will be applied on each iteration\n" +msgstr "" + +#: froll.c:438 +#, c-format +msgid "%s: results from provided FUN are not of type double" +msgstr "" + +#: froll.c:467 +#, c-format +msgid "%s: took %.3fs\n" +msgstr "" + +#: frollR.c:15 +msgid "x must be of type numeric or logical" +msgstr "" + +#: frollR.c:26 +msgid "x must be list, data.frame or data.table of numeric or logical types" +msgstr "" + +#: frollR.c:47 frollR.c:264 +msgid "n must be non 0 length" +msgstr "" + +#: frollR.c:50 +msgid "adaptive must be TRUE or FALSE" +msgstr "" + +#: frollR.c:58 +msgid "n must be integer, list is accepted for adaptive TRUE" +msgstr "" + +#: frollR.c:65 frollR.c:256 frollR.c:259 +msgid "n must be integer" +msgstr "" + +#: frollR.c:72 +msgid "n must be positive integer values (> 0)" +msgstr "" + +#: frollR.c:81 frollR.c:93 +msgid "n must be integer vector or list of integer vectors" +msgstr "" + +#: frollR.c:104 gsumm.c:342 gsumm.c:577 gsumm.c:686 gsumm.c:805 gsumm.c:950 +#: gsumm.c:1261 gsumm.c:1402 uniqlist.c:350 +msgid "na.rm must be TRUE or FALSE" +msgstr "" + +#: frollR.c:107 +msgid "hasNA must be TRUE, FALSE or NA" +msgstr "" + +#: frollR.c:109 +msgid "" +"using hasNA FALSE and na.rm TRUE does not make sense, if you know there are " +"NA values use hasNA TRUE, otherwise leave it as default NA" +msgstr "" + +#: frollR.c:119 frollR.c:275 +msgid "" +"Internal error: invalid align argument in rolling function, should have been " +"caught before. please report to data.table issue tracker." +msgstr "" + +#: frollR.c:122 +msgid "" +"using adaptive TRUE and align argument different than 'right' is not " +"implemented" +msgstr "" + +#: frollR.c:126 frollR.c:297 types.c:64 +#, c-format +msgid "%s: allocating memory for results %dx%d\n" +msgstr "" + +#: frollR.c:135 +msgid "" +"adaptive rolling function can only process 'x' having equal length of " +"elements, like data.table or data.frame; If you want to call rolling " +"function on list having variable length of elements call it for each field " +"separately" +msgstr "" + +#: frollR.c:137 +msgid "" +"length of integer vector(s) provided as list to 'n' argument must be equal " +"to number of observations provided in 'x'" +msgstr "" + +#: frollR.c:151 +msgid "" +"Internal error: invalid fun argument in rolling function, should have been " +"caught before. please report to data.table issue tracker." +msgstr "" + +#: frollR.c:155 frollR.c:279 nafill.c:136 shift.c:21 +msgid "fill must be a vector of length 1" +msgstr "" + +#: frollR.c:169 frollR.c:292 +msgid "fill must be numeric" +msgstr "" + +#: frollR.c:185 +msgid "" +"Internal error: invalid algo argument in rolling function, should have been " +"caught before. please report to data.table issue tracker." +msgstr "" + +#: frollR.c:190 +#, c-format +msgid "Internal error: badaptive=%d but ik is not integer" +msgstr "" + +#: frollR.c:198 +#, c-format +msgid "" +"%s: %d column(s) and %d window(s), if product > 1 then entering parallel " +"execution\n" +msgstr "" + +#: frollR.c:200 +#, c-format +msgid "" +"%s: %d column(s) and %d window(s), not entering parallel execution here " +"because algo='exact' will compute results in parallel\n" +msgstr "" + +#: frollR.c:219 +#, c-format +msgid "Internal error: Unknown sfun value in froll: %d" +msgstr "" + +#: frollR.c:227 frollR.c:328 +#, c-format +msgid "%s: processing of %d column(s) and %d window(s) took %.3fs\n" +msgstr "" + +#: frollR.c:238 +msgid "internal error: 'fun' must be a function" +msgstr "" + +#: frollR.c:240 +msgid "internal error: 'rho' should be an environment" +msgstr "" + +#: frolladaptive.c:33 frolladaptive.c:222 +#, c-format +msgid "%s: running for input length %llu, hasna %d, narm %d\n" +msgstr "" + +#: frolladaptive.c:39 frolladaptive.c:228 +#, c-format +msgid "%s: Unable to allocate memory for cumsum" +msgstr "" + +#: frolladaptive.c:75 frolladaptive.c:264 +#, c-format +msgid "%s: Unable to allocate memory for cum NA counter" +msgstr "" + +#: frolladaptive.c:118 frolladaptive.c:302 +#, c-format +msgid "%s: running in parallel for input length %llu, hasna %d, narm %d\n" +msgstr "" + +#: fsort.c:111 +msgid "x must be a vector of type 'double' currently" +msgstr "" + +#: fsort.c:122 +#, c-format +msgid "nth=%d, nBatch=%d\n" +msgstr "" + +#: fsort.c:156 +#, c-format +msgid "Range = [%g,%g]\n" +msgstr "" + +#: fsort.c:157 +msgid "Cannot yet handle negatives." +msgstr "" + +#: fsort.c:170 +#, c-format +msgid "maxBit=%d; MSBNbits=%d; shift=%d; MSBsize=%d\n" +msgstr "" + +#: fsort.c:173 +msgid "Unable to allocate working memory" msgstr "" -#: froll.c:428 +#: fsort.c:177 #, c-format -msgid "%s: results from provided FUN are not length 1" +msgid "" +"counts is %dMB (%d pages per nBatch=%d, batchSize=%lld, lastBatchSize=%lld)\n" msgstr "" -#: froll.c:438 -#, c-format -msgid "%s: results from provided FUN are not of type double" +#: fsort.c:230 +msgid "Internal error: counts[nBatch-1][MSBsize-1] != length(x)" msgstr "" -#: frollR.c:15 -msgid "x must be of type numeric or logical" +#: fsort.c:246 +msgid "Top 5 MSB counts: " msgstr "" -#: frollR.c:26 -msgid "x must be list, data.frame or data.table of numeric or logical types" +#: fsort.c:246 +#, c-format +msgid "%lld " msgstr "" -#: frollR.c:47 frollR.c:264 -msgid "n must be non 0 length" +#: fsort.c:246 fwrite.c:692 fwrite.c:779 fwrite.c:890 fwrite.c:934 +msgid "\n" msgstr "" -#: frollR.c:50 -msgid "adaptive must be TRUE or FALSE" +#: fsort.c:247 +#, c-format +msgid "Reduced MSBsize from %d to " msgstr "" -#: frollR.c:58 -msgid "n must be integer, list is accepted for adaptive TRUE" +#: fsort.c:251 +#, c-format +msgid "%d by excluding 0 and 1 counts\n" msgstr "" -#: frollR.c:65 frollR.c:256 frollR.c:259 -msgid "n must be integer" +#: fsort.c:308 +#, c-format +msgid "%d: %.3f (%4.1f%%)\n" msgstr "" -#: frollR.c:72 -msgid "n must be positive integer values (> 0)" +#: fwrite.c:603 +#, c-format +msgid "buffMB=%d outside [1,1024]" msgstr "" -#: frollR.c:81 frollR.c:93 -msgid "n must be integer vector or list of integer vectors" +#: fwrite.c:610 +#, c-format +msgid "" +"eol must be 1 or more bytes (usually either \\n or \\r\\n) but is length %d" msgstr "" -#: frollR.c:104 gsumm.c:342 gsumm.c:577 gsumm.c:686 gsumm.c:805 gsumm.c:950 -#: gsumm.c:1262 gsumm.c:1403 uniqlist.c:350 -msgid "na.rm must be TRUE or FALSE" +#: fwrite.c:613 +msgid "Column writers: " msgstr "" -#: frollR.c:107 -msgid "hasNA must be TRUE, FALSE or NA" +#: fwrite.c:615 fwrite.c:617 fwrite.c:619 +#, c-format +msgid "%d " msgstr "" -#: frollR.c:109 -msgid "" -"using hasNA FALSE and na.rm TRUE does not make sense, if you know there are " -"NA values use hasNA TRUE, otherwise leave it as default NA" +#: fwrite.c:618 +msgid "... " msgstr "" -#: frollR.c:119 frollR.c:275 +#: fwrite.c:621 +#, c-format msgid "" -"Internal error: invalid align argument in rolling function, should have been " -"caught before. please report to data.table issue tracker." +"\n" +"args.doRowNames=%d args.rowNames=%d doQuote=%d args.nrow=%d args.ncol=%d " +"eolLen=%d\n" msgstr "" -#: frollR.c:122 -msgid "" -"using adaptive TRUE and align argument different than 'right' is not " -"implemented" +#: fwrite.c:654 +#, c-format +msgid "Internal error: type %d has no max length method implemented" msgstr "" -#: frollR.c:135 -msgid "" -"adaptive rolling function can only process 'x' having equal length of " -"elements, like data.table or data.frame; If you want to call rolling " -"function on list having variable length of elements call it for each field " -"separately" +#: fwrite.c:661 +#, c-format +msgid "maxLineLen=%zd. Found in %.3fs\n" msgstr "" -#: frollR.c:137 +#: fwrite.c:681 +#, c-format msgid "" -"length of integer vector(s) provided as list to 'n' argument must be equal " -"to number of observations provided in 'x'" +"%s: '%s'. Failed to open existing file for writing. Do you have write " +"permission to it? Is this Windows and does another process such as Excel " +"have it open?" msgstr "" -#: frollR.c:151 +#: fwrite.c:682 +#, c-format msgid "" -"Internal error: invalid fun argument in rolling function, should have been " -"caught before. please report to data.table issue tracker." +"%s: '%s'. Unable to create new file for writing (it does not exist already). " +"Do you have permission to write here, is there space on the disk and does " +"the path exist?" msgstr "" -#: frollR.c:155 frollR.c:279 nafill.c:136 shift.c:21 -msgid "fill must be a vector of length 1" +#: fwrite.c:690 +#, c-format +msgid "Writing bom (%s), yaml (%d characters) and column names (%s) ... " msgstr "" -#: frollR.c:169 frollR.c:292 -msgid "fill must be numeric" +#: fwrite.c:703 +#, c-format +msgid "Unable to allocate %d MiB for header: %s" msgstr "" -#: frollR.c:185 -msgid "" -"Internal error: invalid algo argument in rolling function, should have been " -"caught before. please report to data.table issue tracker." +#: fwrite.c:731 fwrite.c:793 +msgid "Can't allocate gzip stream structure" msgstr "" -#: frollR.c:190 +#: fwrite.c:737 #, c-format -msgid "Internal error: badaptive=%d but ik is not integer" +msgid "Unable to allocate %d MiB for zbuffer: %s" msgstr "" -#: frollR.c:219 +#: fwrite.c:752 #, c-format -msgid "Internal error: Unknown sfun value in froll: %d" +msgid "Compress gzip error: %d" msgstr "" -#: frollR.c:238 -msgid "internal error: 'fun' must be a function" +#: fwrite.c:753 fwrite.c:761 fwrite.c:940 fwrite.c:949 +#, c-format +msgid "%s: '%s'" msgstr "" -#: frollR.c:240 -msgid "internal error: 'rho' should be an environment" +#: fwrite.c:758 +#, c-format +msgid "done in %.3fs\n" msgstr "" -#: fsort.c:111 -msgid "x must be a vector of type 'double' currently" +#: fwrite.c:760 +msgid "No data rows present (nrow==0)\n" msgstr "" -#: fsort.c:157 -msgid "Cannot yet handle negatives." +#: fwrite.c:777 +#, c-format +msgid "" +"Writing %d rows in %d batches of %d rows (each buffer size %dMB, " +"showProgress=%d, nth=%d) ... " msgstr "" -#: fsort.c:173 -msgid "Unable to allocate working memory" +#: fwrite.c:946 +#, c-format +msgid "" +"Error %d: one or more threads failed to allocate buffers or there was a " +"compression error." msgstr "" -#: fsort.c:230 -msgid "Internal error: counts[nBatch-1][MSBsize-1] != length(x)" +#: fwrite.c:947 +msgid "" +" Please try again with verbose=TRUE and try searching online for this error " +"message.\n" msgstr "" #: fwriteR.c:41 @@ -1379,7 +3007,14 @@ msgstr "" #, c-format msgid "" "Row %d of list column is type '%s' - not yet implemented. fwrite() can write " -"list columns containing items which are atomic vectors of" +"list columns containing items which are atomic vectors of type logical, " +"integer, integer64, double, complex and character." +msgstr "" + +#: fwriteR.c:103 +#, c-format +msgid "" +"Internal error: row %d of list column has no max length method implemented" msgstr "" #: fwriteR.c:170 @@ -1387,6 +3022,10 @@ msgid "" "fwrite must be passed an object of type list; e.g. data.frame, data.table" msgstr "" +#: fwriteR.c:179 +msgid "fwrite was passed an empty list of no columns. Nothing to write." +msgstr "" + #: fwriteR.c:234 #, c-format msgid "Column %d's length (%d) is not the same as column 1's length (%d)" @@ -1397,6 +3036,19 @@ msgstr "" msgid "Column %d's type is '%s' - not yet implemented in fwrite." msgstr "" +#: fwriteR.c:262 +msgid "" +"No list columns are present. Setting sep2='' otherwise quote='auto' would " +"quote fields containing sep2.\n" +msgstr "" + +#: fwriteR.c:266 +#, c-format +msgid "" +"If quote='auto', fields will be quoted if the field contains either sep " +"('%c') or sep2 ('%c') because column %d is a list column.\n" +msgstr "" + #: fwriteR.c:270 #, c-format msgid "" @@ -1445,25 +3097,61 @@ msgid "" "batchSize=%d lastBatchSize=%d\n" msgstr "" +#: gsumm.c:98 +#, c-format +msgid "gforce initial population of grp took %.3f\n" +msgstr "" + #: gsumm.c:116 msgid "" "Internal error: Failed to allocate counts or TMP when assigning g in gforce" msgstr "" +#: gsumm.c:194 +#, c-format +msgid "gforce assign high and low took %.3f\n" +msgstr "" + +#: gsumm.c:200 +#, c-format +msgid "gforce eval took %.3f\n" +msgstr "" + +#: gsumm.c:216 +msgid "gather took ... " +msgstr "" + #: gsumm.c:334 #, c-format msgid "gather implemented for INTSXP, REALSXP, and CPLXSXP but not '%s'" msgstr "" +#: gsumm.c:336 gsumm.c:568 +#, c-format +msgid "%.3fs\n" +msgstr "" + #: gsumm.c:345 msgid "sum is not meaningful for factors." msgstr "" +#: gsumm.c:349 +#, c-format +msgid "This gsum took (narm=%s) ... " +msgstr "" + #: gsumm.c:350 gsumm.c:606 #, c-format msgid "nrow [%d] != length(x) [%d] in gsum" msgstr "" +#: gsumm.c:404 +msgid "" +"The sum of an integer column for a group was more than type 'integer' can " +"hold so the result has been coerced to 'numeric' automatically for " +"convenience." +msgstr "" + #: gsumm.c:565 #, c-format msgid "" @@ -1530,6 +3218,24 @@ msgstr "" msgid "nrow [%d] != length(x) [%d] in gmin" msgstr "" +#: gsumm.c:717 gsumm.c:850 +msgid "" +"No non-missing values found in at least one group. Coercing to numeric type " +"and returning 'Inf' for such groups to be consistent with base" +msgstr "" + +#: gsumm.c:756 gsumm.c:891 +msgid "" +"No non-missing values found in at least one group. Returning 'NA' for such " +"groups to be consistent with base" +msgstr "" + +#: gsumm.c:783 +msgid "" +"No non-missing values found in at least one group. Returning 'Inf' for such " +"groups to be consistent with base" +msgstr "" + #: gsumm.c:791 msgid "Type 'complex' has no well-defined min" msgstr "" @@ -1558,6 +3264,12 @@ msgstr "" msgid "nrow [%d] != length(x) [%d] in gmax" msgstr "" +#: gsumm.c:930 +msgid "" +"No non-missing values found in at least one group. Returning '-Inf' for such " +"groups to be consistent with base" +msgstr "" + #: gsumm.c:937 msgid "Type 'complex' has no well-defined max" msgstr "" @@ -1591,53 +3303,54 @@ msgstr "" #, c-format msgid "" "Type '%s' not supported by GForce median (gmedian). Either add the prefix " -"stats::median(.) or turn " +"stats::median(.) or turn off GForce optimization using options(datatable." +"optimize=1)" msgstr "" -#: gsumm.c:1006 +#: gsumm.c:1005 #, c-format msgid "nrow [%d] != length(x) [%d] in gtail" msgstr "" -#: gsumm.c:1074 +#: gsumm.c:1073 #, c-format msgid "" "Type '%s' not supported by GForce tail (gtail). Either add the prefix utils::" "tail(.) or turn off GForce optimization using options(datatable.optimize=1)" msgstr "" -#: gsumm.c:1086 gsumm.c:1177 +#: gsumm.c:1085 gsumm.c:1176 #, c-format msgid "nrow [%d] != length(x) [%d] in ghead" msgstr "" -#: gsumm.c:1154 +#: gsumm.c:1153 #, c-format msgid "" "Type '%s' not supported by GForce head (ghead). Either add the prefix utils::" "head(.) or turn off GForce optimization using options(datatable.optimize=1)" msgstr "" -#: gsumm.c:1162 +#: gsumm.c:1161 msgid "" "Internal error, gtail is only implemented for n=1. This should have been " "caught before. please report to data.table issue tracker." msgstr "" -#: gsumm.c:1167 +#: gsumm.c:1166 msgid "" "Internal error, ghead is only implemented for n=1. This should have been " "caught before. please report to data.table issue tracker." msgstr "" -#: gsumm.c:1173 +#: gsumm.c:1172 msgid "" "Internal error, `g[` (gnthvalue) is only implemented single value subsets " "with positive index, e.g., .SD[2]. This should have been caught before. " "please report to data.table issue tracker." msgstr "" -#: gsumm.c:1251 +#: gsumm.c:1250 #, c-format msgid "" "Type '%s' not supported by GForce subset `[` (gnthvalue). Either add the " @@ -1645,7 +3358,7 @@ msgid "" "options(datatable.optimize=1)" msgstr "" -#: gsumm.c:1263 +#: gsumm.c:1262 msgid "" "GForce var/sd can only be applied to columns, not .SD or similar. For the " "full covariance matrix of all items in a list such as .SD, either add the " @@ -1655,30 +3368,30 @@ msgid "" "to do this." msgstr "" -#: gsumm.c:1264 +#: gsumm.c:1263 msgid "var/sd is not meaningful for factors." msgstr "" -#: gsumm.c:1267 +#: gsumm.c:1266 #, c-format msgid "nrow [%d] != length(x) [%d] in gvar" msgstr "" -#: gsumm.c:1383 +#: gsumm.c:1382 #, c-format msgid "" "Type '%s' not supported by GForce var (gvar). Either add the prefix stats::" "var(.) or turn off GForce optimization using options(datatable.optimize=1)" msgstr "" -#: gsumm.c:1385 +#: gsumm.c:1384 #, c-format msgid "" "Type '%s' not supported by GForce sd (gsd). Either add the prefix stats::" "sd(.) or turn off GForce optimization using options(datatable.optimize=1)" msgstr "" -#: gsumm.c:1404 +#: gsumm.c:1403 msgid "" "GForce prod can only be applied to columns, not .SD or similar. To multiply " "all items in a list such as .SD, either add the prefix base::prod(.SD) or " @@ -1686,21 +3399,21 @@ msgid "" "likely, you may be looking for 'DT[,lapply(.SD,prod),by=,.SDcols=]'" msgstr "" -#: gsumm.c:1405 +#: gsumm.c:1404 msgid "prod is not meaningful for factors." msgstr "" -#: gsumm.c:1410 +#: gsumm.c:1409 #, c-format msgid "nrow [%d] != length(x) [%d] in gprod" msgstr "" -#: gsumm.c:1412 +#: gsumm.c:1411 #, c-format msgid "Unable to allocate %d * %d bytes for gprod" msgstr "" -#: gsumm.c:1447 +#: gsumm.c:1446 #, c-format msgid "" "Type '%s' not supported by GForce prod (gprod). Either add the prefix base::" @@ -1729,6 +3442,16 @@ msgstr "" msgid "Internal error: unknown mult in lookup: %d" msgstr "" +#: ijoin.c:128 +#, c-format +msgid "First pass on calculating lengths in lookup ... done in %8.3f seconds\n" +msgstr "" + +#: ijoin.c:141 +#, c-format +msgid "Second pass on allocation in lookup ... done in %8.3f seconds\n" +msgstr "" + #: ijoin.c:160 #, c-format msgid "Internal error: unknown type lookup should have been caught earlier: %d" @@ -1741,11 +3464,22 @@ msgid "" "earlier: %d" msgstr "" +#: ijoin.c:220 +#, c-format +msgid "Final step in generating lookup ... done in %8.3f seconds\n" +msgstr "" + #: ijoin.c:323 #, c-format msgid "Internal error: unknown type in mult=ALL in overlaps: %d" msgstr "" +#: ijoin.c:328 +#, c-format +msgid "" +"First pass on calculating lengths in overlaps ... done in %8.3f seconds\n" +msgstr "" + #: ijoin.c:464 ijoin.c:571 ijoin.c:720 #, c-format msgid "Internal error: unknown type in mult=%d in overlaps: %d" @@ -1756,6 +3490,11 @@ msgstr "" msgid "Internal error: unknown mult in overlaps: %d" msgstr "" +#: ijoin.c:727 +#, c-format +msgid "Final step, fetching indices in overlaps ... done in %8.3f seconds\n" +msgstr "" + #: init.c:198 #, c-format msgid "" @@ -1925,10 +3664,79 @@ msgid "" "caught before. Please report to data.table issue tracker." msgstr "" +#: nafill.c:177 +#, c-format +msgid "%s: parallel processing of %d column(s) took %.3fs\n" +msgstr "" + +#: openmp-utils.c:22 +#, c-format +msgid "" +"Ignoring invalid %s==\")%s\". Not an integer >= 1. Please remove any " +"characters that are not a digit [0-9]. See ?data.table::setDTthreads." +msgstr "" + +#: openmp-utils.c:40 +#, c-format +msgid "" +"Ignoring invalid R_DATATABLE_NUM_PROCS_PERCENT==%d. If used it must be an " +"integer between 2 and 100. Default is 50. See ?setDTtheads." +msgstr "" + #: openmp-utils.c:67 msgid "'verbose' must be TRUE or FALSE" msgstr "" +#: openmp-utils.c:70 +msgid "" +"This installation of data.table has not been compiled with OpenMP support.\n" +msgstr "" + +#: openmp-utils.c:75 +#, c-format +msgid " omp_get_num_procs() %d\n" +msgstr "" + +#: openmp-utils.c:76 +#, c-format +msgid " R_DATATABLE_NUM_PROCS_PERCENT %s\n" +msgstr "" + +#: openmp-utils.c:77 +#, c-format +msgid " R_DATATABLE_NUM_THREADS %s\n" +msgstr "" + +#: openmp-utils.c:78 +#, c-format +msgid " omp_get_thread_limit() %d\n" +msgstr "" + +#: openmp-utils.c:79 +#, c-format +msgid " omp_get_max_threads() %d\n" +msgstr "" + +#: openmp-utils.c:80 +#, c-format +msgid " OMP_THREAD_LIMIT %s\n" +msgstr "" + +#: openmp-utils.c:81 +#, c-format +msgid " OMP_NUM_THREADS %s\n" +msgstr "" + +#: openmp-utils.c:82 +#, c-format +msgid " RestoreAfterFork %s\n" +msgstr "" + +#: openmp-utils.c:83 +#, c-format +msgid " data.table is using %d threads. See ?setDTthreads.\n" +msgstr "" + #: openmp-utils.c:91 msgid "" "restore_after_fork= must be TRUE, FALSE, or NULL (default). " @@ -1975,6 +3783,10 @@ msgid "" "frames or plain lists." msgstr "" +#: rbindlist.c:16 +msgid "use.names= cannot be FALSE when fill is TRUE. Setting use.names=TRUE." +msgstr "" + #: rbindlist.c:20 msgid "Internal error: rbindlist.c idcol is not a single string" msgstr "" @@ -2003,6 +3815,13 @@ msgid "" "length %d. Only length-1 columns are recycled." msgstr "" +#: rbindlist.c:58 +#, c-format +msgid "" +"Column %d ['%s'] of item %d is length 0. This (and %d other%s like it) has " +"been filled with NA (NULL for list columns) to make each item uniform." +msgstr "" + #: rbindlist.c:62 #, c-format msgid "" @@ -2037,12 +3856,26 @@ msgid "" "TRUE earlier with warning." msgstr "" +#: rbindlist.c:196 +msgid "" +" use.names='check' (default from v1.12.2) emits this message and proceeds as " +"if use.names=FALSE for backwards compatibility. See news item 5 in v1.12.2 " +"for options to control this message." +msgstr "" + #: rbindlist.c:206 msgid "" "Internal error: could not find the first column name not present in earlier " "item" msgstr "" +#: rbindlist.c:210 +#, c-format +msgid "" +"Column %d ['%s'] of item %d is missing in item %d. Use fill=TRUE to fill " +"with NA (NULL for list columns), or use.names=FALSE to ignore column names.%s" +msgstr "" + #: rbindlist.c:218 #, c-format msgid "" @@ -2050,6 +3883,27 @@ msgid "" "item with no names or the first item. [%d]" msgstr "" +#: rbindlist.c:219 +#, c-format +msgid "" +"Column %d ['%s'] of item %d appears in position %d in item %d. Set use." +"names=TRUE to match by column name, or use.names=FALSE to ignore column " +"names.%s" +msgstr "" + +#: rbindlist.c:228 +msgid "" +"options()$datatable.rbindlist.check is set but is not a single string. See " +"news item 5 in v1.12.2." +msgstr "" + +#: rbindlist.c:235 +#, c-format +msgid "" +"options()$datatable.rbindlist.check=='%s' which is not " +"'message'|'warning'|'error'|'none'. See news item 5 in v1.12.2." +msgstr "" + #: rbindlist.c:297 #, c-format msgid "" @@ -2077,6 +3931,23 @@ msgid "" "column %d" msgstr "" +#: rbindlist.c:382 +#, c-format +msgid "" +"Column %d of item %d is an ordered factor but level %d ['%s'] is missing " +"from the ordered levels from column %d of item %d. Each set of ordered " +"factor levels should be an ordered subset of the first longest. A regular " +"factor will be created for this column." +msgstr "" + +#: rbindlist.c:387 +#, c-format +msgid "" +"Column %d of item %d is an ordered factor with '%s'<'%s' in its levels. But " +"'%s'<'%s' in the ordered levels from column %d of item %d. A regular factor " +"will be created for this column due to this ambiguity." +msgstr "" + #: rbindlist.c:432 #, c-format msgid "" @@ -2084,6 +3955,11 @@ msgid "" "when reading item %d of item %d" msgstr "" +#: rbindlist.c:522 +#, c-format +msgid "Column %d of item %d: %s" +msgstr "" + #: reorder.c:17 #, c-format msgid "Item %d of list is type '%s' which isn't yet supported (SIZEOF=%d)" @@ -2204,6 +4080,20 @@ msgstr "" msgid "Item %d of i is %d and item %d is NA. Cannot mix negatives and NA." msgstr "" +#: subset.c:207 +#, c-format +msgid "" +"Item %d of i is %d but there are only %d rows. Ignoring this and %d more " +"like it out of %d." +msgstr "" + +#: subset.c:209 +#, c-format +msgid "" +"Item %d of i is %d which removes that item but that has occurred before. " +"Ignoring this dup and %d other dups." +msgstr "" + #: subset.c:223 #, c-format msgid "Column %d is NULL; malformed data.table." @@ -2266,6 +4156,13 @@ msgstr "" msgid "Item %d of list input is not an atomic vector" msgstr "" +#: types.c:17 types.c:21 +#, c-format +msgid "" +"%s: %d:\n" +"%s" +msgstr "" + #: types.c:23 #, c-format msgid "" @@ -2405,6 +4302,11 @@ msgid "" "copyMostAttrib() retains ALTREP attributes" msgstr "" +#: utils.c:313 +#, c-format +msgid "Found and copied %d column%s with a shared memory address\n" +msgstr "" + #: vecseq.c:13 msgid "x must be an integer vector" msgstr "" From 6ac71e4089c5536f1b55dcfcc399c0a6312d58e1 Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Wed, 16 Oct 2019 01:54:09 +0800 Subject: [PATCH 12/78] moving pot file to po/ --- po/data.table.pot | 4384 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 4384 insertions(+) create mode 100644 po/data.table.pot diff --git a/po/data.table.pot b/po/data.table.pot new file mode 100644 index 0000000000..1bb137587e --- /dev/null +++ b/po/data.table.pot @@ -0,0 +1,4384 @@ +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER +# This file is distributed under the same license as the PACKAGE package. +# FIRST AUTHOR , YEAR. +# +#, fuzzy +msgid "" +msgstr "" +"Project-Id-Version: PACKAGE VERSION\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-10-16 01:42+0800\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" +"Language-Team: LANGUAGE \n" +"Language: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=CHARSET\n" +"Content-Transfer-Encoding: 8bit\n" + +#: assign.c:9 +msgid "Internal error: finalizer hasn't received an ExternalPtr" +msgstr "" + +#: assign.c:11 +msgid "Internal error: finalizer's ExternalPtr doesn't see names in tag" +msgstr "" + +#: assign.c:14 +#, c-format +msgid "Internal error: finalizer sees l=%d, tl=%d" +msgstr "" + +#: assign.c:123 +msgid "" +".internal.selfref ptr is NULL. This is expected and normal for a data.table " +"loaded from disk. Please remember to always setDT() immediately after " +"loading to prevent unexpected behavior. If this table was not loaded from " +"disk or you've already run setDT(), please report to data.table issue " +"tracker.\n" +msgstr "" + +#: assign.c:126 +msgid "Internal error: .internal.selfref ptr is not NULL or R_NilValue" +msgstr "" + +#: assign.c:128 +msgid "Internal error: .internal.selfref tag isn't NULL or a character vector" +msgstr "" + +#: assign.c:170 +msgid "Internal error: length(names)>0 but =0 and not NA." +msgstr "" + +#: assign.c:241 fsort.c:109 nafill.c:73 +msgid "verbose must be TRUE or FALSE" +msgstr "" + +#: assign.c:289 +msgid "assign has been passed a NULL dt" +msgstr "" + +#: assign.c:290 +msgid "dt passed to assign isn't type VECSXP" +msgstr "" + +#: assign.c:292 +msgid "" +".SD is locked. Updating .SD by reference using := or set are reserved for " +"future use. Use := in j directly. Or use copy(.SD) as a (slow) last resort, " +"until shallow() is exported." +msgstr "" + +#: assign.c:300 +msgid "Internal error: dt passed to Cassign is not a data.table or data.frame" +msgstr "" + +#: assign.c:304 +msgid "dt passed to assign has no names" +msgstr "" + +#: assign.c:306 +#, c-format +msgid "Internal error in assign: length of names (%d) is not length of dt (%d)" +msgstr "" + +#: assign.c:308 +msgid "" +"data.table is NULL; malformed. A null data.table should be an empty list. " +"typeof() should always return 'list' for data.table." +msgstr "" + +#: assign.c:317 +#, c-format +msgid "Assigning to all %d rows\n" +msgstr "" + +#: assign.c:322 +msgid "" +"Coerced i from numeric to integer. Please pass integer for efficiency; e.g., " +"2L rather than 2" +msgstr "" + +#: assign.c:325 +#, c-format +msgid "" +"i is type '%s'. Must be integer, or numeric is coerced with warning. If i is " +"a logical subset, simply wrap with which(), and take the which() outside the " +"loop if possible for efficiency." +msgstr "" + +#: assign.c:331 +#, c-format +msgid "i[%d] is %d which is out of range [1,nrow=%d]." +msgstr "" + +#: assign.c:334 +#, c-format +msgid "Assigning to %d row subset of %d rows\n" +msgstr "" + +#: assign.c:342 +#, c-format +msgid "Added %d new column%s initialized with all-NA\n" +msgstr "" + +#: assign.c:347 +msgid "length(LHS)==0; no columns to delete or assign RHS to." +msgstr "" + +#: assign.c:361 +msgid "" +"set() on a data.frame is for changing existing columns, not adding new ones. " +"Please use a data.table for that. data.table's are over-allocated and don't " +"shallow copy." +msgstr "" + +#: assign.c:372 +msgid "" +"Coerced j from numeric to integer. Please pass integer for efficiency; e.g., " +"2L rather than 2" +msgstr "" + +#: assign.c:375 +#, c-format +msgid "" +"j is type '%s'. Must be integer, character, or numeric is coerced with " +"warning." +msgstr "" + +#: assign.c:377 +msgid "" +"Can't assign to the same column twice in the same query (duplicates " +"detected)." +msgstr "" + +#: assign.c:378 +msgid "newcolnames is supplied but isn't a character vector" +msgstr "" + +#: assign.c:380 +#, c-format +msgid "RHS_list_of_columns == %s\n" +msgstr "" + +#: assign.c:385 +#, c-format +msgid "" +"RHS_list_of_columns revised to true because RHS list has 1 item which is " +"NULL, or whose length %d is either 1 or targetlen (%d). Please unwrap RHS.\n" +msgstr "" + +#: assign.c:390 +#, c-format +msgid "" +"Supplied %d columns to be assigned an empty list (which may be an empty data." +"table or data.frame since they are lists too). To delete multiple columns " +"use NULL instead. To add multiple empty list columns, use list(list())." +msgstr "" + +#: assign.c:395 +#, c-format +msgid "Recycling single RHS list item across %d columns. Please unwrap RHS.\n" +msgstr "" + +#: assign.c:397 +#, c-format +msgid "" +"Supplied %d columns to be assigned %d items. Please see NEWS for v1.12.2." +msgstr "" + +#: assign.c:405 +#, c-format +msgid "" +"Item %d of column numbers in j is %d which is outside range [1,ncol=%d]. " +"set() on a data.frame is for changing existing columns, not adding new ones. " +"Please use a data.table for that." +msgstr "" + +#: assign.c:406 +#, c-format +msgid "" +"Item %d of column numbers in j is %d which is outside range [1,ncol=%d]. Use " +"column names instead in j to add new columns." +msgstr "" + +#: assign.c:411 +msgid "When deleting columns, i should not be provided" +msgstr "" + +#: assign.c:417 +#, c-format +msgid "" +"RHS of assignment to existing column '%s' is zero length but not NULL. If " +"you intend to delete the column use NULL. Otherwise, the RHS must have " +"length > 0; e.g., NA_integer_. If you are trying to change the column type " +"to be an empty list column then, as with all column type changes, provide a " +"full length RHS vector such as vector('list',nrow(DT)); i.e., 'plonk' in the " +"new column." +msgstr "" + +#: assign.c:422 +#, c-format +msgid "" +"Internal error in assign.c: length(newcolnames)=%d, length(names)=%d, coln=%d" +msgstr "" + +#: assign.c:424 +#, c-format +msgid "Column '%s' does not exist to remove" +msgstr "" + +#: assign.c:430 +#, c-format +msgid "%d column matrix RHS of := will be treated as one vector" +msgstr "" + +#: assign.c:434 +#, c-format +msgid "" +"Can't assign to column '%s' (type 'factor') a value of type '%s' (not " +"character, factor, integer or numeric)" +msgstr "" + +#: assign.c:439 +#, c-format +msgid "" +"Supplied %d items to be assigned to %d items of column '%s'. If you wish to " +"'recycle' the RHS please use rep() to make this intent clear to readers of " +"your code." +msgstr "" + +#: assign.c:449 +msgid "" +"This data.table has either been loaded from disk (e.g. using readRDS()/" +"load()) or constructed manually (e.g. using structure()). Please run setDT() " +"or setalloccol() on it first (to pre-allocate space for new columns) before " +"assigning by reference to it." +msgstr "" + +#: assign.c:450 +#, c-format +msgid "" +"Internal error: oldtncol(%d) < oldncol(%d). Please report to data.table " +"issue tracker, including result of sessionInfo()." +msgstr "" + +#: assign.c:452 +#, c-format +msgid "" +"truelength (%d) is greater than 10,000 items over-allocated (length = %d). " +"See ?truelength. If you didn't set the datatable.alloccol option very large, " +"please report to data.table issue tracker including the result of " +"sessionInfo()." +msgstr "" + +#: assign.c:454 +#, c-format +msgid "" +"Internal error: DT passed to assign has not been allocated enough column " +"slots. l=%d, tl=%d, adding %d" +msgstr "" + +#: assign.c:456 +msgid "" +"It appears that at some earlier point, names of this data.table have been " +"reassigned. Please ensure to use setnames() rather than names<- or " +"colnames<-. Otherwise, please report to data.table issue tracker." +msgstr "" + +#: assign.c:460 +#, c-format +msgid "Internal error: selfrefnames is ok but tl names [%d] != tl [%d]" +msgstr "" + +#: assign.c:471 +msgid "" +"Internal error: earlier error 'When deleting columns, i should not be " +"provided' did not happen." +msgstr "" + +#: assign.c:482 +#, c-format +msgid "" +"RHS for item %d has been duplicated because NAMED==%d MAYBE_SHARED==%d, but " +"then is being plonked. length(values)==%d; length(cols)==%d)\n" +msgstr "" + +#: assign.c:487 +#, c-format +msgid "Direct plonk of unnamed RHS, no copy. NAMED==%d, MAYBE_SHARED==%d\n" +msgstr "" + +#: assign.c:556 +#, c-format +msgid "" +"Dropping index '%s' as it doesn't have '__' at the beginning of its name. It " +"was very likely created by v1.9.4 of data.table.\n" +msgstr "" + +#: assign.c:564 +msgid "Internal error: index name ends with trailing __" +msgstr "" + +#: assign.c:569 +msgid "Internal error: Couldn't allocate memory for s4." +msgstr "" + +#: assign.c:580 +msgid "Internal error: Couldn't allocate memory for s5." +msgstr "" + +#: assign.c:601 assign.c:617 +#, c-format +msgid "Dropping index '%s' due to an update on a key column\n" +msgstr "" + +#: assign.c:610 +#, c-format +msgid "Shortening index '%s' to '%s' due to an update on a key column\n" +msgstr "" + +#: assign.c:687 +#, c-format +msgid "Internal error: recycle length error not caught earlier. slen=%d len=%d" +msgstr "" + +#: assign.c:691 +msgid "Internal error: memrecycle has received NULL colname" +msgstr "" + +#: assign.c:717 +#, c-format +msgid "" +"Cannot assign 'factor' to '%s'. Factors can only be assigned to factor, " +"character or list columns." +msgstr "" + +#: assign.c:731 +#, c-format +msgid "" +"Assigning factor numbers to column %d named '%s'. But %d is outside the " +"level range [1,%d]" +msgstr "" + +#: assign.c:739 +#, c-format +msgid "" +"Assigning factor numbers to column %d named '%s'. But %f is outside the " +"level range [1,%d], or is not a whole number." +msgstr "" + +#: assign.c:745 +#, c-format +msgid "" +"Cannot assign '%s' to 'factor'. Factor columns can be assigned factor, " +"character, NA in any type, or level numbers." +msgstr "" + +#: assign.c:766 +msgid "" +"Internal error: levels of target are either not unique or have truelength<0" +msgstr "" + +#: assign.c:805 +#, c-format +msgid "Unable to allocate working memory of %d bytes to combine factor levels" +msgstr "" + +#: assign.c:812 +msgid "Internal error: extra level check sum failed" +msgstr "" + +#: assign.c:831 +#, c-format +msgid "" +"Coercing 'character' RHS to '%s' to match the type of the target column " +"(column %d named '%s')." +msgstr "" + +#: assign.c:837 +#, c-format +msgid "" +"Cannot coerce 'list' RHS to 'integer64' to match the type of the target " +"column (column %d named '%s')." +msgstr "" + +#: assign.c:842 +#, c-format +msgid "" +"Coercing 'list' RHS to '%s' to match the type of the target column (column " +"%d named '%s')." +msgstr "" + +#: assign.c:848 +#, c-format +msgid "Zero-copy coerce when assigning '%s' to '%s' column %d named '%s'.\n" +msgstr "" + +#: assign.c:943 +#, c-format +msgid "type '%s' cannot be coerced to '%s'" +msgstr "" + +#: assign.c:1063 +msgid "" +"To assign integer64 to a character column, please use as.character() for " +"clarity." +msgstr "" + +#: assign.c:1074 +#, c-format +msgid "Unsupported column type in assign.c:memrecycle '%s'" +msgstr "" + +#: assign.c:1121 +#, c-format +msgid "Internal error: writeNA passed a vector of type '%s'" +msgstr "" + +#: assign.c:1152 +#, c-format +msgid "" +"Internal error: savetl_init checks failed (%d %d %p %p). please report to " +"data.table issue tracker." +msgstr "" + +#: assign.c:1160 +#, c-format +msgid "Failed to allocate initial %d items in savetl_init" +msgstr "" + +#: assign.c:1169 +#, c-format +msgid "" +"Internal error: reached maximum %d items for savetl. Please report to data." +"table issue tracker." +msgstr "" + +#: assign.c:1176 +#, c-format +msgid "Failed to realloc saveds to %d items in savetl" +msgstr "" + +#: assign.c:1182 +#, c-format +msgid "Failed to realloc savedtl to %d items in savetl" +msgstr "" + +#: assign.c:1205 +msgid "x must be a character vector" +msgstr "" + +#: assign.c:1206 +msgid "'which' must be an integer vector" +msgstr "" + +#: assign.c:1207 +msgid "'new' must be a character vector" +msgstr "" + +#: assign.c:1208 +#, c-format +msgid "'new' is length %d. Should be the same as length of 'which' (%d)" +msgstr "" + +#: assign.c:1211 +#, c-format +msgid "" +"Item %d of 'which' is %d which is outside range of the length %d character " +"vector" +msgstr "" + +#: assign.c:1221 +msgid "dt passed to setcolorder has no names" +msgstr "" + +#: assign.c:1223 +#, c-format +msgid "Internal error: dt passed to setcolorder has %d columns but %d names" +msgstr "" + +#: assign.c:1230 +msgid "" +"Internal error: o passed to Csetcolorder contains an NA or out-of-bounds" +msgstr "" + +#: assign.c:1232 +msgid "Internal error: o passed to Csetcolorder contains a duplicate" +msgstr "" + +#: between.c:12 +#, c-format +msgid "" +"Incompatible vector lengths: length(x)==%d length(lower)==%d length(upper)==" +"%d. Each should be either length 1 or the length of the longest." +msgstr "" + +#: between.c:16 +msgid "incbounds must be TRUE or FALSE" +msgstr "" + +#: between.c:19 +msgid "NAbounds must be TRUE or NA" +msgstr "" + +#: between.c:22 +msgid "check must be TRUE or FALSE" +msgstr "" + +#: between.c:64 +#, c-format +msgid "Item %d of lower (%d) is greater than item %d of upper (%d)" +msgstr "" + +#: between.c:82 +#, c-format +msgid "between parallel processing of integer took %8.3fs\n" +msgstr "" + +#: between.c:88 +msgid "x is integer64 but lower and/or upper are not." +msgstr "" + +#: between.c:95 +#, c-format +msgid "Item %d of lower (%lld) is greater than item %d of upper (%lld)" +msgstr "" + +#: between.c:112 +#, c-format +msgid "between parallel processing of integer64 took %8.3fs\n" +msgstr "" + +#: between.c:115 +msgid "" +"x is not integer64 but lower and/or upper is integer64. Please align classes." +msgstr "" + +#: between.c:122 +#, c-format +msgid "Item %d of lower (%f) is greater than item %d of upper (%f)" +msgstr "" + +#: between.c:140 +#, c-format +msgid "between parallel processing of double with open bounds took %8.3fs\n" +msgstr "" + +#: between.c:157 +#, c-format +msgid "between parallel processing of double with closed bounds took %8.3fs\n" +msgstr "" + +#: between.c:172 +#, c-format +msgid "Item %d of lower ('%s') is greater than item %d of upper ('%s')" +msgstr "" + +#: between.c:187 +#, c-format +msgid "between non-parallel processing of character took %8.3fs\n" +msgstr "" + +#: between.c:190 +#, c-format +msgid "" +"Internal error: between.c unsupported type '%s' should have been caught at R " +"level" +msgstr "" + +#: bmerge.c:48 +msgid "Internal error: icols is not integer vector" +msgstr "" + +#: bmerge.c:49 +msgid "Internal error: xcols is not integer vector" +msgstr "" + +#: bmerge.c:50 +#, c-format +msgid "Internal error: length(icols) [%d] > length(xcols) [%d]" +msgstr "" + +#: bmerge.c:57 +#, c-format +msgid "Internal error. icols[%d] is NA" +msgstr "" + +#: bmerge.c:58 +#, c-format +msgid "Internal error. xcols[%d] is NA" +msgstr "" + +#: bmerge.c:59 +#, c-format +msgid "icols[%d]=%d outside range [1,length(i)=%d]" +msgstr "" + +#: bmerge.c:60 +#, c-format +msgid "xcols[%d]=%d outside range [1,length(x)=%d]" +msgstr "" + +#: bmerge.c:63 +#, c-format +msgid "typeof x.%s (%s) != typeof i.%s (%s)" +msgstr "" + +#: bmerge.c:70 +msgid "roll is character but not 'nearest'" +msgstr "" + +#: bmerge.c:71 +msgid "roll='nearest' can't be applied to a character column, yet." +msgstr "" + +#: bmerge.c:74 +msgid "Internal error: roll is not character or double" +msgstr "" + +#: bmerge.c:79 +msgid "rollends must be a length 2 logical vector" +msgstr "" + +#: bmerge.c:89 uniqlist.c:270 +msgid "" +"Internal error: invalid value for 'mult'. please report to data.table issue " +"tracker" +msgstr "" + +#: bmerge.c:93 +msgid "" +"Internal error: opArg is not an integer vector of length equal to length(on)" +msgstr "" + +#: bmerge.c:96 +msgid "Internal error: nqgrpArg must be an integer vector" +msgstr "" + +#: bmerge.c:102 +msgid "Intrnal error: nqmaxgrpArg is not a positive length-1 integer vector" +msgstr "" + +#: bmerge.c:111 +msgid "Internal error in allocating memory for non-equi join" +msgstr "" + +#: bmerge.c:156 +msgid "Internal error: xoArg is not an integer vector" +msgstr "" + +#: bmerge.c:271 bmerge.c:379 +#, c-format +msgid "" +"Internal error in bmerge_r for '%s' column. Unrecognized value op[col]=%d" +msgstr "" + +#: bmerge.c:303 +#, c-format +msgid "Only '==' operator is supported for columns of type %s." +msgstr "" + +#: bmerge.c:410 +#, c-format +msgid "Type '%s' not supported for joining/merging" +msgstr "" + +#: bmerge.c:468 +msgid "Internal error: xlow!=xupp-1 || xlowxuppIn" +msgstr "" + +#: chmatch.c:4 +#, c-format +msgid "x is type '%s' (must be 'character' or NULL)" +msgstr "" + +#: chmatch.c:5 +#, c-format +msgid "table is type '%s' (must be 'character' or NULL)" +msgstr "" + +#: chmatch.c:6 +msgid "Internal error: either chin or chmatchdup should be true not both" +msgstr "" + +#: chmatch.c:30 +#, c-format +msgid "" +"Internal error: CHARSXP '%s' has a negative truelength (%d). Please file an " +"issue on the data.table tracker." +msgstr "" + +#: chmatch.c:60 +#, c-format +msgid "" +"Failed to allocate %lld bytes working memory in chmatchdup: length(table)=%d " +"length(unique(table))=%d" +msgstr "" + +#: cj.c:89 +#, c-format +msgid "Type '%s' not supported by CJ." +msgstr "" + +#: coalesce.c:5 +msgid "Internal error in coalesce.c: input is list(...) at R level" +msgstr "" + +#: coalesce.c:7 +msgid "" +"Internal error in coalesce.c: argument 'inplaceArg' must be TRUE or FALSE" +msgstr "" + +#: coalesce.c:16 +msgid "" +"The first argument is a list, data.table or data.frame. In this case there " +"should be no other arguments provided." +msgstr "" + +#: coalesce.c:32 +#, c-format +msgid "" +"Item 1 is a factor but item %d is not a factor. When factors are involved, " +"all items must be factor." +msgstr "" + +#: coalesce.c:34 +#, c-format +msgid "" +"Item %d is a factor but its levels are not identical to the first item's " +"levels." +msgstr "" + +#: coalesce.c:38 +#, c-format +msgid "" +"Item %d is a factor but item 1 is not a factor. When factors are involved, " +"all items must be factor." +msgstr "" + +#: coalesce.c:41 +#, c-format +msgid "" +"Item %d is type %s but the first item is type %s. Please coerce before " +"coalescing." +msgstr "" + +#: coalesce.c:43 +#, c-format +msgid "Item %d has a different class than item 1." +msgstr "" + +#: coalesce.c:46 +#, c-format +msgid "" +"Item %d is length %d but the first item is length %d. Only singletons are " +"recycled." +msgstr "" + +#: coalesce.c:50 +msgid "coalesce copied first item (inplace=FALSE)\n" +msgstr "" + +#: coalesce.c:166 +#, c-format +msgid "Unsupported type: %s" +msgstr "" + +#: dogroups.c:14 +msgid "Internal error: order not integer vector" +msgstr "" + +#: dogroups.c:15 +msgid "Internal error: starts not integer" +msgstr "" + +#: dogroups.c:16 +msgid "Internal error: lens not integer" +msgstr "" + +#: dogroups.c:18 +msgid "Internal error: jiscols not NULL but o__ has length" +msgstr "" + +#: dogroups.c:19 +msgid "Internal error: xjiscols not NULL but o__ has length" +msgstr "" + +#: dogroups.c:20 +msgid "'env' should be an environment" +msgstr "" + +#: dogroups.c:39 +#, c-format +msgid "" +"Internal error: unsupported size-0 type '%s' in column %d of 'by' should " +"have been caught earlier" +msgstr "" + +#: dogroups.c:43 +#, c-format +msgid "!length(bynames)[%d]==length(groups)[%d]==length(grpcols)[%d]" +msgstr "" + +#: dogroups.c:62 +msgid "row.names attribute of .SD not found" +msgstr "" + +#: dogroups.c:64 +#, c-format +msgid "" +"row.names of .SD isn't integer length 2 with NA as first item; i.e., ." +"set_row_names(). [%s %d %d]" +msgstr "" + +#: dogroups.c:69 +msgid "length(names)!=length(SD)" +msgstr "" + +#: dogroups.c:73 +#, c-format +msgid "" +"Internal error: size-0 type %d in .SD column %d should have been caught " +"earlier" +msgstr "" + +#: dogroups.c:83 +msgid "length(xknames)!=length(xSD)" +msgstr "" + +#: dogroups.c:87 +#, c-format +msgid "" +"Internal error: type %d in .xSD column %d should have been caught by now" +msgstr "" + +#: dogroups.c:91 +#, c-format +msgid "length(iSD)[%d] != length(jiscols)[%d]" +msgstr "" + +#: dogroups.c:92 +#, c-format +msgid "length(xSD)[%d] != length(xjiscols)[%d]" +msgstr "" + +#: dogroups.c:155 dogroups.c:184 +msgid "Internal error. Type of column should have been checked by now" +msgstr "" + +#: dogroups.c:273 +#, c-format +msgid "j evaluates to type '%s'. Must evaluate to atomic vector or list." +msgstr "" + +#: dogroups.c:281 +msgid "" +"All items in j=list(...) should be atomic vectors or lists. If you are " +"trying something like j=list(.SD,newcol=mean(colA)) then use := by group " +"instead (much quicker), or cbind or merge afterwards." +msgstr "" + +#: dogroups.c:291 +msgid "" +"RHS is NULL when grouping :=. Makes no sense to delete a column by group. " +"Perhaps use an empty vector instead." +msgstr "" + +#: dogroups.c:295 +#, c-format +msgid "" +"Supplied %d items to be assigned to group %d of size %d in column '%s'. The " +"RHS length must either be 1 (single values are ok) or match the LHS length " +"exactly. If you wish to 'recycle' the RHS please use rep() explicitly to " +"make this intent clear to readers of your code." +msgstr "" + +#: dogroups.c:304 +msgid "" +"Internal error: Trying to add new column by reference but tl is full; " +"setalloccol should have run first at R level before getting to this point in " +"dogroups" +msgstr "" + +#: dogroups.c:319 +#, c-format +msgid "Group %d column '%s': %s" +msgstr "" + +#: dogroups.c:326 +msgid "j doesn't evaluate to the same number of columns for each group" +msgstr "" + +#: dogroups.c:360 +#, c-format +msgid "" +"Column %d of j's result for the first group is NULL. We rely on the column " +"types of the first result to decide the type expected for the remaining " +"groups (and require consistency). NULL columns are acceptable for later " +"groups (and those are replaced with NA of appropriate type and recycled) but " +"not for the first. Please use a typed empty vector instead, such as " +"integer() or numeric()." +msgstr "" + +#: dogroups.c:363 +msgid "" +"j appears to be a named vector. The same names will likely be created over " +"and over again for each group and slow things down. Try and pass a named " +"list (which data.table optimizes) or an unnamed list() instead.\n" +msgstr "" + +#: dogroups.c:365 +#, c-format +msgid "" +"Column %d of j is a named vector (each item down the rows is named, " +"somehow). Please remove those names for efficiency (to save creating them " +"over and over for each group). They are ignored anyway.\n" +msgstr "" + +#: dogroups.c:373 +msgid "" +"The result of j is a named list. It's very inefficient to create the same " +"names over and over again for each group. When j=list(...), any names are " +"detected, removed and put back after grouping has completed, for efficiency. " +"Using j=transform(), for example, prevents that speedup (consider changing " +"to :=). This message may be upgraded to warning in future.\n" +msgstr "" + +#: dogroups.c:385 +#, c-format +msgid "dogroups: growing from %d to %d rows\n" +msgstr "" + +#: dogroups.c:386 +#, c-format +msgid "dogroups: length(ans)[%d]!=ngrpcols[%d]+njval[%d]" +msgstr "" + +#: dogroups.c:419 +#, c-format +msgid "" +"Item %d of j's result for group %d is zero length. This will be filled with " +"%d NAs to match the longest column in this result. Later groups may have a " +"similar problem but only the first is reported to save filling the warning " +"buffer." +msgstr "" + +#: dogroups.c:426 +#, c-format +msgid "" +"Column %d of result for group %d is type '%s' but expecting type '%s'. " +"Column types must be consistent for each group." +msgstr "" + +#: dogroups.c:428 +#, c-format +msgid "" +"Supplied %d items for column %d of group %d which has %d rows. The RHS " +"length must either be 1 (single values are ok) or match the LHS length " +"exactly. If you wish to 'recycle' the RHS please use rep() explicitly to " +"make this intent clear to readers of your code." +msgstr "" + +#: dogroups.c:443 +#, c-format +msgid "Wrote less rows (%d) than allocated (%d).\n" +msgstr "" + +#: dogroups.c:453 +#, c-format +msgid "Internal error: block 0 [%d] and block 1 [%d] have both run" +msgstr "" + +#: dogroups.c:455 +#, c-format +msgid "" +"\n" +" %s took %.3fs for %d groups\n" +msgstr "" + +#: dogroups.c:457 +#, c-format +msgid " eval(j) took %.3fs for %d calls\n" +msgstr "" + +#: dogroups.c:481 +msgid "growVector passed NULL" +msgstr "" + +#: fastmean.c:39 +msgid "narm should be TRUE or FALSE" +msgstr "" + +#: fastmean.c:45 +#, c-format +msgid "fastmean was passed type %s, not numeric or logical" +msgstr "" + +#: fastmean.c:83 fastmean.c:111 +#, c-format +msgid "Internal error: type '%s' not caught earlier in fastmean" +msgstr "" + +#: fcast.c:80 +#, c-format +msgid "Unsupported column type in fcast val: '%s'" +msgstr "" + +#: fifelse.c:5 +msgid "Argument 'test' must be logical." +msgstr "" + +#: fifelse.c:23 +#, c-format +msgid "" +"'yes' is of type %s but 'no' is of type %s. Please make sure that both " +"arguments have the same type." +msgstr "" + +#: fifelse.c:28 +msgid "" +"'yes' has different class than 'no'. Please make sure that both arguments " +"have the same class." +msgstr "" + +#: fifelse.c:33 +msgid "'yes' and 'no' are both type factor but their levels are different." +msgstr "" + +#: fifelse.c:38 +#, c-format +msgid "Length of 'yes' is %lld but must be 1 or length of 'test' (%lld)." +msgstr "" + +#: fifelse.c:40 +#, c-format +msgid "Length of 'no' is %lld but must be 1 or length of 'test' (%lld)." +msgstr "" + +#: fifelse.c:51 +#, c-format +msgid "Length of 'na' is %lld but must be 1" +msgstr "" + +#: fifelse.c:57 +#, c-format +msgid "" +"'yes' is of type %s but 'na' is of type %s. Please make sure that both " +"arguments have the same type." +msgstr "" + +#: fifelse.c:59 +msgid "" +"'yes' has different class than 'na'. Please make sure that both arguments " +"have the same class." +msgstr "" + +#: fifelse.c:63 +msgid "'yes' and 'na' are both type factor but their levels are different." +msgstr "" + +#: fifelse.c:133 +#, c-format +msgid "Type %s is not supported." +msgstr "" + +#: fmelt.c:18 +msgid "'x' must be an integer" +msgstr "" + +#: fmelt.c:19 +msgid "'n' must be a positive integer" +msgstr "" + +#: fmelt.c:41 +msgid "Argument to 'which' must be logical" +msgstr "" + +#: fmelt.c:70 +msgid "concat: 'vec must be a character vector" +msgstr "" + +#: fmelt.c:71 +msgid "concat: 'idx' must be an integer vector of length >= 0" +msgstr "" + +#: fmelt.c:75 +msgid "" +"concat: 'idx' must take values between 0 and length(vec); 0 <= idx <= " +"length(vec)" +msgstr "" + +#: fmelt.c:102 +#, c-format +msgid "Unknown 'measure.vars' type %s at index %d of list" +msgstr "" + +#: fmelt.c:148 +#, c-format +msgid "" +"id.vars and measure.vars are internally guessed when both are 'NULL'. All " +"non-numeric/integer/logical type columns are considered id.vars, which in " +"this case are columns [%s]. Consider providing at least one of 'id' or " +"'measure' vars in future." +msgstr "" + +#: fmelt.c:154 fmelt.c:219 +#, c-format +msgid "Unknown 'id.vars' type %s, must be character or integer vector" +msgstr "" + +#: fmelt.c:159 fmelt.c:223 +msgid "One or more values in 'id.vars' is invalid." +msgstr "" + +#: fmelt.c:175 +msgid "" +"'measure.vars' is missing. Assigning all columns other than 'id.vars' " +"columns as 'measure.vars'.\n" +msgstr "" + +#: fmelt.c:176 +#, c-format +msgid "Assigned 'measure.vars' are [%s].\n" +msgstr "" + +#: fmelt.c:184 +#, c-format +msgid "" +"Unknown 'measure.vars' type %s, must be character or integer vector/list" +msgstr "" + +#: fmelt.c:193 fmelt.c:239 +msgid "One or more values in 'measure.vars' is invalid." +msgstr "" + +#: fmelt.c:211 +msgid "" +"'id.vars' is missing. Assigning all columns other than 'measure.vars' " +"columns as 'id.vars'.\n" +msgstr "" + +#: fmelt.c:212 +#, c-format +msgid "Assigned 'id.vars' are [%s].\n" +msgstr "" + +#: fmelt.c:231 +#, c-format +msgid "Unknown 'measure.vars' type %s, must be character or integer vector" +msgstr "" + +#: fmelt.c:276 +msgid "" +"When 'measure.vars' is a list, 'value.name' must be a character vector of " +"length =1 or =length(measure.vars)." +msgstr "" + +#: fmelt.c:277 +msgid "" +"When 'measure.vars' is either not specified or a character/integer vector, " +"'value.name' must be a character vector of length =1." +msgstr "" + +#: fmelt.c:280 +msgid "'variable.name' must be a character/integer vector of length=1." +msgstr "" + +#: fmelt.c:329 +msgid "" +"Internal error: combineFactorLevels in fmelt.c expects all-character input" +msgstr "" + +#: fmelt.c:332 +msgid "" +"Internal error: combineFactorLevels in fmelt.c expects a character target to " +"factorize" +msgstr "" + +#: fmelt.c:385 +#, c-format +msgid "" +"'measure.vars' [%s] are not all of the same type. By order of hierarchy, the " +"molten data value column will be of type '%s'. All measure variables not of " +"type '%s' will be coerced too. Check DETAILS in ?melt.data.table for more on " +"coercion.\n" +msgstr "" + +#: fmelt.c:387 +#, c-format +msgid "" +"The molten data value type is a list at item %d. 'na.rm=TRUE' is ignored.\n" +msgstr "" + +#: fmelt.c:490 +#, c-format +msgid "Unknown column type '%s' for column '%s'." +msgstr "" + +#: fmelt.c:514 +#, c-format +msgid "Internal error: fmelt.c:getvarcols %d %d" +msgstr "" + +#: fmelt.c:662 +#, c-format +msgid "Unknown column type '%s' for column '%s' in 'data'" +msgstr "" + +#: fmelt.c:673 +msgid "Input is not of type VECSXP, expected a data.table, data.frame or list" +msgstr "" + +#: fmelt.c:674 +msgid "Argument 'value.factor' should be logical TRUE/FALSE" +msgstr "" + +#: fmelt.c:675 +msgid "Argument 'variable.factor' should be logical TRUE/FALSE" +msgstr "" + +#: fmelt.c:676 +msgid "Argument 'na.rm' should be logical TRUE/FALSE." +msgstr "" + +#: fmelt.c:677 +msgid "Argument 'variable.name' must be a character vector" +msgstr "" + +#: fmelt.c:678 +msgid "Argument 'value.name' must be a character vector" +msgstr "" + +#: fmelt.c:679 +msgid "Argument 'verbose' should be logical TRUE/FALSE" +msgstr "" + +#: fmelt.c:682 +msgid "ncol(data) is 0. Nothing to melt. Returning original data.table." +msgstr "" + +#: fmelt.c:687 +msgid "names(data) is NULL. Please report to data.table-help" +msgstr "" + +#: forder.c:103 +#, c-format +msgid "Failed to realloc thread private group size buffer to %d*4bytes" +msgstr "" + +#: forder.c:117 +#, c-format +msgid "Failed to realloc group size result to %d*4bytes" +msgstr "" + +#: forder.c:260 +#, c-format +msgid "" +"Logical error. counts[0]=%d in cradix but should have been decremented to 0. " +"radix=%d" +msgstr "" + +#: forder.c:275 +msgid "Failed to alloc cradix_counts" +msgstr "" + +#: forder.c:277 +msgid "Failed to alloc cradix_tmp" +msgstr "" + +#: forder.c:288 +#, c-format +msgid "" +"Internal error: ustr isn't empty when starting range_str: ustr_n=%d, " +"ustr_alloc=%d" +msgstr "" + +#: forder.c:289 +msgid "Internal error: ustr_maxlen isn't 0 when starting range_str" +msgstr "" + +#: forder.c:309 +#, c-format +msgid "Unable to realloc %d * %d bytes in range_str" +msgstr "" + +#: forder.c:327 +msgid "Failed to alloc ustr3 when converting strings to UTF8" +msgstr "" + +#: forder.c:345 +msgid "Failed to alloc tl when converting strings to UTF8" +msgstr "" + +#: forder.c:374 +msgid "Must an integer or numeric vector length 1" +msgstr "" + +#: forder.c:375 +msgid "Must be 2, 1 or 0" +msgstr "" + +#: forder.c:409 +msgid "Unknown non-finite value; not NA, NaN, -Inf or +Inf" +msgstr "" + +#: forder.c:431 +msgid "" +"Internal error: input is not either a list of columns, or an atomic vector." +msgstr "" + +#: forder.c:433 +msgid "" +"Internal error: input is an atomic vector (not a list of columns) but by= is " +"not NULL" +msgstr "" + +#: forder.c:435 +msgid "" +"Input is an atomic vector (not a list of columns) but order= is not a length " +"1 integer" +msgstr "" + +#: forder.c:437 +#, c-format +msgid "forder.c received a vector type '%s' length %d\n" +msgstr "" + +#: forder.c:445 +#, c-format +msgid "forder.c received %d rows and %d columns\n" +msgstr "" + +#: forder.c:448 +msgid "Internal error: DT is an empty list() of 0 columns" +msgstr "" + +#: forder.c:450 +#, c-format +msgid "" +"Internal error: DT has %d columns but 'by' is either not integer or is " +"length 0" +msgstr "" + +#: forder.c:452 +#, c-format +msgid "" +"Either order= is not integer or its length (%d) is different to by='s length " +"(%d)" +msgstr "" + +#: forder.c:458 +#, c-format +msgid "internal error: 'by' value %d out of range [1,%d]" +msgstr "" + +#: forder.c:460 +#, c-format +msgid "Column %d is length %d which differs from length of column 1 (%d)\n" +msgstr "" + +#: forder.c:464 +msgid "retGrp= must be TRUE or FALSE" +msgstr "" + +#: forder.c:467 +msgid "sort= must be TRUE or FALSE" +msgstr "" + +#: forder.c:470 +msgid "At least one of retGrp= or sort= must be TRUE" +msgstr "" + +#: forder.c:472 +msgid "na.last must be logical TRUE, FALSE or NA of length 1" +msgstr "" + +#: forder.c:514 +#, c-format +msgid "Item %d of order (ascending/descending) is %d. Must be +1 or -1." +msgstr "" + +#: forder.c:540 +#, c-format +msgid "" +"\n" +"*** Column %d passed to forder is a date stored as an 8 byte double but no " +"fractions are present. Please consider a 4 byte integer date such as IDate " +"to save space and time.\n" +msgstr "" + +#: forder.c:556 +#, c-format +msgid "Column %d passed to [f]order is type '%s', not yet supported." +msgstr "" + +#: forder.c:705 +msgid "Internal error: column not supported not caught earlier" +msgstr "" + +#: forder.c:713 +#, c-format +msgid "nradix=%d\n" +msgstr "" + +#: forder.c:719 +#, c-format +msgid "" +"Failed to allocate TMP or UGRP or they weren't cache line aligned: nth=%d" +msgstr "" + +#: forder.c:724 +msgid "Could not allocate (very tiny) group size thread buffers" +msgstr "" + +#: forder.c:785 +#, c-format +msgid "Timing block %2d%s = %8.3f %8d\n" +msgstr "" + +#: forder.c:788 +#, c-format +msgid "stat[%03d]==%10zd\n" +msgstr "" + +#: forder.c:1044 +#, c-format +msgid "Failed to allocate parallel counts. my_n=%d, nBatch=%d" +msgstr "" + +#: forder.c:1153 +#, c-format +msgid "Unable to allocate TMP for my_n=%d items in parallel batch counting" +msgstr "" + +#: forder.c:1260 +msgid "" +"is.sorted (R level) and fsorted (C level) only to be used on vectors. If " +"needed on a list/data.table, you'll need the order anyway if not sorted, so " +"use if (length(o<-forder(...))) for efficiency in one step, or equivalent at " +"C level" +msgstr "" + +#: forder.c:1292 +#, c-format +msgid "type '%s' is not yet supported" +msgstr "" + +#: forder.c:1301 +msgid "x must be either NULL or an integer vector" +msgstr "" + +#: forder.c:1303 +msgid "nrow must be integer vector length 1" +msgstr "" + +#: forder.c:1305 +#, c-format +msgid "nrow==%d but must be >=0" +msgstr "" + +#: forder.c:1322 +msgid "x must be type 'double'" +msgstr "" + +#: frank.c:11 +#, c-format +msgid "Internal error. Argument 'x' to Cdt_na is type '%s' not 'list'" +msgstr "" + +#: frank.c:12 +#, c-format +msgid "Internal error. Argument 'cols' to Cdt_na is type '%s' not 'integer'" +msgstr "" + +#: frank.c:16 frank.c:146 subset.c:263 +#, c-format +msgid "Item %d of 'cols' is %d which is outside 1-based range [1,ncol(x)=%d]" +msgstr "" + +#: frank.c:26 frank.c:155 +#, c-format +msgid "" +"Column %d of input list x is length %d, inconsistent with first column of " +"that item which is length %d." +msgstr "" + +#: frank.c:65 frank.c:202 transpose.c:88 +#, c-format +msgid "Unsupported column type '%s'" +msgstr "" + +#: frank.c:83 +msgid "" +"Internal error: invalid ties.method for frankv(), should have been caught " +"before. please report to data.table issue tracker" +msgstr "" + +#: frank.c:130 +#, c-format +msgid "Internal error: unknown ties value in frank: %d" +msgstr "" + +#: frank.c:141 +#, c-format +msgid "Internal error. Argument 'x' to CanyNA is type '%s' not 'list'" +msgstr "" + +#: frank.c:142 +#, c-format +msgid "Internal error. Argument 'cols' to CanyNA is type '%s' not 'integer'" +msgstr "" + +#: fread.c:106 +#, c-format +msgid "" +"Internal error in line %d of fread.c, please report on data.table GitHub: " +msgstr "" + +#: fread.c:149 +#, c-format +msgid "System error %d unmapping view of file\n" +msgstr "" + +#: fread.c:152 +#, c-format +msgid "System errno %d unmapping file: %s\n" +msgstr "" + +#: fread.c:212 +#, c-format +msgid "Internal error: NUMTYPE(%d) > nLetters(%d)" +msgstr "" + +#: fread.c:437 +#, c-format +msgid "Unable to allocate %s of contiguous virtual RAM. %s allocation." +msgstr "" + +#: fread.c:442 +#, c-format +msgid "Avoidable %.3f seconds. %s time to copy.\n" +msgstr "" + +#: fread.c:443 +#, c-format +msgid " File copy in RAM took %.3f seconds.\n" +msgstr "" + +#: fread.c:1095 +msgid "" +"Previous fread() session was not cleaned up properly. Cleaned up ok at the " +"beginning of this fread() call.\n" +msgstr "" + +#: fread.c:1098 +msgid "[01] Check arguments\n" +msgstr "" + +#: fread.c:1105 +#, c-format +msgid " Using %d threads (omp_get_max_threads()=%d, nth=%d)\n" +msgstr "" + +#: fread.c:1113 +msgid "" +"Internal error: NAstrings is itself NULL. When empty it should be pointer to " +"NULL." +msgstr "" + +#: fread.c:1131 +#, c-format +msgid "freadMain: NAstring <<%s>> has whitespace at the beginning or end" +msgstr "" + +#: fread.c:1136 +#, c-format +msgid "" +"freadMain: NAstring <<%s>> is recognized as type boolean, this is not " +"permitted." +msgstr "" + +#: fread.c:1146 +msgid " No NAstrings provided.\n" +msgstr "" + +#: fread.c:1148 +msgid " NAstrings = [" +msgstr "" + +#: fread.c:1151 +msgid "]\n" +msgstr "" + +#: fread.c:1153 +msgid " One or more of the NAstrings looks like a number.\n" +msgstr "" + +#: fread.c:1155 +msgid " None of the NAstrings look like numbers.\n" +msgstr "" + +#: fread.c:1157 +#, c-format +msgid " skip num lines = %llu\n" +msgstr "" + +#: fread.c:1158 +#, c-format +msgid " skip to string = <<%s>>\n" +msgstr "" + +#: fread.c:1159 +#, c-format +msgid " show progress = %d\n" +msgstr "" + +#: fread.c:1160 +#, c-format +msgid " 0/1 column will be read as %s\n" +msgstr "" + +#: fread.c:1168 +#, c-format +msgid "sep == quote ('%c') is not allowed" +msgstr "" + +#: fread.c:1169 +msgid "dec='' not allowed. Should be '.' or ','" +msgstr "" + +#: fread.c:1170 +#, c-format +msgid "sep == dec ('%c') is not allowed" +msgstr "" + +#: fread.c:1171 +#, c-format +msgid "quote == dec ('%c') is not allowed" +msgstr "" + +#: fread.c:1188 +msgid "[02] Opening the file\n" +msgstr "" + +#: fread.c:1191 +msgid "" +" `input` argument is provided rather than a file name, interpreting as raw " +"text to read\n" +msgstr "" + +#: fread.c:1195 +msgid "Internal error: last byte of character input isn't \\0" +msgstr "" + +#: fread.c:1198 +#, c-format +msgid " Opening file %s\n" +msgstr "" + +#: fread.c:1202 +#, c-format +msgid "file not found: %s" +msgstr "" + +#: fread.c:1206 +#, c-format +msgid "Opened file ok but couldn't obtain its size: %s" +msgstr "" + +#: fread.c:1209 fread.c:1237 +#, c-format +msgid "File is empty: %s" +msgstr "" + +#: fread.c:1210 fread.c:1238 +#, c-format +msgid " File opened, size = %s.\n" +msgstr "" + +#: fread.c:1227 +#, c-format +msgid "File not found: %s" +msgstr "" + +#: fread.c:1233 +#, c-format +msgid "Unable to open file after %d attempts (error %d): %s" +msgstr "" + +#: fread.c:1235 +#, c-format +msgid "GetFileSizeEx failed (returned 0) on file: %s" +msgstr "" + +#: fread.c:1240 +#, c-format +msgid "This is Windows, CreateFileMapping returned error %d for file %s" +msgstr "" + +#: fread.c:1247 +#, c-format +msgid "" +"Opened %s file ok but could not memory map it. This is a %dbit process. %s." +msgstr "" + +#: fread.c:1248 +msgid "Please upgrade to 64bit" +msgstr "" + +#: fread.c:1248 +msgid "There is probably not enough contiguous virtual memory available" +msgstr "" + +#: fread.c:1251 +msgid " Memory mapped ok\n" +msgstr "" + +#: fread.c:1253 +msgid "" +"Internal error: Neither `input` nor `filename` are given, nothing to read." +msgstr "" + +#: fread.c:1270 +msgid "[03] Detect and skip BOM\n" +msgstr "" + +#: fread.c:1274 +msgid "" +" UTF-8 byte order mark EF BB BF found at the start of the file and " +"skipped.\n" +msgstr "" + +#: fread.c:1279 +msgid "" +"GB-18030 encoding detected, however fread() is unable to decode it. Some " +"character fields may be garbled.\n" +msgstr "" + +#: fread.c:1282 +msgid "" +"File is encoded in UTF-16, this encoding is not supported by fread(). Please " +"recode the file to UTF-8." +msgstr "" + +#: fread.c:1287 +#, c-format +msgid " Last byte(s) of input found to be %s and removed.\n" +msgstr "" + +#: fread.c:1290 +msgid "Input is empty or only contains BOM or terminal control characters" +msgstr "" + +#: fread.c:1297 +msgid "[04] Arrange mmap to be \\0 terminated\n" +msgstr "" + +#: fread.c:1304 +msgid "" +" No \\n exists in the file at all, so single \\r (if any) will be taken as " +"one line ending. This is unusual but will happen normally when there is no " +"\\r either; e.g. a single line missing its end of line.\n" +msgstr "" + +#: fread.c:1305 +msgid "" +" \\n has been found in the input and different lines can end with different " +"line endings (e.g. mixed \\n and \\r\\n in one file). This is common and " +"ideal.\n" +msgstr "" + +#: fread.c:1329 +#, c-format +msgid "" +" File ends abruptly with '%c'. Final end-of-line is missing. Using cow page " +"to write 0 to the last byte.\n" +msgstr "" + +#: fread.c:1336 +#, c-format +msgid " File ends abruptly with '%c'. Copying file in RAM. %s copy.\n" +msgstr "" + +#: fread.c:1370 +msgid "[05] Skipping initial rows if needed\n" +msgstr "" + +#: fread.c:1376 +#, c-format +msgid "" +"skip='%s' not found in input (it is case sensitive and literal; i.e., no " +"patterns, wildcards or regex)" +msgstr "" + +#: fread.c:1382 +#, c-format +msgid "" +"Found skip='%s' on line %llu. Taking this to be header row or first row of " +"data.\n" +msgstr "" + +#: fread.c:1395 +#, c-format +msgid " Skipped to line %llu in the file" +msgstr "" + +#: fread.c:1396 +#, c-format +msgid "skip=%llu but the input only has %llu line%s" +msgstr "" + +#: fread.c:1405 +msgid "" +"Input is either empty, fully whitespace, or skip has been set after the last " +"non-whitespace." +msgstr "" + +#: fread.c:1407 +#, c-format +msgid " Moved forward to first non-blank line (%d)\n" +msgstr "" + +#: fread.c:1408 +#, c-format +msgid " Positioned on line %d starting: <<%s>>\n" +msgstr "" + +#: fread.c:1426 +msgid "[06] Detect separator, quoting rule, and ncolumns\n" +msgstr "" + +#: fread.c:1430 +msgid " sep='\\n' passed in meaning read lines as single character column\n" +msgstr "" + +#: fread.c:1449 +msgid " Detecting sep automatically ...\n" +msgstr "" + +#: fread.c:1456 +#, c-format +msgid " Using supplied sep '%s'\n" +msgstr "" + +#: fread.c:1490 +#, c-format +msgid " with %d fields using quote rule %d\n" +msgstr "" + +#: fread.c:1540 +#, c-format +msgid " with %d lines of %d fields using quote rule %d\n" +msgstr "" + +#: fread.c:1547 +msgid "" +" No sep and quote rule found a block of 2x2 or greater. Single column " +"input.\n" +msgstr "" + +#: fread.c:1563 +msgid "" +"Single column input contains invalid quotes. Self healing only effective " +"when ncol>1" +msgstr "" + +#: fread.c:1568 +#, c-format +msgid "" +"Found and resolved improper quoting in first %d rows. If the fields are not " +"quoted (e.g. field separator does not appear within any field), try quote=" +"\")\" to avoid this warning." +msgstr "" + +#: fread.c:1584 +#, c-format +msgid "" +"Internal error: ncol==%d line==%d after detecting sep, ncol and first line" +msgstr "" + +#: fread.c:1587 +#, c-format +msgid "Internal error: first line has field count %d but expecting %d" +msgstr "" + +#: fread.c:1589 +#, c-format +msgid "" +" Detected %d columns on line %d. This line is either column names or first " +"data row. Line starts as: <<%s>>\n" +msgstr "" + +#: fread.c:1591 +#, c-format +msgid " Quote rule picked = %d\n" +msgstr "" + +#: fread.c:1592 +#, c-format +msgid " fill=%s and the most number of columns found is %d\n" +msgstr "" + +#: fread.c:1598 +msgid "" +"This file is very unusual: it's one single column, ends with 2 or more end-" +"of-line (representing several NA at the end), and is a multiple of 4096, too." +msgstr "" + +#: fread.c:1599 +#, c-format +msgid " Copying file in RAM. %s\n" +msgstr "" + +#: fread.c:1605 +msgid "" +" 1-column file ends with 2 or more end-of-line. Restoring last eol using " +"extra byte in cow page.\n" +msgstr "" + +#: fread.c:1624 +msgid "" +"[07] Detect column types, good nrow estimate and whether first row is column " +"names\n" +msgstr "" + +#: fread.c:1625 +#, c-format +msgid " 'header' changed by user from 'auto' to %s\n" +msgstr "" + +#: fread.c:1629 +#, c-format +msgid "Failed to allocate 2 x %d bytes for type and tmpType: %s" +msgstr "" + +#: fread.c:1650 +#, c-format +msgid " Number of sampling jump points = %d because " +msgstr "" + +#: fread.c:1651 +#, c-format +msgid "nrow limit (%llu) supplied\n" +msgstr "" + +#: fread.c:1652 +msgid "jump0size==0\n" +msgstr "" + +#: fread.c:1653 +#, c-format +msgid "(%llu bytes from row 1 to eof) / (2 * %llu jump0size) == %llu\n" +msgstr "" + +#: fread.c:1691 +#, c-format +msgid "" +" A line with too-%s fields (%d/%d) was found on line %d of sample jump %d. " +"%s\n" +msgstr "" + +#: fread.c:1718 +#, c-format +msgid " Type codes (jump %03d) : %s Quote rule %d\n" +msgstr "" + +#: fread.c:1731 +#, c-format +msgid "" +" 'header' determined to be true due to column %d containing a string on row " +"1 and a lower type (%s) in the rest of the %d sample rows\n" +msgstr "" + +#: fread.c:1743 +msgid "" +"Internal error: row before first data row has the same number of fields but " +"we're not using it." +msgstr "" + +#: fread.c:1744 +msgid "" +"Internal error: ch!=pos after counting fields in the line before the first " +"data row." +msgstr "" + +#: fread.c:1745 +#, c-format +msgid "" +"Types in 1st data row match types in 2nd data row but previous row has %d " +"fields. Taking previous row as column names." +msgstr "" + +#: fread.c:1748 +#, c-format +msgid "" +"Detected %d column names but the data has %d columns (i.e. invalid file). " +"Added %d extra default column name%s\n" +msgstr "" + +#: fread.c:1751 +msgid "" +"Internal error: fill=true but there is a previous row which should already " +"have been filled." +msgstr "" + +#: fread.c:1752 +#, c-format +msgid "" +"Detected %d column names but the data has %d columns. Filling rows " +"automatically. Set fill=TRUE explicitly to avoid this warning.\n" +msgstr "" + +#: fread.c:1756 +#, c-format +msgid "Failed to realloc 2 x %d bytes for type and tmpType: %s" +msgstr "" + +#: fread.c:1776 +#, c-format +msgid "" +" 'header' determined to be %s because there are%s number fields in the " +"first and only row\n" +msgstr "" + +#: fread.c:1779 +msgid "" +" 'header' determined to be true because all columns are type string and a " +"better guess is not possible\n" +msgstr "" + +#: fread.c:1781 +msgid "" +" 'header' determined to be false because there are some number columns and " +"those columns do not have a string field at the top of them\n" +msgstr "" + +#: fread.c:1797 +#, c-format +msgid " Type codes (first row) : %s Quote rule %d\n" +msgstr "" + +#: fread.c:1806 +#, c-format +msgid "" +" All rows were sampled since file is small so we know nrow=%llu exactly\n" +msgstr "" + +#: fread.c:1818 fread.c:1825 +msgid " =====\n" +msgstr "" + +#: fread.c:1819 +#, c-format +msgid "" +" Sampled %llu rows (handled \\n inside quoted fields) at %d jump points\n" +msgstr "" + +#: fread.c:1820 +#, c-format +msgid " Bytes from first data row on line %d to the end of last row: %llu\n" +msgstr "" + +#: fread.c:1821 +#, c-format +msgid " Line length: mean=%.2f sd=%.2f min=%d max=%d\n" +msgstr "" + +#: fread.c:1822 +#, c-format +msgid " Estimated number of rows: %llu / %.2f = %llu\n" +msgstr "" + +#: fread.c:1823 +#, c-format +msgid "" +" Initial alloc = %llu rows (%llu + %d%%) using bytes/max(mean-2*sd,min) " +"clamped between [1.1*estn, 2.0*estn]\n" +msgstr "" + +#: fread.c:1827 +#, c-format +msgid "Internal error: sampleLines(%llu) > allocnrow(%llu)" +msgstr "" + +#: fread.c:1831 +#, c-format +msgid " Alloc limited to lower nrows=%llu passed in.\n" +msgstr "" + +#: fread.c:1843 +msgid "[08] Assign column names\n" +msgstr "" + +#: fread.c:1851 +#, c-format +msgid "Unable to allocate %d*%d bytes for column name pointers: %s" +msgstr "" + +#: fread.c:1873 +#, c-format +msgid "Internal error: reading colnames ending on '%c'" +msgstr "" + +#: fread.c:1891 +msgid "[09] Apply user overrides on column types\n" +msgstr "" + +#: fread.c:1895 +msgid " Cancelled by user: userOverride() returned false." +msgstr "" + +#: fread.c:1905 +#, c-format +msgid "Failed to allocate %d bytes for size array: %s" +msgstr "" + +#: fread.c:1912 +#, c-format +msgid "" +"Attempt to override column %d <<%.*s>> of inherent type '%s' down to '%s' " +"ignored. Only overrides to a higher type are currently supported. If this " +"was intended, please coerce to the lower type afterwards." +msgstr "" + +#: fread.c:1926 +#, c-format +msgid " After %d type and %d drop user overrides : %s\n" +msgstr "" + +#: fread.c:1934 +msgid "[10] Allocate memory for the datatable\n" +msgstr "" + +#: fread.c:1935 +#, c-format +msgid " Allocating %d column slots (%d - %d dropped) with %llu rows\n" +msgstr "" + +#: fread.c:1989 +#, c-format +msgid "Buffer size %lld is too large\n" +msgstr "" + +#: fread.c:1992 +msgid "[11] Read the data\n" +msgstr "" + +#: fread.c:1995 +#, c-format +msgid " jumps=[%d..%d), chunk_size=%llu, total_size=%llu\n" +msgstr "" + +#: fread.c:2215 +#, c-format +msgid "" +"Column %d (\"%.*s\") bumped from '%s' to '%s' due to <<%.*s>> on row %llu\n" +msgstr "" + +#: fread.c:2330 fread.c:2465 freadR.c:660 +#, c-format +msgid "%s" +msgstr "" + +#: fread.c:2337 +#, c-format +msgid "" +" Too few rows allocated. Allocating additional %llu rows (now nrows=%llu) " +"and continue reading from jump %d\n" +msgstr "" + +#: fread.c:2344 +#, c-format +msgid " Restarting team from jump %d. nSwept==%d quoteRule==%d\n" +msgstr "" + +#: fread.c:2364 +#, c-format +msgid " %d out-of-sample type bumps: %s\n" +msgstr "" + +#: fread.c:2400 +#, c-format +msgid "" +"Read %llu rows x %d columns from %s file in %02d:%06.3f wall clock time\n" +msgstr "" + +#: fread.c:2407 +msgid "[12] Finalizing the datatable\n" +msgstr "" + +#: fread.c:2408 +msgid " Type counts:\n" +msgstr "" + +#: fread.c:2410 +#, c-format +msgid "%10d : %-9s '%c'\n" +msgstr "" + +#: fread.c:2426 +#, c-format +msgid "Discarded single-line footer: <<%s>>" +msgstr "" + +#: fread.c:2431 +#, c-format +msgid "" +"Stopped early on line %llu. Expected %d fields but found %d. Consider " +"fill=TRUE and comment.char=. First discarded non-empty line: <<%s>>" +msgstr "" + +#: fread.c:2437 +#, c-format +msgid "" +"Found and resolved improper quoting out-of-sample. First healed line %llu: <<" +"%s>>. If the fields are not quoted (e.g. field separator does not appear " +"within any field), try quote=\")\" to avoid this warning." +msgstr "" + +#: fread.c:2441 +msgid "=============================\n" +msgstr "" + +#: fread.c:2443 +#, c-format +msgid "%8.3fs (%3.0f%%) Memory map %.3fGB file\n" +msgstr "" + +#: fread.c:2444 +#, c-format +msgid "%8.3fs (%3.0f%%) sep=" +msgstr "" + +#: fread.c:2446 +#, c-format +msgid " ncol=%d and header detection\n" +msgstr "" + +#: fread.c:2447 +#, c-format +msgid "%8.3fs (%3.0f%%) Column type detection using %llu sample rows\n" +msgstr "" + +#: fread.c:2449 +#, c-format +msgid "" +"%8.3fs (%3.0f%%) Allocation of %llu rows x %d cols (%.3fGB) of which %llu " +"(%3.0f%%) rows used\n" +msgstr "" + +#: fread.c:2453 +#, c-format +msgid "" +"%8.3fs (%3.0f%%) Reading %d chunks (%d swept) of %.3fMB (each chunk %d rows) " +"using %d threads\n" +msgstr "" + +#: fread.c:2455 +#, c-format +msgid "" +" + %8.3fs (%3.0f%%) Parse to row-major thread buffers (grown %d times)\n" +msgstr "" + +#: fread.c:2456 +#, c-format +msgid " + %8.3fs (%3.0f%%) Transpose\n" +msgstr "" + +#: fread.c:2457 +#, c-format +msgid " + %8.3fs (%3.0f%%) Waiting\n" +msgstr "" + +#: fread.c:2458 +#, c-format +msgid "" +"%8.3fs (%3.0f%%) Rereading %d columns due to out-of-sample type exceptions\n" +msgstr "" + +#: fread.c:2460 +#, c-format +msgid "%8.3fs Total\n" +msgstr "" + +#: freadR.c:84 +msgid "" +"Internal error: freadR input not a single character string: a filename or " +"the data itself. Should have been caught at R level." +msgstr "" + +#: freadR.c:92 +msgid "" +"Input contains a \\n or is \")\". Taking this to be text input (not a " +"filename)\n" +msgstr "" + +#: freadR.c:95 +msgid "Input contains no \\n. Taking this to be a filename to open\n" +msgstr "" + +#: freadR.c:101 +msgid "" +"Internal error: freadR sep not a single character. R level catches this." +msgstr "" + +#: freadR.c:105 +msgid "" +"Internal error: freadR dec not a single character. R level catches this." +msgstr "" + +#: freadR.c:112 +msgid "quote= must be a single character, blank \")\", or FALSE" +msgstr "" + +#: freadR.c:137 +msgid "Internal error: skip not integer or string in freadR.c" +msgstr "" + +#: freadR.c:140 +#, c-format +msgid "Internal error: NAstringsArg is type '%s'. R level catches this" +msgstr "" + +#: freadR.c:153 +#, c-format +msgid "nThread(%d)<1" +msgstr "" + +#: freadR.c:160 +msgid "'integer64' must be a single character string" +msgstr "" + +#: freadR.c:168 +#, c-format +msgid "" +"Invalid value integer64='%s'. Must be 'integer64', 'character', 'double' or " +"'numeric'" +msgstr "" + +#: freadR.c:176 +msgid "Use either select= or drop= but not both." +msgstr "" + +#: freadR.c:179 +msgid "" +"select= is type list for specifying types in select=, but colClasses= has " +"been provided as well. Please remove colClasses=." +msgstr "" + +#: freadR.c:181 +msgid "" +"select= is type list but has no names; expecting list(type1=cols1, " +"type2=cols2, ...)" +msgstr "" + +#: freadR.c:188 +msgid "" +"select= is a named vector specifying the columns to select and their types, " +"but colClasses= has been provided as well. Please remove colClasses=." +msgstr "" + +#: freadR.c:196 freadR.c:346 +msgid "colClasses is type list but has no names" +msgstr "" + +#: freadR.c:206 +#, c-format +msgid "encoding='%s' invalid. Must be 'unknown', 'Latin-1' or 'UTF-8'" +msgstr "" + +#: freadR.c:229 +#, c-format +msgid "Column name '%s' (%s) not found" +msgstr "" + +#: freadR.c:231 +#, c-format +msgid "%s is NA" +msgstr "" + +#: freadR.c:233 +#, c-format +msgid "%s is %d which is out of range [1,ncol=%d]" +msgstr "" + +#: freadR.c:247 +msgid "Internal error: typeSize[CT_BOOL8_N] != 1" +msgstr "" + +#: freadR.c:248 +msgid "Internal error: typeSize[CT_STRING] != 1" +msgstr "" + +#: freadR.c:282 +#, c-format +msgid "" +"Column name '%s' not found in column name header (case sensitive), skipping." +msgstr "" + +#: freadR.c:292 +#, c-format +msgid "" +"Column number %d (select[%d]) is negative but should be in the range [1,ncol=" +"%d]. Consider drop= for column exclusion." +msgstr "" + +#: freadR.c:293 +#, c-format +msgid "" +"select = 0 (select[%d]) has no meaning. All values of select should be in " +"the range [1,ncol=%d]." +msgstr "" + +#: freadR.c:294 +#, c-format +msgid "" +"Column number %d (select[%d]) is too large for this table, which only has %d " +"columns." +msgstr "" + +#: freadR.c:295 +#, c-format +msgid "Column number %d ('%s') has been selected twice by select=" +msgstr "" + +#: freadR.c:313 +msgid "" +"colClasses='NULL' is not permitted; i.e. to drop all columns and load nothing" +msgstr "" + +#: freadR.c:318 +#, c-format +msgid "" +"colClasses= is an unnamed vector of types, length %d, but there are %d " +"columns in the input. To specify types for a subset of columns, you can use " +msgstr "" + +#: freadR.c:319 +msgid "" +"a named vector, list format, or specify types using select= instead of " +"colClasses=. Please see examples in ?fread." +msgstr "" + +#: freadR.c:329 +msgid "Internal error: selectInts is NULL but selectColClasses is true" +msgstr "" + +#: freadR.c:330 +msgid "" +"Internal error: length(selectSxp)!=length(colClassesSxp) but " +"selectColClasses is true" +msgstr "" + +#: freadR.c:344 +#, c-format +msgid "colClasses is type '%s' but should be list or character" +msgstr "" + +#: freadR.c:368 +#, c-format +msgid "Column name '%s' (colClasses[[%d]][%d]) not found" +msgstr "" + +#: freadR.c:370 +#, c-format +msgid "colClasses[[%d]][%d] is NA" +msgstr "" + +#: freadR.c:374 +#, c-format +msgid "" +"Column %d ('%s') appears more than once in colClasses. The second time is " +"colClasses[[%d]][%d]." +msgstr "" + +#: freadR.c:381 +#, c-format +msgid "Column number %d (colClasses[[%d]][%d]) is out of range [1,ncol=%d]" +msgstr "" + +#: freadR.c:583 +#, c-format +msgid "Field size is 1 but the field is of type %d\n" +msgstr "" + +#: freadR.c:592 +#, c-format +msgid "Internal error: unexpected field of size %d\n" +msgstr "" + +#: froll.c:18 froll.c:227 froll.c:411 +#, c-format +msgid "%s: window width longer than input vector, returning all NA vector\n" +msgstr "" + +#: froll.c:36 froll.c:244 froll.c:460 +#, c-format +msgid "%s: align %d, shift answer by %d\n" +msgstr "" + +#: froll.c:43 froll.c:251 frolladaptive.c:23 frolladaptive.c:218 +#, c-format +msgid "%s: processing algo %u took %.3fs\n" +msgstr "" + +#: froll.c:52 froll.c:255 +#, c-format +msgid "%s: running for input length %llu, window %d, hasna %d, narm %d\n" +msgstr "" + +#: froll.c:72 froll.c:82 froll.c:173 froll.c:275 froll.c:285 froll.c:366 +#: frolladaptive.c:62 frolladaptive.c:151 frolladaptive.c:251 +#: frolladaptive.c:330 +#, c-format +msgid "" +"%s: hasNA=FALSE used but NA (or other non-finite) value(s) are present in " +"input, use default hasNA=NA to avoid this warning" +msgstr "" + +#: froll.c:75 froll.c:177 froll.c:278 froll.c:370 frolladaptive.c:65 +#: frolladaptive.c:155 frolladaptive.c:254 frolladaptive.c:334 +#, c-format +msgid "" +"%s: NA (or other non-finite) value(s) are present in input, re-running with " +"extra care for NAs\n" +msgstr "" + +#: froll.c:85 froll.c:288 +#, c-format +msgid "" +"%s: NA (or other non-finite) value(s) are present in input, skip non-NA " +"attempt and run with extra care for NAs\n" +msgstr "" + +#: froll.c:141 froll.c:339 +#, c-format +msgid "" +"%s: running in parallel for input length %llu, window %d, hasna %d, narm %d\n" +msgstr "" + +#: froll.c:179 froll.c:372 frolladaptive.c:157 frolladaptive.c:336 +#, c-format +msgid "" +"%s: NA (or other non-finite) value(s) are present in input, na.rm was FALSE " +"so in 'exact' implementation NAs were handled already, no need to re-run\n" +msgstr "" + +#: froll.c:428 +#, c-format +msgid "%s: results from provided FUN are not length 1" +msgstr "" + +#: froll.c:435 +#, c-format +msgid "" +"%s: results from provided FUN are not of type double, coercion from integer " +"or logical will be applied on each iteration\n" +msgstr "" + +#: froll.c:438 +#, c-format +msgid "%s: results from provided FUN are not of type double" +msgstr "" + +#: froll.c:467 +#, c-format +msgid "%s: took %.3fs\n" +msgstr "" + +#: frollR.c:15 +msgid "x must be of type numeric or logical" +msgstr "" + +#: frollR.c:26 +msgid "x must be list, data.frame or data.table of numeric or logical types" +msgstr "" + +#: frollR.c:47 frollR.c:264 +msgid "n must be non 0 length" +msgstr "" + +#: frollR.c:50 +msgid "adaptive must be TRUE or FALSE" +msgstr "" + +#: frollR.c:58 +msgid "n must be integer, list is accepted for adaptive TRUE" +msgstr "" + +#: frollR.c:65 frollR.c:256 frollR.c:259 +msgid "n must be integer" +msgstr "" + +#: frollR.c:72 +msgid "n must be positive integer values (> 0)" +msgstr "" + +#: frollR.c:81 frollR.c:93 +msgid "n must be integer vector or list of integer vectors" +msgstr "" + +#: frollR.c:104 gsumm.c:342 gsumm.c:577 gsumm.c:686 gsumm.c:805 gsumm.c:950 +#: gsumm.c:1261 gsumm.c:1402 uniqlist.c:350 +msgid "na.rm must be TRUE or FALSE" +msgstr "" + +#: frollR.c:107 +msgid "hasNA must be TRUE, FALSE or NA" +msgstr "" + +#: frollR.c:109 +msgid "" +"using hasNA FALSE and na.rm TRUE does not make sense, if you know there are " +"NA values use hasNA TRUE, otherwise leave it as default NA" +msgstr "" + +#: frollR.c:119 frollR.c:275 +msgid "" +"Internal error: invalid align argument in rolling function, should have been " +"caught before. please report to data.table issue tracker." +msgstr "" + +#: frollR.c:122 +msgid "" +"using adaptive TRUE and align argument different than 'right' is not " +"implemented" +msgstr "" + +#: frollR.c:126 frollR.c:297 types.c:64 +#, c-format +msgid "%s: allocating memory for results %dx%d\n" +msgstr "" + +#: frollR.c:135 +msgid "" +"adaptive rolling function can only process 'x' having equal length of " +"elements, like data.table or data.frame; If you want to call rolling " +"function on list having variable length of elements call it for each field " +"separately" +msgstr "" + +#: frollR.c:137 +msgid "" +"length of integer vector(s) provided as list to 'n' argument must be equal " +"to number of observations provided in 'x'" +msgstr "" + +#: frollR.c:151 +msgid "" +"Internal error: invalid fun argument in rolling function, should have been " +"caught before. please report to data.table issue tracker." +msgstr "" + +#: frollR.c:155 frollR.c:279 nafill.c:136 shift.c:21 +msgid "fill must be a vector of length 1" +msgstr "" + +#: frollR.c:169 frollR.c:292 +msgid "fill must be numeric" +msgstr "" + +#: frollR.c:185 +msgid "" +"Internal error: invalid algo argument in rolling function, should have been " +"caught before. please report to data.table issue tracker." +msgstr "" + +#: frollR.c:190 +#, c-format +msgid "Internal error: badaptive=%d but ik is not integer" +msgstr "" + +#: frollR.c:198 +#, c-format +msgid "" +"%s: %d column(s) and %d window(s), if product > 1 then entering parallel " +"execution\n" +msgstr "" + +#: frollR.c:200 +#, c-format +msgid "" +"%s: %d column(s) and %d window(s), not entering parallel execution here " +"because algo='exact' will compute results in parallel\n" +msgstr "" + +#: frollR.c:219 +#, c-format +msgid "Internal error: Unknown sfun value in froll: %d" +msgstr "" + +#: frollR.c:227 frollR.c:328 +#, c-format +msgid "%s: processing of %d column(s) and %d window(s) took %.3fs\n" +msgstr "" + +#: frollR.c:238 +msgid "internal error: 'fun' must be a function" +msgstr "" + +#: frollR.c:240 +msgid "internal error: 'rho' should be an environment" +msgstr "" + +#: frolladaptive.c:33 frolladaptive.c:222 +#, c-format +msgid "%s: running for input length %llu, hasna %d, narm %d\n" +msgstr "" + +#: frolladaptive.c:39 frolladaptive.c:228 +#, c-format +msgid "%s: Unable to allocate memory for cumsum" +msgstr "" + +#: frolladaptive.c:75 frolladaptive.c:264 +#, c-format +msgid "%s: Unable to allocate memory for cum NA counter" +msgstr "" + +#: frolladaptive.c:118 frolladaptive.c:302 +#, c-format +msgid "%s: running in parallel for input length %llu, hasna %d, narm %d\n" +msgstr "" + +#: fsort.c:111 +msgid "x must be a vector of type 'double' currently" +msgstr "" + +#: fsort.c:122 +#, c-format +msgid "nth=%d, nBatch=%d\n" +msgstr "" + +#: fsort.c:156 +#, c-format +msgid "Range = [%g,%g]\n" +msgstr "" + +#: fsort.c:157 +msgid "Cannot yet handle negatives." +msgstr "" + +#: fsort.c:170 +#, c-format +msgid "maxBit=%d; MSBNbits=%d; shift=%d; MSBsize=%d\n" +msgstr "" + +#: fsort.c:173 +msgid "Unable to allocate working memory" +msgstr "" + +#: fsort.c:177 +#, c-format +msgid "" +"counts is %dMB (%d pages per nBatch=%d, batchSize=%lld, lastBatchSize=%lld)\n" +msgstr "" + +#: fsort.c:230 +msgid "Internal error: counts[nBatch-1][MSBsize-1] != length(x)" +msgstr "" + +#: fsort.c:246 +msgid "Top 5 MSB counts: " +msgstr "" + +#: fsort.c:246 +#, c-format +msgid "%lld " +msgstr "" + +#: fsort.c:246 fwrite.c:692 fwrite.c:779 fwrite.c:890 fwrite.c:934 +msgid "\n" +msgstr "" + +#: fsort.c:247 +#, c-format +msgid "Reduced MSBsize from %d to " +msgstr "" + +#: fsort.c:251 +#, c-format +msgid "%d by excluding 0 and 1 counts\n" +msgstr "" + +#: fsort.c:308 +#, c-format +msgid "%d: %.3f (%4.1f%%)\n" +msgstr "" + +#: fwrite.c:603 +#, c-format +msgid "buffMB=%d outside [1,1024]" +msgstr "" + +#: fwrite.c:610 +#, c-format +msgid "" +"eol must be 1 or more bytes (usually either \\n or \\r\\n) but is length %d" +msgstr "" + +#: fwrite.c:613 +msgid "Column writers: " +msgstr "" + +#: fwrite.c:615 fwrite.c:617 fwrite.c:619 +#, c-format +msgid "%d " +msgstr "" + +#: fwrite.c:618 +msgid "... " +msgstr "" + +#: fwrite.c:621 +#, c-format +msgid "" +"\n" +"args.doRowNames=%d args.rowNames=%d doQuote=%d args.nrow=%d args.ncol=%d " +"eolLen=%d\n" +msgstr "" + +#: fwrite.c:654 +#, c-format +msgid "Internal error: type %d has no max length method implemented" +msgstr "" + +#: fwrite.c:661 +#, c-format +msgid "maxLineLen=%zd. Found in %.3fs\n" +msgstr "" + +#: fwrite.c:681 +#, c-format +msgid "" +"%s: '%s'. Failed to open existing file for writing. Do you have write " +"permission to it? Is this Windows and does another process such as Excel " +"have it open?" +msgstr "" + +#: fwrite.c:682 +#, c-format +msgid "" +"%s: '%s'. Unable to create new file for writing (it does not exist already). " +"Do you have permission to write here, is there space on the disk and does " +"the path exist?" +msgstr "" + +#: fwrite.c:690 +#, c-format +msgid "Writing bom (%s), yaml (%d characters) and column names (%s) ... " +msgstr "" + +#: fwrite.c:703 +#, c-format +msgid "Unable to allocate %d MiB for header: %s" +msgstr "" + +#: fwrite.c:731 fwrite.c:793 +msgid "Can't allocate gzip stream structure" +msgstr "" + +#: fwrite.c:737 +#, c-format +msgid "Unable to allocate %d MiB for zbuffer: %s" +msgstr "" + +#: fwrite.c:752 +#, c-format +msgid "Compress gzip error: %d" +msgstr "" + +#: fwrite.c:753 fwrite.c:761 fwrite.c:940 fwrite.c:949 +#, c-format +msgid "%s: '%s'" +msgstr "" + +#: fwrite.c:758 +#, c-format +msgid "done in %.3fs\n" +msgstr "" + +#: fwrite.c:760 +msgid "No data rows present (nrow==0)\n" +msgstr "" + +#: fwrite.c:777 +#, c-format +msgid "" +"Writing %d rows in %d batches of %d rows (each buffer size %dMB, " +"showProgress=%d, nth=%d) ... " +msgstr "" + +#: fwrite.c:946 +#, c-format +msgid "" +"Error %d: one or more threads failed to allocate buffers or there was a " +"compression error." +msgstr "" + +#: fwrite.c:947 +msgid "" +" Please try again with verbose=TRUE and try searching online for this error " +"message.\n" +msgstr "" + +#: fwriteR.c:41 +msgid "Internal error: col passed to getMaxCategLen is missing levels" +msgstr "" + +#: fwriteR.c:75 +msgid "Internal error: getMaxListItemLen should have caught this up front." +msgstr "" + +#: fwriteR.c:98 +#, c-format +msgid "" +"Row %d of list column is type '%s' - not yet implemented. fwrite() can write " +"list columns containing items which are atomic vectors of type logical, " +"integer, integer64, double, complex and character." +msgstr "" + +#: fwriteR.c:103 +#, c-format +msgid "" +"Internal error: row %d of list column has no max length method implemented" +msgstr "" + +#: fwriteR.c:170 +msgid "" +"fwrite must be passed an object of type list; e.g. data.frame, data.table" +msgstr "" + +#: fwriteR.c:179 +msgid "fwrite was passed an empty list of no columns. Nothing to write." +msgstr "" + +#: fwriteR.c:234 +#, c-format +msgid "Column %d's length (%d) is not the same as column 1's length (%d)" +msgstr "" + +#: fwriteR.c:237 +#, c-format +msgid "Column %d's type is '%s' - not yet implemented in fwrite." +msgstr "" + +#: fwriteR.c:262 +msgid "" +"No list columns are present. Setting sep2='' otherwise quote='auto' would " +"quote fields containing sep2.\n" +msgstr "" + +#: fwriteR.c:266 +#, c-format +msgid "" +"If quote='auto', fields will be quoted if the field contains either sep " +"('%c') or sep2 ('%c') because column %d is a list column.\n" +msgstr "" + +#: fwriteR.c:270 +#, c-format +msgid "" +"sep ('%c'), sep2 ('%c') and dec ('%c') must all be different. Column %d is a " +"list column." +msgstr "" + +#: gsumm.c:43 +msgid "env is not an environment" +msgstr "" + +#: gsumm.c:45 +msgid "o is not an integer vector" +msgstr "" + +#: gsumm.c:46 +msgid "f is not an integer vector" +msgstr "" + +#: gsumm.c:47 +msgid "l is not an integer vector" +msgstr "" + +#: gsumm.c:56 +msgid "irowsArg is neither an integer vector nor NULL" +msgstr "" + +#: gsumm.c:58 +#, c-format +msgid "length(f)=%d != length(l)=%d" +msgstr "" + +#: gsumm.c:66 +#, c-format +msgid "o has length %d but sum(l)=%d" +msgstr "" + +#: gsumm.c:69 +msgid "Internal error: o's maxgrpn attribute mismatches recalculated maxgrpn" +msgstr "" + +#: gsumm.c:89 +#, c-format +msgid "" +"Internal error: nrow=%d ngrp=%d nbit=%d shift=%d highSize=%d nBatch=%d " +"batchSize=%d lastBatchSize=%d\n" +msgstr "" + +#: gsumm.c:98 +#, c-format +msgid "gforce initial population of grp took %.3f\n" +msgstr "" + +#: gsumm.c:116 +msgid "" +"Internal error: Failed to allocate counts or TMP when assigning g in gforce" +msgstr "" + +#: gsumm.c:194 +#, c-format +msgid "gforce assign high and low took %.3f\n" +msgstr "" + +#: gsumm.c:200 +#, c-format +msgid "gforce eval took %.3f\n" +msgstr "" + +#: gsumm.c:216 +msgid "gather took ... " +msgstr "" + +#: gsumm.c:334 +#, c-format +msgid "gather implemented for INTSXP, REALSXP, and CPLXSXP but not '%s'" +msgstr "" + +#: gsumm.c:336 gsumm.c:568 +#, c-format +msgid "%.3fs\n" +msgstr "" + +#: gsumm.c:345 +msgid "sum is not meaningful for factors." +msgstr "" + +#: gsumm.c:349 +#, c-format +msgid "This gsum took (narm=%s) ... " +msgstr "" + +#: gsumm.c:350 gsumm.c:606 +#, c-format +msgid "nrow [%d] != length(x) [%d] in gsum" +msgstr "" + +#: gsumm.c:404 +msgid "" +"The sum of an integer column for a group was more than type 'integer' can " +"hold so the result has been coerced to 'numeric' automatically for " +"convenience." +msgstr "" + +#: gsumm.c:565 +#, c-format +msgid "" +"Type '%s' not supported by GForce sum (gsum). Either add the prefix base::" +"sum(.) or turn off GForce optimization using options(datatable.optimize=1)" +msgstr "" + +#: gsumm.c:578 +msgid "" +"GForce mean can only be applied to columns, not .SD or similar. Likely " +"you're looking for 'DT[,lapply(.SD,mean),by=,.SDcols=]'. See ?data.table." +msgstr "" + +#: gsumm.c:579 +msgid "mean is not meaningful for factors." +msgstr "" + +#: gsumm.c:599 +#, c-format +msgid "Internal error: gsum returned type '%s'. typeof(x) is '%s'" +msgstr "" + +#: gsumm.c:609 +#, c-format +msgid "Unable to allocate %d * %d bytes for sum in gmean na.rm=TRUE" +msgstr "" + +#: gsumm.c:612 +#, c-format +msgid "Unable to allocate %d * %d bytes for counts in gmean na.rm=TRUE" +msgstr "" + +#: gsumm.c:638 +#, c-format +msgid "Unable to allocate %d * %d bytes for si in gmean na.rm=TRUE" +msgstr "" + +#: gsumm.c:650 +#, c-format +msgid "" +"Type '%s' not supported by GForce mean (gmean) na.rm=TRUE. Either add the " +"prefix base::mean(.) or turn off GForce optimization using options(datatable." +"optimize=1)" +msgstr "" + +#: gsumm.c:674 +msgid "Internal error: unsupported type at the end of gmean" +msgstr "" + +#: gsumm.c:687 +msgid "" +"GForce min can only be applied to columns, not .SD or similar. To find min " +"of all items in a list such as .SD, either add the prefix base::min(.SD) or " +"turn off GForce optimization using options(datatable.optimize=1). More " +"likely, you may be looking for 'DT[,lapply(.SD,min),by=,.SDcols=]'" +msgstr "" + +#: gsumm.c:688 +msgid "min is not meaningful for factors." +msgstr "" + +#: gsumm.c:693 +#, c-format +msgid "nrow [%d] != length(x) [%d] in gmin" +msgstr "" + +#: gsumm.c:717 gsumm.c:850 +msgid "" +"No non-missing values found in at least one group. Coercing to numeric type " +"and returning 'Inf' for such groups to be consistent with base" +msgstr "" + +#: gsumm.c:756 gsumm.c:891 +msgid "" +"No non-missing values found in at least one group. Returning 'NA' for such " +"groups to be consistent with base" +msgstr "" + +#: gsumm.c:783 +msgid "" +"No non-missing values found in at least one group. Returning 'Inf' for such " +"groups to be consistent with base" +msgstr "" + +#: gsumm.c:791 +msgid "Type 'complex' has no well-defined min" +msgstr "" + +#: gsumm.c:794 +#, c-format +msgid "" +"Type '%s' not supported by GForce min (gmin). Either add the prefix base::" +"min(.) or turn off GForce optimization using options(datatable.optimize=1)" +msgstr "" + +#: gsumm.c:806 +msgid "" +"GForce max can only be applied to columns, not .SD or similar. To find max " +"of all items in a list such as .SD, either add the prefix base::max(.SD) or " +"turn off GForce optimization using options(datatable.optimize=1). More " +"likely, you may be looking for 'DT[,lapply(.SD,max),by=,.SDcols=]'" +msgstr "" + +#: gsumm.c:807 +msgid "max is not meaningful for factors." +msgstr "" + +#: gsumm.c:812 +#, c-format +msgid "nrow [%d] != length(x) [%d] in gmax" +msgstr "" + +#: gsumm.c:930 +msgid "" +"No non-missing values found in at least one group. Returning '-Inf' for such " +"groups to be consistent with base" +msgstr "" + +#: gsumm.c:937 +msgid "Type 'complex' has no well-defined max" +msgstr "" + +#: gsumm.c:940 +#, c-format +msgid "" +"Type '%s' not supported by GForce max (gmax). Either add the prefix base::" +"max(.) or turn off GForce optimization using options(datatable.optimize=1)" +msgstr "" + +#: gsumm.c:951 +msgid "" +"GForce median can only be applied to columns, not .SD or similar. To find " +"median of all items in a list such as .SD, either add the prefix stats::" +"median(.SD) or turn off GForce optimization using options(datatable." +"optimize=1). More likely, you may be looking for 'DT[,lapply(.SD,median)," +"by=,.SDcols=]'" +msgstr "" + +#: gsumm.c:952 +msgid "median is not meaningful for factors." +msgstr "" + +#: gsumm.c:955 +#, c-format +msgid "nrow [%d] != length(x) [%d] in gmedian" +msgstr "" + +#: gsumm.c:992 +#, c-format +msgid "" +"Type '%s' not supported by GForce median (gmedian). Either add the prefix " +"stats::median(.) or turn off GForce optimization using options(datatable." +"optimize=1)" +msgstr "" + +#: gsumm.c:1005 +#, c-format +msgid "nrow [%d] != length(x) [%d] in gtail" +msgstr "" + +#: gsumm.c:1073 +#, c-format +msgid "" +"Type '%s' not supported by GForce tail (gtail). Either add the prefix utils::" +"tail(.) or turn off GForce optimization using options(datatable.optimize=1)" +msgstr "" + +#: gsumm.c:1085 gsumm.c:1176 +#, c-format +msgid "nrow [%d] != length(x) [%d] in ghead" +msgstr "" + +#: gsumm.c:1153 +#, c-format +msgid "" +"Type '%s' not supported by GForce head (ghead). Either add the prefix utils::" +"head(.) or turn off GForce optimization using options(datatable.optimize=1)" +msgstr "" + +#: gsumm.c:1161 +msgid "" +"Internal error, gtail is only implemented for n=1. This should have been " +"caught before. please report to data.table issue tracker." +msgstr "" + +#: gsumm.c:1166 +msgid "" +"Internal error, ghead is only implemented for n=1. This should have been " +"caught before. please report to data.table issue tracker." +msgstr "" + +#: gsumm.c:1172 +msgid "" +"Internal error, `g[` (gnthvalue) is only implemented single value subsets " +"with positive index, e.g., .SD[2]. This should have been caught before. " +"please report to data.table issue tracker." +msgstr "" + +#: gsumm.c:1250 +#, c-format +msgid "" +"Type '%s' not supported by GForce subset `[` (gnthvalue). Either add the " +"prefix utils::head(.) or turn off GForce optimization using " +"options(datatable.optimize=1)" +msgstr "" + +#: gsumm.c:1262 +msgid "" +"GForce var/sd can only be applied to columns, not .SD or similar. For the " +"full covariance matrix of all items in a list such as .SD, either add the " +"prefix stats::var(.SD) (or stats::sd(.SD)) or turn off GForce optimization " +"using options(datatable.optimize=1). Alternatively, if you only need the " +"diagonal elements, 'DT[,lapply(.SD,var),by=,.SDcols=]' is the optimized way " +"to do this." +msgstr "" + +#: gsumm.c:1263 +msgid "var/sd is not meaningful for factors." +msgstr "" + +#: gsumm.c:1266 +#, c-format +msgid "nrow [%d] != length(x) [%d] in gvar" +msgstr "" + +#: gsumm.c:1382 +#, c-format +msgid "" +"Type '%s' not supported by GForce var (gvar). Either add the prefix stats::" +"var(.) or turn off GForce optimization using options(datatable.optimize=1)" +msgstr "" + +#: gsumm.c:1384 +#, c-format +msgid "" +"Type '%s' not supported by GForce sd (gsd). Either add the prefix stats::" +"sd(.) or turn off GForce optimization using options(datatable.optimize=1)" +msgstr "" + +#: gsumm.c:1403 +msgid "" +"GForce prod can only be applied to columns, not .SD or similar. To multiply " +"all items in a list such as .SD, either add the prefix base::prod(.SD) or " +"turn off GForce optimization using options(datatable.optimize=1). More " +"likely, you may be looking for 'DT[,lapply(.SD,prod),by=,.SDcols=]'" +msgstr "" + +#: gsumm.c:1404 +msgid "prod is not meaningful for factors." +msgstr "" + +#: gsumm.c:1409 +#, c-format +msgid "nrow [%d] != length(x) [%d] in gprod" +msgstr "" + +#: gsumm.c:1411 +#, c-format +msgid "Unable to allocate %d * %d bytes for gprod" +msgstr "" + +#: gsumm.c:1446 +#, c-format +msgid "" +"Type '%s' not supported by GForce prod (gprod). Either add the prefix base::" +"prod(.) or turn off GForce optimization using options(datatable.optimize=1)" +msgstr "" + +#: ijoin.c:22 ijoin.c:243 +msgid "" +"Internal error: invalid value for 'mult'; this should have been caught " +"before. please report to data.table issue tracker" +msgstr "" + +#: ijoin.c:29 ijoin.c:250 +msgid "" +"Internal error: invalid value for 'type'; this should have been caught " +"before. please report to data.table issue tracker" +msgstr "" + +#: ijoin.c:56 ijoin.c:121 +#, c-format +msgid "Internal error: unknown type in mult=%d in lookup: %d" +msgstr "" + +#: ijoin.c:124 ijoin.c:215 +#, c-format +msgid "Internal error: unknown mult in lookup: %d" +msgstr "" + +#: ijoin.c:128 +#, c-format +msgid "First pass on calculating lengths in lookup ... done in %8.3f seconds\n" +msgstr "" + +#: ijoin.c:141 +#, c-format +msgid "Second pass on allocation in lookup ... done in %8.3f seconds\n" +msgstr "" + +#: ijoin.c:160 +#, c-format +msgid "Internal error: unknown type lookup should have been caught earlier: %d" +msgstr "" + +#: ijoin.c:212 +#, c-format +msgid "" +"Internal error: unknown type in mult=%d in lookup should have been caught " +"earlier: %d" +msgstr "" + +#: ijoin.c:220 +#, c-format +msgid "Final step in generating lookup ... done in %8.3f seconds\n" +msgstr "" + +#: ijoin.c:323 +#, c-format +msgid "Internal error: unknown type in mult=ALL in overlaps: %d" +msgstr "" + +#: ijoin.c:328 +#, c-format +msgid "" +"First pass on calculating lengths in overlaps ... done in %8.3f seconds\n" +msgstr "" + +#: ijoin.c:464 ijoin.c:571 ijoin.c:720 +#, c-format +msgid "Internal error: unknown type in mult=%d in overlaps: %d" +msgstr "" + +#: ijoin.c:723 +#, c-format +msgid "Internal error: unknown mult in overlaps: %d" +msgstr "" + +#: ijoin.c:727 +#, c-format +msgid "Final step, fetching indices in overlaps ... done in %8.3f seconds\n" +msgstr "" + +#: init.c:198 +#, c-format +msgid "" +"Pointers are %d bytes, greater than 8. We have not tested on any " +"architecture greater than 64bit yet." +msgstr "" + +#: init.c:209 +#, c-format +msgid "Checking NA_INTEGER [%d] == INT_MIN [%d] %s" +msgstr "" + +#: init.c:210 +#, c-format +msgid "Checking NA_INTEGER [%d] == NA_LOGICAL [%d] %s" +msgstr "" + +#: init.c:211 +#, c-format +msgid "Checking sizeof(int) [%d] is 4 %s" +msgstr "" + +#: init.c:212 +#, c-format +msgid "Checking sizeof(double) [%d] is 8 %s" +msgstr "" + +#: init.c:214 +#, c-format +msgid "Checking sizeof(long long) [%d] is 8 %s" +msgstr "" + +#: init.c:215 +#, c-format +msgid "Checking sizeof(pointer) [%d] is 4 or 8 %s" +msgstr "" + +#: init.c:216 +#, c-format +msgid "Checking sizeof(SEXP) [%d] == sizeof(pointer) [%d] %s" +msgstr "" + +#: init.c:217 +#, c-format +msgid "Checking sizeof(uint64_t) [%d] is 8 %s" +msgstr "" + +#: init.c:218 +#, c-format +msgid "Checking sizeof(int64_t) [%d] is 8 %s" +msgstr "" + +#: init.c:219 +#, c-format +msgid "Checking sizeof(signed char) [%d] is 1 %s" +msgstr "" + +#: init.c:220 +#, c-format +msgid "Checking sizeof(int8_t) [%d] is 1 %s" +msgstr "" + +#: init.c:221 +#, c-format +msgid "Checking sizeof(uint8_t) [%d] is 1 %s" +msgstr "" + +#: init.c:222 +#, c-format +msgid "Checking sizeof(int16_t) [%d] is 2 %s" +msgstr "" + +#: init.c:223 +#, c-format +msgid "Checking sizeof(uint16_t) [%d] is 2 %s" +msgstr "" + +#: init.c:226 +#, c-format +msgid "Checking LENGTH(allocVector(INTSXP,2)) [%d] is 2 %s" +msgstr "" + +#: init.c:227 +#, c-format +msgid "Checking TRUELENGTH(allocVector(INTSXP,2)) [%d] is 0 %s" +msgstr "" + +#: init.c:234 +#, c-format +msgid "Checking memset(&i,0,sizeof(int)); i == (int)0 %s" +msgstr "" + +#: init.c:237 +#, c-format +msgid "Checking memset(&ui, 0, sizeof(unsigned int)); ui == (unsigned int)0 %s" +msgstr "" + +#: init.c:240 +#, c-format +msgid "Checking memset(&d, 0, sizeof(double)); d == (double)0.0 %s" +msgstr "" + +#: init.c:243 +#, c-format +msgid "Checking memset(&ld, 0, sizeof(long double)); ld == (long double)0.0 %s" +msgstr "" + +#: init.c:246 +msgid "The ascii character '/' is not just before '0'" +msgstr "" + +#: init.c:247 +msgid "The C expression (uint_fast8_t)('/'-'0')<10 is true. Should be false." +msgstr "" + +#: init.c:248 +msgid "The ascii character ':' is not just after '9'" +msgstr "" + +#: init.c:249 +msgid "The C expression (uint_fast8_t)('9'-':')<10 is true. Should be false." +msgstr "" + +#: init.c:254 +#, c-format +msgid "Conversion of NA_INT64 via double failed %lld!=%lld" +msgstr "" + +#: init.c:258 +msgid "NA_INT64_D (negative -0.0) is not == 0.0." +msgstr "" + +#: init.c:259 +msgid "NA_INT64_D (negative -0.0) is not ==-0.0." +msgstr "" + +#: init.c:260 +msgid "ISNAN(NA_INT64_D) is TRUE but should not be" +msgstr "" + +#: init.c:261 +msgid "isnan(NA_INT64_D) is TRUE but should not be" +msgstr "" + +#: init.c:290 +#, c-format +msgid "PRINTNAME(install(\")integer64\")) has returned %s not %s" +msgstr "" + +#: init.c:359 +msgid ".Last.value in namespace is not a length 1 integer" +msgstr "" + +#: nafill.c:83 +msgid "" +"'x' argument is atomic vector, in-place update is supported only for list/" +"data.table" +msgstr "" + +#: nafill.c:85 nafill.c:95 +msgid "'x' argument must be numeric type, or list/data.table of numeric types" +msgstr "" + +#: nafill.c:133 nafill.c:161 +msgid "" +"Internal error: invalid type argument in nafillR function, should have been " +"caught before. Please report to data.table issue tracker." +msgstr "" + +#: nafill.c:177 +#, c-format +msgid "%s: parallel processing of %d column(s) took %.3fs\n" +msgstr "" + +#: openmp-utils.c:22 +#, c-format +msgid "" +"Ignoring invalid %s==\")%s\". Not an integer >= 1. Please remove any " +"characters that are not a digit [0-9]. See ?data.table::setDTthreads." +msgstr "" + +#: openmp-utils.c:40 +#, c-format +msgid "" +"Ignoring invalid R_DATATABLE_NUM_PROCS_PERCENT==%d. If used it must be an " +"integer between 2 and 100. Default is 50. See ?setDTtheads." +msgstr "" + +#: openmp-utils.c:67 +msgid "'verbose' must be TRUE or FALSE" +msgstr "" + +#: openmp-utils.c:70 +msgid "" +"This installation of data.table has not been compiled with OpenMP support.\n" +msgstr "" + +#: openmp-utils.c:75 +#, c-format +msgid " omp_get_num_procs() %d\n" +msgstr "" + +#: openmp-utils.c:76 +#, c-format +msgid " R_DATATABLE_NUM_PROCS_PERCENT %s\n" +msgstr "" + +#: openmp-utils.c:77 +#, c-format +msgid " R_DATATABLE_NUM_THREADS %s\n" +msgstr "" + +#: openmp-utils.c:78 +#, c-format +msgid " omp_get_thread_limit() %d\n" +msgstr "" + +#: openmp-utils.c:79 +#, c-format +msgid " omp_get_max_threads() %d\n" +msgstr "" + +#: openmp-utils.c:80 +#, c-format +msgid " OMP_THREAD_LIMIT %s\n" +msgstr "" + +#: openmp-utils.c:81 +#, c-format +msgid " OMP_NUM_THREADS %s\n" +msgstr "" + +#: openmp-utils.c:82 +#, c-format +msgid " RestoreAfterFork %s\n" +msgstr "" + +#: openmp-utils.c:83 +#, c-format +msgid " data.table is using %d threads. See ?setDTthreads.\n" +msgstr "" + +#: openmp-utils.c:91 +msgid "" +"restore_after_fork= must be TRUE, FALSE, or NULL (default). " +"getDTthreads(verbose=TRUE) reports the current setting.\n" +msgstr "" + +#: openmp-utils.c:105 +#, c-format +msgid "" +"threads= must be either NULL (default) or a single number. It has length %d" +msgstr "" + +#: openmp-utils.c:107 +msgid "threads= must be either NULL (default) or type integer/numeric" +msgstr "" + +#: openmp-utils.c:109 +msgid "" +"threads= must be either NULL or a single integer >= 0. See ?setDTthreads." +msgstr "" + +#: openmp-utils.c:114 +msgid "Internal error: percent= must be TRUE or FALSE at C level" +msgstr "" + +#: openmp-utils.c:117 +#, c-format +msgid "" +"Internal error: threads==%d should be between 2 and 100 (percent=TRUE at C " +"level)." +msgstr "" + +#: rbindlist.c:8 +msgid "fill= should be TRUE or FALSE" +msgstr "" + +#: rbindlist.c:10 +msgid "use.names= should be TRUE, FALSE, or not used (\")check\" by default)" +msgstr "" + +#: rbindlist.c:12 +msgid "" +"Input to rbindlist must be a list. This list can contain data.tables, data." +"frames or plain lists." +msgstr "" + +#: rbindlist.c:16 +msgid "use.names= cannot be FALSE when fill is TRUE. Setting use.names=TRUE." +msgstr "" + +#: rbindlist.c:20 +msgid "Internal error: rbindlist.c idcol is not a single string" +msgstr "" + +#: rbindlist.c:31 +#, c-format +msgid "Item %d of input is not a data.frame, data.table or list" +msgstr "" + +#: rbindlist.c:39 +#, c-format +msgid "" +"Item %d has %d columns, inconsistent with item %d which has %d columns. To " +"fill missing columns use fill=TRUE." +msgstr "" + +#: rbindlist.c:42 +#, c-format +msgid "Item %d has %d columns but %d column names. Invalid object." +msgstr "" + +#: rbindlist.c:49 +#, c-format +msgid "" +"Column %d of item %d is length %d inconsistent with column %d which is " +"length %d. Only length-1 columns are recycled." +msgstr "" + +#: rbindlist.c:58 +#, c-format +msgid "" +"Column %d ['%s'] of item %d is length 0. This (and %d other%s like it) has " +"been filled with NA (NULL for list columns) to make each item uniform." +msgstr "" + +#: rbindlist.c:62 +#, c-format +msgid "" +"Total rows in the list is %lld which is larger than the maximum number of " +"rows, currently %d" +msgstr "" + +#: rbindlist.c:63 +msgid "use.names=TRUE but no item of input list has any names" +msgstr "" + +#: rbindlist.c:71 +#, c-format +msgid "" +"Failed to allocate upper bound of %lld unique column names [sum(lapply(l," +"ncol))]" +msgstr "" + +#: rbindlist.c:102 +#, c-format +msgid "Failed to allocate nuniq=%d items working memory in rbindlist.c" +msgstr "" + +#: rbindlist.c:136 +#, c-format +msgid "Failed to allocate ncol=%d items working memory in rbindlist.c" +msgstr "" + +#: rbindlist.c:191 +msgid "" +"Internal error: usenames==NA but fill=TRUE. usenames should have been set to " +"TRUE earlier with warning." +msgstr "" + +#: rbindlist.c:196 +msgid "" +" use.names='check' (default from v1.12.2) emits this message and proceeds as " +"if use.names=FALSE for backwards compatibility. See news item 5 in v1.12.2 " +"for options to control this message." +msgstr "" + +#: rbindlist.c:206 +msgid "" +"Internal error: could not find the first column name not present in earlier " +"item" +msgstr "" + +#: rbindlist.c:210 +#, c-format +msgid "" +"Column %d ['%s'] of item %d is missing in item %d. Use fill=TRUE to fill " +"with NA (NULL for list columns), or use.names=FALSE to ignore column names.%s" +msgstr "" + +#: rbindlist.c:218 +#, c-format +msgid "" +"Internal error: usenames==NA but an out-of-order name has been found in an " +"item with no names or the first item. [%d]" +msgstr "" + +#: rbindlist.c:219 +#, c-format +msgid "" +"Column %d ['%s'] of item %d appears in position %d in item %d. Set use." +"names=TRUE to match by column name, or use.names=FALSE to ignore column " +"names.%s" +msgstr "" + +#: rbindlist.c:228 +msgid "" +"options()$datatable.rbindlist.check is set but is not a single string. See " +"news item 5 in v1.12.2." +msgstr "" + +#: rbindlist.c:235 +#, c-format +msgid "" +"options()$datatable.rbindlist.check=='%s' which is not " +"'message'|'warning'|'error'|'none'. See news item 5 in v1.12.2." +msgstr "" + +#: rbindlist.c:297 +#, c-format +msgid "" +"Column %d of item %d has type 'factor' but has no levels; i.e. malformed." +msgstr "" + +#: rbindlist.c:315 +#, c-format +msgid "" +"Class attribute on column %d of item %d does not match with column %d of " +"item %d." +msgstr "" + +#: rbindlist.c:325 +#, c-format +msgid "" +"Internal error: column %d of result is determined to be integer64 but " +"maxType=='%s' != REALSXP" +msgstr "" + +#: rbindlist.c:361 +#, c-format +msgid "" +"Failed to allocate working memory for %d ordered factor levels of result " +"column %d" +msgstr "" + +#: rbindlist.c:382 +#, c-format +msgid "" +"Column %d of item %d is an ordered factor but level %d ['%s'] is missing " +"from the ordered levels from column %d of item %d. Each set of ordered " +"factor levels should be an ordered subset of the first longest. A regular " +"factor will be created for this column." +msgstr "" + +#: rbindlist.c:387 +#, c-format +msgid "" +"Column %d of item %d is an ordered factor with '%s'<'%s' in its levels. But " +"'%s'<'%s' in the ordered levels from column %d of item %d. A regular factor " +"will be created for this column due to this ambiguity." +msgstr "" + +#: rbindlist.c:432 +#, c-format +msgid "" +"Failed to allocate working memory for %d factor levels of result column %d " +"when reading item %d of item %d" +msgstr "" + +#: rbindlist.c:522 +#, c-format +msgid "Column %d of item %d: %s" +msgstr "" + +#: reorder.c:17 +#, c-format +msgid "Item %d of list is type '%s' which isn't yet supported (SIZEOF=%d)" +msgstr "" + +#: reorder.c:19 +#, c-format +msgid "" +"Column %d is length %d which differs from length of column 1 (%d). Invalid " +"data.table." +msgstr "" + +#: reorder.c:27 +#, c-format +msgid "" +"reorder accepts vectors but this non-VECSXP is type '%s' which isn't yet " +"supported (SIZEOF=%d)" +msgstr "" + +#: reorder.c:28 +msgid "" +"Internal error in reorder.c: cannot reorder an ALTREP vector. Please see " +"NEWS item 2 in v1.11.4 and report this as a bug." +msgstr "" + +#: reorder.c:33 +msgid "order must be an integer vector" +msgstr "" + +#: reorder.c:34 +#, c-format +msgid "nrow(x)[%d]!=length(order)[%d]" +msgstr "" + +#: reorder.c:48 +#, c-format +msgid "order is not a permutation of 1:nrow[%d]" +msgstr "" + +#: reorder.c:57 +#, c-format +msgid "" +"Unable to allocate %d * %d bytes of working memory for reordering data.table" +msgstr "" + +#: shift.c:17 +#, c-format +msgid "" +"type '%s' passed to shift(). Must be a vector, list, data.frame or data.table" +msgstr "" + +#: shift.c:24 shift.c:28 +msgid "" +"Internal error: invalid type for shift(), should have been caught before. " +"please report to data.table issue tracker" +msgstr "" + +#: shift.c:31 +msgid "Internal error: k must be integer" +msgstr "" + +#: shift.c:33 +#, c-format +msgid "Item %d of n is NA" +msgstr "" + +#: shift.c:158 +#, c-format +msgid "Unsupported type '%s'" +msgstr "" + +#: subset.c:7 +#, c-format +msgid "Internal error: subsetVectorRaw length(ans)==%d n=%d" +msgstr "" + +#: subset.c:88 +#, c-format +msgid "" +"Internal error: column type '%s' not supported by data.table subset. All " +"known types are supported so please report as bug." +msgstr "" + +#: subset.c:97 subset.c:121 +#, c-format +msgid "Internal error. 'idx' is type '%s' not 'integer'" +msgstr "" + +#: subset.c:122 +#, c-format +msgid "" +"Internal error. 'maxArg' is type '%s' and length %d, should be an integer " +"singleton" +msgstr "" + +#: subset.c:123 +msgid "Internal error: allowOverMax must be TRUE/FALSE" +msgstr "" + +#: subset.c:125 +#, c-format +msgid "Internal error. max is %d, must be >= 0." +msgstr "" + +#: subset.c:149 +#, c-format +msgid "i[%d] is %d which is out of range [1,nrow=%d]" +msgstr "" + +#: subset.c:161 +#, c-format +msgid "" +"Item %d of i is %d and item %d is %d. Cannot mix positives and negatives." +msgstr "" + +#: subset.c:171 +#, c-format +msgid "Item %d of i is %d and item %d is NA. Cannot mix negatives and NA." +msgstr "" + +#: subset.c:207 +#, c-format +msgid "" +"Item %d of i is %d but there are only %d rows. Ignoring this and %d more " +"like it out of %d." +msgstr "" + +#: subset.c:209 +#, c-format +msgid "" +"Item %d of i is %d which removes that item but that has occurred before. " +"Ignoring this dup and %d other dups." +msgstr "" + +#: subset.c:223 +#, c-format +msgid "Column %d is NULL; malformed data.table." +msgstr "" + +#: subset.c:226 +#, c-format +msgid "Column %d ['%s'] is a data.frame or data.table; malformed data.table." +msgstr "" + +#: subset.c:231 +#, c-format +msgid "" +"Column %d ['%s'] is length %d but column 1 is length %d; malformed data." +"table." +msgstr "" + +#: subset.c:247 +#, c-format +msgid "Internal error. Argument 'x' to CsubsetDT is type '%s' not 'list'" +msgstr "" + +#: subset.c:260 +#, c-format +msgid "Internal error. Argument 'cols' to Csubset is type '%s' not 'integer'" +msgstr "" + +#: subset.c:337 +msgid "" +"Internal error: NULL can not be subset. It is invalid for a data.table to " +"contain a NULL column." +msgstr "" + +#: subset.c:339 +msgid "" +"Internal error: CsubsetVector is internal-use-only but has received " +"negatives, zeros or out-of-range" +msgstr "" + +#: transpose.c:9 +msgid "l must be a list." +msgstr "" + +#: transpose.c:13 +msgid "ignore.empty should be logical TRUE/FALSE." +msgstr "" + +#: transpose.c:16 +msgid "" +"keep.names should be either NULL, or the name of the first column of the " +"result in which to place the names of the input" +msgstr "" + +#: transpose.c:19 +msgid "fill must be a length 1 vector, such as the default NA" +msgstr "" + +#: transpose.c:28 +#, c-format +msgid "Item %d of list input is not an atomic vector" +msgstr "" + +#: types.c:17 types.c:21 +#, c-format +msgid "" +"%s: %d:\n" +"%s" +msgstr "" + +#: types.c:23 +#, c-format +msgid "" +"%s: %d:\n" +"%s:" +msgstr "" + +#: types.c:55 +msgid "internal error: status, nx, nk must be integer" +msgstr "" + +#: uniqlist.c:14 +msgid "Internal error: uniqlist has not been passed a list of columns" +msgstr "" + +#: uniqlist.c:17 +msgid "Internal error: uniqlist has been passed a non-integer order" +msgstr "" + +#: uniqlist.c:18 +msgid "Internal error: uniqlist has been passed a length-0 order" +msgstr "" + +#: uniqlist.c:19 +#, c-format +msgid "Internal error: uniqlist has been passed length(order)==%d but nrow==%d" +msgstr "" + +#: uniqlist.c:96 uniqlist.c:127 uniqlist.c:208 uniqlist.c:245 uniqlist.c:318 +#, c-format +msgid "Type '%s' not supported" +msgstr "" + +#: uniqlist.c:148 +msgid "Input argument 'x' to 'uniqlengths' must be an integer vector" +msgstr "" + +#: uniqlist.c:149 +msgid "" +"Input argument 'n' to 'uniqlengths' must be an integer vector of length 1" +msgstr "" + +#: uniqlist.c:167 +msgid "cols must be an integer vector with length >= 1" +msgstr "" + +#: uniqlist.c:171 +#, c-format +msgid "Item %d of cols is %d which is outside range of l [1,length(l)=%d]" +msgstr "" + +#: uniqlist.c:174 +#, c-format +msgid "" +"All elements to input list must be of same length. Element [%d] has length " +"%llu != length of first element = %llu." +msgstr "" + +#: uniqlist.c:255 +msgid "Internal error: nestedid was not passed a list length 1 or more" +msgstr "" + +#: uniqlist.c:262 +#, c-format +msgid "Internal error: nrows[%d]>0 but ngrps==0" +msgstr "" + +#: uniqlist.c:264 +msgid "cols must be an integer vector of positive length" +msgstr "" + +#: uniqlist.c:349 +msgid "x is not a logical vector" +msgstr "" + +#: utils.c:73 +#, c-format +msgid "Unsupported type '%s' passed to allNA()" +msgstr "" + +#: utils.c:92 +msgid "'x' argument must be data.table compatible" +msgstr "" + +#: utils.c:94 +msgid "'check_dups' argument must be TRUE or FALSE" +msgstr "" + +#: utils.c:110 +msgid "" +"argument specifying columns is type 'double' and one or more items in it are " +"not whole integers" +msgstr "" + +#: utils.c:116 +#, c-format +msgid "argument specifying columns specify non existing column(s): cols[%d]=%d" +msgstr "" + +#: utils.c:121 +msgid "'x' argument data.table has no names" +msgstr "" + +#: utils.c:126 +#, c-format +msgid "" +"argument specifying columns specify non existing column(s): cols[%d]='%s'" +msgstr "" + +#: utils.c:129 +msgid "argument specifying columns must be character or numeric" +msgstr "" + +#: utils.c:132 +msgid "argument specifying columns specify duplicated column(s)" +msgstr "" + +#: utils.c:138 +#, c-format +msgid "%s: fill argument must be length 1" +msgstr "" + +#: utils.c:171 +#, c-format +msgid "%s: fill argument must be numeric" +msgstr "" + +#: utils.c:274 +#, c-format +msgid "Internal error: unsupported type '%s' passed to copyAsPlain()" +msgstr "" + +#: utils.c:278 +#, c-format +msgid "" +"Internal error: type '%s' passed to copyAsPlain() but it seems " +"copyMostAttrib() retains ALTREP attributes" +msgstr "" + +#: utils.c:313 +#, c-format +msgid "Found and copied %d column%s with a shared memory address\n" +msgstr "" + +#: vecseq.c:13 +msgid "x must be an integer vector" +msgstr "" + +#: vecseq.c:14 +msgid "len must be an integer vector" +msgstr "" + +#: vecseq.c:15 +msgid "x and len must be the same length" +msgstr "" + +#: vecseq.c:21 +msgid "" +"Join results in more than 2^31 rows (internal vecseq reached physical " +"limit). Very likely misspecified join. Check for duplicate key values in i " +"each of which join to the same group in x over and over again. If that's ok, " +"try by=.EACHI to run j for each group to avoid the large allocation. " +"Otherwise, please search for this error message in the FAQ, Wiki, Stack " +"Overflow and data.table issue tracker for advice." +msgstr "" + +#: vecseq.c:25 +msgid "clamp must be a double vector length 1" +msgstr "" + +#: vecseq.c:27 +msgid "clamp must be positive" +msgstr "" + +#: vecseq.c:28 +#, c-format +msgid "" +"Join results in %d rows; more than %d = nrow(x)+nrow(i). Check for duplicate " +"key values in i each of which join to the same group in x over and over " +"again. If that's ok, try by=.EACHI to run j for each group to avoid the " +"large allocation. If you are sure you wish to proceed, rerun with allow." +"cartesian=TRUE. Otherwise, please search for this error message in the FAQ, " +"Wiki, Stack Overflow and data.table issue tracker for advice." +msgstr "" + +#: wrappers.c:11 +msgid "Attribute name must be a character vector of length 1" +msgstr "" + +#: wrappers.c:16 +msgid "" +"Internal structure doesn't seem to be a list. Can't set class to be 'data." +"table' or 'data.frame'. Use 'as.data.table()' or 'as.data.frame()' methods " +"instead." +msgstr "" + +#: wrappers.c:59 +msgid "First argument to setlistelt must be a list()" +msgstr "" + +#: wrappers.c:60 +msgid "Second argument to setlistelt must a length 1 integer vector" +msgstr "" + +#: wrappers.c:62 +#, c-format +msgid "i (%d) is outside the range of items [1,%d]" +msgstr "" + +#: wrappers.c:84 +msgid "x isn't a VECSXP" +msgstr "" + +#: wrappers.c:99 +#, c-format +msgid "" +"dim.data.table expects a data.table as input (which is a list), but seems to " +"be of type %s" +msgstr "" From 1c98859598c14ff869161228437d03c5e4a37863 Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Wed, 16 Oct 2019 01:57:42 +0800 Subject: [PATCH 13/78] update header metadata for src .pot --- po/data.table.pot | 16 +- src/data.table.pot | 2482 -------------------------------------------- 2 files changed, 8 insertions(+), 2490 deletions(-) delete mode 100644 src/data.table.pot diff --git a/po/data.table.pot b/po/data.table.pot index 1bb137587e..5b964b681e 100644 --- a/po/data.table.pot +++ b/po/data.table.pot @@ -1,20 +1,20 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. +# R::data.table src/ portability +# Copyright (C) 2019 +# This file is distributed under the same license as the data.table package. +# Michael Chirico , 2019. # #, fuzzy msgid "" msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" +"Project-Id-Version: data.table 1.12.5\n" "Report-Msgid-Bugs-To: \n" "POT-Creation-Date: 2019-10-16 01:42+0800\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" +"PO-Revision-Date: 2019-10-16 01:42+0800\n" +"Last-Translator: Michael Chirico \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" +"Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" #: assign.c:9 diff --git a/src/data.table.pot b/src/data.table.pot deleted file mode 100644 index eef36dc413..0000000000 --- a/src/data.table.pot +++ /dev/null @@ -1,2482 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) 2019 -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-10-13 16:58+0800\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=CHARSET\n" -"Content-Transfer-Encoding: 8bit\n" - -#: assign.c:9 -msgid "Internal error: finalizer hasn't received an ExternalPtr" -msgstr "" - -#: assign.c:11 -msgid "Internal error: finalizer's ExternalPtr doesn't see names in tag" -msgstr "" - -#: assign.c:14 -#, c-format -msgid "Internal error: finalizer sees l=%d, tl=%d" -msgstr "" - -#: assign.c:126 -msgid "Internal error: .internal.selfref ptr is not NULL or R_NilValue" -msgstr "" - -#: assign.c:128 -msgid "Internal error: .internal.selfref tag isn't NULL or a character vector" -msgstr "" - -#: assign.c:170 -msgid "Internal error: length(names)>0 but =0 and not NA." -msgstr "" - -#: assign.c:241 fsort.c:109 nafill.c:73 -msgid "verbose must be TRUE or FALSE" -msgstr "" - -#: assign.c:289 -msgid "assign has been passed a NULL dt" -msgstr "" - -#: assign.c:290 -msgid "dt passed to assign isn't type VECSXP" -msgstr "" - -#: assign.c:292 -msgid "" -".SD is locked. Updating .SD by reference using := or set are reserved for " -"future use. Use := in j directly. Or use copy(.SD) as a (slow) last resort, " -"until shallow() is exported." -msgstr "" - -#: assign.c:300 -msgid "Internal error: dt passed to Cassign is not a data.table or data.frame" -msgstr "" - -#: assign.c:304 -msgid "dt passed to assign has no names" -msgstr "" - -#: assign.c:306 -#, c-format -msgid "Internal error in assign: length of names (%d) is not length of dt (%d)" -msgstr "" - -#: assign.c:308 -msgid "" -"data.table is NULL; malformed. A null data.table should be an empty list. " -"typeof() should always return 'list' for data.table." -msgstr "" - -#: assign.c:325 -#, c-format -msgid "" -"i is type '%s'. Must be integer, or numeric is coerced with warning. If i is " -"a logical subset, simply wrap with which(), and take the which() outside the " -"loop if possible for efficiency." -msgstr "" - -#: assign.c:331 -#, c-format -msgid "i[%d] is %d which is out of range [1,nrow=%d]." -msgstr "" - -#: assign.c:361 -msgid "" -"set() on a data.frame is for changing existing columns, not adding new ones. " -"Please use a data.table for that. data.table's are over-allocated and don't " -"shallow copy." -msgstr "" - -#: assign.c:375 -#, c-format -msgid "" -"j is type '%s'. Must be integer, character, or numeric is coerced with " -"warning." -msgstr "" - -#: assign.c:377 -msgid "" -"Can't assign to the same column twice in the same query (duplicates " -"detected)." -msgstr "" - -#: assign.c:378 -msgid "newcolnames is supplied but isn't a character vector" -msgstr "" - -#: assign.c:390 -#, c-format -msgid "" -"Supplied %d columns to be assigned an empty list (which may be an empty data." -"table or data.frame since they are lists too). " -msgstr "" - -#: assign.c:398 -#, c-format -msgid "" -"Supplied %d columns to be assigned %d items. Please see NEWS for v1.12.2." -msgstr "" - -#: assign.c:406 -#, c-format -msgid "" -"Item %d of column numbers in j is %d which is outside range [1,ncol=%d]. " -"set() on a data.frame is for changing existing columns, not adding new ones. " -"Please use a data.table for that." -msgstr "" - -#: assign.c:407 -#, c-format -msgid "" -"Item %d of column numbers in j is %d which is outside range [1,ncol=%d]. Use " -"column names instead in j to add new columns." -msgstr "" - -#: assign.c:412 -msgid "When deleting columns, i should not be provided" -msgstr "" - -#: assign.c:418 -#, c-format -msgid "" -"RHS of assignment to existing column '%s' is zero length but not NULL. If " -"you intend to delete the column use NULL. Otherwise, the RHS must have " -"length > 0; e.g., NA_integer_. If you are trying to change the column type " -"to be an empty list column then, as with all column type changes, provide a " -"full length RHS vector such as vector('list',nrow(DT)); i.e., 'plonk' in the " -"new column." -msgstr "" - -#: assign.c:423 -#, c-format -msgid "" -"Internal error in assign.c: length(newcolnames)=%d, length(names)=%d, coln=%d" -msgstr "" - -#: assign.c:435 -#, c-format -msgid "" -"Can't assign to column '%s' (type 'factor') a value of type '%s' (not " -"character, factor, integer or numeric)" -msgstr "" - -#: assign.c:440 -#, c-format -msgid "" -"Supplied %d items to be assigned to %d items of column '%s'. If you wish to " -"'recycle' the RHS please " -msgstr "" - -#: assign.c:451 -msgid "" -"This data.table has either been loaded from disk (e.g. using readRDS()/" -"load()) or constructed manually (e.g. using structure()). Please run setDT() " -"or setalloccol() on it first (to pre-allocate space for new columns) before " -"assigning by reference to it." -msgstr "" - -#: assign.c:452 -#, c-format -msgid "" -"Internal error: oldtncol(%d) < oldncol(%d). Please report to data.table " -"issue tracker, including result of sessionInfo()." -msgstr "" - -#: assign.c:456 -#, c-format -msgid "" -"Internal error: DT passed to assign has not been allocated enough column " -"slots. l=%d, tl=%d, adding %d" -msgstr "" - -#: assign.c:458 -msgid "" -"It appears that at some earlier point, names of this data.table have been " -"reassigned. Please ensure to use setnames() rather than names<- or " -"colnames<-. Otherwise, please report to data.table issue tracker." -msgstr "" - -#: assign.c:462 -#, c-format -msgid "Internal error: selfrefnames is ok but tl names [%d] != tl [%d]" -msgstr "" - -#: assign.c:473 -msgid "" -"Internal error: earlier error 'When deleting columns, i should not be " -"provided' did not happen." -msgstr "" - -#: assign.c:566 -msgid "Internal error: index name ends with trailing __" -msgstr "" - -#: assign.c:571 -msgid "Internal error: Couldn't allocate memory for s4." -msgstr "" - -#: assign.c:582 -msgid "Internal error: Couldn't allocate memory for s5." -msgstr "" - -#: assign.c:689 -#, c-format -msgid "Internal error: recycle length error not caught earlier. slen=%d len=%d" -msgstr "" - -#: assign.c:693 -msgid "Internal error: memrecycle has received NULL colname" -msgstr "" - -#: assign.c:719 -#, c-format -msgid "" -"Cannot assign 'factor' to '%s'. Factors can only be assigned to factor, " -"character or list columns." -msgstr "" - -#: assign.c:733 -#, c-format -msgid "" -"Assigning factor numbers to column %d named '%s'. But %d is outside the " -"level range [1,%d]" -msgstr "" - -#: assign.c:741 -#, c-format -msgid "" -"Assigning factor numbers to column %d named '%s'. But %f is outside the " -"level range [1,%d], or is not a whole number." -msgstr "" - -#: assign.c:747 -#, c-format -msgid "" -"Cannot assign '%s' to 'factor'. Factor columns can be assigned factor, " -"character, NA in any type, or level numbers." -msgstr "" - -#: assign.c:768 -msgid "" -"Internal error: levels of target are either not unique or have truelength<0" -msgstr "" - -#: assign.c:807 -#, c-format -msgid "Unable to allocate working memory of %d bytes to combine factor levels" -msgstr "" - -#: assign.c:814 -msgid "Internal error: extra level check sum failed" -msgstr "" - -#: assign.c:839 -#, c-format -msgid "" -"Cannot coerce 'list' RHS to 'integer64' to match the type of the target " -"column (column %d named '%s')." -msgstr "" - -#: assign.c:945 -#, c-format -msgid "type '%s' cannot be coerced to '%s'" -msgstr "" - -#: assign.c:1065 -msgid "" -"To assign integer64 to a character column, please use as.character() for " -"clarity." -msgstr "" - -#: assign.c:1076 -#, c-format -msgid "Unsupported column type in assign.c:memrecycle '%s'" -msgstr "" - -#: assign.c:1123 -#, c-format -msgid "Internal error: writeNA passed a vector of type '%s'" -msgstr "" - -#: assign.c:1154 -#, c-format -msgid "" -"Internal error: savetl_init checks failed (%d %d %p %p). please report to " -"data.table issue tracker." -msgstr "" - -#: assign.c:1162 -#, c-format -msgid "Failed to allocate initial %d items in savetl_init" -msgstr "" - -#: assign.c:1171 -#, c-format -msgid "" -"Internal error: reached maximum %d items for savetl. Please report to data." -"table issue tracker." -msgstr "" - -#: assign.c:1178 -#, c-format -msgid "Failed to realloc saveds to %d items in savetl" -msgstr "" - -#: assign.c:1184 -#, c-format -msgid "Failed to realloc savedtl to %d items in savetl" -msgstr "" - -#: assign.c:1207 -msgid "x must be a character vector" -msgstr "" - -#: assign.c:1208 -msgid "'which' must be an integer vector" -msgstr "" - -#: assign.c:1209 -msgid "'new' must be a character vector" -msgstr "" - -#: assign.c:1210 -#, c-format -msgid "'new' is length %d. Should be the same as length of 'which' (%d)" -msgstr "" - -#: assign.c:1213 -#, c-format -msgid "" -"Item %d of 'which' is %d which is outside range of the length %d character " -"vector" -msgstr "" - -#: assign.c:1223 -msgid "dt passed to setcolorder has no names" -msgstr "" - -#: assign.c:1225 -#, c-format -msgid "Internal error: dt passed to setcolorder has %d columns but %d names" -msgstr "" - -#: assign.c:1232 -msgid "" -"Internal error: o passed to Csetcolorder contains an NA or out-of-bounds" -msgstr "" - -#: assign.c:1234 -msgid "Internal error: o passed to Csetcolorder contains a duplicate" -msgstr "" - -#: between.c:12 -#, c-format -msgid "" -"Incompatible vector lengths: length(x)==%d length(lower)==%d length(upper)==" -"%d. Each should be either length 1 or the length of the longest." -msgstr "" - -#: between.c:16 -msgid "incbounds must be TRUE or FALSE" -msgstr "" - -#: between.c:19 -msgid "NAbounds must be TRUE or NA" -msgstr "" - -#: between.c:22 -msgid "check must be TRUE or FALSE" -msgstr "" - -#: between.c:64 -#, c-format -msgid "Item %d of lower (%d) is greater than item %d of upper (%d)" -msgstr "" - -#: between.c:88 -msgid "x is integer64 but lower and/or upper are not." -msgstr "" - -#: between.c:95 -#, c-format -msgid "Item %d of lower (%lld) is greater than item %d of upper (%lld)" -msgstr "" - -#: between.c:115 -msgid "" -"x is not integer64 but lower and/or upper is integer64. Please align classes." -msgstr "" - -#: between.c:122 -#, c-format -msgid "Item %d of lower (%f) is greater than item %d of upper (%f)" -msgstr "" - -#: between.c:172 -#, c-format -msgid "Item %d of lower ('%s') is greater than item %d of upper ('%s')" -msgstr "" - -#: between.c:190 -#, c-format -msgid "" -"Internal error: between.c unsupported type '%s' should have been caught at R " -"level" -msgstr "" - -#: bmerge.c:48 -msgid "Internal error: icols is not integer vector" -msgstr "" - -#: bmerge.c:49 -msgid "Internal error: xcols is not integer vector" -msgstr "" - -#: bmerge.c:50 -#, c-format -msgid "Internal error: length(icols) [%d] > length(xcols) [%d]" -msgstr "" - -#: bmerge.c:57 -#, c-format -msgid "Internal error. icols[%d] is NA" -msgstr "" - -#: bmerge.c:58 -#, c-format -msgid "Internal error. xcols[%d] is NA" -msgstr "" - -#: bmerge.c:59 -#, c-format -msgid "icols[%d]=%d outside range [1,length(i)=%d]" -msgstr "" - -#: bmerge.c:60 -#, c-format -msgid "xcols[%d]=%d outside range [1,length(x)=%d]" -msgstr "" - -#: bmerge.c:63 -#, c-format -msgid "typeof x.%s (%s) != typeof i.%s (%s)" -msgstr "" - -#: bmerge.c:70 -msgid "roll is character but not 'nearest'" -msgstr "" - -#: bmerge.c:71 -msgid "roll='nearest' can't be applied to a character column, yet." -msgstr "" - -#: bmerge.c:74 -msgid "Internal error: roll is not character or double" -msgstr "" - -#: bmerge.c:79 -msgid "rollends must be a length 2 logical vector" -msgstr "" - -#: bmerge.c:89 uniqlist.c:270 -msgid "" -"Internal error: invalid value for 'mult'. please report to data.table issue " -"tracker" -msgstr "" - -#: bmerge.c:93 -msgid "" -"Internal error: opArg is not an integer vector of length equal to length(on)" -msgstr "" - -#: bmerge.c:96 -msgid "Internal error: nqgrpArg must be an integer vector" -msgstr "" - -#: bmerge.c:102 -msgid "Intrnal error: nqmaxgrpArg is not a positive length-1 integer vector" -msgstr "" - -#: bmerge.c:111 -msgid "Internal error in allocating memory for non-equi join" -msgstr "" - -#: bmerge.c:156 -msgid "Internal error: xoArg is not an integer vector" -msgstr "" - -#: bmerge.c:271 bmerge.c:379 -#, c-format -msgid "" -"Internal error in bmerge_r for '%s' column. Unrecognized value op[col]=%d" -msgstr "" - -#: bmerge.c:303 -#, c-format -msgid "Only '==' operator is supported for columns of type %s." -msgstr "" - -#: bmerge.c:410 -#, c-format -msgid "Type '%s' not supported for joining/merging" -msgstr "" - -#: bmerge.c:468 -msgid "Internal error: xlow!=xupp-1 || xlowxuppIn" -msgstr "" - -#: chmatch.c:4 -#, c-format -msgid "x is type '%s' (must be 'character' or NULL)" -msgstr "" - -#: chmatch.c:5 -#, c-format -msgid "table is type '%s' (must be 'character' or NULL)" -msgstr "" - -#: chmatch.c:6 -msgid "Internal error: either chin or chmatchdup should be true not both" -msgstr "" - -#: chmatch.c:30 -#, c-format -msgid "" -"Internal error: CHARSXP '%s' has a negative truelength (%d). Please file an " -"issue on the data.table tracker." -msgstr "" - -#: chmatch.c:60 -#, c-format -msgid "" -"Failed to allocate %lld bytes working memory in chmatchdup: length(table)=%d " -"length(unique(table))=%d" -msgstr "" - -#: cj.c:89 -#, c-format -msgid "Type '%s' not supported by CJ." -msgstr "" - -#: coalesce.c:5 -msgid "Internal error in coalesce.c: input is list(...) at R level" -msgstr "" - -#: coalesce.c:7 -msgid "" -"Internal error in coalesce.c: argument 'inplaceArg' must be TRUE or FALSE" -msgstr "" - -#: coalesce.c:16 -msgid "" -"The first argument is a list, data.table or data.frame. In this case there " -"should be no other arguments provided." -msgstr "" - -#: coalesce.c:32 -#, c-format -msgid "" -"Item 1 is a factor but item %d is not a factor. When factors are involved, " -"all items must be factor." -msgstr "" - -#: coalesce.c:34 -#, c-format -msgid "" -"Item %d is a factor but its levels are not identical to the first item's " -"levels." -msgstr "" - -#: coalesce.c:38 -#, c-format -msgid "" -"Item %d is a factor but item 1 is not a factor. When factors are involved, " -"all items must be factor." -msgstr "" - -#: coalesce.c:41 -#, c-format -msgid "" -"Item %d is type %s but the first item is type %s. Please coerce before " -"coalescing." -msgstr "" - -#: coalesce.c:43 -#, c-format -msgid "Item %d has a different class than item 1." -msgstr "" - -#: coalesce.c:46 -#, c-format -msgid "" -"Item %d is length %d but the first item is length %d. Only singletons are " -"recycled." -msgstr "" - -#: coalesce.c:166 -#, c-format -msgid "Unsupported type: %s" -msgstr "" - -#: dogroups.c:14 -msgid "Internal error: order not integer vector" -msgstr "" - -#: dogroups.c:15 -msgid "Internal error: starts not integer" -msgstr "" - -#: dogroups.c:16 -msgid "Internal error: lens not integer" -msgstr "" - -#: dogroups.c:18 -msgid "Internal error: jiscols not NULL but o__ has length" -msgstr "" - -#: dogroups.c:19 -msgid "Internal error: xjiscols not NULL but o__ has length" -msgstr "" - -#: dogroups.c:20 -msgid "'env' should be an environment" -msgstr "" - -#: dogroups.c:39 -#, c-format -msgid "" -"Internal error: unsupported size-0 type '%s' in column %d of 'by' should " -"have been caught earlier" -msgstr "" - -#: dogroups.c:43 -#, c-format -msgid "!length(bynames)[%d]==length(groups)[%d]==length(grpcols)[%d]" -msgstr "" - -#: dogroups.c:62 -msgid "row.names attribute of .SD not found" -msgstr "" - -#: dogroups.c:64 -#, c-format -msgid "" -"row.names of .SD isn't integer length 2 with NA as first item; i.e., ." -"set_row_names(). [%s %d %d]" -msgstr "" - -#: dogroups.c:69 -msgid "length(names)!=length(SD)" -msgstr "" - -#: dogroups.c:73 -#, c-format -msgid "" -"Internal error: size-0 type %d in .SD column %d should have been caught " -"earlier" -msgstr "" - -#: dogroups.c:83 -msgid "length(xknames)!=length(xSD)" -msgstr "" - -#: dogroups.c:87 -#, c-format -msgid "" -"Internal error: type %d in .xSD column %d should have been caught by now" -msgstr "" - -#: dogroups.c:91 -#, c-format -msgid "length(iSD)[%d] != length(jiscols)[%d]" -msgstr "" - -#: dogroups.c:92 -#, c-format -msgid "length(xSD)[%d] != length(xjiscols)[%d]" -msgstr "" - -#: dogroups.c:155 dogroups.c:184 -msgid "Internal error. Type of column should have been checked by now" -msgstr "" - -#: dogroups.c:273 -#, c-format -msgid "j evaluates to type '%s'. Must evaluate to atomic vector or list." -msgstr "" - -#: dogroups.c:281 -msgid "" -"All items in j=list(...) should be atomic vectors or lists. If you are " -"trying something like j=list(.SD,newcol=mean(colA)) then use := by group " -"instead (much quicker), or cbind or merge afterwards." -msgstr "" - -#: dogroups.c:291 -msgid "" -"RHS is NULL when grouping :=. Makes no sense to delete a column by group. " -"Perhaps use an empty vector instead." -msgstr "" - -#: dogroups.c:295 -#, c-format -msgid "" -"Supplied %d items to be assigned to group %d of size %d in column '%s'. The " -"RHS length must either be 1 (single values are ok) or match the LHS length " -"exactly. If you wish to 'recycle' the RHS please use rep() explicitly to " -"make this intent clear to readers of your code." -msgstr "" - -#: dogroups.c:304 -msgid "" -"Internal error: Trying to add new column by reference but tl is full; " -"setalloccol should have run first at R level before getting to this point in " -"dogroups" -msgstr "" - -#: dogroups.c:326 -msgid "j doesn't evaluate to the same number of columns for each group" -msgstr "" - -#: dogroups.c:360 -#, c-format -msgid "" -"Column %d of j's result for the first group is NULL. We rely on the column " -"types of the first result to decide the type expected for the remaining " -"groups (and require consistency). NULL columns are acceptable for later " -"groups (and those are replaced with NA of appropriate type and recycled) but " -"not for the first. Please use a typed empty vector instead, such as " -"integer() or numeric()." -msgstr "" - -#: dogroups.c:386 -#, c-format -msgid "dogroups: length(ans)[%d]!=ngrpcols[%d]+njval[%d]" -msgstr "" - -#: dogroups.c:426 -#, c-format -msgid "" -"Column %d of result for group %d is type '%s' but expecting type '%s'. " -"Column types must be consistent for each group." -msgstr "" - -#: dogroups.c:428 -#, c-format -msgid "" -"Supplied %d items for column %d of group %d which has %d rows. The RHS " -"length must either be 1 (single values are ok) or match the LHS length " -"exactly. If you wish to 'recycle' the RHS please use rep() explicitly to " -"make this intent clear to readers of your code." -msgstr "" - -#: dogroups.c:453 -#, c-format -msgid "Internal error: block 0 [%d] and block 1 [%d] have both run" -msgstr "" - -#: dogroups.c:481 -msgid "growVector passed NULL" -msgstr "" - -#: fastmean.c:39 -msgid "narm should be TRUE or FALSE" -msgstr "" - -#: fastmean.c:45 -#, c-format -msgid "fastmean was passed type %s, not numeric or logical" -msgstr "" - -#: fastmean.c:83 fastmean.c:111 -#, c-format -msgid "Internal error: type '%s' not caught earlier in fastmean" -msgstr "" - -#: fcast.c:80 -#, c-format -msgid "Unsupported column type in fcast val: '%s'" -msgstr "" - -#: fifelse.c:5 -msgid "Argument 'test' must be logical." -msgstr "" - -#: fifelse.c:23 -#, c-format -msgid "" -"'yes' is of type %s but 'no' is of type %s. Please make sure that both " -"arguments have the same type." -msgstr "" - -#: fifelse.c:28 -msgid "" -"'yes' has different class than 'no'. Please make sure that both arguments " -"have the same class." -msgstr "" - -#: fifelse.c:33 -msgid "'yes' and 'no' are both type factor but their levels are different." -msgstr "" - -#: fifelse.c:38 -#, c-format -msgid "Length of 'yes' is %lld but must be 1 or length of 'test' (%lld)." -msgstr "" - -#: fifelse.c:40 -#, c-format -msgid "Length of 'no' is %lld but must be 1 or length of 'test' (%lld)." -msgstr "" - -#: fifelse.c:51 -#, c-format -msgid "Length of 'na' is %lld but must be 1" -msgstr "" - -#: fifelse.c:57 -#, c-format -msgid "" -"'yes' is of type %s but 'na' is of type %s. Please make sure that both " -"arguments have the same type." -msgstr "" - -#: fifelse.c:59 -msgid "" -"'yes' has different class than 'na'. Please make sure that both arguments " -"have the same class." -msgstr "" - -#: fifelse.c:63 -msgid "'yes' and 'na' are both type factor but their levels are different." -msgstr "" - -#: fifelse.c:133 -#, c-format -msgid "Type %s is not supported." -msgstr "" - -#: fmelt.c:18 -msgid "'x' must be an integer" -msgstr "" - -#: fmelt.c:19 -msgid "'n' must be a positive integer" -msgstr "" - -#: fmelt.c:41 -msgid "Argument to 'which' must be logical" -msgstr "" - -#: fmelt.c:70 -msgid "concat: 'vec must be a character vector" -msgstr "" - -#: fmelt.c:71 -msgid "concat: 'idx' must be an integer vector of length >= 0" -msgstr "" - -#: fmelt.c:75 -msgid "" -"concat: 'idx' must take values between 0 and length(vec); 0 <= idx <= " -"length(vec)" -msgstr "" - -#: fmelt.c:102 -#, c-format -msgid "Unknown 'measure.vars' type %s at index %d of list" -msgstr "" - -#: fmelt.c:154 fmelt.c:219 -#, c-format -msgid "Unknown 'id.vars' type %s, must be character or integer vector" -msgstr "" - -#: fmelt.c:159 fmelt.c:223 -msgid "One or more values in 'id.vars' is invalid." -msgstr "" - -#: fmelt.c:184 -#, c-format -msgid "" -"Unknown 'measure.vars' type %s, must be character or integer vector/list" -msgstr "" - -#: fmelt.c:193 fmelt.c:239 -msgid "One or more values in 'measure.vars' is invalid." -msgstr "" - -#: fmelt.c:231 -#, c-format -msgid "Unknown 'measure.vars' type %s, must be character or integer vector" -msgstr "" - -#: fmelt.c:276 -msgid "" -"When 'measure.vars' is a list, 'value.name' must be a character vector of " -"length =1 or =length(measure.vars)." -msgstr "" - -#: fmelt.c:277 -msgid "" -"When 'measure.vars' is either not specified or a character/integer vector, " -"'value.name' must be a character vector of length =1." -msgstr "" - -#: fmelt.c:280 -msgid "'variable.name' must be a character/integer vector of length=1." -msgstr "" - -#: fmelt.c:329 -msgid "" -"Internal error: combineFactorLevels in fmelt.c expects all-character input" -msgstr "" - -#: fmelt.c:332 -msgid "" -"Internal error: combineFactorLevels in fmelt.c expects a character target to " -"factorize" -msgstr "" - -#: fmelt.c:490 -#, c-format -msgid "Unknown column type '%s' for column '%s'." -msgstr "" - -#: fmelt.c:514 -#, c-format -msgid "Internal error: fmelt.c:getvarcols %d %d" -msgstr "" - -#: fmelt.c:662 -#, c-format -msgid "Unknown column type '%s' for column '%s' in 'data'" -msgstr "" - -#: fmelt.c:673 -msgid "Input is not of type VECSXP, expected a data.table, data.frame or list" -msgstr "" - -#: fmelt.c:674 -msgid "Argument 'value.factor' should be logical TRUE/FALSE" -msgstr "" - -#: fmelt.c:675 -msgid "Argument 'variable.factor' should be logical TRUE/FALSE" -msgstr "" - -#: fmelt.c:676 -msgid "Argument 'na.rm' should be logical TRUE/FALSE." -msgstr "" - -#: fmelt.c:677 -msgid "Argument 'variable.name' must be a character vector" -msgstr "" - -#: fmelt.c:678 -msgid "Argument 'value.name' must be a character vector" -msgstr "" - -#: fmelt.c:679 -msgid "Argument 'verbose' should be logical TRUE/FALSE" -msgstr "" - -#: fmelt.c:687 -msgid "names(data) is NULL. Please report to data.table-help" -msgstr "" - -#: forder.c:374 -msgid "Must an integer or numeric vector length 1" -msgstr "" - -#: forder.c:375 -msgid "Must be 2, 1 or 0" -msgstr "" - -#: forder.c:431 -msgid "" -"Internal error: input is not either a list of columns, or an atomic vector." -msgstr "" - -#: forder.c:433 -msgid "" -"Internal error: input is an atomic vector (not a list of columns) but by= is " -"not NULL" -msgstr "" - -#: forder.c:435 -msgid "" -"Input is an atomic vector (not a list of columns) but order= is not a length " -"1 integer" -msgstr "" - -#: forder.c:448 -msgid "Internal error: DT is an empty list() of 0 columns" -msgstr "" - -#: forder.c:450 -#, c-format -msgid "" -"Internal error: DT has %d columns but 'by' is either not integer or is " -"length 0" -msgstr "" - -#: forder.c:452 -#, c-format -msgid "" -"Either order= is not integer or its length (%d) is different to by='s length " -"(%d)" -msgstr "" - -#: forder.c:458 -#, c-format -msgid "internal error: 'by' value %d out of range [1,%d]" -msgstr "" - -#: forder.c:460 -#, c-format -msgid "Column %d is length %d which differs from length of column 1 (%d)\n" -msgstr "" - -#: forder.c:464 -msgid "retGrp= must be TRUE or FALSE" -msgstr "" - -#: forder.c:467 -msgid "sort= must be TRUE or FALSE" -msgstr "" - -#: forder.c:470 -msgid "At least one of retGrp= or sort= must be TRUE" -msgstr "" - -#: forder.c:472 -msgid "na.last must be logical TRUE, FALSE or NA of length 1" -msgstr "" - -#: forder.c:1301 -msgid "x must be either NULL or an integer vector" -msgstr "" - -#: forder.c:1303 -msgid "nrow must be integer vector length 1" -msgstr "" - -#: forder.c:1305 -#, c-format -msgid "nrow==%d but must be >=0" -msgstr "" - -#: forder.c:1322 -msgid "x must be type 'double'" -msgstr "" - -#: frank.c:11 -#, c-format -msgid "Internal error. Argument 'x' to Cdt_na is type '%s' not 'list'" -msgstr "" - -#: frank.c:12 -#, c-format -msgid "Internal error. Argument 'cols' to Cdt_na is type '%s' not 'integer'" -msgstr "" - -#: frank.c:16 frank.c:146 subset.c:263 -#, c-format -msgid "Item %d of 'cols' is %d which is outside 1-based range [1,ncol(x)=%d]" -msgstr "" - -#: frank.c:26 frank.c:155 -#, c-format -msgid "" -"Column %d of input list x is length %d, inconsistent with first column of " -"that item which is length %d." -msgstr "" - -#: frank.c:65 frank.c:202 transpose.c:88 -#, c-format -msgid "Unsupported column type '%s'" -msgstr "" - -#: frank.c:83 -msgid "" -"Internal error: invalid ties.method for frankv(), should have been caught " -"before. please report to data.table issue tracker" -msgstr "" - -#: frank.c:130 -#, c-format -msgid "Internal error: unknown ties value in frank: %d" -msgstr "" - -#: frank.c:141 -#, c-format -msgid "Internal error. Argument 'x' to CanyNA is type '%s' not 'list'" -msgstr "" - -#: frank.c:142 -#, c-format -msgid "Internal error. Argument 'cols' to CanyNA is type '%s' not 'integer'" -msgstr "" - -#: freadR.c:84 -msgid "" -"Internal error: freadR input not a single character string: a filename or " -"the data itself. Should have been caught at R level." -msgstr "" - -#: freadR.c:101 -msgid "" -"Internal error: freadR sep not a single character. R level catches this." -msgstr "" - -#: freadR.c:105 -msgid "" -"Internal error: freadR dec not a single character. R level catches this." -msgstr "" - -#: freadR.c:112 -msgid "quote= must be a single character, blank \")\", or FALSE" -msgstr "" - -#: freadR.c:137 -msgid "Internal error: skip not integer or string in freadR.c" -msgstr "" - -#: freadR.c:140 -#, c-format -msgid "Internal error: NAstringsArg is type '%s'. R level catches this" -msgstr "" - -#: freadR.c:153 -#, c-format -msgid "nThread(%d)<1" -msgstr "" - -#: freadR.c:160 -msgid "'integer64' must be a single character string" -msgstr "" - -#: freadR.c:660 -#, c-format -msgid "%s" -msgstr "" - -#: froll.c:428 -#, c-format -msgid "%s: results from provided FUN are not length 1" -msgstr "" - -#: froll.c:438 -#, c-format -msgid "%s: results from provided FUN are not of type double" -msgstr "" - -#: frollR.c:15 -msgid "x must be of type numeric or logical" -msgstr "" - -#: frollR.c:26 -msgid "x must be list, data.frame or data.table of numeric or logical types" -msgstr "" - -#: frollR.c:47 frollR.c:264 -msgid "n must be non 0 length" -msgstr "" - -#: frollR.c:50 -msgid "adaptive must be TRUE or FALSE" -msgstr "" - -#: frollR.c:58 -msgid "n must be integer, list is accepted for adaptive TRUE" -msgstr "" - -#: frollR.c:65 frollR.c:256 frollR.c:259 -msgid "n must be integer" -msgstr "" - -#: frollR.c:72 -msgid "n must be positive integer values (> 0)" -msgstr "" - -#: frollR.c:81 frollR.c:93 -msgid "n must be integer vector or list of integer vectors" -msgstr "" - -#: frollR.c:104 gsumm.c:342 gsumm.c:577 gsumm.c:686 gsumm.c:805 gsumm.c:950 -#: gsumm.c:1262 gsumm.c:1403 uniqlist.c:350 -msgid "na.rm must be TRUE or FALSE" -msgstr "" - -#: frollR.c:107 -msgid "hasNA must be TRUE, FALSE or NA" -msgstr "" - -#: frollR.c:109 -msgid "" -"using hasNA FALSE and na.rm TRUE does not make sense, if you know there are " -"NA values use hasNA TRUE, otherwise leave it as default NA" -msgstr "" - -#: frollR.c:119 frollR.c:275 -msgid "" -"Internal error: invalid align argument in rolling function, should have been " -"caught before. please report to data.table issue tracker." -msgstr "" - -#: frollR.c:122 -msgid "" -"using adaptive TRUE and align argument different than 'right' is not " -"implemented" -msgstr "" - -#: frollR.c:135 -msgid "" -"adaptive rolling function can only process 'x' having equal length of " -"elements, like data.table or data.frame; If you want to call rolling " -"function on list having variable length of elements call it for each field " -"separately" -msgstr "" - -#: frollR.c:137 -msgid "" -"length of integer vector(s) provided as list to 'n' argument must be equal " -"to number of observations provided in 'x'" -msgstr "" - -#: frollR.c:151 -msgid "" -"Internal error: invalid fun argument in rolling function, should have been " -"caught before. please report to data.table issue tracker." -msgstr "" - -#: frollR.c:155 frollR.c:279 nafill.c:136 shift.c:21 -msgid "fill must be a vector of length 1" -msgstr "" - -#: frollR.c:169 frollR.c:292 -msgid "fill must be numeric" -msgstr "" - -#: frollR.c:185 -msgid "" -"Internal error: invalid algo argument in rolling function, should have been " -"caught before. please report to data.table issue tracker." -msgstr "" - -#: frollR.c:190 -#, c-format -msgid "Internal error: badaptive=%d but ik is not integer" -msgstr "" - -#: frollR.c:219 -#, c-format -msgid "Internal error: Unknown sfun value in froll: %d" -msgstr "" - -#: frollR.c:238 -msgid "internal error: 'fun' must be a function" -msgstr "" - -#: frollR.c:240 -msgid "internal error: 'rho' should be an environment" -msgstr "" - -#: fsort.c:111 -msgid "x must be a vector of type 'double' currently" -msgstr "" - -#: fsort.c:157 -msgid "Cannot yet handle negatives." -msgstr "" - -#: fsort.c:173 -msgid "Unable to allocate working memory" -msgstr "" - -#: fsort.c:230 -msgid "Internal error: counts[nBatch-1][MSBsize-1] != length(x)" -msgstr "" - -#: fwriteR.c:41 -msgid "Internal error: col passed to getMaxCategLen is missing levels" -msgstr "" - -#: fwriteR.c:75 -msgid "Internal error: getMaxListItemLen should have caught this up front." -msgstr "" - -#: fwriteR.c:98 -#, c-format -msgid "" -"Row %d of list column is type '%s' - not yet implemented. fwrite() can write " -"list columns containing items which are atomic vectors of" -msgstr "" - -#: fwriteR.c:170 -msgid "" -"fwrite must be passed an object of type list; e.g. data.frame, data.table" -msgstr "" - -#: fwriteR.c:234 -#, c-format -msgid "Column %d's length (%d) is not the same as column 1's length (%d)" -msgstr "" - -#: fwriteR.c:237 -#, c-format -msgid "Column %d's type is '%s' - not yet implemented in fwrite." -msgstr "" - -#: fwriteR.c:270 -#, c-format -msgid "" -"sep ('%c'), sep2 ('%c') and dec ('%c') must all be different. Column %d is a " -"list column." -msgstr "" - -#: gsumm.c:43 -msgid "env is not an environment" -msgstr "" - -#: gsumm.c:45 -msgid "o is not an integer vector" -msgstr "" - -#: gsumm.c:46 -msgid "f is not an integer vector" -msgstr "" - -#: gsumm.c:47 -msgid "l is not an integer vector" -msgstr "" - -#: gsumm.c:56 -msgid "irowsArg is neither an integer vector nor NULL" -msgstr "" - -#: gsumm.c:58 -#, c-format -msgid "length(f)=%d != length(l)=%d" -msgstr "" - -#: gsumm.c:66 -#, c-format -msgid "o has length %d but sum(l)=%d" -msgstr "" - -#: gsumm.c:69 -msgid "Internal error: o's maxgrpn attribute mismatches recalculated maxgrpn" -msgstr "" - -#: gsumm.c:89 -#, c-format -msgid "" -"Internal error: nrow=%d ngrp=%d nbit=%d shift=%d highSize=%d nBatch=%d " -"batchSize=%d lastBatchSize=%d\n" -msgstr "" - -#: gsumm.c:116 -msgid "" -"Internal error: Failed to allocate counts or TMP when assigning g in gforce" -msgstr "" - -#: gsumm.c:334 -#, c-format -msgid "gather implemented for INTSXP, REALSXP, and CPLXSXP but not '%s'" -msgstr "" - -#: gsumm.c:345 -msgid "sum is not meaningful for factors." -msgstr "" - -#: gsumm.c:350 gsumm.c:606 -#, c-format -msgid "nrow [%d] != length(x) [%d] in gsum" -msgstr "" - -#: gsumm.c:565 -#, c-format -msgid "" -"Type '%s' not supported by GForce sum (gsum). Either add the prefix base::" -"sum(.) or turn off GForce optimization using options(datatable.optimize=1)" -msgstr "" - -#: gsumm.c:578 -msgid "" -"GForce mean can only be applied to columns, not .SD or similar. Likely " -"you're looking for 'DT[,lapply(.SD,mean),by=,.SDcols=]'. See ?data.table." -msgstr "" - -#: gsumm.c:579 -msgid "mean is not meaningful for factors." -msgstr "" - -#: gsumm.c:599 -#, c-format -msgid "Internal error: gsum returned type '%s'. typeof(x) is '%s'" -msgstr "" - -#: gsumm.c:609 -#, c-format -msgid "Unable to allocate %d * %d bytes for sum in gmean na.rm=TRUE" -msgstr "" - -#: gsumm.c:612 -#, c-format -msgid "Unable to allocate %d * %d bytes for counts in gmean na.rm=TRUE" -msgstr "" - -#: gsumm.c:638 -#, c-format -msgid "Unable to allocate %d * %d bytes for si in gmean na.rm=TRUE" -msgstr "" - -#: gsumm.c:650 -#, c-format -msgid "" -"Type '%s' not supported by GForce mean (gmean) na.rm=TRUE. Either add the " -"prefix base::mean(.) or turn off GForce optimization using options(datatable." -"optimize=1)" -msgstr "" - -#: gsumm.c:674 -msgid "Internal error: unsupported type at the end of gmean" -msgstr "" - -#: gsumm.c:687 -msgid "" -"GForce min can only be applied to columns, not .SD or similar. To find min " -"of all items in a list such as .SD, either add the prefix base::min(.SD) or " -"turn off GForce optimization using options(datatable.optimize=1). More " -"likely, you may be looking for 'DT[,lapply(.SD,min),by=,.SDcols=]'" -msgstr "" - -#: gsumm.c:688 -msgid "min is not meaningful for factors." -msgstr "" - -#: gsumm.c:693 -#, c-format -msgid "nrow [%d] != length(x) [%d] in gmin" -msgstr "" - -#: gsumm.c:791 -msgid "Type 'complex' has no well-defined min" -msgstr "" - -#: gsumm.c:794 -#, c-format -msgid "" -"Type '%s' not supported by GForce min (gmin). Either add the prefix base::" -"min(.) or turn off GForce optimization using options(datatable.optimize=1)" -msgstr "" - -#: gsumm.c:806 -msgid "" -"GForce max can only be applied to columns, not .SD or similar. To find max " -"of all items in a list such as .SD, either add the prefix base::max(.SD) or " -"turn off GForce optimization using options(datatable.optimize=1). More " -"likely, you may be looking for 'DT[,lapply(.SD,max),by=,.SDcols=]'" -msgstr "" - -#: gsumm.c:807 -msgid "max is not meaningful for factors." -msgstr "" - -#: gsumm.c:812 -#, c-format -msgid "nrow [%d] != length(x) [%d] in gmax" -msgstr "" - -#: gsumm.c:937 -msgid "Type 'complex' has no well-defined max" -msgstr "" - -#: gsumm.c:940 -#, c-format -msgid "" -"Type '%s' not supported by GForce max (gmax). Either add the prefix base::" -"max(.) or turn off GForce optimization using options(datatable.optimize=1)" -msgstr "" - -#: gsumm.c:951 -msgid "" -"GForce median can only be applied to columns, not .SD or similar. To find " -"median of all items in a list such as .SD, either add the prefix stats::" -"median(.SD) or turn off GForce optimization using options(datatable." -"optimize=1). More likely, you may be looking for 'DT[,lapply(.SD,median)," -"by=,.SDcols=]'" -msgstr "" - -#: gsumm.c:952 -msgid "median is not meaningful for factors." -msgstr "" - -#: gsumm.c:955 -#, c-format -msgid "nrow [%d] != length(x) [%d] in gmedian" -msgstr "" - -#: gsumm.c:992 -#, c-format -msgid "" -"Type '%s' not supported by GForce median (gmedian). Either add the prefix " -"stats::median(.) or turn " -msgstr "" - -#: gsumm.c:1006 -#, c-format -msgid "nrow [%d] != length(x) [%d] in gtail" -msgstr "" - -#: gsumm.c:1074 -#, c-format -msgid "" -"Type '%s' not supported by GForce tail (gtail). Either add the prefix utils::" -"tail(.) or turn off GForce optimization using options(datatable.optimize=1)" -msgstr "" - -#: gsumm.c:1086 gsumm.c:1177 -#, c-format -msgid "nrow [%d] != length(x) [%d] in ghead" -msgstr "" - -#: gsumm.c:1154 -#, c-format -msgid "" -"Type '%s' not supported by GForce head (ghead). Either add the prefix utils::" -"head(.) or turn off GForce optimization using options(datatable.optimize=1)" -msgstr "" - -#: gsumm.c:1162 -msgid "" -"Internal error, gtail is only implemented for n=1. This should have been " -"caught before. please report to data.table issue tracker." -msgstr "" - -#: gsumm.c:1167 -msgid "" -"Internal error, ghead is only implemented for n=1. This should have been " -"caught before. please report to data.table issue tracker." -msgstr "" - -#: gsumm.c:1173 -msgid "" -"Internal error, `g[` (gnthvalue) is only implemented single value subsets " -"with positive index, e.g., .SD[2]. This should have been caught before. " -"please report to data.table issue tracker." -msgstr "" - -#: gsumm.c:1251 -#, c-format -msgid "" -"Type '%s' not supported by GForce subset `[` (gnthvalue). Either add the " -"prefix utils::head(.) or turn off GForce optimization using " -"options(datatable.optimize=1)" -msgstr "" - -#: gsumm.c:1263 -msgid "" -"GForce var/sd can only be applied to columns, not .SD or similar. For the " -"full covariance matrix of all items in a list such as .SD, either add the " -"prefix stats::var(.SD) (or stats::sd(.SD)) or turn off GForce optimization " -"using options(datatable.optimize=1). Alternatively, if you only need the " -"diagonal elements, 'DT[,lapply(.SD,var),by=,.SDcols=]' is the optimized way " -"to do this." -msgstr "" - -#: gsumm.c:1264 -msgid "var/sd is not meaningful for factors." -msgstr "" - -#: gsumm.c:1267 -#, c-format -msgid "nrow [%d] != length(x) [%d] in gvar" -msgstr "" - -#: gsumm.c:1383 -#, c-format -msgid "" -"Type '%s' not supported by GForce var (gvar). Either add the prefix stats::" -"var(.) or turn off GForce optimization using options(datatable.optimize=1)" -msgstr "" - -#: gsumm.c:1385 -#, c-format -msgid "" -"Type '%s' not supported by GForce sd (gsd). Either add the prefix stats::" -"sd(.) or turn off GForce optimization using options(datatable.optimize=1)" -msgstr "" - -#: gsumm.c:1404 -msgid "" -"GForce prod can only be applied to columns, not .SD or similar. To multiply " -"all items in a list such as .SD, either add the prefix base::prod(.SD) or " -"turn off GForce optimization using options(datatable.optimize=1). More " -"likely, you may be looking for 'DT[,lapply(.SD,prod),by=,.SDcols=]'" -msgstr "" - -#: gsumm.c:1405 -msgid "prod is not meaningful for factors." -msgstr "" - -#: gsumm.c:1410 -#, c-format -msgid "nrow [%d] != length(x) [%d] in gprod" -msgstr "" - -#: gsumm.c:1412 -#, c-format -msgid "Unable to allocate %d * %d bytes for gprod" -msgstr "" - -#: gsumm.c:1447 -#, c-format -msgid "" -"Type '%s' not supported by GForce prod (gprod). Either add the prefix base::" -"prod(.) or turn off GForce optimization using options(datatable.optimize=1)" -msgstr "" - -#: ijoin.c:22 ijoin.c:243 -msgid "" -"Internal error: invalid value for 'mult'; this should have been caught " -"before. please report to data.table issue tracker" -msgstr "" - -#: ijoin.c:29 ijoin.c:250 -msgid "" -"Internal error: invalid value for 'type'; this should have been caught " -"before. please report to data.table issue tracker" -msgstr "" - -#: ijoin.c:56 ijoin.c:121 -#, c-format -msgid "Internal error: unknown type in mult=%d in lookup: %d" -msgstr "" - -#: ijoin.c:124 ijoin.c:215 -#, c-format -msgid "Internal error: unknown mult in lookup: %d" -msgstr "" - -#: ijoin.c:160 -#, c-format -msgid "Internal error: unknown type lookup should have been caught earlier: %d" -msgstr "" - -#: ijoin.c:212 -#, c-format -msgid "" -"Internal error: unknown type in mult=%d in lookup should have been caught " -"earlier: %d" -msgstr "" - -#: ijoin.c:323 -#, c-format -msgid "Internal error: unknown type in mult=ALL in overlaps: %d" -msgstr "" - -#: ijoin.c:464 ijoin.c:571 ijoin.c:720 -#, c-format -msgid "Internal error: unknown type in mult=%d in overlaps: %d" -msgstr "" - -#: ijoin.c:723 -#, c-format -msgid "Internal error: unknown mult in overlaps: %d" -msgstr "" - -#: init.c:198 -#, c-format -msgid "" -"Pointers are %d bytes, greater than 8. We have not tested on any " -"architecture greater than 64bit yet." -msgstr "" - -#: init.c:209 -#, c-format -msgid "Checking NA_INTEGER [%d] == INT_MIN [%d] %s" -msgstr "" - -#: init.c:210 -#, c-format -msgid "Checking NA_INTEGER [%d] == NA_LOGICAL [%d] %s" -msgstr "" - -#: init.c:211 -#, c-format -msgid "Checking sizeof(int) [%d] is 4 %s" -msgstr "" - -#: init.c:212 -#, c-format -msgid "Checking sizeof(double) [%d] is 8 %s" -msgstr "" - -#: init.c:214 -#, c-format -msgid "Checking sizeof(long long) [%d] is 8 %s" -msgstr "" - -#: init.c:215 -#, c-format -msgid "Checking sizeof(pointer) [%d] is 4 or 8 %s" -msgstr "" - -#: init.c:216 -#, c-format -msgid "Checking sizeof(SEXP) [%d] == sizeof(pointer) [%d] %s" -msgstr "" - -#: init.c:217 -#, c-format -msgid "Checking sizeof(uint64_t) [%d] is 8 %s" -msgstr "" - -#: init.c:218 -#, c-format -msgid "Checking sizeof(int64_t) [%d] is 8 %s" -msgstr "" - -#: init.c:219 -#, c-format -msgid "Checking sizeof(signed char) [%d] is 1 %s" -msgstr "" - -#: init.c:220 -#, c-format -msgid "Checking sizeof(int8_t) [%d] is 1 %s" -msgstr "" - -#: init.c:221 -#, c-format -msgid "Checking sizeof(uint8_t) [%d] is 1 %s" -msgstr "" - -#: init.c:222 -#, c-format -msgid "Checking sizeof(int16_t) [%d] is 2 %s" -msgstr "" - -#: init.c:223 -#, c-format -msgid "Checking sizeof(uint16_t) [%d] is 2 %s" -msgstr "" - -#: init.c:226 -#, c-format -msgid "Checking LENGTH(allocVector(INTSXP,2)) [%d] is 2 %s" -msgstr "" - -#: init.c:227 -#, c-format -msgid "Checking TRUELENGTH(allocVector(INTSXP,2)) [%d] is 0 %s" -msgstr "" - -#: init.c:234 -#, c-format -msgid "Checking memset(&i,0,sizeof(int)); i == (int)0 %s" -msgstr "" - -#: init.c:237 -#, c-format -msgid "Checking memset(&ui, 0, sizeof(unsigned int)); ui == (unsigned int)0 %s" -msgstr "" - -#: init.c:240 -#, c-format -msgid "Checking memset(&d, 0, sizeof(double)); d == (double)0.0 %s" -msgstr "" - -#: init.c:243 -#, c-format -msgid "Checking memset(&ld, 0, sizeof(long double)); ld == (long double)0.0 %s" -msgstr "" - -#: init.c:246 -msgid "The ascii character '/' is not just before '0'" -msgstr "" - -#: init.c:247 -msgid "The C expression (uint_fast8_t)('/'-'0')<10 is true. Should be false." -msgstr "" - -#: init.c:248 -msgid "The ascii character ':' is not just after '9'" -msgstr "" - -#: init.c:249 -msgid "The C expression (uint_fast8_t)('9'-':')<10 is true. Should be false." -msgstr "" - -#: init.c:254 -#, c-format -msgid "Conversion of NA_INT64 via double failed %lld!=%lld" -msgstr "" - -#: init.c:258 -msgid "NA_INT64_D (negative -0.0) is not == 0.0." -msgstr "" - -#: init.c:259 -msgid "NA_INT64_D (negative -0.0) is not ==-0.0." -msgstr "" - -#: init.c:260 -msgid "ISNAN(NA_INT64_D) is TRUE but should not be" -msgstr "" - -#: init.c:261 -msgid "isnan(NA_INT64_D) is TRUE but should not be" -msgstr "" - -#: init.c:290 -#, c-format -msgid "PRINTNAME(install(\")integer64\")) has returned %s not %s" -msgstr "" - -#: init.c:359 -msgid ".Last.value in namespace is not a length 1 integer" -msgstr "" - -#: nafill.c:83 -msgid "" -"'x' argument is atomic vector, in-place update is supported only for list/" -"data.table" -msgstr "" - -#: nafill.c:85 nafill.c:95 -msgid "'x' argument must be numeric type, or list/data.table of numeric types" -msgstr "" - -#: nafill.c:133 nafill.c:161 -msgid "" -"Internal error: invalid type argument in nafillR function, should have been " -"caught before. Please report to data.table issue tracker." -msgstr "" - -#: openmp-utils.c:67 -msgid "'verbose' must be TRUE or FALSE" -msgstr "" - -#: openmp-utils.c:91 -msgid "" -"restore_after_fork= must be TRUE, FALSE, or NULL (default). " -"getDTthreads(verbose=TRUE) reports the current setting.\n" -msgstr "" - -#: openmp-utils.c:105 -#, c-format -msgid "" -"threads= must be either NULL (default) or a single number. It has length %d" -msgstr "" - -#: openmp-utils.c:107 -msgid "threads= must be either NULL (default) or type integer/numeric" -msgstr "" - -#: openmp-utils.c:109 -msgid "" -"threads= must be either NULL or a single integer >= 0. See ?setDTthreads." -msgstr "" - -#: openmp-utils.c:114 -msgid "Internal error: percent= must be TRUE or FALSE at C level" -msgstr "" - -#: openmp-utils.c:117 -#, c-format -msgid "" -"Internal error: threads==%d should be between 2 and 100 (percent=TRUE at C " -"level)." -msgstr "" - -#: rbindlist.c:8 -msgid "fill= should be TRUE or FALSE" -msgstr "" - -#: rbindlist.c:10 -msgid "use.names= should be TRUE, FALSE, or not used (\")check\" by default)" -msgstr "" - -#: rbindlist.c:12 -msgid "" -"Input to rbindlist must be a list. This list can contain data.tables, data." -"frames or plain lists." -msgstr "" - -#: rbindlist.c:20 -msgid "Internal error: rbindlist.c idcol is not a single string" -msgstr "" - -#: rbindlist.c:31 -#, c-format -msgid "Item %d of input is not a data.frame, data.table or list" -msgstr "" - -#: rbindlist.c:39 -#, c-format -msgid "" -"Item %d has %d columns, inconsistent with item %d which has %d columns. To " -"fill missing columns use fill=TRUE." -msgstr "" - -#: rbindlist.c:42 -#, c-format -msgid "Item %d has %d columns but %d column names. Invalid object." -msgstr "" - -#: rbindlist.c:49 -#, c-format -msgid "" -"Column %d of item %d is length %d inconsistent with column %d which is " -"length %d. Only length-1 columns are recycled." -msgstr "" - -#: rbindlist.c:62 -#, c-format -msgid "" -"Total rows in the list is %lld which is larger than the maximum number of " -"rows, currently %d" -msgstr "" - -#: rbindlist.c:63 -msgid "use.names=TRUE but no item of input list has any names" -msgstr "" - -#: rbindlist.c:71 -#, c-format -msgid "" -"Failed to allocate upper bound of %lld unique column names [sum(lapply(l," -"ncol))]" -msgstr "" - -#: rbindlist.c:102 -#, c-format -msgid "Failed to allocate nuniq=%d items working memory in rbindlist.c" -msgstr "" - -#: rbindlist.c:136 -#, c-format -msgid "Failed to allocate ncol=%d items working memory in rbindlist.c" -msgstr "" - -#: rbindlist.c:191 -msgid "" -"Internal error: usenames==NA but fill=TRUE. usenames should have been set to " -"TRUE earlier with warning." -msgstr "" - -#: rbindlist.c:206 -msgid "" -"Internal error: could not find the first column name not present in earlier " -"item" -msgstr "" - -#: rbindlist.c:218 -#, c-format -msgid "" -"Internal error: usenames==NA but an out-of-order name has been found in an " -"item with no names or the first item. [%d]" -msgstr "" - -#: rbindlist.c:297 -#, c-format -msgid "" -"Column %d of item %d has type 'factor' but has no levels; i.e. malformed." -msgstr "" - -#: rbindlist.c:315 -#, c-format -msgid "" -"Class attribute on column %d of item %d does not match with column %d of " -"item %d." -msgstr "" - -#: rbindlist.c:325 -#, c-format -msgid "" -"Internal error: column %d of result is determined to be integer64 but " -"maxType=='%s' != REALSXP" -msgstr "" - -#: rbindlist.c:361 -#, c-format -msgid "" -"Failed to allocate working memory for %d ordered factor levels of result " -"column %d" -msgstr "" - -#: rbindlist.c:432 -#, c-format -msgid "" -"Failed to allocate working memory for %d factor levels of result column %d " -"when reading item %d of item %d" -msgstr "" - -#: reorder.c:17 -#, c-format -msgid "Item %d of list is type '%s' which isn't yet supported (SIZEOF=%d)" -msgstr "" - -#: reorder.c:19 -#, c-format -msgid "" -"Column %d is length %d which differs from length of column 1 (%d). Invalid " -"data.table." -msgstr "" - -#: reorder.c:27 -#, c-format -msgid "" -"reorder accepts vectors but this non-VECSXP is type '%s' which isn't yet " -"supported (SIZEOF=%d)" -msgstr "" - -#: reorder.c:28 -msgid "" -"Internal error in reorder.c: cannot reorder an ALTREP vector. Please see " -"NEWS item 2 in v1.11.4 and report this as a bug." -msgstr "" - -#: reorder.c:33 -msgid "order must be an integer vector" -msgstr "" - -#: reorder.c:34 -#, c-format -msgid "nrow(x)[%d]!=length(order)[%d]" -msgstr "" - -#: reorder.c:48 -#, c-format -msgid "order is not a permutation of 1:nrow[%d]" -msgstr "" - -#: reorder.c:57 -#, c-format -msgid "" -"Unable to allocate %d * %d bytes of working memory for reordering data.table" -msgstr "" - -#: shift.c:17 -#, c-format -msgid "" -"type '%s' passed to shift(). Must be a vector, list, data.frame or data.table" -msgstr "" - -#: shift.c:24 shift.c:28 -msgid "" -"Internal error: invalid type for shift(), should have been caught before. " -"please report to data.table issue tracker" -msgstr "" - -#: shift.c:31 -msgid "Internal error: k must be integer" -msgstr "" - -#: shift.c:33 -#, c-format -msgid "Item %d of n is NA" -msgstr "" - -#: shift.c:158 -#, c-format -msgid "Unsupported type '%s'" -msgstr "" - -#: subset.c:7 -#, c-format -msgid "Internal error: subsetVectorRaw length(ans)==%d n=%d" -msgstr "" - -#: subset.c:88 -#, c-format -msgid "" -"Internal error: column type '%s' not supported by data.table subset. All " -"known types are supported so please report as bug." -msgstr "" - -#: subset.c:97 subset.c:121 -#, c-format -msgid "Internal error. 'idx' is type '%s' not 'integer'" -msgstr "" - -#: subset.c:122 -#, c-format -msgid "" -"Internal error. 'maxArg' is type '%s' and length %d, should be an integer " -"singleton" -msgstr "" - -#: subset.c:123 -msgid "Internal error: allowOverMax must be TRUE/FALSE" -msgstr "" - -#: subset.c:125 -#, c-format -msgid "Internal error. max is %d, must be >= 0." -msgstr "" - -#: subset.c:149 -#, c-format -msgid "i[%d] is %d which is out of range [1,nrow=%d]" -msgstr "" - -#: subset.c:161 -#, c-format -msgid "" -"Item %d of i is %d and item %d is %d. Cannot mix positives and negatives." -msgstr "" - -#: subset.c:171 -#, c-format -msgid "Item %d of i is %d and item %d is NA. Cannot mix negatives and NA." -msgstr "" - -#: subset.c:223 -#, c-format -msgid "Column %d is NULL; malformed data.table." -msgstr "" - -#: subset.c:226 -#, c-format -msgid "Column %d ['%s'] is a data.frame or data.table; malformed data.table." -msgstr "" - -#: subset.c:231 -#, c-format -msgid "" -"Column %d ['%s'] is length %d but column 1 is length %d; malformed data." -"table." -msgstr "" - -#: subset.c:247 -#, c-format -msgid "Internal error. Argument 'x' to CsubsetDT is type '%s' not 'list'" -msgstr "" - -#: subset.c:260 -#, c-format -msgid "Internal error. Argument 'cols' to Csubset is type '%s' not 'integer'" -msgstr "" - -#: subset.c:337 -msgid "" -"Internal error: NULL can not be subset. It is invalid for a data.table to " -"contain a NULL column." -msgstr "" - -#: subset.c:339 -msgid "" -"Internal error: CsubsetVector is internal-use-only but has received " -"negatives, zeros or out-of-range" -msgstr "" - -#: transpose.c:9 -msgid "l must be a list." -msgstr "" - -#: transpose.c:13 -msgid "ignore.empty should be logical TRUE/FALSE." -msgstr "" - -#: transpose.c:16 -msgid "" -"keep.names should be either NULL, or the name of the first column of the " -"result in which to place the names of the input" -msgstr "" - -#: transpose.c:19 -msgid "fill must be a length 1 vector, such as the default NA" -msgstr "" - -#: transpose.c:28 -#, c-format -msgid "Item %d of list input is not an atomic vector" -msgstr "" - -#: types.c:23 -#, c-format -msgid "" -"%s: %d:\n" -"%s:" -msgstr "" - -#: types.c:55 -msgid "internal error: status, nx, nk must be integer" -msgstr "" - -#: uniqlist.c:14 -msgid "Internal error: uniqlist has not been passed a list of columns" -msgstr "" - -#: uniqlist.c:17 -msgid "Internal error: uniqlist has been passed a non-integer order" -msgstr "" - -#: uniqlist.c:18 -msgid "Internal error: uniqlist has been passed a length-0 order" -msgstr "" - -#: uniqlist.c:19 -#, c-format -msgid "Internal error: uniqlist has been passed length(order)==%d but nrow==%d" -msgstr "" - -#: uniqlist.c:96 uniqlist.c:127 uniqlist.c:208 uniqlist.c:245 uniqlist.c:318 -#, c-format -msgid "Type '%s' not supported" -msgstr "" - -#: uniqlist.c:148 -msgid "Input argument 'x' to 'uniqlengths' must be an integer vector" -msgstr "" - -#: uniqlist.c:149 -msgid "" -"Input argument 'n' to 'uniqlengths' must be an integer vector of length 1" -msgstr "" - -#: uniqlist.c:167 -msgid "cols must be an integer vector with length >= 1" -msgstr "" - -#: uniqlist.c:171 -#, c-format -msgid "Item %d of cols is %d which is outside range of l [1,length(l)=%d]" -msgstr "" - -#: uniqlist.c:174 -#, c-format -msgid "" -"All elements to input list must be of same length. Element [%d] has length " -"%llu != length of first element = %llu." -msgstr "" - -#: uniqlist.c:255 -msgid "Internal error: nestedid was not passed a list length 1 or more" -msgstr "" - -#: uniqlist.c:262 -#, c-format -msgid "Internal error: nrows[%d]>0 but ngrps==0" -msgstr "" - -#: uniqlist.c:264 -msgid "cols must be an integer vector of positive length" -msgstr "" - -#: uniqlist.c:349 -msgid "x is not a logical vector" -msgstr "" - -#: utils.c:73 -#, c-format -msgid "Unsupported type '%s' passed to allNA()" -msgstr "" - -#: utils.c:92 -msgid "'x' argument must be data.table compatible" -msgstr "" - -#: utils.c:94 -msgid "'check_dups' argument must be TRUE or FALSE" -msgstr "" - -#: utils.c:110 -msgid "" -"argument specifying columns is type 'double' and one or more items in it are " -"not whole integers" -msgstr "" - -#: utils.c:116 -#, c-format -msgid "argument specifying columns specify non existing column(s): cols[%d]=%d" -msgstr "" - -#: utils.c:121 -msgid "'x' argument data.table has no names" -msgstr "" - -#: utils.c:126 -#, c-format -msgid "" -"argument specifying columns specify non existing column(s): cols[%d]='%s'" -msgstr "" - -#: utils.c:129 -msgid "argument specifying columns must be character or numeric" -msgstr "" - -#: utils.c:132 -msgid "argument specifying columns specify duplicated column(s)" -msgstr "" - -#: utils.c:138 -#, c-format -msgid "%s: fill argument must be length 1" -msgstr "" - -#: utils.c:171 -#, c-format -msgid "%s: fill argument must be numeric" -msgstr "" - -#: utils.c:274 -#, c-format -msgid "Internal error: unsupported type '%s' passed to copyAsPlain()" -msgstr "" - -#: utils.c:278 -#, c-format -msgid "" -"Internal error: type '%s' passed to copyAsPlain() but it seems " -"copyMostAttrib() retains ALTREP attributes" -msgstr "" - -#: vecseq.c:13 -msgid "x must be an integer vector" -msgstr "" - -#: vecseq.c:14 -msgid "len must be an integer vector" -msgstr "" - -#: vecseq.c:15 -msgid "x and len must be the same length" -msgstr "" - -#: vecseq.c:21 -msgid "" -"Join results in more than 2^31 rows (internal vecseq reached physical " -"limit). Very likely misspecified join. Check for duplicate key values in i " -"each of which join to the same group in x over and over again. If that's ok, " -"try by=.EACHI to run j for each group to avoid the large allocation. " -"Otherwise, please search for this error message in the FAQ, Wiki, Stack " -"Overflow and data.table issue tracker for advice." -msgstr "" - -#: vecseq.c:25 -msgid "clamp must be a double vector length 1" -msgstr "" - -#: vecseq.c:27 -msgid "clamp must be positive" -msgstr "" - -#: vecseq.c:28 -#, c-format -msgid "" -"Join results in %d rows; more than %d = nrow(x)+nrow(i). Check for duplicate " -"key values in i each of which join to the same group in x over and over " -"again. If that's ok, try by=.EACHI to run j for each group to avoid the " -"large allocation. If you are sure you wish to proceed, rerun with allow." -"cartesian=TRUE. Otherwise, please search for this error message in the FAQ, " -"Wiki, Stack Overflow and data.table issue tracker for advice." -msgstr "" - -#: wrappers.c:11 -msgid "Attribute name must be a character vector of length 1" -msgstr "" - -#: wrappers.c:16 -msgid "" -"Internal structure doesn't seem to be a list. Can't set class to be 'data." -"table' or 'data.frame'. Use 'as.data.table()' or 'as.data.frame()' methods " -"instead." -msgstr "" - -#: wrappers.c:59 -msgid "First argument to setlistelt must be a list()" -msgstr "" - -#: wrappers.c:60 -msgid "Second argument to setlistelt must a length 1 integer vector" -msgstr "" - -#: wrappers.c:62 -#, c-format -msgid "i (%d) is outside the range of items [1,%d]" -msgstr "" - -#: wrappers.c:84 -msgid "x isn't a VECSXP" -msgstr "" - -#: wrappers.c:99 -#, c-format -msgid "" -"dim.data.table expects a data.table as input (which is a list), but seems to " -"be of type %s" -msgstr "" From 0832f48d454ff7d95ef57d6d6ab49c088535ae27 Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Wed, 16 Oct 2019 21:53:03 +0800 Subject: [PATCH 14/78] run update_pkg_po on the src to get mo files --- inst/po/en@quot/LC_MESSAGES/data.table.mo | Bin 0 -> 137184 bytes inst/po/zh_CN/LC_MESSAGES/data.table.mo | Bin 0 -> 351 bytes po/data.table.pot | 8 +- po/zh_CN.po | 4378 +++++++++++++++++++++ src/forder.c | 4 +- 5 files changed, 4384 insertions(+), 6 deletions(-) create mode 100644 inst/po/en@quot/LC_MESSAGES/data.table.mo create mode 100644 inst/po/zh_CN/LC_MESSAGES/data.table.mo create mode 100644 po/zh_CN.po diff --git a/inst/po/en@quot/LC_MESSAGES/data.table.mo b/inst/po/en@quot/LC_MESSAGES/data.table.mo new file mode 100644 index 0000000000000000000000000000000000000000..ed43e8115212e1195dc83280bb2c77328d7ad026 GIT binary patch literal 137184 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 vhf6^5(Jw&pY4S3s?*dSA=RM$|;A7w! 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

}*YQ4ViK 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 literal 0 HcmV?d00001 diff --git a/inst/po/zh_CN/LC_MESSAGES/data.table.mo b/inst/po/zh_CN/LC_MESSAGES/data.table.mo new file mode 100644 index 0000000000000000000000000000000000000000..494e694301b11f2fc6059ae7cb016f6ea0d15ac6 GIT binary patch literal 351 zcmYk1PfG(a5XCEc+M{O=Ip|4eO-j{m{DW946kIH2^*-Glw~^gsNm9`d;@9)DI18oq z!H_wIwr2(t>_$Oq%B78OQJBQ6^f zDpkYuB3V%9e1tsIrh\n" "Language-Team: LANGUAGE \n" "Language: \n" @@ -1451,11 +1451,11 @@ msgid "Column %d is length %d which differs from length of column 1 (%d)\n" msgstr "" #: forder.c:464 -msgid "retGrp= must be TRUE or FALSE" +msgid "retGrp must be TRUE or FALSE" msgstr "" #: forder.c:467 -msgid "sort= must be TRUE or FALSE" +msgid "sort must be TRUE or FALSE" msgstr "" #: forder.c:470 diff --git a/po/zh_CN.po b/po/zh_CN.po new file mode 100644 index 0000000000..3554bec910 --- /dev/null +++ b/po/zh_CN.po @@ -0,0 +1,4378 @@ +msgid "" +msgstr "" +"Project-Id-Version: data.table 1.12.5\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2019-10-16 15:03+0800\n" +"PO-Revision-Date: 2019-10-04 17:06+08\n" +"Last-Translator: Michael Chirico \n" +"Language-Team: Mandarin\n" +"Language: Mandarin\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" + +#: assign.c:9 +msgid "Internal error: finalizer hasn't received an ExternalPtr" +msgstr "" + +#: assign.c:11 +msgid "Internal error: finalizer's ExternalPtr doesn't see names in tag" +msgstr "" + +#: assign.c:14 +#, c-format +msgid "Internal error: finalizer sees l=%d, tl=%d" +msgstr "" + +#: assign.c:123 +msgid "" +".internal.selfref ptr is NULL. This is expected and normal for a data.table " +"loaded from disk. Please remember to always setDT() immediately after " +"loading to prevent unexpected behavior. If this table was not loaded from " +"disk or you've already run setDT(), please report to data.table issue " +"tracker.\n" +msgstr "" + +#: assign.c:126 +msgid "Internal error: .internal.selfref ptr is not NULL or R_NilValue" +msgstr "" + +#: assign.c:128 +msgid "Internal error: .internal.selfref tag isn't NULL or a character vector" +msgstr "" + +#: assign.c:170 +msgid "Internal error: length(names)>0 but =0 and not NA." +msgstr "" + +#: assign.c:241 fsort.c:109 nafill.c:73 +msgid "verbose must be TRUE or FALSE" +msgstr "" + +#: assign.c:289 +msgid "assign has been passed a NULL dt" +msgstr "" + +#: assign.c:290 +msgid "dt passed to assign isn't type VECSXP" +msgstr "" + +#: assign.c:292 +msgid "" +".SD is locked. Updating .SD by reference using := or set are reserved for " +"future use. Use := in j directly. Or use copy(.SD) as a (slow) last resort, " +"until shallow() is exported." +msgstr "" + +#: assign.c:300 +msgid "Internal error: dt passed to Cassign is not a data.table or data.frame" +msgstr "" + +#: assign.c:304 +msgid "dt passed to assign has no names" +msgstr "" + +#: assign.c:306 +#, c-format +msgid "Internal error in assign: length of names (%d) is not length of dt (%d)" +msgstr "" + +#: assign.c:308 +msgid "" +"data.table is NULL; malformed. A null data.table should be an empty list. " +"typeof() should always return 'list' for data.table." +msgstr "" + +#: assign.c:317 +#, c-format +msgid "Assigning to all %d rows\n" +msgstr "" + +#: assign.c:322 +msgid "" +"Coerced i from numeric to integer. Please pass integer for efficiency; e.g., " +"2L rather than 2" +msgstr "" + +#: assign.c:325 +#, c-format +msgid "" +"i is type '%s'. Must be integer, or numeric is coerced with warning. If i is " +"a logical subset, simply wrap with which(), and take the which() outside the " +"loop if possible for efficiency." +msgstr "" + +#: assign.c:331 +#, c-format +msgid "i[%d] is %d which is out of range [1,nrow=%d]." +msgstr "" + +#: assign.c:334 +#, c-format +msgid "Assigning to %d row subset of %d rows\n" +msgstr "" + +#: assign.c:342 +#, c-format +msgid "Added %d new column%s initialized with all-NA\n" +msgstr "" + +#: assign.c:347 +msgid "length(LHS)==0; no columns to delete or assign RHS to." +msgstr "" + +#: assign.c:361 +msgid "" +"set() on a data.frame is for changing existing columns, not adding new ones. " +"Please use a data.table for that. data.table's are over-allocated and don't " +"shallow copy." +msgstr "" + +#: assign.c:372 +msgid "" +"Coerced j from numeric to integer. Please pass integer for efficiency; e.g., " +"2L rather than 2" +msgstr "" + +#: assign.c:375 +#, c-format +msgid "" +"j is type '%s'. Must be integer, character, or numeric is coerced with " +"warning." +msgstr "" + +#: assign.c:377 +msgid "" +"Can't assign to the same column twice in the same query (duplicates " +"detected)." +msgstr "" + +#: assign.c:378 +msgid "newcolnames is supplied but isn't a character vector" +msgstr "" + +#: assign.c:380 +#, c-format +msgid "RHS_list_of_columns == %s\n" +msgstr "" + +#: assign.c:385 +#, c-format +msgid "" +"RHS_list_of_columns revised to true because RHS list has 1 item which is " +"NULL, or whose length %d is either 1 or targetlen (%d). Please unwrap RHS.\n" +msgstr "" + +#: assign.c:390 +#, c-format +msgid "" +"Supplied %d columns to be assigned an empty list (which may be an empty data." +"table or data.frame since they are lists too). To delete multiple columns " +"use NULL instead. To add multiple empty list columns, use list(list())." +msgstr "" + +#: assign.c:395 +#, c-format +msgid "Recycling single RHS list item across %d columns. Please unwrap RHS.\n" +msgstr "" + +#: assign.c:397 +#, c-format +msgid "" +"Supplied %d columns to be assigned %d items. Please see NEWS for v1.12.2." +msgstr "" + +#: assign.c:405 +#, c-format +msgid "" +"Item %d of column numbers in j is %d which is outside range [1,ncol=%d]. " +"set() on a data.frame is for changing existing columns, not adding new ones. " +"Please use a data.table for that." +msgstr "" + +#: assign.c:406 +#, c-format +msgid "" +"Item %d of column numbers in j is %d which is outside range [1,ncol=%d]. Use " +"column names instead in j to add new columns." +msgstr "" + +#: assign.c:411 +msgid "When deleting columns, i should not be provided" +msgstr "" + +#: assign.c:417 +#, c-format +msgid "" +"RHS of assignment to existing column '%s' is zero length but not NULL. If " +"you intend to delete the column use NULL. Otherwise, the RHS must have " +"length > 0; e.g., NA_integer_. If you are trying to change the column type " +"to be an empty list column then, as with all column type changes, provide a " +"full length RHS vector such as vector('list',nrow(DT)); i.e., 'plonk' in the " +"new column." +msgstr "" + +#: assign.c:422 +#, c-format +msgid "" +"Internal error in assign.c: length(newcolnames)=%d, length(names)=%d, coln=%d" +msgstr "" + +#: assign.c:424 +#, c-format +msgid "Column '%s' does not exist to remove" +msgstr "" + +#: assign.c:430 +#, c-format +msgid "%d column matrix RHS of := will be treated as one vector" +msgstr "" + +#: assign.c:434 +#, c-format +msgid "" +"Can't assign to column '%s' (type 'factor') a value of type '%s' (not " +"character, factor, integer or numeric)" +msgstr "" + +#: assign.c:439 +#, c-format +msgid "" +"Supplied %d items to be assigned to %d items of column '%s'. If you wish to " +"'recycle' the RHS please use rep() to make this intent clear to readers of " +"your code." +msgstr "" + +#: assign.c:449 +msgid "" +"This data.table has either been loaded from disk (e.g. using readRDS()/" +"load()) or constructed manually (e.g. using structure()). Please run setDT() " +"or setalloccol() on it first (to pre-allocate space for new columns) before " +"assigning by reference to it." +msgstr "" + +#: assign.c:450 +#, c-format +msgid "" +"Internal error: oldtncol(%d) < oldncol(%d). Please report to data.table " +"issue tracker, including result of sessionInfo()." +msgstr "" + +#: assign.c:452 +#, c-format +msgid "" +"truelength (%d) is greater than 10,000 items over-allocated (length = %d). " +"See ?truelength. If you didn't set the datatable.alloccol option very large, " +"please report to data.table issue tracker including the result of " +"sessionInfo()." +msgstr "" + +#: assign.c:454 +#, c-format +msgid "" +"Internal error: DT passed to assign has not been allocated enough column " +"slots. l=%d, tl=%d, adding %d" +msgstr "" + +#: assign.c:456 +msgid "" +"It appears that at some earlier point, names of this data.table have been " +"reassigned. Please ensure to use setnames() rather than names<- or " +"colnames<-. Otherwise, please report to data.table issue tracker." +msgstr "" + +#: assign.c:460 +#, c-format +msgid "Internal error: selfrefnames is ok but tl names [%d] != tl [%d]" +msgstr "" + +#: assign.c:471 +msgid "" +"Internal error: earlier error 'When deleting columns, i should not be " +"provided' did not happen." +msgstr "" + +#: assign.c:482 +#, c-format +msgid "" +"RHS for item %d has been duplicated because NAMED==%d MAYBE_SHARED==%d, but " +"then is being plonked. length(values)==%d; length(cols)==%d)\n" +msgstr "" + +#: assign.c:487 +#, c-format +msgid "Direct plonk of unnamed RHS, no copy. NAMED==%d, MAYBE_SHARED==%d\n" +msgstr "" + +#: assign.c:556 +#, c-format +msgid "" +"Dropping index '%s' as it doesn't have '__' at the beginning of its name. It " +"was very likely created by v1.9.4 of data.table.\n" +msgstr "" + +#: assign.c:564 +msgid "Internal error: index name ends with trailing __" +msgstr "" + +#: assign.c:569 +msgid "Internal error: Couldn't allocate memory for s4." +msgstr "" + +#: assign.c:580 +msgid "Internal error: Couldn't allocate memory for s5." +msgstr "" + +#: assign.c:601 assign.c:617 +#, c-format +msgid "Dropping index '%s' due to an update on a key column\n" +msgstr "" + +#: assign.c:610 +#, c-format +msgid "Shortening index '%s' to '%s' due to an update on a key column\n" +msgstr "" + +#: assign.c:687 +#, c-format +msgid "Internal error: recycle length error not caught earlier. slen=%d len=%d" +msgstr "" + +#: assign.c:691 +msgid "Internal error: memrecycle has received NULL colname" +msgstr "" + +#: assign.c:717 +#, c-format +msgid "" +"Cannot assign 'factor' to '%s'. Factors can only be assigned to factor, " +"character or list columns." +msgstr "" + +#: assign.c:731 +#, c-format +msgid "" +"Assigning factor numbers to column %d named '%s'. But %d is outside the " +"level range [1,%d]" +msgstr "" + +#: assign.c:739 +#, c-format +msgid "" +"Assigning factor numbers to column %d named '%s'. But %f is outside the " +"level range [1,%d], or is not a whole number." +msgstr "" + +#: assign.c:745 +#, c-format +msgid "" +"Cannot assign '%s' to 'factor'. Factor columns can be assigned factor, " +"character, NA in any type, or level numbers." +msgstr "" + +#: assign.c:766 +msgid "" +"Internal error: levels of target are either not unique or have truelength<0" +msgstr "" + +#: assign.c:805 +#, c-format +msgid "Unable to allocate working memory of %d bytes to combine factor levels" +msgstr "" + +#: assign.c:812 +msgid "Internal error: extra level check sum failed" +msgstr "" + +#: assign.c:831 +#, c-format +msgid "" +"Coercing 'character' RHS to '%s' to match the type of the target column " +"(column %d named '%s')." +msgstr "" + +#: assign.c:837 +#, c-format +msgid "" +"Cannot coerce 'list' RHS to 'integer64' to match the type of the target " +"column (column %d named '%s')." +msgstr "" + +#: assign.c:842 +#, c-format +msgid "" +"Coercing 'list' RHS to '%s' to match the type of the target column (column " +"%d named '%s')." +msgstr "" + +#: assign.c:848 +#, c-format +msgid "Zero-copy coerce when assigning '%s' to '%s' column %d named '%s'.\n" +msgstr "" + +#: assign.c:943 +#, c-format +msgid "type '%s' cannot be coerced to '%s'" +msgstr "" + +#: assign.c:1063 +msgid "" +"To assign integer64 to a character column, please use as.character() for " +"clarity." +msgstr "" + +#: assign.c:1074 +#, c-format +msgid "Unsupported column type in assign.c:memrecycle '%s'" +msgstr "" + +#: assign.c:1121 +#, c-format +msgid "Internal error: writeNA passed a vector of type '%s'" +msgstr "" + +#: assign.c:1152 +#, c-format +msgid "" +"Internal error: savetl_init checks failed (%d %d %p %p). please report to " +"data.table issue tracker." +msgstr "" + +#: assign.c:1160 +#, c-format +msgid "Failed to allocate initial %d items in savetl_init" +msgstr "" + +#: assign.c:1169 +#, c-format +msgid "" +"Internal error: reached maximum %d items for savetl. Please report to data." +"table issue tracker." +msgstr "" + +#: assign.c:1176 +#, c-format +msgid "Failed to realloc saveds to %d items in savetl" +msgstr "" + +#: assign.c:1182 +#, c-format +msgid "Failed to realloc savedtl to %d items in savetl" +msgstr "" + +#: assign.c:1205 +msgid "x must be a character vector" +msgstr "" + +#: assign.c:1206 +msgid "'which' must be an integer vector" +msgstr "" + +#: assign.c:1207 +msgid "'new' must be a character vector" +msgstr "" + +#: assign.c:1208 +#, c-format +msgid "'new' is length %d. Should be the same as length of 'which' (%d)" +msgstr "" + +#: assign.c:1211 +#, c-format +msgid "" +"Item %d of 'which' is %d which is outside range of the length %d character " +"vector" +msgstr "" + +#: assign.c:1221 +msgid "dt passed to setcolorder has no names" +msgstr "" + +#: assign.c:1223 +#, c-format +msgid "Internal error: dt passed to setcolorder has %d columns but %d names" +msgstr "" + +#: assign.c:1230 +msgid "" +"Internal error: o passed to Csetcolorder contains an NA or out-of-bounds" +msgstr "" + +#: assign.c:1232 +msgid "Internal error: o passed to Csetcolorder contains a duplicate" +msgstr "" + +#: between.c:12 +#, c-format +msgid "" +"Incompatible vector lengths: length(x)==%d length(lower)==%d length(upper)==" +"%d. Each should be either length 1 or the length of the longest." +msgstr "" + +#: between.c:16 +msgid "incbounds must be TRUE or FALSE" +msgstr "" + +#: between.c:19 +msgid "NAbounds must be TRUE or NA" +msgstr "" + +#: between.c:22 +msgid "check must be TRUE or FALSE" +msgstr "" + +#: between.c:64 +#, c-format +msgid "Item %d of lower (%d) is greater than item %d of upper (%d)" +msgstr "" + +#: between.c:82 +#, c-format +msgid "between parallel processing of integer took %8.3fs\n" +msgstr "" + +#: between.c:88 +msgid "x is integer64 but lower and/or upper are not." +msgstr "" + +#: between.c:95 +#, c-format +msgid "Item %d of lower (%lld) is greater than item %d of upper (%lld)" +msgstr "" + +#: between.c:112 +#, c-format +msgid "between parallel processing of integer64 took %8.3fs\n" +msgstr "" + +#: between.c:115 +msgid "" +"x is not integer64 but lower and/or upper is integer64. Please align classes." +msgstr "" + +#: between.c:122 +#, c-format +msgid "Item %d of lower (%f) is greater than item %d of upper (%f)" +msgstr "" + +#: between.c:140 +#, c-format +msgid "between parallel processing of double with open bounds took %8.3fs\n" +msgstr "" + +#: between.c:157 +#, c-format +msgid "between parallel processing of double with closed bounds took %8.3fs\n" +msgstr "" + +#: between.c:172 +#, c-format +msgid "Item %d of lower ('%s') is greater than item %d of upper ('%s')" +msgstr "" + +#: between.c:187 +#, c-format +msgid "between non-parallel processing of character took %8.3fs\n" +msgstr "" + +#: between.c:190 +#, c-format +msgid "" +"Internal error: between.c unsupported type '%s' should have been caught at R " +"level" +msgstr "" + +#: bmerge.c:48 +msgid "Internal error: icols is not integer vector" +msgstr "" + +#: bmerge.c:49 +msgid "Internal error: xcols is not integer vector" +msgstr "" + +#: bmerge.c:50 +#, c-format +msgid "Internal error: length(icols) [%d] > length(xcols) [%d]" +msgstr "" + +#: bmerge.c:57 +#, c-format +msgid "Internal error. icols[%d] is NA" +msgstr "" + +#: bmerge.c:58 +#, c-format +msgid "Internal error. xcols[%d] is NA" +msgstr "" + +#: bmerge.c:59 +#, c-format +msgid "icols[%d]=%d outside range [1,length(i)=%d]" +msgstr "" + +#: bmerge.c:60 +#, c-format +msgid "xcols[%d]=%d outside range [1,length(x)=%d]" +msgstr "" + +#: bmerge.c:63 +#, c-format +msgid "typeof x.%s (%s) != typeof i.%s (%s)" +msgstr "" + +#: bmerge.c:70 +msgid "roll is character but not 'nearest'" +msgstr "" + +#: bmerge.c:71 +msgid "roll='nearest' can't be applied to a character column, yet." +msgstr "" + +#: bmerge.c:74 +msgid "Internal error: roll is not character or double" +msgstr "" + +#: bmerge.c:79 +msgid "rollends must be a length 2 logical vector" +msgstr "" + +#: bmerge.c:89 uniqlist.c:270 +msgid "" +"Internal error: invalid value for 'mult'. please report to data.table issue " +"tracker" +msgstr "" + +#: bmerge.c:93 +msgid "" +"Internal error: opArg is not an integer vector of length equal to length(on)" +msgstr "" + +#: bmerge.c:96 +msgid "Internal error: nqgrpArg must be an integer vector" +msgstr "" + +#: bmerge.c:102 +msgid "Intrnal error: nqmaxgrpArg is not a positive length-1 integer vector" +msgstr "" + +#: bmerge.c:111 +msgid "Internal error in allocating memory for non-equi join" +msgstr "" + +#: bmerge.c:156 +msgid "Internal error: xoArg is not an integer vector" +msgstr "" + +#: bmerge.c:271 bmerge.c:379 +#, c-format +msgid "" +"Internal error in bmerge_r for '%s' column. Unrecognized value op[col]=%d" +msgstr "" + +#: bmerge.c:303 +#, c-format +msgid "Only '==' operator is supported for columns of type %s." +msgstr "" + +#: bmerge.c:410 +#, c-format +msgid "Type '%s' not supported for joining/merging" +msgstr "" + +#: bmerge.c:468 +msgid "Internal error: xlow!=xupp-1 || xlowxuppIn" +msgstr "" + +#: chmatch.c:4 +#, c-format +msgid "x is type '%s' (must be 'character' or NULL)" +msgstr "" + +#: chmatch.c:5 +#, c-format +msgid "table is type '%s' (must be 'character' or NULL)" +msgstr "" + +#: chmatch.c:6 +msgid "Internal error: either chin or chmatchdup should be true not both" +msgstr "" + +#: chmatch.c:30 +#, c-format +msgid "" +"Internal error: CHARSXP '%s' has a negative truelength (%d). Please file an " +"issue on the data.table tracker." +msgstr "" + +#: chmatch.c:60 +#, c-format +msgid "" +"Failed to allocate %lld bytes working memory in chmatchdup: length(table)=%d " +"length(unique(table))=%d" +msgstr "" + +#: cj.c:89 +#, c-format +msgid "Type '%s' not supported by CJ." +msgstr "" + +#: coalesce.c:5 +msgid "Internal error in coalesce.c: input is list(...) at R level" +msgstr "" + +#: coalesce.c:7 +msgid "" +"Internal error in coalesce.c: argument 'inplaceArg' must be TRUE or FALSE" +msgstr "" + +#: coalesce.c:16 +msgid "" +"The first argument is a list, data.table or data.frame. In this case there " +"should be no other arguments provided." +msgstr "" + +#: coalesce.c:32 +#, c-format +msgid "" +"Item 1 is a factor but item %d is not a factor. When factors are involved, " +"all items must be factor." +msgstr "" + +#: coalesce.c:34 +#, c-format +msgid "" +"Item %d is a factor but its levels are not identical to the first item's " +"levels." +msgstr "" + +#: coalesce.c:38 +#, c-format +msgid "" +"Item %d is a factor but item 1 is not a factor. When factors are involved, " +"all items must be factor." +msgstr "" + +#: coalesce.c:41 +#, c-format +msgid "" +"Item %d is type %s but the first item is type %s. Please coerce before " +"coalescing." +msgstr "" + +#: coalesce.c:43 +#, c-format +msgid "Item %d has a different class than item 1." +msgstr "" + +#: coalesce.c:46 +#, c-format +msgid "" +"Item %d is length %d but the first item is length %d. Only singletons are " +"recycled." +msgstr "" + +#: coalesce.c:50 +msgid "coalesce copied first item (inplace=FALSE)\n" +msgstr "" + +#: coalesce.c:166 +#, c-format +msgid "Unsupported type: %s" +msgstr "" + +#: dogroups.c:14 +msgid "Internal error: order not integer vector" +msgstr "" + +#: dogroups.c:15 +msgid "Internal error: starts not integer" +msgstr "" + +#: dogroups.c:16 +msgid "Internal error: lens not integer" +msgstr "" + +#: dogroups.c:18 +msgid "Internal error: jiscols not NULL but o__ has length" +msgstr "" + +#: dogroups.c:19 +msgid "Internal error: xjiscols not NULL but o__ has length" +msgstr "" + +#: dogroups.c:20 +msgid "'env' should be an environment" +msgstr "" + +#: dogroups.c:39 +#, c-format +msgid "" +"Internal error: unsupported size-0 type '%s' in column %d of 'by' should " +"have been caught earlier" +msgstr "" + +#: dogroups.c:43 +#, c-format +msgid "!length(bynames)[%d]==length(groups)[%d]==length(grpcols)[%d]" +msgstr "" + +#: dogroups.c:62 +msgid "row.names attribute of .SD not found" +msgstr "" + +#: dogroups.c:64 +#, c-format +msgid "" +"row.names of .SD isn't integer length 2 with NA as first item; i.e., ." +"set_row_names(). [%s %d %d]" +msgstr "" + +#: dogroups.c:69 +msgid "length(names)!=length(SD)" +msgstr "" + +#: dogroups.c:73 +#, c-format +msgid "" +"Internal error: size-0 type %d in .SD column %d should have been caught " +"earlier" +msgstr "" + +#: dogroups.c:83 +msgid "length(xknames)!=length(xSD)" +msgstr "" + +#: dogroups.c:87 +#, c-format +msgid "" +"Internal error: type %d in .xSD column %d should have been caught by now" +msgstr "" + +#: dogroups.c:91 +#, c-format +msgid "length(iSD)[%d] != length(jiscols)[%d]" +msgstr "" + +#: dogroups.c:92 +#, c-format +msgid "length(xSD)[%d] != length(xjiscols)[%d]" +msgstr "" + +#: dogroups.c:155 dogroups.c:184 +msgid "Internal error. Type of column should have been checked by now" +msgstr "" + +#: dogroups.c:273 +#, c-format +msgid "j evaluates to type '%s'. Must evaluate to atomic vector or list." +msgstr "" + +#: dogroups.c:281 +msgid "" +"All items in j=list(...) should be atomic vectors or lists. If you are " +"trying something like j=list(.SD,newcol=mean(colA)) then use := by group " +"instead (much quicker), or cbind or merge afterwards." +msgstr "" + +#: dogroups.c:291 +msgid "" +"RHS is NULL when grouping :=. Makes no sense to delete a column by group. " +"Perhaps use an empty vector instead." +msgstr "" + +#: dogroups.c:295 +#, c-format +msgid "" +"Supplied %d items to be assigned to group %d of size %d in column '%s'. The " +"RHS length must either be 1 (single values are ok) or match the LHS length " +"exactly. If you wish to 'recycle' the RHS please use rep() explicitly to " +"make this intent clear to readers of your code." +msgstr "" + +#: dogroups.c:304 +msgid "" +"Internal error: Trying to add new column by reference but tl is full; " +"setalloccol should have run first at R level before getting to this point in " +"dogroups" +msgstr "" + +#: dogroups.c:319 +#, c-format +msgid "Group %d column '%s': %s" +msgstr "" + +#: dogroups.c:326 +msgid "j doesn't evaluate to the same number of columns for each group" +msgstr "" + +#: dogroups.c:360 +#, c-format +msgid "" +"Column %d of j's result for the first group is NULL. We rely on the column " +"types of the first result to decide the type expected for the remaining " +"groups (and require consistency). NULL columns are acceptable for later " +"groups (and those are replaced with NA of appropriate type and recycled) but " +"not for the first. Please use a typed empty vector instead, such as " +"integer() or numeric()." +msgstr "" + +#: dogroups.c:363 +msgid "" +"j appears to be a named vector. The same names will likely be created over " +"and over again for each group and slow things down. Try and pass a named " +"list (which data.table optimizes) or an unnamed list() instead.\n" +msgstr "" + +#: dogroups.c:365 +#, c-format +msgid "" +"Column %d of j is a named vector (each item down the rows is named, " +"somehow). Please remove those names for efficiency (to save creating them " +"over and over for each group). They are ignored anyway.\n" +msgstr "" + +#: dogroups.c:373 +msgid "" +"The result of j is a named list. It's very inefficient to create the same " +"names over and over again for each group. When j=list(...), any names are " +"detected, removed and put back after grouping has completed, for efficiency. " +"Using j=transform(), for example, prevents that speedup (consider changing " +"to :=). This message may be upgraded to warning in future.\n" +msgstr "" + +#: dogroups.c:385 +#, c-format +msgid "dogroups: growing from %d to %d rows\n" +msgstr "" + +#: dogroups.c:386 +#, c-format +msgid "dogroups: length(ans)[%d]!=ngrpcols[%d]+njval[%d]" +msgstr "" + +#: dogroups.c:419 +#, c-format +msgid "" +"Item %d of j's result for group %d is zero length. This will be filled with " +"%d NAs to match the longest column in this result. Later groups may have a " +"similar problem but only the first is reported to save filling the warning " +"buffer." +msgstr "" + +#: dogroups.c:426 +#, c-format +msgid "" +"Column %d of result for group %d is type '%s' but expecting type '%s'. " +"Column types must be consistent for each group." +msgstr "" + +#: dogroups.c:428 +#, c-format +msgid "" +"Supplied %d items for column %d of group %d which has %d rows. The RHS " +"length must either be 1 (single values are ok) or match the LHS length " +"exactly. If you wish to 'recycle' the RHS please use rep() explicitly to " +"make this intent clear to readers of your code." +msgstr "" + +#: dogroups.c:443 +#, c-format +msgid "Wrote less rows (%d) than allocated (%d).\n" +msgstr "" + +#: dogroups.c:453 +#, c-format +msgid "Internal error: block 0 [%d] and block 1 [%d] have both run" +msgstr "" + +#: dogroups.c:455 +#, c-format +msgid "" +"\n" +" %s took %.3fs for %d groups\n" +msgstr "" + +#: dogroups.c:457 +#, c-format +msgid " eval(j) took %.3fs for %d calls\n" +msgstr "" + +#: dogroups.c:481 +msgid "growVector passed NULL" +msgstr "" + +#: fastmean.c:39 +msgid "narm should be TRUE or FALSE" +msgstr "" + +#: fastmean.c:45 +#, c-format +msgid "fastmean was passed type %s, not numeric or logical" +msgstr "" + +#: fastmean.c:83 fastmean.c:111 +#, c-format +msgid "Internal error: type '%s' not caught earlier in fastmean" +msgstr "" + +#: fcast.c:80 +#, c-format +msgid "Unsupported column type in fcast val: '%s'" +msgstr "" + +#: fifelse.c:5 +msgid "Argument 'test' must be logical." +msgstr "" + +#: fifelse.c:23 +#, c-format +msgid "" +"'yes' is of type %s but 'no' is of type %s. Please make sure that both " +"arguments have the same type." +msgstr "" + +#: fifelse.c:28 +msgid "" +"'yes' has different class than 'no'. Please make sure that both arguments " +"have the same class." +msgstr "" + +#: fifelse.c:33 +msgid "'yes' and 'no' are both type factor but their levels are different." +msgstr "" + +#: fifelse.c:38 +#, c-format +msgid "Length of 'yes' is %lld but must be 1 or length of 'test' (%lld)." +msgstr "" + +#: fifelse.c:40 +#, c-format +msgid "Length of 'no' is %lld but must be 1 or length of 'test' (%lld)." +msgstr "" + +#: fifelse.c:51 +#, c-format +msgid "Length of 'na' is %lld but must be 1" +msgstr "" + +#: fifelse.c:57 +#, c-format +msgid "" +"'yes' is of type %s but 'na' is of type %s. Please make sure that both " +"arguments have the same type." +msgstr "" + +#: fifelse.c:59 +msgid "" +"'yes' has different class than 'na'. Please make sure that both arguments " +"have the same class." +msgstr "" + +#: fifelse.c:63 +msgid "'yes' and 'na' are both type factor but their levels are different." +msgstr "" + +#: fifelse.c:133 +#, c-format +msgid "Type %s is not supported." +msgstr "" + +#: fmelt.c:18 +msgid "'x' must be an integer" +msgstr "" + +#: fmelt.c:19 +msgid "'n' must be a positive integer" +msgstr "" + +#: fmelt.c:41 +msgid "Argument to 'which' must be logical" +msgstr "" + +#: fmelt.c:70 +msgid "concat: 'vec must be a character vector" +msgstr "" + +#: fmelt.c:71 +msgid "concat: 'idx' must be an integer vector of length >= 0" +msgstr "" + +#: fmelt.c:75 +msgid "" +"concat: 'idx' must take values between 0 and length(vec); 0 <= idx <= " +"length(vec)" +msgstr "" + +#: fmelt.c:102 +#, c-format +msgid "Unknown 'measure.vars' type %s at index %d of list" +msgstr "" + +#: fmelt.c:148 +#, c-format +msgid "" +"id.vars and measure.vars are internally guessed when both are 'NULL'. All " +"non-numeric/integer/logical type columns are considered id.vars, which in " +"this case are columns [%s]. Consider providing at least one of 'id' or " +"'measure' vars in future." +msgstr "" + +#: fmelt.c:154 fmelt.c:219 +#, c-format +msgid "Unknown 'id.vars' type %s, must be character or integer vector" +msgstr "" + +#: fmelt.c:159 fmelt.c:223 +msgid "One or more values in 'id.vars' is invalid." +msgstr "" + +#: fmelt.c:175 +msgid "" +"'measure.vars' is missing. Assigning all columns other than 'id.vars' " +"columns as 'measure.vars'.\n" +msgstr "" + +#: fmelt.c:176 +#, c-format +msgid "Assigned 'measure.vars' are [%s].\n" +msgstr "" + +#: fmelt.c:184 +#, c-format +msgid "" +"Unknown 'measure.vars' type %s, must be character or integer vector/list" +msgstr "" + +#: fmelt.c:193 fmelt.c:239 +msgid "One or more values in 'measure.vars' is invalid." +msgstr "" + +#: fmelt.c:211 +msgid "" +"'id.vars' is missing. Assigning all columns other than 'measure.vars' " +"columns as 'id.vars'.\n" +msgstr "" + +#: fmelt.c:212 +#, c-format +msgid "Assigned 'id.vars' are [%s].\n" +msgstr "" + +#: fmelt.c:231 +#, c-format +msgid "Unknown 'measure.vars' type %s, must be character or integer vector" +msgstr "" + +#: fmelt.c:276 +msgid "" +"When 'measure.vars' is a list, 'value.name' must be a character vector of " +"length =1 or =length(measure.vars)." +msgstr "" + +#: fmelt.c:277 +msgid "" +"When 'measure.vars' is either not specified or a character/integer vector, " +"'value.name' must be a character vector of length =1." +msgstr "" + +#: fmelt.c:280 +msgid "'variable.name' must be a character/integer vector of length=1." +msgstr "" + +#: fmelt.c:329 +msgid "" +"Internal error: combineFactorLevels in fmelt.c expects all-character input" +msgstr "" + +#: fmelt.c:332 +msgid "" +"Internal error: combineFactorLevels in fmelt.c expects a character target to " +"factorize" +msgstr "" + +#: fmelt.c:385 +#, c-format +msgid "" +"'measure.vars' [%s] are not all of the same type. By order of hierarchy, the " +"molten data value column will be of type '%s'. All measure variables not of " +"type '%s' will be coerced too. Check DETAILS in ?melt.data.table for more on " +"coercion.\n" +msgstr "" + +#: fmelt.c:387 +#, c-format +msgid "" +"The molten data value type is a list at item %d. 'na.rm=TRUE' is ignored.\n" +msgstr "" + +#: fmelt.c:490 +#, c-format +msgid "Unknown column type '%s' for column '%s'." +msgstr "" + +#: fmelt.c:514 +#, c-format +msgid "Internal error: fmelt.c:getvarcols %d %d" +msgstr "" + +#: fmelt.c:662 +#, c-format +msgid "Unknown column type '%s' for column '%s' in 'data'" +msgstr "" + +#: fmelt.c:673 +msgid "Input is not of type VECSXP, expected a data.table, data.frame or list" +msgstr "" + +#: fmelt.c:674 +msgid "Argument 'value.factor' should be logical TRUE/FALSE" +msgstr "" + +#: fmelt.c:675 +msgid "Argument 'variable.factor' should be logical TRUE/FALSE" +msgstr "" + +#: fmelt.c:676 +msgid "Argument 'na.rm' should be logical TRUE/FALSE." +msgstr "" + +#: fmelt.c:677 +msgid "Argument 'variable.name' must be a character vector" +msgstr "" + +#: fmelt.c:678 +msgid "Argument 'value.name' must be a character vector" +msgstr "" + +#: fmelt.c:679 +msgid "Argument 'verbose' should be logical TRUE/FALSE" +msgstr "" + +#: fmelt.c:682 +msgid "ncol(data) is 0. Nothing to melt. Returning original data.table." +msgstr "" + +#: fmelt.c:687 +msgid "names(data) is NULL. Please report to data.table-help" +msgstr "" + +#: forder.c:103 +#, c-format +msgid "Failed to realloc thread private group size buffer to %d*4bytes" +msgstr "" + +#: forder.c:117 +#, c-format +msgid "Failed to realloc group size result to %d*4bytes" +msgstr "" + +#: forder.c:260 +#, c-format +msgid "" +"Logical error. counts[0]=%d in cradix but should have been decremented to 0. " +"radix=%d" +msgstr "" + +#: forder.c:275 +msgid "Failed to alloc cradix_counts" +msgstr "" + +#: forder.c:277 +msgid "Failed to alloc cradix_tmp" +msgstr "" + +#: forder.c:288 +#, c-format +msgid "" +"Internal error: ustr isn't empty when starting range_str: ustr_n=%d, " +"ustr_alloc=%d" +msgstr "" + +#: forder.c:289 +msgid "Internal error: ustr_maxlen isn't 0 when starting range_str" +msgstr "" + +#: forder.c:309 +#, c-format +msgid "Unable to realloc %d * %d bytes in range_str" +msgstr "" + +#: forder.c:327 +msgid "Failed to alloc ustr3 when converting strings to UTF8" +msgstr "" + +#: forder.c:345 +msgid "Failed to alloc tl when converting strings to UTF8" +msgstr "" + +#: forder.c:374 +msgid "Must an integer or numeric vector length 1" +msgstr "" + +#: forder.c:375 +msgid "Must be 2, 1 or 0" +msgstr "" + +#: forder.c:409 +msgid "Unknown non-finite value; not NA, NaN, -Inf or +Inf" +msgstr "" + +#: forder.c:431 +msgid "" +"Internal error: input is not either a list of columns, or an atomic vector." +msgstr "" + +#: forder.c:433 +msgid "" +"Internal error: input is an atomic vector (not a list of columns) but by= is " +"not NULL" +msgstr "" + +#: forder.c:435 +msgid "" +"Input is an atomic vector (not a list of columns) but order= is not a length " +"1 integer" +msgstr "" + +#: forder.c:437 +#, c-format +msgid "forder.c received a vector type '%s' length %d\n" +msgstr "" + +#: forder.c:445 +#, c-format +msgid "forder.c received %d rows and %d columns\n" +msgstr "" + +#: forder.c:448 +msgid "Internal error: DT is an empty list() of 0 columns" +msgstr "" + +#: forder.c:450 +#, c-format +msgid "" +"Internal error: DT has %d columns but 'by' is either not integer or is " +"length 0" +msgstr "" + +#: forder.c:452 +#, c-format +msgid "" +"Either order= is not integer or its length (%d) is different to by='s length " +"(%d)" +msgstr "" + +#: forder.c:458 +#, c-format +msgid "internal error: 'by' value %d out of range [1,%d]" +msgstr "" + +#: forder.c:460 +#, c-format +msgid "Column %d is length %d which differs from length of column 1 (%d)\n" +msgstr "" + +#: forder.c:464 +msgid "retGrp must be TRUE or FALSE" +msgstr "" + +#: forder.c:467 +msgid "sort must be TRUE or FALSE" +msgstr "" + +#: forder.c:470 +msgid "At least one of retGrp= or sort= must be TRUE" +msgstr "" + +#: forder.c:472 +msgid "na.last must be logical TRUE, FALSE or NA of length 1" +msgstr "" + +#: forder.c:514 +#, c-format +msgid "Item %d of order (ascending/descending) is %d. Must be +1 or -1." +msgstr "" + +#: forder.c:540 +#, c-format +msgid "" +"\n" +"*** Column %d passed to forder is a date stored as an 8 byte double but no " +"fractions are present. Please consider a 4 byte integer date such as IDate " +"to save space and time.\n" +msgstr "" + +#: forder.c:556 +#, c-format +msgid "Column %d passed to [f]order is type '%s', not yet supported." +msgstr "" + +#: forder.c:705 +msgid "Internal error: column not supported not caught earlier" +msgstr "" + +#: forder.c:713 +#, c-format +msgid "nradix=%d\n" +msgstr "" + +#: forder.c:719 +#, c-format +msgid "" +"Failed to allocate TMP or UGRP or they weren't cache line aligned: nth=%d" +msgstr "" + +#: forder.c:724 +msgid "Could not allocate (very tiny) group size thread buffers" +msgstr "" + +#: forder.c:785 +#, c-format +msgid "Timing block %2d%s = %8.3f %8d\n" +msgstr "" + +#: forder.c:788 +#, c-format +msgid "stat[%03d]==%10zd\n" +msgstr "" + +#: forder.c:1044 +#, c-format +msgid "Failed to allocate parallel counts. my_n=%d, nBatch=%d" +msgstr "" + +#: forder.c:1153 +#, c-format +msgid "Unable to allocate TMP for my_n=%d items in parallel batch counting" +msgstr "" + +#: forder.c:1260 +msgid "" +"is.sorted (R level) and fsorted (C level) only to be used on vectors. If " +"needed on a list/data.table, you'll need the order anyway if not sorted, so " +"use if (length(o<-forder(...))) for efficiency in one step, or equivalent at " +"C level" +msgstr "" + +#: forder.c:1292 +#, c-format +msgid "type '%s' is not yet supported" +msgstr "" + +#: forder.c:1301 +msgid "x must be either NULL or an integer vector" +msgstr "" + +#: forder.c:1303 +msgid "nrow must be integer vector length 1" +msgstr "" + +#: forder.c:1305 +#, c-format +msgid "nrow==%d but must be >=0" +msgstr "" + +#: forder.c:1322 +msgid "x must be type 'double'" +msgstr "" + +#: frank.c:11 +#, c-format +msgid "Internal error. Argument 'x' to Cdt_na is type '%s' not 'list'" +msgstr "" + +#: frank.c:12 +#, c-format +msgid "Internal error. Argument 'cols' to Cdt_na is type '%s' not 'integer'" +msgstr "" + +#: frank.c:16 frank.c:146 subset.c:263 +#, c-format +msgid "Item %d of 'cols' is %d which is outside 1-based range [1,ncol(x)=%d]" +msgstr "" + +#: frank.c:26 frank.c:155 +#, c-format +msgid "" +"Column %d of input list x is length %d, inconsistent with first column of " +"that item which is length %d." +msgstr "" + +#: frank.c:65 frank.c:202 transpose.c:88 +#, c-format +msgid "Unsupported column type '%s'" +msgstr "" + +#: frank.c:83 +msgid "" +"Internal error: invalid ties.method for frankv(), should have been caught " +"before. please report to data.table issue tracker" +msgstr "" + +#: frank.c:130 +#, c-format +msgid "Internal error: unknown ties value in frank: %d" +msgstr "" + +#: frank.c:141 +#, c-format +msgid "Internal error. Argument 'x' to CanyNA is type '%s' not 'list'" +msgstr "" + +#: frank.c:142 +#, c-format +msgid "Internal error. Argument 'cols' to CanyNA is type '%s' not 'integer'" +msgstr "" + +#: fread.c:106 +#, c-format +msgid "" +"Internal error in line %d of fread.c, please report on data.table GitHub: " +msgstr "" + +#: fread.c:149 +#, c-format +msgid "System error %d unmapping view of file\n" +msgstr "" + +#: fread.c:152 +#, c-format +msgid "System errno %d unmapping file: %s\n" +msgstr "" + +#: fread.c:212 +#, c-format +msgid "Internal error: NUMTYPE(%d) > nLetters(%d)" +msgstr "" + +#: fread.c:437 +#, c-format +msgid "Unable to allocate %s of contiguous virtual RAM. %s allocation." +msgstr "" + +#: fread.c:442 +#, c-format +msgid "Avoidable %.3f seconds. %s time to copy.\n" +msgstr "" + +#: fread.c:443 +#, c-format +msgid " File copy in RAM took %.3f seconds.\n" +msgstr "" + +#: fread.c:1095 +msgid "" +"Previous fread() session was not cleaned up properly. Cleaned up ok at the " +"beginning of this fread() call.\n" +msgstr "" + +#: fread.c:1098 +msgid "[01] Check arguments\n" +msgstr "" + +#: fread.c:1105 +#, c-format +msgid " Using %d threads (omp_get_max_threads()=%d, nth=%d)\n" +msgstr "" + +#: fread.c:1113 +msgid "" +"Internal error: NAstrings is itself NULL. When empty it should be pointer to " +"NULL." +msgstr "" + +#: fread.c:1131 +#, c-format +msgid "freadMain: NAstring <<%s>> has whitespace at the beginning or end" +msgstr "" + +#: fread.c:1136 +#, c-format +msgid "" +"freadMain: NAstring <<%s>> is recognized as type boolean, this is not " +"permitted." +msgstr "" + +#: fread.c:1146 +msgid " No NAstrings provided.\n" +msgstr "" + +#: fread.c:1148 +msgid " NAstrings = [" +msgstr "" + +#: fread.c:1151 +msgid "]\n" +msgstr "" + +#: fread.c:1153 +msgid " One or more of the NAstrings looks like a number.\n" +msgstr "" + +#: fread.c:1155 +msgid " None of the NAstrings look like numbers.\n" +msgstr "" + +#: fread.c:1157 +#, c-format +msgid " skip num lines = %llu\n" +msgstr "" + +#: fread.c:1158 +#, c-format +msgid " skip to string = <<%s>>\n" +msgstr "" + +#: fread.c:1159 +#, c-format +msgid " show progress = %d\n" +msgstr "" + +#: fread.c:1160 +#, c-format +msgid " 0/1 column will be read as %s\n" +msgstr "" + +#: fread.c:1168 +#, c-format +msgid "sep == quote ('%c') is not allowed" +msgstr "" + +#: fread.c:1169 +msgid "dec='' not allowed. Should be '.' or ','" +msgstr "" + +#: fread.c:1170 +#, c-format +msgid "sep == dec ('%c') is not allowed" +msgstr "" + +#: fread.c:1171 +#, c-format +msgid "quote == dec ('%c') is not allowed" +msgstr "" + +#: fread.c:1188 +msgid "[02] Opening the file\n" +msgstr "" + +#: fread.c:1191 +msgid "" +" `input` argument is provided rather than a file name, interpreting as raw " +"text to read\n" +msgstr "" + +#: fread.c:1195 +msgid "Internal error: last byte of character input isn't \\0" +msgstr "" + +#: fread.c:1198 +#, c-format +msgid " Opening file %s\n" +msgstr "" + +#: fread.c:1202 +#, c-format +msgid "file not found: %s" +msgstr "" + +#: fread.c:1206 +#, c-format +msgid "Opened file ok but couldn't obtain its size: %s" +msgstr "" + +#: fread.c:1209 fread.c:1237 +#, c-format +msgid "File is empty: %s" +msgstr "" + +#: fread.c:1210 fread.c:1238 +#, c-format +msgid " File opened, size = %s.\n" +msgstr "" + +#: fread.c:1227 +#, c-format +msgid "File not found: %s" +msgstr "" + +#: fread.c:1233 +#, c-format +msgid "Unable to open file after %d attempts (error %d): %s" +msgstr "" + +#: fread.c:1235 +#, c-format +msgid "GetFileSizeEx failed (returned 0) on file: %s" +msgstr "" + +#: fread.c:1240 +#, c-format +msgid "This is Windows, CreateFileMapping returned error %d for file %s" +msgstr "" + +#: fread.c:1247 +#, c-format +msgid "" +"Opened %s file ok but could not memory map it. This is a %dbit process. %s." +msgstr "" + +#: fread.c:1248 +msgid "Please upgrade to 64bit" +msgstr "" + +#: fread.c:1248 +msgid "There is probably not enough contiguous virtual memory available" +msgstr "" + +#: fread.c:1251 +msgid " Memory mapped ok\n" +msgstr "" + +#: fread.c:1253 +msgid "" +"Internal error: Neither `input` nor `filename` are given, nothing to read." +msgstr "" + +#: fread.c:1270 +msgid "[03] Detect and skip BOM\n" +msgstr "" + +#: fread.c:1274 +msgid "" +" UTF-8 byte order mark EF BB BF found at the start of the file and " +"skipped.\n" +msgstr "" + +#: fread.c:1279 +msgid "" +"GB-18030 encoding detected, however fread() is unable to decode it. Some " +"character fields may be garbled.\n" +msgstr "" + +#: fread.c:1282 +msgid "" +"File is encoded in UTF-16, this encoding is not supported by fread(). Please " +"recode the file to UTF-8." +msgstr "" + +#: fread.c:1287 +#, c-format +msgid " Last byte(s) of input found to be %s and removed.\n" +msgstr "" + +#: fread.c:1290 +msgid "Input is empty or only contains BOM or terminal control characters" +msgstr "" + +#: fread.c:1297 +msgid "[04] Arrange mmap to be \\0 terminated\n" +msgstr "" + +#: fread.c:1304 +msgid "" +" No \\n exists in the file at all, so single \\r (if any) will be taken as " +"one line ending. This is unusual but will happen normally when there is no " +"\\r either; e.g. a single line missing its end of line.\n" +msgstr "" + +#: fread.c:1305 +msgid "" +" \\n has been found in the input and different lines can end with different " +"line endings (e.g. mixed \\n and \\r\\n in one file). This is common and " +"ideal.\n" +msgstr "" + +#: fread.c:1329 +#, c-format +msgid "" +" File ends abruptly with '%c'. Final end-of-line is missing. Using cow page " +"to write 0 to the last byte.\n" +msgstr "" + +#: fread.c:1336 +#, c-format +msgid " File ends abruptly with '%c'. Copying file in RAM. %s copy.\n" +msgstr "" + +#: fread.c:1370 +msgid "[05] Skipping initial rows if needed\n" +msgstr "" + +#: fread.c:1376 +#, c-format +msgid "" +"skip='%s' not found in input (it is case sensitive and literal; i.e., no " +"patterns, wildcards or regex)" +msgstr "" + +#: fread.c:1382 +#, c-format +msgid "" +"Found skip='%s' on line %llu. Taking this to be header row or first row of " +"data.\n" +msgstr "" + +#: fread.c:1395 +#, c-format +msgid " Skipped to line %llu in the file" +msgstr "" + +#: fread.c:1396 +#, c-format +msgid "skip=%llu but the input only has %llu line%s" +msgstr "" + +#: fread.c:1405 +msgid "" +"Input is either empty, fully whitespace, or skip has been set after the last " +"non-whitespace." +msgstr "" + +#: fread.c:1407 +#, c-format +msgid " Moved forward to first non-blank line (%d)\n" +msgstr "" + +#: fread.c:1408 +#, c-format +msgid " Positioned on line %d starting: <<%s>>\n" +msgstr "" + +#: fread.c:1426 +msgid "[06] Detect separator, quoting rule, and ncolumns\n" +msgstr "" + +#: fread.c:1430 +msgid " sep='\\n' passed in meaning read lines as single character column\n" +msgstr "" + +#: fread.c:1449 +msgid " Detecting sep automatically ...\n" +msgstr "" + +#: fread.c:1456 +#, c-format +msgid " Using supplied sep '%s'\n" +msgstr "" + +#: fread.c:1490 +#, c-format +msgid " with %d fields using quote rule %d\n" +msgstr "" + +#: fread.c:1540 +#, c-format +msgid " with %d lines of %d fields using quote rule %d\n" +msgstr "" + +#: fread.c:1547 +msgid "" +" No sep and quote rule found a block of 2x2 or greater. Single column " +"input.\n" +msgstr "" + +#: fread.c:1563 +msgid "" +"Single column input contains invalid quotes. Self healing only effective " +"when ncol>1" +msgstr "" + +#: fread.c:1568 +#, c-format +msgid "" +"Found and resolved improper quoting in first %d rows. If the fields are not " +"quoted (e.g. field separator does not appear within any field), try quote=" +"\")\" to avoid this warning." +msgstr "" + +#: fread.c:1584 +#, c-format +msgid "" +"Internal error: ncol==%d line==%d after detecting sep, ncol and first line" +msgstr "" + +#: fread.c:1587 +#, c-format +msgid "Internal error: first line has field count %d but expecting %d" +msgstr "" + +#: fread.c:1589 +#, c-format +msgid "" +" Detected %d columns on line %d. This line is either column names or first " +"data row. Line starts as: <<%s>>\n" +msgstr "" + +#: fread.c:1591 +#, c-format +msgid " Quote rule picked = %d\n" +msgstr "" + +#: fread.c:1592 +#, c-format +msgid " fill=%s and the most number of columns found is %d\n" +msgstr "" + +#: fread.c:1598 +msgid "" +"This file is very unusual: it's one single column, ends with 2 or more end-" +"of-line (representing several NA at the end), and is a multiple of 4096, too." +msgstr "" + +#: fread.c:1599 +#, c-format +msgid " Copying file in RAM. %s\n" +msgstr "" + +#: fread.c:1605 +msgid "" +" 1-column file ends with 2 or more end-of-line. Restoring last eol using " +"extra byte in cow page.\n" +msgstr "" + +#: fread.c:1624 +msgid "" +"[07] Detect column types, good nrow estimate and whether first row is column " +"names\n" +msgstr "" + +#: fread.c:1625 +#, c-format +msgid " 'header' changed by user from 'auto' to %s\n" +msgstr "" + +#: fread.c:1629 +#, c-format +msgid "Failed to allocate 2 x %d bytes for type and tmpType: %s" +msgstr "" + +#: fread.c:1650 +#, c-format +msgid " Number of sampling jump points = %d because " +msgstr "" + +#: fread.c:1651 +#, c-format +msgid "nrow limit (%llu) supplied\n" +msgstr "" + +#: fread.c:1652 +msgid "jump0size==0\n" +msgstr "" + +#: fread.c:1653 +#, c-format +msgid "(%llu bytes from row 1 to eof) / (2 * %llu jump0size) == %llu\n" +msgstr "" + +#: fread.c:1691 +#, c-format +msgid "" +" A line with too-%s fields (%d/%d) was found on line %d of sample jump %d. " +"%s\n" +msgstr "" + +#: fread.c:1718 +#, c-format +msgid " Type codes (jump %03d) : %s Quote rule %d\n" +msgstr "" + +#: fread.c:1731 +#, c-format +msgid "" +" 'header' determined to be true due to column %d containing a string on row " +"1 and a lower type (%s) in the rest of the %d sample rows\n" +msgstr "" + +#: fread.c:1743 +msgid "" +"Internal error: row before first data row has the same number of fields but " +"we're not using it." +msgstr "" + +#: fread.c:1744 +msgid "" +"Internal error: ch!=pos after counting fields in the line before the first " +"data row." +msgstr "" + +#: fread.c:1745 +#, c-format +msgid "" +"Types in 1st data row match types in 2nd data row but previous row has %d " +"fields. Taking previous row as column names." +msgstr "" + +#: fread.c:1748 +#, c-format +msgid "" +"Detected %d column names but the data has %d columns (i.e. invalid file). " +"Added %d extra default column name%s\n" +msgstr "" + +#: fread.c:1751 +msgid "" +"Internal error: fill=true but there is a previous row which should already " +"have been filled." +msgstr "" + +#: fread.c:1752 +#, c-format +msgid "" +"Detected %d column names but the data has %d columns. Filling rows " +"automatically. Set fill=TRUE explicitly to avoid this warning.\n" +msgstr "" + +#: fread.c:1756 +#, c-format +msgid "Failed to realloc 2 x %d bytes for type and tmpType: %s" +msgstr "" + +#: fread.c:1776 +#, c-format +msgid "" +" 'header' determined to be %s because there are%s number fields in the " +"first and only row\n" +msgstr "" + +#: fread.c:1779 +msgid "" +" 'header' determined to be true because all columns are type string and a " +"better guess is not possible\n" +msgstr "" + +#: fread.c:1781 +msgid "" +" 'header' determined to be false because there are some number columns and " +"those columns do not have a string field at the top of them\n" +msgstr "" + +#: fread.c:1797 +#, c-format +msgid " Type codes (first row) : %s Quote rule %d\n" +msgstr "" + +#: fread.c:1806 +#, c-format +msgid "" +" All rows were sampled since file is small so we know nrow=%llu exactly\n" +msgstr "" + +#: fread.c:1818 fread.c:1825 +msgid " =====\n" +msgstr "" + +#: fread.c:1819 +#, c-format +msgid "" +" Sampled %llu rows (handled \\n inside quoted fields) at %d jump points\n" +msgstr "" + +#: fread.c:1820 +#, c-format +msgid " Bytes from first data row on line %d to the end of last row: %llu\n" +msgstr "" + +#: fread.c:1821 +#, c-format +msgid " Line length: mean=%.2f sd=%.2f min=%d max=%d\n" +msgstr "" + +#: fread.c:1822 +#, c-format +msgid " Estimated number of rows: %llu / %.2f = %llu\n" +msgstr "" + +#: fread.c:1823 +#, c-format +msgid "" +" Initial alloc = %llu rows (%llu + %d%%) using bytes/max(mean-2*sd,min) " +"clamped between [1.1*estn, 2.0*estn]\n" +msgstr "" + +#: fread.c:1827 +#, c-format +msgid "Internal error: sampleLines(%llu) > allocnrow(%llu)" +msgstr "" + +#: fread.c:1831 +#, c-format +msgid " Alloc limited to lower nrows=%llu passed in.\n" +msgstr "" + +#: fread.c:1843 +msgid "[08] Assign column names\n" +msgstr "" + +#: fread.c:1851 +#, c-format +msgid "Unable to allocate %d*%d bytes for column name pointers: %s" +msgstr "" + +#: fread.c:1873 +#, c-format +msgid "Internal error: reading colnames ending on '%c'" +msgstr "" + +#: fread.c:1891 +msgid "[09] Apply user overrides on column types\n" +msgstr "" + +#: fread.c:1895 +msgid " Cancelled by user: userOverride() returned false." +msgstr "" + +#: fread.c:1905 +#, c-format +msgid "Failed to allocate %d bytes for size array: %s" +msgstr "" + +#: fread.c:1912 +#, c-format +msgid "" +"Attempt to override column %d <<%.*s>> of inherent type '%s' down to '%s' " +"ignored. Only overrides to a higher type are currently supported. If this " +"was intended, please coerce to the lower type afterwards." +msgstr "" + +#: fread.c:1926 +#, c-format +msgid " After %d type and %d drop user overrides : %s\n" +msgstr "" + +#: fread.c:1934 +msgid "[10] Allocate memory for the datatable\n" +msgstr "" + +#: fread.c:1935 +#, c-format +msgid " Allocating %d column slots (%d - %d dropped) with %llu rows\n" +msgstr "" + +#: fread.c:1989 +#, c-format +msgid "Buffer size %lld is too large\n" +msgstr "" + +#: fread.c:1992 +msgid "[11] Read the data\n" +msgstr "" + +#: fread.c:1995 +#, c-format +msgid " jumps=[%d..%d), chunk_size=%llu, total_size=%llu\n" +msgstr "" + +#: fread.c:2215 +#, c-format +msgid "" +"Column %d (\"%.*s\") bumped from '%s' to '%s' due to <<%.*s>> on row %llu\n" +msgstr "" + +#: fread.c:2330 fread.c:2465 freadR.c:660 +#, c-format +msgid "%s" +msgstr "" + +#: fread.c:2337 +#, c-format +msgid "" +" Too few rows allocated. Allocating additional %llu rows (now nrows=%llu) " +"and continue reading from jump %d\n" +msgstr "" + +#: fread.c:2344 +#, c-format +msgid " Restarting team from jump %d. nSwept==%d quoteRule==%d\n" +msgstr "" + +#: fread.c:2364 +#, c-format +msgid " %d out-of-sample type bumps: %s\n" +msgstr "" + +#: fread.c:2400 +#, c-format +msgid "" +"Read %llu rows x %d columns from %s file in %02d:%06.3f wall clock time\n" +msgstr "" + +#: fread.c:2407 +msgid "[12] Finalizing the datatable\n" +msgstr "" + +#: fread.c:2408 +msgid " Type counts:\n" +msgstr "" + +#: fread.c:2410 +#, c-format +msgid "%10d : %-9s '%c'\n" +msgstr "" + +#: fread.c:2426 +#, c-format +msgid "Discarded single-line footer: <<%s>>" +msgstr "" + +#: fread.c:2431 +#, c-format +msgid "" +"Stopped early on line %llu. Expected %d fields but found %d. Consider " +"fill=TRUE and comment.char=. First discarded non-empty line: <<%s>>" +msgstr "" + +#: fread.c:2437 +#, c-format +msgid "" +"Found and resolved improper quoting out-of-sample. First healed line %llu: <<" +"%s>>. If the fields are not quoted (e.g. field separator does not appear " +"within any field), try quote=\")\" to avoid this warning." +msgstr "" + +#: fread.c:2441 +msgid "=============================\n" +msgstr "" + +#: fread.c:2443 +#, c-format +msgid "%8.3fs (%3.0f%%) Memory map %.3fGB file\n" +msgstr "" + +#: fread.c:2444 +#, c-format +msgid "%8.3fs (%3.0f%%) sep=" +msgstr "" + +#: fread.c:2446 +#, c-format +msgid " ncol=%d and header detection\n" +msgstr "" + +#: fread.c:2447 +#, c-format +msgid "%8.3fs (%3.0f%%) Column type detection using %llu sample rows\n" +msgstr "" + +#: fread.c:2449 +#, c-format +msgid "" +"%8.3fs (%3.0f%%) Allocation of %llu rows x %d cols (%.3fGB) of which %llu " +"(%3.0f%%) rows used\n" +msgstr "" + +#: fread.c:2453 +#, c-format +msgid "" +"%8.3fs (%3.0f%%) Reading %d chunks (%d swept) of %.3fMB (each chunk %d rows) " +"using %d threads\n" +msgstr "" + +#: fread.c:2455 +#, c-format +msgid "" +" + %8.3fs (%3.0f%%) Parse to row-major thread buffers (grown %d times)\n" +msgstr "" + +#: fread.c:2456 +#, c-format +msgid " + %8.3fs (%3.0f%%) Transpose\n" +msgstr "" + +#: fread.c:2457 +#, c-format +msgid " + %8.3fs (%3.0f%%) Waiting\n" +msgstr "" + +#: fread.c:2458 +#, c-format +msgid "" +"%8.3fs (%3.0f%%) Rereading %d columns due to out-of-sample type exceptions\n" +msgstr "" + +#: fread.c:2460 +#, c-format +msgid "%8.3fs Total\n" +msgstr "" + +#: freadR.c:84 +msgid "" +"Internal error: freadR input not a single character string: a filename or " +"the data itself. Should have been caught at R level." +msgstr "" + +#: freadR.c:92 +msgid "" +"Input contains a \\n or is \")\". Taking this to be text input (not a " +"filename)\n" +msgstr "" + +#: freadR.c:95 +msgid "Input contains no \\n. Taking this to be a filename to open\n" +msgstr "" + +#: freadR.c:101 +msgid "" +"Internal error: freadR sep not a single character. R level catches this." +msgstr "" + +#: freadR.c:105 +msgid "" +"Internal error: freadR dec not a single character. R level catches this." +msgstr "" + +#: freadR.c:112 +msgid "quote= must be a single character, blank \")\", or FALSE" +msgstr "" + +#: freadR.c:137 +msgid "Internal error: skip not integer or string in freadR.c" +msgstr "" + +#: freadR.c:140 +#, c-format +msgid "Internal error: NAstringsArg is type '%s'. R level catches this" +msgstr "" + +#: freadR.c:153 +#, c-format +msgid "nThread(%d)<1" +msgstr "" + +#: freadR.c:160 +msgid "'integer64' must be a single character string" +msgstr "" + +#: freadR.c:168 +#, c-format +msgid "" +"Invalid value integer64='%s'. Must be 'integer64', 'character', 'double' or " +"'numeric'" +msgstr "" + +#: freadR.c:176 +msgid "Use either select= or drop= but not both." +msgstr "" + +#: freadR.c:179 +msgid "" +"select= is type list for specifying types in select=, but colClasses= has " +"been provided as well. Please remove colClasses=." +msgstr "" + +#: freadR.c:181 +msgid "" +"select= is type list but has no names; expecting list(type1=cols1, " +"type2=cols2, ...)" +msgstr "" + +#: freadR.c:188 +msgid "" +"select= is a named vector specifying the columns to select and their types, " +"but colClasses= has been provided as well. Please remove colClasses=." +msgstr "" + +#: freadR.c:196 freadR.c:346 +msgid "colClasses is type list but has no names" +msgstr "" + +#: freadR.c:206 +#, c-format +msgid "encoding='%s' invalid. Must be 'unknown', 'Latin-1' or 'UTF-8'" +msgstr "" + +#: freadR.c:229 +#, c-format +msgid "Column name '%s' (%s) not found" +msgstr "" + +#: freadR.c:231 +#, c-format +msgid "%s is NA" +msgstr "" + +#: freadR.c:233 +#, c-format +msgid "%s is %d which is out of range [1,ncol=%d]" +msgstr "" + +#: freadR.c:247 +msgid "Internal error: typeSize[CT_BOOL8_N] != 1" +msgstr "" + +#: freadR.c:248 +msgid "Internal error: typeSize[CT_STRING] != 1" +msgstr "" + +#: freadR.c:282 +#, c-format +msgid "" +"Column name '%s' not found in column name header (case sensitive), skipping." +msgstr "" + +#: freadR.c:292 +#, c-format +msgid "" +"Column number %d (select[%d]) is negative but should be in the range [1,ncol=" +"%d]. Consider drop= for column exclusion." +msgstr "" + +#: freadR.c:293 +#, c-format +msgid "" +"select = 0 (select[%d]) has no meaning. All values of select should be in " +"the range [1,ncol=%d]." +msgstr "" + +#: freadR.c:294 +#, c-format +msgid "" +"Column number %d (select[%d]) is too large for this table, which only has %d " +"columns." +msgstr "" + +#: freadR.c:295 +#, c-format +msgid "Column number %d ('%s') has been selected twice by select=" +msgstr "" + +#: freadR.c:313 +msgid "" +"colClasses='NULL' is not permitted; i.e. to drop all columns and load nothing" +msgstr "" + +#: freadR.c:318 +#, c-format +msgid "" +"colClasses= is an unnamed vector of types, length %d, but there are %d " +"columns in the input. To specify types for a subset of columns, you can use " +msgstr "" + +#: freadR.c:319 +msgid "" +"a named vector, list format, or specify types using select= instead of " +"colClasses=. Please see examples in ?fread." +msgstr "" + +#: freadR.c:329 +msgid "Internal error: selectInts is NULL but selectColClasses is true" +msgstr "" + +#: freadR.c:330 +msgid "" +"Internal error: length(selectSxp)!=length(colClassesSxp) but " +"selectColClasses is true" +msgstr "" + +#: freadR.c:344 +#, c-format +msgid "colClasses is type '%s' but should be list or character" +msgstr "" + +#: freadR.c:368 +#, c-format +msgid "Column name '%s' (colClasses[[%d]][%d]) not found" +msgstr "" + +#: freadR.c:370 +#, c-format +msgid "colClasses[[%d]][%d] is NA" +msgstr "" + +#: freadR.c:374 +#, c-format +msgid "" +"Column %d ('%s') appears more than once in colClasses. The second time is " +"colClasses[[%d]][%d]." +msgstr "" + +#: freadR.c:381 +#, c-format +msgid "Column number %d (colClasses[[%d]][%d]) is out of range [1,ncol=%d]" +msgstr "" + +#: freadR.c:583 +#, c-format +msgid "Field size is 1 but the field is of type %d\n" +msgstr "" + +#: freadR.c:592 +#, c-format +msgid "Internal error: unexpected field of size %d\n" +msgstr "" + +#: froll.c:18 froll.c:227 froll.c:411 +#, c-format +msgid "%s: window width longer than input vector, returning all NA vector\n" +msgstr "" + +#: froll.c:36 froll.c:244 froll.c:460 +#, c-format +msgid "%s: align %d, shift answer by %d\n" +msgstr "" + +#: froll.c:43 froll.c:251 frolladaptive.c:23 frolladaptive.c:218 +#, c-format +msgid "%s: processing algo %u took %.3fs\n" +msgstr "" + +#: froll.c:52 froll.c:255 +#, c-format +msgid "%s: running for input length %llu, window %d, hasna %d, narm %d\n" +msgstr "" + +#: froll.c:72 froll.c:82 froll.c:173 froll.c:275 froll.c:285 froll.c:366 +#: frolladaptive.c:62 frolladaptive.c:151 frolladaptive.c:251 +#: frolladaptive.c:330 +#, c-format +msgid "" +"%s: hasNA=FALSE used but NA (or other non-finite) value(s) are present in " +"input, use default hasNA=NA to avoid this warning" +msgstr "" + +#: froll.c:75 froll.c:177 froll.c:278 froll.c:370 frolladaptive.c:65 +#: frolladaptive.c:155 frolladaptive.c:254 frolladaptive.c:334 +#, c-format +msgid "" +"%s: NA (or other non-finite) value(s) are present in input, re-running with " +"extra care for NAs\n" +msgstr "" + +#: froll.c:85 froll.c:288 +#, c-format +msgid "" +"%s: NA (or other non-finite) value(s) are present in input, skip non-NA " +"attempt and run with extra care for NAs\n" +msgstr "" + +#: froll.c:141 froll.c:339 +#, c-format +msgid "" +"%s: running in parallel for input length %llu, window %d, hasna %d, narm %d\n" +msgstr "" + +#: froll.c:179 froll.c:372 frolladaptive.c:157 frolladaptive.c:336 +#, c-format +msgid "" +"%s: NA (or other non-finite) value(s) are present in input, na.rm was FALSE " +"so in 'exact' implementation NAs were handled already, no need to re-run\n" +msgstr "" + +#: froll.c:428 +#, c-format +msgid "%s: results from provided FUN are not length 1" +msgstr "" + +#: froll.c:435 +#, c-format +msgid "" +"%s: results from provided FUN are not of type double, coercion from integer " +"or logical will be applied on each iteration\n" +msgstr "" + +#: froll.c:438 +#, c-format +msgid "%s: results from provided FUN are not of type double" +msgstr "" + +#: froll.c:467 +#, c-format +msgid "%s: took %.3fs\n" +msgstr "" + +#: frollR.c:15 +msgid "x must be of type numeric or logical" +msgstr "" + +#: frollR.c:26 +msgid "x must be list, data.frame or data.table of numeric or logical types" +msgstr "" + +#: frollR.c:47 frollR.c:264 +msgid "n must be non 0 length" +msgstr "" + +#: frollR.c:50 +msgid "adaptive must be TRUE or FALSE" +msgstr "" + +#: frollR.c:58 +msgid "n must be integer, list is accepted for adaptive TRUE" +msgstr "" + +#: frollR.c:65 frollR.c:256 frollR.c:259 +msgid "n must be integer" +msgstr "" + +#: frollR.c:72 +msgid "n must be positive integer values (> 0)" +msgstr "" + +#: frollR.c:81 frollR.c:93 +msgid "n must be integer vector or list of integer vectors" +msgstr "" + +#: frollR.c:104 gsumm.c:342 gsumm.c:577 gsumm.c:686 gsumm.c:805 gsumm.c:950 +#: gsumm.c:1261 gsumm.c:1402 uniqlist.c:350 +msgid "na.rm must be TRUE or FALSE" +msgstr "" + +#: frollR.c:107 +msgid "hasNA must be TRUE, FALSE or NA" +msgstr "" + +#: frollR.c:109 +msgid "" +"using hasNA FALSE and na.rm TRUE does not make sense, if you know there are " +"NA values use hasNA TRUE, otherwise leave it as default NA" +msgstr "" + +#: frollR.c:119 frollR.c:275 +msgid "" +"Internal error: invalid align argument in rolling function, should have been " +"caught before. please report to data.table issue tracker." +msgstr "" + +#: frollR.c:122 +msgid "" +"using adaptive TRUE and align argument different than 'right' is not " +"implemented" +msgstr "" + +#: frollR.c:126 frollR.c:297 types.c:64 +#, c-format +msgid "%s: allocating memory for results %dx%d\n" +msgstr "" + +#: frollR.c:135 +msgid "" +"adaptive rolling function can only process 'x' having equal length of " +"elements, like data.table or data.frame; If you want to call rolling " +"function on list having variable length of elements call it for each field " +"separately" +msgstr "" + +#: frollR.c:137 +msgid "" +"length of integer vector(s) provided as list to 'n' argument must be equal " +"to number of observations provided in 'x'" +msgstr "" + +#: frollR.c:151 +msgid "" +"Internal error: invalid fun argument in rolling function, should have been " +"caught before. please report to data.table issue tracker." +msgstr "" + +#: frollR.c:155 frollR.c:279 nafill.c:136 shift.c:21 +msgid "fill must be a vector of length 1" +msgstr "" + +#: frollR.c:169 frollR.c:292 +msgid "fill must be numeric" +msgstr "" + +#: frollR.c:185 +msgid "" +"Internal error: invalid algo argument in rolling function, should have been " +"caught before. please report to data.table issue tracker." +msgstr "" + +#: frollR.c:190 +#, c-format +msgid "Internal error: badaptive=%d but ik is not integer" +msgstr "" + +#: frollR.c:198 +#, c-format +msgid "" +"%s: %d column(s) and %d window(s), if product > 1 then entering parallel " +"execution\n" +msgstr "" + +#: frollR.c:200 +#, c-format +msgid "" +"%s: %d column(s) and %d window(s), not entering parallel execution here " +"because algo='exact' will compute results in parallel\n" +msgstr "" + +#: frollR.c:219 +#, c-format +msgid "Internal error: Unknown sfun value in froll: %d" +msgstr "" + +#: frollR.c:227 frollR.c:328 +#, c-format +msgid "%s: processing of %d column(s) and %d window(s) took %.3fs\n" +msgstr "" + +#: frollR.c:238 +msgid "internal error: 'fun' must be a function" +msgstr "" + +#: frollR.c:240 +msgid "internal error: 'rho' should be an environment" +msgstr "" + +#: frolladaptive.c:33 frolladaptive.c:222 +#, c-format +msgid "%s: running for input length %llu, hasna %d, narm %d\n" +msgstr "" + +#: frolladaptive.c:39 frolladaptive.c:228 +#, c-format +msgid "%s: Unable to allocate memory for cumsum" +msgstr "" + +#: frolladaptive.c:75 frolladaptive.c:264 +#, c-format +msgid "%s: Unable to allocate memory for cum NA counter" +msgstr "" + +#: frolladaptive.c:118 frolladaptive.c:302 +#, c-format +msgid "%s: running in parallel for input length %llu, hasna %d, narm %d\n" +msgstr "" + +#: fsort.c:111 +msgid "x must be a vector of type 'double' currently" +msgstr "" + +#: fsort.c:122 +#, c-format +msgid "nth=%d, nBatch=%d\n" +msgstr "" + +#: fsort.c:156 +#, c-format +msgid "Range = [%g,%g]\n" +msgstr "" + +#: fsort.c:157 +msgid "Cannot yet handle negatives." +msgstr "" + +#: fsort.c:170 +#, c-format +msgid "maxBit=%d; MSBNbits=%d; shift=%d; MSBsize=%d\n" +msgstr "" + +#: fsort.c:173 +msgid "Unable to allocate working memory" +msgstr "" + +#: fsort.c:177 +#, c-format +msgid "" +"counts is %dMB (%d pages per nBatch=%d, batchSize=%lld, lastBatchSize=%lld)\n" +msgstr "" + +#: fsort.c:230 +msgid "Internal error: counts[nBatch-1][MSBsize-1] != length(x)" +msgstr "" + +#: fsort.c:246 +msgid "Top 5 MSB counts: " +msgstr "" + +#: fsort.c:246 +#, c-format +msgid "%lld " +msgstr "" + +#: fsort.c:246 fwrite.c:692 fwrite.c:779 fwrite.c:890 fwrite.c:934 +msgid "\n" +msgstr "" + +#: fsort.c:247 +#, c-format +msgid "Reduced MSBsize from %d to " +msgstr "" + +#: fsort.c:251 +#, c-format +msgid "%d by excluding 0 and 1 counts\n" +msgstr "" + +#: fsort.c:308 +#, c-format +msgid "%d: %.3f (%4.1f%%)\n" +msgstr "" + +#: fwrite.c:603 +#, c-format +msgid "buffMB=%d outside [1,1024]" +msgstr "" + +#: fwrite.c:610 +#, c-format +msgid "" +"eol must be 1 or more bytes (usually either \\n or \\r\\n) but is length %d" +msgstr "" + +#: fwrite.c:613 +msgid "Column writers: " +msgstr "" + +#: fwrite.c:615 fwrite.c:617 fwrite.c:619 +#, c-format +msgid "%d " +msgstr "" + +#: fwrite.c:618 +msgid "... " +msgstr "" + +#: fwrite.c:621 +#, c-format +msgid "" +"\n" +"args.doRowNames=%d args.rowNames=%d doQuote=%d args.nrow=%d args.ncol=%d " +"eolLen=%d\n" +msgstr "" + +#: fwrite.c:654 +#, c-format +msgid "Internal error: type %d has no max length method implemented" +msgstr "" + +#: fwrite.c:661 +#, c-format +msgid "maxLineLen=%zd. Found in %.3fs\n" +msgstr "" + +#: fwrite.c:681 +#, c-format +msgid "" +"%s: '%s'. Failed to open existing file for writing. Do you have write " +"permission to it? Is this Windows and does another process such as Excel " +"have it open?" +msgstr "" + +#: fwrite.c:682 +#, c-format +msgid "" +"%s: '%s'. Unable to create new file for writing (it does not exist already). " +"Do you have permission to write here, is there space on the disk and does " +"the path exist?" +msgstr "" + +#: fwrite.c:690 +#, c-format +msgid "Writing bom (%s), yaml (%d characters) and column names (%s) ... " +msgstr "" + +#: fwrite.c:703 +#, c-format +msgid "Unable to allocate %d MiB for header: %s" +msgstr "" + +#: fwrite.c:731 fwrite.c:793 +msgid "Can't allocate gzip stream structure" +msgstr "" + +#: fwrite.c:737 +#, c-format +msgid "Unable to allocate %d MiB for zbuffer: %s" +msgstr "" + +#: fwrite.c:752 +#, c-format +msgid "Compress gzip error: %d" +msgstr "" + +#: fwrite.c:753 fwrite.c:761 fwrite.c:940 fwrite.c:949 +#, c-format +msgid "%s: '%s'" +msgstr "" + +#: fwrite.c:758 +#, c-format +msgid "done in %.3fs\n" +msgstr "" + +#: fwrite.c:760 +msgid "No data rows present (nrow==0)\n" +msgstr "" + +#: fwrite.c:777 +#, c-format +msgid "" +"Writing %d rows in %d batches of %d rows (each buffer size %dMB, " +"showProgress=%d, nth=%d) ... " +msgstr "" + +#: fwrite.c:946 +#, c-format +msgid "" +"Error %d: one or more threads failed to allocate buffers or there was a " +"compression error." +msgstr "" + +#: fwrite.c:947 +msgid "" +" Please try again with verbose=TRUE and try searching online for this error " +"message.\n" +msgstr "" + +#: fwriteR.c:41 +msgid "Internal error: col passed to getMaxCategLen is missing levels" +msgstr "" + +#: fwriteR.c:75 +msgid "Internal error: getMaxListItemLen should have caught this up front." +msgstr "" + +#: fwriteR.c:98 +#, c-format +msgid "" +"Row %d of list column is type '%s' - not yet implemented. fwrite() can write " +"list columns containing items which are atomic vectors of type logical, " +"integer, integer64, double, complex and character." +msgstr "" + +#: fwriteR.c:103 +#, c-format +msgid "" +"Internal error: row %d of list column has no max length method implemented" +msgstr "" + +#: fwriteR.c:170 +msgid "" +"fwrite must be passed an object of type list; e.g. data.frame, data.table" +msgstr "" + +#: fwriteR.c:179 +msgid "fwrite was passed an empty list of no columns. Nothing to write." +msgstr "" + +#: fwriteR.c:234 +#, c-format +msgid "Column %d's length (%d) is not the same as column 1's length (%d)" +msgstr "" + +#: fwriteR.c:237 +#, c-format +msgid "Column %d's type is '%s' - not yet implemented in fwrite." +msgstr "" + +#: fwriteR.c:262 +msgid "" +"No list columns are present. Setting sep2='' otherwise quote='auto' would " +"quote fields containing sep2.\n" +msgstr "" + +#: fwriteR.c:266 +#, c-format +msgid "" +"If quote='auto', fields will be quoted if the field contains either sep " +"('%c') or sep2 ('%c') because column %d is a list column.\n" +msgstr "" + +#: fwriteR.c:270 +#, c-format +msgid "" +"sep ('%c'), sep2 ('%c') and dec ('%c') must all be different. Column %d is a " +"list column." +msgstr "" + +#: gsumm.c:43 +msgid "env is not an environment" +msgstr "" + +#: gsumm.c:45 +msgid "o is not an integer vector" +msgstr "" + +#: gsumm.c:46 +msgid "f is not an integer vector" +msgstr "" + +#: gsumm.c:47 +msgid "l is not an integer vector" +msgstr "" + +#: gsumm.c:56 +msgid "irowsArg is neither an integer vector nor NULL" +msgstr "" + +#: gsumm.c:58 +#, c-format +msgid "length(f)=%d != length(l)=%d" +msgstr "" + +#: gsumm.c:66 +#, c-format +msgid "o has length %d but sum(l)=%d" +msgstr "" + +#: gsumm.c:69 +msgid "Internal error: o's maxgrpn attribute mismatches recalculated maxgrpn" +msgstr "" + +#: gsumm.c:89 +#, c-format +msgid "" +"Internal error: nrow=%d ngrp=%d nbit=%d shift=%d highSize=%d nBatch=%d " +"batchSize=%d lastBatchSize=%d\n" +msgstr "" + +#: gsumm.c:98 +#, c-format +msgid "gforce initial population of grp took %.3f\n" +msgstr "" + +#: gsumm.c:116 +msgid "" +"Internal error: Failed to allocate counts or TMP when assigning g in gforce" +msgstr "" + +#: gsumm.c:194 +#, c-format +msgid "gforce assign high and low took %.3f\n" +msgstr "" + +#: gsumm.c:200 +#, c-format +msgid "gforce eval took %.3f\n" +msgstr "" + +#: gsumm.c:216 +msgid "gather took ... " +msgstr "" + +#: gsumm.c:334 +#, c-format +msgid "gather implemented for INTSXP, REALSXP, and CPLXSXP but not '%s'" +msgstr "" + +#: gsumm.c:336 gsumm.c:568 +#, c-format +msgid "%.3fs\n" +msgstr "" + +#: gsumm.c:345 +msgid "sum is not meaningful for factors." +msgstr "" + +#: gsumm.c:349 +#, c-format +msgid "This gsum took (narm=%s) ... " +msgstr "" + +#: gsumm.c:350 gsumm.c:606 +#, c-format +msgid "nrow [%d] != length(x) [%d] in gsum" +msgstr "" + +#: gsumm.c:404 +msgid "" +"The sum of an integer column for a group was more than type 'integer' can " +"hold so the result has been coerced to 'numeric' automatically for " +"convenience." +msgstr "" + +#: gsumm.c:565 +#, c-format +msgid "" +"Type '%s' not supported by GForce sum (gsum). Either add the prefix base::" +"sum(.) or turn off GForce optimization using options(datatable.optimize=1)" +msgstr "" + +#: gsumm.c:578 +msgid "" +"GForce mean can only be applied to columns, not .SD or similar. Likely " +"you're looking for 'DT[,lapply(.SD,mean),by=,.SDcols=]'. See ?data.table." +msgstr "" + +#: gsumm.c:579 +msgid "mean is not meaningful for factors." +msgstr "" + +#: gsumm.c:599 +#, c-format +msgid "Internal error: gsum returned type '%s'. typeof(x) is '%s'" +msgstr "" + +#: gsumm.c:609 +#, c-format +msgid "Unable to allocate %d * %d bytes for sum in gmean na.rm=TRUE" +msgstr "" + +#: gsumm.c:612 +#, c-format +msgid "Unable to allocate %d * %d bytes for counts in gmean na.rm=TRUE" +msgstr "" + +#: gsumm.c:638 +#, c-format +msgid "Unable to allocate %d * %d bytes for si in gmean na.rm=TRUE" +msgstr "" + +#: gsumm.c:650 +#, c-format +msgid "" +"Type '%s' not supported by GForce mean (gmean) na.rm=TRUE. Either add the " +"prefix base::mean(.) or turn off GForce optimization using options(datatable." +"optimize=1)" +msgstr "" + +#: gsumm.c:674 +msgid "Internal error: unsupported type at the end of gmean" +msgstr "" + +#: gsumm.c:687 +msgid "" +"GForce min can only be applied to columns, not .SD or similar. To find min " +"of all items in a list such as .SD, either add the prefix base::min(.SD) or " +"turn off GForce optimization using options(datatable.optimize=1). More " +"likely, you may be looking for 'DT[,lapply(.SD,min),by=,.SDcols=]'" +msgstr "" + +#: gsumm.c:688 +msgid "min is not meaningful for factors." +msgstr "" + +#: gsumm.c:693 +#, c-format +msgid "nrow [%d] != length(x) [%d] in gmin" +msgstr "" + +#: gsumm.c:717 gsumm.c:850 +msgid "" +"No non-missing values found in at least one group. Coercing to numeric type " +"and returning 'Inf' for such groups to be consistent with base" +msgstr "" + +#: gsumm.c:756 gsumm.c:891 +msgid "" +"No non-missing values found in at least one group. Returning 'NA' for such " +"groups to be consistent with base" +msgstr "" + +#: gsumm.c:783 +msgid "" +"No non-missing values found in at least one group. Returning 'Inf' for such " +"groups to be consistent with base" +msgstr "" + +#: gsumm.c:791 +msgid "Type 'complex' has no well-defined min" +msgstr "" + +#: gsumm.c:794 +#, c-format +msgid "" +"Type '%s' not supported by GForce min (gmin). Either add the prefix base::" +"min(.) or turn off GForce optimization using options(datatable.optimize=1)" +msgstr "" + +#: gsumm.c:806 +msgid "" +"GForce max can only be applied to columns, not .SD or similar. To find max " +"of all items in a list such as .SD, either add the prefix base::max(.SD) or " +"turn off GForce optimization using options(datatable.optimize=1). More " +"likely, you may be looking for 'DT[,lapply(.SD,max),by=,.SDcols=]'" +msgstr "" + +#: gsumm.c:807 +msgid "max is not meaningful for factors." +msgstr "" + +#: gsumm.c:812 +#, c-format +msgid "nrow [%d] != length(x) [%d] in gmax" +msgstr "" + +#: gsumm.c:930 +msgid "" +"No non-missing values found in at least one group. Returning '-Inf' for such " +"groups to be consistent with base" +msgstr "" + +#: gsumm.c:937 +msgid "Type 'complex' has no well-defined max" +msgstr "" + +#: gsumm.c:940 +#, c-format +msgid "" +"Type '%s' not supported by GForce max (gmax). Either add the prefix base::" +"max(.) or turn off GForce optimization using options(datatable.optimize=1)" +msgstr "" + +#: gsumm.c:951 +msgid "" +"GForce median can only be applied to columns, not .SD or similar. To find " +"median of all items in a list such as .SD, either add the prefix stats::" +"median(.SD) or turn off GForce optimization using options(datatable." +"optimize=1). More likely, you may be looking for 'DT[,lapply(.SD,median)," +"by=,.SDcols=]'" +msgstr "" + +#: gsumm.c:952 +msgid "median is not meaningful for factors." +msgstr "" + +#: gsumm.c:955 +#, c-format +msgid "nrow [%d] != length(x) [%d] in gmedian" +msgstr "" + +#: gsumm.c:992 +#, c-format +msgid "" +"Type '%s' not supported by GForce median (gmedian). Either add the prefix " +"stats::median(.) or turn off GForce optimization using options(datatable." +"optimize=1)" +msgstr "" + +#: gsumm.c:1005 +#, c-format +msgid "nrow [%d] != length(x) [%d] in gtail" +msgstr "" + +#: gsumm.c:1073 +#, c-format +msgid "" +"Type '%s' not supported by GForce tail (gtail). Either add the prefix utils::" +"tail(.) or turn off GForce optimization using options(datatable.optimize=1)" +msgstr "" + +#: gsumm.c:1085 gsumm.c:1176 +#, c-format +msgid "nrow [%d] != length(x) [%d] in ghead" +msgstr "" + +#: gsumm.c:1153 +#, c-format +msgid "" +"Type '%s' not supported by GForce head (ghead). Either add the prefix utils::" +"head(.) or turn off GForce optimization using options(datatable.optimize=1)" +msgstr "" + +#: gsumm.c:1161 +msgid "" +"Internal error, gtail is only implemented for n=1. This should have been " +"caught before. please report to data.table issue tracker." +msgstr "" + +#: gsumm.c:1166 +msgid "" +"Internal error, ghead is only implemented for n=1. This should have been " +"caught before. please report to data.table issue tracker." +msgstr "" + +#: gsumm.c:1172 +msgid "" +"Internal error, `g[` (gnthvalue) is only implemented single value subsets " +"with positive index, e.g., .SD[2]. This should have been caught before. " +"please report to data.table issue tracker." +msgstr "" + +#: gsumm.c:1250 +#, c-format +msgid "" +"Type '%s' not supported by GForce subset `[` (gnthvalue). Either add the " +"prefix utils::head(.) or turn off GForce optimization using " +"options(datatable.optimize=1)" +msgstr "" + +#: gsumm.c:1262 +msgid "" +"GForce var/sd can only be applied to columns, not .SD or similar. For the " +"full covariance matrix of all items in a list such as .SD, either add the " +"prefix stats::var(.SD) (or stats::sd(.SD)) or turn off GForce optimization " +"using options(datatable.optimize=1). Alternatively, if you only need the " +"diagonal elements, 'DT[,lapply(.SD,var),by=,.SDcols=]' is the optimized way " +"to do this." +msgstr "" + +#: gsumm.c:1263 +msgid "var/sd is not meaningful for factors." +msgstr "" + +#: gsumm.c:1266 +#, c-format +msgid "nrow [%d] != length(x) [%d] in gvar" +msgstr "" + +#: gsumm.c:1382 +#, c-format +msgid "" +"Type '%s' not supported by GForce var (gvar). Either add the prefix stats::" +"var(.) or turn off GForce optimization using options(datatable.optimize=1)" +msgstr "" + +#: gsumm.c:1384 +#, c-format +msgid "" +"Type '%s' not supported by GForce sd (gsd). Either add the prefix stats::" +"sd(.) or turn off GForce optimization using options(datatable.optimize=1)" +msgstr "" + +#: gsumm.c:1403 +msgid "" +"GForce prod can only be applied to columns, not .SD or similar. To multiply " +"all items in a list such as .SD, either add the prefix base::prod(.SD) or " +"turn off GForce optimization using options(datatable.optimize=1). More " +"likely, you may be looking for 'DT[,lapply(.SD,prod),by=,.SDcols=]'" +msgstr "" + +#: gsumm.c:1404 +msgid "prod is not meaningful for factors." +msgstr "" + +#: gsumm.c:1409 +#, c-format +msgid "nrow [%d] != length(x) [%d] in gprod" +msgstr "" + +#: gsumm.c:1411 +#, c-format +msgid "Unable to allocate %d * %d bytes for gprod" +msgstr "" + +#: gsumm.c:1446 +#, c-format +msgid "" +"Type '%s' not supported by GForce prod (gprod). Either add the prefix base::" +"prod(.) or turn off GForce optimization using options(datatable.optimize=1)" +msgstr "" + +#: ijoin.c:22 ijoin.c:243 +msgid "" +"Internal error: invalid value for 'mult'; this should have been caught " +"before. please report to data.table issue tracker" +msgstr "" + +#: ijoin.c:29 ijoin.c:250 +msgid "" +"Internal error: invalid value for 'type'; this should have been caught " +"before. please report to data.table issue tracker" +msgstr "" + +#: ijoin.c:56 ijoin.c:121 +#, c-format +msgid "Internal error: unknown type in mult=%d in lookup: %d" +msgstr "" + +#: ijoin.c:124 ijoin.c:215 +#, c-format +msgid "Internal error: unknown mult in lookup: %d" +msgstr "" + +#: ijoin.c:128 +#, c-format +msgid "First pass on calculating lengths in lookup ... done in %8.3f seconds\n" +msgstr "" + +#: ijoin.c:141 +#, c-format +msgid "Second pass on allocation in lookup ... done in %8.3f seconds\n" +msgstr "" + +#: ijoin.c:160 +#, c-format +msgid "Internal error: unknown type lookup should have been caught earlier: %d" +msgstr "" + +#: ijoin.c:212 +#, c-format +msgid "" +"Internal error: unknown type in mult=%d in lookup should have been caught " +"earlier: %d" +msgstr "" + +#: ijoin.c:220 +#, c-format +msgid "Final step in generating lookup ... done in %8.3f seconds\n" +msgstr "" + +#: ijoin.c:323 +#, c-format +msgid "Internal error: unknown type in mult=ALL in overlaps: %d" +msgstr "" + +#: ijoin.c:328 +#, c-format +msgid "" +"First pass on calculating lengths in overlaps ... done in %8.3f seconds\n" +msgstr "" + +#: ijoin.c:464 ijoin.c:571 ijoin.c:720 +#, c-format +msgid "Internal error: unknown type in mult=%d in overlaps: %d" +msgstr "" + +#: ijoin.c:723 +#, c-format +msgid "Internal error: unknown mult in overlaps: %d" +msgstr "" + +#: ijoin.c:727 +#, c-format +msgid "Final step, fetching indices in overlaps ... done in %8.3f seconds\n" +msgstr "" + +#: init.c:198 +#, c-format +msgid "" +"Pointers are %d bytes, greater than 8. We have not tested on any " +"architecture greater than 64bit yet." +msgstr "" + +#: init.c:209 +#, c-format +msgid "Checking NA_INTEGER [%d] == INT_MIN [%d] %s" +msgstr "" + +#: init.c:210 +#, c-format +msgid "Checking NA_INTEGER [%d] == NA_LOGICAL [%d] %s" +msgstr "" + +#: init.c:211 +#, c-format +msgid "Checking sizeof(int) [%d] is 4 %s" +msgstr "" + +#: init.c:212 +#, c-format +msgid "Checking sizeof(double) [%d] is 8 %s" +msgstr "" + +#: init.c:214 +#, c-format +msgid "Checking sizeof(long long) [%d] is 8 %s" +msgstr "" + +#: init.c:215 +#, c-format +msgid "Checking sizeof(pointer) [%d] is 4 or 8 %s" +msgstr "" + +#: init.c:216 +#, c-format +msgid "Checking sizeof(SEXP) [%d] == sizeof(pointer) [%d] %s" +msgstr "" + +#: init.c:217 +#, c-format +msgid "Checking sizeof(uint64_t) [%d] is 8 %s" +msgstr "" + +#: init.c:218 +#, c-format +msgid "Checking sizeof(int64_t) [%d] is 8 %s" +msgstr "" + +#: init.c:219 +#, c-format +msgid "Checking sizeof(signed char) [%d] is 1 %s" +msgstr "" + +#: init.c:220 +#, c-format +msgid "Checking sizeof(int8_t) [%d] is 1 %s" +msgstr "" + +#: init.c:221 +#, c-format +msgid "Checking sizeof(uint8_t) [%d] is 1 %s" +msgstr "" + +#: init.c:222 +#, c-format +msgid "Checking sizeof(int16_t) [%d] is 2 %s" +msgstr "" + +#: init.c:223 +#, c-format +msgid "Checking sizeof(uint16_t) [%d] is 2 %s" +msgstr "" + +#: init.c:226 +#, c-format +msgid "Checking LENGTH(allocVector(INTSXP,2)) [%d] is 2 %s" +msgstr "" + +#: init.c:227 +#, c-format +msgid "Checking TRUELENGTH(allocVector(INTSXP,2)) [%d] is 0 %s" +msgstr "" + +#: init.c:234 +#, c-format +msgid "Checking memset(&i,0,sizeof(int)); i == (int)0 %s" +msgstr "" + +#: init.c:237 +#, c-format +msgid "Checking memset(&ui, 0, sizeof(unsigned int)); ui == (unsigned int)0 %s" +msgstr "" + +#: init.c:240 +#, c-format +msgid "Checking memset(&d, 0, sizeof(double)); d == (double)0.0 %s" +msgstr "" + +#: init.c:243 +#, c-format +msgid "Checking memset(&ld, 0, sizeof(long double)); ld == (long double)0.0 %s" +msgstr "" + +#: init.c:246 +msgid "The ascii character '/' is not just before '0'" +msgstr "" + +#: init.c:247 +msgid "The C expression (uint_fast8_t)('/'-'0')<10 is true. Should be false." +msgstr "" + +#: init.c:248 +msgid "The ascii character ':' is not just after '9'" +msgstr "" + +#: init.c:249 +msgid "The C expression (uint_fast8_t)('9'-':')<10 is true. Should be false." +msgstr "" + +#: init.c:254 +#, c-format +msgid "Conversion of NA_INT64 via double failed %lld!=%lld" +msgstr "" + +#: init.c:258 +msgid "NA_INT64_D (negative -0.0) is not == 0.0." +msgstr "" + +#: init.c:259 +msgid "NA_INT64_D (negative -0.0) is not ==-0.0." +msgstr "" + +#: init.c:260 +msgid "ISNAN(NA_INT64_D) is TRUE but should not be" +msgstr "" + +#: init.c:261 +msgid "isnan(NA_INT64_D) is TRUE but should not be" +msgstr "" + +#: init.c:290 +#, c-format +msgid "PRINTNAME(install(\")integer64\")) has returned %s not %s" +msgstr "" + +#: init.c:359 +msgid ".Last.value in namespace is not a length 1 integer" +msgstr "" + +#: nafill.c:83 +msgid "" +"'x' argument is atomic vector, in-place update is supported only for list/" +"data.table" +msgstr "" + +#: nafill.c:85 nafill.c:95 +msgid "'x' argument must be numeric type, or list/data.table of numeric types" +msgstr "" + +#: nafill.c:133 nafill.c:161 +msgid "" +"Internal error: invalid type argument in nafillR function, should have been " +"caught before. Please report to data.table issue tracker." +msgstr "" + +#: nafill.c:177 +#, c-format +msgid "%s: parallel processing of %d column(s) took %.3fs\n" +msgstr "" + +#: openmp-utils.c:22 +#, c-format +msgid "" +"Ignoring invalid %s==\")%s\". Not an integer >= 1. Please remove any " +"characters that are not a digit [0-9]. See ?data.table::setDTthreads." +msgstr "" + +#: openmp-utils.c:40 +#, c-format +msgid "" +"Ignoring invalid R_DATATABLE_NUM_PROCS_PERCENT==%d. If used it must be an " +"integer between 2 and 100. Default is 50. See ?setDTtheads." +msgstr "" + +#: openmp-utils.c:67 +msgid "'verbose' must be TRUE or FALSE" +msgstr "" + +#: openmp-utils.c:70 +msgid "" +"This installation of data.table has not been compiled with OpenMP support.\n" +msgstr "" + +#: openmp-utils.c:75 +#, c-format +msgid " omp_get_num_procs() %d\n" +msgstr "" + +#: openmp-utils.c:76 +#, c-format +msgid " R_DATATABLE_NUM_PROCS_PERCENT %s\n" +msgstr "" + +#: openmp-utils.c:77 +#, c-format +msgid " R_DATATABLE_NUM_THREADS %s\n" +msgstr "" + +#: openmp-utils.c:78 +#, c-format +msgid " omp_get_thread_limit() %d\n" +msgstr "" + +#: openmp-utils.c:79 +#, c-format +msgid " omp_get_max_threads() %d\n" +msgstr "" + +#: openmp-utils.c:80 +#, c-format +msgid " OMP_THREAD_LIMIT %s\n" +msgstr "" + +#: openmp-utils.c:81 +#, c-format +msgid " OMP_NUM_THREADS %s\n" +msgstr "" + +#: openmp-utils.c:82 +#, c-format +msgid " RestoreAfterFork %s\n" +msgstr "" + +#: openmp-utils.c:83 +#, c-format +msgid " data.table is using %d threads. See ?setDTthreads.\n" +msgstr "" + +#: openmp-utils.c:91 +msgid "" +"restore_after_fork= must be TRUE, FALSE, or NULL (default). " +"getDTthreads(verbose=TRUE) reports the current setting.\n" +msgstr "" + +#: openmp-utils.c:105 +#, c-format +msgid "" +"threads= must be either NULL (default) or a single number. It has length %d" +msgstr "" + +#: openmp-utils.c:107 +msgid "threads= must be either NULL (default) or type integer/numeric" +msgstr "" + +#: openmp-utils.c:109 +msgid "" +"threads= must be either NULL or a single integer >= 0. See ?setDTthreads." +msgstr "" + +#: openmp-utils.c:114 +msgid "Internal error: percent= must be TRUE or FALSE at C level" +msgstr "" + +#: openmp-utils.c:117 +#, c-format +msgid "" +"Internal error: threads==%d should be between 2 and 100 (percent=TRUE at C " +"level)." +msgstr "" + +#: rbindlist.c:8 +msgid "fill= should be TRUE or FALSE" +msgstr "" + +#: rbindlist.c:10 +msgid "use.names= should be TRUE, FALSE, or not used (\")check\" by default)" +msgstr "" + +#: rbindlist.c:12 +msgid "" +"Input to rbindlist must be a list. This list can contain data.tables, data." +"frames or plain lists." +msgstr "" + +#: rbindlist.c:16 +msgid "use.names= cannot be FALSE when fill is TRUE. Setting use.names=TRUE." +msgstr "" + +#: rbindlist.c:20 +msgid "Internal error: rbindlist.c idcol is not a single string" +msgstr "" + +#: rbindlist.c:31 +#, c-format +msgid "Item %d of input is not a data.frame, data.table or list" +msgstr "" + +#: rbindlist.c:39 +#, c-format +msgid "" +"Item %d has %d columns, inconsistent with item %d which has %d columns. To " +"fill missing columns use fill=TRUE." +msgstr "" + +#: rbindlist.c:42 +#, c-format +msgid "Item %d has %d columns but %d column names. Invalid object." +msgstr "" + +#: rbindlist.c:49 +#, c-format +msgid "" +"Column %d of item %d is length %d inconsistent with column %d which is " +"length %d. Only length-1 columns are recycled." +msgstr "" + +#: rbindlist.c:58 +#, c-format +msgid "" +"Column %d ['%s'] of item %d is length 0. This (and %d other%s like it) has " +"been filled with NA (NULL for list columns) to make each item uniform." +msgstr "" + +#: rbindlist.c:62 +#, c-format +msgid "" +"Total rows in the list is %lld which is larger than the maximum number of " +"rows, currently %d" +msgstr "" + +#: rbindlist.c:63 +msgid "use.names=TRUE but no item of input list has any names" +msgstr "" + +#: rbindlist.c:71 +#, c-format +msgid "" +"Failed to allocate upper bound of %lld unique column names [sum(lapply(l," +"ncol))]" +msgstr "" + +#: rbindlist.c:102 +#, c-format +msgid "Failed to allocate nuniq=%d items working memory in rbindlist.c" +msgstr "" + +#: rbindlist.c:136 +#, c-format +msgid "Failed to allocate ncol=%d items working memory in rbindlist.c" +msgstr "" + +#: rbindlist.c:191 +msgid "" +"Internal error: usenames==NA but fill=TRUE. usenames should have been set to " +"TRUE earlier with warning." +msgstr "" + +#: rbindlist.c:196 +msgid "" +" use.names='check' (default from v1.12.2) emits this message and proceeds as " +"if use.names=FALSE for backwards compatibility. See news item 5 in v1.12.2 " +"for options to control this message." +msgstr "" + +#: rbindlist.c:206 +msgid "" +"Internal error: could not find the first column name not present in earlier " +"item" +msgstr "" + +#: rbindlist.c:210 +#, c-format +msgid "" +"Column %d ['%s'] of item %d is missing in item %d. Use fill=TRUE to fill " +"with NA (NULL for list columns), or use.names=FALSE to ignore column names.%s" +msgstr "" + +#: rbindlist.c:218 +#, c-format +msgid "" +"Internal error: usenames==NA but an out-of-order name has been found in an " +"item with no names or the first item. [%d]" +msgstr "" + +#: rbindlist.c:219 +#, c-format +msgid "" +"Column %d ['%s'] of item %d appears in position %d in item %d. Set use." +"names=TRUE to match by column name, or use.names=FALSE to ignore column " +"names.%s" +msgstr "" + +#: rbindlist.c:228 +msgid "" +"options()$datatable.rbindlist.check is set but is not a single string. See " +"news item 5 in v1.12.2." +msgstr "" + +#: rbindlist.c:235 +#, c-format +msgid "" +"options()$datatable.rbindlist.check=='%s' which is not " +"'message'|'warning'|'error'|'none'. See news item 5 in v1.12.2." +msgstr "" + +#: rbindlist.c:297 +#, c-format +msgid "" +"Column %d of item %d has type 'factor' but has no levels; i.e. malformed." +msgstr "" + +#: rbindlist.c:315 +#, c-format +msgid "" +"Class attribute on column %d of item %d does not match with column %d of " +"item %d." +msgstr "" + +#: rbindlist.c:325 +#, c-format +msgid "" +"Internal error: column %d of result is determined to be integer64 but " +"maxType=='%s' != REALSXP" +msgstr "" + +#: rbindlist.c:361 +#, c-format +msgid "" +"Failed to allocate working memory for %d ordered factor levels of result " +"column %d" +msgstr "" + +#: rbindlist.c:382 +#, c-format +msgid "" +"Column %d of item %d is an ordered factor but level %d ['%s'] is missing " +"from the ordered levels from column %d of item %d. Each set of ordered " +"factor levels should be an ordered subset of the first longest. A regular " +"factor will be created for this column." +msgstr "" + +#: rbindlist.c:387 +#, c-format +msgid "" +"Column %d of item %d is an ordered factor with '%s'<'%s' in its levels. But " +"'%s'<'%s' in the ordered levels from column %d of item %d. A regular factor " +"will be created for this column due to this ambiguity." +msgstr "" + +#: rbindlist.c:432 +#, c-format +msgid "" +"Failed to allocate working memory for %d factor levels of result column %d " +"when reading item %d of item %d" +msgstr "" + +#: rbindlist.c:522 +#, c-format +msgid "Column %d of item %d: %s" +msgstr "" + +#: reorder.c:17 +#, c-format +msgid "Item %d of list is type '%s' which isn't yet supported (SIZEOF=%d)" +msgstr "" + +#: reorder.c:19 +#, c-format +msgid "" +"Column %d is length %d which differs from length of column 1 (%d). Invalid " +"data.table." +msgstr "" + +#: reorder.c:27 +#, c-format +msgid "" +"reorder accepts vectors but this non-VECSXP is type '%s' which isn't yet " +"supported (SIZEOF=%d)" +msgstr "" + +#: reorder.c:28 +msgid "" +"Internal error in reorder.c: cannot reorder an ALTREP vector. Please see " +"NEWS item 2 in v1.11.4 and report this as a bug." +msgstr "" + +#: reorder.c:33 +msgid "order must be an integer vector" +msgstr "" + +#: reorder.c:34 +#, c-format +msgid "nrow(x)[%d]!=length(order)[%d]" +msgstr "" + +#: reorder.c:48 +#, c-format +msgid "order is not a permutation of 1:nrow[%d]" +msgstr "" + +#: reorder.c:57 +#, c-format +msgid "" +"Unable to allocate %d * %d bytes of working memory for reordering data.table" +msgstr "" + +#: shift.c:17 +#, c-format +msgid "" +"type '%s' passed to shift(). Must be a vector, list, data.frame or data.table" +msgstr "" + +#: shift.c:24 shift.c:28 +msgid "" +"Internal error: invalid type for shift(), should have been caught before. " +"please report to data.table issue tracker" +msgstr "" + +#: shift.c:31 +msgid "Internal error: k must be integer" +msgstr "" + +#: shift.c:33 +#, c-format +msgid "Item %d of n is NA" +msgstr "" + +#: shift.c:158 +#, c-format +msgid "Unsupported type '%s'" +msgstr "" + +#: subset.c:7 +#, c-format +msgid "Internal error: subsetVectorRaw length(ans)==%d n=%d" +msgstr "" + +#: subset.c:88 +#, c-format +msgid "" +"Internal error: column type '%s' not supported by data.table subset. All " +"known types are supported so please report as bug." +msgstr "" + +#: subset.c:97 subset.c:121 +#, c-format +msgid "Internal error. 'idx' is type '%s' not 'integer'" +msgstr "" + +#: subset.c:122 +#, c-format +msgid "" +"Internal error. 'maxArg' is type '%s' and length %d, should be an integer " +"singleton" +msgstr "" + +#: subset.c:123 +msgid "Internal error: allowOverMax must be TRUE/FALSE" +msgstr "" + +#: subset.c:125 +#, c-format +msgid "Internal error. max is %d, must be >= 0." +msgstr "" + +#: subset.c:149 +#, c-format +msgid "i[%d] is %d which is out of range [1,nrow=%d]" +msgstr "" + +#: subset.c:161 +#, c-format +msgid "" +"Item %d of i is %d and item %d is %d. Cannot mix positives and negatives." +msgstr "" + +#: subset.c:171 +#, c-format +msgid "Item %d of i is %d and item %d is NA. Cannot mix negatives and NA." +msgstr "" + +#: subset.c:207 +#, c-format +msgid "" +"Item %d of i is %d but there are only %d rows. Ignoring this and %d more " +"like it out of %d." +msgstr "" + +#: subset.c:209 +#, c-format +msgid "" +"Item %d of i is %d which removes that item but that has occurred before. " +"Ignoring this dup and %d other dups." +msgstr "" + +#: subset.c:223 +#, c-format +msgid "Column %d is NULL; malformed data.table." +msgstr "" + +#: subset.c:226 +#, c-format +msgid "Column %d ['%s'] is a data.frame or data.table; malformed data.table." +msgstr "" + +#: subset.c:231 +#, c-format +msgid "" +"Column %d ['%s'] is length %d but column 1 is length %d; malformed data." +"table." +msgstr "" + +#: subset.c:247 +#, c-format +msgid "Internal error. Argument 'x' to CsubsetDT is type '%s' not 'list'" +msgstr "" + +#: subset.c:260 +#, c-format +msgid "Internal error. Argument 'cols' to Csubset is type '%s' not 'integer'" +msgstr "" + +#: subset.c:337 +msgid "" +"Internal error: NULL can not be subset. It is invalid for a data.table to " +"contain a NULL column." +msgstr "" + +#: subset.c:339 +msgid "" +"Internal error: CsubsetVector is internal-use-only but has received " +"negatives, zeros or out-of-range" +msgstr "" + +#: transpose.c:9 +msgid "l must be a list." +msgstr "" + +#: transpose.c:13 +msgid "ignore.empty should be logical TRUE/FALSE." +msgstr "" + +#: transpose.c:16 +msgid "" +"keep.names should be either NULL, or the name of the first column of the " +"result in which to place the names of the input" +msgstr "" + +#: transpose.c:19 +msgid "fill must be a length 1 vector, such as the default NA" +msgstr "" + +#: transpose.c:28 +#, c-format +msgid "Item %d of list input is not an atomic vector" +msgstr "" + +#: types.c:17 types.c:21 +#, c-format +msgid "" +"%s: %d:\n" +"%s" +msgstr "" + +#: types.c:23 +#, c-format +msgid "" +"%s: %d:\n" +"%s:" +msgstr "" + +#: types.c:55 +msgid "internal error: status, nx, nk must be integer" +msgstr "" + +#: uniqlist.c:14 +msgid "Internal error: uniqlist has not been passed a list of columns" +msgstr "" + +#: uniqlist.c:17 +msgid "Internal error: uniqlist has been passed a non-integer order" +msgstr "" + +#: uniqlist.c:18 +msgid "Internal error: uniqlist has been passed a length-0 order" +msgstr "" + +#: uniqlist.c:19 +#, c-format +msgid "Internal error: uniqlist has been passed length(order)==%d but nrow==%d" +msgstr "" + +#: uniqlist.c:96 uniqlist.c:127 uniqlist.c:208 uniqlist.c:245 uniqlist.c:318 +#, c-format +msgid "Type '%s' not supported" +msgstr "" + +#: uniqlist.c:148 +msgid "Input argument 'x' to 'uniqlengths' must be an integer vector" +msgstr "" + +#: uniqlist.c:149 +msgid "" +"Input argument 'n' to 'uniqlengths' must be an integer vector of length 1" +msgstr "" + +#: uniqlist.c:167 +msgid "cols must be an integer vector with length >= 1" +msgstr "" + +#: uniqlist.c:171 +#, c-format +msgid "Item %d of cols is %d which is outside range of l [1,length(l)=%d]" +msgstr "" + +#: uniqlist.c:174 +#, c-format +msgid "" +"All elements to input list must be of same length. Element [%d] has length " +"%llu != length of first element = %llu." +msgstr "" + +#: uniqlist.c:255 +msgid "Internal error: nestedid was not passed a list length 1 or more" +msgstr "" + +#: uniqlist.c:262 +#, c-format +msgid "Internal error: nrows[%d]>0 but ngrps==0" +msgstr "" + +#: uniqlist.c:264 +msgid "cols must be an integer vector of positive length" +msgstr "" + +#: uniqlist.c:349 +msgid "x is not a logical vector" +msgstr "" + +#: utils.c:73 +#, c-format +msgid "Unsupported type '%s' passed to allNA()" +msgstr "" + +#: utils.c:92 +msgid "'x' argument must be data.table compatible" +msgstr "" + +#: utils.c:94 +msgid "'check_dups' argument must be TRUE or FALSE" +msgstr "" + +#: utils.c:110 +msgid "" +"argument specifying columns is type 'double' and one or more items in it are " +"not whole integers" +msgstr "" + +#: utils.c:116 +#, c-format +msgid "argument specifying columns specify non existing column(s): cols[%d]=%d" +msgstr "" + +#: utils.c:121 +msgid "'x' argument data.table has no names" +msgstr "" + +#: utils.c:126 +#, c-format +msgid "" +"argument specifying columns specify non existing column(s): cols[%d]='%s'" +msgstr "" + +#: utils.c:129 +msgid "argument specifying columns must be character or numeric" +msgstr "" + +#: utils.c:132 +msgid "argument specifying columns specify duplicated column(s)" +msgstr "" + +#: utils.c:138 +#, c-format +msgid "%s: fill argument must be length 1" +msgstr "" + +#: utils.c:171 +#, c-format +msgid "%s: fill argument must be numeric" +msgstr "" + +#: utils.c:274 +#, c-format +msgid "Internal error: unsupported type '%s' passed to copyAsPlain()" +msgstr "" + +#: utils.c:278 +#, c-format +msgid "" +"Internal error: type '%s' passed to copyAsPlain() but it seems " +"copyMostAttrib() retains ALTREP attributes" +msgstr "" + +#: utils.c:313 +#, c-format +msgid "Found and copied %d column%s with a shared memory address\n" +msgstr "" + +#: vecseq.c:13 +msgid "x must be an integer vector" +msgstr "" + +#: vecseq.c:14 +msgid "len must be an integer vector" +msgstr "" + +#: vecseq.c:15 +msgid "x and len must be the same length" +msgstr "" + +#: vecseq.c:21 +msgid "" +"Join results in more than 2^31 rows (internal vecseq reached physical " +"limit). Very likely misspecified join. Check for duplicate key values in i " +"each of which join to the same group in x over and over again. If that's ok, " +"try by=.EACHI to run j for each group to avoid the large allocation. " +"Otherwise, please search for this error message in the FAQ, Wiki, Stack " +"Overflow and data.table issue tracker for advice." +msgstr "" + +#: vecseq.c:25 +msgid "clamp must be a double vector length 1" +msgstr "" + +#: vecseq.c:27 +msgid "clamp must be positive" +msgstr "" + +#: vecseq.c:28 +#, c-format +msgid "" +"Join results in %d rows; more than %d = nrow(x)+nrow(i). Check for duplicate " +"key values in i each of which join to the same group in x over and over " +"again. If that's ok, try by=.EACHI to run j for each group to avoid the " +"large allocation. If you are sure you wish to proceed, rerun with allow." +"cartesian=TRUE. Otherwise, please search for this error message in the FAQ, " +"Wiki, Stack Overflow and data.table issue tracker for advice." +msgstr "" + +#: wrappers.c:11 +msgid "Attribute name must be a character vector of length 1" +msgstr "" + +#: wrappers.c:16 +msgid "" +"Internal structure doesn't seem to be a list. Can't set class to be 'data." +"table' or 'data.frame'. Use 'as.data.table()' or 'as.data.frame()' methods " +"instead." +msgstr "" + +#: wrappers.c:59 +msgid "First argument to setlistelt must be a list()" +msgstr "" + +#: wrappers.c:60 +msgid "Second argument to setlistelt must a length 1 integer vector" +msgstr "" + +#: wrappers.c:62 +#, c-format +msgid "i (%d) is outside the range of items [1,%d]" +msgstr "" + +#: wrappers.c:84 +msgid "x isn't a VECSXP" +msgstr "" + +#: wrappers.c:99 +#, c-format +msgid "" +"dim.data.table expects a data.table as input (which is a list), but seems to " +"be of type %s" +msgstr "" diff --git a/src/forder.c b/src/forder.c index e3af8c602a..f537248b19 100644 --- a/src/forder.c +++ b/src/forder.c @@ -461,10 +461,10 @@ SEXP forder(SEXP DT, SEXP by, SEXP retGrpArg, SEXP sortGroupsArg, SEXP ascArg, S if (TYPEOF(VECTOR_ELT(DT, by_i-1)) == CPLXSXP) n_cplx++; } if (!isLogical(retGrpArg) || LENGTH(retGrpArg)!=1 || INTEGER(retGrpArg)[0]==NA_LOGICAL) - error(_("retGrp= must be TRUE or FALSE")); + error(_("retGrp must be TRUE or FALSE")); retgrp = LOGICAL(retGrpArg)[0]==TRUE; if (!isLogical(sortGroupsArg) || LENGTH(sortGroupsArg)!=1 || INTEGER(sortGroupsArg)[0]==NA_LOGICAL ) - error(_("sort= must be TRUE or FALSE")); + error(_("sort must be TRUE or FALSE")); sortType = LOGICAL(sortGroupsArg)[0]==TRUE; // if sortType is 1, it is later flipped between +1/-1 according to ascArg. Otherwise ascArg is ignored when sortType==0 if (!retgrp && !sortType) error(_("At least one of retGrp= or sort= must be TRUE")); From 9a46ed3f023b7a4bc7ed45efad4d586ca2379854 Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Wed, 16 Oct 2019 22:44:18 +0800 Subject: [PATCH 15/78] update_pkg_po after merge --- inst/po/en@quot/LC_MESSAGES/R-data.table.mo | Bin 87120 -> 87262 bytes inst/po/en@quot/LC_MESSAGES/data.table.mo | Bin 137184 -> 137326 bytes po/R-data.table.pot | 9 +- po/R-zh_CN.po | 11 +- po/data.table.pot | 172 ++++++++++---------- po/zh_CN.po | 160 +++++++++--------- src/forder.c | 4 +- 7 files changed, 184 insertions(+), 172 deletions(-) diff --git a/inst/po/en@quot/LC_MESSAGES/R-data.table.mo b/inst/po/en@quot/LC_MESSAGES/R-data.table.mo index 8d628eced2b060217f28870325eca3aff0c246d0..051c963766c998d4d13b35d619fbe858af2c3a66 100644 GIT binary patch delta 11933 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 ZZ`<2kF?q?qwEFK_X*Xy5zgup&{|^Lo0v7-P delta 11814 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 delta 18015 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 diff --git a/po/R-data.table.pot b/po/R-data.table.pot index b8f94b3d87..3d31b50fab 100644 --- a/po/R-data.table.pot +++ b/po/R-data.table.pot @@ -1,7 +1,7 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.5\n" -"POT-Creation-Date: 2019-10-04 17:06\n" +"POT-Creation-Date: 2019-10-16 22:08\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -1636,10 +1636,13 @@ msgstr "" msgid "data.table package is loaded. Unload or start a fresh R session." msgstr "" -msgid "'script' argument should not be NULL" +msgid "script must end with '.Rraw'. If a file ending '.Rraw.bz2' exists, that will be found and used." msgstr "" -msgid "does not exist" +msgid "Neither" +msgstr "" + +msgid "exist in" msgstr "" msgid "Timings count mismatch:" diff --git a/po/R-zh_CN.po b/po/R-zh_CN.po index 2469c2fe1d..e6b15b9ba3 100644 --- a/po/R-zh_CN.po +++ b/po/R-zh_CN.po @@ -1,7 +1,7 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.5\n" -"POT-Creation-Date: 2019-10-04 17:06\n" +"POT-Creation-Date: 2019-10-16 22:08\n" "PO-Revision-Date: 2019-10-04 17:06+08\n" "Last-Translator: Michael Chirico \n" "Language-Team: Mandarin\n" @@ -1999,10 +1999,15 @@ msgstr "" msgid "data.table package is loaded. Unload or start a fresh R session." msgstr "" -msgid "'script' argument should not be NULL" +msgid "" +"script must end with '.Rraw'. If a file ending '.Rraw.bz2' exists, that will " +"be found and used." +msgstr "" + +msgid "Neither" msgstr "" -msgid "does not exist" +msgid "exist in" msgstr "" msgid "Timings count mismatch:" diff --git a/po/data.table.pot b/po/data.table.pot index 6cdf59b216..ce7970e4d4 100644 --- a/po/data.table.pot +++ b/po/data.table.pot @@ -1,20 +1,20 @@ -# R::data.table src/ portability -# Copyright (C) 2019 +# SOME DESCRIPTIVE TITLE. +# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER # This file is distributed under the same license as the data.table package. -# Michael Chirico , 2019. +# FIRST AUTHOR , YEAR. # #, fuzzy msgid "" msgstr "" "Project-Id-Version: data.table 1.12.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-10-16 15:03+0800\n" -"PO-Revision-Date: 2019-10-16 15:03+0800\n" -"Last-Translator: Michael Chirico \n" +"POT-Creation-Date: 2019-10-16 22:40+0800\n" +"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" +"Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" "Language: \n" "MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" +"Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" #: assign.c:9 @@ -1334,144 +1334,144 @@ msgstr "" msgid "names(data) is NULL. Please report to data.table-help" msgstr "" -#: forder.c:103 +#: forder.c:106 #, c-format msgid "Failed to realloc thread private group size buffer to %d*4bytes" msgstr "" -#: forder.c:117 +#: forder.c:120 #, c-format msgid "Failed to realloc group size result to %d*4bytes" msgstr "" -#: forder.c:260 +#: forder.c:263 #, c-format msgid "" "Logical error. counts[0]=%d in cradix but should have been decremented to 0. " "radix=%d" msgstr "" -#: forder.c:275 +#: forder.c:278 msgid "Failed to alloc cradix_counts" msgstr "" -#: forder.c:277 +#: forder.c:280 msgid "Failed to alloc cradix_tmp" msgstr "" -#: forder.c:288 +#: forder.c:291 #, c-format msgid "" "Internal error: ustr isn't empty when starting range_str: ustr_n=%d, " "ustr_alloc=%d" msgstr "" -#: forder.c:289 +#: forder.c:292 msgid "Internal error: ustr_maxlen isn't 0 when starting range_str" msgstr "" -#: forder.c:309 +#: forder.c:312 #, c-format msgid "Unable to realloc %d * %d bytes in range_str" msgstr "" -#: forder.c:327 +#: forder.c:330 msgid "Failed to alloc ustr3 when converting strings to UTF8" msgstr "" -#: forder.c:345 +#: forder.c:348 msgid "Failed to alloc tl when converting strings to UTF8" msgstr "" -#: forder.c:374 +#: forder.c:377 msgid "Must an integer or numeric vector length 1" msgstr "" -#: forder.c:375 +#: forder.c:378 msgid "Must be 2, 1 or 0" msgstr "" -#: forder.c:409 +#: forder.c:412 msgid "Unknown non-finite value; not NA, NaN, -Inf or +Inf" msgstr "" -#: forder.c:431 +#: forder.c:434 msgid "" "Internal error: input is not either a list of columns, or an atomic vector." msgstr "" -#: forder.c:433 +#: forder.c:436 msgid "" "Internal error: input is an atomic vector (not a list of columns) but by= is " "not NULL" msgstr "" -#: forder.c:435 +#: forder.c:438 msgid "" "Input is an atomic vector (not a list of columns) but order= is not a length " "1 integer" msgstr "" -#: forder.c:437 +#: forder.c:440 #, c-format msgid "forder.c received a vector type '%s' length %d\n" msgstr "" -#: forder.c:445 +#: forder.c:448 #, c-format msgid "forder.c received %d rows and %d columns\n" msgstr "" -#: forder.c:448 +#: forder.c:451 forder.c:456 msgid "Internal error: DT is an empty list() of 0 columns" msgstr "" -#: forder.c:450 +#: forder.c:453 forder.c:458 #, c-format msgid "" "Internal error: DT has %d columns but 'by' is either not integer or is " "length 0" msgstr "" -#: forder.c:452 +#: forder.c:455 forder.c:460 #, c-format msgid "" "Either order= is not integer or its length (%d) is different to by='s length " "(%d)" msgstr "" -#: forder.c:458 +#: forder.c:466 #, c-format msgid "internal error: 'by' value %d out of range [1,%d]" msgstr "" -#: forder.c:460 +#: forder.c:468 #, c-format msgid "Column %d is length %d which differs from length of column 1 (%d)\n" msgstr "" -#: forder.c:464 +#: forder.c:472 msgid "retGrp must be TRUE or FALSE" msgstr "" -#: forder.c:467 +#: forder.c:475 msgid "sort must be TRUE or FALSE" msgstr "" -#: forder.c:470 +#: forder.c:478 msgid "At least one of retGrp= or sort= must be TRUE" msgstr "" -#: forder.c:472 +#: forder.c:480 msgid "na.last must be logical TRUE, FALSE or NA of length 1" msgstr "" -#: forder.c:514 +#: forder.c:524 #, c-format msgid "Item %d of order (ascending/descending) is %d. Must be +1 or -1." msgstr "" -#: forder.c:540 +#: forder.c:550 #, c-format msgid "" "\n" @@ -1480,51 +1480,51 @@ msgid "" "to save space and time.\n" msgstr "" -#: forder.c:556 +#: forder.c:566 #, c-format msgid "Column %d passed to [f]order is type '%s', not yet supported." msgstr "" -#: forder.c:705 +#: forder.c:719 msgid "Internal error: column not supported not caught earlier" msgstr "" -#: forder.c:713 +#: forder.c:727 #, c-format msgid "nradix=%d\n" msgstr "" -#: forder.c:719 +#: forder.c:733 #, c-format msgid "" "Failed to allocate TMP or UGRP or they weren't cache line aligned: nth=%d" msgstr "" -#: forder.c:724 +#: forder.c:738 msgid "Could not allocate (very tiny) group size thread buffers" msgstr "" -#: forder.c:785 +#: forder.c:799 #, c-format msgid "Timing block %2d%s = %8.3f %8d\n" msgstr "" -#: forder.c:788 +#: forder.c:802 #, c-format msgid "stat[%03d]==%10zd\n" msgstr "" -#: forder.c:1044 +#: forder.c:1058 #, c-format msgid "Failed to allocate parallel counts. my_n=%d, nBatch=%d" msgstr "" -#: forder.c:1153 +#: forder.c:1167 #, c-format msgid "Unable to allocate TMP for my_n=%d items in parallel batch counting" msgstr "" -#: forder.c:1260 +#: forder.c:1275 msgid "" "is.sorted (R level) and fsorted (C level) only to be used on vectors. If " "needed on a list/data.table, you'll need the order anyway if not sorted, so " @@ -1532,25 +1532,25 @@ msgid "" "C level" msgstr "" -#: forder.c:1292 +#: forder.c:1307 #, c-format msgid "type '%s' is not yet supported" msgstr "" -#: forder.c:1301 +#: forder.c:1316 msgid "x must be either NULL or an integer vector" msgstr "" -#: forder.c:1303 +#: forder.c:1318 msgid "nrow must be integer vector length 1" msgstr "" -#: forder.c:1305 +#: forder.c:1320 #, c-format msgid "nrow==%d but must be >=0" msgstr "" -#: forder.c:1322 +#: forder.c:1337 msgid "x must be type 'double'" msgstr "" @@ -2860,7 +2860,7 @@ msgstr "" msgid "%lld " msgstr "" -#: fsort.c:246 fwrite.c:692 fwrite.c:779 fwrite.c:890 fwrite.c:934 +#: fsort.c:246 fwrite.c:690 fwrite.c:947 msgid "\n" msgstr "" @@ -2879,49 +2879,49 @@ msgstr "" msgid "%d: %.3f (%4.1f%%)\n" msgstr "" -#: fwrite.c:603 +#: fwrite.c:601 #, c-format msgid "buffMB=%d outside [1,1024]" msgstr "" -#: fwrite.c:610 +#: fwrite.c:608 #, c-format msgid "" "eol must be 1 or more bytes (usually either \\n or \\r\\n) but is length %d" msgstr "" -#: fwrite.c:613 +#: fwrite.c:611 msgid "Column writers: " msgstr "" -#: fwrite.c:615 fwrite.c:617 fwrite.c:619 +#: fwrite.c:613 fwrite.c:615 fwrite.c:617 #, c-format msgid "%d " msgstr "" -#: fwrite.c:618 +#: fwrite.c:616 msgid "... " msgstr "" -#: fwrite.c:621 +#: fwrite.c:619 #, c-format msgid "" "\n" -"args.doRowNames=%d args.rowNames=%d doQuote=%d args.nrow=%d args.ncol=%d " +"args.doRowNames=%d args.rowNames=%d doQuote=%d args.nrow=%lld args.ncol=%d " "eolLen=%d\n" msgstr "" -#: fwrite.c:654 +#: fwrite.c:652 #, c-format msgid "Internal error: type %d has no max length method implemented" msgstr "" -#: fwrite.c:661 +#: fwrite.c:659 #, c-format msgid "maxLineLen=%zd. Found in %.3fs\n" msgstr "" -#: fwrite.c:681 +#: fwrite.c:679 #, c-format msgid "" "%s: '%s'. Failed to open existing file for writing. Do you have write " @@ -2929,7 +2929,7 @@ msgid "" "have it open?" msgstr "" -#: fwrite.c:682 +#: fwrite.c:680 #, c-format msgid "" "%s: '%s'. Unable to create new file for writing (it does not exist already). " @@ -2937,62 +2937,64 @@ msgid "" "the path exist?" msgstr "" -#: fwrite.c:690 +#: fwrite.c:688 #, c-format msgid "Writing bom (%s), yaml (%d characters) and column names (%s) ... " msgstr "" -#: fwrite.c:703 +#: fwrite.c:701 #, c-format msgid "Unable to allocate %d MiB for header: %s" msgstr "" -#: fwrite.c:731 fwrite.c:793 +#: fwrite.c:729 fwrite.c:789 msgid "Can't allocate gzip stream structure" msgstr "" -#: fwrite.c:737 +#: fwrite.c:735 #, c-format msgid "Unable to allocate %d MiB for zbuffer: %s" msgstr "" -#: fwrite.c:752 +#: fwrite.c:750 #, c-format msgid "Compress gzip error: %d" msgstr "" -#: fwrite.c:753 fwrite.c:761 fwrite.c:940 fwrite.c:949 +#: fwrite.c:751 fwrite.c:759 fwrite.c:953 #, c-format msgid "%s: '%s'" msgstr "" -#: fwrite.c:758 +#: fwrite.c:756 #, c-format msgid "done in %.3fs\n" msgstr "" -#: fwrite.c:760 +#: fwrite.c:758 msgid "No data rows present (nrow==0)\n" msgstr "" -#: fwrite.c:777 +#: fwrite.c:776 #, c-format msgid "" -"Writing %d rows in %d batches of %d rows (each buffer size %dMB, " -"showProgress=%d, nth=%d) ... " +"Writing %lld rows in %d batches of %d rows (each buffer size %dMB, " +"showProgress=%d, nth=%d)\n" msgstr "" -#: fwrite.c:946 +#: fwrite.c:961 #, c-format -msgid "" -"Error %d: one or more threads failed to allocate buffers or there was a " -"compression error." +msgid "zlib v%s deflate() returned error %d with z_stream.msg '%s'. %s\n" +msgstr "" + +#: fwrite.c:962 +msgid "Please include the full output above in your data.table bug report." msgstr "" -#: fwrite.c:947 +#: fwrite.c:963 msgid "" -" Please try again with verbose=TRUE and try searching online for this error " -"message.\n" +"Please retry fwrite() with verbose=TRUE and include the full output with " +"your data.table bug report." msgstr "" #: fwriteR.c:41 @@ -4026,7 +4028,7 @@ msgstr "" msgid "Item %d of n is NA" msgstr "" -#: shift.c:158 +#: shift.c:157 #, c-format msgid "Unsupported type '%s'" msgstr "" @@ -4290,19 +4292,19 @@ msgstr "" msgid "%s: fill argument must be numeric" msgstr "" -#: utils.c:274 +#: utils.c:273 #, c-format msgid "Internal error: unsupported type '%s' passed to copyAsPlain()" msgstr "" -#: utils.c:278 +#: utils.c:277 #, c-format msgid "" "Internal error: type '%s' passed to copyAsPlain() but it seems " "copyMostAttrib() retains ALTREP attributes" msgstr "" -#: utils.c:313 +#: utils.c:312 #, c-format msgid "Found and copied %d column%s with a shared memory address\n" msgstr "" diff --git a/po/zh_CN.po b/po/zh_CN.po index 3554bec910..432db4cb85 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-10-16 15:03+0800\n" +"POT-Creation-Date: 2019-10-16 22:10+0800\n" "PO-Revision-Date: 2019-10-04 17:06+08\n" "Last-Translator: Michael Chirico \n" "Language-Team: Mandarin\n" @@ -1328,144 +1328,144 @@ msgstr "" msgid "names(data) is NULL. Please report to data.table-help" msgstr "" -#: forder.c:103 +#: forder.c:106 #, c-format msgid "Failed to realloc thread private group size buffer to %d*4bytes" msgstr "" -#: forder.c:117 +#: forder.c:120 #, c-format msgid "Failed to realloc group size result to %d*4bytes" msgstr "" -#: forder.c:260 +#: forder.c:263 #, c-format msgid "" "Logical error. counts[0]=%d in cradix but should have been decremented to 0. " "radix=%d" msgstr "" -#: forder.c:275 +#: forder.c:278 msgid "Failed to alloc cradix_counts" msgstr "" -#: forder.c:277 +#: forder.c:280 msgid "Failed to alloc cradix_tmp" msgstr "" -#: forder.c:288 +#: forder.c:291 #, c-format msgid "" "Internal error: ustr isn't empty when starting range_str: ustr_n=%d, " "ustr_alloc=%d" msgstr "" -#: forder.c:289 +#: forder.c:292 msgid "Internal error: ustr_maxlen isn't 0 when starting range_str" msgstr "" -#: forder.c:309 +#: forder.c:312 #, c-format msgid "Unable to realloc %d * %d bytes in range_str" msgstr "" -#: forder.c:327 +#: forder.c:330 msgid "Failed to alloc ustr3 when converting strings to UTF8" msgstr "" -#: forder.c:345 +#: forder.c:348 msgid "Failed to alloc tl when converting strings to UTF8" msgstr "" -#: forder.c:374 +#: forder.c:377 msgid "Must an integer or numeric vector length 1" msgstr "" -#: forder.c:375 +#: forder.c:378 msgid "Must be 2, 1 or 0" msgstr "" -#: forder.c:409 +#: forder.c:412 msgid "Unknown non-finite value; not NA, NaN, -Inf or +Inf" msgstr "" -#: forder.c:431 +#: forder.c:434 msgid "" "Internal error: input is not either a list of columns, or an atomic vector." msgstr "" -#: forder.c:433 +#: forder.c:436 msgid "" "Internal error: input is an atomic vector (not a list of columns) but by= is " "not NULL" msgstr "" -#: forder.c:435 +#: forder.c:438 msgid "" "Input is an atomic vector (not a list of columns) but order= is not a length " "1 integer" msgstr "" -#: forder.c:437 +#: forder.c:440 #, c-format msgid "forder.c received a vector type '%s' length %d\n" msgstr "" -#: forder.c:445 +#: forder.c:448 #, c-format msgid "forder.c received %d rows and %d columns\n" msgstr "" -#: forder.c:448 +#: forder.c:451 forder.c:456 msgid "Internal error: DT is an empty list() of 0 columns" msgstr "" -#: forder.c:450 +#: forder.c:453 forder.c:458 #, c-format msgid "" "Internal error: DT has %d columns but 'by' is either not integer or is " "length 0" msgstr "" -#: forder.c:452 +#: forder.c:455 forder.c:460 #, c-format msgid "" "Either order= is not integer or its length (%d) is different to by='s length " "(%d)" msgstr "" -#: forder.c:458 +#: forder.c:466 #, c-format msgid "internal error: 'by' value %d out of range [1,%d]" msgstr "" -#: forder.c:460 +#: forder.c:468 #, c-format msgid "Column %d is length %d which differs from length of column 1 (%d)\n" msgstr "" -#: forder.c:464 +#: forder.c:472 msgid "retGrp must be TRUE or FALSE" msgstr "" -#: forder.c:467 +#: forder.c:475 msgid "sort must be TRUE or FALSE" msgstr "" -#: forder.c:470 +#: forder.c:478 msgid "At least one of retGrp= or sort= must be TRUE" msgstr "" -#: forder.c:472 +#: forder.c:480 msgid "na.last must be logical TRUE, FALSE or NA of length 1" msgstr "" -#: forder.c:514 +#: forder.c:524 #, c-format msgid "Item %d of order (ascending/descending) is %d. Must be +1 or -1." msgstr "" -#: forder.c:540 +#: forder.c:550 #, c-format msgid "" "\n" @@ -1474,51 +1474,51 @@ msgid "" "to save space and time.\n" msgstr "" -#: forder.c:556 +#: forder.c:566 #, c-format msgid "Column %d passed to [f]order is type '%s', not yet supported." msgstr "" -#: forder.c:705 +#: forder.c:719 msgid "Internal error: column not supported not caught earlier" msgstr "" -#: forder.c:713 +#: forder.c:727 #, c-format msgid "nradix=%d\n" msgstr "" -#: forder.c:719 +#: forder.c:733 #, c-format msgid "" "Failed to allocate TMP or UGRP or they weren't cache line aligned: nth=%d" msgstr "" -#: forder.c:724 +#: forder.c:738 msgid "Could not allocate (very tiny) group size thread buffers" msgstr "" -#: forder.c:785 +#: forder.c:799 #, c-format msgid "Timing block %2d%s = %8.3f %8d\n" msgstr "" -#: forder.c:788 +#: forder.c:802 #, c-format msgid "stat[%03d]==%10zd\n" msgstr "" -#: forder.c:1044 +#: forder.c:1058 #, c-format msgid "Failed to allocate parallel counts. my_n=%d, nBatch=%d" msgstr "" -#: forder.c:1153 +#: forder.c:1167 #, c-format msgid "Unable to allocate TMP for my_n=%d items in parallel batch counting" msgstr "" -#: forder.c:1260 +#: forder.c:1275 msgid "" "is.sorted (R level) and fsorted (C level) only to be used on vectors. If " "needed on a list/data.table, you'll need the order anyway if not sorted, so " @@ -1526,25 +1526,25 @@ msgid "" "C level" msgstr "" -#: forder.c:1292 +#: forder.c:1307 #, c-format msgid "type '%s' is not yet supported" msgstr "" -#: forder.c:1301 +#: forder.c:1316 msgid "x must be either NULL or an integer vector" msgstr "" -#: forder.c:1303 +#: forder.c:1318 msgid "nrow must be integer vector length 1" msgstr "" -#: forder.c:1305 +#: forder.c:1320 #, c-format msgid "nrow==%d but must be >=0" msgstr "" -#: forder.c:1322 +#: forder.c:1337 msgid "x must be type 'double'" msgstr "" @@ -2854,7 +2854,7 @@ msgstr "" msgid "%lld " msgstr "" -#: fsort.c:246 fwrite.c:692 fwrite.c:779 fwrite.c:890 fwrite.c:934 +#: fsort.c:246 fwrite.c:690 fwrite.c:947 msgid "\n" msgstr "" @@ -2873,49 +2873,49 @@ msgstr "" msgid "%d: %.3f (%4.1f%%)\n" msgstr "" -#: fwrite.c:603 +#: fwrite.c:601 #, c-format msgid "buffMB=%d outside [1,1024]" msgstr "" -#: fwrite.c:610 +#: fwrite.c:608 #, c-format msgid "" "eol must be 1 or more bytes (usually either \\n or \\r\\n) but is length %d" msgstr "" -#: fwrite.c:613 +#: fwrite.c:611 msgid "Column writers: " msgstr "" -#: fwrite.c:615 fwrite.c:617 fwrite.c:619 +#: fwrite.c:613 fwrite.c:615 fwrite.c:617 #, c-format msgid "%d " msgstr "" -#: fwrite.c:618 +#: fwrite.c:616 msgid "... " msgstr "" -#: fwrite.c:621 +#: fwrite.c:619 #, c-format msgid "" "\n" -"args.doRowNames=%d args.rowNames=%d doQuote=%d args.nrow=%d args.ncol=%d " +"args.doRowNames=%d args.rowNames=%d doQuote=%d args.nrow=%lld args.ncol=%d " "eolLen=%d\n" msgstr "" -#: fwrite.c:654 +#: fwrite.c:652 #, c-format msgid "Internal error: type %d has no max length method implemented" msgstr "" -#: fwrite.c:661 +#: fwrite.c:659 #, c-format msgid "maxLineLen=%zd. Found in %.3fs\n" msgstr "" -#: fwrite.c:681 +#: fwrite.c:679 #, c-format msgid "" "%s: '%s'. Failed to open existing file for writing. Do you have write " @@ -2923,7 +2923,7 @@ msgid "" "have it open?" msgstr "" -#: fwrite.c:682 +#: fwrite.c:680 #, c-format msgid "" "%s: '%s'. Unable to create new file for writing (it does not exist already). " @@ -2931,62 +2931,64 @@ msgid "" "the path exist?" msgstr "" -#: fwrite.c:690 +#: fwrite.c:688 #, c-format msgid "Writing bom (%s), yaml (%d characters) and column names (%s) ... " msgstr "" -#: fwrite.c:703 +#: fwrite.c:701 #, c-format msgid "Unable to allocate %d MiB for header: %s" msgstr "" -#: fwrite.c:731 fwrite.c:793 +#: fwrite.c:729 fwrite.c:789 msgid "Can't allocate gzip stream structure" msgstr "" -#: fwrite.c:737 +#: fwrite.c:735 #, c-format msgid "Unable to allocate %d MiB for zbuffer: %s" msgstr "" -#: fwrite.c:752 +#: fwrite.c:750 #, c-format msgid "Compress gzip error: %d" msgstr "" -#: fwrite.c:753 fwrite.c:761 fwrite.c:940 fwrite.c:949 +#: fwrite.c:751 fwrite.c:759 fwrite.c:953 #, c-format msgid "%s: '%s'" msgstr "" -#: fwrite.c:758 +#: fwrite.c:756 #, c-format msgid "done in %.3fs\n" msgstr "" -#: fwrite.c:760 +#: fwrite.c:758 msgid "No data rows present (nrow==0)\n" msgstr "" -#: fwrite.c:777 +#: fwrite.c:776 #, c-format msgid "" -"Writing %d rows in %d batches of %d rows (each buffer size %dMB, " -"showProgress=%d, nth=%d) ... " +"Writing %lld rows in %d batches of %d rows (each buffer size %dMB, " +"showProgress=%d, nth=%d)\n" msgstr "" -#: fwrite.c:946 +#: fwrite.c:961 #, c-format -msgid "" -"Error %d: one or more threads failed to allocate buffers or there was a " -"compression error." +msgid "zlib v%s deflate() returned error %d with z_stream.msg '%s'. %s\n" +msgstr "" + +#: fwrite.c:962 +msgid "Please include the full output above in your data.table bug report." msgstr "" -#: fwrite.c:947 +#: fwrite.c:963 msgid "" -" Please try again with verbose=TRUE and try searching online for this error " -"message.\n" +"Please retry fwrite() with verbose=TRUE and include the full output with " +"your data.table bug report." msgstr "" #: fwriteR.c:41 @@ -4020,7 +4022,7 @@ msgstr "" msgid "Item %d of n is NA" msgstr "" -#: shift.c:158 +#: shift.c:157 #, c-format msgid "Unsupported type '%s'" msgstr "" @@ -4284,19 +4286,19 @@ msgstr "" msgid "%s: fill argument must be numeric" msgstr "" -#: utils.c:274 +#: utils.c:273 #, c-format msgid "Internal error: unsupported type '%s' passed to copyAsPlain()" msgstr "" -#: utils.c:278 +#: utils.c:277 #, c-format msgid "" "Internal error: type '%s' passed to copyAsPlain() but it seems " "copyMostAttrib() retains ALTREP attributes" msgstr "" -#: utils.c:313 +#: utils.c:312 #, c-format msgid "Found and copied %d column%s with a shared memory address\n" msgstr "" diff --git a/src/forder.c b/src/forder.c index 275bc996ff..3b2eb8b55a 100644 --- a/src/forder.c +++ b/src/forder.c @@ -469,10 +469,10 @@ SEXP forder(SEXP DT, SEXP by, SEXP retGrpArg, SEXP sortGroupsArg, SEXP ascArg, S if (TYPEOF(VECTOR_ELT(DT, by_i-1)) == CPLXSXP) n_cplx++; } if (!isLogical(retGrpArg) || LENGTH(retGrpArg)!=1 || INTEGER(retGrpArg)[0]==NA_LOGICAL) - STOP(_("retGrp= must be TRUE or FALSE")); + STOP(_("retGrp must be TRUE or FALSE")); retgrp = LOGICAL(retGrpArg)[0]==TRUE; if (!isLogical(sortGroupsArg) || LENGTH(sortGroupsArg)!=1 || INTEGER(sortGroupsArg)[0]==NA_LOGICAL ) - STOP(_("sort= must be TRUE or FALSE")); + STOP(_("sort must be TRUE or FALSE")); sortType = LOGICAL(sortGroupsArg)[0]==TRUE; // if sortType is 1, it is later flipped between +1/-1 according to ascArg. Otherwise ascArg is ignored when sortType==0 if (!retgrp && !sortType) STOP(_("At least one of retGrp= or sort= must be TRUE")); From a0139bb8d69fe1f29244ddfcd5d6c2979970f33d Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Thu, 17 Oct 2019 00:13:23 +0800 Subject: [PATCH 16/78] add template message in onAttach() & clear typos/PYDT issue along the way --- R/onAttach.R | 2 ++ inst/po/en@quot/LC_MESSAGES/R-data.table.mo | Bin 87262 -> 88074 bytes inst/po/en@quot/LC_MESSAGES/data.table.mo | Bin 137326 -> 137130 bytes inst/po/zh_CN/LC_MESSAGES/R-data.table.mo | Bin 463 -> 504 bytes po/R-data.table.pot | 11 ++++++++- po/R-zh_CN.po | 16 ++++++++++++- po/data.table.pot | 24 ++++++-------------- po/zh_CN.po | 24 ++++++-------------- src/data.table.h | 8 +------ src/fread.c | 10 ++++---- src/freadR.c | 8 +++---- src/freadR.h | 1 + src/fwrite.h | 1 + src/init.c | 2 +- src/openmp-utils.c | 2 +- src/po.h | 6 +++++ src/rbindlist.c | 2 +- 17 files changed, 62 insertions(+), 55 deletions(-) create mode 100644 src/po.h diff --git a/R/onAttach.R b/R/onAttach.R index 95eb93249a..397b0b93dc 100644 --- a/R/onAttach.R +++ b/R/onAttach.R @@ -20,6 +20,8 @@ if (!isTRUE(getOption("datatable.quiet"))) { # new option in v1.12.4, #3489 packageStartupMessage("data.table ", v, if(dev)paste0(" IN DEVELOPMENT built ",d,g), " using ", getDTthreads(verbose=FALSE), " threads (see ?getDTthreads). Latest news: r-datatable.com") + if (gettext("TRANSLATION CHECK", domain='R-data.table') != "TRANSLATION CHECK") + packageStartupMessage(gettext("**********\n", "Running data.table in English; package support is available in English only. When searching for online help, be sure to also check for the English error message. This can be obtained by looking at the po/R-.po and po/.po files in the package source, where the native language and English error messages can be found side-by-side")) if (dev && (Sys.Date() - as.Date(d))>28L) packageStartupMessage("**********\nThis development version of data.table was built more than 4 weeks ago. Please update: data.table::update.dev.pkg()\n**********") if (!.Call(ChasOpenMP)) diff --git a/inst/po/en@quot/LC_MESSAGES/R-data.table.mo b/inst/po/en@quot/LC_MESSAGES/R-data.table.mo index 051c963766c998d4d13b35d619fbe858af2c3a66..70ec2614b453a12fbdad9f3ed17bab57f75ac443 100644 GIT binary patch delta 13270 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

8xqSp)U9Xszpwsn*1@gz%1#lD@LQ9@LyE@pbS2D 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 delta 17879 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 delta 105 zcmeyte4aV>o)F7a1|VPtVi_Pd0b*7l_5orLNC09rAWj5gHX!Z*Vm?L&hJGNe0mSow bY<3`h97qEZ*c>3mzyu;D<{E9>=)ed7Ufv4Y diff --git a/po/R-data.table.pot b/po/R-data.table.pot index 3d31b50fab..fac36fde7e 100644 --- a/po/R-data.table.pot +++ b/po/R-data.table.pot @@ -1,7 +1,7 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.5\n" -"POT-Creation-Date: 2019-10-16 22:08\n" +"POT-Creation-Date: 2019-10-17 00:12\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -1360,6 +1360,15 @@ msgstr "" msgid "threads (see ?getDTthreads). Latest news: r-datatable.com" msgstr "" +msgid "TRANSLATION CHECK" +msgstr "" + +msgid "**********" +msgstr "" + +msgid "Running data.table in English; package support is available in English only. When searching for online help, be sure to also check for the English error message. This can be obtained by looking at the po/R-.po and po/.po files in the package source, where the native language and English error messages can be found side-by-side" +msgstr "" + msgid "**********\nThis development version of data.table was built more than 4 weeks ago. Please update: data.table::update.dev.pkg()\n**********" msgstr "" diff --git a/po/R-zh_CN.po b/po/R-zh_CN.po index e6b15b9ba3..d3a9e851b4 100644 --- a/po/R-zh_CN.po +++ b/po/R-zh_CN.po @@ -1,7 +1,7 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.5\n" -"POT-Creation-Date: 2019-10-16 22:08\n" +"POT-Creation-Date: 2019-10-17 00:12\n" "PO-Revision-Date: 2019-10-04 17:06+08\n" "Last-Translator: Michael Chirico \n" "Language-Team: Mandarin\n" @@ -1652,6 +1652,20 @@ msgstr "" msgid "threads (see ?getDTthreads). Latest news: r-datatable.com" msgstr "" +msgid "TRANSLATION CHECK" +msgstr "中文" + +msgid "**********" +msgstr "" + +msgid "" +"Running data.table in English; package support is available in English only. " +"When searching for online help, be sure to also check for the English error " +"message. This can be obtained by looking at the po/R-.po and po/" +".po files in the package source, where the native language and " +"English error messages can be found side-by-side" +msgstr "" + msgid "" "**********\n" "This development version of data.table was built more than 4 weeks ago. " diff --git a/po/data.table.pot b/po/data.table.pot index ce7970e4d4..8d350a80c8 100644 --- a/po/data.table.pot +++ b/po/data.table.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-10-16 22:40+0800\n" +"POT-Creation-Date: 2019-10-17 00:04+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -1602,12 +1602,6 @@ msgstr "" msgid "Internal error. Argument 'cols' to CanyNA is type '%s' not 'integer'" msgstr "" -#: fread.c:106 -#, c-format -msgid "" -"Internal error in line %d of fread.c, please report on data.table GitHub: " -msgstr "" - #: fread.c:149 #, c-format msgid "System error %d unmapping view of file\n" @@ -2248,11 +2242,6 @@ msgid "" "Column %d (\"%.*s\") bumped from '%s' to '%s' due to <<%.*s>> on row %llu\n" msgstr "" -#: fread.c:2330 fread.c:2465 freadR.c:660 -#, c-format -msgid "%s" -msgstr "" - #: fread.c:2337 #, c-format msgid "" @@ -2306,7 +2295,7 @@ msgstr "" msgid "" "Found and resolved improper quoting out-of-sample. First healed line %llu: <<" "%s>>. If the fields are not quoted (e.g. field separator does not appear " -"within any field), try quote=\")\" to avoid this warning." +"within any field), try quote=\"\" to avoid this warning." msgstr "" #: fread.c:2441 @@ -2525,10 +2514,6 @@ msgstr "" msgid "" "colClasses= is an unnamed vector of types, length %d, but there are %d " "columns in the input. To specify types for a subset of columns, you can use " -msgstr "" - -#: freadR.c:319 -msgid "" "a named vector, list format, or specify types using select= instead of " "colClasses=. Please see examples in ?fread." msgstr "" @@ -2580,6 +2565,11 @@ msgstr "" msgid "Internal error: unexpected field of size %d\n" msgstr "" +#: freadR.c:660 +#, c-format +msgid "%s" +msgstr "" + #: froll.c:18 froll.c:227 froll.c:411 #, c-format msgid "%s: window width longer than input vector, returning all NA vector\n" diff --git a/po/zh_CN.po b/po/zh_CN.po index 432db4cb85..1f9f948579 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-10-16 22:10+0800\n" +"POT-Creation-Date: 2019-10-17 00:04+0800\n" "PO-Revision-Date: 2019-10-04 17:06+08\n" "Last-Translator: Michael Chirico \n" "Language-Team: Mandarin\n" @@ -1596,12 +1596,6 @@ msgstr "" msgid "Internal error. Argument 'cols' to CanyNA is type '%s' not 'integer'" msgstr "" -#: fread.c:106 -#, c-format -msgid "" -"Internal error in line %d of fread.c, please report on data.table GitHub: " -msgstr "" - #: fread.c:149 #, c-format msgid "System error %d unmapping view of file\n" @@ -2242,11 +2236,6 @@ msgid "" "Column %d (\"%.*s\") bumped from '%s' to '%s' due to <<%.*s>> on row %llu\n" msgstr "" -#: fread.c:2330 fread.c:2465 freadR.c:660 -#, c-format -msgid "%s" -msgstr "" - #: fread.c:2337 #, c-format msgid "" @@ -2300,7 +2289,7 @@ msgstr "" msgid "" "Found and resolved improper quoting out-of-sample. First healed line %llu: <<" "%s>>. If the fields are not quoted (e.g. field separator does not appear " -"within any field), try quote=\")\" to avoid this warning." +"within any field), try quote=\"\" to avoid this warning." msgstr "" #: fread.c:2441 @@ -2519,10 +2508,6 @@ msgstr "" msgid "" "colClasses= is an unnamed vector of types, length %d, but there are %d " "columns in the input. To specify types for a subset of columns, you can use " -msgstr "" - -#: freadR.c:319 -msgid "" "a named vector, list format, or specify types using select= instead of " "colClasses=. Please see examples in ?fread." msgstr "" @@ -2574,6 +2559,11 @@ msgstr "" msgid "Internal error: unexpected field of size %d\n" msgstr "" +#: freadR.c:660 +#, c-format +msgid "%s" +msgstr "" + #: froll.c:18 froll.c:227 froll.c:411 #, c-format msgid "%s: window width longer than input vector, returning all NA vector\n" diff --git a/src/data.table.h b/src/data.table.h index dd27e7f571..c8ebd65e1b 100644 --- a/src/data.table.h +++ b/src/data.table.h @@ -7,6 +7,7 @@ #include #include "myomp.h" #include "types.h" +#include "po.h" // data.table depends on R>=3.0.0 when R_xlen_t was introduced // Before R 3.0.0, RLEN used to be switched to R_len_t as R_xlen_t wasn't available. @@ -63,13 +64,6 @@ typedef R_xlen_t RLEN; #define ALTREP(x) 0 // for R<3.5.0, see issue #2866 and grep for "ALTREP" to see comments where it's used #endif -#ifdef ENABLE_NLS -#include -#define _(String) dgettext ("data.table", String) -#else -#define _(String) (String) -#endif - // init.c SEXP char_integer64; SEXP char_ITime; diff --git a/src/fread.c b/src/fread.c index 296bb7c336..16b85695b3 100644 --- a/src/fread.c +++ b/src/fread.c @@ -103,7 +103,7 @@ typedef struct FieldParseContext { static void Field(FieldParseContext *ctx); #define ASSERT(cond, msg, ...) \ - if (!(cond)) STOP(_("Internal error in line %d of fread.c, please report on data.table GitHub: ") msg, __LINE__, __VA_ARGS__) // # nocov + if (!(cond)) STOP("Internal error in line %d of fread.c, please report on data.table GitHub: " msg, __LINE__, __VA_ARGS__) // # nocov @@ -1565,7 +1565,7 @@ int freadMain(freadMainArgs _args) { quoteRule = topQuoteRule; if (quoteRule>1 && quote) { - DTWARN(_("Found and resolved improper quoting in first %d rows. If the fields are not quoted (e.g. field separator does not appear within any field), try quote=\")\" to avoid this warning.", jumpLines); + DTWARN(_("Found and resolved improper quoting in first %d rows. If the fields are not quoted (e.g. field separator does not appear within any field), try quote=\")\" to avoid this warning."), jumpLines); // TODO: include line number and text in warning. Could loop again with the standard quote rule to find the line that fails. } sep = topSep; @@ -2327,7 +2327,7 @@ int freadMain(freadMainArgs _args) { if (stopTeam) { if (internalErr[0]!='\0') { - STOP(_("%s"), internalErr); // # nocov + STOP("%s", internalErr); // # nocov } stopTeam = false; @@ -2434,7 +2434,7 @@ int freadMain(freadMainArgs _args) { } } if (quoteRuleBumpedCh!=NULL && quoteRuleBumpedCh>. If the fields are not quoted (e.g. field separator does not appear within any field), try quote=\")\" to avoid this warning.", (llu)quoteRuleBumpedLine, strlim(quoteRuleBumpedCh, 500)); + DTWARN(_("Found and resolved improper quoting out-of-sample. First healed line %llu: <<%s>>. If the fields are not quoted (e.g. field separator does not appear within any field), try quote=\"\" to avoid this warning."), (llu)quoteRuleBumpedLine, strlim(quoteRuleBumpedCh, 500)); } if (verbose) { @@ -2462,7 +2462,7 @@ int freadMain(freadMainArgs _args) { // if type bumps happened, it's useful to see them at the end after the timing 2 lines up showing the reread time // TODO - construct and output the copy and pastable colClasses argument so user can avoid the reread time if they are // reading this file or files formatted like it many times (say in a production environment). - DTPRINT(_("%s"), typeBumpMsg); + DTPRINT("%s", typeBumpMsg); free(typeBumpMsg); // local scope and only populated in verbose mode } } diff --git a/src/freadR.c b/src/freadR.c index 2834010074..f946cf6e8c 100644 --- a/src/freadR.c +++ b/src/freadR.c @@ -89,7 +89,7 @@ SEXP freadR( ch = args.input; while (*ch!='\0' && *ch!='\n' && *ch!='\r') ch++; if (*ch!='\0' || args.input[0]=='\0') { - if (verbose) DTPRINT(_("Input contains a \\n or is \")\". Taking this to be text input (not a filename)\n"); + if (verbose) DTPRINT(_("Input contains a \\n or is \")\". Taking this to be text input (not a filename)\n")); args.filename = NULL; } else { if (verbose) DTPRINT(_("Input contains no \\n. Taking this to be a filename to open\n")); @@ -109,7 +109,7 @@ SEXP freadR( args.quote = '\0'; } else { if (!isString(quoteArg) || LENGTH(quoteArg)!=1 || strlen(CHAR(STRING_ELT(quoteArg,0))) > 1) - error(_("quote= must be a single character, blank \")\", or FALSE"); + error(_("quote= must be a single character, blank \")\", or FALSE")); args.quote = CHAR(STRING_ELT(quoteArg,0))[0]; } @@ -315,8 +315,8 @@ bool userOverride(int8_t *type, lenOff *colNames, const char *anchor, int ncol) if (INTEGER(typeEnum_idx)[0]==NUT) for (int i=0; i +#include "po.h" #define FREAD_MAIN_ARGS_EXTRA_FIELDS diff --git a/src/fwrite.h b/src/fwrite.h index f4219d003d..b03bb571aa 100644 --- a/src/fwrite.h +++ b/src/fwrite.h @@ -3,6 +3,7 @@ #else #define STRICT_R_HEADERS #include + #include "po.h" #define STOP error #define DTPRINT Rprintf #endif diff --git a/src/init.c b/src/init.c index 2a4deebfd8..716df8f7fc 100644 --- a/src/init.c +++ b/src/init.c @@ -287,7 +287,7 @@ void attribute_visible R_init_datatable(DllInfo *info) if (TYPEOF(char_integer64) != CHARSXP) { // checking one is enough in case of any R-devel changes - error(_("PRINTNAME(install(\")integer64\")) has returned %s not %s", type2char(TYPEOF(char_integer64)), type2char(CHARSXP)); // # nocov + error(_("PRINTNAME(install(\")integer64\")) has returned %s not %s"), type2char(TYPEOF(char_integer64)), type2char(CHARSXP)); // # nocov } // create commonly used symbols, same as R_*Symbol but internal to DT diff --git a/src/openmp-utils.c b/src/openmp-utils.c index f1d732459f..b901601843 100644 --- a/src/openmp-utils.c +++ b/src/openmp-utils.c @@ -19,7 +19,7 @@ static int getIntEnv(const char *name, int def) long int ans = strtol(val, &end, 10); // ignores leading whitespace. If it fully consumed the string, *end=='\0' and isspace('\0')==false while (isspace(*end)) end++; // ignore trailing whitespace if (errno || (size_t)(end-val)!=nchar || ans<1 || ans>INT_MAX) { - warning(_("Ignoring invalid %s==\")%s\". Not an integer >= 1. Please remove any characters that are not a digit [0-9]. See ?data.table::setDTthreads.", name, val); + warning(_("Ignoring invalid %s==\")%s\". Not an integer >= 1. Please remove any characters that are not a digit [0-9]. See ?data.table::setDTthreads."), name, val); return def; } return (int)ans; diff --git a/src/po.h b/src/po.h new file mode 100644 index 0000000000..8392f6b375 --- /dev/null +++ b/src/po.h @@ -0,0 +1,6 @@ +#ifdef ENABLE_NLS +#include +#define _(String) dgettext ("data.table", String) +#else +#define _(String) (String) +#endif diff --git a/src/rbindlist.c b/src/rbindlist.c index a882648305..902aed62a4 100644 --- a/src/rbindlist.c +++ b/src/rbindlist.c @@ -7,7 +7,7 @@ SEXP rbindlist(SEXP l, SEXP usenamesArg, SEXP fillArg, SEXP idcolArg) if (!isLogical(fillArg) || LENGTH(fillArg) != 1 || LOGICAL(fillArg)[0] == NA_LOGICAL) error(_("fill= should be TRUE or FALSE")); if (!isLogical(usenamesArg) || LENGTH(usenamesArg)!=1) - error(_("use.names= should be TRUE, FALSE, or not used (\")check\" by default)"); // R levels converts "check" to NA + error(_("use.names= should be TRUE, FALSE, or not used (\")check\" by default)")); // R levels converts "check" to NA if (!length(l)) return(l); if (TYPEOF(l) != VECSXP) error(_("Input to rbindlist must be a list. This list can contain data.tables, data.frames or plain lists.")); Rboolean usenames = LOGICAL(usenamesArg)[0]; From a37bde34fb11a3e4176658f1fe3fa22565e1c4e6 Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Fri, 18 Oct 2019 01:04:58 +0800 Subject: [PATCH 17/78] remove some strings --- inst/po/en@quot/LC_MESSAGES/data.table.mo | Bin 137130 -> 137036 bytes po/data.table.pot | 16 +--------------- po/zh_CN.po | 16 +--------------- src/types.c | 6 +++--- 4 files changed, 5 insertions(+), 33 deletions(-) diff --git a/inst/po/en@quot/LC_MESSAGES/data.table.mo b/inst/po/en@quot/LC_MESSAGES/data.table.mo index 6e450d9931d1a8ee40f1296ad236d35542090d8b..ed8b7ed95b5e9261d6e9a440cb318b8d31f8f0f9 100644 GIT binary patch delta 17585 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 F?tlI|--G}F delta 17679 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

NtgBV&=}B`h_ha&us>xlNMDh(ogu9v zACLVN-4fJR!ag*PZZ$SErI^SU$%8ucF(kbdxrTk0W ztMC636#hg|io$P6hsnoK7RW(6QCl<8X3BHB5wB((OWld24&;yFOiW3gtzMlZc%C?z z^F*>=TXy`1RN0Fs#;*SryaH7U<)9SA$vChq`RXcUyGL11%ewzDN+R|(C;p7`0;E9l zmq__Z8A)*|dqtgG2F5Td?8&JjcGA+`zwHnLjl_ehMf3KL=gqWaqpK?#H~O{NA0{ zB43*m6!Z2!{m-$vsPi4=xxKQ?gT|W)K5!_B438OQ@njSu{UWjhit-c{Oqjc zoumZ$JS1&jks4FsA6$yDTg(6CyOFQp#V~_JXAZ zg-KIMRY|eicrp)T1N_IU-v(28<#)K)3-ZZH8z>)1JdJ!9c|BlV(mwCFS>7?CtX{4k z*_qZW44~3&;;)GplHQTJ5o;U8zG%|dr14%^dYX9WPm#V~ecNwUo|ZZ=ynV^U;r*QO mekDUJTXK7src=+xjVc*cc;~+nzFtB9pDH`smG?ck_\n" "Language-Team: LANGUAGE \n" @@ -4148,20 +4148,6 @@ msgstr "" msgid "Item %d of list input is not an atomic vector" msgstr "" -#: types.c:17 types.c:21 -#, c-format -msgid "" -"%s: %d:\n" -"%s" -msgstr "" - -#: types.c:23 -#, c-format -msgid "" -"%s: %d:\n" -"%s:" -msgstr "" - #: types.c:55 msgid "internal error: status, nx, nk must be integer" msgstr "" diff --git a/po/zh_CN.po b/po/zh_CN.po index 1f9f948579..4c4d2cae02 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-10-17 00:04+0800\n" +"POT-Creation-Date: 2019-10-17 09:01+0800\n" "PO-Revision-Date: 2019-10-04 17:06+08\n" "Last-Translator: Michael Chirico \n" "Language-Team: Mandarin\n" @@ -4142,20 +4142,6 @@ msgstr "" msgid "Item %d of list input is not an atomic vector" msgstr "" -#: types.c:17 types.c:21 -#, c-format -msgid "" -"%s: %d:\n" -"%s" -msgstr "" - -#: types.c:23 -#, c-format -msgid "" -"%s: %d:\n" -"%s:" -msgstr "" - #: types.c:55 msgid "internal error: status, nx, nk must be integer" msgstr "" diff --git a/src/types.c b/src/types.c index 67cc8ce74a..3418fc740c 100644 --- a/src/types.c +++ b/src/types.c @@ -14,13 +14,13 @@ char *end(char *start) { void ansMsg(ans_t *ans, int n, bool verbose, const char *func) { for (int i=0; i Date: Mon, 21 Oct 2019 15:39:47 +0800 Subject: [PATCH 18/78] improve arg checking&message in groupingsets; add some messages --- R/groupingsets.R | 6 +++--- inst/po/en@quot/LC_MESSAGES/R-data.table.mo | Bin 88074 -> 88404 bytes po/R-data.table.pot | 11 ++++++++++- po/R-zh_CN.po | 11 ++++++++++- 4 files changed, 23 insertions(+), 5 deletions(-) diff --git a/R/groupingsets.R b/R/groupingsets.R index dadcbb0fe8..5d4c0fffac 100644 --- a/R/groupingsets.R +++ b/R/groupingsets.R @@ -60,10 +60,10 @@ groupingsets.data.table = function(x, j, by, sets, .SDcols, id = FALSE, jj, ...) stop("All columns used in 'sets' argument must be in 'by' too. Columns used in 'sets' but not present in 'by': ", brackify(setdiff(sets.all.by, by))) if (id && "grouping" %chin% names(x)) stop("When using `id=TRUE` the 'x' data.table must not have a column named 'grouping'.") - if (!all(sapply(sets, function(x) length(x)==uniqueN(x)))) + if (any(sapply(sets, anyDuplicated))) stop("Character vectors in 'sets' list must not have duplicated column names within a single grouping set.") - if (!identical(lapply(sets, sort), unique(lapply(sets, sort)))) - warning("Double counting is going to happen. Argument 'sets' should be unique without taking order into account, unless you really want double counting, then get used to that warning. Otherwise `sets=unique(lapply(sets, sort))` will do the trick.") + if (length(sets) > 1L && (idx<-anyDuplicated(lapply(sets, sort)))) + warning("'sets' contains a duplicate (i.e., equivalent up to sorting) element at index ", idx, "; as such, there will be duplicate rows in the output -- note that grouping by A,B and B,A will produce the same aggregations. Use `sets=unique(lapply(sets, sort))` to eliminate duplicates.") # input arguments handling jj = if (!missing(jj)) jj else substitute(j) av = all.vars(jj, TRUE) diff --git a/inst/po/en@quot/LC_MESSAGES/R-data.table.mo b/inst/po/en@quot/LC_MESSAGES/R-data.table.mo index 70ec2614b453a12fbdad9f3ed17bab57f75ac443..7a27b5501fc5ee101c65494651485108c67cb47a 100644 GIT binary patch delta 12818 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 I9do1q3q@iX5dZ)H delta 12526 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 diff --git a/po/R-data.table.pot b/po/R-data.table.pot index fac36fde7e..efc5b7de2d 100644 --- a/po/R-data.table.pot +++ b/po/R-data.table.pot @@ -1,7 +1,7 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.5\n" -"POT-Creation-Date: 2019-10-17 00:12\n" +"POT-Creation-Date: 2019-10-19 12:10\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -1405,6 +1405,15 @@ msgstr "" msgid "and reinstall data.table in a fresh R session. The root cause is that R's package installer can in some unconfirmed circumstances leave a package in a state that is apparently functional but where new R code is calling old C code silently: https://bugs.r-project.org/bugzilla/show_bug.cgi?id=17478. Once a package is in this mismatch state it may produce wrong results silently until you next upgrade the package. Please help by adding precise circumstances to 17478 to move the status to confirmed. This mismatch between R and C code can happen with any package not just data.table. It is just that data.table has added this check." msgstr "" +msgid "This is R" +msgstr "" + +msgid "but data.table has been installed using R" +msgstr "" + +msgid ". The major version must match. Please reinstall data.table." +msgstr "" + msgid "Option 'datatable.old.bywithoutby' has been removed as warned for 2 years. It is now ignored. Please use by=.EACHI instead and stop using this option." msgstr "" diff --git a/po/R-zh_CN.po b/po/R-zh_CN.po index d3a9e851b4..7574db6fe5 100644 --- a/po/R-zh_CN.po +++ b/po/R-zh_CN.po @@ -1,7 +1,7 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.5\n" -"POT-Creation-Date: 2019-10-17 00:12\n" +"POT-Creation-Date: 2019-10-19 12:10\n" "PO-Revision-Date: 2019-10-04 17:06+08\n" "Last-Translator: Michael Chirico \n" "Language-Team: Mandarin\n" @@ -1729,6 +1729,15 @@ msgid "" "just that data.table has added this check." msgstr "" +msgid "This is R" +msgstr "" + +msgid "but data.table has been installed using R" +msgstr "" + +msgid ". The major version must match. Please reinstall data.table." +msgstr "" + msgid "" "Option 'datatable.old.bywithoutby' has been removed as warned for 2 years. " "It is now ignored. Please use by=.EACHI instead and stop using this option." From 48e3b1a7601f97a4b9d7fa18876a01a8befc01fc Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Mon, 21 Oct 2019 16:14:06 +0800 Subject: [PATCH 19/78] get tests working (fix some bad quotes, adjust to new messages) --- inst/tests/tests.Rraw | 10 +++++----- src/forder.c | 5 ----- src/fread.c | 2 +- src/freadR.c | 2 +- src/rbindlist.c | 2 +- 5 files changed, 8 insertions(+), 13 deletions(-) diff --git a/inst/tests/tests.Rraw b/inst/tests/tests.Rraw index 81d9fcaebd..4ae2710bdb 100644 --- a/inst/tests/tests.Rraw +++ b/inst/tests/tests.Rraw @@ -10059,7 +10059,7 @@ test(1695.14, x %between% c(3, NA), rep(NA, 3L)) test(1695.15, x %between% c(NA, NA), rep(NA, 3L)) x = integer(0) test(1695.16, x %between% c(3, 7), logical(0)) -test(1695.17, TRUE %between% c(3, 7), error="between has been x of type logical") +test(1695.17, TRUE %between% c(3, 7), error="between has been passed an argument x of type logical") x = c("foo","bar","paz") test(1695.18, between(x, "bag", "fog"), c(FALSE, TRUE, FALSE)) test(1695.19, between(x, c("b","f","a"), "q"), c(TRUE, FALSE, TRUE)) @@ -10902,14 +10902,14 @@ test(1750.18, uniqueN({ r <- groupingsets(dt, j = c(list(cnt=.N), lapply(.SD, sum)), by = c("color","year","status"), sets=sets, id=TRUE) r[, lapply(.SD, sum), by = .(double_counting = grouping==5L, double_counting = grouping!=5L), .SDcols = c("cnt","amount","value")] }, by = c("cnt","amount","value") -), 1L, warning = "Double counting is going to happen") +), 1L, warning = "'sets' contains a duplicate") # duplicate entries in `sets` but reorderd - double counting on `grouping==1L` sets = list(c("color","year"), "year", c("year","color"), character()) test(1750.19, uniqueN({ r <- groupingsets(dt, j = c(list(cnt=.N), lapply(.SD, sum)), by = c("color","year","status"), sets=sets, id=TRUE) r[, lapply(.SD, sum), by = .(double_counting = grouping==1L, double_counting = grouping!=1L), .SDcols = c("cnt","amount","value")] }, by = c("cnt","amount","value") -), 1L, warning = "Double counting is going to happen") +), 1L, warning = "'sets' contains a duplicate") # entries in `by` / `sets` not exists in data.table test(1750.20, exists("notexist"), FALSE) # https://github.com/Rdatatable/data.table/issues/3055#issuecomment-423364960 test(1750.21, groupingsets(dt, j = c(list(cnt=.N), lapply(.SD, sum)), by = c("color","year","notexist"), sets=list(c("color"), character()), id=TRUE), error = "object 'notexist' not found") @@ -13278,8 +13278,8 @@ test(1962.039, is.sorted(3:1, by = 'x'), DT = data.table(a = 3:1) test(1962.0401, forderv(DT, sort=FALSE, retGrp=FALSE), error='At least one of retGrp= or sort= must be TRUE') -test(1962.0402, forderv(DT, sort=0), error='sort= must be TRUE or FALSE') -test(1962.0403, forderv(DT, retGrp=0), error='retGrp= must be TRUE or FALSE') +test(1962.0402, forderv(DT, sort=0), error='sort must be TRUE or FALSE') +test(1962.0403, forderv(DT, retGrp=0), error='retGrp must be TRUE or FALSE') test(1962.041, forderv(DT, na.last = logical(0L)), error='na.last must be logical TRUE, FALSE or NA of length 1') test(1962.042, forderv(DT, na.last = c(TRUE, FALSE)), error='na.last must be logical TRUE, FALSE or NA of length 1') test(1962.043, forderv(DT$a, by = 'a'), error='x is a single vector, non-NULL') diff --git a/src/forder.c b/src/forder.c index 3b2eb8b55a..e1a50257ac 100644 --- a/src/forder.c +++ b/src/forder.c @@ -448,11 +448,6 @@ SEXP forder(SEXP DT, SEXP by, SEXP retGrpArg, SEXP sortGroupsArg, SEXP ascArg, S Rprintf(_("forder.c received %d rows and %d columns\n"), length(VECTOR_ELT(DT,0)), length(DT)); } if (!length(DT)) - error(_("Internal error: DT is an empty list() of 0 columns")); // # nocov should have been caught be colnamesInt, test 2099.1 - if (!isInteger(by) || !LENGTH(by)) - error(_("Internal error: DT has %d columns but 'by' is either not integer or is length 0"), length(DT)); // # nocov colnamesInt catches, 2099.2 - if (!isInteger(ascArg) || LENGTH(ascArg)!=LENGTH(by)) - error(_("Either order= is not integer or its length (%d) is different to by='s length (%d)"), LENGTH(ascArg), LENGTH(by)); STOP(_("Internal error: DT is an empty list() of 0 columns")); // # nocov should have been caught be colnamesInt, test 2099.1 if (!isInteger(by) || !LENGTH(by)) STOP(_("Internal error: DT has %d columns but 'by' is either not integer or is length 0"), length(DT)); // # nocov colnamesInt catches, 2099.2 diff --git a/src/fread.c b/src/fread.c index 16b85695b3..649c445f2c 100644 --- a/src/fread.c +++ b/src/fread.c @@ -1565,7 +1565,7 @@ int freadMain(freadMainArgs _args) { quoteRule = topQuoteRule; if (quoteRule>1 && quote) { - DTWARN(_("Found and resolved improper quoting in first %d rows. If the fields are not quoted (e.g. field separator does not appear within any field), try quote=\")\" to avoid this warning."), jumpLines); + DTWARN(_("Found and resolved improper quoting in first %d rows. If the fields are not quoted (e.g. field separator does not appear within any field), try quote=\"\" to avoid this warning."), jumpLines); // TODO: include line number and text in warning. Could loop again with the standard quote rule to find the line that fails. } sep = topSep; diff --git a/src/freadR.c b/src/freadR.c index f946cf6e8c..0e5d042161 100644 --- a/src/freadR.c +++ b/src/freadR.c @@ -109,7 +109,7 @@ SEXP freadR( args.quote = '\0'; } else { if (!isString(quoteArg) || LENGTH(quoteArg)!=1 || strlen(CHAR(STRING_ELT(quoteArg,0))) > 1) - error(_("quote= must be a single character, blank \")\", or FALSE")); + error(_("quote= must be a single character, blank \"\", or FALSE")); args.quote = CHAR(STRING_ELT(quoteArg,0))[0]; } diff --git a/src/rbindlist.c b/src/rbindlist.c index 902aed62a4..937fdd303e 100644 --- a/src/rbindlist.c +++ b/src/rbindlist.c @@ -7,7 +7,7 @@ SEXP rbindlist(SEXP l, SEXP usenamesArg, SEXP fillArg, SEXP idcolArg) if (!isLogical(fillArg) || LENGTH(fillArg) != 1 || LOGICAL(fillArg)[0] == NA_LOGICAL) error(_("fill= should be TRUE or FALSE")); if (!isLogical(usenamesArg) || LENGTH(usenamesArg)!=1) - error(_("use.names= should be TRUE, FALSE, or not used (\")check\" by default)")); // R levels converts "check" to NA + error(_("use.names= should be TRUE, FALSE, or not used (\"check\" by default)")); // R levels converts "check" to NA if (!length(l)) return(l); if (TYPEOF(l) != VECSXP) error(_("Input to rbindlist must be a list. This list can contain data.tables, data.frames or plain lists.")); Rboolean usenames = LOGICAL(usenamesArg)[0]; From 03d339515fde4b89c93b58596d75ea7ce022d7cc Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Mon, 21 Oct 2019 16:16:37 +0800 Subject: [PATCH 20/78] update po with latest message edits --- inst/po/en@quot/LC_MESSAGES/R-data.table.mo | Bin 88404 -> 88480 bytes inst/po/en@quot/LC_MESSAGES/data.table.mo | Bin 137036 -> 137030 bytes po/R-data.table.pot | 9 ++- po/R-zh_CN.po | 13 ++-- po/data.table.pot | 62 ++++++++++---------- po/zh_CN.po | 60 +++++++++---------- 6 files changed, 75 insertions(+), 69 deletions(-) diff --git a/inst/po/en@quot/LC_MESSAGES/R-data.table.mo b/inst/po/en@quot/LC_MESSAGES/R-data.table.mo index 7a27b5501fc5ee101c65494651485108c67cb47a..1a688c2ba6166b9c195e0d0a7f4b5594c1d1403a 100644 GIT binary patch delta 13096 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 delta 11054 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 diff --git a/po/R-data.table.pot b/po/R-data.table.pot index efc5b7de2d..ee2d6efa79 100644 --- a/po/R-data.table.pot +++ b/po/R-data.table.pot @@ -1,7 +1,7 @@ msgid "" msgstr "" -"Project-Id-Version: data.table 1.12.5\n" -"POT-Creation-Date: 2019-10-19 12:10\n" +"Project-Id-Version: data.table 1.12.7\n" +"POT-Creation-Date: 2019-10-21 16:15\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -1285,7 +1285,10 @@ msgstr "" msgid "Character vectors in 'sets' list must not have duplicated column names within a single grouping set." msgstr "" -msgid "Double counting is going to happen. Argument 'sets' should be unique without taking order into account, unless you really want double counting, then get used to that warning. Otherwise `sets=unique(lapply(sets, sort))` will do the trick." +msgid "'sets' contains a duplicate (i.e., equivalent up to sorting) element at index" +msgstr "" + +msgid "; as such, there will be duplicate rows in the output -- note that grouping by A,B and B,A will produce the same aggregations. Use `sets=unique(lapply(sets, sort))` to eliminate duplicates." msgstr "" msgid "Expression passed to grouping sets function must not update by reference. Use ':=' on results of your grouping function." diff --git a/po/R-zh_CN.po b/po/R-zh_CN.po index 7574db6fe5..4efa90ea5a 100644 --- a/po/R-zh_CN.po +++ b/po/R-zh_CN.po @@ -1,7 +1,7 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.5\n" -"POT-Creation-Date: 2019-10-19 12:10\n" +"POT-Creation-Date: 2019-10-21 16:15\n" "PO-Revision-Date: 2019-10-04 17:06+08\n" "Last-Translator: Michael Chirico \n" "Language-Team: Mandarin\n" @@ -1565,10 +1565,13 @@ msgid "" msgstr "" msgid "" -"Double counting is going to happen. Argument 'sets' should be unique without " -"taking order into account, unless you really want double counting, then get " -"used to that warning. Otherwise `sets=unique(lapply(sets, sort))` will do " -"the trick." +"'sets' contains a duplicate (i.e., equivalent up to sorting) element at index" +msgstr "" + +msgid "" +"; as such, there will be duplicate rows in the output -- note that grouping " +"by A,B and B,A will produce the same aggregations. Use " +"`sets=unique(lapply(sets, sort))` to eliminate duplicates." msgstr "" msgid "" diff --git a/po/data.table.pot b/po/data.table.pot index ed49e2e391..0340734659 100644 --- a/po/data.table.pot +++ b/po/data.table.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: data.table 1.12.5\n" +"Project-Id-Version: data.table 1.12.7\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-10-17 09:01+0800\n" +"POT-Creation-Date: 2019-10-21 16:15+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -1422,56 +1422,56 @@ msgstr "" msgid "forder.c received %d rows and %d columns\n" msgstr "" -#: forder.c:451 forder.c:456 +#: forder.c:451 msgid "Internal error: DT is an empty list() of 0 columns" msgstr "" -#: forder.c:453 forder.c:458 +#: forder.c:453 #, c-format msgid "" "Internal error: DT has %d columns but 'by' is either not integer or is " "length 0" msgstr "" -#: forder.c:455 forder.c:460 +#: forder.c:455 #, c-format msgid "" "Either order= is not integer or its length (%d) is different to by='s length " "(%d)" msgstr "" -#: forder.c:466 +#: forder.c:461 #, c-format msgid "internal error: 'by' value %d out of range [1,%d]" msgstr "" -#: forder.c:468 +#: forder.c:463 #, c-format msgid "Column %d is length %d which differs from length of column 1 (%d)\n" msgstr "" -#: forder.c:472 +#: forder.c:467 msgid "retGrp must be TRUE or FALSE" msgstr "" -#: forder.c:475 +#: forder.c:470 msgid "sort must be TRUE or FALSE" msgstr "" -#: forder.c:478 +#: forder.c:473 msgid "At least one of retGrp= or sort= must be TRUE" msgstr "" -#: forder.c:480 +#: forder.c:475 msgid "na.last must be logical TRUE, FALSE or NA of length 1" msgstr "" -#: forder.c:524 +#: forder.c:519 #, c-format msgid "Item %d of order (ascending/descending) is %d. Must be +1 or -1." msgstr "" -#: forder.c:550 +#: forder.c:545 #, c-format msgid "" "\n" @@ -1480,51 +1480,51 @@ msgid "" "to save space and time.\n" msgstr "" -#: forder.c:566 +#: forder.c:561 #, c-format msgid "Column %d passed to [f]order is type '%s', not yet supported." msgstr "" -#: forder.c:719 +#: forder.c:714 msgid "Internal error: column not supported not caught earlier" msgstr "" -#: forder.c:727 +#: forder.c:722 #, c-format msgid "nradix=%d\n" msgstr "" -#: forder.c:733 +#: forder.c:728 #, c-format msgid "" "Failed to allocate TMP or UGRP or they weren't cache line aligned: nth=%d" msgstr "" -#: forder.c:738 +#: forder.c:733 msgid "Could not allocate (very tiny) group size thread buffers" msgstr "" -#: forder.c:799 +#: forder.c:794 #, c-format msgid "Timing block %2d%s = %8.3f %8d\n" msgstr "" -#: forder.c:802 +#: forder.c:797 #, c-format msgid "stat[%03d]==%10zd\n" msgstr "" -#: forder.c:1058 +#: forder.c:1053 #, c-format msgid "Failed to allocate parallel counts. my_n=%d, nBatch=%d" msgstr "" -#: forder.c:1167 +#: forder.c:1162 #, c-format msgid "Unable to allocate TMP for my_n=%d items in parallel batch counting" msgstr "" -#: forder.c:1275 +#: forder.c:1270 msgid "" "is.sorted (R level) and fsorted (C level) only to be used on vectors. If " "needed on a list/data.table, you'll need the order anyway if not sorted, so " @@ -1532,25 +1532,25 @@ msgid "" "C level" msgstr "" -#: forder.c:1307 +#: forder.c:1302 #, c-format msgid "type '%s' is not yet supported" msgstr "" -#: forder.c:1316 +#: forder.c:1311 msgid "x must be either NULL or an integer vector" msgstr "" -#: forder.c:1318 +#: forder.c:1313 msgid "nrow must be integer vector length 1" msgstr "" -#: forder.c:1320 +#: forder.c:1315 #, c-format msgid "nrow==%d but must be >=0" msgstr "" -#: forder.c:1337 +#: forder.c:1332 msgid "x must be type 'double'" msgstr "" @@ -1955,7 +1955,7 @@ msgstr "" msgid "" "Found and resolved improper quoting in first %d rows. If the fields are not " "quoted (e.g. field separator does not appear within any field), try quote=" -"\")\" to avoid this warning." +"\"\" to avoid this warning." msgstr "" #: fread.c:1584 @@ -2390,7 +2390,7 @@ msgid "" msgstr "" #: freadR.c:112 -msgid "quote= must be a single character, blank \")\", or FALSE" +msgid "quote= must be a single character, blank \"\", or FALSE" msgstr "" #: freadR.c:137 @@ -3766,7 +3766,7 @@ msgid "fill= should be TRUE or FALSE" msgstr "" #: rbindlist.c:10 -msgid "use.names= should be TRUE, FALSE, or not used (\")check\" by default)" +msgid "use.names= should be TRUE, FALSE, or not used (\"check\" by default)" msgstr "" #: rbindlist.c:12 diff --git a/po/zh_CN.po b/po/zh_CN.po index 4c4d2cae02..28e5545781 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-10-17 09:01+0800\n" +"POT-Creation-Date: 2019-10-21 16:15+0800\n" "PO-Revision-Date: 2019-10-04 17:06+08\n" "Last-Translator: Michael Chirico \n" "Language-Team: Mandarin\n" @@ -1416,56 +1416,56 @@ msgstr "" msgid "forder.c received %d rows and %d columns\n" msgstr "" -#: forder.c:451 forder.c:456 +#: forder.c:451 msgid "Internal error: DT is an empty list() of 0 columns" msgstr "" -#: forder.c:453 forder.c:458 +#: forder.c:453 #, c-format msgid "" "Internal error: DT has %d columns but 'by' is either not integer or is " "length 0" msgstr "" -#: forder.c:455 forder.c:460 +#: forder.c:455 #, c-format msgid "" "Either order= is not integer or its length (%d) is different to by='s length " "(%d)" msgstr "" -#: forder.c:466 +#: forder.c:461 #, c-format msgid "internal error: 'by' value %d out of range [1,%d]" msgstr "" -#: forder.c:468 +#: forder.c:463 #, c-format msgid "Column %d is length %d which differs from length of column 1 (%d)\n" msgstr "" -#: forder.c:472 +#: forder.c:467 msgid "retGrp must be TRUE or FALSE" msgstr "" -#: forder.c:475 +#: forder.c:470 msgid "sort must be TRUE or FALSE" msgstr "" -#: forder.c:478 +#: forder.c:473 msgid "At least one of retGrp= or sort= must be TRUE" msgstr "" -#: forder.c:480 +#: forder.c:475 msgid "na.last must be logical TRUE, FALSE or NA of length 1" msgstr "" -#: forder.c:524 +#: forder.c:519 #, c-format msgid "Item %d of order (ascending/descending) is %d. Must be +1 or -1." msgstr "" -#: forder.c:550 +#: forder.c:545 #, c-format msgid "" "\n" @@ -1474,51 +1474,51 @@ msgid "" "to save space and time.\n" msgstr "" -#: forder.c:566 +#: forder.c:561 #, c-format msgid "Column %d passed to [f]order is type '%s', not yet supported." msgstr "" -#: forder.c:719 +#: forder.c:714 msgid "Internal error: column not supported not caught earlier" msgstr "" -#: forder.c:727 +#: forder.c:722 #, c-format msgid "nradix=%d\n" msgstr "" -#: forder.c:733 +#: forder.c:728 #, c-format msgid "" "Failed to allocate TMP or UGRP or they weren't cache line aligned: nth=%d" msgstr "" -#: forder.c:738 +#: forder.c:733 msgid "Could not allocate (very tiny) group size thread buffers" msgstr "" -#: forder.c:799 +#: forder.c:794 #, c-format msgid "Timing block %2d%s = %8.3f %8d\n" msgstr "" -#: forder.c:802 +#: forder.c:797 #, c-format msgid "stat[%03d]==%10zd\n" msgstr "" -#: forder.c:1058 +#: forder.c:1053 #, c-format msgid "Failed to allocate parallel counts. my_n=%d, nBatch=%d" msgstr "" -#: forder.c:1167 +#: forder.c:1162 #, c-format msgid "Unable to allocate TMP for my_n=%d items in parallel batch counting" msgstr "" -#: forder.c:1275 +#: forder.c:1270 msgid "" "is.sorted (R level) and fsorted (C level) only to be used on vectors. If " "needed on a list/data.table, you'll need the order anyway if not sorted, so " @@ -1526,25 +1526,25 @@ msgid "" "C level" msgstr "" -#: forder.c:1307 +#: forder.c:1302 #, c-format msgid "type '%s' is not yet supported" msgstr "" -#: forder.c:1316 +#: forder.c:1311 msgid "x must be either NULL or an integer vector" msgstr "" -#: forder.c:1318 +#: forder.c:1313 msgid "nrow must be integer vector length 1" msgstr "" -#: forder.c:1320 +#: forder.c:1315 #, c-format msgid "nrow==%d but must be >=0" msgstr "" -#: forder.c:1337 +#: forder.c:1332 msgid "x must be type 'double'" msgstr "" @@ -1949,7 +1949,7 @@ msgstr "" msgid "" "Found and resolved improper quoting in first %d rows. If the fields are not " "quoted (e.g. field separator does not appear within any field), try quote=" -"\")\" to avoid this warning." +"\"\" to avoid this warning." msgstr "" #: fread.c:1584 @@ -2384,7 +2384,7 @@ msgid "" msgstr "" #: freadR.c:112 -msgid "quote= must be a single character, blank \")\", or FALSE" +msgid "quote= must be a single character, blank \"\", or FALSE" msgstr "" #: freadR.c:137 @@ -3760,7 +3760,7 @@ msgid "fill= should be TRUE or FALSE" msgstr "" #: rbindlist.c:10 -msgid "use.names= should be TRUE, FALSE, or not used (\")check\" by default)" +msgid "use.names= should be TRUE, FALSE, or not used (\"check\" by default)" msgstr "" #: rbindlist.c:12 From fad95240aa2bf7e3db2eefe5823a0ca0899b5201 Mon Sep 17 00:00:00 2001 From: Chun-hui Gao Date: Mon, 21 Oct 2019 23:12:07 +0800 Subject: [PATCH 21/78] Finished the translation assigned to Chun-Hui Gao (#3983) * Finished the translation of line 3058-3231 in po/zh_CN.po. Totally 34 messages. * Finished the translation assigned to Chun-Hui Gao in R-zh_cn.po. Lines 1500-1598 in original R-zh_CN.po. Totally 26 messages. * Resolved reviewer's comments. * Resolved reviewer's comments. --- po/R-zh_CN.po | 60 +++++++++++++++++++++------------------ po/zh_CN.po | 77 ++++++++++++++++++++++++++++++--------------------- 2 files changed, 79 insertions(+), 58 deletions(-) diff --git a/po/R-zh_CN.po b/po/R-zh_CN.po index 4efa90ea5a..ec3b630c3c 100644 --- a/po/R-zh_CN.po +++ b/po/R-zh_CN.po @@ -1498,108 +1498,114 @@ msgid "dateTimeAs must be a single string" msgstr "" msgid "dateTimeAs must be 'ISO','squash','epoch' or 'write.csv'" -msgstr "" +msgstr "dateTimeAs 必须是 'ISO','squash','epoch' 或 'write.csv'" msgid "logicalAsInt has been renamed logical01. Use logical01 only, not both." -msgstr "" +msgstr "logicalAsInt 已重命名为 logical01。不要同时使用它们,仅使用 logical01。" msgid "x being coerced from class: matrix to data.table" -msgstr "" +msgstr "x 的类将强制从 matrix 转变为 data.table" msgid "Input has no columns; doing nothing." -msgstr "" +msgstr "输入没有列,不执行任何操作。" msgid "If you intended to overwrite the file at" -msgstr "" +msgstr "如果你打算覆盖文件" msgid "with an empty one, please use file.remove first." -msgstr "" +msgstr "为空文件,请先使用 file.remove。" msgid "Input has no columns; creating an empty file at '" -msgstr "" +msgstr "输入没有列,将创建一个空文件 '" msgid "' and exiting." -msgstr "" +msgstr "' 并退出。" msgid "" "'data.table' relies on the package 'yaml' to write the file header; please " "add this to your library with install.packages('yaml') and try again." -msgstr "" +msgstr "'data.table' 依赖于 'yaml' 包来写文件头;" +"请运行 install.packages('yaml') 安装 'yaml' 包后再试。" msgid "Argument 'x' must be a data.table object" -msgstr "" +msgstr "'x' 参数必须是一个 data.table 对象" msgid "" "Argument 'by' must be a character vector of column names used in grouping." -msgstr "" +msgstr "'by' 参数必须是一个字符向量,向量的元素是列名,用于分组。" msgid "Argument 'id' must be a logical scalar." -msgstr "" +msgstr "'id' 参数必须是一个逻辑标量。" msgid "" "Argument 'x' is a 0-column data.table; no measure to apply grouping over." -msgstr "" +msgstr "'x' 参数是一个 0 列的 data.table;无法对其应用分组。" msgid "Input data.table must not contain duplicate column names." -msgstr "" +msgstr "作为输入的 data.table 对象不能含有重复的列名。" msgid "Argument 'by' must have unique column names for grouping." -msgstr "" +msgstr "'by' 参数用于分组,不可包含重复列名。" msgid "Argument 'sets' must be a list of character vectors." -msgstr "" +msgstr "'sets' 参数必须是一个字符向量的列表。" msgid "" "All columns used in 'sets' argument must be in 'by' too. Columns used in " "'sets' but not present in 'by':" -msgstr "" +msgstr "在 'sets' 参数中应用的所有列也必须在 'by' 中。" +"当前 'sets' 包含而 'by' 中不含的列有:" msgid "" "When using `id=TRUE` the 'x' data.table must not have a column named " "'grouping'." -msgstr "" +msgstr "当使用 `id=TRUE` 时," +"data.table 'x' 不能包含名为 'grouping' 的列。" msgid "" "Character vectors in 'sets' list must not have duplicated column names " "within a single grouping set." -msgstr "" +msgstr "在单个分组中,'sets' 列表中的字符串向量不能有重复的列名。" msgid "" "'sets' contains a duplicate (i.e., equivalent up to sorting) element at index" -msgstr "" +msgstr "'sets' 的索引含有重复的元素,在做排序时的作用是对等的" msgid "" "; as such, there will be duplicate rows in the output -- note that grouping " "by A,B and B,A will produce the same aggregations. Use " "`sets=unique(lapply(sets, sort))` to eliminate duplicates." -msgstr "" +msgstr ";同样的,输出中也会包含重复的行(注意按照A、B分组与按照B、A分组的结果是一样的。)" +"使用 `sets=unique(lapply(sets, sort))` 来消除重复。" + msgid "" "Expression passed to grouping sets function must not update by reference. " "Use ':=' on results of your grouping function." -msgstr "" +msgstr "传递给分组相关函数的表达式不能通过引用更新。" +"请在你的分组函数返回的结果中使用 ':=' 。" msgid "" "When using `id=TRUE` the 'j' expression must not evaluate to a column named " "'grouping'." -msgstr "" +msgstr "当 `id=TRUE` 时,'j' 表达式不能针对 'grouping' 列求值。" msgid "" "There exists duplicated column names in the results, ensure the column " "passed/evaluated in `j` and those in `by` are not overlapping." -msgstr "" +msgstr "结果中存在重复的列名,请确保 `j` 和 `by` 传递的列中没有发生重叠。" msgid "" "Using integer64 class columns require to have 'bit64' package installed." -msgstr "" +msgstr "要在列中使用 integer64 类,需要先安装 'bit64' 包。" msgid "" "internal error, package:xts is on search path but could not be loaded via " "requireNamespace" -msgstr "" +msgstr "内部错误,在搜索时找到了 xts 包,但无法使用 requireNamespace 加载" msgid "Argument 'sort' should be logical TRUE/FALSE" -msgstr "" +msgstr "参数 'sort' 应为逻辑值 TRUE 或 FALSE" msgid "Argument 'no.dups' should be logical TRUE/FALSE" msgstr "" diff --git a/po/zh_CN.po b/po/zh_CN.po index 28e5545781..710b460ec5 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -3056,11 +3056,11 @@ msgstr "" #: gsumm.c:47 msgid "l is not an integer vector" -msgstr "" +msgstr "l " #: gsumm.c:56 msgid "irowsArg is neither an integer vector nor NULL" -msgstr "" +msgstr "irowsArg ȲҲ NULL" #: gsumm.c:58 #, c-format @@ -3070,47 +3070,48 @@ msgstr "" #: gsumm.c:66 #, c-format msgid "o has length %d but sum(l)=%d" -msgstr "" +msgstr "o ijΪ %d sum(l) = %d" #: gsumm.c:69 msgid "Internal error: o's maxgrpn attribute mismatches recalculated maxgrpn" -msgstr "" +msgstr "ڲo maxgrpn ¼ maxgrpn ƥ" #: gsumm.c:89 #, c-format msgid "" "Internal error: nrow=%d ngrp=%d nbit=%d shift=%d highSize=%d nBatch=%d " "batchSize=%d lastBatchSize=%d\n" -msgstr "" +msgstr "ڲnrow=%d ngrp=%d nbit=%d shift=%d highSize=%d nBatch=%d " +"batchSize=%d lastBatchSize=%d\n" #: gsumm.c:98 #, c-format msgid "gforce initial population of grp took %.3f\n" -msgstr "" +msgstr "grp gforce ʼȺռ %.3f\n " #: gsumm.c:116 msgid "" "Internal error: Failed to allocate counts or TMP when assigning g in gforce" -msgstr "" +msgstr "ڲ gforce Ϊ g ֵʱδܳɹΪ counts TMP ռ" #: gsumm.c:194 #, c-format msgid "gforce assign high and low took %.3f\n" -msgstr "" +msgstr "gforce high low %.3f\n" #: gsumm.c:200 #, c-format msgid "gforce eval took %.3f\n" -msgstr "" +msgstr "gforce eval %.3f\n" #: gsumm.c:216 msgid "gather took ... " -msgstr "" +msgstr "gather ..." #: gsumm.c:334 #, c-format msgid "gather implemented for INTSXP, REALSXP, and CPLXSXP but not '%s'" -msgstr "" +msgstr "gather ֧ INTSXPREALSXP CPLXSXP֧ '%s'" #: gsumm.c:336 gsumm.c:568 #, c-format @@ -3119,61 +3120,65 @@ msgstr "" #: gsumm.c:345 msgid "sum is not meaningful for factors." -msgstr "" +msgstr "ӵĺû塣" #: gsumm.c:349 #, c-format msgid "This gsum took (narm=%s) ... " -msgstr "" +msgstr "gsum ռ (narm=%s) ..." #: gsumm.c:350 gsumm.c:606 #, c-format msgid "nrow [%d] != length(x) [%d] in gsum" -msgstr "" +msgstr "gsum nrow [%d] != length(x) [%d]" #: gsumm.c:404 msgid "" "The sum of an integer column for a group was more than type 'integer' can " "hold so the result has been coerced to 'numeric' automatically for " "convenience." -msgstr "" +msgstr "ijз͵ĽУ" +"˳ͣintergerֵֵ" +"ʽԶתΪֵͣnumeric" #: gsumm.c:565 #, c-format msgid "" "Type '%s' not supported by GForce sum (gsum). Either add the prefix base::" "sum(.) or turn off GForce optimization using options(datatable.optimize=1)" -msgstr "" +msgstr "GForce ͣgsum֧ '%s'ʹ base::sum(.) " +" options(datatable.optimize=1) ر GForce Ż" #: gsumm.c:578 msgid "" "GForce mean can only be applied to columns, not .SD or similar. Likely " "you're looking for 'DT[,lapply(.SD,mean),by=,.SDcols=]'. See ?data.table." -msgstr "" +msgstr "GForce ƽֵУ .SD " +"ڲ 'DT[,lapply(.SD,mean),by=,.SDcols=]'μ ?data.table " #: gsumm.c:579 msgid "mean is not meaningful for factors." -msgstr "" +msgstr "ӵƽֵû" #: gsumm.c:599 #, c-format msgid "Internal error: gsum returned type '%s'. typeof(x) is '%s'" -msgstr "" +msgstr "ڲgsum ص '%s' typeof(x) Ľ '%s'" #: gsumm.c:609 #, c-format msgid "Unable to allocate %d * %d bytes for sum in gmean na.rm=TRUE" -msgstr "" +msgstr "޷Ϊ gmean na.rm=TRUE ܺͣsum %d * %d ֽڿռ" #: gsumm.c:612 #, c-format msgid "Unable to allocate %d * %d bytes for counts in gmean na.rm=TRUE" -msgstr "" +msgstr "޷Ϊ gmean na.rm=TRUE ļcounts %d * %d ֽڿռ" #: gsumm.c:638 #, c-format msgid "Unable to allocate %d * %d bytes for si in gmean na.rm=TRUE" -msgstr "" +msgstr "޷Ϊ gmean na.rm=TRUE si %d * %d ֽڿռ" #: gsumm.c:650 #, c-format @@ -3181,11 +3186,12 @@ msgid "" "Type '%s' not supported by GForce mean (gmean) na.rm=TRUE. Either add the " "prefix base::mean(.) or turn off GForce optimization using options(datatable." "optimize=1)" -msgstr "" +msgstr "GForce ֵgmean֧ '%s'ʹ base::mean(.) " +" options(datatable.optimize=1) ر GForce Ż" #: gsumm.c:674 msgid "Internal error: unsupported type at the end of gmean" -msgstr "" +msgstr "ڲgmean βڲֵ֧" #: gsumm.c:687 msgid "" @@ -3193,38 +3199,45 @@ msgid "" "of all items in a list such as .SD, either add the prefix base::min(.SD) or " "turn off GForce optimization using options(datatable.optimize=1). More " "likely, you may be looking for 'DT[,lapply(.SD,min),by=,.SDcols=]'" -msgstr "" +msgstr "GForce СֵminУ .SD " +"ҪҵбУ .SDԪصСֵʹ base::min(.SD) " +" options(datatable.optimize=1) ر GForce Ż" +"ڲ 'DT[,lapply(.SD,min),by=,.SDcols=]'" #: gsumm.c:688 msgid "min is not meaningful for factors." -msgstr "" +msgstr "ӵСֵû塣" #: gsumm.c:693 #, c-format msgid "nrow [%d] != length(x) [%d] in gmin" -msgstr "" +msgstr "gmin nrow [%d] != length(x) [%d]" #: gsumm.c:717 gsumm.c:850 msgid "" "No non-missing values found in at least one group. Coercing to numeric type " "and returning 'Inf' for such groups to be consistent with base" -msgstr "" +msgstr "һûзȱʧֵ" +"Ϊ base һ£ЩǿתΪֵͲ Inf" #: gsumm.c:756 gsumm.c:891 msgid "" "No non-missing values found in at least one group. Returning 'NA' for such " "groups to be consistent with base" -msgstr "" +msgstr "һûзȱʧֵ" +"Ϊ base һ£Щ齫 NA" #: gsumm.c:783 msgid "" "No non-missing values found in at least one group. Returning 'Inf' for such " "groups to be consistent with base" -msgstr "" +msgstr "һûзȱʧֵ" +"Ϊ base һ£Щ齫 Inf" + #: gsumm.c:791 msgid "Type 'complex' has no well-defined min" -msgstr "" +msgstr "ܱȽϴСûСֵ" #: gsumm.c:794 #, c-format @@ -3232,6 +3245,8 @@ msgid "" "Type '%s' not supported by GForce min (gmin). Either add the prefix base::" "min(.) or turn off GForce optimization using options(datatable.optimize=1)" msgstr "" +"'%s'֧Ӧ GForce Сֵgmin Żǰ׺ base::" +"min(.) ʹ options(datatable.optimize=1) ر GForce Ż" #: gsumm.c:806 msgid "" From a51881645f6441f1ed69919ed4bf139669ec702c Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Sun, 27 Oct 2019 09:53:43 +0800 Subject: [PATCH 22/78] (hopefully) apply encoding fix & check compilation --- inst/po/zh_CN/LC_MESSAGES/R-data.table.mo | Bin 504 -> 5025 bytes inst/po/zh_CN/LC_MESSAGES/data.table.mo | Bin 351 -> 6084 bytes po/zh_CN.po | 88 +++++++++++----------- 3 files changed, 44 insertions(+), 44 deletions(-) diff --git a/inst/po/zh_CN/LC_MESSAGES/R-data.table.mo b/inst/po/zh_CN/LC_MESSAGES/R-data.table.mo index 7ef24e1c57f4705e201a8e93b6bb1134d4fd6ffc..84285c5e5871d48b1084d0f8736e119e81b49670 100644 GIT binary patch literal 5025 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 B9zy^C delta 186 zcmZ3e{)4&xo)F7a1|VPoVi_Q|0b*7ljsap2C;(zLAT9)AHXxn>#DYLPABg!F85lMK zX$>Gg0A#ZR>6btnr0ye-1|kM#AO-;@AO_jNpstWvtdOXXl3A3RT#`Te9FwGkTV_tG xf;vM;kfUF)k7J0Zzn_A$hpV&q<||x+jFZ1`Yw$mt*8XJoHg$$4JJtf33;^FFBZmM0 diff --git a/inst/po/zh_CN/LC_MESSAGES/data.table.mo b/inst/po/zh_CN/LC_MESSAGES/data.table.mo index 494e694301b11f2fc6059ae7cb016f6ea0d15ac6..e80554f0ac64221a831f57e0fcc6bae19b2a025a 100644 GIT binary patch literal 6084 zcmc&&TXPi074F#1O}RS>aT1a=j+K>c?OGzl!Lk(_gK#JiQGrOg%Au0cZtw2cvoo8S zSwK83=nfJBTS8!Ng5si(APIv(=z@MgUi{*hJftel_U!73rzDk^RKC+QS}l@F!q{=9 zYWZe*y3d^R^*LW3^w-B98(_HB;I|sTr#{2jv%soH@DHv6@F;K=$nkFfql|6E^Qp%e zs|DtP2Jp$xGFA`l1Fi#p06YXN`y68_-~f>3J^FdZP6E@wAJF?RFm?f00qh6L@uLqJ}I*{IX0?QHiRUi@d{#W1&p5tF-Y&V`;zs6W2@Nd93fNSB* ztH3kB=YSG;7`XZyJ`ck{1JA1-XY3NN6-c~Sev`3o;AY?u@O@w#@b}+hEDZc7a4Ybs zZ!=a0Oap%j906_s{tF1x?0Ezq0&WF90d#;*1ABl~z}rBWVmaUsf&T`s0Y32^*ap@H z_*)?H)CT-Ma2SZNix;*rLHE z@HnP~HZ{FoWsseg3aqN4PgGVlx71bP2{xU&-JuBIDFlBhrny?g)tU_vDLSM-oIgz# zkLzZPr?B3NbImZg?uwMd@vLz}cU*J21YDR|lzaeW_e)*Mk= z3mfElB?ateY%&<<0by3!1qJ&xSGP=_aVTgSvP`FfqVa6t@KhOD0>=f``f-Y!lsD@rr$wTzAyaqNS#7?X4@1ac(B;w13mA zyXwYC>T&-rsV9;<_5H$s|BB{Dlj^pa?usuA&2iPcV5Dr($E=V8`u5>Vh|G0uy*Y!h zQ@WEPL&8A}QO$^E46uP*@MkWvk};i3I&IlBN5!hSDhUMg2f34=jAh#`b&ZMDgJ zG$RB1aWEWHIpuOgz+V)O;0fExq$7NzCG03sjp8vgDPil;z&_Ua?9$uN7Be1FrJ^!Y zEp})P$}fsULaqwa<$IB#Dj^@nl^tp?{|{f=zTqQ<)`Z%l+@q2;!K*70s7haX6h)d( zF5ip7O;IJeNlf%JG?*Sz0+zIl7VY>S72jR|or<61}? z9SH*=Bjp15dxWVAGYUOwN+RP`UAPc8USVo>s;=CrH|^L}AK~@ODGxHQBJzm{&x5!KL4b$QniaevJ^ZwsqHL%j-dAu6Gd@|T zqE;$xhJD{(Y&-YWjCQ`FD^0TrXg3h^cgOku>;a4&VC){M! z^0LNXg?ETOI;{$C!dY3%*H+g&AFinmSFhtWKd-HR?wRWKW!rGRg_~^6bg)0vay01C zq$Ui$F{$Hhv-pd_K=8co$oG(8w0vI}FOa!CTlo@AOsdoY!?!9y&*F0|E9UP<^oM z>X>cs&HrIycJL-!U|k*Xg_(YN>MXd)U!Rm`55r^C>iU^c(gM?r$+x|;r)Ag4xk(ER z&b7n;i*9&(*>?70Ib7P{;oRESKD z-IW*H57qw4)v5h{OieFI)36SjvpkY+}7q1Yx5Q5fr+3_A# z&_KJN)`bgyEOcI#hlZEj2^bD~XV_(`aAfb0lFW|#+v5^_^CcHcRg#gs74u5fnkqDG zXkqmB{Yn%x!XHzJn4d({#1ua)C;Cb8g8$E#$RT`G3d~DIO!kfDCNFunC*`3b+1;C; z%9d(nCHEZ+d|&o20ZS@nDOGRv5KlPzADkxY7|@x2T$bd;UL*<_A|)N|FWhaVEE((b zlf$p?B2mm69P(}qC?#Idrjj5*cwh^W_(F_WeEp>+NA=3`+F;?(!9b3ew}n49@rPgS zWhYTK@WiKdIYU8%D{sH+i(b$hBmST{=CCx^8)Gy#4P6Ta(*LtaU?C_6G|6+_Z}3^w zBa;#8k%L)_yX5;{pcMw8bElu|IwP+f&fmS5n|_Rg*0n2{5gDap!XKH))o%`2C0F8%`17-8371?1}*>q diff --git a/po/zh_CN.po b/po/zh_CN.po index 710b460ec5..2d6cb1cdda 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -3056,11 +3056,11 @@ msgstr "" #: gsumm.c:47 msgid "l is not an integer vector" -msgstr "l " +msgstr "l 不是整数向量" #: gsumm.c:56 msgid "irowsArg is neither an integer vector nor NULL" -msgstr "irowsArg ȲҲ NULL" +msgstr "irowsArg 既不是整数向量也不是 NULL" #: gsumm.c:58 #, c-format @@ -3070,48 +3070,48 @@ msgstr "" #: gsumm.c:66 #, c-format msgid "o has length %d but sum(l)=%d" -msgstr "o ijΪ %d sum(l) = %d" +msgstr "o 的长度为 %d,但 sum(l) = %d" #: gsumm.c:69 msgid "Internal error: o's maxgrpn attribute mismatches recalculated maxgrpn" -msgstr "ڲo maxgrpn ¼ maxgrpn ƥ" +msgstr "内部错误:o 的 maxgrpn 属性与重新计算的 maxgrpn 不匹配" #: gsumm.c:89 #, c-format msgid "" "Internal error: nrow=%d ngrp=%d nbit=%d shift=%d highSize=%d nBatch=%d " "batchSize=%d lastBatchSize=%d\n" -msgstr "ڲnrow=%d ngrp=%d nbit=%d shift=%d highSize=%d nBatch=%d " +msgstr "内部错误:nrow=%d ngrp=%d nbit=%d shift=%d highSize=%d nBatch=%d " "batchSize=%d lastBatchSize=%d\n" #: gsumm.c:98 #, c-format msgid "gforce initial population of grp took %.3f\n" -msgstr "grp gforce ʼȺռ %.3f\n " +msgstr "grp 的 gforce 初始群体数占了 %.3f\n" #: gsumm.c:116 msgid "" "Internal error: Failed to allocate counts or TMP when assigning g in gforce" -msgstr "ڲ gforce Ϊ g ֵʱδܳɹΪ counts TMP ռ" +msgstr "内部错误:在 gforce 中为 g 赋值时,未能成功为 counts 或者 TMP 分配空间" #: gsumm.c:194 #, c-format msgid "gforce assign high and low took %.3f\n" -msgstr "gforce high low %.3f\n" +msgstr "gforce 分配 high 和 low 用了 %.3f\n" #: gsumm.c:200 #, c-format msgid "gforce eval took %.3f\n" -msgstr "gforce eval %.3f\n" +msgstr "gforce eval 用了 %.3f\n" #: gsumm.c:216 msgid "gather took ... " -msgstr "gather ..." +msgstr "gather 用了 ..." #: gsumm.c:334 #, c-format msgid "gather implemented for INTSXP, REALSXP, and CPLXSXP but not '%s'" -msgstr "gather ֧ INTSXPREALSXP CPLXSXP֧ '%s'" +msgstr "gather 已支持 INTSXP,REALSXP 和 CPLXSXP,但不支持 '%s'" #: gsumm.c:336 gsumm.c:568 #, c-format @@ -3120,65 +3120,65 @@ msgstr "" #: gsumm.c:345 msgid "sum is not meaningful for factors." -msgstr "ӵĺû塣" +msgstr "因子的和没有意义。" #: gsumm.c:349 #, c-format msgid "This gsum took (narm=%s) ... " -msgstr "gsum ռ (narm=%s) ..." +msgstr "gsum 占用了 (narm=%s) ..." #: gsumm.c:350 gsumm.c:606 #, c-format msgid "nrow [%d] != length(x) [%d] in gsum" -msgstr "gsum nrow [%d] != length(x) [%d]" +msgstr "gsum 中 nrow [%d] != length(x) [%d]" #: gsumm.c:404 msgid "" "The sum of an integer column for a group was more than type 'integer' can " "hold so the result has been coerced to 'numeric' automatically for " "convenience." -msgstr "ijз͵ĽУ" -"˳ͣintergerֵֵ" -"ʽԶתΪֵͣnumeric" +msgstr "某整数列分组求和的结果中," +"出现了超过了整型(interger)数值所允许最大值的情况," +"故结果被自动转换为数值类型(numeric)" #: gsumm.c:565 #, c-format msgid "" "Type '%s' not supported by GForce sum (gsum). Either add the prefix base::" "sum(.) or turn off GForce optimization using options(datatable.optimize=1)" -msgstr "GForce ͣgsum֧ '%s'ʹ base::sum(.) " -" options(datatable.optimize=1) ر GForce Ż" +msgstr "GForce 求和(gsum)不支持类型 '%s'。请使用 base::sum(.) 或者" +"设置 options(datatable.optimize=1) 关闭 GForce 优化" #: gsumm.c:578 msgid "" "GForce mean can only be applied to columns, not .SD or similar. Likely " "you're looking for 'DT[,lapply(.SD,mean),by=,.SDcols=]'. See ?data.table." -msgstr "GForce ƽֵУ .SD " -"ڲ 'DT[,lapply(.SD,mean),by=,.SDcols=]'μ ?data.table " +msgstr "GForce 求平均值仅适用于列,而不能用于 .SD 或其它。" +"或许你在查找 'DT[,lapply(.SD,mean),by=,.SDcols=]'。参见 ?data.table 。" #: gsumm.c:579 msgid "mean is not meaningful for factors." -msgstr "ӵƽֵû" +msgstr "因子的平均值没有意义" #: gsumm.c:599 #, c-format msgid "Internal error: gsum returned type '%s'. typeof(x) is '%s'" -msgstr "ڲgsum ص '%s' typeof(x) Ľ '%s'" +msgstr "内部错误:gsum 返回的类型是 '%s',而 typeof(x) 的结果则是 '%s'" #: gsumm.c:609 #, c-format msgid "Unable to allocate %d * %d bytes for sum in gmean na.rm=TRUE" -msgstr "޷Ϊ gmean na.rm=TRUE ܺͣsum %d * %d ֽڿռ" +msgstr "无法为 gmean na.rm=TRUE 的总和(sum)分配 %d * %d 字节空间" #: gsumm.c:612 #, c-format msgid "Unable to allocate %d * %d bytes for counts in gmean na.rm=TRUE" -msgstr "޷Ϊ gmean na.rm=TRUE ļcounts %d * %d ֽڿռ" +msgstr "无法为 gmean na.rm=TRUE 的计数(counts)分配 %d * %d 字节空间" #: gsumm.c:638 #, c-format msgid "Unable to allocate %d * %d bytes for si in gmean na.rm=TRUE" -msgstr "޷Ϊ gmean na.rm=TRUE si %d * %d ֽڿռ" +msgstr "无法为 gmean na.rm=TRUE 的 si 分配 %d * %d 字节空间" #: gsumm.c:650 #, c-format @@ -3186,12 +3186,12 @@ msgid "" "Type '%s' not supported by GForce mean (gmean) na.rm=TRUE. Either add the " "prefix base::mean(.) or turn off GForce optimization using options(datatable." "optimize=1)" -msgstr "GForce ֵgmean֧ '%s'ʹ base::mean(.) " -" options(datatable.optimize=1) ر GForce Ż" +msgstr "GForce 求均值(gmean)不支持类型 '%s'。请使用 base::mean(.) 或者" +"设置 options(datatable.optimize=1) 关闭 GForce 优化" #: gsumm.c:674 msgid "Internal error: unsupported type at the end of gmean" -msgstr "ڲgmean βڲֵ֧" +msgstr "内部错误:gmean 结尾处存在不支持的类型" #: gsumm.c:687 msgid "" @@ -3199,45 +3199,45 @@ msgid "" "of all items in a list such as .SD, either add the prefix base::min(.SD) or " "turn off GForce optimization using options(datatable.optimize=1). More " "likely, you may be looking for 'DT[,lapply(.SD,min),by=,.SDcols=]'" -msgstr "GForce СֵminУ .SD " -"ҪҵбУ .SDԪصСֵʹ base::min(.SD) " -" options(datatable.optimize=1) ر GForce Ż" -"ڲ 'DT[,lapply(.SD,min),by=,.SDcols=]'" +msgstr "GForce 求最小值(min)仅适用于列,而不能用于 .SD 或其它。" +"要找到列表中(如 .SD)所有元素的最小值,须使用 base::min(.SD) 或者" +"设置 options(datatable.optimize=1) 关闭 GForce 优化。" +"你更像是在查找 'DT[,lapply(.SD,min),by=,.SDcols=]'" #: gsumm.c:688 msgid "min is not meaningful for factors." -msgstr "ӵСֵû塣" +msgstr "因子的最小值没有意义。" #: gsumm.c:693 #, c-format msgid "nrow [%d] != length(x) [%d] in gmin" -msgstr "gmin nrow [%d] != length(x) [%d]" +msgstr "gmin 中 nrow [%d] != length(x) [%d]" #: gsumm.c:717 gsumm.c:850 msgid "" "No non-missing values found in at least one group. Coercing to numeric type " "and returning 'Inf' for such groups to be consistent with base" -msgstr "һûзȱʧֵ" -"Ϊ base һ£ЩǿתΪֵͲ Inf" +msgstr "在至少一个分组中没有发现缺失值。" +"为了与 base 保持一致,将这些组强制转换为数值类型并返回 ‘Inf’。" #: gsumm.c:756 gsumm.c:891 msgid "" "No non-missing values found in at least one group. Returning 'NA' for such " "groups to be consistent with base" -msgstr "һûзȱʧֵ" -"Ϊ base һ£Щ齫 NA" +msgstr "在至少一个分组中没有发现缺失值。" +"为了与 base 保持一致,这些组将返回 ‘NA’。" #: gsumm.c:783 msgid "" "No non-missing values found in at least one group. Returning 'Inf' for such " "groups to be consistent with base" -msgstr "һûзȱʧֵ" -"Ϊ base һ£Щ齫 Inf" +msgstr "在至少一个分组中没有发现缺失值。" +"为了与 base 保持一致,这些组将返回 ‘Inf’。" #: gsumm.c:791 msgid "Type 'complex' has no well-defined min" -msgstr "ܱȽϴСûСֵ" +msgstr "复数不能比较大小,故没有最小值" #: gsumm.c:794 #, c-format @@ -3245,8 +3245,8 @@ msgid "" "Type '%s' not supported by GForce min (gmin). Either add the prefix base::" "min(.) or turn off GForce optimization using options(datatable.optimize=1)" msgstr "" -"'%s'֧Ӧ GForce Сֵgmin Żǰ׺ base::" -"min(.) ʹ options(datatable.optimize=1) ر GForce Ż" +"类型'%s'不支持应用 GForce 最小值(gmin) 优化。你可以添加前缀 base::" +"min(.) 或者使用 options(datatable.optimize=1) 关闭 GForce 优化" #: gsumm.c:806 msgid "" From ce3f11b933eded43f15b66c7ab9a6d27ba92d695 Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Sun, 27 Oct 2019 10:04:38 +0800 Subject: [PATCH 23/78] improve internal error & regenerate messages --- inst/po/en@quot/LC_MESSAGES/data.table.mo | Bin 137030 -> 137032 bytes po/data.table.pot | 4 +- po/zh_CN.po | 55 ++++++++++++---------- src/forder.c | 2 +- 4 files changed, 33 insertions(+), 28 deletions(-) diff --git a/inst/po/en@quot/LC_MESSAGES/data.table.mo b/inst/po/en@quot/LC_MESSAGES/data.table.mo index de6c0b5a40ca089a7dcdb26396919e3b8270eb72..f1c68755f91dac3ac3258e86cd6afc059ae42eac 100644 GIT binary patch delta 10357 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 delta 10349 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 S=EmFQy@~xdj+x=@P5VE3w3z1r diff --git a/po/data.table.pot b/po/data.table.pot index 0340734659..5a83b9f6e1 100644 --- a/po/data.table.pot +++ b/po/data.table.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.7\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-10-21 16:15+0800\n" +"POT-Creation-Date: 2019-10-27 09:58+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -1486,7 +1486,7 @@ msgid "Column %d passed to [f]order is type '%s', not yet supported." msgstr "" #: forder.c:714 -msgid "Internal error: column not supported not caught earlier" +msgid "Internal error: column not supported, not caught earlier" msgstr "" #: forder.c:722 diff --git a/po/zh_CN.po b/po/zh_CN.po index 2d6cb1cdda..146c133e9d 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-10-21 16:15+0800\n" +"POT-Creation-Date: 2019-10-27 09:58+0800\n" "PO-Revision-Date: 2019-10-04 17:06+08\n" "Last-Translator: Michael Chirico \n" "Language-Team: Mandarin\n" @@ -1480,7 +1480,7 @@ msgid "Column %d passed to [f]order is type '%s', not yet supported." msgstr "" #: forder.c:714 -msgid "Internal error: column not supported not caught earlier" +msgid "Internal error: column not supported, not caught earlier" msgstr "" #: forder.c:722 @@ -3081,7 +3081,8 @@ msgstr "内部错误:o 的 maxgrpn 属性与重新计算的 maxgrpn 不匹配" msgid "" "Internal error: nrow=%d ngrp=%d nbit=%d shift=%d highSize=%d nBatch=%d " "batchSize=%d lastBatchSize=%d\n" -msgstr "内部错误:nrow=%d ngrp=%d nbit=%d shift=%d highSize=%d nBatch=%d " +msgstr "" +"内部错误:nrow=%d ngrp=%d nbit=%d shift=%d highSize=%d nBatch=%d " "batchSize=%d lastBatchSize=%d\n" #: gsumm.c:98 @@ -3137,24 +3138,26 @@ msgid "" "The sum of an integer column for a group was more than type 'integer' can " "hold so the result has been coerced to 'numeric' automatically for " "convenience." -msgstr "某整数列分组求和的结果中," -"出现了超过了整型(interger)数值所允许最大值的情况," -"故结果被自动转换为数值类型(numeric)" +msgstr "" +"某整数列分组求和的结果中,出现了超过了整型(interger)数值所允许最大值的情" +"况,故结果被自动转换为数值类型(numeric)" #: gsumm.c:565 #, c-format msgid "" "Type '%s' not supported by GForce sum (gsum). Either add the prefix base::" "sum(.) or turn off GForce optimization using options(datatable.optimize=1)" -msgstr "GForce 求和(gsum)不支持类型 '%s'。请使用 base::sum(.) 或者" -"设置 options(datatable.optimize=1) 关闭 GForce 优化" +msgstr "" +"GForce 求和(gsum)不支持类型 '%s'。请使用 base::sum(.) 或者设置 " +"options(datatable.optimize=1) 关闭 GForce 优化" #: gsumm.c:578 msgid "" "GForce mean can only be applied to columns, not .SD or similar. Likely " "you're looking for 'DT[,lapply(.SD,mean),by=,.SDcols=]'. See ?data.table." -msgstr "GForce 求平均值仅适用于列,而不能用于 .SD 或其它。" -"或许你在查找 'DT[,lapply(.SD,mean),by=,.SDcols=]'。参见 ?data.table 。" +msgstr "" +"GForce 求平均值仅适用于列,而不能用于 .SD 或其它。或许你在查找 " +"'DT[,lapply(.SD,mean),by=,.SDcols=]'。参见 ?data.table 。" #: gsumm.c:579 msgid "mean is not meaningful for factors." @@ -3186,8 +3189,9 @@ msgid "" "Type '%s' not supported by GForce mean (gmean) na.rm=TRUE. Either add the " "prefix base::mean(.) or turn off GForce optimization using options(datatable." "optimize=1)" -msgstr "GForce 求均值(gmean)不支持类型 '%s'。请使用 base::mean(.) 或者" -"设置 options(datatable.optimize=1) 关闭 GForce 优化" +msgstr "" +"GForce 求均值(gmean)不支持类型 '%s'。请使用 base::mean(.) 或者设置 " +"options(datatable.optimize=1) 关闭 GForce 优化" #: gsumm.c:674 msgid "Internal error: unsupported type at the end of gmean" @@ -3199,10 +3203,11 @@ msgid "" "of all items in a list such as .SD, either add the prefix base::min(.SD) or " "turn off GForce optimization using options(datatable.optimize=1). More " "likely, you may be looking for 'DT[,lapply(.SD,min),by=,.SDcols=]'" -msgstr "GForce 求最小值(min)仅适用于列,而不能用于 .SD 或其它。" -"要找到列表中(如 .SD)所有元素的最小值,须使用 base::min(.SD) 或者" -"设置 options(datatable.optimize=1) 关闭 GForce 优化。" -"你更像是在查找 'DT[,lapply(.SD,min),by=,.SDcols=]'" +msgstr "" +"GForce 求最小值(min)仅适用于列,而不能用于 .SD 或其它。要找到列表中" +"(如 .SD)所有元素的最小值,须使用 base::min(.SD) 或者设置 " +"options(datatable.optimize=1) 关闭 GForce 优化。你更像是在查找 " +"'DT[,lapply(.SD,min),by=,.SDcols=]'" #: gsumm.c:688 msgid "min is not meaningful for factors." @@ -3217,23 +3222,23 @@ msgstr "gmin 中 nrow [%d] != length(x) [%d]" msgid "" "No non-missing values found in at least one group. Coercing to numeric type " "and returning 'Inf' for such groups to be consistent with base" -msgstr "在至少一个分组中没有发现缺失值。" -"为了与 base 保持一致,将这些组强制转换为数值类型并返回 ‘Inf’。" +msgstr "" +"在至少一个分组中没有发现缺失值。为了与 base 保持一致,将这些组强制转换为数值" +"类型并返回 ‘Inf’。" #: gsumm.c:756 gsumm.c:891 msgid "" "No non-missing values found in at least one group. Returning 'NA' for such " "groups to be consistent with base" -msgstr "在至少一个分组中没有发现缺失值。" -"为了与 base 保持一致,这些组将返回 ‘NA’。" +msgstr "" +"在至少一个分组中没有发现缺失值。为了与 base 保持一致,这些组将返回 ‘NA’。" #: gsumm.c:783 msgid "" "No non-missing values found in at least one group. Returning 'Inf' for such " "groups to be consistent with base" -msgstr "在至少一个分组中没有发现缺失值。" -"为了与 base 保持一致,这些组将返回 ‘Inf’。" - +msgstr "" +"在至少一个分组中没有发现缺失值。为了与 base 保持一致,这些组将返回 ‘Inf’。" #: gsumm.c:791 msgid "Type 'complex' has no well-defined min" @@ -3245,8 +3250,8 @@ msgid "" "Type '%s' not supported by GForce min (gmin). Either add the prefix base::" "min(.) or turn off GForce optimization using options(datatable.optimize=1)" msgstr "" -"类型'%s'不支持应用 GForce 最小值(gmin) 优化。你可以添加前缀 base::" -"min(.) 或者使用 options(datatable.optimize=1) 关闭 GForce 优化" +"类型'%s'不支持应用 GForce 最小值(gmin) 优化。你可以添加前缀 base::min(.) 或" +"者使用 options(datatable.optimize=1) 关闭 GForce 优化" #: gsumm.c:806 msgid "" diff --git a/src/forder.c b/src/forder.c index e1a50257ac..01a32477e7 100644 --- a/src/forder.c +++ b/src/forder.c @@ -711,7 +711,7 @@ SEXP forder(SEXP DT, SEXP by, SEXP retGrpArg, SEXP sortGroupsArg, SEXP ascArg, S free_ustr(); // ustr could be left allocated and reused, but free now in case large and we're tight on ram break; default: - STOP(_("Internal error: column not supported not caught earlier")); // # nocov + STOP(_("Internal error: column not supported, not caught earlier")); // # nocov } nradix += nbyte-1+(spare==0); TEND(4) From 7be31d73837a8fabfa5a6f9edc1e5776e0cec617 Mon Sep 17 00:00:00 2001 From: Hongyuan Jia Date: Tue, 29 Oct 2019 09:13:47 +0800 Subject: [PATCH 24/78] Finish translation to zh_CN assigned to group 2 (Hongyuan Jia) (#3986) * Finish translation. * Resolve review comments. --- po/R-zh_CN.po | 42 +++++++++++++++++++++--------------- po/zh_CN.po | 59 ++++++++++++++++++++++++++++++++++++++++++--------- 2 files changed, 74 insertions(+), 27 deletions(-) diff --git a/po/R-zh_CN.po b/po/R-zh_CN.po index ec3b630c3c..0b437f3efb 100644 --- a/po/R-zh_CN.po +++ b/po/R-zh_CN.po @@ -87,87 +87,95 @@ msgid "; filled with NA" msgstr "" msgid "A column may not be called .SD. That has special meaning." -msgstr "" +msgstr "无法将列命名为 .SD,因为 .SD 为特殊符号。" msgid "class must be length 1" -msgstr "" +msgstr "class 的长度必须为 1" msgid "between has been passed an argument x of type logical" -msgstr "" +msgstr "传入 between 的参数 x 为逻辑(logical)型" msgid "" "'between' function the 'x' argument is a POSIX class while 'lower' was not, " "coercion to POSIX failed with:" msgstr "" +"'between' 中的 'x' 参数为 POSIX 类,而 'lower' 并不是," +"将 'lower' 自动转换成 POSIX 失败:" msgid "" "'between' function the 'x' argument is a POSIX class while 'upper' was not, " "coercion to POSIX failed with:" msgstr "" +"'between' 中的 'x' 参数为 POSIX 类,而 'upper' 并不是," +"将 'upper' 自动转换成 POSIX 失败:" msgid "" "'between' lower= and upper= are both POSIXct but have different tzone " "attributes:" msgstr "" +"'between' 中的 lower= 和 upper= 均为 POSIXct 类型但却有不同的时区" +"属性(tzone):" msgid ". Please align their time zones." -msgstr "" +msgstr "。请确保二者的时区一致。" msgid "" "'between' arguments are all POSIXct but have mismatched tzone attributes:" msgstr "" +"'between' 的参数均为 POSIXct 类型但时区属性(tzone)不匹配:" msgid ". The UTC times will be compared." -msgstr "" +msgstr "。将采用 UTC 时间进行比较。" msgid "trying to use integer64 class when 'bit64' package is not installed" -msgstr "" +msgstr "试图使用 intger64 类型但 'bit64' 包尚未安装" msgid "" "Not yet implemented NAbounds=TRUE for this non-numeric and non-character type" msgstr "" +"对这种非数值(numeric)和非字符(character)的类型,尚未实现 NAbounds=TRUE 的功能" msgid "Some lower>upper for this non-numeric and non-character type" -msgstr "" +msgstr "对于该非数值(numeric)和非字符(character)类型的输入,存在一部分下界(lower)> 上界(upper)的情况" msgid "RHS has length()" -msgstr "" +msgstr "右手侧(RHS)的长度为" msgid "; expecting length 2." -msgstr "" +msgstr ";其长度应为 2。" msgid "c" msgstr "" msgid "Perhaps you meant %s?" -msgstr "" +msgstr "或许你想用的是 %s?" msgid "The first element should be the lower bound(s);" -msgstr "" +msgstr "第一个元素应为下界;" msgid "the second element should be the upper bound(s)." -msgstr "" +msgstr "第二个元素应为上界。" msgid "x." msgstr "" msgid "is type" -msgstr "" +msgstr "的类型为" msgid "which is not supported by data.table join" -msgstr "" +msgstr ",该类型无法用于 data.table 的联接" msgid "i." msgstr "" msgid "Attempting roll join on factor column when joining x." -msgstr "" +msgstr "试图滚动联接(roll join)因子类型(factor)的列,这发生于将 x." msgid "to i." -msgstr "" +msgstr "与 i." msgid ". Only integer, double or character columns may be roll joined." -msgstr "" +msgstr "联接时。但只有整数(integer)、双精度(double)或字符(character)类型的列可以使用滚动联接(roll join)。" msgid "Incompatible join types: x." msgstr "" diff --git a/po/zh_CN.po b/po/zh_CN.po index 146c133e9d..0d5ecee7b6 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -172,25 +172,28 @@ msgid "" "a logical subset, simply wrap with which(), and take the which() outside the " "loop if possible for efficiency." msgstr "" +"i 为 '%s' 类型。i 必须为整(integer)型,或数值(numeric)型(将被自动转换成整型并发出警告)。如果 i 为" +"一个用于筛选的逻辑(logical)向量,请直接将它传给 which(),且如果可能的话将 which() 放置于" +"循环之外以保持高效。" #: assign.c:331 #, c-format msgid "i[%d] is %d which is out of range [1,nrow=%d]." -msgstr "" +msgstr "i[%d] 为 %d 且超出了范围 [1,nrow=%d]。" #: assign.c:334 #, c-format msgid "Assigning to %d row subset of %d rows\n" -msgstr "" +msgstr "正在为 %d 行(总数为 %d 行)进行赋值\n" #: assign.c:342 #, c-format msgid "Added %d new column%s initialized with all-NA\n" -msgstr "" +msgstr "添加了 %d 个新列 %s 并全部初始化为 NA\n" #: assign.c:347 msgid "length(LHS)==0; no columns to delete or assign RHS to." -msgstr "" +msgstr "左手侧长度为0(length(LHS)==0);没有列可供删除或赋值给右手侧(RHS)。" #: assign.c:361 msgid "" @@ -198,12 +201,17 @@ msgid "" "Please use a data.table for that. data.table's are over-allocated and don't " "shallow copy." msgstr "" +"数据框(data.frame)的 set() 是用于修改现有列,而非添加新列。" +"请使用 data.table 来添加新列。data.table 的操作是超额分配的(over-allocated)并且不" +"进行浅拷贝(shallow copy)。" #: assign.c:372 msgid "" "Coerced j from numeric to integer. Please pass integer for efficiency; e.g., " "2L rather than 2" msgstr "" +"将 j 从数值(numeric)型自动转换为整(integer)型。为了保持高效请直接传入整型,如" +"2L 而非 2" #: assign.c:375 #, c-format @@ -211,21 +219,25 @@ msgid "" "j is type '%s'. Must be integer, character, or numeric is coerced with " "warning." msgstr "" +"j 为 '%s' 型。j 必须为整(integer)型、字符(character)型,或数值(numeric)型(将被自动转换成整型" +"并发出警告)。" #: assign.c:377 msgid "" "Can't assign to the same column twice in the same query (duplicates " "detected)." msgstr "" +"在一次查询中无法对同一列赋值两次(检测出 +重复项)。" #: assign.c:378 msgid "newcolnames is supplied but isn't a character vector" -msgstr "" +msgstr "指定了 newcolnames 但其并非一字符串向量" #: assign.c:380 #, c-format msgid "RHS_list_of_columns == %s\n" -msgstr "" +msgstr "RHS_list_of_columns == %s\n" #: assign.c:385 #, c-format @@ -233,6 +245,8 @@ msgid "" "RHS_list_of_columns revised to true because RHS list has 1 item which is " "NULL, or whose length %d is either 1 or targetlen (%d). Please unwrap RHS.\n" msgstr "" +"RHS_list_of_columns 改为真(True),因为右手侧列表(RHS list)有一子项" +"为空值(NULL)或长度 %d 为 1 或 targetlen(%d)。请拆开右手侧。\n" #: assign.c:390 #, c-format @@ -241,17 +255,21 @@ msgid "" "table or data.frame since they are lists too). To delete multiple columns " "use NULL instead. To add multiple empty list columns, use list(list())." msgstr "" +"试图将 %d 列赋值为空列表(可能为空数据、" +"表(table)或数据框(data.frame),因后两者也是列表的一种)。删除多个列时" +"请使用空值(NULL)。添加多个空列表列(list columns)时,请使用 list(list())。" #: assign.c:395 #, c-format msgid "Recycling single RHS list item across %d columns. Please unwrap RHS.\n" -msgstr "" +msgstr "回收重用(Recycling)单个右手侧(RHS)列表子项于 %d 列。请拆开右手侧。\n" #: assign.c:397 #, c-format msgid "" "Supplied %d columns to be assigned %d items. Please see NEWS for v1.12.2." msgstr "" +"试图将 %2$d 项赋值给 %1$d 列。请阅读 v1.12.2 的更新信息(NEWS)。" #: assign.c:405 #, c-format @@ -260,6 +278,9 @@ msgid "" "set() on a data.frame is for changing existing columns, not adding new ones. " "Please use a data.table for that." msgstr "" +"j 中的列编号里第 %d 项是 %d,超出了有效范围 [1,ncol=%d]。" +"数据框(data.frame)的 set() 是用于修改现有列,而非添加新列。" +"请使用 data.table 来添加新列。" #: assign.c:406 #, c-format @@ -267,10 +288,12 @@ msgid "" "Item %d of column numbers in j is %d which is outside range [1,ncol=%d]. Use " "column names instead in j to add new columns." msgstr "" +"j 中的列编号里第 %d 项是 %d,超出了有效范围 [1,ncol=%d]。请在 j 中使用" +"列名来添加新列。" #: assign.c:411 msgid "When deleting columns, i should not be provided" -msgstr "" +msgstr "当删除列时,不应指定 i" #: assign.c:417 #, c-format @@ -282,22 +305,29 @@ msgid "" "full length RHS vector such as vector('list',nrow(DT)); i.e., 'plonk' in the " "new column." msgstr "" +"对已有列 '%s' 的赋值其右手侧(RHS)长度为零但并非空值(NULL)。如果" +"想要删除列请使用空值(NULL)。否则,右手侧必须" +"长度 > 0,如 NA_integer_。如果想将该列类型修改为" +"空列表列(list column),正如所有修改列类型的操作一样,请在右手侧提供一个" +"与该列原数据等长的向量,如 vector('list',nrow(DT)),即,用新数据替换(plonk)重新生成" +"该列。" #: assign.c:422 #, c-format msgid "" "Internal error in assign.c: length(newcolnames)=%d, length(names)=%d, coln=%d" msgstr "" +"assign.c 内部错误:length(newcolnames)=%d, length(names)=%d, coln=%d" #: assign.c:424 #, c-format msgid "Column '%s' does not exist to remove" -msgstr "" +msgstr "要删除的列 '%s' 不存在" #: assign.c:430 #, c-format msgid "%d column matrix RHS of := will be treated as one vector" -msgstr "" +msgstr "':=' 右手侧(RHS)%d 列矩阵将被视为一维向量" #: assign.c:434 #, c-format @@ -305,6 +335,8 @@ msgid "" "Can't assign to column '%s' (type 'factor') a value of type '%s' (not " "character, factor, integer or numeric)" msgstr "" +"无法给因子(factor)类型列 '%s' 赋类型为 '%s' 的值(不是" +"字符(character)、因子(factor)、整数(integer)或数值(numeric)类中的一种)" #: assign.c:439 #, c-format @@ -313,6 +345,9 @@ msgid "" "'recycle' the RHS please use rep() to make this intent clear to readers of " "your code." msgstr "" +"试图将 %d 项赋值给 %d 项(列 '%s')。如果想" +"'回收重用'('recycle')右手侧,请使用 rep() 以将该意图清晰地表述给阅读" +"代码的人。" #: assign.c:449 msgid "" @@ -321,6 +356,10 @@ msgid "" "or setalloccol() on it first (to pre-allocate space for new columns) before " "assigning by reference to it." msgstr "" +"该 data.table 为从磁盘中载入(如使用 readRDS()/" +"load())或手动创建(如使用 structure())。请首先对其运行 setDT() " +"或 setalloccol() (以为新列预分配内存空间),然后再进行" +"引用赋值(assigning by reference)操作。" #: assign.c:450 #, c-format From 53ec99a3d82dff4a7ff3a73daf5d6358c6088a26 Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Tue, 29 Oct 2019 09:17:06 +0800 Subject: [PATCH 25/78] balance quotes --- inst/po/zh_CN/LC_MESSAGES/R-data.table.mo | Bin 5025 -> 7963 bytes inst/po/zh_CN/LC_MESSAGES/data.table.mo | Bin 6084 -> 12849 bytes po/zh_CN.po | 4 ++-- 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/inst/po/zh_CN/LC_MESSAGES/R-data.table.mo b/inst/po/zh_CN/LC_MESSAGES/R-data.table.mo index 84285c5e5871d48b1084d0f8736e119e81b49670..53c2c8f1e3be6b2b434841ac08034979212805d1 100644 GIT binary patch delta 3777 zcmbW3eQXow9mgL-Mj=gUOS-PKY<=358W^~RrtLafs)*8&6+*~Mw|3nhXZsQ#v+q3L zc}dnuPDxE(aN;m0O_o4Nx@90nVwkfK@~WZsuW3`IO4GD=slKy4O^T-dU2Wgra~B6u z_6I%b{JDFc=YH?MpFHj!IS~8XmXZO6>sj2}aDU)p?3-Y4J$`U?mN2#%>;j(zhrlXu z89V`Q`hraZJdXFjgMHxM4U8QHZ-6g@_ua)92W!B`z#o8%jKx?A4`0N>@r{hV05*XE za2)&=Sh~qxZvfqRPl6TTHE=ihFR%*STFTfC&ZJzX3^*>tV)rfgbP#_y$PlJ^;T0{sZg;{|i#iJF!XYN$@Rj z3akY0-iG*-MMqKkHDC%Pi?blUWm~^&E3N=v$GZU{{p`2ko8TWo68sE)NKq~LJopB< z2Rs9kq08XY;6FiRifzaJ6mF_Np@^Q59_Dl%y^7*n2cn)t0aB5YF!GeHuj2NICp%i) zc_u^13A)gwBGi<|eYl}t7)I%R1~=&!mOVfZ&V{-Yg|zxkd>l9B7TqQ;WJg#A<6IsWIs24q^US%7!d{Avi=R`E=p>Qsy;)} zRBi-h?rvEV%@qi@#d2Rz(skY(3n)Px3Tn-A#Lb%}ovWI$oBK35;u9h?=X|4tgMQwu z7=h2L%T^T)hi_69y8~Uq$d|aJ`neE-M?}i28G+A+%C9sw$`OR~c9HT+hU76MZ%}rp z{%zgRNXq4Y^5cjQR4g0y= z5|)uWwTTC1wF!>x^RP-sw@{7jh!0U8$cCrx6%s8`edt`rw~7?xAz4x(0$)OlFSS(i zVCHRjD)oF;JNP6smNcbHosjsc9t~*j$Uv;dSA3S{M;A@O>(5OUogUhxP zTn}i`pq~Otts+#Rp5W9Dedm5UkNT2Z6g{(Rqv|^1G?*~bi=O3Sv=9Ozsm12yEnI8l z_!Vkp%!|awC+s}ZW`EtXyIsTS7}v@^y{)uLv7#QI6DBV#(9{baRtAT zR!S3Iq9{M7fS;>a?QTk?+p8GQRk&fS@B2~{4v7}WS=|st#F_(&Z+l>MU56qqLizQ! z^0h`06_JUQ{?fHJv2w%jn#q&az!mdcM|O6u*o3*O^XBO3?BXeFaK=o`nO8@xwhJo@ zonmIKEOcdOd(6c3LcC{XVfd!8m7Sf0L@}^zu|=625?2-y`L+ZmRm>h$=JgrKv4+yv zFt3~{j<9^kCA0fte(|!^^S;&D=S(m2=U4O76Q4()h`XDwsf#)KoQ*ry=S(s4CyCW5 z_W#0X_Dox6MYQ@7h>R1>@>|0RuTqbc-H7Gi>9=|(aO#t`lL)?SCsbNy5u`$&W}IA&!AAcgEZvuO79&=y7` zRmRAe^TNSg*L7>E8y=d;Ynk4AK6TaS(*x$n(k-6c><9#ylYMpw;G{h&DJUWwRFum< zHIrv@{pYiDy;O&onBDg#Tro3!9b35zJ%w|l)FN#Q_}rO`_#WxU#_i)h{O+ngRQ9lS z_L4a@n(MuC%fKZIy3gm^7a0SD3;raB$otr7T9Ln-bDKn1VN|=*F=GlwLZK3_*>t^Sv?Cj~>KmvM2$wTu2 zB%#}065V4PW3|W4Q@>_tf9t&tmb-iz60)xV9m_6^K_kYg z`0KM{{zOaBWV$1$(g=pBEFi-uKds9j4CHRVV|=L X7@0#RiX*oSe?Ta>qPrJdJx;gn?XX7HhE+U*RDB#eVEK&dcB; z4&gU!XMaWVq_a#+WPFJMy70rw{Pv0T3moDEI-9)~+ex}B3eriEPo_%J9!SoWIBQ9F i^v`j>l+QW-?e{A?3lH3tstb;32|qPI!^7rd&B%YUM`X(Y diff --git a/inst/po/zh_CN/LC_MESSAGES/data.table.mo b/inst/po/zh_CN/LC_MESSAGES/data.table.mo index e80554f0ac64221a831f57e0fcc6bae19b2a025a..fd479822e78ed0f208fca1c7c28d96beebafc29e 100644 GIT binary patch literal 12849 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 C%$I)v diff --git a/po/zh_CN.po b/po/zh_CN.po index 0d5ecee7b6..df5b13745e 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -227,8 +227,8 @@ msgid "" "Can't assign to the same column twice in the same query (duplicates " "detected)." msgstr "" -"在一次查询中无法对同一列赋值两次(检测出 -重复项)。" +"在一次查询中无法对同一列赋值两次(检测出" +"重复项)。" #: assign.c:378 msgid "newcolnames is supplied but isn't a character vector" From 189a3ecc8676be33d83049d7d113f1086fbc70e8 Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Tue, 29 Oct 2019 10:26:04 +0800 Subject: [PATCH 26/78] extra nocov --- src/fread.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/fread.c b/src/fread.c index 649c445f2c..4b5e0c294a 100644 --- a/src/fread.c +++ b/src/fread.c @@ -1244,7 +1244,7 @@ int freadMain(freadMainArgs _args) { if (mmp == NULL) { #endif int nbit = 8*sizeof(char *); // #nocov - STOP(_("Opened %s file ok but could not memory map it. This is a %dbit process. %s."), filesize_to_str(fileSize), nbit, + STOP(_("Opened %s file ok but could not memory map it. This is a %dbit process. %s."), filesize_to_str(fileSize), nbit, // # nocov nbit<=32 ? _("Please upgrade to 64bit") : _("There is probably not enough contiguous virtual memory available")); // # nocov } sof = (const char*) mmp; From 5082e56ad9cedb845d4b4d49126fa1e164b48a25 Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Tue, 29 Oct 2019 12:04:23 +0800 Subject: [PATCH 27/78] some coverage of fmelt --- inst/po/en@quot/LC_MESSAGES/data.table.mo | Bin 137032 -> 137050 bytes inst/tests/tests.Rraw | 27 ++++-- po/data.table.pot | 7 +- po/zh_CN.po | 98 ++++++++++------------ src/fmelt.c | 2 +- 5 files changed, 73 insertions(+), 61 deletions(-) diff --git a/inst/po/en@quot/LC_MESSAGES/data.table.mo b/inst/po/en@quot/LC_MESSAGES/data.table.mo index f1c68755f91dac3ac3258e86cd6afc059ae42eac..50a44556cebd53a73504b3bea255daf602874eba 100644 GIT binary patch delta 13816 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 delta 13839 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\n" "Language-Team: LANGUAGE \n" @@ -1176,9 +1176,10 @@ msgid "concat: 'idx' must be an integer vector of length >= 0" msgstr "" #: fmelt.c:75 +#, c-format msgid "" -"concat: 'idx' must take values between 0 and length(vec); 0 <= idx <= " -"length(vec)" +"Internal error in concat: 'idx' must take values between 0 and length(vec); " +"0 <= idx <= %d" msgstr "" #: fmelt.c:102 diff --git a/po/zh_CN.po b/po/zh_CN.po index df5b13745e..ea80a41a34 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-10-27 09:58+0800\n" +"POT-Creation-Date: 2019-10-29 12:04+0800\n" "PO-Revision-Date: 2019-10-04 17:06+08\n" "Last-Translator: Michael Chirico \n" "Language-Team: Mandarin\n" @@ -172,9 +172,9 @@ msgid "" "a logical subset, simply wrap with which(), and take the which() outside the " "loop if possible for efficiency." msgstr "" -"i 为 '%s' 类型。i 必须为整(integer)型,或数值(numeric)型(将被自动转换成整型并发出警告)。如果 i 为" -"一个用于筛选的逻辑(logical)向量,请直接将它传给 which(),且如果可能的话将 which() 放置于" -"循环之外以保持高效。" +"i 为 '%s' 类型。i 必须为整(integer)型,或数值(numeric)型(将被自动转换成" +"整型并发出警告)。如果 i 为一个用于筛选的逻辑(logical)向量,请直接将它传给 " +"which(),且如果可能的话将 which() 放置于循环之外以保持高效。" #: assign.c:331 #, c-format @@ -201,17 +201,17 @@ msgid "" "Please use a data.table for that. data.table's are over-allocated and don't " "shallow copy." msgstr "" -"数据框(data.frame)的 set() 是用于修改现有列,而非添加新列。" -"请使用 data.table 来添加新列。data.table 的操作是超额分配的(over-allocated)并且不" -"进行浅拷贝(shallow copy)。" +"数据框(data.frame)的 set() 是用于修改现有列,而非添加新列。请使用 data." +"table 来添加新列。data.table 的操作是超额分配的(over-allocated)并且不进行浅" +"拷贝(shallow copy)。" #: assign.c:372 msgid "" "Coerced j from numeric to integer. Please pass integer for efficiency; e.g., " "2L rather than 2" msgstr "" -"将 j 从数值(numeric)型自动转换为整(integer)型。为了保持高效请直接传入整型,如" -"2L 而非 2" +"将 j 从数值(numeric)型自动转换为整(integer)型。为了保持高效请直接传入整" +"型,如2L 而非 2" #: assign.c:375 #, c-format @@ -219,16 +219,14 @@ msgid "" "j is type '%s'. Must be integer, character, or numeric is coerced with " "warning." msgstr "" -"j 为 '%s' 型。j 必须为整(integer)型、字符(character)型,或数值(numeric)型(将被自动转换成整型" -"并发出警告)。" +"j 为 '%s' 型。j 必须为整(integer)型、字符(character)型,或数值(numeric)" +"型(将被自动转换成整型并发出警告)。" #: assign.c:377 msgid "" "Can't assign to the same column twice in the same query (duplicates " "detected)." -msgstr "" -"在一次查询中无法对同一列赋值两次(检测出" -"重复项)。" +msgstr "在一次查询中无法对同一列赋值两次(检测出重复项)。" #: assign.c:378 msgid "newcolnames is supplied but isn't a character vector" @@ -245,8 +243,8 @@ msgid "" "RHS_list_of_columns revised to true because RHS list has 1 item which is " "NULL, or whose length %d is either 1 or targetlen (%d). Please unwrap RHS.\n" msgstr "" -"RHS_list_of_columns 改为真(True),因为右手侧列表(RHS list)有一子项" -"为空值(NULL)或长度 %d 为 1 或 targetlen(%d)。请拆开右手侧。\n" +"RHS_list_of_columns 改为真(True),因为右手侧列表(RHS list)有一子项为空值" +"(NULL)或长度 %d 为 1 或 targetlen(%d)。请拆开右手侧。\n" #: assign.c:390 #, c-format @@ -255,21 +253,21 @@ msgid "" "table or data.frame since they are lists too). To delete multiple columns " "use NULL instead. To add multiple empty list columns, use list(list())." msgstr "" -"试图将 %d 列赋值为空列表(可能为空数据、" -"表(table)或数据框(data.frame),因后两者也是列表的一种)。删除多个列时" -"请使用空值(NULL)。添加多个空列表列(list columns)时,请使用 list(list())。" +"试图将 %d 列赋值为空列表(可能为空数据、表(table)或数据框(data.frame),因" +"后两者也是列表的一种)。删除多个列时请使用空值(NULL)。添加多个空列表列" +"(list columns)时,请使用 list(list())。" #: assign.c:395 #, c-format msgid "Recycling single RHS list item across %d columns. Please unwrap RHS.\n" -msgstr "回收重用(Recycling)单个右手侧(RHS)列表子项于 %d 列。请拆开右手侧。\n" +msgstr "" +"回收重用(Recycling)单个右手侧(RHS)列表子项于 %d 列。请拆开右手侧。\n" #: assign.c:397 #, c-format msgid "" "Supplied %d columns to be assigned %d items. Please see NEWS for v1.12.2." -msgstr "" -"试图将 %2$d 项赋值给 %1$d 列。请阅读 v1.12.2 的更新信息(NEWS)。" +msgstr "试图将 %2$d 项赋值给 %1$d 列。请阅读 v1.12.2 的更新信息(NEWS)。" #: assign.c:405 #, c-format @@ -278,9 +276,8 @@ msgid "" "set() on a data.frame is for changing existing columns, not adding new ones. " "Please use a data.table for that." msgstr "" -"j 中的列编号里第 %d 项是 %d,超出了有效范围 [1,ncol=%d]。" -"数据框(data.frame)的 set() 是用于修改现有列,而非添加新列。" -"请使用 data.table 来添加新列。" +"j 中的列编号里第 %d 项是 %d,超出了有效范围 [1,ncol=%d]。数据框(data.frame)" +"的 set() 是用于修改现有列,而非添加新列。请使用 data.table 来添加新列。" #: assign.c:406 #, c-format @@ -288,8 +285,8 @@ msgid "" "Item %d of column numbers in j is %d which is outside range [1,ncol=%d]. Use " "column names instead in j to add new columns." msgstr "" -"j 中的列编号里第 %d 项是 %d,超出了有效范围 [1,ncol=%d]。请在 j 中使用" -"列名来添加新列。" +"j 中的列编号里第 %d 项是 %d,超出了有效范围 [1,ncol=%d]。请在 j 中使用列名来" +"添加新列。" #: assign.c:411 msgid "When deleting columns, i should not be provided" @@ -305,19 +302,17 @@ msgid "" "full length RHS vector such as vector('list',nrow(DT)); i.e., 'plonk' in the " "new column." msgstr "" -"对已有列 '%s' 的赋值其右手侧(RHS)长度为零但并非空值(NULL)。如果" -"想要删除列请使用空值(NULL)。否则,右手侧必须" -"长度 > 0,如 NA_integer_。如果想将该列类型修改为" -"空列表列(list column),正如所有修改列类型的操作一样,请在右手侧提供一个" -"与该列原数据等长的向量,如 vector('list',nrow(DT)),即,用新数据替换(plonk)重新生成" -"该列。" +"对已有列 '%s' 的赋值其右手侧(RHS)长度为零但并非空值(NULL)。如果想要删除列" +"请使用空值(NULL)。否则,右手侧必须长度 > 0,如 NA_integer_。如果想将该列类" +"型修改为空列表列(list column),正如所有修改列类型的操作一样,请在右手侧提供" +"一个与该列原数据等长的向量,如 vector('list',nrow(DT)),即,用新数据替换" +"(plonk)重新生成该列。" #: assign.c:422 #, c-format msgid "" "Internal error in assign.c: length(newcolnames)=%d, length(names)=%d, coln=%d" -msgstr "" -"assign.c 内部错误:length(newcolnames)=%d, length(names)=%d, coln=%d" +msgstr "assign.c 内部错误:length(newcolnames)=%d, length(names)=%d, coln=%d" #: assign.c:424 #, c-format @@ -335,8 +330,8 @@ msgid "" "Can't assign to column '%s' (type 'factor') a value of type '%s' (not " "character, factor, integer or numeric)" msgstr "" -"无法给因子(factor)类型列 '%s' 赋类型为 '%s' 的值(不是" -"字符(character)、因子(factor)、整数(integer)或数值(numeric)类中的一种)" +"无法给因子(factor)类型列 '%s' 赋类型为 '%s' 的值(不是字符(character)、因" +"子(factor)、整数(integer)或数值(numeric)类中的一种)" #: assign.c:439 #, c-format @@ -345,9 +340,8 @@ msgid "" "'recycle' the RHS please use rep() to make this intent clear to readers of " "your code." msgstr "" -"试图将 %d 项赋值给 %d 项(列 '%s')。如果想" -"'回收重用'('recycle')右手侧,请使用 rep() 以将该意图清晰地表述给阅读" -"代码的人。" +"试图将 %d 项赋值给 %d 项(列 '%s')。如果想'回收重用'('recycle')右手侧,请" +"使用 rep() 以将该意图清晰地表述给阅读代码的人。" #: assign.c:449 msgid "" @@ -356,10 +350,9 @@ msgid "" "or setalloccol() on it first (to pre-allocate space for new columns) before " "assigning by reference to it." msgstr "" -"该 data.table 为从磁盘中载入(如使用 readRDS()/" -"load())或手动创建(如使用 structure())。请首先对其运行 setDT() " -"或 setalloccol() (以为新列预分配内存空间),然后再进行" -"引用赋值(assigning by reference)操作。" +"该 data.table 为从磁盘中载入(如使用 readRDS()/load())或手动创建(如使用 " +"structure())。请首先对其运行 setDT() 或 setalloccol() (以为新列预分配内存空" +"间),然后再进行引用赋值(assigning by reference)操作。" #: assign.c:450 #, c-format @@ -1209,9 +1202,10 @@ msgid "concat: 'idx' must be an integer vector of length >= 0" msgstr "" #: fmelt.c:75 +#, c-format msgid "" -"concat: 'idx' must take values between 0 and length(vec); 0 <= idx <= " -"length(vec)" +"Internal error in concat: 'idx' must take values between 0 and length(vec); " +"0 <= idx <= %d" msgstr "" #: fmelt.c:102 @@ -3195,8 +3189,8 @@ msgid "" "GForce mean can only be applied to columns, not .SD or similar. Likely " "you're looking for 'DT[,lapply(.SD,mean),by=,.SDcols=]'. See ?data.table." msgstr "" -"GForce 求平均值仅适用于列,而不能用于 .SD 或其它。或许你在查找 " -"'DT[,lapply(.SD,mean),by=,.SDcols=]'。参见 ?data.table 。" +"GForce 求平均值仅适用于列,而不能用于 .SD 或其它。或许你在查找 'DT[,lapply(." +"SD,mean),by=,.SDcols=]'。参见 ?data.table 。" #: gsumm.c:579 msgid "mean is not meaningful for factors." @@ -3243,10 +3237,10 @@ msgid "" "turn off GForce optimization using options(datatable.optimize=1). More " "likely, you may be looking for 'DT[,lapply(.SD,min),by=,.SDcols=]'" msgstr "" -"GForce 求最小值(min)仅适用于列,而不能用于 .SD 或其它。要找到列表中" -"(如 .SD)所有元素的最小值,须使用 base::min(.SD) 或者设置 " -"options(datatable.optimize=1) 关闭 GForce 优化。你更像是在查找 " -"'DT[,lapply(.SD,min),by=,.SDcols=]'" +"GForce 求最小值(min)仅适用于列,而不能用于 .SD 或其它。要找到列表中(如 ." +"SD)所有元素的最小值,须使用 base::min(.SD) 或者设置 options(datatable." +"optimize=1) 关闭 GForce 优化。你更像是在查找 'DT[,lapply(.SD,min),by=,." +"SDcols=]'" #: gsumm.c:688 msgid "min is not meaningful for factors." diff --git a/src/fmelt.c b/src/fmelt.c index 896f7e8b1c..699e9130db 100644 --- a/src/fmelt.c +++ b/src/fmelt.c @@ -72,7 +72,7 @@ SEXP concat(SEXP vec, SEXP idx) { const int *iidx = INTEGER(idx); for (int i=0; i length(vec)) - error(_("concat: 'idx' must take values between 0 and length(vec); 0 <= idx <= length(vec)")); + error(_("Internal error in concat: 'idx' must take values between 0 and length(vec); 0 <= idx <= %d"), length(vec)); // # nocov } PROTECT(v = allocVector(STRSXP, nidx > 5 ? 5 : nidx)); for (int i=0; i Date: Tue, 29 Oct 2019 12:54:46 +0800 Subject: [PATCH 28/78] complete coverage of fmelt --- inst/tests/tests.Rraw | 12 ++++++++++++ src/fmelt.c | 1 + 2 files changed, 13 insertions(+) diff --git a/inst/tests/tests.Rraw b/inst/tests/tests.Rraw index 569c9fd543..49bf7eb484 100644 --- a/inst/tests/tests.Rraw +++ b/inst/tests/tests.Rraw @@ -3153,6 +3153,18 @@ Sep,33.5,19.4,15.7,11.9,0,100.8,100.8,0,12.7,12.7,0,174.1") test(1037.407, ans$variable, factor(c("1","1"))) test(1037.408, dim(ans<-melt(x, measure.vars=patterns("^y", "^z"), na.rm=TRUE, variable.factor=FALSE)), INT(2,5)) test(1037.409, ans$variable, c("1","1")) + + test(1037.410, melt(data.table(NULL), verbose=TRUE), data.table(NULL), + output="ncol(data) is 0. Nothing to melt") + test(1037.411, melt(x, id.vars=1L, measure.vars=2L, variable.name=c('a', 'b')), + error="'variable.name' must be a character/integer") + test(1037.412, melt(x, id.vars=1L, measure.vars=list(2L), value.name=c('a', 'b')), + error="When 'measure.vars' is a list, 'value.name'") + test(1037.413, melt(x, id.vars=1L, measure.vars=2L, value.name=c('a', 'b')), + error="When 'measure.vars' is either not specified or a character/integer") + x[ , r := as.raw(c(0, 1))] + test(1037.414, melt(x, id.vars='a', measure.vars='r'), + error="Unknown column type 'raw' for column 'r'") } # sorting and grouping of Inf, -Inf, NA and NaN, #4684, #4815 & #4883 diff --git a/src/fmelt.c b/src/fmelt.c index 699e9130db..3d1effa8a9 100644 --- a/src/fmelt.c +++ b/src/fmelt.c @@ -677,6 +677,7 @@ SEXP fmelt(SEXP DT, SEXP id, SEXP measure, SEXP varfactor, SEXP valfactor, SEXP if (!isString(varnames)) error(_("Argument 'variable.name' must be a character vector")); if (!isString(valnames)) error(_("Argument 'value.name' must be a character vector")); if (!isLogical(verboseArg)) error(_("Argument 'verbose' should be logical TRUE/FALSE")); + if (LOGICAL(verboseArg)[0] == TRUE) verbose = TRUE; int ncol = LENGTH(DT); if (!ncol) { if (verbose) Rprintf(_("ncol(data) is 0. Nothing to melt. Returning original data.table.")); From 0ca5afa4bfc3f3dfb686b5c70a816a69173d314d Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Tue, 29 Oct 2019 13:11:16 +0800 Subject: [PATCH 29/78] fix test error --- inst/tests/tests.Rraw | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/inst/tests/tests.Rraw b/inst/tests/tests.Rraw index 49bf7eb484..3185e127db 100644 --- a/inst/tests/tests.Rraw +++ b/inst/tests/tests.Rraw @@ -3163,7 +3163,7 @@ Sep,33.5,19.4,15.7,11.9,0,100.8,100.8,0,12.7,12.7,0,174.1") test(1037.413, melt(x, id.vars=1L, measure.vars=2L, value.name=c('a', 'b')), error="When 'measure.vars' is either not specified or a character/integer") x[ , r := as.raw(c(0, 1))] - test(1037.414, melt(x, id.vars='a', measure.vars='r'), + test(1037.414, melt(x, id.vars='x1', measure.vars='r'), error="Unknown column type 'raw' for column 'r'") } From 6402947c95fc3fece9cc8954b80fc0ee0918d49a Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Thu, 31 Oct 2019 22:00:09 +0800 Subject: [PATCH 30/78] update message per DeLuns feedback --- inst/po/en@quot/LC_MESSAGES/data.table.mo | Bin 137050 -> 137190 bytes po/data.table.pot | 11 ++++++----- po/zh_CN.po | 11 ++++++----- src/dogroups.c | 2 +- 4 files changed, 13 insertions(+), 11 deletions(-) diff --git a/inst/po/en@quot/LC_MESSAGES/data.table.mo b/inst/po/en@quot/LC_MESSAGES/data.table.mo index 50a44556cebd53a73504b3bea255daf602874eba..c7d76ac0cff31ffa2764b21ca41178a9611fe20b 100644 GIT binary patch delta 9380 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 M|J_91WFo!(2kcQ0vH$=8 delta 9205 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\n" "Language-Team: LANGUAGE \n" @@ -953,8 +953,9 @@ msgstr "" #: dogroups.c:291 msgid "" -"RHS is NULL when grouping :=. Makes no sense to delete a column by group. " -"Perhaps use an empty vector instead." +"RHS of := is NULL during grouped assignment, but it's not possible to delete " +"parts of a column. To return nothing for this group, use an empty (0-length) " +"vector or list of vectors." msgstr "" #: dogroups.c:295 @@ -1327,11 +1328,11 @@ msgstr "" msgid "Argument 'verbose' should be logical TRUE/FALSE" msgstr "" -#: fmelt.c:682 +#: fmelt.c:683 msgid "ncol(data) is 0. Nothing to melt. Returning original data.table." msgstr "" -#: fmelt.c:687 +#: fmelt.c:688 msgid "names(data) is NULL. Please report to data.table-help" msgstr "" diff --git a/po/zh_CN.po b/po/zh_CN.po index ea80a41a34..42ea0877ca 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-10-29 12:04+0800\n" +"POT-Creation-Date: 2019-10-31 21:58+0800\n" "PO-Revision-Date: 2019-10-04 17:06+08\n" "Last-Translator: Michael Chirico \n" "Language-Team: Mandarin\n" @@ -979,8 +979,9 @@ msgstr "" #: dogroups.c:291 msgid "" -"RHS is NULL when grouping :=. Makes no sense to delete a column by group. " -"Perhaps use an empty vector instead." +"RHS of := is NULL during grouped assignment, but it's not possible to delete " +"parts of a column. To return nothing for this group, use an empty (0-length) " +"vector or list of vectors." msgstr "" #: dogroups.c:295 @@ -1353,11 +1354,11 @@ msgstr "" msgid "Argument 'verbose' should be logical TRUE/FALSE" msgstr "" -#: fmelt.c:682 +#: fmelt.c:683 msgid "ncol(data) is 0. Nothing to melt. Returning original data.table." msgstr "" -#: fmelt.c:687 +#: fmelt.c:688 msgid "names(data) is NULL. Please report to data.table-help" msgstr "" diff --git a/src/dogroups.c b/src/dogroups.c index da9db1bdde..b2ee20274f 100644 --- a/src/dogroups.c +++ b/src/dogroups.c @@ -288,7 +288,7 @@ SEXP dogroups(SEXP dt, SEXP dtcols, SEXP groups, SEXP grpcols, SEXP jiscols, SEX target = VECTOR_ELT(dt,INTEGER(lhs)[j]-1); RHS = VECTOR_ELT(jval,j%LENGTH(jval)); if (isNull(RHS)) - error(_("RHS is NULL when grouping :=. Makes no sense to delete a column by group. Perhaps use an empty vector instead.")); + error(_("RHS of := is NULL during grouped assignment, but it's not possible to delete parts of a column. To return nothing for this group, use an empty (0-length) vector or list of vectors.")); int vlen = length(RHS); if (vlen>1 && vlen!=grpn) { SEXP colname = isNull(target) ? STRING_ELT(newnames, INTEGER(lhs)[j]-origncol-1) : STRING_ELT(dtnames,INTEGER(lhs)[j]-1); From f554b7927ee0dd7dd0a07f248c2e69e01eff4ad2 Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Fri, 1 Nov 2019 00:43:50 +0800 Subject: [PATCH 31/78] update message again; some minor tweaks to nearby code --- inst/po/en@quot/LC_MESSAGES/data.table.mo | Bin 137190 -> 137020 bytes inst/tests/tests.Rraw | 2 +- po/data.table.pot | 43 +++++++++++----------- po/zh_CN.po | 43 +++++++++++----------- src/dogroups.c | 19 +++++----- 5 files changed, 53 insertions(+), 54 deletions(-) diff --git a/inst/po/en@quot/LC_MESSAGES/data.table.mo b/inst/po/en@quot/LC_MESSAGES/data.table.mo index c7d76ac0cff31ffa2764b21ca41178a9611fe20b..ad3ad47d07632a70bcd39d12f68f2f5c6f965723 100644 GIT binary patch delta 9035 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\n" "Language-Team: LANGUAGE \n" @@ -951,14 +951,13 @@ msgid "" "instead (much quicker), or cbind or merge afterwards." msgstr "" -#: dogroups.c:291 +#: dogroups.c:290 msgid "" "RHS of := is NULL during grouped assignment, but it's not possible to delete " -"parts of a column. To return nothing for this group, use an empty (0-length) " -"vector or list of vectors." +"parts of a column." msgstr "" -#: dogroups.c:295 +#: dogroups.c:294 #, c-format msgid "" "Supplied %d items to be assigned to group %d of size %d in column '%s'. The " @@ -967,23 +966,23 @@ msgid "" "make this intent clear to readers of your code." msgstr "" -#: dogroups.c:304 +#: dogroups.c:305 msgid "" "Internal error: Trying to add new column by reference but tl is full; " "setalloccol should have run first at R level before getting to this point in " "dogroups" msgstr "" -#: dogroups.c:319 +#: dogroups.c:320 #, c-format msgid "Group %d column '%s': %s" msgstr "" -#: dogroups.c:326 +#: dogroups.c:327 msgid "j doesn't evaluate to the same number of columns for each group" msgstr "" -#: dogroups.c:360 +#: dogroups.c:361 #, c-format msgid "" "Column %d of j's result for the first group is NULL. We rely on the column " @@ -994,14 +993,14 @@ msgid "" "integer() or numeric()." msgstr "" -#: dogroups.c:363 +#: dogroups.c:364 msgid "" "j appears to be a named vector. The same names will likely be created over " "and over again for each group and slow things down. Try and pass a named " "list (which data.table optimizes) or an unnamed list() instead.\n" msgstr "" -#: dogroups.c:365 +#: dogroups.c:366 #, c-format msgid "" "Column %d of j is a named vector (each item down the rows is named, " @@ -1009,7 +1008,7 @@ msgid "" "over and over for each group). They are ignored anyway.\n" msgstr "" -#: dogroups.c:373 +#: dogroups.c:374 msgid "" "The result of j is a named list. It's very inefficient to create the same " "names over and over again for each group. When j=list(...), any names are " @@ -1018,17 +1017,17 @@ msgid "" "to :=). This message may be upgraded to warning in future.\n" msgstr "" -#: dogroups.c:385 +#: dogroups.c:386 #, c-format msgid "dogroups: growing from %d to %d rows\n" msgstr "" -#: dogroups.c:386 +#: dogroups.c:387 #, c-format msgid "dogroups: length(ans)[%d]!=ngrpcols[%d]+njval[%d]" msgstr "" -#: dogroups.c:419 +#: dogroups.c:420 #, c-format msgid "" "Item %d of j's result for group %d is zero length. This will be filled with " @@ -1037,14 +1036,14 @@ msgid "" "buffer." msgstr "" -#: dogroups.c:426 +#: dogroups.c:427 #, c-format msgid "" "Column %d of result for group %d is type '%s' but expecting type '%s'. " "Column types must be consistent for each group." msgstr "" -#: dogroups.c:428 +#: dogroups.c:429 #, c-format msgid "" "Supplied %d items for column %d of group %d which has %d rows. The RHS " @@ -1053,29 +1052,29 @@ msgid "" "make this intent clear to readers of your code." msgstr "" -#: dogroups.c:443 +#: dogroups.c:444 #, c-format msgid "Wrote less rows (%d) than allocated (%d).\n" msgstr "" -#: dogroups.c:453 +#: dogroups.c:454 #, c-format msgid "Internal error: block 0 [%d] and block 1 [%d] have both run" msgstr "" -#: dogroups.c:455 +#: dogroups.c:456 #, c-format msgid "" "\n" " %s took %.3fs for %d groups\n" msgstr "" -#: dogroups.c:457 +#: dogroups.c:458 #, c-format msgid " eval(j) took %.3fs for %d calls\n" msgstr "" -#: dogroups.c:481 +#: dogroups.c:482 msgid "growVector passed NULL" msgstr "" diff --git a/po/zh_CN.po b/po/zh_CN.po index 42ea0877ca..758319e16c 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-10-31 21:58+0800\n" +"POT-Creation-Date: 2019-11-01 00:42+0800\n" "PO-Revision-Date: 2019-10-04 17:06+08\n" "Last-Translator: Michael Chirico \n" "Language-Team: Mandarin\n" @@ -977,14 +977,13 @@ msgid "" "instead (much quicker), or cbind or merge afterwards." msgstr "" -#: dogroups.c:291 +#: dogroups.c:290 msgid "" "RHS of := is NULL during grouped assignment, but it's not possible to delete " -"parts of a column. To return nothing for this group, use an empty (0-length) " -"vector or list of vectors." +"parts of a column." msgstr "" -#: dogroups.c:295 +#: dogroups.c:294 #, c-format msgid "" "Supplied %d items to be assigned to group %d of size %d in column '%s'. The " @@ -993,23 +992,23 @@ msgid "" "make this intent clear to readers of your code." msgstr "" -#: dogroups.c:304 +#: dogroups.c:305 msgid "" "Internal error: Trying to add new column by reference but tl is full; " "setalloccol should have run first at R level before getting to this point in " "dogroups" msgstr "" -#: dogroups.c:319 +#: dogroups.c:320 #, c-format msgid "Group %d column '%s': %s" msgstr "" -#: dogroups.c:326 +#: dogroups.c:327 msgid "j doesn't evaluate to the same number of columns for each group" msgstr "" -#: dogroups.c:360 +#: dogroups.c:361 #, c-format msgid "" "Column %d of j's result for the first group is NULL. We rely on the column " @@ -1020,14 +1019,14 @@ msgid "" "integer() or numeric()." msgstr "" -#: dogroups.c:363 +#: dogroups.c:364 msgid "" "j appears to be a named vector. The same names will likely be created over " "and over again for each group and slow things down. Try and pass a named " "list (which data.table optimizes) or an unnamed list() instead.\n" msgstr "" -#: dogroups.c:365 +#: dogroups.c:366 #, c-format msgid "" "Column %d of j is a named vector (each item down the rows is named, " @@ -1035,7 +1034,7 @@ msgid "" "over and over for each group). They are ignored anyway.\n" msgstr "" -#: dogroups.c:373 +#: dogroups.c:374 msgid "" "The result of j is a named list. It's very inefficient to create the same " "names over and over again for each group. When j=list(...), any names are " @@ -1044,17 +1043,17 @@ msgid "" "to :=). This message may be upgraded to warning in future.\n" msgstr "" -#: dogroups.c:385 +#: dogroups.c:386 #, c-format msgid "dogroups: growing from %d to %d rows\n" msgstr "" -#: dogroups.c:386 +#: dogroups.c:387 #, c-format msgid "dogroups: length(ans)[%d]!=ngrpcols[%d]+njval[%d]" msgstr "" -#: dogroups.c:419 +#: dogroups.c:420 #, c-format msgid "" "Item %d of j's result for group %d is zero length. This will be filled with " @@ -1063,14 +1062,14 @@ msgid "" "buffer." msgstr "" -#: dogroups.c:426 +#: dogroups.c:427 #, c-format msgid "" "Column %d of result for group %d is type '%s' but expecting type '%s'. " "Column types must be consistent for each group." msgstr "" -#: dogroups.c:428 +#: dogroups.c:429 #, c-format msgid "" "Supplied %d items for column %d of group %d which has %d rows. The RHS " @@ -1079,29 +1078,29 @@ msgid "" "make this intent clear to readers of your code." msgstr "" -#: dogroups.c:443 +#: dogroups.c:444 #, c-format msgid "Wrote less rows (%d) than allocated (%d).\n" msgstr "" -#: dogroups.c:453 +#: dogroups.c:454 #, c-format msgid "Internal error: block 0 [%d] and block 1 [%d] have both run" msgstr "" -#: dogroups.c:455 +#: dogroups.c:456 #, c-format msgid "" "\n" " %s took %.3fs for %d groups\n" msgstr "" -#: dogroups.c:457 +#: dogroups.c:458 #, c-format msgid " eval(j) took %.3fs for %d calls\n" msgstr "" -#: dogroups.c:481 +#: dogroups.c:482 msgid "growVector passed NULL" msgstr "" diff --git a/src/dogroups.c b/src/dogroups.c index b2ee20274f..0cf2d8bca8 100644 --- a/src/dogroups.c +++ b/src/dogroups.c @@ -285,38 +285,39 @@ SEXP dogroups(SEXP dt, SEXP dtcols, SEXP groups, SEXP grpcols, SEXP jiscols, SEX R_len_t origncol = LENGTH(dt); // check jval first before proceeding to add columns, so that if error on the first group, the columns aren't added for (int j=0; j1 && vlen!=grpn) { - SEXP colname = isNull(target) ? STRING_ELT(newnames, INTEGER(lhs)[j]-origncol-1) : STRING_ELT(dtnames,INTEGER(lhs)[j]-1); + SEXP colname = isNull(VECTOR_ELT(dt, INTEGER(lhs)[j]-1)) ? STRING_ELT(newnames, INTEGER(lhs)[j]-origncol-1) : STRING_ELT(dtnames,INTEGER(lhs)[j]-1); error(_("Supplied %d items to be assigned to group %d of size %d in column '%s'. The RHS length must either be 1 (single values are ok) or match the LHS length exactly. If you wish to 'recycle' the RHS please use rep() explicitly to make this intent clear to readers of your code."),vlen,i+1,grpn,CHAR(colname)); // e.g. in #4990 `:=` did not issue recycling warning during grouping. Now it is error not warning. } } + int n = LENGTH(VECTOR_ELT(dt, 0)); for (int j=0; j Date: Sat, 2 Nov 2019 21:30:08 -0500 Subject: [PATCH 32/78] Translation to zh_CN assigned to group 3 (#3985) * translate assigned to group 3 * translate assigned to group 3 * translate assigned to group 3 * remove merge conflict vestiges * remove merge conflict vestiges * plonk * update translation --- po/R-zh_CN.po | 59 ++++++++++++++++++++++++--------------------- po/zh_CN.po | 67 ++++++++++++++++++++++++++++++--------------------- 2 files changed, 72 insertions(+), 54 deletions(-) diff --git a/po/R-zh_CN.po b/po/R-zh_CN.po index 0b437f3efb..5f8ae7f53a 100644 --- a/po/R-zh_CN.po +++ b/po/R-zh_CN.po @@ -2,8 +2,8 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.5\n" "POT-Creation-Date: 2019-10-21 16:15\n" -"PO-Revision-Date: 2019-10-04 17:06+08\n" -"Last-Translator: Michael Chirico \n" +"PO-Revision-Date: 2019-11-02 17:06+08\n" +"Last-Translator: Youhuang Bai \n" "Language-Team: Mandarin\n" "Language: Mandarin\n" "MIME-Version: 1.0\n" @@ -178,95 +178,100 @@ msgid ". Only integer, double or character columns may be roll joined." msgstr "联接时。但只有整数(integer)、双精度(double)或字符(character)类型的列可以使用滚动联接(roll join)。" msgid "Incompatible join types: x." -msgstr "" +msgstr "不兼容的联结类型: x。" msgid "(" -msgstr "" +msgstr "(" msgid ") and i." -msgstr "" +msgstr ")和 i。" msgid "). Factor columns must join to factor or character columns." -msgstr "" +msgstr ")。 因子类型的列必须与因子类型或字符类型的列才可以联结" msgid ")" -msgstr "" +msgstr ")" msgid "Incompatible join types:" -msgstr "" +msgstr "不兼容的联结类型" msgid "is type integer64 but" -msgstr "" +msgstr "是 integer64 类型但是" msgid "is type double and contains fractions" -msgstr "" +msgstr "是 double 类型并且包含分数" msgid "roll is not implemented for non-equi joins yet." -msgstr "" +msgstr "不等长联结还不能执行 roll " msgid "Column name '_nqgrp_' is reserved for non-equi joins." -msgstr "" +msgstr "列名 '_nqgrp_' 是为不等长联结保留的" msgid "key argument of data.table() must be character" -msgstr "" +msgstr "data.table() 的主参数必须是字符" msgid "Object '" -msgstr "" +msgstr "对象 '" msgid "' not found. Perhaps you intended" -msgstr "" +msgstr "' 不存在, 可能你打算" msgid "," -msgstr "" +msgstr "," msgid "or" -msgstr "" +msgstr "或者" msgid "more" -msgstr "" +msgstr "更多" msgid "' not found amongst" -msgstr "" +msgstr "' 不存在" msgid "and" -msgstr "" +msgstr "并且" msgid "Provide either by= or keyby= but not both" -msgstr "" +msgstr "提供 by= 或 keyby= ,但两者不能同时存在" msgid "Ignoring keyby= because j= is not supplied" -msgstr "" +msgstr "因为没有提供 j= ,所以忽略 keyby= " msgid "Ignoring by= because j= is not supplied" -msgstr "" +msgstr "因为没有提供 j= ,所以忽略 by= " msgid "" "When on= is provided but not i=, on= must be a named list or data.table|" "frame, and a natural join (i.e. join on common names) is invoked. Ignoring " "on= which is '" msgstr "" +"当提供 on= 而不提供 i= 的时候, on= 必须是带名称的 list 或者 data.table 或者 data.frame," +"并且会调用自然联结(例如,按照共有名称联结),忽略 on= " msgid "'." -msgstr "" +msgstr "'。" msgid "" "i and j are both missing so ignoring the other arguments. This warning will " "be upgraded to error in future." msgstr "" +"i 和 j 都缺少的时候忽略其他参数。将来此警告信息将升级为错误信息。" msgid "mult argument can only be 'first', 'last' or 'all'" -msgstr "" +msgstr "mult 参数只能赋值为 'first', 'last' 或 'all'" msgid "" "roll must be a single TRUE, FALSE, positive/negative integer/double " "including +Inf and -Inf or 'nearest'" msgstr "" +"roll 必须是单个参数,例如 TRUE, FALSE, 正或负的 integer 或 double" +"包括 +Inf , -Inf 或 'nearest'" msgid "roll is '" -msgstr "" +msgstr "roll 是" msgid "' (type character). Only valid character value is 'nearest'." -msgstr "" +msgstr "'(字符类型)。 唯一有效的字符值是'nearest'。" msgid "rollends must be a logical vector" msgstr "" diff --git a/po/zh_CN.po b/po/zh_CN.po index 758319e16c..095ea614dc 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -2,9 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-11-01 00:42+0800\n" -"PO-Revision-Date: 2019-10-04 17:06+08\n" -"Last-Translator: Michael Chirico \n" +"POT-Creation-Date: 2019-10-21 16:15+0800\n" +"PO-Revision-Date: 2019-11-02 17:06+08\n" +"Last-Translator: Youhuang Bai \n" "Language-Team: Mandarin\n" "Language: Mandarin\n" "MIME-Version: 1.0\n" @@ -350,9 +350,8 @@ msgid "" "or setalloccol() on it first (to pre-allocate space for new columns) before " "assigning by reference to it." msgstr "" -"该 data.table 为从磁盘中载入(如使用 readRDS()/load())或手动创建(如使用 " -"structure())。请首先对其运行 setDT() 或 setalloccol() (以为新列预分配内存空" -"间),然后再进行引用赋值(assigning by reference)操作。" +"此 data.table 是从硬盘导入(例如 readRDS()/load() )或者手动创建(例如 structure() )。" +"在通过引用的方式进行赋值前,请先运行 setDT() 或 setalloccol() 来为增加的列预先分配空间" #: assign.c:450 #, c-format @@ -360,6 +359,8 @@ msgid "" "Internal error: oldtncol(%d) < oldncol(%d). Please report to data.table " "issue tracker, including result of sessionInfo()." msgstr "" +"内部错误: oldtncol(%d) < oldncol(%d)。 请将此问题汇报给 data.table 问题追踪器," +"包括 sessionInfo() 的信息。" #: assign.c:452 #, c-format @@ -369,6 +370,9 @@ msgid "" "please report to data.table issue tracker including the result of " "sessionInfo()." msgstr "" +"truelength (%d) 的值大于超额分配的 10000 项 (length = %d)。请查看 ?truelength。 +"如果你没有将 datatable.alloccol 设置为非常大的数值," +"请将此问题汇报给 data.table 问题追踪器,包含 sessionInfo() 的信息" #: assign.c:454 #, c-format @@ -376,6 +380,7 @@ msgid "" "Internal error: DT passed to assign has not been allocated enough column " "slots. l=%d, tl=%d, adding %d" msgstr "" +"内部错误: 传递出去赋值的 DT 没有被分配足够的列槽。 l=%d, tl=%d, 增加 %d" #: assign.c:456 msgid "" @@ -383,17 +388,22 @@ msgid "" "reassigned. Please ensure to use setnames() rather than names<- or " "colnames<-. Otherwise, please report to data.table issue tracker." msgstr "" +"此 data.table 的名称在早先已经被重新赋值。" +"请确保使用 setnames() 而不是 names<- 或 colnames<- 进行赋值。" +"如果该办法无效,请将此问题汇报给 data.table 问题追踪器,包含 sessionInfo() 的信息" #: assign.c:460 #, c-format msgid "Internal error: selfrefnames is ok but tl names [%d] != tl [%d]" msgstr "" +"内部错误: selfrefnames 正确,但 tl 的名称 [%d] != tl [%d]" #: assign.c:471 msgid "" "Internal error: earlier error 'When deleting columns, i should not be " "provided' did not happen." msgstr "" +"内部错误: 前期的错误 '当删除列的时候,不应该提供参数 i ' 没有发生" #: assign.c:482 #, c-format @@ -401,11 +411,13 @@ msgid "" "RHS for item %d has been duplicated because NAMED==%d MAYBE_SHARED==%d, but " "then is being plonked. length(values)==%d; length(cols)==%d)\n" msgstr "" +"因为 NAMED==%d MAYBE_SHARED==%d, 所以条目 %d 的 RHS 已经被复制,但是接下来又要被替换了。" +"length(values)==%d; length(cols)==%d)\n" #: assign.c:487 #, c-format msgid "Direct plonk of unnamed RHS, no copy. NAMED==%d, MAYBE_SHARED==%d\n" -msgstr "" +msgstr "直接替换没有名字的 RHS,并没有复制。 NAMED==%d, MAYBE_SHARED==%d\n" #: assign.c:556 #, c-format @@ -413,116 +425,117 @@ msgid "" "Dropping index '%s' as it doesn't have '__' at the beginning of its name. It " "was very likely created by v1.9.4 of data.table.\n" msgstr "" +"丢掉索引 '%s' 因为它的名字前面没有 '__' 。这个很可能是 data.table v1.9.4 创建的" #: assign.c:564 msgid "Internal error: index name ends with trailing __" -msgstr "" +msgstr "内部错误: 索引名称以 __ 结尾" #: assign.c:569 msgid "Internal error: Couldn't allocate memory for s4." -msgstr "" +msgstr "内部错误: 不能给 s4 分配内存" #: assign.c:580 msgid "Internal error: Couldn't allocate memory for s5." -msgstr "" +msgstr "内部错误: 不能给 s5 分配内存" #: assign.c:601 assign.c:617 #, c-format msgid "Dropping index '%s' due to an update on a key column\n" -msgstr "" +msgstr " 因为一个主列的更新,丢掉索引 '%s'" #: assign.c:610 #, c-format msgid "Shortening index '%s' to '%s' due to an update on a key column\n" -msgstr "" +msgstr "因为一个主列的更新,缩短索引 '%s' 到 '%s'" #: assign.c:687 #, c-format msgid "Internal error: recycle length error not caught earlier. slen=%d len=%d" -msgstr "" +msgstr "内部错误: 早期未被发现的循环长度错误 slen=%d len=%d" #: assign.c:691 msgid "Internal error: memrecycle has received NULL colname" -msgstr "" +msgstr "内部错误: memrecycle 接受到的列名为 NULL " #: assign.c:717 #, c-format msgid "" "Cannot assign 'factor' to '%s'. Factors can only be assigned to factor, " "character or list columns." -msgstr "" +msgstr "不能将 'factor' 赋值为 '%s' 。因子类型只能赋值为因子,字符或者列表其中的列" #: assign.c:731 #, c-format msgid "" "Assigning factor numbers to column %d named '%s'. But %d is outside the " "level range [1,%d]" -msgstr "" +msgstr "将列 %d 名称为 '%s' 赋值为因子。但是 %d 在层次范围[1,%d]之外" #: assign.c:739 #, c-format msgid "" "Assigning factor numbers to column %d named '%s'. But %f is outside the " "level range [1,%d], or is not a whole number." -msgstr "" +msgstr "将列 %d 名称为 '%s' 赋值为因子。但是 %f 在层次范围[1,%d]之外,或者不是一个完整的数字" #: assign.c:745 #, c-format msgid "" "Cannot assign '%s' to 'factor'. Factor columns can be assigned factor, " "character, NA in any type, or level numbers." -msgstr "" +msgstr "不能将 'factor' 赋值为 '%s' 。 因子列可被赋值为因子,字符 ,NA 或者 层次数值" #: assign.c:766 msgid "" "Internal error: levels of target are either not unique or have truelength<0" -msgstr "" +msgstr "内部错误: 目标的层次不是唯一或者长度<0" #: assign.c:805 #, c-format msgid "Unable to allocate working memory of %d bytes to combine factor levels" -msgstr "" +msgstr "不能分配 %d 字节的工作内存来组合因子层次" #: assign.c:812 msgid "Internal error: extra level check sum failed" -msgstr "" +msgstr "内部错误: 额外的层次校验和失败" #: assign.c:831 #, c-format msgid "" "Coercing 'character' RHS to '%s' to match the type of the target column " "(column %d named '%s')." -msgstr "" +msgstr "将'character' RHS 强制转换成 '%s' 来匹配目标列的类型" #: assign.c:837 #, c-format msgid "" "Cannot coerce 'list' RHS to 'integer64' to match the type of the target " "column (column %d named '%s')." -msgstr "" +msgstr "不能将'list' RHS 强制转换成 'integer64' 来匹配目标列的类型" #: assign.c:842 #, c-format msgid "" "Coercing 'list' RHS to '%s' to match the type of the target column (column " "%d named '%s')." -msgstr "" +msgstr "将'list' RHS 强制转换成 '%s' 来匹配目标列的类型(列 %d 名称 '%s')" #: assign.c:848 #, c-format msgid "Zero-copy coerce when assigning '%s' to '%s' column %d named '%s'.\n" -msgstr "" +msgstr "当 '%s' 赋值成 '%s' 列 %d 名称 '%s',进行Zero-copy强制转换。" #: assign.c:943 #, c-format msgid "type '%s' cannot be coerced to '%s'" -msgstr "" +msgstr "类型 '%s' 不能强制转换成 '%s'" #: assign.c:1063 msgid "" "To assign integer64 to a character column, please use as.character() for " "clarity." -msgstr "" +msgstr "请使用 as.character() 把 integer64 类型的数值赋值给字符列" #: assign.c:1074 #, c-format From 62a3ce8790876413d068e35c190824313d095b62 Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Sun, 3 Nov 2019 11:18:20 +0800 Subject: [PATCH 33/78] minor update --- inst/po/zh_CN/LC_MESSAGES/R-data.table.mo | Bin 7963 -> 10690 bytes inst/po/zh_CN/LC_MESSAGES/data.table.mo | Bin 12849 -> 18676 bytes po/zh_CN.po | 19 +++++++++++-------- 3 files changed, 11 insertions(+), 8 deletions(-) diff --git a/inst/po/zh_CN/LC_MESSAGES/R-data.table.mo b/inst/po/zh_CN/LC_MESSAGES/R-data.table.mo index 53c2c8f1e3be6b2b434841ac08034979212805d1..1595fadd4be528f52554c5d27bcf4e2fc02fde58 100644 GIT binary patch delta 4193 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 diff --git a/inst/po/zh_CN/LC_MESSAGES/data.table.mo b/inst/po/zh_CN/LC_MESSAGES/data.table.mo index fd479822e78ed0f208fca1c7c28d96beebafc29e..5e4d53e241136b9a968365bf65098f38472e9ee0 100644 GIT binary patch delta 7428 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 delta 1710 zcmZY9drXyO9Ki7(2T-nZ6HG)r2a7w%RY?d;DRidTg{>^J!)1v&};BKzP;oW^b(z?xu@bIdOxAtHZq;}UMh;ZRnOH&G9CJZ#0k zQSZEGy+{F0VlMuPdAK87WESH2RX_KTNDSs<7TQtY?^|^O^+u*~2=AkQ{=!BULZ-e%z3|%%-jK;f{3cd| zFQI|msL!a7f_O*wF&YCIwHK2yih-`9PVG;8c?1)-kbZm*kK^}PgnO(j8|c7#`q%LW z=Ge%82N%n>l{0N;nfgqZ@CzoWU|Tu^3FL1C3$YaMURbBV{7_{D`^a z5RzRvfs84qF_wv)sE>4p4}Kz{6vjC$K*~jaz*q3M1}=1Ji_=7G_&Vw{?MD3?-B|Tk z)Mp%&F7gXzBBvzb8SD~4dtX&CLT1_Bv!(kc$Cmp zubbXE>u^^!e+Ral_-}Bh zRi{ul>P)}J?$<{5b+P&r`Up5`cS=FR2@AoS>&_y$v#O<}+?m$b>xeKSP*m&Mdi9OZ zE#>k%s+Rq?8XE(HE$U9tQ|jyBTs0nIsOqpdqilV@#c*t>vlw}iCq31t(J@APbh|}a zY-z@uwiqup7+d0%mXemGmSZ<19;hrkX0NES?m1RjTUl0P&0D>(+RxhcYPG$xDz&Vp zTIIwo8TaC|Jk;T&cU4pJ7NaZ0*P@EjURG)8PpgOwLw%Q-q$;!b8~NEUSd8?XMT>Db z_hU=L{OF*y++Jr-t+SU_Rajl)6RydwxeF)f`p>$?N9L!d%$C7Lr^6g-a!p;E>$zyH zt+1CrQ}}Fr!nUd!dwG1qqO)z*(Kp-HVYXj19sTCy#D5-tqpr5TtggPc!u{k-W7GWT z)rFxxv&CVKer~pSTv7e`w!QqsH95%SvwfeKjx!7An@vaSLQALF+G38Jog1E5ICGha z7M-W&ny;AMU1n?N{I&l1fm5clmqpEg)?qd}8ALU1jtI~zQk|};5138;oF8oz6^vO_ M=5CuYushrP9|h($ diff --git a/po/zh_CN.po b/po/zh_CN.po index 095ea614dc..33f572397b 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -370,7 +370,7 @@ msgid "" "please report to data.table issue tracker including the result of " "sessionInfo()." msgstr "" -"truelength (%d) 的值大于超额分配的 10000 项 (length = %d)。请查看 ?truelength。 +"truelength (%d) 的值大于超额分配的 10000 项 (length = %d)。请查看 ?truelength。" "如果你没有将 datatable.alloccol 设置为非常大的数值," "请将此问题汇报给 data.table 问题追踪器,包含 sessionInfo() 的信息" @@ -411,7 +411,7 @@ msgid "" "RHS for item %d has been duplicated because NAMED==%d MAYBE_SHARED==%d, but " "then is being plonked. length(values)==%d; length(cols)==%d)\n" msgstr "" -"因为 NAMED==%d MAYBE_SHARED==%d, 所以条目 %d 的 RHS 已经被复制,但是接下来又要被替换了。" +"因为 NAMED==%d MAYBE_SHARED==%d, 所以条目 %d 的 RHS 已经被复制,但是接下来又要被替换了。" "length(values)==%d; length(cols)==%d)\n" #: assign.c:487 @@ -425,7 +425,7 @@ msgid "" "Dropping index '%s' as it doesn't have '__' at the beginning of its name. It " "was very likely created by v1.9.4 of data.table.\n" msgstr "" -"丢掉索引 '%s' 因为它的名字前面没有 '__' 。这个很可能是 data.table v1.9.4 创建的" +"丢掉索引 '%s' 因为它的名字前面没有 '__' 。这个很可能是 data.table v1.9.4 创建的\n" #: assign.c:564 msgid "Internal error: index name ends with trailing __" @@ -442,12 +442,12 @@ msgstr "内部错误: 不能给 s5 分配内存" #: assign.c:601 assign.c:617 #, c-format msgid "Dropping index '%s' due to an update on a key column\n" -msgstr " 因为一个主列的更新,丢掉索引 '%s'" +msgstr " 因为一个主列的更新,丢掉索引 '%s'\n" #: assign.c:610 #, c-format msgid "Shortening index '%s' to '%s' due to an update on a key column\n" -msgstr "因为一个主列的更新,缩短索引 '%s' 到 '%s'" +msgstr "因为一个主列的更新,缩短索引 '%s' 到 '%s'\n" #: assign.c:687 #, c-format @@ -505,14 +505,17 @@ msgstr "内部错误: 额外的层次校验和失败" msgid "" "Coercing 'character' RHS to '%s' to match the type of the target column " "(column %d named '%s')." -msgstr "将'character' RHS 强制转换成 '%s' 来匹配目标列的类型" +msgstr "" +"将'character' RHS 强制转换成 '%s' 来匹配目标列的类型(列 %d 名称 '%s')" + #: assign.c:837 #, c-format msgid "" "Cannot coerce 'list' RHS to 'integer64' to match the type of the target " "column (column %d named '%s')." -msgstr "不能将'list' RHS 强制转换成 'integer64' 来匹配目标列的类型" +msgstr "" +"不能将'list' RHS 强制转换成 'integer64' 来匹配目标列的类型(列 %d 名称 '%s')" #: assign.c:842 #, c-format @@ -524,7 +527,7 @@ msgstr "将'list' RHS 强制转换成 '%s' 来匹配目标列的类型(列 %d #: assign.c:848 #, c-format msgid "Zero-copy coerce when assigning '%s' to '%s' column %d named '%s'.\n" -msgstr "当 '%s' 赋值成 '%s' 列 %d 名称 '%s',进行Zero-copy强制转换。" +msgstr "当 '%s' 赋值成 '%s' 列 %d 名称 '%s',进行Zero-copy强制转换。\n" #: assign.c:943 #, c-format From 35eb661b3a2e03f2a9a8e7ae339639421d64e73b Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Tue, 5 Nov 2019 09:57:04 +0800 Subject: [PATCH 34/78] added new message caught by xianghui --- inst/po/en@quot/LC_MESSAGES/data.table.mo | Bin 137020 -> 137480 bytes po/data.table.pot | 9 +++- po/zh_CN.po | 57 +++++++++++++--------- src/fread.c | 2 +- 4 files changed, 42 insertions(+), 26 deletions(-) diff --git a/inst/po/en@quot/LC_MESSAGES/data.table.mo b/inst/po/en@quot/LC_MESSAGES/data.table.mo index ad3ad47d07632a70bcd39d12f68f2f5c6f965723..f51de64b1b3a74fb66aa7dd2ec3ca167eaccb951 100644 GIT binary patch delta 18017 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 I??%=C0bSg2yZ`_I delta 17600 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\n" "Language-Team: LANGUAGE \n" @@ -1863,6 +1863,13 @@ msgid "" "to write 0 to the last byte.\n" msgstr "" +#: fread.c:1335 +msgid "" +"This file is very unusual: it ends abruptly without a final newline, and " +"also its size is a multiple of 4096 bytes. Please properly end the last row " +"with a newline using for example 'echo >> file' to avoid this " +msgstr "" + #: fread.c:1336 #, c-format msgid " File ends abruptly with '%c'. Copying file in RAM. %s copy.\n" diff --git a/po/zh_CN.po b/po/zh_CN.po index 33f572397b..2da0d3d66e 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-10-21 16:15+0800\n" +"POT-Creation-Date: 2019-11-05 09:55+0800\n" "PO-Revision-Date: 2019-11-02 17:06+08\n" "Last-Translator: Youhuang Bai \n" "Language-Team: Mandarin\n" @@ -350,8 +350,9 @@ msgid "" "or setalloccol() on it first (to pre-allocate space for new columns) before " "assigning by reference to it." msgstr "" -"此 data.table 是从硬盘导入(例如 readRDS()/load() )或者手动创建(例如 structure() )。" -"在通过引用的方式进行赋值前,请先运行 setDT() 或 setalloccol() 来为增加的列预先分配空间" +"此 data.table 是从硬盘导入(例如 readRDS()/load() )或者手动创建(例如 " +"structure() )。在通过引用的方式进行赋值前,请先运行 setDT() 或 setalloccol() " +"来为增加的列预先分配空间" #: assign.c:450 #, c-format @@ -359,8 +360,8 @@ msgid "" "Internal error: oldtncol(%d) < oldncol(%d). Please report to data.table " "issue tracker, including result of sessionInfo()." msgstr "" -"内部错误: oldtncol(%d) < oldncol(%d)。 请将此问题汇报给 data.table 问题追踪器," -"包括 sessionInfo() 的信息。" +"内部错误: oldtncol(%d) < oldncol(%d)。 请将此问题汇报给 data.table 问题追踪" +"器,包括 sessionInfo() 的信息。" #: assign.c:452 #, c-format @@ -370,9 +371,9 @@ msgid "" "please report to data.table issue tracker including the result of " "sessionInfo()." msgstr "" -"truelength (%d) 的值大于超额分配的 10000 项 (length = %d)。请查看 ?truelength。" -"如果你没有将 datatable.alloccol 设置为非常大的数值," -"请将此问题汇报给 data.table 问题追踪器,包含 sessionInfo() 的信息" +"truelength (%d) 的值大于超额分配的 10000 项 (length = %d)。请查看 ?" +"truelength。如果你没有将 datatable.alloccol 设置为非常大的数值,请将此问题汇" +"报给 data.table 问题追踪器,包含 sessionInfo() 的信息" #: assign.c:454 #, c-format @@ -388,22 +389,20 @@ msgid "" "reassigned. Please ensure to use setnames() rather than names<- or " "colnames<-. Otherwise, please report to data.table issue tracker." msgstr "" -"此 data.table 的名称在早先已经被重新赋值。" -"请确保使用 setnames() 而不是 names<- 或 colnames<- 进行赋值。" -"如果该办法无效,请将此问题汇报给 data.table 问题追踪器,包含 sessionInfo() 的信息" +"此 data.table 的名称在早先已经被重新赋值。请确保使用 setnames() 而不是 " +"names<- 或 colnames<- 进行赋值。如果该办法无效,请将此问题汇报给 data.table " +"问题追踪器,包含 sessionInfo() 的信息" #: assign.c:460 #, c-format msgid "Internal error: selfrefnames is ok but tl names [%d] != tl [%d]" -msgstr "" -"内部错误: selfrefnames 正确,但 tl 的名称 [%d] != tl [%d]" +msgstr "内部错误: selfrefnames 正确,但 tl 的名称 [%d] != tl [%d]" #: assign.c:471 msgid "" "Internal error: earlier error 'When deleting columns, i should not be " "provided' did not happen." -msgstr "" -"内部错误: 前期的错误 '当删除列的时候,不应该提供参数 i ' 没有发生" +msgstr "内部错误: 前期的错误 '当删除列的时候,不应该提供参数 i ' 没有发生" #: assign.c:482 #, c-format @@ -411,8 +410,8 @@ msgid "" "RHS for item %d has been duplicated because NAMED==%d MAYBE_SHARED==%d, but " "then is being plonked. length(values)==%d; length(cols)==%d)\n" msgstr "" -"因为 NAMED==%d MAYBE_SHARED==%d, 所以条目 %d 的 RHS 已经被复制,但是接下来又要被替换了。" -"length(values)==%d; length(cols)==%d)\n" +"因为 NAMED==%d MAYBE_SHARED==%d, 所以条目 %d 的 RHS 已经被复制,但是接下来又" +"要被替换了。length(values)==%d; length(cols)==%d)\n" #: assign.c:487 #, c-format @@ -425,7 +424,8 @@ msgid "" "Dropping index '%s' as it doesn't have '__' at the beginning of its name. It " "was very likely created by v1.9.4 of data.table.\n" msgstr "" -"丢掉索引 '%s' 因为它的名字前面没有 '__' 。这个很可能是 data.table v1.9.4 创建的\n" +"丢掉索引 '%s' 因为它的名字前面没有 '__' 。这个很可能是 data.table v1.9.4 创建" +"的\n" #: assign.c:564 msgid "Internal error: index name ends with trailing __" @@ -463,7 +463,8 @@ msgstr "内部错误: memrecycle 接受到的列名为 NULL " msgid "" "Cannot assign 'factor' to '%s'. Factors can only be assigned to factor, " "character or list columns." -msgstr "不能将 'factor' 赋值为 '%s' 。因子类型只能赋值为因子,字符或者列表其中的列" +msgstr "" +"不能将 'factor' 赋值为 '%s' 。因子类型只能赋值为因子,字符或者列表其中的列" #: assign.c:731 #, c-format @@ -477,14 +478,17 @@ msgstr "将列 %d 名称为 '%s' 赋值为因子。但是 %d 在层次范围[1,% msgid "" "Assigning factor numbers to column %d named '%s'. But %f is outside the " "level range [1,%d], or is not a whole number." -msgstr "将列 %d 名称为 '%s' 赋值为因子。但是 %f 在层次范围[1,%d]之外,或者不是一个完整的数字" +msgstr "" +"将列 %d 名称为 '%s' 赋值为因子。但是 %f 在层次范围[1,%d]之外,或者不是一个完" +"整的数字" #: assign.c:745 #, c-format msgid "" "Cannot assign '%s' to 'factor'. Factor columns can be assigned factor, " "character, NA in any type, or level numbers." -msgstr "不能将 'factor' 赋值为 '%s' 。 因子列可被赋值为因子,字符 ,NA 或者 层次数值" +msgstr "" +"不能将 'factor' 赋值为 '%s' 。 因子列可被赋值为因子,字符 ,NA 或者 层次数值" #: assign.c:766 msgid "" @@ -505,9 +509,7 @@ msgstr "内部错误: 额外的层次校验和失败" msgid "" "Coercing 'character' RHS to '%s' to match the type of the target column " "(column %d named '%s')." -msgstr "" -"将'character' RHS 强制转换成 '%s' 来匹配目标列的类型(列 %d 名称 '%s')" - +msgstr "将'character' RHS 强制转换成 '%s' 来匹配目标列的类型(列 %d 名称 '%s')" #: assign.c:837 #, c-format @@ -1905,6 +1907,13 @@ msgid "" "to write 0 to the last byte.\n" msgstr "" +#: fread.c:1335 +msgid "" +"This file is very unusual: it ends abruptly without a final newline, and " +"also its size is a multiple of 4096 bytes. Please properly end the last row " +"with a newline using for example 'echo >> file' to avoid this " +msgstr "" + #: fread.c:1336 #, c-format msgid " File ends abruptly with '%c'. Copying file in RAM. %s copy.\n" diff --git a/src/fread.c b/src/fread.c index 4b5e0c294a..d329c5a19b 100644 --- a/src/fread.c +++ b/src/fread.c @@ -1332,7 +1332,7 @@ int freadMain(freadMainArgs _args) { // field) since we rely on that logic to avoid the copy below when fileSize$4096==0 but there is a final eol ok. // TODO: portable way to discover relevant page size. 4096 is lowest common denominator, though, and should suffice. } else { - const char *msg = "This file is very unusual: it ends abruptly without a final newline, and also its size is a multiple of 4096 bytes. Please properly end the last row with a newline using for example 'echo >> file' to avoid this "; + const char *msg = _("This file is very unusual: it ends abruptly without a final newline, and also its size is a multiple of 4096 bytes. Please properly end the last row with a newline using for example 'echo >> file' to avoid this "); if (verbose) DTPRINT(_(" File ends abruptly with '%c'. Copying file in RAM. %s copy.\n"), eof[-1], msg); // In future, we may discover a way to mmap fileSize+1 on all OS when fileSize%4096==0, reliably. If and when, this clause can be updated with no code impact elsewhere. copyFile(fileSize, msg, verbose); From 219b72660ee0d7cc0b938d5b516c63f720a96776 Mon Sep 17 00:00:00 2001 From: Koohoko Date: Wed, 6 Nov 2019 18:10:55 +0800 Subject: [PATCH 35/78] Translation haogao gu (#4002) * R-zh_CN_2019-10-26 * 10-26 * restore previous * updated with feedback * regenerate with small fix * regenerate .mo files --- inst/po/zh_CN/LC_MESSAGES/R-data.table.mo | Bin 10690 -> 17130 bytes inst/po/zh_CN/LC_MESSAGES/data.table.mo | Bin 18676 -> 24905 bytes po/R-zh_CN.po | 72 ++++++++++++++----- po/zh_CN.po | 82 ++++++++++++++-------- 4 files changed, 105 insertions(+), 49 deletions(-) diff --git a/inst/po/zh_CN/LC_MESSAGES/R-data.table.mo b/inst/po/zh_CN/LC_MESSAGES/R-data.table.mo index 1595fadd4be528f52554c5d27bcf4e2fc02fde58..0aab3bb4b303edf736fdffa508a762bcaf6a83f7 100644 GIT binary patch literal 17130 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 aW}$gS=U%LeSuvcebcS2qXQ^EcoBszuV1;!6 delta 2067 zcmYk+X>3$g6u|NGI+QMyw$M#lVWy>YkuuYj?h8ehmSRB~7i?_0K?kHIrB%w3X+%h= zNWmL5>K8<@7?l{FghVS6zF7?tHJE@jMdgc28c9SOjru=t=7Tpq?|1K;nfLBJ=idHw z*t)VMFtu>bOG4XB+)um}CbA3j!nx3<=ZaL}ZH&bw5h7W*0u!(W)3FEnsf=O+zJNRM z+mQ8q`aJxszK z^F+#V7<=#|Y{aE8!TY_K&G;-9^M1KTCyyK9^Mf-l#2m&4umsOw7v2nw>qx_1#!n+j zkr~wQ-$Q+{J5J;QT!;5zKc?aHs1qB<0=$ixyk8RHom5B}>dKFxu4D{z@eJ}OUvkk> zOydGv%*BU3JdAC)9`E2A=v^rCC|<)&m_xl>IE1>egBVDrW78?aN!*F9M3Jr7hm=ny zaT$JvIO?=o9-PH|>_{g6y3Y)=SdFiuuJ{(} z7a~%EmZ6JH;>QZ^?;@{cTh5}U{vuLlnZ_mf3+jaCEfRSM}_3-$Ung zsz?(iQz%VQXUOfS58jCn<1@%SWD<|#7nq4paCG!k4C9A5j?7hB7YA!TfV&x=!!77$ zmL<3+Ku1^n4i@9rsGBj;EwTnna5?VB792;N$ls_bZT9dP22e}&7cwVtaWr%jx^V?I zB1w_G=)sd%i-GfW^o4iP`9VhT+%}?a#tWzqyo5Tz8^|0bZmGx!dQnfoMb!J3uoZ9N zDy$$qm+=7Vf~wg_x)~24zYEAWbo9YDkt#?$dDNLL$2Q!FkKpGRgBhGLo-IDq?{7if z1HHHvU%|O}7gyqJXq?ZNbU~%4C9A^$J^$Twbmliue>jV!sCCiQm7!*48|tP!i56B9 z+BOrE+evRUCK7IfL^%@#r`2)gWI8Q^YZMXB`<)iXbz`WntJCHoDhN%#w#FdNM&qP9 zjg9Oy-K6V@Dnj=~ED=YnCJG4t1vpJh-9&f^U1UI4$Z>Rz$y%%>G#gsG8iK0GIzpQ( zh|CX3W}VWdqt=vD>om<)d8l88TDC|+)2=1aHYZ5H+1>RF8iF^R6ze~cHAE4?iE$cL zkqrddmu8}p&=wxVx$2SAre)OQ^`H*^-?BY914FyJJ)J%6{q3Ct-Tmg*sA@A5-D-L5 zcVkXj=DXPQF*&>=*VEqHIm7Hu-y zQZLxEX;&>XwK&BzxyS8>^k&Q4%Q$V0XYMzt%Z{0dteWV875Rmpg3^lom8Ll>$^CfW zV9#KC?{-gpyWdmQ;qU8c_t)*)G3f2?8uWJdn&GSw)eBev5$MVZ9^H|{_yQ!$ivi~SPXqnE^ mF_T<&z}{Sb-7=MxX=Y#5DcfK3lw~sO-ZZbRdeTJKkNyXrmk9a* diff --git a/inst/po/zh_CN/LC_MESSAGES/data.table.mo b/inst/po/zh_CN/LC_MESSAGES/data.table.mo index 5e4d53e241136b9a968365bf65098f38472e9ee0..23af0dd414e73cbb9e49976c9740db7ed86715a0 100644 GIT binary patch delta 8107 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\n" +"PO-Revision-Date: 2019-10-26 22:22+08\n" +"Last-Translator: Haogao Gu \n" "Language-Team: Mandarin\n" "Language: Mandarin\n" "MIME-Version: 1.0\n" @@ -1275,22 +1275,22 @@ msgid "length(na.last) > 1, only the first element will be used" msgstr "" msgid "x is a single vector, non-NULL 'cols' doesn't make sense" -msgstr "" +msgstr "x是单个向量,非空的'cols'没有意义" msgid "x is a list, 'cols' can not be 0-length" -msgstr "" +msgstr "x是一个list, 'cols'不能为0长度" msgid "Used more than one of the arguments input=, file=, text= and cmd=." -msgstr "" +msgstr "使用了超过一个参数, 包括input=, file=, text= 和 cmd=." msgid "Argument 'encoding' must be 'unknown', 'UTF-8' or 'Latin-1'." -msgstr "" +msgstr "参数 'encoding' 必须为 'unknown', 'UTF-8' 或 'Latin-1'." msgid "'text=' is type" -msgstr "" +msgstr "'text=' 是类型" msgid "but must be character." -msgstr "" +msgstr "但必须是字符." msgid "" "input= must be a single character string containing a file name, a system " @@ -1298,20 +1298,28 @@ msgid "" "'ftp[s]://' or 'file://', or, the input data itself containing at least one " "\\n or \\r" msgstr "" +"input= 必须是以下其中一种字符串: " +"一个文件名, 一个含有不少于一个空格的系统命令, " +"以'http[s]://','ftp[s]://' 或 'file://' 开头的URL, " +"或是本身就包含至少一个\\n 或 \\r的输入数据" msgid "" "input= contains no \\n or \\r, but starts with a space. Please remove the " "leading space, or use text=, file= or cmd=" msgstr "" +"input= 不包含 \\n 或 \\r, 但是开头有个空格" +"请移除开头的空格, 或使用text=, file= 或 cmd=" msgid "" "Input URL requires https:// connection for which fread() requires 'curl' " "package which cannot be found. Please install 'curl' using 'install." "packages('curl')'." msgstr "" +"输入的URL要求 https:// 连接. 因而 fread() 要求 'curl' 包." +"请用 'install.packages('curl')' 安装'curl'包." msgid "Taking input= as a system command ('" -msgstr "" +msgstr "正将 input= 当做系统命令 ('" msgid "" "') and a variable has been used in the expression passed to `input=`. Please " @@ -1321,18 +1329,22 @@ msgid "" "the NEWS file for v1.11.6 for more information and for the option to " "suppress this message." msgstr "" +"') 同时一个变量也被传输到 `input=`.请使用fread(cmd=...)." +"这是出于安全考虑. 试想你在开发一个app, 这个app可能有恶意用户, " +"同时这个app的运行环境不安全 (比如在root环境下运行)." +"请阅读v1.11.6版本的NEWS file里面的item 5获取更多资讯, 或了解如何取消这个提示." msgid "File '" msgstr "文件'" msgid "' does not exist or is non-readable. getwd()=='" -msgstr "" +msgstr "' 不存在, 或不可读. getwd()=='" msgid "' is a directory. Not yet implemented." msgstr "'是个目录。还没有编程实现。" msgid "' has size 0. Returning a NULL" -msgstr "" +msgstr "' 的大小为0. 返回一个NULL" msgid "data.table" msgstr "" @@ -1345,88 +1357,110 @@ msgid "" "cannot be found. Please install 'R.utils' using 'install.packages('R." "utils')'." msgstr "" +"想要直接读取 gz 和 bz2 文件, fread() 需要 'R.utils' 包." +"请用 'install.packages('R.utils')'安装 'R.utils' 包." msgid "" "'autostart' is now deprecated and ignored. Consider skip='string' or skip=n" msgstr "" +"'autostart' 现在已经不再推荐使用且失效, 请考虑用 skip='string' 或 skip=n" msgid "" "colClasses is type 'logical' which is ok if all NA but it has some TRUE or " "FALSE values in it which is not allowed. Please consider the drop= or " "select= argument instead. See ?fread." msgstr "" +"colClasses 只能在全部是NA的情况下为逻辑变量. " +"请考虑使用 drop= 或 select= . 更多信息请参照 ?fread" msgid "colClasses is not type list or character vector" -msgstr "" +msgstr "colClasses 不是列表 (list) 或字符向量 (character vector)" msgid "" "colClasses=\"NULL\" (quoted) is interpreted as colClasses=NULL (the default) " "as opposed to dropping every column." msgstr "" +"colClasses=\"NULL\" (带引号) 应该被视为 colClasses=NULL (默认情况)" +"而不是弃掉每个列" msgid "" "strip.white==TRUE (default) and \"\" is present in na.strings, so any number " "of spaces in string columns will already be read as ." msgstr "" +"na.strings 中包含 strip.white==TRUE (默认情况) 和 \"\", 因此" +"(字符类型的)列中的空格会被当作 ." msgid "" "Since strip.white=TRUE (default), use na.strings=\"\" to specify that any " "number of spaces in a string column should be read as ." msgstr "" +"因为 strip.white=TRUE (默认情况), 请使用 na.strings=\"\" 以使得" +"(字符类型的)列中的空格会被当作 ." msgid "" "But strip.white=FALSE. Use strip.white=TRUE (default) together with na." "strings=\"\" to turn any number of spaces in string columns into " msgstr "" +"但是 strip.white=FALSE. 请使用 strip.white=TRUE (默认情况), 同时" +"na.strings=\"\", 以使得(字符类型的)列中的空格转成 ." msgid "" "'data.table' relies on the package 'yaml' to parse the file header; please " "add this to your library with install.packages('yaml') and try again." msgstr "" +"'data.table' 依赖 'yaml' 包来分析文件头 (header)" +"请使用 install.packages('yaml') 来安装然后再重试." msgid "" "Combining a search string as 'skip' and reading a YAML header may not work " "as expected -- currently," msgstr "" +"读取一个 YAML 文件头 (header) 的同时以 'skip' 为搜索字符" +"可能会引起异常 -- 目前" msgid "" "reading will proceed to search for 'skip' from the beginning of the file, " "NOT from the end of" msgstr "" +"读取会直接从文件的开头搜索 'skip', " +"而非从元数据 (metadata) " msgid "" "the metadata; please file an issue on GitHub if you'd like to see more " "intuitive behavior supported." msgstr "" +"的尾部开始; 如果你希望更直观的功能, 请在 Github 上提交 issue." msgid "Encountered <" -msgstr "" +msgstr "遇到 <" msgid "..." msgstr "" msgid "> at the first" -msgstr "" +msgstr "> 在第一个" msgid "unskipped line (" -msgstr "" +msgstr "非跳过的行 (" msgid "), which does not constitute the start to a valid YAML header" -msgstr "" +msgstr "), 它不含符合要求的 YAML header." msgid "(expecting something matching regex \"" -msgstr "" +msgstr "需要符合正则 (regex) \"" msgid "\"); please check your input and try again." -msgstr "" +msgstr "\"); 请检查你的输入然后重试." msgid "" "Reached the end of the file before finding a completion to the YAML header. " "A valid YAML header is bookended by lines matching" msgstr "" +"到了文件的结尾, 还没发现 YAML header 的完结." +"一个有效的 YAML header 应该根据行匹配结尾." msgid "the regex \"" -msgstr "" +msgstr "正则 \"" msgid "\". Please double check the input file is a valid csvy." msgstr "" diff --git a/po/zh_CN.po b/po/zh_CN.po index 2da0d3d66e..073b31d43a 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -2,9 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-11-05 09:55+0800\n" -"PO-Revision-Date: 2019-11-02 17:06+08\n" -"Last-Translator: Youhuang Bai \n" +"POT-Creation-Date: 2019-10-21 16:15+0800\n" +"PO-Revision-Date: 2019-10-26 23:54+08\n" +"Last-Translator: Haogao Gu \n" "Language-Team: Mandarin\n" "Language: Mandarin\n" "MIME-Version: 1.0\n" @@ -2665,12 +2665,15 @@ msgid "" "%s: NA (or other non-finite) value(s) are present in input, skip non-NA " "attempt and run with extra care for NAs\n" msgstr "" +"%s: NA (或其他非有限长度值) 出现在输入中, 跳过非NA的" +"输入并当心NA值\n" #: froll.c:141 froll.c:339 #, c-format msgid "" "%s: running in parallel for input length %llu, window %d, hasna %d, narm %d\n" msgstr "" +"%s: 正在并行运行, 输入长度 (input length) %llu, 窗口 (window) %d, hasna %d, narm %d\n" #: froll.c:179 froll.c:372 frolladaptive.c:157 frolladaptive.c:336 #, c-format @@ -2678,11 +2681,13 @@ msgid "" "%s: NA (or other non-finite) value(s) are present in input, na.rm was FALSE " "so in 'exact' implementation NAs were handled already, no need to re-run\n" msgstr "" +"%s: NA (或其他非有限长度值) 出现在输入中, na.rm 为 FALSE " +"因此在'exact'实现中, NA值已经被处理, 不需要重新运行\n" #: froll.c:428 #, c-format msgid "%s: results from provided FUN are not length 1" -msgstr "" +msgstr "%s: 所提供的函数 (FUN) 的结果长度不为1" #: froll.c:435 #, c-format @@ -2690,80 +2695,87 @@ msgid "" "%s: results from provided FUN are not of type double, coercion from integer " "or logical will be applied on each iteration\n" msgstr "" +"%s: 所提供的函数 (FUN) 的结果不是双精度 (double) 类型, " +"对整数或逻辑值的类型转换会在每个循环中执行\n" #: froll.c:438 #, c-format msgid "%s: results from provided FUN are not of type double" -msgstr "" +msgstr "%s: 所提供的函数 (FUN) 的结果不是双精度 (double) 类型" #: froll.c:467 #, c-format msgid "%s: took %.3fs\n" -msgstr "" +msgstr "%s: 使用了 %.3fs\n" #: frollR.c:15 msgid "x must be of type numeric or logical" -msgstr "" +msgstr "x 必须是数值或者逻辑类型" #: frollR.c:26 msgid "x must be list, data.frame or data.table of numeric or logical types" -msgstr "" +msgstr "x 必须是列表 (list), 或由数值或者逻辑类型组成的数据框 (data.frame 或 data.table)" #: frollR.c:47 frollR.c:264 msgid "n must be non 0 length" -msgstr "" +msgstr "n 必须不是0长度" #: frollR.c:50 msgid "adaptive must be TRUE or FALSE" -msgstr "" +msgstr "adaptive 必须是 TRUE 或者 FALSE" #: frollR.c:58 msgid "n must be integer, list is accepted for adaptive TRUE" -msgstr "" +msgstr "n 必须是整数, 或者当adaptive TRUE时也可以是列表" #: frollR.c:65 frollR.c:256 frollR.c:259 msgid "n must be integer" -msgstr "" +msgstr "n 必须是整数" #: frollR.c:72 msgid "n must be positive integer values (> 0)" -msgstr "" +msgstr "n 必须是正整数 (> 0)" #: frollR.c:81 frollR.c:93 msgid "n must be integer vector or list of integer vectors" -msgstr "" +msgstr "n 必须是整数向量 或者由整数向量组成的列表" #: frollR.c:104 gsumm.c:342 gsumm.c:577 gsumm.c:686 gsumm.c:805 gsumm.c:950 #: gsumm.c:1261 gsumm.c:1402 uniqlist.c:350 msgid "na.rm must be TRUE or FALSE" -msgstr "" +msgstr "na.rm 必须是 TRUE 或者 FALSE" #: frollR.c:107 msgid "hasNA must be TRUE, FALSE or NA" -msgstr "" +msgstr "hasNA 必须是 TRUE, FALSE 或者 NA" #: frollR.c:109 msgid "" "using hasNA FALSE and na.rm TRUE does not make sense, if you know there are " "NA values use hasNA TRUE, otherwise leave it as default NA" msgstr "" +"同时使用 hasNA FALSE 和 na.rm TRUE 没有意义, 如果明确有" +"NA值, 那就用 hasNA TRUE, 在其他情况可以让它保留默认值NA" #: frollR.c:119 frollR.c:275 msgid "" "Internal error: invalid align argument in rolling function, should have been " "caught before. please report to data.table issue tracker." msgstr "" +"内部错误: 在 rolling 函数内无效的 align 参数, 理应在更早阶段排除" +"请向data.table issue tracker报告" #: frollR.c:122 msgid "" "using adaptive TRUE and align argument different than 'right' is not " "implemented" msgstr "" +"同时使用 adaptive TRUE 和不是 'right' 的align参数还未能实现" #: frollR.c:126 frollR.c:297 types.c:64 #, c-format msgid "%s: allocating memory for results %dx%d\n" -msgstr "" +msgstr "%s: 正在为结果 %dx%d 分配内存\n" #: frollR.c:135 msgid "" @@ -2772,44 +2784,52 @@ msgid "" "function on list having variable length of elements call it for each field " "separately" msgstr "" +"adaptive rolling 函数只能处理长度同为" +"的 'x', 比如 data.table 或数据框; 如果想在含有不同长度元素的列表上执行 rolling" +"函数, 需要分开单独地在每一项上面执行." #: frollR.c:137 msgid "" "length of integer vector(s) provided as list to 'n' argument must be equal " "to number of observations provided in 'x'" msgstr "" +"'n' 列表中整数向量的长度必须等于 'x' 中的观察数量" #: frollR.c:151 msgid "" "Internal error: invalid fun argument in rolling function, should have been " "caught before. please report to data.table issue tracker." msgstr "" +"内部错误: 在 rolling 函数中无效的 fun 参数, 理应在更早阶段排除" +"请向data.table issue tracker报告" #: frollR.c:155 frollR.c:279 nafill.c:136 shift.c:21 msgid "fill must be a vector of length 1" -msgstr "" +msgstr "fill 必须是长度为1的向量" #: frollR.c:169 frollR.c:292 msgid "fill must be numeric" -msgstr "" +msgstr "fill 必须是数值型" #: frollR.c:185 msgid "" "Internal error: invalid algo argument in rolling function, should have been " "caught before. please report to data.table issue tracker." msgstr "" +"内部错误: 在 rolling 函数内无效的 algo 参数, 理应在更早阶段排除" +"请向data.table issue tracker报告" #: frollR.c:190 #, c-format msgid "Internal error: badaptive=%d but ik is not integer" -msgstr "" +msgstr "内部错误: badaptive=%d 但是 ik 不是整数" #: frollR.c:198 #, c-format msgid "" "%s: %d column(s) and %d window(s), if product > 1 then entering parallel " "execution\n" -msgstr "" +msgstr "%s: %d column(s) 和 %d window(s), 如果 product > 1 则进入并行执行\n" #: frollR.c:200 #, c-format @@ -2817,48 +2837,50 @@ msgid "" "%s: %d column(s) and %d window(s), not entering parallel execution here " "because algo='exact' will compute results in parallel\n" msgstr "" +"%s: %d column(s) 和 %d window(s), 未能进入并行执行," +"因为 algo='exact' 会并行计算结果\n" #: frollR.c:219 #, c-format msgid "Internal error: Unknown sfun value in froll: %d" -msgstr "" +msgstr "内部错误: 在 froll: %d 中未知的 sfun 值" #: frollR.c:227 frollR.c:328 #, c-format msgid "%s: processing of %d column(s) and %d window(s) took %.3fs\n" -msgstr "" +msgstr "%s: 处理 %d column(s), 和 %d window(s) 用掉 %.3fs\n" #: frollR.c:238 msgid "internal error: 'fun' must be a function" -msgstr "" +msgstr "内部错误: 'fun' 必须是一个函数" #: frollR.c:240 msgid "internal error: 'rho' should be an environment" -msgstr "" +msgstr "内部错误: 'rho' 应该为一个环境 (environment)" #: frolladaptive.c:33 frolladaptive.c:222 #, c-format msgid "%s: running for input length %llu, hasna %d, narm %d\n" -msgstr "" +msgstr "%s: 正在运行, 输入长度 %llu, hasna %d, narm %d\n" #: frolladaptive.c:39 frolladaptive.c:228 #, c-format msgid "%s: Unable to allocate memory for cumsum" -msgstr "" +msgstr "%s: 无法为 cumsum 分配内存" #: frolladaptive.c:75 frolladaptive.c:264 #, c-format msgid "%s: Unable to allocate memory for cum NA counter" -msgstr "" +msgstr "%s: 无法为 cum NA counter 分配内存" #: frolladaptive.c:118 frolladaptive.c:302 #, c-format msgid "%s: running in parallel for input length %llu, hasna %d, narm %d\n" -msgstr "" +msgstr "%s: 正在并行运行, 输入长度 %llu, hasna %d, narm %d\n" #: fsort.c:111 msgid "x must be a vector of type 'double' currently" -msgstr "" +msgstr "x 目前必须是双精度 ('double') 类型的向量" #: fsort.c:122 #, c-format From 07b568638350e5ea01ded5337f9f01bddb05c36b Mon Sep 17 00:00:00 2001 From: soappp Date: Wed, 6 Nov 2019 23:22:23 +0800 Subject: [PATCH 36/78] Translation finished (soappp) (#4023) * readme link examples, rm old link to a talk (#4001) * Homepage additions (#4006) * pkgdown, keep manual tab, link cranlike page, minor rename (#4008) * fix Rd warnings (#4011) * use Rdevel for revdeps due to bioc-devel (3.11) now needing R 4+ * (hopefully) apply encoding fix & check compilation * improve internal error & regenerate messages * Finish translation to zh_CN assigned to group 2 (Hongyuan Jia) (#3986) * Finish translation. * Resolve review comments. * balance quotes * extra nocov * some coverage of fmelt * complete coverage of fmelt * fix test error * update message per DeLuns feedback * update message again; some minor tweaks to nearby code * translatation completed * fixed somme message 1 --- po/R-zh_CN.po | 80 +++++++++++++++++++++++++++++++++------------------ po/zh_CN.po | 56 +++++++++++++++++++++++++----------- 2 files changed, 91 insertions(+), 45 deletions(-) diff --git a/po/R-zh_CN.po b/po/R-zh_CN.po index d2ff4dfd0e..d26cf51b38 100644 --- a/po/R-zh_CN.po +++ b/po/R-zh_CN.po @@ -513,47 +513,51 @@ msgid ".SDcols missing at the following indices:" msgstr "" msgid ".SDcols is numeric but has both +ve and -ve indices" -msgstr "" +msgstr ".SDcols 为数值,但同时具有 +ve 和 -ve 索引" msgid ".SDcols is numeric but out of bounds [1," -msgstr "" +msgstr ".SDcols 为数值但超出了 [1," msgid "] at:" -msgstr "" +msgstr "] 的范围:" msgid ".SDcols should be column numbers or names" -msgstr "" +msgstr ".SDcols 应为列数或是列名" msgid "Some items of .SDcols are not column names:" -msgstr "" +msgstr ".SDcols 中的部份项目不是列名:" msgid "" "This j doesn't use .SD but .SDcols has been supplied. Ignoring .SDcols. See ?" "data.table." -msgstr "" +msgstr "此处 j 不使用 .SD 但提供了 .SDcols ,因此忽略 .SDcols" +"详见 ?data.table" msgid "" ".SD is locked. Using := in .SD's j is reserved for possible future use; a " "tortuously flexible way to modify by group. Use := in j directly to modify " "by group by reference." -msgstr "" +msgstr ".SD 已锁定,在 .SD 的 j 中使用 := 进行分组修改是较不直观的方式" +"此功能被保留以供未来使用" +"请直接在 j 中使用 := 依照引用进行分组修改" msgid "In `:=`(col1=val1, col2=val2, ...) form, all arguments must be named." -msgstr "" +msgstr "在`:=`(col1=val1, col2=val2, ...) 中,所有参数必须被指名" msgid "" "LHS of := must be a symbol, or an atomic vector (column names or positions)." -msgstr "" +msgstr ":= 的 LHS 必须是符号或是原子向量(列名或是列的位置)" msgid "" "LHS of := appears to be column positions but are outside [1,ncol] range. New " "columns can only be added by name." -msgstr "" +msgstr ":= 的 LHS 是列的位置但超出了 [1,ncol] 的范围" +"新列只能以名称的方式新增" msgid "" "LHS of := isn't column names ('character') or positions ('integer' or " "'numeric')" -msgstr "" +msgstr ":= 的 LHS 不是列名('字符')或列的位置('整数'或'数值')" msgid "" "Invalid .internal.selfref detected and fixed by taking a (shallow) copy of " @@ -564,83 +568,103 @@ msgid "" "copying: ?set, ?setnames and ?setattr. If this message doesn't help, please " "report your use case to the data.table issue tracker so the root cause can " "be fixed or this message improved." -msgstr "" +msgstr "侦测到无效的 .internal.selfref ,已藉由获取 data.table 的(浅层)副本的方式修复" +"以便 := 能利用引用加入新列" +"在过去的某个时间点,此 data.table 已被 R 复制(或是以 structure()等方式手动生成)" +"请避免 names<- 与 attr<- 等目前(与偶发)可能会在 R 中复制整个data.table的操作" +"请改用 set* 语法以避免复制,详见 ?set、?setnames 及 ?setattr" +"如果以上讯息无法提供帮助,请回报你的案例至 data.table 问题追踪" +"以助于修复根本原因或改进本讯息" msgid "" "Cannot assign to an under-allocated recursively indexed list -- L[[i]][,:=] " "syntax is only valid when i is length 1, but it's length" msgstr "" +"无法指定配置不足的递归索引列表" +"-- L[[i]][,:=] 语法只有在 i 长度为1时有效,但它的長度" msgid "Internal error -- item '" -msgstr "" +msgstr "内部错误 -- 项目 '" msgid "' not found in names of list" -msgstr "" +msgstr "' 未能在名称列表中找到" msgid "Internal error -- column(s) not found:" -msgstr "" +msgstr "内部错误 -- 找不到此列:" msgid "" "strptime() usage detected and wrapped with as.POSIXct(). This is to minimize " "the chance of assigning POSIXlt columns, which use 40+ bytes to store one " "date (versus 8 for POSIXct). Use as.POSIXct() (which will call strptime() as " "needed internally) to avoid this warning." -msgstr "" +msgstr "侦测到使用 strptime() ,已用 as.POSIXct() 包裹" +"这么做是为了尽量避免列被指定为 POSIXlt" +"POSIXlt用40个以上的位元组储存日期(相较于 POSIXct 只用8位元组)" +"请使用 as.POSIXct() 以避免本警告 (此函数会根据需求在内部调用 strptime())" msgid "" "' is not found in calling scope. Looking in calling scope because this " "symbol was prefixed with .. in the j= parameter." msgstr "" +"' 未能在调用范围 (calling scope) 中找到,请查看调用范围" +"因为 j= 的参数以 .. 作为前缀" msgid "Internal error: xcolAns does not pass checks:" -msgstr "" +msgstr "内部错误 : xcolAns 无法通过检查:" msgid "" "Internal error: irows is NULL when making join result at R level. Should no " "longer happen now we use CsubsetDT earlier." -msgstr "" +msgstr "内部错误 : 在 R 生成连接结果时,irows为 NULL " +"我们已使用了 CsubsetDT,现在不应该再发生了" msgid "j (the 2nd argument inside [...]) is a single symbol but column name '" -msgstr "" +msgstr "j ( [...] 中的第二顺位参数) 是单个符号而列名 '" msgid "' is not found. Perhaps you intended DT[, .." -msgstr "" +msgstr "' 未被找到,也许你打算 DT[, .." msgid "" "]. This difference to data.frame is deliberate and explained in FAQ 1.1." msgstr "" +"] ,在FAQ 1.1 中有解释dat.table与data.frame的差别" msgid "" "Internal error: j has created a data.table result containing a NULL column" -msgstr "" +msgstr "内部错误 : j 创建了一个有列为 NULL 的 data.table" msgid "" "The column '.N' can't be grouped because it conflicts with the special .N " "variable. Try setnames(DT,'.N','N') first." -msgstr "" +msgstr "无法对 '.N' 列进行分组,因为与 data.table 特有的 .N 变量冲突" +"请先尝试 setnames(DT,'.N','N')" msgid "" "The column '.I' can't be grouped because it conflicts with the special .I " "variable. Try setnames(DT,'.I','I') first." -msgstr "" +msgstr "无法对 '.I' 列进行分组,因为与 data.table 特有的 .I 变量冲突" +"请先尝试 setnames(DT,'.I','I')" msgid "logical error. i is not data.table, but mult='all' and 'by'=.EACHI" -msgstr "" +msgstr "逻辑错误: i 不是data.table,但 mult='all' 及 'by'=.EACHI" msgid "Internal error: by= is missing" -msgstr "" +msgstr "内部错误 : 缺少 by=" + msgid "Internal error: byindex not the index name" -msgstr "" +msgstr "内部错误 : byindex 不是索引名称" msgid "Internal error: byindex not found" -msgstr "" +msgstr "内部错误 : 找不到 byindex" msgid "" "Unable to optimize call to mean() and could be very slow. You must name 'na." "rm' like that otherwise if you do mean(x,TRUE) the TRUE is taken to mean " "'trim' which is the 2nd argument of mean. 'trim' is not yet optimized." -msgstr "" +msgstr "无法优化对 mean() 的调用,这可能导致运行非常缓慢" +"您必须使用 na.rm=TRUE,否则如果您直接使用 mean(x,TRUE)" +"会被认定为 trim=TRUE,trim 是 mean() 中尚未被优化的第二顺位参数" msgid "Internal error: length(irows)!=length(o__)" msgstr "" diff --git a/po/zh_CN.po b/po/zh_CN.po index 073b31d43a..0b0e9d32e7 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -993,13 +993,16 @@ msgid "" "All items in j=list(...) should be atomic vectors or lists. If you are " "trying something like j=list(.SD,newcol=mean(colA)) then use := by group " "instead (much quicker), or cbind or merge afterwards." -msgstr "" +msgstr "j=list(...) 中的所有项目必须是原子向量或列表" +"如果您试图进行 j=list(.SD,newcol=mean(colA)) 之类的操作" +"请使用 := by group 代替(更快速),或事后使用 cbind()、merge()" #: dogroups.c:290 msgid "" "RHS of := is NULL during grouped assignment, but it's not possible to delete " "parts of a column." -msgstr "" +msgstr "用 := 分组时 RHS 为 NULL" +"但無法刪除部分列" #: dogroups.c:294 #, c-format @@ -1008,23 +1011,27 @@ msgid "" "RHS length must either be 1 (single values are ok) or match the LHS length " "exactly. If you wish to 'recycle' the RHS please use rep() explicitly to " "make this intent clear to readers of your code." -msgstr "" +msgstr "提供 %d 个项分配给第 '%s' 列中的第 %d 组,组的大小为 %d " +"RHS 的长度必须是 1(可以是单个值) 或完全符合 LHS 的长度" +"如果您想回收(recycle) RHS,请使用 rep() 向你的代码读者明确表达你的意图" + #: dogroups.c:305 msgid "" "Internal error: Trying to add new column by reference but tl is full; " "setalloccol should have run first at R level before getting to this point in " "dogroups" -msgstr "" +msgstr "内部错误 : 尝试依照引用增加新列但 tl 已满" +"在进入 dogroups 之前,setalloccol 应该先在 R 运行" #: dogroups.c:320 #, c-format msgid "Group %d column '%s': %s" -msgstr "" +msgstr "列 '%s' 第 %d 组 : %s" #: dogroups.c:327 msgid "j doesn't evaluate to the same number of columns for each group" -msgstr "" +msgstr "j 估算出的每组的列数不同" #: dogroups.c:361 #, c-format @@ -1035,14 +1042,18 @@ msgid "" "groups (and those are replaced with NA of appropriate type and recycled) but " "not for the first. Please use a typed empty vector instead, such as " "integer() or numeric()." -msgstr "" +msgstr "j 的结果中第 %d 列在第 1 组中为 NULL" +"我们依赖第 1 组的列类型去决定剩余组的类型(需要一致性)" +"空 (NULL) 列可以出现在后面的组(适当的以 NA 取代并回收)但不能是第 1 组" +"请输入空向量代替,例如 integer() 或 numeric()" #: dogroups.c:364 msgid "" "j appears to be a named vector. The same names will likely be created over " "and over again for each group and slow things down. Try and pass a named " "list (which data.table optimizes) or an unnamed list() instead.\n" -msgstr "" +msgstr "j 是名称向量,这可能使相同的名称不停重复创建导致速度变慢" +"请尝试输入名称列表(较适合 data.table)或是非名称列表代替\n" #: dogroups.c:366 #, c-format @@ -1050,7 +1061,9 @@ msgid "" "Column %d of j is a named vector (each item down the rows is named, " "somehow). Please remove those names for efficiency (to save creating them " "over and over for each group). They are ignored anyway.\n" -msgstr "" +msgstr "j 的第 %d 列是名称向量(整行的项都是名称)" +"为了效率请移除这些名称(避免在每组重复创建这些名称)" +"总之他们被忽略了\n" #: dogroups.c:374 msgid "" @@ -1059,12 +1072,15 @@ msgid "" "detected, removed and put back after grouping has completed, for efficiency. " "Using j=transform(), for example, prevents that speedup (consider changing " "to :=). This message may be upgraded to warning in future.\n" -msgstr "" +msgstr "j 的结果是名称列表,在每组不停重复创建相同的名称很没效率" +"为了提高效率,当 j=list(...) 时侦测到的所有名称会被移出,待分组完成后再放回来" +"可以使用 j=transform() 避免这种加速" +"此讯息可能会在未来升级为警告\n" #: dogroups.c:386 #, c-format msgid "dogroups: growing from %d to %d rows\n" -msgstr "" +msgstr "dogroups: 从 %d 列增加至 %d 列\n" #: dogroups.c:387 #, c-format @@ -1078,14 +1094,17 @@ msgid "" "%d NAs to match the longest column in this result. Later groups may have a " "similar problem but only the first is reported to save filling the warning " "buffer." -msgstr "" +msgstr "j 的结果第 %d 项在第 %d 组中为零长度(zero length)" +"将使用 %d 个 NA 填入以符合结果中最长列的长度" +"后面的分组也有相同问题,但只回报第一组以避免过多警告" #: dogroups.c:427 #, c-format msgid "" "Column %d of result for group %d is type '%s' but expecting type '%s'. " "Column types must be consistent for each group." -msgstr "" +msgstr "结果的第 %d 列在第 %d 组中是 '%s' 类别而非预期的 '%s' 类别" +"所有组的列类别必须一致" #: dogroups.c:429 #, c-format @@ -1094,24 +1113,27 @@ msgid "" "length must either be 1 (single values are ok) or match the LHS length " "exactly. If you wish to 'recycle' the RHS please use rep() explicitly to " "make this intent clear to readers of your code." -msgstr "" +msgstr "提供 %1$d 项给第 %3$d 組的第 %2$d 列,这组有 %4$d 行" +"RHS長度必須為 1 (可以使用單個值) 或與 LHS 長度完全匹配" +"如果您想回收(recycle) RHS,请使用 rep() 向你的代码读者明确表达你的意图" #: dogroups.c:444 #, c-format msgid "Wrote less rows (%d) than allocated (%d).\n" -msgstr "" +msgstr "写入的行 (%d) 少于分配的 (%d)\n" #: dogroups.c:454 #, c-format msgid "Internal error: block 0 [%d] and block 1 [%d] have both run" -msgstr "" +msgstr "内部错误 : 区块 0 [%d] 与区块 1 [%d] 都运行了" #: dogroups.c:456 #, c-format msgid "" "\n" " %s took %.3fs for %d groups\n" -msgstr "" +msgstr "\n" +" %s 花了 %.3fs 在 %d 个组\n" #: dogroups.c:458 #, c-format From 606937b27655467bdf962d1b08ccdc67c1501193 Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Wed, 6 Nov 2019 23:26:58 +0800 Subject: [PATCH 37/78] fix format tags for two translations --- inst/po/zh_CN/LC_MESSAGES/R-data.table.mo | Bin 17130 -> 23693 bytes inst/po/zh_CN/LC_MESSAGES/data.table.mo | Bin 24905 -> 30302 bytes po/zh_CN.po | 4 ++-- 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/inst/po/zh_CN/LC_MESSAGES/R-data.table.mo b/inst/po/zh_CN/LC_MESSAGES/R-data.table.mo index 0aab3bb4b303edf736fdffa508a762bcaf6a83f7..c4d04c7eec8de00f8fb2799118eac03eab7a3693 100644 GIT binary patch delta 9296 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 sm;U60V#@c2n#a8vsvp0?{l4O&h1`^p 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 diff --git a/po/zh_CN.po b/po/zh_CN.po index 0b0e9d32e7..084cfd267d 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -1011,7 +1011,7 @@ msgid "" "RHS length must either be 1 (single values are ok) or match the LHS length " "exactly. If you wish to 'recycle' the RHS please use rep() explicitly to " "make this intent clear to readers of your code." -msgstr "提供 %d 个项分配给第 '%s' 列中的第 %d 组,组的大小为 %d " +msgstr "提供 %1$d 个项分配给第 '%4$s' 列中的第 %2$d 组,组的大小为 %3$d " "RHS 的长度必须是 1(可以是单个值) 或完全符合 LHS 的长度" "如果您想回收(recycle) RHS,请使用 rep() 向你的代码读者明确表达你的意图" @@ -1027,7 +1027,7 @@ msgstr "内部错误 : 尝试依照引用增加新列但 tl 已满" #: dogroups.c:320 #, c-format msgid "Group %d column '%s': %s" -msgstr "列 '%s' 第 %d 组 : %s" +msgstr "列 '%2$s' 第 %1$d 组 : %3$s" #: dogroups.c:327 msgid "j doesn't evaluate to the same number of columns for each group" From 526a38b25c6b453a21fde269fe2f6e8c945f038a Mon Sep 17 00:00:00 2001 From: Kingdaaaaa <50854702+Kingdaaaaa@users.noreply.github.com> Date: Sun, 10 Nov 2019 18:56:44 +0800 Subject: [PATCH 38/78] done some translation! --- po/R-zh_CN.po | 48 ++++++++++++------------ po/zh_CN.po | 101 +++++++++++++++++++++++++++----------------------- 2 files changed, 78 insertions(+), 71 deletions(-) diff --git a/po/R-zh_CN.po b/po/R-zh_CN.po index ec3b630c3c..dfedd84c70 100644 --- a/po/R-zh_CN.po +++ b/po/R-zh_CN.po @@ -1416,86 +1416,86 @@ msgid "the regex \"" msgstr "" msgid "\". Please double check the input file is a valid csvy." -msgstr "" +msgstr "从这里开始" msgid "User-supplied 'header' will override that found in metadata." -msgstr "" +msgstr "用户提供的“header”将覆盖元数据中的列名" msgid "" "User-supplied column names in 'col.names' will override those found in YAML " "metadata." -msgstr "" +msgstr "用户在“col.names”中提供的列名将覆盖在YAML元数据中找到的列名" msgid "" "colClasses dictated by user input and those read from YAML header are in " "conflict (specifically, for column" -msgstr "" +msgstr "用户输入指定的列类型和从YAML列名中读取的列类型发生冲突(特别是column" msgid "s" -msgstr "" +msgstr "s" msgid "[" -msgstr "" +msgstr "[" msgid "]); the proceeding assumes the user input was" -msgstr "" +msgstr "]); 该过程假定用户输入的是" msgid "" "an intentional override and will ignore the types implied by the YAML " "header; please exclude" -msgstr "" +msgstr "有意覆盖的,并且将忽略YAML列名所指示的类型;" msgid "these columns" -msgstr "" +msgstr "这些列" msgid "this column from colClasses if this was unintentional." -msgstr "" +msgstr "如果是无意的,请排除colClasses中的此列" msgid "User-supplied 'sep' will override that found in metadata." -msgstr "" +msgstr "用户提供的“sep”将覆盖元数据中的分隔符" msgid "User-supplied 'quote' will override that found in metadata." -msgstr "" +msgstr "用户提供的“quote”将覆盖元数据中的引号" msgid "User-supplied 'dec' will override that found in metadata." -msgstr "" +msgstr "用户提供的“dec”将覆盖元数据中的小数点分隔符" msgid "User-supplied 'na.strings' will override that found in metadata." -msgstr "" +msgstr "用户提供的“na.strings”将覆盖元数据中对默认值的预处理" msgid "Column '" -msgstr "" +msgstr "列" msgid "' was requested to be '" -msgstr "" +msgstr "被要求为" msgid "' but fread encountered the following" -msgstr "" +msgstr "但是fread遇到了以下问题" msgid "error" -msgstr "" +msgstr "错误" msgid "warning" -msgstr "" +msgstr "警告" msgid ":" -msgstr "" +msgstr ":" msgid "so the column has been left as type '" -msgstr "" +msgstr "所以该列已经被保存为类型" msgid "" "key argument of data.table() must be a character vector naming columns (NB: " "col.names are applied before this)" -msgstr "" +msgstr "data.table()的关键参数必须是字符向量命名的列(NB:col.names在这之前被使用过)" msgid "" "index argument of data.table() must be a character vector naming columns " "(NB: col.names are applied before this)" -msgstr "" +msgstr "data.table()的关键参数必须是字符向量命名的列(NB:col.names在这之前被使用过)" msgid "dateTimeAs must be a single string" -msgstr "" +msgstr "dataTimeAs 必须是单个字符串" msgid "dateTimeAs must be 'ISO','squash','epoch' or 'write.csv'" msgstr "dateTimeAs 必须是 'ISO','squash','epoch' 或 'write.csv'" diff --git a/po/zh_CN.po b/po/zh_CN.po index 710b460ec5..67b01a075d 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -2810,82 +2810,82 @@ msgstr "" #: fsort.c:156 #, c-format msgid "Range = [%g,%g]\n" -msgstr "" +msgstr "Χ=[%g,%g]\n" #: fsort.c:157 msgid "Cannot yet handle negatives." -msgstr "" +msgstr "Ŀǰ޷ֵ" #: fsort.c:170 #, c-format msgid "maxBit=%d; MSBNbits=%d; shift=%d; MSBsize=%d\n" -msgstr "" +msgstr "maxBit=%d; MSBNbits=%d; shift=%d; MSBsize=%d\n" #: fsort.c:173 msgid "Unable to allocate working memory" -msgstr "" +msgstr "޷乤ڴ" #: fsort.c:177 #, c-format msgid "" "counts is %dMB (%d pages per nBatch=%d, batchSize=%lld, lastBatchSize=%lld)\n" -msgstr "" +msgstr "countsΪ%dMB (ÿnBatchе%dҳ=%d, batchSize=%lld, lastBatchSize=%lld)\n" #: fsort.c:230 msgid "Internal error: counts[nBatch-1][MSBsize-1] != length(x)" -msgstr "" +msgstr "ڲcounts[nBatch-1][MSBsize-1] length(x)" #: fsort.c:246 msgid "Top 5 MSB counts: " -msgstr "" +msgstr "ǰ5MSB counts" #: fsort.c:246 #, c-format msgid "%lld " -msgstr "" +msgstr "%lld " #: fsort.c:246 fwrite.c:690 fwrite.c:947 msgid "\n" -msgstr "" +msgstr "\n" #: fsort.c:247 #, c-format msgid "Reduced MSBsize from %d to " -msgstr "" +msgstr "MSBsize %d ٵ" #: fsort.c:251 #, c-format msgid "%d by excluding 0 and 1 counts\n" -msgstr "" +msgstr "%d ͨų01counts\n" #: fsort.c:308 #, c-format msgid "%d: %.3f (%4.1f%%)\n" -msgstr "" +msgstr "%d: %.3f (%4.1f%%)\n" #: fwrite.c:601 #, c-format msgid "buffMB=%d outside [1,1024]" -msgstr "" +msgstr "buffMB=%d [1,1024]֮" #: fwrite.c:608 #, c-format msgid "" "eol must be 1 or more bytes (usually either \\n or \\r\\n) but is length %d" -msgstr "" +msgstr "eol1ֽڣͨeither\\n \\r\\ndzΪ%d" #: fwrite.c:611 msgid "Column writers: " -msgstr "" +msgstr "д룺 " #: fwrite.c:613 fwrite.c:615 fwrite.c:617 #, c-format msgid "%d " -msgstr "" +msgstr "%d " #: fwrite.c:616 msgid "... " -msgstr "" +msgstr "... " #: fwrite.c:619 #, c-format @@ -2893,17 +2893,19 @@ msgid "" "\n" "args.doRowNames=%d args.rowNames=%d doQuote=%d args.nrow=%lld args.ncol=%d " "eolLen=%d\n" -msgstr "" +msgstr "\n" +"args.doRowNames=%d args.rowNames=%d doQuote=%d args.nrow=%lld args.ncol=%d " +"eolLen=%d\n" #: fwrite.c:652 #, c-format msgid "Internal error: type %d has no max length method implemented" -msgstr "" +msgstr "ڲ" #: fwrite.c:659 #, c-format msgid "maxLineLen=%zd. Found in %.3fs\n" -msgstr "" +msgstr "maxLineLen=%zd. %.3fsз\n" #: fwrite.c:679 #, c-format @@ -2911,7 +2913,8 @@ msgid "" "%s: '%s'. Failed to open existing file for writing. Do you have write " "permission to it? Is this Windows and does another process such as Excel " "have it open?" -msgstr "" +msgstr "%s: '%s'. ޷һڵļд.ǷԸļдȨޣ" +"WindowsϵͳǷExcel֮ĽѾ˸ļ" #: fwrite.c:680 #, c-format @@ -2919,75 +2922,76 @@ msgid "" "%s: '%s'. Unable to create new file for writing (it does not exist already). " "Do you have permission to write here, is there space on the disk and does " "the path exist?" -msgstr "" +msgstr "%s: '%s'. ޷µļд루ļڣ" +"ǷԴдȨޣǷпռԼ·Ƿڣ" #: fwrite.c:688 #, c-format msgid "Writing bom (%s), yaml (%d characters) and column names (%s) ... " -msgstr "" +msgstr "дbom (%s), yaml (%d characters) column names (%s) ..." #: fwrite.c:701 #, c-format msgid "Unable to allocate %d MiB for header: %s" -msgstr "" +msgstr "޷Ϊheader: %s%d MiB" #: fwrite.c:729 fwrite.c:789 msgid "Can't allocate gzip stream structure" -msgstr "" +msgstr "޷gzipṹ" #: fwrite.c:735 #, c-format msgid "Unable to allocate %d MiB for zbuffer: %s" -msgstr "" +msgstr "޷Ϊzbuffer: %s%d MiB" #: fwrite.c:750 #, c-format msgid "Compress gzip error: %d" -msgstr "" +msgstr "ѹgzip: %d" #: fwrite.c:751 fwrite.c:759 fwrite.c:953 #, c-format msgid "%s: '%s'" -msgstr "" +msgstr "%s: '%s'" #: fwrite.c:756 #, c-format msgid "done in %.3fs\n" -msgstr "" +msgstr "%.3fs\n" #: fwrite.c:758 msgid "No data rows present (nrow==0)\n" -msgstr "" +msgstr "ǰû(nrow==0)\n" #: fwrite.c:776 #, c-format msgid "" "Writing %lld rows in %d batches of %d rows (each buffer size %dMB, " "showProgress=%d, nth=%d)\n" -msgstr "" +msgstr "%dед%lld(ÿĴСΪ%dMBshowProgress=%d, nth=%d)\n)" #: fwrite.c:961 #, c-format msgid "zlib v%s deflate() returned error %d with z_stream.msg '%s'. %s\n" -msgstr "" +msgstr "zlib v%s deflate()ʹ%d with z_stream.msg '%s'. %s˴\n" #: fwrite.c:962 msgid "Please include the full output above in your data.table bug report." -msgstr "" +msgstr "data.table󱨸а" #: fwrite.c:963 msgid "" "Please retry fwrite() with verbose=TRUE and include the full output with " "your data.table bug report." -msgstr "" +msgstr "ʹverbose=TRUEfwrite()data.table󱨸" #: fwriteR.c:41 msgid "Internal error: col passed to getMaxCategLen is missing levels" -msgstr "" +msgstr "ڲ󣺴ݸgetMaxCateLencolڶʧ" #: fwriteR.c:75 msgid "Internal error: getMaxListItemLen should have caught this up front." -msgstr "" +msgstr "ڲgetMaxListItemLenӦѾԤץȡ" #: fwriteR.c:98 #, c-format @@ -2995,56 +2999,59 @@ msgid "" "Row %d of list column is type '%s' - not yet implemented. fwrite() can write " "list columns containing items which are atomic vectors of type logical, " "integer, integer64, double, complex and character." -msgstr "" +msgstr "бҳ%d'%s' - δʵʩ. fwrite()д" +"߼ԭĿбҳ" +"64˫ȣַ" #: fwriteR.c:103 #, c-format msgid "" "Internal error: row %d of list column has no max length method implemented" -msgstr "" +msgstr "ڲбҳ%dûʵ󳤶ȷ" #: fwriteR.c:170 msgid "" "fwrite must be passed an object of type list; e.g. data.frame, data.table" -msgstr "" +msgstr "fwrite봫һΪбĶ󣻱data.frame, data.table" #: fwriteR.c:179 msgid "fwrite was passed an empty list of no columns. Nothing to write." -msgstr "" +msgstr "fwriteһûеĿб. ûжд" #: fwriteR.c:234 #, c-format msgid "Column %d's length (%d) is not the same as column 1's length (%d)" -msgstr "" +msgstr "%dij(%d)1ij(%d)һ" #: fwriteR.c:237 #, c-format msgid "Column %d's type is '%s' - not yet implemented in fwrite." -msgstr "" +msgstr "%d'%s' - δfwriteʵʩ" #: fwriteR.c:262 msgid "" "No list columns are present. Setting sep2='' otherwise quote='auto' would " "quote fields containing sep2.\n" -msgstr "" +msgstr "ǰûбҳ. sep2=''quote='auto'ðsep2ֶ.\n" #: fwriteR.c:266 #, c-format msgid "" "If quote='auto', fields will be quoted if the field contains either sep " "('%c') or sep2 ('%c') because column %d is a list column.\n" -msgstr "" +msgstr "quote='auto', ֶΰһsepֶν" #: fwriteR.c:270 #, c-format msgid "" "sep ('%c'), sep2 ('%c') and dec ('%c') must all be different. Column %d is a " "list column." -msgstr "" +msgstr "sep ('%c'), sep2 ('%c') dec ('%c') 붼ͬ. %d һ" +"б" #: gsumm.c:43 msgid "env is not an environment" -msgstr "" +msgstr "envǻ" #: gsumm.c:45 msgid "o is not an integer vector" @@ -3052,7 +3059,7 @@ msgstr "" #: gsumm.c:46 msgid "f is not an integer vector" -msgstr "" +msgstr "fһ" #: gsumm.c:47 msgid "l is not an integer vector" From e23fe6386bfd6582d0e830f3d6f29a4cecf7dd06 Mon Sep 17 00:00:00 2001 From: Guangzheng Li Date: Fri, 15 Nov 2019 19:03:53 +0800 Subject: [PATCH 39/78] Finish translation to zh_CN assigned to group 5 (Leo Lee) (#3995) * chinese translation by Leo * Update R-zh_CN.po fix a typo * Update zh_CN.po * add missing quotes * number out-of-order format strings * apply numbering to formatters * Update R-zh_CN.po & Change author * Fix the problems of missing %d in zh_CN.po & Polish translation --- po/R-zh_CN.po | 53 +++++++++++++++++++++++++----------- po/zh_CN.po | 74 ++++++++++++++++++++++++++++++++------------------- 2 files changed, 83 insertions(+), 44 deletions(-) diff --git a/po/R-zh_CN.po b/po/R-zh_CN.po index d26cf51b38..dce04b4cf2 100644 --- a/po/R-zh_CN.po +++ b/po/R-zh_CN.po @@ -404,22 +404,24 @@ msgid "i has evaluated to type" msgstr "" msgid ". Expecting logical, integer or double." -msgstr "" +msgstr "。期望布尔类型,整型或浮点型。" msgid "i evaluates to a logical vector length" -msgstr "" +msgstr "i 为一个布尔类型向量的长度。" msgid "but there are" -msgstr "" +msgstr "但是存在" msgid "" "rows. Recycling of logical i is no longer allowed as it hides more bugs than " "is worth the rare convenience. Explicitly use rep(...,length=.N) if you " "really need to recycle." msgstr "" +"行。不再允许布尔值 i 循环补齐,尽管这样有些许便利,但会隐藏更多的 bug,得不偿失。" +"若确实需要循环补齐,请直接使用 rep(...,length=.N)。" msgid "Internal error: notjoin but byjoin or !integer or nomatch==NA" -msgstr "" +msgstr "内部错误。原因可能为:notjoin 而非 byjoin;非整数;nomatch 为空" msgid "" "with=FALSE together with := was deprecated in v1.9.4 released Oct 2014. " @@ -427,39 +429,47 @@ msgid "" "to assign to column name(s) held in variable myVar. See ?':=' for other " "examples. As warned in 2014, this is now a warning." msgstr "" +"2014年10月发布的1.9.4版本中,with=FALSE 和 := 共用的用法已被弃用。" +"请把 := 左侧部分打上括号;例如,DT[,(myVar):=sum(b),by=a]" +"对 myVar 中的列名进行赋值。输入 ?':=' 参看其他的" +"例子。正如2014年的版本中所说明的,现在这种用法会出现警告。" + msgid "" "with=FALSE ignored, it isn't needed when using :=. See ?':=' for examples." msgstr "" +"当使用 :=. 的时候,with=FALSE 是多余的,会被忽略。输入 ?':=' 参看例子。" msgid "column(s) not removed because not found:" -msgstr "" +msgstr "列未被删除因为不存在:" msgid "column(s) not found:" -msgstr "" +msgstr "列不存在" msgid "of j is" -msgstr "" +msgstr "j 是" msgid "which is outside the column number range [1,ncol=" -msgstr "" +msgstr "不在列索引范围内 [1,ncol=" msgid "]" -msgstr "" +msgstr "]" msgid "j mixes positives and negatives" -msgstr "" +msgstr "j 中同时存在正数和负数" msgid "" "When with=FALSE, j-argument should be of type logical/character/integer " "indicating the columns to select." msgstr "" +"当 with=FALSE,参数 j 必须为布尔型/字符型/整型之一" +",表征要选择的列。" msgid "by=c(...), key(...) or names(...) must evaluate to 'character'" -msgstr "" +msgstr "by=c(...), key(...) 或 names(...) 只接受 'character' " msgid "'by' is a character vector length" -msgstr "" +msgstr "'by' 是一个字符型向量,长度为" msgid "" "but one or more items include a comma. Either pass a vector of column names " @@ -467,37 +477,48 @@ msgid "" "containing comma separated column names. See ?data.table for other " "possibilities." msgstr "" +"但是其中包含一个或多个逗号。请传入一个列名组成的向量" +"(可以包含空格,但是不能包含逗号),或传入一个长度为1,由逗号分隔的列名组成的向量" +"输入 ?data.table" +"查看其他的选项。" msgid "Internal error: irows isn't integer" -msgstr "" +msgstr "内部错误:irows 不是整型" msgid "" "'by' appears to evaluate to column names but isn't c() or key(). Use " "by=list(...) if you can. Otherwise, by=eval" msgstr "" +"传递给 'by' 参数的似乎是列名,但没有用 c() 或者 key() 函数。如若可以,请使用" +"by=list(...)。此外,by=eval" msgid "" "should work. This is for efficiency so data.table can detect which columns " "are needed." msgstr "" +"应该是可行的。这样做是出于性能考虑,凭此 data.table 可以判断哪些列" +"是需要的。" msgid "" "'by' or 'keyby' must evaluate to a vector or a list of vectors (where 'list' " "includes data.table and data.frame which are lists, too)" msgstr "" +"'by' 或者 'keyby' 参数只接受一个向量或由向量组成的列表(这里 'list'" +"包含 data.table 和 data.frame,这二者本质也是列表" msgid "column or expression" -msgstr "" +msgstr "列或者表达式" msgid "of 'by' or 'keyby' is type" -msgstr "" +msgstr "传递给 'by' 和 'keyby' 参数的类型是" msgid "" ". Do not quote column names. Usage: DT[,sum(colC),by=list(colA,month(colB))]" -msgstr "" +msgstr "。请勿引用列名。用法:DT[,sum(colC),by=list(colA,month(colB))]" msgid "The items in the 'by' or 'keyby' list are length (" msgstr "" +"'by' 或 'keyby' 列表中的元素长度为(" msgid "). Each must be length" msgstr "" diff --git a/po/zh_CN.po b/po/zh_CN.po index 084cfd267d..487c8ab167 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -2,9 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-10-21 16:15+0800\n" -"PO-Revision-Date: 2019-10-26 23:54+08\n" -"Last-Translator: Haogao Gu \n" +"POT-Creation-Date: 2019-10-22 21:04+0800\n" +"PO-Revision-Date: 2019-10-26 16:01+08\n" +"Last-Translator: Guangzheng Li \n" "Language-Team: Mandarin\n" "Language: Mandarin\n" "MIME-Version: 1.0\n" @@ -774,49 +774,50 @@ msgstr "" #: bmerge.c:102 msgid "Intrnal error: nqmaxgrpArg is not a positive length-1 integer vector" -msgstr "" +msgstr "内部错误:nqmaxgrpArg不是长度为1的正整型向量" #: bmerge.c:111 msgid "Internal error in allocating memory for non-equi join" -msgstr "" +msgstr "不等值联结分配内存出现内部错误" #: bmerge.c:156 msgid "Internal error: xoArg is not an integer vector" -msgstr "" +msgstr "内部错误:xoArg不是整型向量" #: bmerge.c:271 bmerge.c:379 #, c-format msgid "" "Internal error in bmerge_r for '%s' column. Unrecognized value op[col]=%d" msgstr "" +"bmerge_r 针对 '%s' 列的操作出现内部错误。无法识别值 op[col]=%d" #: bmerge.c:303 #, c-format msgid "Only '==' operator is supported for columns of type %s." -msgstr "" +msgstr "%s 类型的列仅支持 '==' 操作符。" #: bmerge.c:410 #, c-format msgid "Type '%s' not supported for joining/merging" -msgstr "" +msgstr "'%s' 类型不支持联结/归并" #: bmerge.c:468 msgid "Internal error: xlow!=xupp-1 || xlowxuppIn" -msgstr "" +msgstr "内部错误:xlow!=xupp-1 或 xlowxuppIn" #: chmatch.c:4 #, c-format msgid "x is type '%s' (must be 'character' or NULL)" -msgstr "" +msgstr "x 类型为 '%s' (必须为'character'或 NULL)" #: chmatch.c:5 #, c-format msgid "table is type '%s' (must be 'character' or NULL)" -msgstr "" +msgstr "table 类型为 '%s' (必须为 'character' 或 NULL)" #: chmatch.c:6 msgid "Internal error: either chin or chmatchdup should be true not both" -msgstr "" +msgstr "内部错误:chin 和 chmatchdup 不能同时为真" #: chmatch.c:30 #, c-format @@ -824,6 +825,8 @@ msgid "" "Internal error: CHARSXP '%s' has a negative truelength (%d). Please file an " "issue on the data.table tracker." msgstr "" +"内部错误:CHARSXP '%s' 的 truelength (%d) 为负。" +"请将此问题汇报给 data.table 问题追踪器。" #: chmatch.c:60 #, c-format @@ -831,26 +834,29 @@ msgid "" "Failed to allocate %lld bytes working memory in chmatchdup: length(table)=%d " "length(unique(table))=%d" msgstr "" +"无法为 chmatchdup: length(table)=%2$d length(unique(table))=%3$d 分配 %1$lld 字节的内存空间" #: cj.c:89 #, c-format msgid "Type '%s' not supported by CJ." -msgstr "" +msgstr "CJ 不支持 '%s' 类型" #: coalesce.c:5 msgid "Internal error in coalesce.c: input is list(...) at R level" -msgstr "" +msgstr "内部错误:coalesce.c 中 R 层面的输入为 list(...)" #: coalesce.c:7 msgid "" "Internal error in coalesce.c: argument 'inplaceArg' must be TRUE or FALSE" msgstr "" +"内部错误:coalesce.c 中 'inplaceArg' 参数必须为 TRUE 或 FALSE" #: coalesce.c:16 msgid "" "The first argument is a list, data.table or data.frame. In this case there " "should be no other arguments provided." msgstr "" +"第一个参数是一个 list, data.table 或 data.frame。当前不应该提供其他参数。" #: coalesce.c:32 #, c-format @@ -858,6 +864,8 @@ msgid "" "Item 1 is a factor but item %d is not a factor. When factors are involved, " "all items must be factor." msgstr "" +"元素1是一个因子,但元素 %d 不是。当涉及因子时," +"所有元素必须都为因子。" #: coalesce.c:34 #, c-format @@ -865,6 +873,7 @@ msgid "" "Item %d is a factor but its levels are not identical to the first item's " "levels." msgstr "" +"元素 %d 是一个因子,但因子水平与第一个元素因子水平不同。" #: coalesce.c:38 #, c-format @@ -872,6 +881,8 @@ msgid "" "Item %d is a factor but item 1 is not a factor. When factors are involved, " "all items must be factor." msgstr "" +"元素 %d 是一个因子,但元素1不是。当涉及因子时," +"所有元素必须都为因子。" #: coalesce.c:41 #, c-format @@ -879,11 +890,12 @@ msgid "" "Item %d is type %s but the first item is type %s. Please coerce before " "coalescing." msgstr "" +"元素 %d 类型为 %s,但是第一个元素类型为 %s。请在 coalescing 之前强制转换类型。" #: coalesce.c:43 #, c-format msgid "Item %d has a different class than item 1." -msgstr "" +msgstr "元素 %d 与元素1类型不同。" #: coalesce.c:46 #, c-format @@ -891,39 +903,40 @@ msgid "" "Item %d is length %d but the first item is length %d. Only singletons are " "recycled." msgstr "" +"元素 %d 长度为 %d,但第一个元素长度为 %d。只有长度为1的元素才会进行循环补齐。" #: coalesce.c:50 msgid "coalesce copied first item (inplace=FALSE)\n" -msgstr "" +msgstr "coalesce 复制了第一项 (inplace=FALSE)\n" #: coalesce.c:166 #, c-format msgid "Unsupported type: %s" -msgstr "" +msgstr "不支持的类型:%s" #: dogroups.c:14 msgid "Internal error: order not integer vector" -msgstr "" +msgstr "内部错误:order 不是整型向量" #: dogroups.c:15 msgid "Internal error: starts not integer" -msgstr "" +msgstr "内部错误:starts 不是整型" #: dogroups.c:16 msgid "Internal error: lens not integer" -msgstr "" +msgstr "内部错误:lens 不是整型" #: dogroups.c:18 msgid "Internal error: jiscols not NULL but o__ has length" -msgstr "" +msgstr "内部错误:jiscols 非 NULL,但 o__ 长度不为0" #: dogroups.c:19 msgid "Internal error: xjiscols not NULL but o__ has length" -msgstr "" +msgstr "内部错误:jiscols 非 NULL,但 o__ 长度不为0" #: dogroups.c:20 msgid "'env' should be an environment" -msgstr "" +msgstr "'env' 应该是一个环境" #: dogroups.c:39 #, c-format @@ -931,15 +944,16 @@ msgid "" "Internal error: unsupported size-0 type '%s' in column %d of 'by' should " "have been caught earlier" msgstr "" +"内部错误:未能被提前捕获到 'by' 中第 %2$d 列不支持类型 '%1$s' 且size-0 的问题" #: dogroups.c:43 #, c-format msgid "!length(bynames)[%d]==length(groups)[%d]==length(grpcols)[%d]" -msgstr "" +msgstr "!length(bynames)[%d]==length(groups)[%d]==length(grpcols)[%d]" #: dogroups.c:62 msgid "row.names attribute of .SD not found" -msgstr "" +msgstr ".SD 的行名属性不存在" #: dogroups.c:64 #, c-format @@ -947,10 +961,12 @@ msgid "" "row.names of .SD isn't integer length 2 with NA as first item; i.e., ." "set_row_names(). [%s %d %d]" msgstr "" +".SD 的行名不是长度为2且首个元素为 NA 的整型;例如:" +"set_row_names(). [%s %d %d]" #: dogroups.c:69 msgid "length(names)!=length(SD)" -msgstr "" +msgstr "length(names)!=length(SD)" #: dogroups.c:73 #, c-format @@ -958,21 +974,23 @@ msgid "" "Internal error: size-0 type %d in .SD column %d should have been caught " "earlier" msgstr "" +"内部错误:未能提前捕获到 .SD 中第 %2$d 列类型 %1$d size-0 的问题" #: dogroups.c:83 msgid "length(xknames)!=length(xSD)" -msgstr "" +msgstr "length(xknames)!=length(xSD)" #: dogroups.c:87 #, c-format msgid "" "Internal error: type %d in .xSD column %d should have been caught by now" msgstr "" +"内部错误:当前未能捕获到 .xSD 中第 %2$d 列类型 %1$d 的问题" #: dogroups.c:91 #, c-format msgid "length(iSD)[%d] != length(jiscols)[%d]" -msgstr "" +msgstr "length(iSD)[%d] != length(jiscols)[%d]" #: dogroups.c:92 #, c-format From 43735ccf587d5d9ab545bfa681191de21ca89643 Mon Sep 17 00:00:00 2001 From: dracodoc Date: Sun, 17 Nov 2019 21:40:08 -0500 Subject: [PATCH 40/78] Translation dracodoc (#4034) * 895 - 939 * 945 - 1007 * To the real 1007 line msg * convert enconding from GBK to UTF-8 * Revert "convert enconding from GBK to UTF-8" This reverts commit 6e65d0ea69899d6778ecc65f7f5ea673ff868898. * translate start and end of assigned msgs. * till 1899 * two entries then found possible problem of missing messages * 10 missing message not captured? * till 1962 * finished assignment * review and edit * update meta info * macro-within-macro removed * syntax error -- split ternary operator * roll back use of translation in ASSERT internal errors * Update according to @shrektan's comments --- inst/po/en@quot/LC_MESSAGES/data.table.mo | Bin 137480 -> 138720 bytes inst/po/zh_CN/LC_MESSAGES/R-data.table.mo | Bin 23693 -> 28043 bytes inst/po/zh_CN/LC_MESSAGES/data.table.mo | Bin 30302 -> 37069 bytes po/R-zh_CN.po | 65 ++- po/data.table.pot | 394 ++++++++------ po/zh_CN.po | 600 ++++++++++++---------- src/fread.c | 18 +- src/po.h | 2 +- 8 files changed, 611 insertions(+), 468 deletions(-) diff --git a/inst/po/en@quot/LC_MESSAGES/data.table.mo b/inst/po/en@quot/LC_MESSAGES/data.table.mo index f51de64b1b3a74fb66aa7dd2ec3ca167eaccb951..a070d58bae8fb397ad10164ad72b60113e9c27be 100644 GIT binary patch delta 18968 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 E2SAOTP5=M^ delta 17808 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 diff --git a/inst/po/zh_CN/LC_MESSAGES/R-data.table.mo b/inst/po/zh_CN/LC_MESSAGES/R-data.table.mo index c4d04c7eec8de00f8fb2799118eac03eab7a3693..eabbce7420a9eb832456d527cda731764b74c302 100644 GIT binary patch delta 7546 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 E59V&yX#fBK delta 3409 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\n" +"PO-Revision-Date: 2019-11-10 15:29-04\n" +"Last-Translator: Xianghui Dong \n" "Language-Team: Mandarin\n" "Language: Mandarin\n" "MIME-Version: 1.0\n" @@ -951,116 +951,135 @@ msgid "All elements in argument 'x' to 'setDF' must be of same length" msgstr "" msgid "Cannot find symbol" -msgstr "" +msgstr "无法找到符号" msgid "Cannot convert '" -msgstr "" +msgstr "无法转换'" msgid "" "' to data.table by reference because binding is locked. It is very likely " "that '" msgstr "" +"' 为引用形式的 data.table,因为绑定被锁定了。很有可能 " +"'" msgid "" "' resides within a package (or an environment) that is locked to prevent " "modifying its variable bindings. Try copying the object to your current " "environment, ex: var <- copy(var) and then using setDT again." msgstr "" +"' 存在于一个被锁定的包(或环境)中导致无法" +"修改其绑定的变量。可以尝试复制对象(object)到你的现有" +"环境,如:var <- copy(var) 然后再使用 setDT。" msgid "Some columns are a multi-column type (such as a matrix column):" -msgstr "" +msgstr "某些列是多重列类型(如矩阵列):" msgid "" ". setDT will retain these columns as-is but subsequent operations like " "grouping and joining may fail. Please consider as.data.table() instead which " "will create a new column for each embedded column." msgstr "" +"。setDT 会原样保留这些列但后续的操作如" +"编组(grouping)和联接(joining)可能会失败。请考虑使用 as.data.table() 因为它" +"会为每个内嵌列建立一个新列。" msgid "Column" -msgstr "" +msgstr "列" msgid "" "is of POSIXlt type. Please convert it to POSIXct using as.POSIXct and run " "setDT again. We do not recommend use of POSIXlt at all because it uses 40 " "bytes to store one date." msgstr "" +"属于 POSIXlt 类型。请使用 as.POSIXct 转换为 POSIXct 并再次执行" +"setDT。我们非常不推荐使用 POSIXlt 因为它要用 40 " +"字节来存储一个日期。" msgid "" "All elements in argument 'x' to 'setDT' must be of same length, but the " "profile of input lengths (length:frequency) is:" msgstr "" +"'setDT' 的参数 'x' 中所有的元素都必须是同一长度,但" +"输入长度的概况(长度(length):频率(frequency))是:" msgid "%s:%d" msgstr "" msgid "The first entry with fewer than" -msgstr "" +msgstr "第一个长度少于" msgid "entries is" -msgstr "" +msgstr "的输入项是" msgid "" "Argument 'x' to 'setDT' should be a 'list', 'data.frame' or 'data.table'" msgstr "" +"'setDT' 参数 'x' 应为一个列表('list'),数据框('data.frame')或 'data.table'" msgid "Item '" -msgstr "" +msgstr "项 '" msgid "' not found in names of input list" -msgstr "" +msgstr "' 不存在于输入列表的子项名中" msgid "'prefix' must be NULL or a character vector of length 1." -msgstr "" +msgstr "'prefix' 必须为 空(NULL)或者长度为 1 的字符向量。" msgid "x is a single vector, non-NULL 'cols' doesn't make sense." -msgstr "" +msgstr "x 是单个向量,非空的 'cols' 没有意义。" msgid "x is a list, 'cols' cannot be 0-length." -msgstr "" +msgstr "x 是一个列表(list),'cols' 长度不能为0。" msgid "RHS of" -msgstr "" +msgstr "右手侧(RHS)" msgid "is length" -msgstr "" +msgstr "长度为" msgid "which is not 1 or nrow (" -msgstr "" +msgstr "其非 1 或 总行数 nrow (" msgid "" "). For robustness, no recycling is allowed (other than of length 1 RHS). " "Consider %in% instead." msgstr "" +")。考虑到程序的稳健性,只有在右侧元素长度为 1 的情况下,我们才会对之进行循环。" +"考虑改用 %in% 。" msgid "" "Internal error in .isFastSubsettable. Please report to data.table developers" msgstr "" +".isFastSubsettable 产生了内部错误。请向 data.table 开发者报告" msgid "" "'on' argument should be a named atomic vector of column names indicating " "which columns in 'i' should be joined with which columns in 'x'." msgstr "" +"'on' 参数应为一个有子项名字的原子列名向量,指明" +"'i' 中的哪些列应与 'x' 中的哪些列联接。" msgid "Found more than one operator in one 'on' statement:" -msgstr "" +msgstr "在一个 'on' 语句中出现了多于一个的操作符(operator):" msgid ". Please specify a single operator." -msgstr "" +msgstr "。请指定单个操作符。" msgid "'on' contains no column name:" -msgstr "" +msgstr "'on' 中没有列名:" msgid ". Each 'on' clause must contain one or two column names." -msgstr "" +msgstr "。每个'on' 子句必须包含一个或两个列名。" msgid "'on' contains more than 2 column names:" -msgstr "" +msgstr "'on' 包含了超过两个列名:" msgid "Invalid operators" -msgstr "" +msgstr "无效的操作符" msgid ". Only allowed operators are" -msgstr "" +msgstr "。只有这些操作符是有效的" msgid "." msgstr "" diff --git a/po/data.table.pot b/po/data.table.pot index 6691a43dd2..3fdba80b3a 100644 --- a/po/data.table.pot +++ b/po/data.table.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.7\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-11-05 09:55+0800\n" +"POT-Creation-Date: 2019-11-11 11:44+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -1603,362 +1603,362 @@ msgstr "" msgid "Internal error. Argument 'cols' to CanyNA is type '%s' not 'integer'" msgstr "" -#: fread.c:149 +#: fread.c:153 #, c-format msgid "System error %d unmapping view of file\n" msgstr "" -#: fread.c:152 +#: fread.c:156 #, c-format msgid "System errno %d unmapping file: %s\n" msgstr "" -#: fread.c:212 +#: fread.c:216 #, c-format msgid "Internal error: NUMTYPE(%d) > nLetters(%d)" msgstr "" -#: fread.c:437 +#: fread.c:441 #, c-format msgid "Unable to allocate %s of contiguous virtual RAM. %s allocation." msgstr "" -#: fread.c:442 +#: fread.c:446 #, c-format msgid "Avoidable %.3f seconds. %s time to copy.\n" msgstr "" -#: fread.c:443 +#: fread.c:447 #, c-format msgid " File copy in RAM took %.3f seconds.\n" msgstr "" -#: fread.c:1095 +#: fread.c:1099 msgid "" "Previous fread() session was not cleaned up properly. Cleaned up ok at the " "beginning of this fread() call.\n" msgstr "" -#: fread.c:1098 +#: fread.c:1102 msgid "[01] Check arguments\n" msgstr "" -#: fread.c:1105 +#: fread.c:1109 #, c-format msgid " Using %d threads (omp_get_max_threads()=%d, nth=%d)\n" msgstr "" -#: fread.c:1113 +#: fread.c:1117 msgid "" "Internal error: NAstrings is itself NULL. When empty it should be pointer to " "NULL." msgstr "" -#: fread.c:1131 +#: fread.c:1135 #, c-format msgid "freadMain: NAstring <<%s>> has whitespace at the beginning or end" msgstr "" -#: fread.c:1136 +#: fread.c:1140 #, c-format msgid "" "freadMain: NAstring <<%s>> is recognized as type boolean, this is not " "permitted." msgstr "" -#: fread.c:1146 +#: fread.c:1150 msgid " No NAstrings provided.\n" msgstr "" -#: fread.c:1148 +#: fread.c:1152 msgid " NAstrings = [" msgstr "" -#: fread.c:1151 +#: fread.c:1155 msgid "]\n" msgstr "" -#: fread.c:1153 +#: fread.c:1157 msgid " One or more of the NAstrings looks like a number.\n" msgstr "" -#: fread.c:1155 +#: fread.c:1159 msgid " None of the NAstrings look like numbers.\n" msgstr "" -#: fread.c:1157 +#: fread.c:1161 #, c-format msgid " skip num lines = %llu\n" msgstr "" -#: fread.c:1158 +#: fread.c:1162 #, c-format msgid " skip to string = <<%s>>\n" msgstr "" -#: fread.c:1159 +#: fread.c:1163 #, c-format msgid " show progress = %d\n" msgstr "" -#: fread.c:1160 +#: fread.c:1164 #, c-format msgid " 0/1 column will be read as %s\n" msgstr "" -#: fread.c:1168 +#: fread.c:1172 #, c-format msgid "sep == quote ('%c') is not allowed" msgstr "" -#: fread.c:1169 +#: fread.c:1173 msgid "dec='' not allowed. Should be '.' or ','" msgstr "" -#: fread.c:1170 +#: fread.c:1174 #, c-format msgid "sep == dec ('%c') is not allowed" msgstr "" -#: fread.c:1171 +#: fread.c:1175 #, c-format msgid "quote == dec ('%c') is not allowed" msgstr "" -#: fread.c:1188 +#: fread.c:1192 msgid "[02] Opening the file\n" msgstr "" -#: fread.c:1191 +#: fread.c:1195 msgid "" " `input` argument is provided rather than a file name, interpreting as raw " "text to read\n" msgstr "" -#: fread.c:1195 +#: fread.c:1199 msgid "Internal error: last byte of character input isn't \\0" msgstr "" -#: fread.c:1198 +#: fread.c:1202 #, c-format msgid " Opening file %s\n" msgstr "" -#: fread.c:1202 +#: fread.c:1206 #, c-format msgid "file not found: %s" msgstr "" -#: fread.c:1206 +#: fread.c:1210 #, c-format msgid "Opened file ok but couldn't obtain its size: %s" msgstr "" -#: fread.c:1209 fread.c:1237 +#: fread.c:1213 fread.c:1241 #, c-format msgid "File is empty: %s" msgstr "" -#: fread.c:1210 fread.c:1238 +#: fread.c:1214 fread.c:1242 #, c-format msgid " File opened, size = %s.\n" msgstr "" -#: fread.c:1227 +#: fread.c:1231 #, c-format msgid "File not found: %s" msgstr "" -#: fread.c:1233 +#: fread.c:1237 #, c-format msgid "Unable to open file after %d attempts (error %d): %s" msgstr "" -#: fread.c:1235 +#: fread.c:1239 #, c-format msgid "GetFileSizeEx failed (returned 0) on file: %s" msgstr "" -#: fread.c:1240 +#: fread.c:1244 #, c-format msgid "This is Windows, CreateFileMapping returned error %d for file %s" msgstr "" -#: fread.c:1247 +#: fread.c:1251 #, c-format msgid "" "Opened %s file ok but could not memory map it. This is a %dbit process. %s." msgstr "" -#: fread.c:1248 +#: fread.c:1252 msgid "Please upgrade to 64bit" msgstr "" -#: fread.c:1248 +#: fread.c:1252 msgid "There is probably not enough contiguous virtual memory available" msgstr "" -#: fread.c:1251 +#: fread.c:1255 msgid " Memory mapped ok\n" msgstr "" -#: fread.c:1253 +#: fread.c:1257 msgid "" "Internal error: Neither `input` nor `filename` are given, nothing to read." msgstr "" -#: fread.c:1270 +#: fread.c:1274 msgid "[03] Detect and skip BOM\n" msgstr "" -#: fread.c:1274 +#: fread.c:1278 msgid "" " UTF-8 byte order mark EF BB BF found at the start of the file and " "skipped.\n" msgstr "" -#: fread.c:1279 +#: fread.c:1283 msgid "" "GB-18030 encoding detected, however fread() is unable to decode it. Some " "character fields may be garbled.\n" msgstr "" -#: fread.c:1282 +#: fread.c:1286 msgid "" "File is encoded in UTF-16, this encoding is not supported by fread(). Please " "recode the file to UTF-8." msgstr "" -#: fread.c:1287 +#: fread.c:1291 #, c-format msgid " Last byte(s) of input found to be %s and removed.\n" msgstr "" -#: fread.c:1290 +#: fread.c:1294 msgid "Input is empty or only contains BOM or terminal control characters" msgstr "" -#: fread.c:1297 +#: fread.c:1301 msgid "[04] Arrange mmap to be \\0 terminated\n" msgstr "" -#: fread.c:1304 +#: fread.c:1308 msgid "" " No \\n exists in the file at all, so single \\r (if any) will be taken as " "one line ending. This is unusual but will happen normally when there is no " "\\r either; e.g. a single line missing its end of line.\n" msgstr "" -#: fread.c:1305 +#: fread.c:1309 msgid "" " \\n has been found in the input and different lines can end with different " "line endings (e.g. mixed \\n and \\r\\n in one file). This is common and " "ideal.\n" msgstr "" -#: fread.c:1329 +#: fread.c:1333 #, c-format msgid "" " File ends abruptly with '%c'. Final end-of-line is missing. Using cow page " "to write 0 to the last byte.\n" msgstr "" -#: fread.c:1335 +#: fread.c:1339 msgid "" "This file is very unusual: it ends abruptly without a final newline, and " "also its size is a multiple of 4096 bytes. Please properly end the last row " "with a newline using for example 'echo >> file' to avoid this " msgstr "" -#: fread.c:1336 +#: fread.c:1340 #, c-format msgid " File ends abruptly with '%c'. Copying file in RAM. %s copy.\n" msgstr "" -#: fread.c:1370 +#: fread.c:1374 msgid "[05] Skipping initial rows if needed\n" msgstr "" -#: fread.c:1376 +#: fread.c:1380 #, c-format msgid "" "skip='%s' not found in input (it is case sensitive and literal; i.e., no " "patterns, wildcards or regex)" msgstr "" -#: fread.c:1382 +#: fread.c:1386 #, c-format msgid "" "Found skip='%s' on line %llu. Taking this to be header row or first row of " "data.\n" msgstr "" -#: fread.c:1395 +#: fread.c:1399 #, c-format msgid " Skipped to line %llu in the file" msgstr "" -#: fread.c:1396 +#: fread.c:1400 #, c-format msgid "skip=%llu but the input only has %llu line%s" msgstr "" -#: fread.c:1405 +#: fread.c:1409 msgid "" "Input is either empty, fully whitespace, or skip has been set after the last " "non-whitespace." msgstr "" -#: fread.c:1407 +#: fread.c:1411 #, c-format msgid " Moved forward to first non-blank line (%d)\n" msgstr "" -#: fread.c:1408 +#: fread.c:1412 #, c-format msgid " Positioned on line %d starting: <<%s>>\n" msgstr "" -#: fread.c:1426 +#: fread.c:1430 msgid "[06] Detect separator, quoting rule, and ncolumns\n" msgstr "" -#: fread.c:1430 +#: fread.c:1434 msgid " sep='\\n' passed in meaning read lines as single character column\n" msgstr "" -#: fread.c:1449 +#: fread.c:1453 msgid " Detecting sep automatically ...\n" msgstr "" -#: fread.c:1456 +#: fread.c:1460 #, c-format msgid " Using supplied sep '%s'\n" msgstr "" -#: fread.c:1490 +#: fread.c:1494 #, c-format msgid " with %d fields using quote rule %d\n" msgstr "" -#: fread.c:1540 +#: fread.c:1544 #, c-format msgid " with %d lines of %d fields using quote rule %d\n" msgstr "" -#: fread.c:1547 +#: fread.c:1551 msgid "" " No sep and quote rule found a block of 2x2 or greater. Single column " "input.\n" msgstr "" -#: fread.c:1563 +#: fread.c:1567 msgid "" "Single column input contains invalid quotes. Self healing only effective " "when ncol>1" msgstr "" -#: fread.c:1568 +#: fread.c:1572 #, c-format msgid "" "Found and resolved improper quoting in first %d rows. If the fields are not " @@ -1966,249 +1966,285 @@ msgid "" "\"\" to avoid this warning." msgstr "" -#: fread.c:1584 +#: fread.c:1588 #, c-format msgid "" "Internal error: ncol==%d line==%d after detecting sep, ncol and first line" msgstr "" -#: fread.c:1587 +#: fread.c:1591 #, c-format msgid "Internal error: first line has field count %d but expecting %d" msgstr "" -#: fread.c:1589 +#: fread.c:1593 #, c-format msgid "" " Detected %d columns on line %d. This line is either column names or first " "data row. Line starts as: <<%s>>\n" msgstr "" -#: fread.c:1591 +#: fread.c:1595 #, c-format msgid " Quote rule picked = %d\n" msgstr "" -#: fread.c:1592 +#: fread.c:1596 #, c-format msgid " fill=%s and the most number of columns found is %d\n" msgstr "" -#: fread.c:1598 +#: fread.c:1602 msgid "" "This file is very unusual: it's one single column, ends with 2 or more end-" "of-line (representing several NA at the end), and is a multiple of 4096, too." msgstr "" -#: fread.c:1599 +#: fread.c:1603 #, c-format msgid " Copying file in RAM. %s\n" msgstr "" -#: fread.c:1605 +#: fread.c:1609 msgid "" " 1-column file ends with 2 or more end-of-line. Restoring last eol using " "extra byte in cow page.\n" msgstr "" -#: fread.c:1624 +#: fread.c:1628 msgid "" "[07] Detect column types, good nrow estimate and whether first row is column " "names\n" msgstr "" -#: fread.c:1625 +#: fread.c:1629 #, c-format msgid " 'header' changed by user from 'auto' to %s\n" msgstr "" -#: fread.c:1629 +#: fread.c:1633 #, c-format msgid "Failed to allocate 2 x %d bytes for type and tmpType: %s" msgstr "" -#: fread.c:1650 +#: fread.c:1654 #, c-format msgid " Number of sampling jump points = %d because " msgstr "" -#: fread.c:1651 +#: fread.c:1655 #, c-format msgid "nrow limit (%llu) supplied\n" msgstr "" -#: fread.c:1652 +#: fread.c:1656 msgid "jump0size==0\n" msgstr "" -#: fread.c:1653 +#: fread.c:1657 #, c-format msgid "(%llu bytes from row 1 to eof) / (2 * %llu jump0size) == %llu\n" msgstr "" -#: fread.c:1691 +#: fread.c:1695 #, c-format msgid "" " A line with too-%s fields (%d/%d) was found on line %d of sample jump %d. " "%s\n" msgstr "" -#: fread.c:1718 +#: fread.c:1696 +msgid "few" +msgstr "" + +#: fread.c:1696 +msgid "many" +msgstr "" + +#: fread.c:1696 +msgid "" +"Most likely this jump landed awkwardly so type bumps here will be skipped." +msgstr "" + +#: fread.c:1722 #, c-format msgid " Type codes (jump %03d) : %s Quote rule %d\n" msgstr "" -#: fread.c:1731 +#: fread.c:1735 #, c-format msgid "" " 'header' determined to be true due to column %d containing a string on row " "1 and a lower type (%s) in the rest of the %d sample rows\n" msgstr "" -#: fread.c:1743 +#: fread.c:1747 msgid "" "Internal error: row before first data row has the same number of fields but " "we're not using it." msgstr "" -#: fread.c:1744 +#: fread.c:1748 msgid "" "Internal error: ch!=pos after counting fields in the line before the first " "data row." msgstr "" -#: fread.c:1745 +#: fread.c:1749 #, c-format msgid "" "Types in 1st data row match types in 2nd data row but previous row has %d " "fields. Taking previous row as column names." msgstr "" -#: fread.c:1748 +#: fread.c:1752 #, c-format msgid "" "Detected %d column names but the data has %d columns (i.e. invalid file). " "Added %d extra default column name%s\n" msgstr "" -#: fread.c:1751 +#: fread.c:1753 +msgid "" +" for the first column which is guessed to be row names or an index. Use " +"setnames() afterwards if this guess is not correct, or fix the file write " +"command that created the file to create a valid file." +msgstr "" + +#: fread.c:1753 +msgid "s at the end." +msgstr "" + +#: fread.c:1755 msgid "" "Internal error: fill=true but there is a previous row which should already " "have been filled." msgstr "" -#: fread.c:1752 +#: fread.c:1756 #, c-format msgid "" "Detected %d column names but the data has %d columns. Filling rows " "automatically. Set fill=TRUE explicitly to avoid this warning.\n" msgstr "" -#: fread.c:1756 +#: fread.c:1760 #, c-format msgid "Failed to realloc 2 x %d bytes for type and tmpType: %s" msgstr "" -#: fread.c:1776 +#: fread.c:1780 #, c-format msgid "" " 'header' determined to be %s because there are%s number fields in the " "first and only row\n" msgstr "" -#: fread.c:1779 +#: fread.c:1780 +msgid "true" +msgstr "" + +#: fread.c:1780 +msgid "false" +msgstr "" + +#: fread.c:1780 +msgid " no" +msgstr "" + +#: fread.c:1783 msgid "" " 'header' determined to be true because all columns are type string and a " "better guess is not possible\n" msgstr "" -#: fread.c:1781 +#: fread.c:1785 msgid "" " 'header' determined to be false because there are some number columns and " "those columns do not have a string field at the top of them\n" msgstr "" -#: fread.c:1797 +#: fread.c:1801 #, c-format msgid " Type codes (first row) : %s Quote rule %d\n" msgstr "" -#: fread.c:1806 +#: fread.c:1810 #, c-format msgid "" " All rows were sampled since file is small so we know nrow=%llu exactly\n" msgstr "" -#: fread.c:1818 fread.c:1825 +#: fread.c:1822 fread.c:1829 msgid " =====\n" msgstr "" -#: fread.c:1819 +#: fread.c:1823 #, c-format msgid "" " Sampled %llu rows (handled \\n inside quoted fields) at %d jump points\n" msgstr "" -#: fread.c:1820 +#: fread.c:1824 #, c-format msgid " Bytes from first data row on line %d to the end of last row: %llu\n" msgstr "" -#: fread.c:1821 +#: fread.c:1825 #, c-format msgid " Line length: mean=%.2f sd=%.2f min=%d max=%d\n" msgstr "" -#: fread.c:1822 +#: fread.c:1826 #, c-format msgid " Estimated number of rows: %llu / %.2f = %llu\n" msgstr "" -#: fread.c:1823 +#: fread.c:1827 #, c-format msgid "" " Initial alloc = %llu rows (%llu + %d%%) using bytes/max(mean-2*sd,min) " "clamped between [1.1*estn, 2.0*estn]\n" msgstr "" -#: fread.c:1827 +#: fread.c:1831 #, c-format msgid "Internal error: sampleLines(%llu) > allocnrow(%llu)" msgstr "" -#: fread.c:1831 +#: fread.c:1835 #, c-format msgid " Alloc limited to lower nrows=%llu passed in.\n" msgstr "" -#: fread.c:1843 +#: fread.c:1847 msgid "[08] Assign column names\n" msgstr "" -#: fread.c:1851 +#: fread.c:1855 #, c-format msgid "Unable to allocate %d*%d bytes for column name pointers: %s" msgstr "" -#: fread.c:1873 +#: fread.c:1877 #, c-format msgid "Internal error: reading colnames ending on '%c'" msgstr "" -#: fread.c:1891 +#: fread.c:1895 msgid "[09] Apply user overrides on column types\n" msgstr "" -#: fread.c:1895 +#: fread.c:1899 msgid " Cancelled by user: userOverride() returned false." msgstr "" -#: fread.c:1905 +#: fread.c:1909 #, c-format msgid "Failed to allocate %d bytes for size array: %s" msgstr "" -#: fread.c:1912 +#: fread.c:1916 #, c-format msgid "" "Attempt to override column %d <<%.*s>> of inherent type '%s' down to '%s' " @@ -2216,89 +2252,101 @@ msgid "" "was intended, please coerce to the lower type afterwards." msgstr "" -#: fread.c:1926 +#: fread.c:1930 #, c-format msgid " After %d type and %d drop user overrides : %s\n" msgstr "" -#: fread.c:1934 +#: fread.c:1938 msgid "[10] Allocate memory for the datatable\n" msgstr "" -#: fread.c:1935 +#: fread.c:1939 #, c-format msgid " Allocating %d column slots (%d - %d dropped) with %llu rows\n" msgstr "" -#: fread.c:1989 +#: fread.c:1993 #, c-format msgid "Buffer size %lld is too large\n" msgstr "" -#: fread.c:1992 +#: fread.c:1996 msgid "[11] Read the data\n" msgstr "" -#: fread.c:1995 +#: fread.c:1999 #, c-format msgid " jumps=[%d..%d), chunk_size=%llu, total_size=%llu\n" msgstr "" -#: fread.c:2215 +#: fread.c:2011 +#, c-format +msgid "Internal error: Master thread is not thread 0 but thread %d.\n" +msgstr "" + +#: fread.c:2219 #, c-format msgid "" "Column %d (\"%.*s\") bumped from '%s' to '%s' due to <<%.*s>> on row %llu\n" msgstr "" -#: fread.c:2337 +#: fread.c:2268 +#, c-format +msgid "" +"Internal error: invalid head position. jump=%d, headPos=%p, thisJumpStart=" +"%p, sof=%p" +msgstr "" + +#: fread.c:2341 #, c-format msgid "" " Too few rows allocated. Allocating additional %llu rows (now nrows=%llu) " "and continue reading from jump %d\n" msgstr "" -#: fread.c:2344 +#: fread.c:2348 #, c-format msgid " Restarting team from jump %d. nSwept==%d quoteRule==%d\n" msgstr "" -#: fread.c:2364 +#: fread.c:2368 #, c-format msgid " %d out-of-sample type bumps: %s\n" msgstr "" -#: fread.c:2400 +#: fread.c:2404 #, c-format msgid "" "Read %llu rows x %d columns from %s file in %02d:%06.3f wall clock time\n" msgstr "" -#: fread.c:2407 +#: fread.c:2411 msgid "[12] Finalizing the datatable\n" msgstr "" -#: fread.c:2408 +#: fread.c:2412 msgid " Type counts:\n" msgstr "" -#: fread.c:2410 +#: fread.c:2414 #, c-format msgid "%10d : %-9s '%c'\n" msgstr "" -#: fread.c:2426 +#: fread.c:2430 #, c-format msgid "Discarded single-line footer: <<%s>>" msgstr "" -#: fread.c:2431 +#: fread.c:2435 #, c-format msgid "" "Stopped early on line %llu. Expected %d fields but found %d. Consider " "fill=TRUE and comment.char=. First discarded non-empty line: <<%s>>" msgstr "" -#: fread.c:2437 +#: fread.c:2441 #, c-format msgid "" "Found and resolved improper quoting out-of-sample. First healed line %llu: <<" @@ -2306,67 +2354,67 @@ msgid "" "within any field), try quote=\"\" to avoid this warning." msgstr "" -#: fread.c:2441 +#: fread.c:2445 msgid "=============================\n" msgstr "" -#: fread.c:2443 +#: fread.c:2447 #, c-format msgid "%8.3fs (%3.0f%%) Memory map %.3fGB file\n" msgstr "" -#: fread.c:2444 +#: fread.c:2448 #, c-format msgid "%8.3fs (%3.0f%%) sep=" msgstr "" -#: fread.c:2446 +#: fread.c:2450 #, c-format msgid " ncol=%d and header detection\n" msgstr "" -#: fread.c:2447 +#: fread.c:2451 #, c-format msgid "%8.3fs (%3.0f%%) Column type detection using %llu sample rows\n" msgstr "" -#: fread.c:2449 +#: fread.c:2453 #, c-format msgid "" "%8.3fs (%3.0f%%) Allocation of %llu rows x %d cols (%.3fGB) of which %llu " "(%3.0f%%) rows used\n" msgstr "" -#: fread.c:2453 +#: fread.c:2457 #, c-format msgid "" "%8.3fs (%3.0f%%) Reading %d chunks (%d swept) of %.3fMB (each chunk %d rows) " "using %d threads\n" msgstr "" -#: fread.c:2455 +#: fread.c:2459 #, c-format msgid "" " + %8.3fs (%3.0f%%) Parse to row-major thread buffers (grown %d times)\n" msgstr "" -#: fread.c:2456 +#: fread.c:2460 #, c-format msgid " + %8.3fs (%3.0f%%) Transpose\n" msgstr "" -#: fread.c:2457 +#: fread.c:2461 #, c-format msgid " + %8.3fs (%3.0f%%) Waiting\n" msgstr "" -#: fread.c:2458 +#: fread.c:2462 #, c-format msgid "" "%8.3fs (%3.0f%%) Rereading %d columns due to out-of-sample type exceptions\n" msgstr "" -#: fread.c:2460 +#: fread.c:2464 #, c-format msgid "%8.3fs Total\n" msgstr "" @@ -2858,7 +2906,7 @@ msgstr "" msgid "%lld " msgstr "" -#: fsort.c:246 fwrite.c:690 fwrite.c:947 +#: fsort.c:246 fwrite.c:693 fwrite.c:951 msgid "\n" msgstr "" @@ -2877,31 +2925,31 @@ msgstr "" msgid "%d: %.3f (%4.1f%%)\n" msgstr "" -#: fwrite.c:601 +#: fwrite.c:603 #, c-format msgid "buffMB=%d outside [1,1024]" msgstr "" -#: fwrite.c:608 +#: fwrite.c:610 #, c-format msgid "" "eol must be 1 or more bytes (usually either \\n or \\r\\n) but is length %d" msgstr "" -#: fwrite.c:611 +#: fwrite.c:613 msgid "Column writers: " msgstr "" -#: fwrite.c:613 fwrite.c:615 fwrite.c:617 +#: fwrite.c:615 fwrite.c:617 fwrite.c:619 #, c-format msgid "%d " msgstr "" -#: fwrite.c:616 +#: fwrite.c:618 msgid "... " msgstr "" -#: fwrite.c:619 +#: fwrite.c:621 #, c-format msgid "" "\n" @@ -2909,17 +2957,17 @@ msgid "" "eolLen=%d\n" msgstr "" -#: fwrite.c:652 +#: fwrite.c:654 #, c-format msgid "Internal error: type %d has no max length method implemented" msgstr "" -#: fwrite.c:659 +#: fwrite.c:662 #, c-format msgid "maxLineLen=%zd. Found in %.3fs\n" msgstr "" -#: fwrite.c:679 +#: fwrite.c:682 #, c-format msgid "" "%s: '%s'. Failed to open existing file for writing. Do you have write " @@ -2927,7 +2975,7 @@ msgid "" "have it open?" msgstr "" -#: fwrite.c:680 +#: fwrite.c:683 #, c-format msgid "" "%s: '%s'. Unable to create new file for writing (it does not exist already). " @@ -2935,61 +2983,65 @@ msgid "" "the path exist?" msgstr "" -#: fwrite.c:688 +#: fwrite.c:691 #, c-format msgid "Writing bom (%s), yaml (%d characters) and column names (%s) ... " msgstr "" -#: fwrite.c:701 +#: fwrite.c:704 #, c-format msgid "Unable to allocate %d MiB for header: %s" msgstr "" -#: fwrite.c:729 fwrite.c:789 +#: fwrite.c:732 fwrite.c:793 msgid "Can't allocate gzip stream structure" msgstr "" -#: fwrite.c:735 +#: fwrite.c:738 #, c-format msgid "Unable to allocate %d MiB for zbuffer: %s" msgstr "" -#: fwrite.c:750 +#: fwrite.c:753 #, c-format msgid "Compress gzip error: %d" msgstr "" -#: fwrite.c:751 fwrite.c:759 fwrite.c:953 +#: fwrite.c:754 fwrite.c:763 fwrite.c:957 #, c-format msgid "%s: '%s'" msgstr "" -#: fwrite.c:756 +#: fwrite.c:760 #, c-format msgid "done in %.3fs\n" msgstr "" -#: fwrite.c:758 +#: fwrite.c:762 msgid "No data rows present (nrow==0)\n" msgstr "" -#: fwrite.c:776 +#: fwrite.c:780 #, c-format msgid "" "Writing %lld rows in %d batches of %d rows (each buffer size %dMB, " "showProgress=%d, nth=%d)\n" msgstr "" -#: fwrite.c:961 +#: fwrite.c:965 #, c-format -msgid "zlib v%s deflate() returned error %d with z_stream.msg '%s'. %s\n" +msgid "" +"zlib %s (zlib.h %s) deflate() returned error %d with z_stream->msg==\"%s\" " +"Z_FINISH=%d Z_BLOCK=%d. %s" msgstr "" -#: fwrite.c:962 -msgid "Please include the full output above in your data.table bug report." +#: fwrite.c:967 +msgid "" +"Please include the full output above and below this message in your data." +"table bug report." msgstr "" -#: fwrite.c:963 +#: fwrite.c:968 msgid "" "Please retry fwrite() with verbose=TRUE and include the full output with " "your data.table bug report." diff --git a/po/zh_CN.po b/po/zh_CN.po index 487c8ab167..d078fda2a4 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -2,9 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-10-22 21:04+0800\n" -"PO-Revision-Date: 2019-10-26 16:01+08\n" -"Last-Translator: Guangzheng Li \n" +"POT-Creation-Date: 2019-11-11 11:44+0800\n" +"PO-Revision-Date: 2019-11-10 15:29-04\n" +"Last-Translator: Xianghui Dong \n" "Language-Team: Mandarin\n" "Language: Mandarin\n" "MIME-Version: 1.0\n" @@ -1011,16 +1011,16 @@ msgid "" "All items in j=list(...) should be atomic vectors or lists. If you are " "trying something like j=list(.SD,newcol=mean(colA)) then use := by group " "instead (much quicker), or cbind or merge afterwards." -msgstr "j=list(...) 中的所有项目必须是原子向量或列表" -"如果您试图进行 j=list(.SD,newcol=mean(colA)) 之类的操作" -"请使用 := by group 代替(更快速),或事后使用 cbind()、merge()" +msgstr "" +"j=list(...) 中的所有项目必须是原子向量或列表如果您试图进行 j=list(.SD," +"newcol=mean(colA)) 之类的操作请使用 := by group 代替(更快速),或事后使用 " +"cbind()、merge()" #: dogroups.c:290 msgid "" "RHS of := is NULL during grouped assignment, but it's not possible to delete " "parts of a column." -msgstr "用 := 分组时 RHS 为 NULL" -"但無法刪除部分列" +msgstr "用 := 分组时 RHS 为 NULL但無法刪除部分列" #: dogroups.c:294 #, c-format @@ -1029,18 +1029,19 @@ msgid "" "RHS length must either be 1 (single values are ok) or match the LHS length " "exactly. If you wish to 'recycle' the RHS please use rep() explicitly to " "make this intent clear to readers of your code." -msgstr "提供 %1$d 个项分配给第 '%4$s' 列中的第 %2$d 组,组的大小为 %3$d " -"RHS 的长度必须是 1(可以是单个值) 或完全符合 LHS 的长度" -"如果您想回收(recycle) RHS,请使用 rep() 向你的代码读者明确表达你的意图" - +msgstr "" +"提供 %1$d 个项分配给第 '%4$s' 列中的第 %2$d 组,组的大小为 %3$d RHS 的长度必" +"须是 1(可以是单个值) 或完全符合 LHS 的长度如果您想回收(recycle) RHS,请使用 " +"rep() 向你的代码读者明确表达你的意图" #: dogroups.c:305 msgid "" "Internal error: Trying to add new column by reference but tl is full; " "setalloccol should have run first at R level before getting to this point in " "dogroups" -msgstr "内部错误 : 尝试依照引用增加新列但 tl 已满" -"在进入 dogroups 之前,setalloccol 应该先在 R 运行" +msgstr "" +"内部错误 : 尝试依照引用增加新列但 tl 已满在进入 dogroups 之前,setalloccol 应" +"该先在 R 运行" #: dogroups.c:320 #, c-format @@ -1060,18 +1061,19 @@ msgid "" "groups (and those are replaced with NA of appropriate type and recycled) but " "not for the first. Please use a typed empty vector instead, such as " "integer() or numeric()." -msgstr "j 的结果中第 %d 列在第 1 组中为 NULL" -"我们依赖第 1 组的列类型去决定剩余组的类型(需要一致性)" -"空 (NULL) 列可以出现在后面的组(适当的以 NA 取代并回收)但不能是第 1 组" -"请输入空向量代替,例如 integer() 或 numeric()" +msgstr "" +"j 的结果中第 %d 列在第 1 组中为 NULL我们依赖第 1 组的列类型去决定剩余组的类型" +"(需要一致性)空 (NULL) 列可以出现在后面的组(适当的以 NA 取代并回收)但不能是第 " +"1 组请输入空向量代替,例如 integer() 或 numeric()" #: dogroups.c:364 msgid "" "j appears to be a named vector. The same names will likely be created over " "and over again for each group and slow things down. Try and pass a named " "list (which data.table optimizes) or an unnamed list() instead.\n" -msgstr "j 是名称向量,这可能使相同的名称不停重复创建导致速度变慢" -"请尝试输入名称列表(较适合 data.table)或是非名称列表代替\n" +msgstr "" +"j 是名称向量,这可能使相同的名称不停重复创建导致速度变慢请尝试输入名称列表(较" +"适合 data.table)或是非名称列表代替\n" #: dogroups.c:366 #, c-format @@ -1079,9 +1081,9 @@ msgid "" "Column %d of j is a named vector (each item down the rows is named, " "somehow). Please remove those names for efficiency (to save creating them " "over and over for each group). They are ignored anyway.\n" -msgstr "j 的第 %d 列是名称向量(整行的项都是名称)" -"为了效率请移除这些名称(避免在每组重复创建这些名称)" -"总之他们被忽略了\n" +msgstr "" +"j 的第 %d 列是名称向量(整行的项都是名称)为了效率请移除这些名称(避免在每组重复" +"创建这些名称)总之他们被忽略了\n" #: dogroups.c:374 msgid "" @@ -1090,10 +1092,10 @@ msgid "" "detected, removed and put back after grouping has completed, for efficiency. " "Using j=transform(), for example, prevents that speedup (consider changing " "to :=). This message may be upgraded to warning in future.\n" -msgstr "j 的结果是名称列表,在每组不停重复创建相同的名称很没效率" -"为了提高效率,当 j=list(...) 时侦测到的所有名称会被移出,待分组完成后再放回来" -"可以使用 j=transform() 避免这种加速" -"此讯息可能会在未来升级为警告\n" +msgstr "" +"j 的结果是名称列表,在每组不停重复创建相同的名称很没效率为了提高效率,当 " +"j=list(...) 时侦测到的所有名称会被移出,待分组完成后再放回来可以使用 " +"j=transform() 避免这种加速此讯息可能会在未来升级为警告\n" #: dogroups.c:386 #, c-format @@ -1112,17 +1114,18 @@ msgid "" "%d NAs to match the longest column in this result. Later groups may have a " "similar problem but only the first is reported to save filling the warning " "buffer." -msgstr "j 的结果第 %d 项在第 %d 组中为零长度(zero length)" -"将使用 %d 个 NA 填入以符合结果中最长列的长度" -"后面的分组也有相同问题,但只回报第一组以避免过多警告" +msgstr "" +"j 的结果第 %d 项在第 %d 组中为零长度(zero length)将使用 %d 个 NA 填入以符合结" +"果中最长列的长度后面的分组也有相同问题,但只回报第一组以避免过多警告" #: dogroups.c:427 #, c-format msgid "" "Column %d of result for group %d is type '%s' but expecting type '%s'. " "Column types must be consistent for each group." -msgstr "结果的第 %d 列在第 %d 组中是 '%s' 类别而非预期的 '%s' 类别" -"所有组的列类别必须一致" +msgstr "" +"结果的第 %d 列在第 %d 组中是 '%s' 类别而非预期的 '%s' 类别所有组的列类别必须" +"一致" #: dogroups.c:429 #, c-format @@ -1131,9 +1134,10 @@ msgid "" "length must either be 1 (single values are ok) or match the LHS length " "exactly. If you wish to 'recycle' the RHS please use rep() explicitly to " "make this intent clear to readers of your code." -msgstr "提供 %1$d 项给第 %3$d 組的第 %2$d 列,这组有 %4$d 行" -"RHS長度必須為 1 (可以使用單個值) 或與 LHS 長度完全匹配" -"如果您想回收(recycle) RHS,请使用 rep() 向你的代码读者明确表达你的意图" +msgstr "" +"提供 %1$d 项给第 %3$d 組的第 %2$d 列,这组有 %4$d 行RHS長度必須為 1 (可以使用" +"單個值) 或與 LHS 長度完全匹配如果您想回收(recycle) RHS,请使用 rep() 向你的代" +"码读者明确表达你的意图" #: dogroups.c:444 #, c-format @@ -1150,7 +1154,8 @@ msgstr "内部错误 : 区块 0 [%d] 与区块 1 [%d] 都运行了" msgid "" "\n" " %s took %.3fs for %d groups\n" -msgstr "\n" +msgstr "" +"\n" " %s 花了 %.3fs 在 %d 个组\n" #: dogroups.c:458 @@ -1687,612 +1692,661 @@ msgstr "" msgid "Internal error. Argument 'cols' to CanyNA is type '%s' not 'integer'" msgstr "" -#: fread.c:149 +#: fread.c:153 #, c-format msgid "System error %d unmapping view of file\n" msgstr "" -#: fread.c:152 +#: fread.c:156 #, c-format msgid "System errno %d unmapping file: %s\n" msgstr "" -#: fread.c:212 +#: fread.c:216 #, c-format msgid "Internal error: NUMTYPE(%d) > nLetters(%d)" msgstr "" -#: fread.c:437 +#: fread.c:441 #, c-format msgid "Unable to allocate %s of contiguous virtual RAM. %s allocation." msgstr "" -#: fread.c:442 +#: fread.c:446 #, c-format msgid "Avoidable %.3f seconds. %s time to copy.\n" msgstr "" -#: fread.c:443 +#: fread.c:447 #, c-format msgid " File copy in RAM took %.3f seconds.\n" msgstr "" -#: fread.c:1095 +#: fread.c:1099 msgid "" "Previous fread() session was not cleaned up properly. Cleaned up ok at the " "beginning of this fread() call.\n" msgstr "" -#: fread.c:1098 +#: fread.c:1102 msgid "[01] Check arguments\n" msgstr "" -#: fread.c:1105 +#: fread.c:1109 #, c-format msgid " Using %d threads (omp_get_max_threads()=%d, nth=%d)\n" msgstr "" -#: fread.c:1113 +#: fread.c:1117 msgid "" "Internal error: NAstrings is itself NULL. When empty it should be pointer to " "NULL." msgstr "" -#: fread.c:1131 +#: fread.c:1135 #, c-format msgid "freadMain: NAstring <<%s>> has whitespace at the beginning or end" msgstr "" -#: fread.c:1136 +#: fread.c:1140 #, c-format msgid "" "freadMain: NAstring <<%s>> is recognized as type boolean, this is not " "permitted." msgstr "" -#: fread.c:1146 +#: fread.c:1150 msgid " No NAstrings provided.\n" msgstr "" -#: fread.c:1148 +#: fread.c:1152 msgid " NAstrings = [" msgstr "" -#: fread.c:1151 +#: fread.c:1155 msgid "]\n" msgstr "" -#: fread.c:1153 +#: fread.c:1157 msgid " One or more of the NAstrings looks like a number.\n" msgstr "" -#: fread.c:1155 +#: fread.c:1159 msgid " None of the NAstrings look like numbers.\n" msgstr "" -#: fread.c:1157 +#: fread.c:1161 #, c-format msgid " skip num lines = %llu\n" msgstr "" -#: fread.c:1158 +#: fread.c:1162 #, c-format msgid " skip to string = <<%s>>\n" msgstr "" -#: fread.c:1159 +#: fread.c:1163 #, c-format msgid " show progress = %d\n" msgstr "" -#: fread.c:1160 +#: fread.c:1164 #, c-format msgid " 0/1 column will be read as %s\n" msgstr "" -#: fread.c:1168 +#: fread.c:1172 #, c-format msgid "sep == quote ('%c') is not allowed" msgstr "" -#: fread.c:1169 +#: fread.c:1173 msgid "dec='' not allowed. Should be '.' or ','" msgstr "" -#: fread.c:1170 +#: fread.c:1174 #, c-format msgid "sep == dec ('%c') is not allowed" msgstr "" -#: fread.c:1171 +#: fread.c:1175 #, c-format msgid "quote == dec ('%c') is not allowed" msgstr "" -#: fread.c:1188 +#: fread.c:1192 msgid "[02] Opening the file\n" msgstr "" -#: fread.c:1191 +#: fread.c:1195 msgid "" " `input` argument is provided rather than a file name, interpreting as raw " "text to read\n" msgstr "" -#: fread.c:1195 +#: fread.c:1199 msgid "Internal error: last byte of character input isn't \\0" msgstr "" -#: fread.c:1198 +#: fread.c:1202 #, c-format msgid " Opening file %s\n" msgstr "" -#: fread.c:1202 +#: fread.c:1206 #, c-format msgid "file not found: %s" msgstr "" -#: fread.c:1206 +#: fread.c:1210 #, c-format msgid "Opened file ok but couldn't obtain its size: %s" -msgstr "" +msgstr "文件能够打开但无法获知其大小:%s" -#: fread.c:1209 fread.c:1237 +#: fread.c:1213 fread.c:1241 #, c-format msgid "File is empty: %s" -msgstr "" +msgstr "文件是空的:%s" -#: fread.c:1210 fread.c:1238 +#: fread.c:1214 fread.c:1242 #, c-format msgid " File opened, size = %s.\n" -msgstr "" +msgstr "文件已打开,大小为 %s.\n" -#: fread.c:1227 +#: fread.c:1231 #, c-format msgid "File not found: %s" -msgstr "" +msgstr "文件没有找到:%s" -#: fread.c:1233 +#: fread.c:1237 #, c-format msgid "Unable to open file after %d attempts (error %d): %s" -msgstr "" +msgstr "经过 %d 次尝试后仍无法打开文件(错误 %d):%s" -#: fread.c:1235 +#: fread.c:1239 #, c-format msgid "GetFileSizeEx failed (returned 0) on file: %s" -msgstr "" +msgstr "GetFileSizeEx 未能成功执行(返回值为0)于文件:%s" -#: fread.c:1240 +#: fread.c:1244 #, c-format msgid "This is Windows, CreateFileMapping returned error %d for file %s" -msgstr "" +msgstr "现在在Windows下,CreateFileMapping 返回错误 %d 于文件 %s" -#: fread.c:1247 +#: fread.c:1251 #, c-format msgid "" "Opened %s file ok but could not memory map it. This is a %dbit process. %s." -msgstr "" +msgstr "能够打开文件 %s 但不能创建内存映射。这是一个 %d 位进程。 %s." -#: fread.c:1248 +#: fread.c:1252 msgid "Please upgrade to 64bit" -msgstr "" +msgstr "请升级到64位" -#: fread.c:1248 +#: fread.c:1252 msgid "There is probably not enough contiguous virtual memory available" -msgstr "" +msgstr "多半没有足够的连续虚拟内存" -#: fread.c:1251 +#: fread.c:1255 msgid " Memory mapped ok\n" -msgstr "" +msgstr " 内存映射正常\n" -#: fread.c:1253 +#: fread.c:1257 msgid "" "Internal error: Neither `input` nor `filename` are given, nothing to read." msgstr "" +"内部错误:既没有`input`(输入)也没有`filename`(文件名),没有什么可供读入。" -#: fread.c:1270 +#: fread.c:1274 msgid "[03] Detect and skip BOM\n" -msgstr "" +msgstr "[03] 检测并跳过字节顺序标记(BOM)\n" -#: fread.c:1274 +#: fread.c:1278 msgid "" " UTF-8 byte order mark EF BB BF found at the start of the file and " "skipped.\n" -msgstr "" +msgstr "在文件头发现了UTF-8 字节顺序标记(BOM)EF BB BF 并已跳过。\n" -#: fread.c:1279 +#: fread.c:1283 msgid "" "GB-18030 encoding detected, however fread() is unable to decode it. Some " "character fields may be garbled.\n" -msgstr "" +msgstr "检测到GB-18030 编码,但fread() 未能解码。某些 字符字段可能有乱码。\n" -#: fread.c:1282 +#: fread.c:1286 msgid "" "File is encoded in UTF-16, this encoding is not supported by fread(). Please " "recode the file to UTF-8." -msgstr "" +msgstr "文件编码是UTF-16,fread()不支持此编码。请 将文件转换为UTF-8。" -#: fread.c:1287 +#: fread.c:1291 #, c-format msgid " Last byte(s) of input found to be %s and removed.\n" -msgstr "" +msgstr " 发现输入的最后字节是 %s 并已去除。\n" -#: fread.c:1290 +#: fread.c:1294 msgid "Input is empty or only contains BOM or terminal control characters" -msgstr "" +msgstr "输入是空的或只有字节顺序标记(BOM)或终端控制字符" -#: fread.c:1297 +#: fread.c:1301 msgid "[04] Arrange mmap to be \\0 terminated\n" -msgstr "" +msgstr "[04] 设定mmap为 \\0 终止\n" -#: fread.c:1304 +#: fread.c:1308 msgid "" " No \\n exists in the file at all, so single \\r (if any) will be taken as " "one line ending. This is unusual but will happen normally when there is no " "\\r either; e.g. a single line missing its end of line.\n" msgstr "" +" 文件中完全没有换行符\\n,所以单个 \\r(如果有的话)将被当成一行的结束。这不" +"太常见但如果没有\\r 的话属于正常;例如单个行没有行尾结束符。\n" -#: fread.c:1305 +#: fread.c:1309 msgid "" " \\n has been found in the input and different lines can end with different " "line endings (e.g. mixed \\n and \\r\\n in one file). This is common and " "ideal.\n" msgstr "" +" 输入中有\\n 并且不同行可以有不同的 行尾结束符(如在一个文件中混合使用 \\n " +"和\\r\\n)。这很常见也是理想情况。\n" -#: fread.c:1329 +#: fread.c:1333 #, c-format msgid "" " File ends abruptly with '%c'. Final end-of-line is missing. Using cow page " "to write 0 to the last byte.\n" msgstr "" +" 文件突然中止于 '%c'。没有最后一个行尾结束符。正使用写时复制页(cow, copy-" +"on-write)写入 0 到最后一个字节。\n" -#: fread.c:1335 +#: fread.c:1339 msgid "" "This file is very unusual: it ends abruptly without a final newline, and " "also its size is a multiple of 4096 bytes. Please properly end the last row " "with a newline using for example 'echo >> file' to avoid this " msgstr "" +"这个文件非常不正常:它突然中止而没有最后的换行,并且其大小是4096 字节的整数" +"倍。请用一个换行(例如 'echo >> file')来恰当地结束最后一行以避免此错误" -#: fread.c:1336 +#: fread.c:1340 #, c-format msgid " File ends abruptly with '%c'. Copying file in RAM. %s copy.\n" -msgstr "" +msgstr " 文件突然中止于 '%c'。正在从内存中复制文件。%s 复制。\n" -#: fread.c:1370 +#: fread.c:1374 msgid "[05] Skipping initial rows if needed\n" -msgstr "" +msgstr "[05] 如需要的话跳过起始行\n" -#: fread.c:1376 +#: fread.c:1380 #, c-format msgid "" "skip='%s' not found in input (it is case sensitive and literal; i.e., no " "patterns, wildcards or regex)" msgstr "" +"在输入中没有发现 skip='%s' (这里大小写敏感并需要是字面形式,也就是说不能使用" +"模式,适配符或正则表达式)" -#: fread.c:1382 +#: fread.c:1386 #, c-format msgid "" "Found skip='%s' on line %llu. Taking this to be header row or first row of " "data.\n" -msgstr "" +msgstr "在行 %2$llu 发现了 skip='%1$s'。将此当做表头或数据的第一行。\n" -#: fread.c:1395 +#: fread.c:1399 #, c-format msgid " Skipped to line %llu in the file" -msgstr "" +msgstr " 跳到文件的第 %llu 行" -#: fread.c:1396 +#: fread.c:1400 #, c-format msgid "skip=%llu but the input only has %llu line%s" -msgstr "" +msgstr "skip=%llu 但输入只有 %llu 行 %s" -#: fread.c:1405 +#: fread.c:1409 msgid "" "Input is either empty, fully whitespace, or skip has been set after the last " "non-whitespace." -msgstr "" +msgstr "输入是空,或全部为空白,或跳过设置是在最后一个非空白字符之后。" -#: fread.c:1407 +#: fread.c:1411 #, c-format msgid " Moved forward to first non-blank line (%d)\n" -msgstr "" +msgstr " 前移到第一个非空行 (%d)\n" -#: fread.c:1408 +#: fread.c:1412 #, c-format msgid " Positioned on line %d starting: <<%s>>\n" -msgstr "" +msgstr " 定位到行 %d 开始于: <<%s>>\n" -#: fread.c:1426 +#: fread.c:1430 msgid "[06] Detect separator, quoting rule, and ncolumns\n" -msgstr "" +msgstr "[06] 检测分隔符,引用规则,以及列数\n" -#: fread.c:1430 +#: fread.c:1434 msgid " sep='\\n' passed in meaning read lines as single character column\n" -msgstr "" +msgstr " sep='\\n' 设定意味着将把所有行读作一个字符列\n" -#: fread.c:1449 +#: fread.c:1453 msgid " Detecting sep automatically ...\n" -msgstr "" +msgstr " 自动检测分隔符中 ...\n" -#: fread.c:1456 +#: fread.c:1460 #, c-format msgid " Using supplied sep '%s'\n" -msgstr "" +msgstr " 使用提供的分隔符 '%s'\n" -#: fread.c:1490 +#: fread.c:1494 #, c-format msgid " with %d fields using quote rule %d\n" -msgstr "" +msgstr " 对 %d 个字段使用引用规则 %d\n" -#: fread.c:1540 +#: fread.c:1544 #, c-format msgid " with %d lines of %d fields using quote rule %d\n" -msgstr "" +msgstr " 对 %d 行的 %d 字段使用引用规则 %d\n" -#: fread.c:1547 +#: fread.c:1551 msgid "" " No sep and quote rule found a block of 2x2 or greater. Single column " "input.\n" -msgstr "" +msgstr " 没有分隔符并且引用规则发现了一个大于或等于2x2的区块。输入是单列。\n" -#: fread.c:1563 +#: fread.c:1567 msgid "" "Single column input contains invalid quotes. Self healing only effective " "when ncol>1" -msgstr "" +msgstr "单列输入包含了不合法的引用。自我修正只有在列数大于1(ncol>1)时才有效" -#: fread.c:1568 +#: fread.c:1572 #, c-format msgid "" "Found and resolved improper quoting in first %d rows. If the fields are not " "quoted (e.g. field separator does not appear within any field), try quote=" "\"\" to avoid this warning." msgstr "" +"在前 %d 行中发现并修正了不合适的引号用法。如果字段没有加引号(例如字段间隔符" +"没有在任何字段内出现),可以尝试使用 quote=\"\" 来避免此警告。" -#: fread.c:1584 +#: fread.c:1588 #, c-format msgid "" "Internal error: ncol==%d line==%d after detecting sep, ncol and first line" msgstr "" -#: fread.c:1587 +#: fread.c:1591 #, c-format msgid "Internal error: first line has field count %d but expecting %d" msgstr "" -#: fread.c:1589 +#: fread.c:1593 #, c-format msgid "" " Detected %d columns on line %d. This line is either column names or first " "data row. Line starts as: <<%s>>\n" msgstr "" -#: fread.c:1591 +#: fread.c:1595 #, c-format msgid " Quote rule picked = %d\n" msgstr "" -#: fread.c:1592 +#: fread.c:1596 #, c-format msgid " fill=%s and the most number of columns found is %d\n" msgstr "" -#: fread.c:1598 +#: fread.c:1602 msgid "" "This file is very unusual: it's one single column, ends with 2 or more end-" "of-line (representing several NA at the end), and is a multiple of 4096, too." msgstr "" -#: fread.c:1599 +#: fread.c:1603 #, c-format msgid " Copying file in RAM. %s\n" msgstr "" -#: fread.c:1605 +#: fread.c:1609 msgid "" " 1-column file ends with 2 or more end-of-line. Restoring last eol using " "extra byte in cow page.\n" msgstr "" -#: fread.c:1624 +#: fread.c:1628 msgid "" "[07] Detect column types, good nrow estimate and whether first row is column " "names\n" msgstr "" -#: fread.c:1625 +#: fread.c:1629 #, c-format msgid " 'header' changed by user from 'auto' to %s\n" msgstr "" -#: fread.c:1629 +#: fread.c:1633 #, c-format msgid "Failed to allocate 2 x %d bytes for type and tmpType: %s" msgstr "" -#: fread.c:1650 +#: fread.c:1654 #, c-format msgid " Number of sampling jump points = %d because " msgstr "" -#: fread.c:1651 +#: fread.c:1655 #, c-format msgid "nrow limit (%llu) supplied\n" msgstr "" -#: fread.c:1652 +#: fread.c:1656 msgid "jump0size==0\n" msgstr "" -#: fread.c:1653 +#: fread.c:1657 #, c-format msgid "(%llu bytes from row 1 to eof) / (2 * %llu jump0size) == %llu\n" msgstr "" -#: fread.c:1691 +#: fread.c:1695 #, c-format msgid "" " A line with too-%s fields (%d/%d) was found on line %d of sample jump %d. " "%s\n" msgstr "" -#: fread.c:1718 +#: fread.c:1696 +msgid "few" +msgstr "" + +#: fread.c:1696 +msgid "many" +msgstr "" + +#: fread.c:1696 +msgid "" +"Most likely this jump landed awkwardly so type bumps here will be skipped." +msgstr "" + +#: fread.c:1722 #, c-format msgid " Type codes (jump %03d) : %s Quote rule %d\n" msgstr "" -#: fread.c:1731 +#: fread.c:1735 #, c-format msgid "" " 'header' determined to be true due to column %d containing a string on row " "1 and a lower type (%s) in the rest of the %d sample rows\n" msgstr "" -#: fread.c:1743 +#: fread.c:1747 msgid "" "Internal error: row before first data row has the same number of fields but " "we're not using it." msgstr "" -#: fread.c:1744 +#: fread.c:1748 msgid "" "Internal error: ch!=pos after counting fields in the line before the first " "data row." msgstr "" -#: fread.c:1745 +#: fread.c:1749 #, c-format msgid "" "Types in 1st data row match types in 2nd data row but previous row has %d " "fields. Taking previous row as column names." msgstr "" -#: fread.c:1748 +#: fread.c:1752 #, c-format msgid "" "Detected %d column names but the data has %d columns (i.e. invalid file). " "Added %d extra default column name%s\n" msgstr "" -#: fread.c:1751 +#: fread.c:1753 +msgid "" +" for the first column which is guessed to be row names or an index. Use " +"setnames() afterwards if this guess is not correct, or fix the file write " +"command that created the file to create a valid file." +msgstr "" + +#: fread.c:1753 +msgid "s at the end." +msgstr "" + +#: fread.c:1755 msgid "" "Internal error: fill=true but there is a previous row which should already " "have been filled." msgstr "" -#: fread.c:1752 +#: fread.c:1756 #, c-format msgid "" "Detected %d column names but the data has %d columns. Filling rows " "automatically. Set fill=TRUE explicitly to avoid this warning.\n" msgstr "" -#: fread.c:1756 +#: fread.c:1760 #, c-format msgid "Failed to realloc 2 x %d bytes for type and tmpType: %s" msgstr "" -#: fread.c:1776 +#: fread.c:1780 #, c-format msgid "" " 'header' determined to be %s because there are%s number fields in the " "first and only row\n" msgstr "" -#: fread.c:1779 +#: fread.c:1780 +msgid "true" +msgstr "" + +#: fread.c:1780 +msgid "false" +msgstr "" + +#: fread.c:1780 +msgid " no" +msgstr "" + +#: fread.c:1783 msgid "" " 'header' determined to be true because all columns are type string and a " "better guess is not possible\n" msgstr "" -#: fread.c:1781 +#: fread.c:1785 msgid "" " 'header' determined to be false because there are some number columns and " "those columns do not have a string field at the top of them\n" msgstr "" -#: fread.c:1797 +#: fread.c:1801 #, c-format msgid " Type codes (first row) : %s Quote rule %d\n" msgstr "" -#: fread.c:1806 +#: fread.c:1810 #, c-format msgid "" " All rows were sampled since file is small so we know nrow=%llu exactly\n" msgstr "" -#: fread.c:1818 fread.c:1825 +#: fread.c:1822 fread.c:1829 msgid " =====\n" msgstr "" -#: fread.c:1819 +#: fread.c:1823 #, c-format msgid "" " Sampled %llu rows (handled \\n inside quoted fields) at %d jump points\n" msgstr "" -#: fread.c:1820 +#: fread.c:1824 #, c-format msgid " Bytes from first data row on line %d to the end of last row: %llu\n" msgstr "" -#: fread.c:1821 +#: fread.c:1825 #, c-format msgid " Line length: mean=%.2f sd=%.2f min=%d max=%d\n" msgstr "" -#: fread.c:1822 +#: fread.c:1826 #, c-format msgid " Estimated number of rows: %llu / %.2f = %llu\n" msgstr "" -#: fread.c:1823 +#: fread.c:1827 #, c-format msgid "" " Initial alloc = %llu rows (%llu + %d%%) using bytes/max(mean-2*sd,min) " "clamped between [1.1*estn, 2.0*estn]\n" msgstr "" -#: fread.c:1827 +#: fread.c:1831 #, c-format msgid "Internal error: sampleLines(%llu) > allocnrow(%llu)" msgstr "" -#: fread.c:1831 +#: fread.c:1835 #, c-format msgid " Alloc limited to lower nrows=%llu passed in.\n" msgstr "" -#: fread.c:1843 +#: fread.c:1847 msgid "[08] Assign column names\n" msgstr "" -#: fread.c:1851 +#: fread.c:1855 #, c-format msgid "Unable to allocate %d*%d bytes for column name pointers: %s" msgstr "" -#: fread.c:1873 +#: fread.c:1877 #, c-format msgid "Internal error: reading colnames ending on '%c'" msgstr "" -#: fread.c:1891 +#: fread.c:1895 msgid "[09] Apply user overrides on column types\n" msgstr "" -#: fread.c:1895 +#: fread.c:1899 msgid " Cancelled by user: userOverride() returned false." msgstr "" -#: fread.c:1905 +#: fread.c:1909 #, c-format msgid "Failed to allocate %d bytes for size array: %s" msgstr "" -#: fread.c:1912 +#: fread.c:1916 #, c-format msgid "" "Attempt to override column %d <<%.*s>> of inherent type '%s' down to '%s' " @@ -2300,89 +2354,101 @@ msgid "" "was intended, please coerce to the lower type afterwards." msgstr "" -#: fread.c:1926 +#: fread.c:1930 #, c-format msgid " After %d type and %d drop user overrides : %s\n" msgstr "" -#: fread.c:1934 +#: fread.c:1938 msgid "[10] Allocate memory for the datatable\n" msgstr "" -#: fread.c:1935 +#: fread.c:1939 #, c-format msgid " Allocating %d column slots (%d - %d dropped) with %llu rows\n" msgstr "" -#: fread.c:1989 +#: fread.c:1993 #, c-format msgid "Buffer size %lld is too large\n" msgstr "" -#: fread.c:1992 +#: fread.c:1996 msgid "[11] Read the data\n" msgstr "" -#: fread.c:1995 +#: fread.c:1999 #, c-format msgid " jumps=[%d..%d), chunk_size=%llu, total_size=%llu\n" msgstr "" -#: fread.c:2215 +#: fread.c:2011 +#, c-format +msgid "Internal error: Master thread is not thread 0 but thread %d.\n" +msgstr "" + +#: fread.c:2219 #, c-format msgid "" "Column %d (\"%.*s\") bumped from '%s' to '%s' due to <<%.*s>> on row %llu\n" msgstr "" -#: fread.c:2337 +#: fread.c:2268 +#, c-format +msgid "" +"Internal error: invalid head position. jump=%d, headPos=%p, thisJumpStart=" +"%p, sof=%p" +msgstr "" + +#: fread.c:2341 #, c-format msgid "" " Too few rows allocated. Allocating additional %llu rows (now nrows=%llu) " "and continue reading from jump %d\n" msgstr "" -#: fread.c:2344 +#: fread.c:2348 #, c-format msgid " Restarting team from jump %d. nSwept==%d quoteRule==%d\n" msgstr "" -#: fread.c:2364 +#: fread.c:2368 #, c-format msgid " %d out-of-sample type bumps: %s\n" msgstr "" -#: fread.c:2400 +#: fread.c:2404 #, c-format msgid "" "Read %llu rows x %d columns from %s file in %02d:%06.3f wall clock time\n" msgstr "" -#: fread.c:2407 +#: fread.c:2411 msgid "[12] Finalizing the datatable\n" msgstr "" -#: fread.c:2408 +#: fread.c:2412 msgid " Type counts:\n" msgstr "" -#: fread.c:2410 +#: fread.c:2414 #, c-format msgid "%10d : %-9s '%c'\n" msgstr "" -#: fread.c:2426 +#: fread.c:2430 #, c-format msgid "Discarded single-line footer: <<%s>>" msgstr "" -#: fread.c:2431 +#: fread.c:2435 #, c-format msgid "" "Stopped early on line %llu. Expected %d fields but found %d. Consider " "fill=TRUE and comment.char=. First discarded non-empty line: <<%s>>" msgstr "" -#: fread.c:2437 +#: fread.c:2441 #, c-format msgid "" "Found and resolved improper quoting out-of-sample. First healed line %llu: <<" @@ -2390,67 +2456,67 @@ msgid "" "within any field), try quote=\"\" to avoid this warning." msgstr "" -#: fread.c:2441 +#: fread.c:2445 msgid "=============================\n" msgstr "" -#: fread.c:2443 +#: fread.c:2447 #, c-format msgid "%8.3fs (%3.0f%%) Memory map %.3fGB file\n" msgstr "" -#: fread.c:2444 +#: fread.c:2448 #, c-format msgid "%8.3fs (%3.0f%%) sep=" msgstr "" -#: fread.c:2446 +#: fread.c:2450 #, c-format msgid " ncol=%d and header detection\n" msgstr "" -#: fread.c:2447 +#: fread.c:2451 #, c-format msgid "%8.3fs (%3.0f%%) Column type detection using %llu sample rows\n" msgstr "" -#: fread.c:2449 +#: fread.c:2453 #, c-format msgid "" "%8.3fs (%3.0f%%) Allocation of %llu rows x %d cols (%.3fGB) of which %llu " "(%3.0f%%) rows used\n" msgstr "" -#: fread.c:2453 +#: fread.c:2457 #, c-format msgid "" "%8.3fs (%3.0f%%) Reading %d chunks (%d swept) of %.3fMB (each chunk %d rows) " "using %d threads\n" msgstr "" -#: fread.c:2455 +#: fread.c:2459 #, c-format msgid "" " + %8.3fs (%3.0f%%) Parse to row-major thread buffers (grown %d times)\n" msgstr "" -#: fread.c:2456 +#: fread.c:2460 #, c-format msgid " + %8.3fs (%3.0f%%) Transpose\n" msgstr "" -#: fread.c:2457 +#: fread.c:2461 #, c-format msgid " + %8.3fs (%3.0f%%) Waiting\n" msgstr "" -#: fread.c:2458 +#: fread.c:2462 #, c-format msgid "" "%8.3fs (%3.0f%%) Rereading %d columns due to out-of-sample type exceptions\n" msgstr "" -#: fread.c:2460 +#: fread.c:2464 #, c-format msgid "%8.3fs Total\n" msgstr "" @@ -2704,16 +2770,15 @@ msgstr "" msgid "" "%s: NA (or other non-finite) value(s) are present in input, skip non-NA " "attempt and run with extra care for NAs\n" -msgstr "" -"%s: NA (或其他非有限长度值) 出现在输入中, 跳过非NA的" -"输入并当心NA值\n" +msgstr "%s: NA (或其他非有限长度值) 出现在输入中, 跳过非NA的输入并当心NA值\n" #: froll.c:141 froll.c:339 #, c-format msgid "" "%s: running in parallel for input length %llu, window %d, hasna %d, narm %d\n" msgstr "" -"%s: 正在并行运行, 输入长度 (input length) %llu, 窗口 (window) %d, hasna %d, narm %d\n" +"%s: 正在并行运行, 输入长度 (input length) %llu, 窗口 (window) %d, hasna %d, " +"narm %d\n" #: froll.c:179 froll.c:372 frolladaptive.c:157 frolladaptive.c:336 #, c-format @@ -2721,8 +2786,8 @@ msgid "" "%s: NA (or other non-finite) value(s) are present in input, na.rm was FALSE " "so in 'exact' implementation NAs were handled already, no need to re-run\n" msgstr "" -"%s: NA (或其他非有限长度值) 出现在输入中, na.rm 为 FALSE " -"因此在'exact'实现中, NA值已经被处理, 不需要重新运行\n" +"%s: NA (或其他非有限长度值) 出现在输入中, na.rm 为 FALSE 因此在'exact'实现" +"中, NA值已经被处理, 不需要重新运行\n" #: froll.c:428 #, c-format @@ -2735,8 +2800,8 @@ msgid "" "%s: results from provided FUN are not of type double, coercion from integer " "or logical will be applied on each iteration\n" msgstr "" -"%s: 所提供的函数 (FUN) 的结果不是双精度 (double) 类型, " -"对整数或逻辑值的类型转换会在每个循环中执行\n" +"%s: 所提供的函数 (FUN) 的结果不是双精度 (double) 类型, 对整数或逻辑值的类型转" +"换会在每个循环中执行\n" #: froll.c:438 #, c-format @@ -2754,7 +2819,9 @@ msgstr "x 必须是数值或者逻辑类型" #: frollR.c:26 msgid "x must be list, data.frame or data.table of numeric or logical types" -msgstr "x 必须是列表 (list), 或由数值或者逻辑类型组成的数据框 (data.frame 或 data.table)" +msgstr "" +"x 必须是列表 (list), 或由数值或者逻辑类型组成的数据框 (data.frame 或 data." +"table)" #: frollR.c:47 frollR.c:264 msgid "n must be non 0 length" @@ -2794,23 +2861,22 @@ msgid "" "using hasNA FALSE and na.rm TRUE does not make sense, if you know there are " "NA values use hasNA TRUE, otherwise leave it as default NA" msgstr "" -"同时使用 hasNA FALSE 和 na.rm TRUE 没有意义, 如果明确有" -"NA值, 那就用 hasNA TRUE, 在其他情况可以让它保留默认值NA" +"同时使用 hasNA FALSE 和 na.rm TRUE 没有意义, 如果明确有NA值, 那就用 hasNA " +"TRUE, 在其他情况可以让它保留默认值NA" #: frollR.c:119 frollR.c:275 msgid "" "Internal error: invalid align argument in rolling function, should have been " "caught before. please report to data.table issue tracker." msgstr "" -"内部错误: 在 rolling 函数内无效的 align 参数, 理应在更早阶段排除" -"请向data.table issue tracker报告" +"内部错误: 在 rolling 函数内无效的 align 参数, 理应在更早阶段排除请向data." +"table issue tracker报告" #: frollR.c:122 msgid "" "using adaptive TRUE and align argument different than 'right' is not " "implemented" -msgstr "" -"同时使用 adaptive TRUE 和不是 'right' 的align参数还未能实现" +msgstr "同时使用 adaptive TRUE 和不是 'right' 的align参数还未能实现" #: frollR.c:126 frollR.c:297 types.c:64 #, c-format @@ -2824,24 +2890,22 @@ msgid "" "function on list having variable length of elements call it for each field " "separately" msgstr "" -"adaptive rolling 函数只能处理长度同为" -"的 'x', 比如 data.table 或数据框; 如果想在含有不同长度元素的列表上执行 rolling" -"函数, 需要分开单独地在每一项上面执行." +"adaptive rolling 函数只能处理长度同为的 'x', 比如 data.table 或数据框; 如果想" +"在含有不同长度元素的列表上执行 rolling函数, 需要分开单独地在每一项上面执行." #: frollR.c:137 msgid "" "length of integer vector(s) provided as list to 'n' argument must be equal " "to number of observations provided in 'x'" -msgstr "" -"'n' 列表中整数向量的长度必须等于 'x' 中的观察数量" +msgstr "'n' 列表中整数向量的长度必须等于 'x' 中的观察数量" #: frollR.c:151 msgid "" "Internal error: invalid fun argument in rolling function, should have been " "caught before. please report to data.table issue tracker." msgstr "" -"内部错误: 在 rolling 函数中无效的 fun 参数, 理应在更早阶段排除" -"请向data.table issue tracker报告" +"内部错误: 在 rolling 函数中无效的 fun 参数, 理应在更早阶段排除请向data.table " +"issue tracker报告" #: frollR.c:155 frollR.c:279 nafill.c:136 shift.c:21 msgid "fill must be a vector of length 1" @@ -2856,8 +2920,8 @@ msgid "" "Internal error: invalid algo argument in rolling function, should have been " "caught before. please report to data.table issue tracker." msgstr "" -"内部错误: 在 rolling 函数内无效的 algo 参数, 理应在更早阶段排除" -"请向data.table issue tracker报告" +"内部错误: 在 rolling 函数内无效的 algo 参数, 理应在更早阶段排除请向data." +"table issue tracker报告" #: frollR.c:190 #, c-format @@ -2877,8 +2941,8 @@ msgid "" "%s: %d column(s) and %d window(s), not entering parallel execution here " "because algo='exact' will compute results in parallel\n" msgstr "" -"%s: %d column(s) 和 %d window(s), 未能进入并行执行," -"因为 algo='exact' 会并行计算结果\n" +"%s: %d column(s) 和 %d window(s), 未能进入并行执行,因为 algo='exact' 会并行计" +"算结果\n" #: frollR.c:219 #, c-format @@ -2964,7 +3028,7 @@ msgstr "" msgid "%lld " msgstr "" -#: fsort.c:246 fwrite.c:690 fwrite.c:947 +#: fsort.c:246 fwrite.c:693 fwrite.c:951 msgid "\n" msgstr "" @@ -2983,31 +3047,31 @@ msgstr "" msgid "%d: %.3f (%4.1f%%)\n" msgstr "" -#: fwrite.c:601 +#: fwrite.c:603 #, c-format msgid "buffMB=%d outside [1,1024]" msgstr "" -#: fwrite.c:608 +#: fwrite.c:610 #, c-format msgid "" "eol must be 1 or more bytes (usually either \\n or \\r\\n) but is length %d" msgstr "" -#: fwrite.c:611 +#: fwrite.c:613 msgid "Column writers: " msgstr "" -#: fwrite.c:613 fwrite.c:615 fwrite.c:617 +#: fwrite.c:615 fwrite.c:617 fwrite.c:619 #, c-format msgid "%d " msgstr "" -#: fwrite.c:616 +#: fwrite.c:618 msgid "... " msgstr "" -#: fwrite.c:619 +#: fwrite.c:621 #, c-format msgid "" "\n" @@ -3015,17 +3079,17 @@ msgid "" "eolLen=%d\n" msgstr "" -#: fwrite.c:652 +#: fwrite.c:654 #, c-format msgid "Internal error: type %d has no max length method implemented" msgstr "" -#: fwrite.c:659 +#: fwrite.c:662 #, c-format msgid "maxLineLen=%zd. Found in %.3fs\n" msgstr "" -#: fwrite.c:679 +#: fwrite.c:682 #, c-format msgid "" "%s: '%s'. Failed to open existing file for writing. Do you have write " @@ -3033,7 +3097,7 @@ msgid "" "have it open?" msgstr "" -#: fwrite.c:680 +#: fwrite.c:683 #, c-format msgid "" "%s: '%s'. Unable to create new file for writing (it does not exist already). " @@ -3041,61 +3105,65 @@ msgid "" "the path exist?" msgstr "" -#: fwrite.c:688 +#: fwrite.c:691 #, c-format msgid "Writing bom (%s), yaml (%d characters) and column names (%s) ... " msgstr "" -#: fwrite.c:701 +#: fwrite.c:704 #, c-format msgid "Unable to allocate %d MiB for header: %s" msgstr "" -#: fwrite.c:729 fwrite.c:789 +#: fwrite.c:732 fwrite.c:793 msgid "Can't allocate gzip stream structure" msgstr "" -#: fwrite.c:735 +#: fwrite.c:738 #, c-format msgid "Unable to allocate %d MiB for zbuffer: %s" msgstr "" -#: fwrite.c:750 +#: fwrite.c:753 #, c-format msgid "Compress gzip error: %d" msgstr "" -#: fwrite.c:751 fwrite.c:759 fwrite.c:953 +#: fwrite.c:754 fwrite.c:763 fwrite.c:957 #, c-format msgid "%s: '%s'" msgstr "" -#: fwrite.c:756 +#: fwrite.c:760 #, c-format msgid "done in %.3fs\n" msgstr "" -#: fwrite.c:758 +#: fwrite.c:762 msgid "No data rows present (nrow==0)\n" msgstr "" -#: fwrite.c:776 +#: fwrite.c:780 #, c-format msgid "" "Writing %lld rows in %d batches of %d rows (each buffer size %dMB, " "showProgress=%d, nth=%d)\n" msgstr "" -#: fwrite.c:961 +#: fwrite.c:965 #, c-format -msgid "zlib v%s deflate() returned error %d with z_stream.msg '%s'. %s\n" +msgid "" +"zlib %s (zlib.h %s) deflate() returned error %d with z_stream->msg==\"%s\" " +"Z_FINISH=%d Z_BLOCK=%d. %s" msgstr "" -#: fwrite.c:962 -msgid "Please include the full output above in your data.table bug report." +#: fwrite.c:967 +msgid "" +"Please include the full output above and below this message in your data." +"table bug report." msgstr "" -#: fwrite.c:963 +#: fwrite.c:968 msgid "" "Please retry fwrite() with verbose=TRUE and include the full output with " "your data.table bug report." diff --git a/src/fread.c b/src/fread.c index d329c5a19b..1b11fcdf31 100644 --- a/src/fread.c +++ b/src/fread.c @@ -102,6 +102,10 @@ typedef struct FieldParseContext { // Forward declarations static void Field(FieldParseContext *ctx); +// note -- because ASSERT is doing literal char array concatenation, it is +// not possible to do translation of its messages without refactoring -- +// essentially that would come down to creating f() g() in the code after +// macro expansion, which is not valid. These are internal errors, so just concede. #define ASSERT(cond, msg, ...) \ if (!(cond)) STOP("Internal error in line %d of fread.c, please report on data.table GitHub: " msg, __LINE__, __VA_ARGS__) // # nocov @@ -1495,7 +1499,7 @@ int freadMain(freadMainArgs _args) { const char *prevLineStart=ch, *lineStart=ch; int lastncol = countfields(&ch); if (lastncol<0) continue; // invalid file with this sep and quote rule, skip - ASSERT(lastncol>0, "Internal error: first non-empty row should always be at least one field; %c %d", sep, quoteRule); // # nocov + ASSERT(lastncol>0, "first non-empty row should always be at least one field; %c %d", sep, quoteRule); // # nocov const char *thisBlockStart=lineStart; const char *thisBlockPrevStart = NULL; int thisBlockLines=1, thisRow=0; @@ -1597,7 +1601,7 @@ int freadMain(freadMainArgs _args) { if (fileSize%4096==0) { const char *msg = _("This file is very unusual: it's one single column, ends with 2 or more end-of-line (representing several NA at the end), and is a multiple of 4096, too."); if (verbose) DTPRINT(_(" Copying file in RAM. %s\n"), msg); - ASSERT(mmp_copy==NULL, "Internal error: mmp has already been copied due to abrupt non-eol ending, so it does not end with 2 or more eol.", 1/*dummy arg for macro*/); // #nocov + ASSERT(mmp_copy==NULL, "mmp has already been copied due to abrupt non-eol ending, so it does not end with 2 or more eol.", 1/*dummy arg for macro*/); // #nocov copyFile(fileSize, msg, verbose); pos = sof + (pos-(const char *)mmp); firstJumpEnd = sof + (firstJumpEnd-(const char *)mmp); @@ -1689,7 +1693,7 @@ int freadMain(freadMainArgs _args) { if ( (thisNcol1 && !fill) || (!eol(&ch) && ch!=eof) ) { if (verbose) DTPRINT(_(" A line with too-%s fields (%d/%d) was found on line %d of sample jump %d. %s\n"), - thisNcol0 ? "Most likely this jump landed awkwardly so type bumps here will be skipped." : ""); + thisNcol0 ? _("Most likely this jump landed awkwardly so type bumps here will be skipped.") : ""); bumped = false; if (jump==0) lastRowEnd=eof; // to prevent the end from being tested; e.g. a short file with blank line within first 100 like test 976 break; @@ -1746,7 +1750,7 @@ int freadMain(freadMainArgs _args) { if (ttncol) { if (fill) STOP(_("Internal error: fill=true but there is a previous row which should already have been filled.")); // # nocov DTWARN(_("Detected %d column names but the data has %d columns. Filling rows automatically. Set fill=TRUE explicitly to avoid this warning.\n"), tt, ncol); @@ -1773,7 +1777,7 @@ int freadMain(freadMainArgs _args) { } if (verbose) { if (sampleLines==0) { - DTPRINT(_(" 'header' determined to be %s because there are%s number fields in the first and only row\n"), args.header?"true":"false", args.header?" no":""); + DTPRINT(_(" 'header' determined to be %s because there are%s number fields in the first and only row\n"), args.header?_("true"):_("false"), args.header?_(" no"):""); } else { if (args.header) DTPRINT(_(" 'header' determined to be true because all columns are type string and a better guess is not possible\n")); @@ -2004,7 +2008,7 @@ int freadMain(freadMainArgs _args) { nth = omp_get_num_threads(); if (me!=0) { // # nocov start - snprintf(internalErr, internalErrSize, "Internal error: Master thread is not thread 0 but thread %d.\n", me); + snprintf(internalErr, internalErrSize, _("Internal error: Master thread is not thread 0 but thread %d.\n"), me); stopTeam = true; // # nocov end } @@ -2261,7 +2265,7 @@ int freadMain(freadMainArgs _args) { } else if (headPos!=thisJumpStart) { // # nocov start - snprintf(internalErr, internalErrSize, "Internal error: invalid head position. jump=%d, headPos=%p, thisJumpStart=%p, sof=%p", jump, (void*)headPos, (void*)thisJumpStart, (void*)sof); + snprintf(internalErr, internalErrSize, _("Internal error: invalid head position. jump=%d, headPos=%p, thisJumpStart=%p, sof=%p"), jump, (void*)headPos, (void*)thisJumpStart, (void*)sof); stopTeam = true; // # nocov end } diff --git a/src/po.h b/src/po.h index 8392f6b375..37e8435fd6 100644 --- a/src/po.h +++ b/src/po.h @@ -1,6 +1,6 @@ #ifdef ENABLE_NLS #include -#define _(String) dgettext ("data.table", String) +#define _(String) dgettext("data.table", String) #else #define _(String) (String) #endif From fe501d797018ef674df5e1af1a134f20c370102e Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Mon, 18 Nov 2019 10:42:49 +0800 Subject: [PATCH 41/78] re-run update_pkg_po --- inst/po/en@quot/LC_MESSAGES/data.table.mo | Bin 137480 -> 137592 bytes inst/po/zh_CN/LC_MESSAGES/R-data.table.mo | Bin 23693 -> 27988 bytes inst/po/zh_CN/LC_MESSAGES/data.table.mo | Bin 30302 -> 35979 bytes po/data.table.pot | 56 +++--- po/zh_CN.po | 214 +++++++++++----------- 5 files changed, 137 insertions(+), 133 deletions(-) diff --git a/inst/po/en@quot/LC_MESSAGES/data.table.mo b/inst/po/en@quot/LC_MESSAGES/data.table.mo index f51de64b1b3a74fb66aa7dd2ec3ca167eaccb951..e469bb5aef5552ee56809c593d3981165c4dfae4 100644 GIT binary patch delta 9284 zcma*sd6F(U1j>`Ss$ zQVA_;DrC!6$dVA>NWbUn^S=N5{jTeGT`rGv?)9Aad7pFcnVG#g;_l{%jj@q_Z|7Xz z$%~7fckWH$6t0X89&E=Fz4^i zWnuO!&Mm>CSPI8nb*?SGjLCQ$%VNoE&UMBlEQIs1FTRb@=&oC&i~AHxQ?G$~aA#B~ zFXLP2|KZ&0Snh@$-;0Z>cmLD5SMVC@x@kAF81&OZB8|p>H@9{Ehh9z-AP+x><@Bu80x3CiCxlb>#2I~Hn zn1*9;DxStiaUkQ`m-oB*6q<10D(ZocJ_s6wdhqL51h--|9zuok0#?9$|5}4^ScZ zt}F+7b3jQm88xpLpps_;sz=AL3Fgk{xlY&?75ZhEjK2m}%I}3&z~MNE;}fwF9!GUF zx_~u&94gXFeF_Torr^LyEJOWPa6F3TZ720)Ou&0s72_i9zMjZbcQaARHnE`H{|+jW zpP@qi7wWz;h0G3t{uBzAII$MhkXIk}+z1vQB}-XknxkHjf{NT6R0P&ye>{sCiYBG4gCC%-&q6#r;v) zI|B#e1zdnFV!ZJ7d=w{9PbllLc(JWw3}!254T#0}sJBF|`PXn5mMCu>nvUw|^771o zwRj^3s$mwk#q6;*pF5$Z*~@qskKsjJQ^9($u%a!c+p#^ze?kpWY$aO(TVqq|FQbz1 zd(`yJUDXuG0@&_{)SeP9;q`FF99=6^yxTkDfi zWBml`hM9q@QQPV_K|P|rZ7vC@9%f(~W}3#W zlEnPqOQ9_V?Na$0doHKys0VeyC>)MjNTy&CoFr${}6@A9ME*}QAxN4yW$p{j=7q8E+5XtH*hho!FrDoLOh4c_9@Lg zHyTf(lD9*1Yp9Q9sjmv^2T?KI-`!R2WX-d(_w@w(%Svs4fkaR8O?E3y)$e z>i1AN(5#(3a0F^CUxymw?@&W?2YX^ndu#YaY(sq&DkpBDhRiR}!3w=mYxH}8`8(Qz zF)r{7YV137@?3U&5%rn=3U0>Fk+sWB=xoXLP8WOeJ{-&WKk;)+>1y}IcMEsKcl{|S zIcA_jyBihq8>o-ZgvV`2Qc(MNCTcAAq85~MsN~Gk-G*cYhL5ABbDkcyZp7k`)Vtt% ztlU#W$NW1&A&vw2ds)ltqC(sqC*UO1!g33>>pj-nb5G#MsGe2nV|&1IRPOA=c)W&M zfQt9Ej*MF$3@z0|+t%I0~Wm9Y=oP#;Yl_M$4|5KbeIm~lUjxoQme+!xf_ z;tVbcJIkjPdEVnT$mB@GVqQ-b4*i|8bUdn@}s^ zB@8Fy)3yM$Mm@)$NZ}C*JFp=BipqhzSO^DXc&-7CMTKr1Y8$?REwIdZTbPESuG@ec z@G@#!UOK@doI24OxCdhy(#p?x`bCHD+D~FSaNsQJMAQ_s{e#|6vNs(tOW(;os2=!KTzd zLG>`(Ec+U6gBr87sQvsbYT8zN-s%$qzd+6NsM)qKbwceG8*n$q&9NN%Rcii^nCrQ@ zcm=gNjDNuk|LSEW_Mv_rHO9&F%mt_(oy9g->qXN?HS8cNSBkx4+iwrl>=+-^-$0H1 zC+Mq(?q%CHTcVQX!@x^8lzQ>`wjKMZWXwY4NX`Yecch_`ZU-ty^1Wg|H*`WROq);* zJ%L&`DlN2*?pw(GSC4OUKo2he9~+A9s1UBhZg>gRqohUlu{s4cOMXE`F#1)yFBA2m zKTr`%Tx{3PLv{3XY=-%k*uvI%3CY!j1KT*DS#SsYVr-_}I1SZnq{z*=kh98|7sMy>UyQP)SWvj%rZ<;d%(+&PK5 zK4QIfq&6zzDOj8LyImCYrE>!niMS2+pusqT`WjS{Ms2i~cgLrxzku3Sy-ha#MxbWR zZq#$`qLQxqX1lK+YKeXYwHJJi{yGZxDQH@(*lRp4~sE7?1EjW74HEm^u2dl zPrk%U)V*D{7yOQz&(XWBfdd1VVPlRTMdePhJ+_Gr#ANE}sD^Jvg6*O|V*W3q@a4zB zeBK+(XH>(Epn6dDQ|tM7)GqlJ#_2(Ur?3R|h<&!?#^Pw|%}|@uHXN(^XI}UZ58F}a zLp7z3`uGGEuXo z`~h}DIywW3Q;$3p-hQ1QPa%>6pP=ULcc^W$_*d4Wfq01eWK@>7`r5MlIaG*0LoLzy zzOfe$LPhR(JcYHt<+o?NIO?$HR#PwY9Sx>_0LyFspZVUtVsm8K?v)TY2{msIU~P0i zSm^3t2db+ul?UCyH>nT!$;Q|_;)VZY(-e{>w_SWA-Vw2^HCIFiN zMJ4MN)O9CO_eWn~{%gPPMWHM%M@_4bQOTI|S6jIfu_^W8s3CbDHTGvwYkHO6EGNce zb?P6Wmgb8XgC#Fo@-{*(JWrz{`p!k>e>{bcI1q)GQ7!!!wZg?+vTwQ-sEAa)Y(vr$ zn^50|T9EFb*7|b4+bA76>$evz+X_CSk5cV|E?73U$F~cL_KgNR>JS` zVf-6QV}Yyu%?1-t^=fz?JEC%;)-~IVdZ3ozU4gey5lgskN&Ym(P~YcM&?a&oHSJ3O zVIK}dQ6XG~%Kj6md0Xg)C1C=pN3Bsk9gT|Q^QbZ2f*Skln8RZw{L_-V^i6xtXw*>o zFHlfu_h19Oit2ggTQ;_xa60wnsGNwoZ41!js8DW1J?JMafDwP$UQrbFoLLxy>rvN# z8+aR;#=a|Y$3p)EY5|&w>gm@QP9oHFEP29yn2dj6GtK|Hf7=Q;8B;j%BI?GQI2dc+vz9MGh592@sDBLV-hEs1i=mF! z!;f$%CSdu0EbBX?&QC?hzqMFJ^MBm~d%#iDSl>l`FjW25va}Cs+PoCF2QN{-f_mUj zq~s46@4Sy`U|s<>{#N)35|?59(Q1l6vl3q41biL?vk|=D}qciz|`M#(jnA$R9zyXoPPU zBu3Z;15r234C<>uIO^+AJuH{cBGMSOcBf)^p+YtIdmMy!a3J=|9}54;W+!%| z-mX9>{L8C1QAu9vA-m6?K|u{zh410FsN~Ct426H8@HVPP1qxbE<4|MR5VgV$z_z#q zlkhxhnw2jU3jfI_4KGqpdN>qL)=E)!e^>0R`JX{SJ@^upwO6qz)+}sEn1SlSI-G@} zB9=^ZP$A!dW$|m&EV+(K($Ymk;h%=

kpt>O*H2DxzOub?ujzC}@mJ6tj@l#b(q8 zqZ+mnb^a^Vbi0T{Fe-Xs@tS{n*B9ombuLsTwB^rQPcd)Y!ol^%dRMmmSnuWRp=#N- z3~N-w^FmuPlP2lpmLg4yXBHmx)XG;3BuhReTeeQn%sNL9( delta 9188 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 diff --git a/inst/po/zh_CN/LC_MESSAGES/R-data.table.mo b/inst/po/zh_CN/LC_MESSAGES/R-data.table.mo index c4d04c7eec8de00f8fb2799118eac03eab7a3693..cac642ab1887f315ee66c69698853200e40cba11 100644 GIT binary patch delta 7571 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 delta 3286 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 Z_l`+c_LW6grb_IW&@G`?q@nEX{{yV3YAXN$ delta 3390 zcmX}u3shBA8o=@ITv4w^fQqjKy$lZlABcz{AP-Fu2OR?+X$S%VlHg?kQ}J=}iD*7% zj?_Y$DaWa)Y3WkWl&dUTK8jY3Gm}|rtH7+KHDi<2TFq+4T=W0#zPZ=>`0ahT=bU}M z{q1w_t`1lCEz8$EFsNNS@mn|^|A&)Ae3BR{vX%p-n2J|17em8D3h-g%ko+F?#3T4Neu_)* z&;XHDco*ZaX`o0gcH&%g4-#p_MOcpKu?okBi!9~-(oUz81K*=wuxPNzJ9q@QSX_LF z$Pcp0m>zqrZ! zFVTygcoLIvQKZO3Y{d+G9d)8V;8pkDYCZo_YIJFXffvK8;3UVoFvpK`f? znju#d`JX|@OGlUB70kn=UodN2jjWNJz`x-wY{rw(9K*?^<173(?!+sxtT$G$4tj(4 zu?@3En~A@REo3I1!XP>FQUdwkPv=~Mh)!g2qPg+2n9sNeyD?#mNFPpg^VkO&hmIo{ zAH!-qO<{EC=Sag(cos>LoKB{Gum}Hu$)r>7cPU^^iq90y-4t`XO8=(9B5|;B;(3vMuNE8h(x>LC#GUiNb$kI0io`l7mqghUKWAYxL2fzN79BL;8j=M04tWTPgwF&42d zl#?9ADEt`p0q!8llo)QJ4_b^fbpP+8)5?L5P(M&YB{FGw3YXy})HO_{5cI^^_#SRV zeUkhFdMZKsUNw3`Z;%zc>z_SX23?h@E5oigXf#~#CBZ6*jivR+l*Q}$MJEzxq$rV z(J5TWTMQ2%s~{suhgyM?@kP9iJ-7=0@rd~jn7P<2Meq`lT^zrRby)Fe;01&ojI$_= zRJ?*`$xH}O@c`qCCFK7wov%yGmqRD%U?<64WRjA$Or$p_?7@FA-e1OB3tP%5C`_yn z8P5MlKPK`#^09#9=v+aTTl&de^dZ&~ zK?JMfUuN)sHLKLJOyvHup3qe4R?!wutRpH23f=!>V?6%cw$P!l?={^a+WHam{XLO^ zm_ZC6G^@H~(}_ajAwn~$&6m%g0z!*KTMjXXm`RXnSw?83-bb)W?zP4Av=Fn2a6*f< zlDMB(P5j*SeKCZfe*NpNsVA}iM#<>&n|0cR8wf2zZIcMCY;9=<|2G?T<^KVyhg$Rx z&1LZKAni^i<`S($F`h2#?-hi>ntwJ=|;C==CLb2aYVj9Yg{_dH8>B zh2cU%+fE{x7^MT6zC+k){%^oKe3;PI+YoqcYRo*pIl31ji2j5YqPAT`E>TOw5!&Vu z(L}Hg0xcGo5V~`c0>?ryFVJ@fOu-oho5BBcJ+hh3W+IX(B_1PE32npd%Fr06D|B0s zvm(65?HrBlw(N7G^6hm|9_R5W+vQ}(B)XhaaYrn>J${Fskr-#s81s>HXxw0z6FH&E za!w|<_I3U;rL~v+(^R)pKJ}>OWMxNL_RG;p&Y_%o%gLVhVUW|1_nKuN&p+=RnSH~u zPZ!*tI58zXb<&s#Y5fbz8k@$=Zzx;YSXX zvYJ}^%Q=Ug59Y23a;l3qxSfLHitxruUC!Z^Of#$gtG-U_8mpIca2-=@+>mKGT^n~;&ia;_y&cc?x2@mSHQU#AY;&G% L`>$nR*mdgvE9&RV diff --git a/po/data.table.pot b/po/data.table.pot index 6691a43dd2..752552b903 100644 --- a/po/data.table.pot +++ b/po/data.table.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.7\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-11-05 09:55+0800\n" +"POT-Creation-Date: 2019-11-15 19:06+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -2858,7 +2858,7 @@ msgstr "" msgid "%lld " msgstr "" -#: fsort.c:246 fwrite.c:690 fwrite.c:947 +#: fsort.c:246 fwrite.c:693 fwrite.c:951 msgid "\n" msgstr "" @@ -2877,31 +2877,31 @@ msgstr "" msgid "%d: %.3f (%4.1f%%)\n" msgstr "" -#: fwrite.c:601 +#: fwrite.c:603 #, c-format msgid "buffMB=%d outside [1,1024]" msgstr "" -#: fwrite.c:608 +#: fwrite.c:610 #, c-format msgid "" "eol must be 1 or more bytes (usually either \\n or \\r\\n) but is length %d" msgstr "" -#: fwrite.c:611 +#: fwrite.c:613 msgid "Column writers: " msgstr "" -#: fwrite.c:613 fwrite.c:615 fwrite.c:617 +#: fwrite.c:615 fwrite.c:617 fwrite.c:619 #, c-format msgid "%d " msgstr "" -#: fwrite.c:616 +#: fwrite.c:618 msgid "... " msgstr "" -#: fwrite.c:619 +#: fwrite.c:621 #, c-format msgid "" "\n" @@ -2909,17 +2909,17 @@ msgid "" "eolLen=%d\n" msgstr "" -#: fwrite.c:652 +#: fwrite.c:654 #, c-format msgid "Internal error: type %d has no max length method implemented" msgstr "" -#: fwrite.c:659 +#: fwrite.c:662 #, c-format msgid "maxLineLen=%zd. Found in %.3fs\n" msgstr "" -#: fwrite.c:679 +#: fwrite.c:682 #, c-format msgid "" "%s: '%s'. Failed to open existing file for writing. Do you have write " @@ -2927,7 +2927,7 @@ msgid "" "have it open?" msgstr "" -#: fwrite.c:680 +#: fwrite.c:683 #, c-format msgid "" "%s: '%s'. Unable to create new file for writing (it does not exist already). " @@ -2935,61 +2935,65 @@ msgid "" "the path exist?" msgstr "" -#: fwrite.c:688 +#: fwrite.c:691 #, c-format msgid "Writing bom (%s), yaml (%d characters) and column names (%s) ... " msgstr "" -#: fwrite.c:701 +#: fwrite.c:704 #, c-format msgid "Unable to allocate %d MiB for header: %s" msgstr "" -#: fwrite.c:729 fwrite.c:789 +#: fwrite.c:732 fwrite.c:793 msgid "Can't allocate gzip stream structure" msgstr "" -#: fwrite.c:735 +#: fwrite.c:738 #, c-format msgid "Unable to allocate %d MiB for zbuffer: %s" msgstr "" -#: fwrite.c:750 +#: fwrite.c:753 #, c-format msgid "Compress gzip error: %d" msgstr "" -#: fwrite.c:751 fwrite.c:759 fwrite.c:953 +#: fwrite.c:754 fwrite.c:763 fwrite.c:957 #, c-format msgid "%s: '%s'" msgstr "" -#: fwrite.c:756 +#: fwrite.c:760 #, c-format msgid "done in %.3fs\n" msgstr "" -#: fwrite.c:758 +#: fwrite.c:762 msgid "No data rows present (nrow==0)\n" msgstr "" -#: fwrite.c:776 +#: fwrite.c:780 #, c-format msgid "" "Writing %lld rows in %d batches of %d rows (each buffer size %dMB, " "showProgress=%d, nth=%d)\n" msgstr "" -#: fwrite.c:961 +#: fwrite.c:965 #, c-format -msgid "zlib v%s deflate() returned error %d with z_stream.msg '%s'. %s\n" +msgid "" +"zlib %s (zlib.h %s) deflate() returned error %d with z_stream->msg==\"%s\" " +"Z_FINISH=%d Z_BLOCK=%d. %s" msgstr "" -#: fwrite.c:962 -msgid "Please include the full output above in your data.table bug report." +#: fwrite.c:967 +msgid "" +"Please include the full output above and below this message in your data." +"table bug report." msgstr "" -#: fwrite.c:963 +#: fwrite.c:968 msgid "" "Please retry fwrite() with verbose=TRUE and include the full output with " "your data.table bug report." diff --git a/po/zh_CN.po b/po/zh_CN.po index 487c8ab167..9f58d066b4 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-10-22 21:04+0800\n" +"POT-Creation-Date: 2019-11-15 19:06+0800\n" "PO-Revision-Date: 2019-10-26 16:01+08\n" "Last-Translator: Guangzheng Li \n" "Language-Team: Mandarin\n" @@ -788,8 +788,7 @@ msgstr "内部错误:xoArg不是整型向量" #, c-format msgid "" "Internal error in bmerge_r for '%s' column. Unrecognized value op[col]=%d" -msgstr "" -"bmerge_r 针对 '%s' 列的操作出现内部错误。无法识别值 op[col]=%d" +msgstr "bmerge_r 针对 '%s' 列的操作出现内部错误。无法识别值 op[col]=%d" #: bmerge.c:303 #, c-format @@ -825,8 +824,8 @@ msgid "" "Internal error: CHARSXP '%s' has a negative truelength (%d). Please file an " "issue on the data.table tracker." msgstr "" -"内部错误:CHARSXP '%s' 的 truelength (%d) 为负。" -"请将此问题汇报给 data.table 问题追踪器。" +"内部错误:CHARSXP '%s' 的 truelength (%d) 为负。请将此问题汇报给 data.table " +"问题追踪器。" #: chmatch.c:60 #, c-format @@ -834,7 +833,8 @@ msgid "" "Failed to allocate %lld bytes working memory in chmatchdup: length(table)=%d " "length(unique(table))=%d" msgstr "" -"无法为 chmatchdup: length(table)=%2$d length(unique(table))=%3$d 分配 %1$lld 字节的内存空间" +"无法为 chmatchdup: length(table)=%2$d length(unique(table))=%3$d 分配 %1$lld " +"字节的内存空间" #: cj.c:89 #, c-format @@ -848,8 +848,7 @@ msgstr "内部错误:coalesce.c 中 R 层面的输入为 list(...)" #: coalesce.c:7 msgid "" "Internal error in coalesce.c: argument 'inplaceArg' must be TRUE or FALSE" -msgstr "" -"内部错误:coalesce.c 中 'inplaceArg' 参数必须为 TRUE 或 FALSE" +msgstr "内部错误:coalesce.c 中 'inplaceArg' 参数必须为 TRUE 或 FALSE" #: coalesce.c:16 msgid "" @@ -863,26 +862,21 @@ msgstr "" msgid "" "Item 1 is a factor but item %d is not a factor. When factors are involved, " "all items must be factor." -msgstr "" -"元素1是一个因子,但元素 %d 不是。当涉及因子时," -"所有元素必须都为因子。" +msgstr "元素1是一个因子,但元素 %d 不是。当涉及因子时,所有元素必须都为因子。" #: coalesce.c:34 #, c-format msgid "" "Item %d is a factor but its levels are not identical to the first item's " "levels." -msgstr "" -"元素 %d 是一个因子,但因子水平与第一个元素因子水平不同。" +msgstr "元素 %d 是一个因子,但因子水平与第一个元素因子水平不同。" #: coalesce.c:38 #, c-format msgid "" "Item %d is a factor but item 1 is not a factor. When factors are involved, " "all items must be factor." -msgstr "" -"元素 %d 是一个因子,但元素1不是。当涉及因子时," -"所有元素必须都为因子。" +msgstr "元素 %d 是一个因子,但元素1不是。当涉及因子时,所有元素必须都为因子。" #: coalesce.c:41 #, c-format @@ -890,7 +884,8 @@ msgid "" "Item %d is type %s but the first item is type %s. Please coerce before " "coalescing." msgstr "" -"元素 %d 类型为 %s,但是第一个元素类型为 %s。请在 coalescing 之前强制转换类型。" +"元素 %d 类型为 %s,但是第一个元素类型为 %s。请在 coalescing 之前强制转换类" +"型。" #: coalesce.c:43 #, c-format @@ -961,8 +956,8 @@ msgid "" "row.names of .SD isn't integer length 2 with NA as first item; i.e., ." "set_row_names(). [%s %d %d]" msgstr "" -".SD 的行名不是长度为2且首个元素为 NA 的整型;例如:" -"set_row_names(). [%s %d %d]" +".SD 的行名不是长度为2且首个元素为 NA 的整型;例如:set_row_names(). [%s %d " +"%d]" #: dogroups.c:69 msgid "length(names)!=length(SD)" @@ -973,8 +968,7 @@ msgstr "length(names)!=length(SD)" msgid "" "Internal error: size-0 type %d in .SD column %d should have been caught " "earlier" -msgstr "" -"内部错误:未能提前捕获到 .SD 中第 %2$d 列类型 %1$d size-0 的问题" +msgstr "内部错误:未能提前捕获到 .SD 中第 %2$d 列类型 %1$d size-0 的问题" #: dogroups.c:83 msgid "length(xknames)!=length(xSD)" @@ -984,8 +978,7 @@ msgstr "length(xknames)!=length(xSD)" #, c-format msgid "" "Internal error: type %d in .xSD column %d should have been caught by now" -msgstr "" -"内部错误:当前未能捕获到 .xSD 中第 %2$d 列类型 %1$d 的问题" +msgstr "内部错误:当前未能捕获到 .xSD 中第 %2$d 列类型 %1$d 的问题" #: dogroups.c:91 #, c-format @@ -1011,16 +1004,16 @@ msgid "" "All items in j=list(...) should be atomic vectors or lists. If you are " "trying something like j=list(.SD,newcol=mean(colA)) then use := by group " "instead (much quicker), or cbind or merge afterwards." -msgstr "j=list(...) 中的所有项目必须是原子向量或列表" -"如果您试图进行 j=list(.SD,newcol=mean(colA)) 之类的操作" -"请使用 := by group 代替(更快速),或事后使用 cbind()、merge()" +msgstr "" +"j=list(...) 中的所有项目必须是原子向量或列表如果您试图进行 j=list(.SD," +"newcol=mean(colA)) 之类的操作请使用 := by group 代替(更快速),或事后使用 " +"cbind()、merge()" #: dogroups.c:290 msgid "" "RHS of := is NULL during grouped assignment, but it's not possible to delete " "parts of a column." -msgstr "用 := 分组时 RHS 为 NULL" -"但無法刪除部分列" +msgstr "用 := 分组时 RHS 为 NULL但無法刪除部分列" #: dogroups.c:294 #, c-format @@ -1029,18 +1022,19 @@ msgid "" "RHS length must either be 1 (single values are ok) or match the LHS length " "exactly. If you wish to 'recycle' the RHS please use rep() explicitly to " "make this intent clear to readers of your code." -msgstr "提供 %1$d 个项分配给第 '%4$s' 列中的第 %2$d 组,组的大小为 %3$d " -"RHS 的长度必须是 1(可以是单个值) 或完全符合 LHS 的长度" -"如果您想回收(recycle) RHS,请使用 rep() 向你的代码读者明确表达你的意图" - +msgstr "" +"提供 %1$d 个项分配给第 '%4$s' 列中的第 %2$d 组,组的大小为 %3$d RHS 的长度必" +"须是 1(可以是单个值) 或完全符合 LHS 的长度如果您想回收(recycle) RHS,请使用 " +"rep() 向你的代码读者明确表达你的意图" #: dogroups.c:305 msgid "" "Internal error: Trying to add new column by reference but tl is full; " "setalloccol should have run first at R level before getting to this point in " "dogroups" -msgstr "内部错误 : 尝试依照引用增加新列但 tl 已满" -"在进入 dogroups 之前,setalloccol 应该先在 R 运行" +msgstr "" +"内部错误 : 尝试依照引用增加新列但 tl 已满在进入 dogroups 之前,setalloccol 应" +"该先在 R 运行" #: dogroups.c:320 #, c-format @@ -1060,18 +1054,19 @@ msgid "" "groups (and those are replaced with NA of appropriate type and recycled) but " "not for the first. Please use a typed empty vector instead, such as " "integer() or numeric()." -msgstr "j 的结果中第 %d 列在第 1 组中为 NULL" -"我们依赖第 1 组的列类型去决定剩余组的类型(需要一致性)" -"空 (NULL) 列可以出现在后面的组(适当的以 NA 取代并回收)但不能是第 1 组" -"请输入空向量代替,例如 integer() 或 numeric()" +msgstr "" +"j 的结果中第 %d 列在第 1 组中为 NULL我们依赖第 1 组的列类型去决定剩余组的类型" +"(需要一致性)空 (NULL) 列可以出现在后面的组(适当的以 NA 取代并回收)但不能是第 " +"1 组请输入空向量代替,例如 integer() 或 numeric()" #: dogroups.c:364 msgid "" "j appears to be a named vector. The same names will likely be created over " "and over again for each group and slow things down. Try and pass a named " "list (which data.table optimizes) or an unnamed list() instead.\n" -msgstr "j 是名称向量,这可能使相同的名称不停重复创建导致速度变慢" -"请尝试输入名称列表(较适合 data.table)或是非名称列表代替\n" +msgstr "" +"j 是名称向量,这可能使相同的名称不停重复创建导致速度变慢请尝试输入名称列表(较" +"适合 data.table)或是非名称列表代替\n" #: dogroups.c:366 #, c-format @@ -1079,9 +1074,9 @@ msgid "" "Column %d of j is a named vector (each item down the rows is named, " "somehow). Please remove those names for efficiency (to save creating them " "over and over for each group). They are ignored anyway.\n" -msgstr "j 的第 %d 列是名称向量(整行的项都是名称)" -"为了效率请移除这些名称(避免在每组重复创建这些名称)" -"总之他们被忽略了\n" +msgstr "" +"j 的第 %d 列是名称向量(整行的项都是名称)为了效率请移除这些名称(避免在每组重复" +"创建这些名称)总之他们被忽略了\n" #: dogroups.c:374 msgid "" @@ -1090,10 +1085,10 @@ msgid "" "detected, removed and put back after grouping has completed, for efficiency. " "Using j=transform(), for example, prevents that speedup (consider changing " "to :=). This message may be upgraded to warning in future.\n" -msgstr "j 的结果是名称列表,在每组不停重复创建相同的名称很没效率" -"为了提高效率,当 j=list(...) 时侦测到的所有名称会被移出,待分组完成后再放回来" -"可以使用 j=transform() 避免这种加速" -"此讯息可能会在未来升级为警告\n" +msgstr "" +"j 的结果是名称列表,在每组不停重复创建相同的名称很没效率为了提高效率,当 " +"j=list(...) 时侦测到的所有名称会被移出,待分组完成后再放回来可以使用 " +"j=transform() 避免这种加速此讯息可能会在未来升级为警告\n" #: dogroups.c:386 #, c-format @@ -1112,17 +1107,18 @@ msgid "" "%d NAs to match the longest column in this result. Later groups may have a " "similar problem but only the first is reported to save filling the warning " "buffer." -msgstr "j 的结果第 %d 项在第 %d 组中为零长度(zero length)" -"将使用 %d 个 NA 填入以符合结果中最长列的长度" -"后面的分组也有相同问题,但只回报第一组以避免过多警告" +msgstr "" +"j 的结果第 %d 项在第 %d 组中为零长度(zero length)将使用 %d 个 NA 填入以符合结" +"果中最长列的长度后面的分组也有相同问题,但只回报第一组以避免过多警告" #: dogroups.c:427 #, c-format msgid "" "Column %d of result for group %d is type '%s' but expecting type '%s'. " "Column types must be consistent for each group." -msgstr "结果的第 %d 列在第 %d 组中是 '%s' 类别而非预期的 '%s' 类别" -"所有组的列类别必须一致" +msgstr "" +"结果的第 %d 列在第 %d 组中是 '%s' 类别而非预期的 '%s' 类别所有组的列类别必须" +"一致" #: dogroups.c:429 #, c-format @@ -1131,9 +1127,10 @@ msgid "" "length must either be 1 (single values are ok) or match the LHS length " "exactly. If you wish to 'recycle' the RHS please use rep() explicitly to " "make this intent clear to readers of your code." -msgstr "提供 %1$d 项给第 %3$d 組的第 %2$d 列,这组有 %4$d 行" -"RHS長度必須為 1 (可以使用單個值) 或與 LHS 長度完全匹配" -"如果您想回收(recycle) RHS,请使用 rep() 向你的代码读者明确表达你的意图" +msgstr "" +"提供 %1$d 项给第 %3$d 組的第 %2$d 列,这组有 %4$d 行RHS長度必須為 1 (可以使用" +"單個值) 或與 LHS 長度完全匹配如果您想回收(recycle) RHS,请使用 rep() 向你的代" +"码读者明确表达你的意图" #: dogroups.c:444 #, c-format @@ -1150,7 +1147,8 @@ msgstr "内部错误 : 区块 0 [%d] 与区块 1 [%d] 都运行了" msgid "" "\n" " %s took %.3fs for %d groups\n" -msgstr "\n" +msgstr "" +"\n" " %s 花了 %.3fs 在 %d 个组\n" #: dogroups.c:458 @@ -2704,16 +2702,15 @@ msgstr "" msgid "" "%s: NA (or other non-finite) value(s) are present in input, skip non-NA " "attempt and run with extra care for NAs\n" -msgstr "" -"%s: NA (或其他非有限长度值) 出现在输入中, 跳过非NA的" -"输入并当心NA值\n" +msgstr "%s: NA (或其他非有限长度值) 出现在输入中, 跳过非NA的输入并当心NA值\n" #: froll.c:141 froll.c:339 #, c-format msgid "" "%s: running in parallel for input length %llu, window %d, hasna %d, narm %d\n" msgstr "" -"%s: 正在并行运行, 输入长度 (input length) %llu, 窗口 (window) %d, hasna %d, narm %d\n" +"%s: 正在并行运行, 输入长度 (input length) %llu, 窗口 (window) %d, hasna %d, " +"narm %d\n" #: froll.c:179 froll.c:372 frolladaptive.c:157 frolladaptive.c:336 #, c-format @@ -2721,8 +2718,8 @@ msgid "" "%s: NA (or other non-finite) value(s) are present in input, na.rm was FALSE " "so in 'exact' implementation NAs were handled already, no need to re-run\n" msgstr "" -"%s: NA (或其他非有限长度值) 出现在输入中, na.rm 为 FALSE " -"因此在'exact'实现中, NA值已经被处理, 不需要重新运行\n" +"%s: NA (或其他非有限长度值) 出现在输入中, na.rm 为 FALSE 因此在'exact'实现" +"中, NA值已经被处理, 不需要重新运行\n" #: froll.c:428 #, c-format @@ -2735,8 +2732,8 @@ msgid "" "%s: results from provided FUN are not of type double, coercion from integer " "or logical will be applied on each iteration\n" msgstr "" -"%s: 所提供的函数 (FUN) 的结果不是双精度 (double) 类型, " -"对整数或逻辑值的类型转换会在每个循环中执行\n" +"%s: 所提供的函数 (FUN) 的结果不是双精度 (double) 类型, 对整数或逻辑值的类型转" +"换会在每个循环中执行\n" #: froll.c:438 #, c-format @@ -2754,7 +2751,9 @@ msgstr "x 必须是数值或者逻辑类型" #: frollR.c:26 msgid "x must be list, data.frame or data.table of numeric or logical types" -msgstr "x 必须是列表 (list), 或由数值或者逻辑类型组成的数据框 (data.frame 或 data.table)" +msgstr "" +"x 必须是列表 (list), 或由数值或者逻辑类型组成的数据框 (data.frame 或 data." +"table)" #: frollR.c:47 frollR.c:264 msgid "n must be non 0 length" @@ -2794,23 +2793,22 @@ msgid "" "using hasNA FALSE and na.rm TRUE does not make sense, if you know there are " "NA values use hasNA TRUE, otherwise leave it as default NA" msgstr "" -"同时使用 hasNA FALSE 和 na.rm TRUE 没有意义, 如果明确有" -"NA值, 那就用 hasNA TRUE, 在其他情况可以让它保留默认值NA" +"同时使用 hasNA FALSE 和 na.rm TRUE 没有意义, 如果明确有NA值, 那就用 hasNA " +"TRUE, 在其他情况可以让它保留默认值NA" #: frollR.c:119 frollR.c:275 msgid "" "Internal error: invalid align argument in rolling function, should have been " "caught before. please report to data.table issue tracker." msgstr "" -"内部错误: 在 rolling 函数内无效的 align 参数, 理应在更早阶段排除" -"请向data.table issue tracker报告" +"内部错误: 在 rolling 函数内无效的 align 参数, 理应在更早阶段排除请向data." +"table issue tracker报告" #: frollR.c:122 msgid "" "using adaptive TRUE and align argument different than 'right' is not " "implemented" -msgstr "" -"同时使用 adaptive TRUE 和不是 'right' 的align参数还未能实现" +msgstr "同时使用 adaptive TRUE 和不是 'right' 的align参数还未能实现" #: frollR.c:126 frollR.c:297 types.c:64 #, c-format @@ -2824,24 +2822,22 @@ msgid "" "function on list having variable length of elements call it for each field " "separately" msgstr "" -"adaptive rolling 函数只能处理长度同为" -"的 'x', 比如 data.table 或数据框; 如果想在含有不同长度元素的列表上执行 rolling" -"函数, 需要分开单独地在每一项上面执行." +"adaptive rolling 函数只能处理长度同为的 'x', 比如 data.table 或数据框; 如果想" +"在含有不同长度元素的列表上执行 rolling函数, 需要分开单独地在每一项上面执行." #: frollR.c:137 msgid "" "length of integer vector(s) provided as list to 'n' argument must be equal " "to number of observations provided in 'x'" -msgstr "" -"'n' 列表中整数向量的长度必须等于 'x' 中的观察数量" +msgstr "'n' 列表中整数向量的长度必须等于 'x' 中的观察数量" #: frollR.c:151 msgid "" "Internal error: invalid fun argument in rolling function, should have been " "caught before. please report to data.table issue tracker." msgstr "" -"内部错误: 在 rolling 函数中无效的 fun 参数, 理应在更早阶段排除" -"请向data.table issue tracker报告" +"内部错误: 在 rolling 函数中无效的 fun 参数, 理应在更早阶段排除请向data.table " +"issue tracker报告" #: frollR.c:155 frollR.c:279 nafill.c:136 shift.c:21 msgid "fill must be a vector of length 1" @@ -2856,8 +2852,8 @@ msgid "" "Internal error: invalid algo argument in rolling function, should have been " "caught before. please report to data.table issue tracker." msgstr "" -"内部错误: 在 rolling 函数内无效的 algo 参数, 理应在更早阶段排除" -"请向data.table issue tracker报告" +"内部错误: 在 rolling 函数内无效的 algo 参数, 理应在更早阶段排除请向data." +"table issue tracker报告" #: frollR.c:190 #, c-format @@ -2877,8 +2873,8 @@ msgid "" "%s: %d column(s) and %d window(s), not entering parallel execution here " "because algo='exact' will compute results in parallel\n" msgstr "" -"%s: %d column(s) 和 %d window(s), 未能进入并行执行," -"因为 algo='exact' 会并行计算结果\n" +"%s: %d column(s) 和 %d window(s), 未能进入并行执行,因为 algo='exact' 会并行计" +"算结果\n" #: frollR.c:219 #, c-format @@ -2964,7 +2960,7 @@ msgstr "" msgid "%lld " msgstr "" -#: fsort.c:246 fwrite.c:690 fwrite.c:947 +#: fsort.c:246 fwrite.c:693 fwrite.c:951 msgid "\n" msgstr "" @@ -2983,31 +2979,31 @@ msgstr "" msgid "%d: %.3f (%4.1f%%)\n" msgstr "" -#: fwrite.c:601 +#: fwrite.c:603 #, c-format msgid "buffMB=%d outside [1,1024]" msgstr "" -#: fwrite.c:608 +#: fwrite.c:610 #, c-format msgid "" "eol must be 1 or more bytes (usually either \\n or \\r\\n) but is length %d" msgstr "" -#: fwrite.c:611 +#: fwrite.c:613 msgid "Column writers: " msgstr "" -#: fwrite.c:613 fwrite.c:615 fwrite.c:617 +#: fwrite.c:615 fwrite.c:617 fwrite.c:619 #, c-format msgid "%d " msgstr "" -#: fwrite.c:616 +#: fwrite.c:618 msgid "... " msgstr "" -#: fwrite.c:619 +#: fwrite.c:621 #, c-format msgid "" "\n" @@ -3015,17 +3011,17 @@ msgid "" "eolLen=%d\n" msgstr "" -#: fwrite.c:652 +#: fwrite.c:654 #, c-format msgid "Internal error: type %d has no max length method implemented" msgstr "" -#: fwrite.c:659 +#: fwrite.c:662 #, c-format msgid "maxLineLen=%zd. Found in %.3fs\n" msgstr "" -#: fwrite.c:679 +#: fwrite.c:682 #, c-format msgid "" "%s: '%s'. Failed to open existing file for writing. Do you have write " @@ -3033,7 +3029,7 @@ msgid "" "have it open?" msgstr "" -#: fwrite.c:680 +#: fwrite.c:683 #, c-format msgid "" "%s: '%s'. Unable to create new file for writing (it does not exist already). " @@ -3041,61 +3037,65 @@ msgid "" "the path exist?" msgstr "" -#: fwrite.c:688 +#: fwrite.c:691 #, c-format msgid "Writing bom (%s), yaml (%d characters) and column names (%s) ... " msgstr "" -#: fwrite.c:701 +#: fwrite.c:704 #, c-format msgid "Unable to allocate %d MiB for header: %s" msgstr "" -#: fwrite.c:729 fwrite.c:789 +#: fwrite.c:732 fwrite.c:793 msgid "Can't allocate gzip stream structure" msgstr "" -#: fwrite.c:735 +#: fwrite.c:738 #, c-format msgid "Unable to allocate %d MiB for zbuffer: %s" msgstr "" -#: fwrite.c:750 +#: fwrite.c:753 #, c-format msgid "Compress gzip error: %d" msgstr "" -#: fwrite.c:751 fwrite.c:759 fwrite.c:953 +#: fwrite.c:754 fwrite.c:763 fwrite.c:957 #, c-format msgid "%s: '%s'" msgstr "" -#: fwrite.c:756 +#: fwrite.c:760 #, c-format msgid "done in %.3fs\n" msgstr "" -#: fwrite.c:758 +#: fwrite.c:762 msgid "No data rows present (nrow==0)\n" msgstr "" -#: fwrite.c:776 +#: fwrite.c:780 #, c-format msgid "" "Writing %lld rows in %d batches of %d rows (each buffer size %dMB, " "showProgress=%d, nth=%d)\n" msgstr "" -#: fwrite.c:961 +#: fwrite.c:965 #, c-format -msgid "zlib v%s deflate() returned error %d with z_stream.msg '%s'. %s\n" +msgid "" +"zlib %s (zlib.h %s) deflate() returned error %d with z_stream->msg==\"%s\" " +"Z_FINISH=%d Z_BLOCK=%d. %s" msgstr "" -#: fwrite.c:962 -msgid "Please include the full output above in your data.table bug report." +#: fwrite.c:967 +msgid "" +"Please include the full output above and below this message in your data." +"table bug report." msgstr "" -#: fwrite.c:963 +#: fwrite.c:968 msgid "" "Please retry fwrite() with verbose=TRUE and include the full output with " "your data.table bug report." From 7272820d80caca3de82dad16ec3ab045d95220ca Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Mon, 18 Nov 2019 10:59:36 +0800 Subject: [PATCH 42/78] update binaries --- inst/po/en@quot/LC_MESSAGES/data.table.mo | Bin 137592 -> 138720 bytes inst/po/zh_CN/LC_MESSAGES/R-data.table.mo | Bin 27988 -> 32367 bytes inst/po/zh_CN/LC_MESSAGES/data.table.mo | Bin 35979 -> 42725 bytes 3 files changed, 0 insertions(+), 0 deletions(-) diff --git a/inst/po/en@quot/LC_MESSAGES/data.table.mo b/inst/po/en@quot/LC_MESSAGES/data.table.mo index e469bb5aef5552ee56809c593d3981165c4dfae4..f641958a82e09983ffe29527f7eb5639bd89184f 100644 GIT binary patch delta 18744 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 Vdi-@tZ@2%u$M2^~rn9T3{y(70Qqcea delta 17724 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 XO{7bViWjpddDxveF>BI>6_5LWzHAO) diff --git a/inst/po/zh_CN/LC_MESSAGES/R-data.table.mo b/inst/po/zh_CN/LC_MESSAGES/R-data.table.mo index cac642ab1887f315ee66c69698853200e40cba11..b18c1767327c1c802a16461bdcad5bc1c1da1597 100644 GIT binary patch delta 8133 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 Aod5s; delta 3950 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 P-rlaBmPO~4&F=d@5EdTv delta 4194 zcmYk;dr(y88OQMl5Ud(R1+REHsDOwdpdcz2Q6r$Js2CL?utr2G7hzE%8kdNQ_n<2n z12tZvF^w1WG@6*UnI^GXYfL7wZ6+p8Ycmd*ILSNuY zEbA!}hhO0c?AFUT7AMj!#8?rR?58r81DA0PKEgz-3l_=1lbC})AbmarWEH-T5g6Y`q#PIGEWC(L4CyPfg#KjMD_uuaCfs3XyW`T!w=L`rZvHe&}`d_RM`=hCu-VNIleSxaRm zp22K<>^0jmL*+(&f=^M0G$qVffqLTya0dDh6=}mcI2s>d0uCBxu9J&Jw0B?zevhtE zRAPCI3Ah-wgI3&xmvA%A3>Vpm*KrIkir`6bCu+y1a4i0WdZVKwMV`fW)G57%x&{jP z$iz*Uj-QNR{AW`Mj1u8yr4X~Q0Uh`!)C)(CG!~=YXbbAxe}+@>Fi0*_-k_K6o6hmE)u-$xzN zXBp=PACaTT@{kDbdM{?6j>KP4pLie(BO43wCLVK93E+#Hl0*)1U1O+_!@IOkqF$(VhFQfIa5L?0IU+1% z*@G-(`2cx%d4SqM!b~2>hY>`JcI_TW@u>MxK}C5T~iEu&IEr5QiM0?f-5iNZ6e zb9e*wNgtuE{%}^Djz}Rg%CZ}q@NcO9U&J0`-N`;I#=oGhfh6{zj?@g)@0ZSF{I5`H z;{ex|WqD?<&ZC|%YQBh##mK`;$a8#2+g>kY5$(7I{K3LzC(yo(dY<1Bvj`nHiuOL# zjz322p!W;rm79w7w9n&QrJ@Z3_O9|ER`H{2Ci^I15BCd>p6Z zXI^`kGMu#YaVVZf)|GsYx~9Sy&LrG|_1XI1ION7xXPB zkaZ)yR+u>}LA}B2xC+zD&ENfZ@Cxm<73O=>nBeWSPauaRnepcoIff%Kc%^xhreUJ) z|1YV0rEw~jA;X#aEXa4M7#W31)UNVc$ zi8J&(OvMM7rRT3VYo!+Z(mstAUcyMci#gbXPKRS5x~@{$KxGupZZPleb*LR4M!nF- zn1NqoPaOQRxnLaXjW0wU+G-5Pc8u^5`4D4i-`il`C;eDZx)vs*_E+D?_#dS5CI@ux zvo@N!DaR1n0h`PVCKQWlJ5U$Thu9zQp$?_rX0t6V45OWndZP|ZK_{kR2lmDvZ~*!@ z@#OjitI6zw$*4n9=d~U6#{PiX(H(pNeYc4G1D9baW-)KNMwa4#@Bl_&%Qk-h;csyl zc4lSji>(zC@rsMeGAgpebX1ByG+RgyGKV}VIwDWXAu8IjmIBg;3?kV?%QNIxo|^f& zuGK=KJ3^-_gJ|jbHXrMVoBV>j)AN%xj5^ERvoYVo z$>a?(kGxENO?V>Dn1QEE(H>mU)Y)*-;5lYK-t^W_qs{_j~}tz-hx5=2-w(oGu_mY(eM)Xb*P z>QQfd4=yCL$u#e=Os~38wB(U0qVKke`uqn-Dp^hD5-ss0ot)DKWjzTX#pEnmL57ee zL>D~oK+i(gT@^>3l)c`{YuMRa|BcrL=$h|sY((7vyz@M-bv?Y9oY4wJw{IX>t__Or zA}wX4-BS~J6?qeQ%JW_=JWRS0n`l`{Vo0pc{{|}Kh?Y?X>4l5QL82q{3dtu^$v~o| zjdUU1NeyWx^+Zb|$srE1m1rp*lRm7}t>etAh{sg+Y^rIeS} z$B!RBro5zTQhd@Fx3l1+ySQ(f?Z0GApj}hVos>F<*fF(V`P$C9X+d^w(@%c(>Fq%Q z?r(SB7+C6DRbk!PdGNcv$8TTQY>lXN)KsK~JEN@F*jW2VceS7U=)P0-&#&I^Vjn&- G#qa-zdO`L8 From ef49f8365128f59939286311ab1e7b833139b5bc Mon Sep 17 00:00:00 2001 From: caiquanyou <48861819+caiquanyou@users.noreply.github.com> Date: Tue, 19 Nov 2019 13:53:23 +0800 Subject: [PATCH 43/78] Translation caiquanyou (#4039) * finish translation * Update R-zh_CN.po * Update zh_CN.po * update mo files --- inst/po/zh_CN/LC_MESSAGES/R-data.table.mo | Bin 32367 -> 35255 bytes inst/po/zh_CN/LC_MESSAGES/data.table.mo | Bin 42725 -> 48828 bytes po/R-zh_CN.po | 55 ++++++------ po/zh_CN.po | 104 ++++++++++++---------- 4 files changed, 87 insertions(+), 72 deletions(-) diff --git a/inst/po/zh_CN/LC_MESSAGES/R-data.table.mo b/inst/po/zh_CN/LC_MESSAGES/R-data.table.mo index b18c1767327c1c802a16461bdcad5bc1c1da1597..78da1e2ab781cc3e63442918dfe2d88e264cff5b 100644 GIT binary patch delta 7264 zcmZ|S349b)p1|>!gF}#8Zo~>#4nlLu6%3J)Lk-aRRv@}^O^ea@9%q6T~+V+ zzt`d0zek*|hzwls9$l$8ZV&^AA?=hJ8=+KUXF03X&F)Gi;NS289MVH6xn#$Yn2Q5( zKMuo7Sb$+n#1;1_MNw_VLHH8Nd)~kpr2^_x3U6~FqNh@iu|SHDo`#Dy+2Yct-9 zv3LaU#dmNbevOadFiv(sKhi$65r^U?t6q)msn=jKp2o@e1Fpo;442%u0|)SaRY74c z)}g%UCzJ+^zt0@16_`T(*Qj9wPQq(A7<+M2dYXj4!R2@y2Xk^PzJqZX#rVf#B3{77 z7+|#3Jv>F`Gy&zolQ0W?I0dhv%xV82O3lU!lGJf$n%K=Muf1s&LiyUQ>e+u}`>2mFF^eH`7ADXhXZ zcogM(F=VccKpgT_wH&3P#mGN(A|asEbP9i>Mjokw!|5eXz?X0VN>9JX(Kv!`(P_03 z+v7&0?Wzpr{*yQtuOhRk`i(HBW)jK^pF|nSO~|0Cp92(TQy643AC!a1)ORA6)cZI} z(x0`~4Mx)n>Dfa_C)I59pdV%RG@>+M+!&>3v)X`Z9loJaka1yKWW1KlrsbAq>#{Xf=zynx|OK@J2+2dpAr2ZpDpo6v61~X9Zb72(L zBW+P7&tjl%*I`aEbZw-oeJKZ??z{!@85{)~6wGKQlX)3F_PeaPH+ z`e0A$Q*Z_@#QShBl0K>dxkY_pT^}(`sc7nc49Hv*QjnHaV?R8N()0IGUi2A8Vl&E| ze~C|F97{(Uwh3iK$}tNs;{c4OHG^>mO2e~pHuj!Lo?+Td#(yJ)vz+L}2H!x*fkw>5 zPLG@Q_1Ka6kpP8w3PIHH6O@hPXM7XyooD{)eU8!)+kEOYAQPjh2N#$*at3LW>akEM zH>O#>hccoMF5=e|523uz#`y2Xz)}i%6uv_rX0o=r;K$ezd?*bQecGnd;klpJ`nWo=1yI;OUxykG}1&FUCV#P4wg zCO&CyG*93*>H(|XdAYf4$D)kj3LJ*(@CqKpddwzs$D_7Fril4pLP6t1A)dr4lmC__A$yQkqi?1Q^d!&)rBcQFMY&N6#cf^vU7-i4o`hF_rE-_dF2 z$PnyHeKpGUtxm>2osUlm`C~l9$TA)*Qi)Q11H*WAJZC4h2+y#MKxP8GGmTpkxtdfMSxHXAI!0TKM_;e6^Hi_HhGz=6~=Q5vubCtw+N z!z;K2|A>7tZIk&QnWs@YQiU=2I}Aw6zo4)Zdp>9W-!Bg(yN{8|vVQ-J!|;2Yi2XL3 ze^@L)$(;>IJB{Cd^4CaYFm}`5puA%&@h9RT;v<5UDgV1N*T1xO93cnqHh#gREW@^4 z3LLU-7~eE&*3OfVS6 zAEIDvzoHy6cXnb2@dB}zs30VH<(N*SN`YezAtSd_D%P>vat;0q@d*(p^DhURnenGp z49eWzAmrFe++&o?9Z-s=2=*D{=+7q$#Mncw;s=C0law)zf8(>37-CixtJ2sBrCLNd z-{wQ+`a>c}L=&$PGl_bljF97T;tHV=w~k8`8m!7^mWMFID(|A|=@mBeFc!F>ceShuDYQB&Tb0jK&Lid$Dc1R2mXq)Z(b=jm#3fc)NGJZCxK8{h5k<)HhRlq|EUPE+ zE+U(lLSz!9#Jj{)ViqCC3gSNE_rzM_eWC{;hb;Ei$LmyNXX!;eMtn@XLd+*#BQEp) z+sA`e={?KIc$9dDm_{rn?kD89U}9_%zoopdi8xFAk&t6H@iK8YahTXc$nh32(I}aJ ztyo3bn+F;jx12ald`j#io+o+}?Soglj)+>K6=XTnvow2du5S1GG@qWYd+jdG@66GC zn$xYNdt7-rZq03{ZqsJx`TUwcOV=`-UP=W{mrG02we&2zJ5zVqw1ru^SJ&)bJ$SQ6 zNt^yIN37=bX)fKJ>CaNJ9;@yz%+-VI`W8m^d&uMVIUTxJ^R05`uC%B5bhkfw;rvC@ zZNcyRkB=DX)pI=gy5{j}UR|1CyxWnN>vE>s{d$})UbDL$n%`Tf*)#18rTM?xz_xhuv?t`R!>gJ#N~3-cC3`}f_?CYRYT8^Zb z@dB48lPPxb#fq$c14n7IGPGN#WYUa0a5`>fr;&$}9}X?n=5)l`f{w{;qB|H#o2X@a z{1sU#_szeZf3b>2XEP1T<5eD+eX9%fi5xW(MrPjb@_Dq|LuJfz>#?^5x23d+NH$(W zQ`~+A#dqiXKIQckm=~SybdT4or~9q7Fqu)$rK&qBwm(=qOZQKkVdYYKx}NLjA-8jt zF_UtJSJIzxyEW+g>O98B%p1)vYn9XrJ}|X8GC-2rjQ1wTrppS5)za;5$smT7YYuri zE6C|5dDHZCyCk(N>U_H^PuFhU!@?yCBr)ks5ga^i zTx9z!dgb%v=oPtRdPlR?lPcED=o8GDQ6D`qwC`xBu@#EzgyO4wi+UJJ+}oD5 zmNx9TKzq!_v>Z4aI(v#T4+y@#@U5sZGh%5e?+9(*5U#9?T@y<=ytyd6Z*!>l*`|~G zLzjwM4m5Ma5Pqd7{L&%X6e>UbPq(l{E{00>B>uzhMfaLtKHgMW z8mg&c$g&$RTx!}W!@)2yM&arMjSYvIHlGcZ9GCX&IvYB_-TY2sbM4{gBhPebwSE1# zyfEsn=8F}f;zK+)=uLemqIc3i*~0EmYls}$dXmEXUJY-)7%Hi=b|j3} zADtQ}<9MoAX0fugWlwp$IiEbjT(vZ>@j_YCg___;dY{OFx6d=Gp%c5QT3JwD)^wyU z_+ObnwC(kI(Qfkh^P)W(H{YJ_V57TT#I(@4oz1m}LfiL;w(Jk@sc9*yBAuEK9Hl|Z zyhazpl_$xE#BhC0(}uH>8OBtHPCVaKeVA(S3(vtwr|eti+#*n;bMse2I(}JbmPSG7mF`kmhELQB! zA32%CP}!P%nvGLzUsj?OpK5H_C5hN-shERm4pqem`F|yG%0lJGnGExsYCcdZNo=i+ zvhaylnhw-VZrNAVeE6A)D+LX6eX>=NJ)z=fnrqJ7*`>&-JKK~sQ01lJ{in@mN#~6L zZoIIM4w+dL46J!OGQdg-ZN1dA_hfk6Av5>x>4z5F8G zv$iKmh4O7p4JYUhODnW}cc^rind=M}liPIgTua05=9+`yqX$TIGsB0r+Km4HUKDy#8$6YUIyEtT((~DE54ms#@EIm#gx8;1FdAEPMR`>Fo&-=bJd-l8E%bqysb>4aG z@cbO=w?;V5kO-0;AQI#d*;HLyMb6h0c^)rd2Yie*uw95qOU%GXEX5|c4yWQVY>p|R zB4IcJV{j_!bv9zOh(``mI7h<|n1ws}^g=rD0G-rl*B0rG^YBHyfCbnf+&CZmQNN25 zuv;D97t4N}NBt76!0ful+qj7O%z7emTwem~i!`L66}H8`n28H87%w9Ik?YtP|7F*M z8gMT4U`)fhn2G~&7_LG+?>Fp&_fWsT3%4JK(=dYT%T@}V@Ho2hDKV@xN1~#O($v6rZ<0hPoaj_yS7b!<(SB~OHJdZ3hNp8&e>xms0 zSAAm=2I1eZ6tAOxFo%_;cbtcM;SH!A{2X<0-ohSOn?|Nrh9aXaCAb+^px$6BPHv3_ zNFQWVyvMBClQigwH&Exw!FcMb?u$AFg{T)=jyiOQP^T!7#$GrO({Ky6z$@6w$;~tq zVIxRK8Urv3i*OL?Vn6Mnpcky0U>02-22!_B=kN$}EvY~q%Ezc*6vW<}iM4PJda)DM zX(hrnWf1CA&Ozlw#*aIXACERKyn$KRIYnd)u0#huLVtXMoaYhO3nDHW`k=0bEDXo_copBlAS`Rk zFyb=Q_s^ns{2Cs>T1;>eev7p*wY@P5nN`U{J}S$wDxSu%y8kOEuzsXtDhp6Qhr*bGPSqn!#}Im{BRLqEEh$AEsU4{A-$FlZ&3q+teMzBE zAIG46@mzG`5_}Dpqjumn>K)(5e2nXCI~~ywt?7?q(OnqAt2LWLd~))Dt&gFZ>3Bxj^k6roAz@#SW8!wlh(OdOPa2 zyMq4Op`K=>qnLOGUD7ic{~8o#(V#=Q0;BN&#^d)m0Ua-z`Xtmlc^kEZJJ5|6FcN>m zFENB(_Qp#p7mlIgM}0h7O{cUN`{KDi9vUe$%rq{+k<=gILd@k;dZC-R9>ZP|nT+LF zj4@d}$8jw-!jOJ!K}<#lNitEl_bLp*E9kGmfhqxG9U^&L(kGKq<+Vy2Gn~|}w3GEg56+XaE(R2J279fSmtRNlwa&+T4 z+>duq?`Yc~^J8)ZbxyxUof`ka>}{NaTvGyHHQP8F*$}b{bp+325n|cYx;~LbC9z!+?`_A0)P)wovI_e_cfc|(I zbwti$U;GXOu@Ngd7Cp@=a82olf5B6zJufTueYf1k2nVC_hS_ejrkOAJ4s{Xz9rXf_ z@db3TfI=`88)7DEhsI(wZb02_hmjHUNF{|fTp*os*F`sNhIvx$# z`MB?ojxSI@^ET1rRl?W#reZH9kq^mYa)jtnn+ztOkZQXB!zt7yACRHsG~s4_(*eGt z0k8B!-ZE7kb>CLi4sRqq?RIvk?}sb~b$IotLUc{6CtS|AfFqDiBg?gcZ7NI2%jDS+ zXBP%yCh0|3kb)nSm6KuJYAnHepTq zejIciq!2xFNoy@|=wn(J&l;_86cAm_daN+WHd}VI%p&^eu4A{=!Wv{g=|-C9fE=YT znj9d}L=U&`)x4a9_em$aE!p-2erlIDpf0*X(w{_;Iiv?!OH#>xvVd$NpOda+kxqy{ zApY!FWxp}eR#$juGMBUcKS-@rCjH~#BK<( z_1Yf7nnWKk>Eu1Ko&525&2FfVZAc>VBUz*+d3NY7$|e>$W;c5F*@gBPNxrn}$};i_ znLyqlTZkUJ$U0w%Cmq(a%hPc)*OAO@uWM^ zV>~G(14tjTk}M(5jv@-}h>J|M8yDh1a$M^%O;gQPq1MU7YYywHq=YKo zDjgnLIcZm&)~?PjKkvcrkyQ%ZV~V9{k`>p(-{CDx-))WPS?RQ@_D*tIBQwA8vqtxy z;=gb3O3oOv*kR>lpK)0^xn+J(^b diff --git a/inst/po/zh_CN/LC_MESSAGES/data.table.mo b/inst/po/zh_CN/LC_MESSAGES/data.table.mo index e3acdcb010d6e59a353ea4b3178ed1daee0c4cc9..25a3c637ea2c185628eb267f165b3dd2c48d1edc 100644 GIT binary patch delta 10866 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 P=f|p+oa3ZmSN{J4Y}wXH delta 5195 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 UN1CrrZ*eh?o=LJ94T`dV2U$A`Z2$lO diff --git a/po/R-zh_CN.po b/po/R-zh_CN.po index effddafecd..c23e0221c2 100644 --- a/po/R-zh_CN.po +++ b/po/R-zh_CN.po @@ -866,89 +866,94 @@ msgid "NA in 'new' at positions" msgstr "" msgid "Some duplicates exist in 'old':" -msgstr "" +msgstr "在'old' 中存在重复名称" msgid "'old' is type" -msgstr "" +msgstr "'old' 的类型是" msgid "but should be integer, double or character" -msgstr "" +msgstr "应该为整型,浮点型或者字符型" msgid "'old' is length" -msgstr "" +msgstr "'old' 长度为" msgid "but 'new' is length" -msgstr "" +msgstr "‘new’ 的长度为" msgid "NA (or out of bounds) in 'old' at positions" -msgstr "" +msgstr "NA(或超出界限)出现在'old' 的位置" msgid "of 'old' is '" -msgstr "" +msgstr "是" msgid "" "' which appears several times in column names. Just the first will be " "changed. There are" -msgstr "" +msgstr "在列名中重复出现,仅第一个" +"会改动,如下:" msgid "other items in old that are also duplicated in column names." -msgstr "" +msgstr "old中的其他项在列名中出现重复" msgid "Items of 'old' not found in column names:" -msgstr "" +msgstr "在列名中未找到 'old' 有关项" msgid ". Consider skip_absent=TRUE." -msgstr "" +msgstr "尝试 skip_absent=TRUE" msgid "Internal error: length(i)!=length(new)" -msgstr "" +msgstr "内部错误:length(i)!=length(new)" msgid "x has some duplicated column name(s):" -msgstr "" +msgstr "x 有多个重复列名:" msgid ". Please remove or rename the duplicate(s) and try again." -msgstr "" +msgstr "请移除或者重命名重复项并重试" msgid "Input is" -msgstr "" +msgstr "输入为" msgid "but should be a plain list of items to be stacked" -msgstr "" +msgstr "应该叠加普通列表项" msgid "" "idcol must be a logical or character vector of length 1. If logical TRUE the " "id column will named '.id'." -msgstr "" +msgstr "idcol必须为逻辑型向量或长度为1的字符型向量.如果逻辑值为TRUE" +"id 列会命名为'.id'" msgid "use.names=NA invalid" -msgstr "" +msgstr "use.names=NA 无效赋值" msgid "" "use.names='check' cannot be used explicitly because the value 'check' is new " "in v1.12.2 and subject to change. It is just meant to convey default " "behavior. See ?rbindlist." -msgstr "" +msgstr "请勿直接使用use.names='check',因为值'check'为新增" +"在v1.12.2中后续有所变化,仅用表示默认模式" +"详见 ?rbindlist" msgid "" "Check that is.data.table(DT) == TRUE. Otherwise, := and `:=`(...) are " "defined for use in j, once only and in particular ways. See help(\":=\")." -msgstr "" +msgstr "检查是否is.data.table(DT) == TRUE,否则,:= and `:=`(...) 为" +"被界定在j使用,仅一次以特别的方式使用,详见help(\":=\")" msgid "" "setDF only accepts data.table, data.frame or list of equal length as input" -msgstr "" +msgstr "setDF仅允许data.table,data.frame或者同样长度的列表作为输入" msgid "rownames contains duplicates" -msgstr "" +msgstr "行名含有重复" msgid "rownames incorrect length; expected" -msgstr "" +msgstr "行名长度不正确;需要" msgid "names, got" -msgstr "" +msgstr "名字,用" msgid "All elements in argument 'x' to 'setDF' must be of same length" -msgstr "" +msgstr "'setDF'中的参数'x'的所有元素必须同等长度" msgid "Cannot find symbol" msgstr "无法找到符号" diff --git a/po/zh_CN.po b/po/zh_CN.po index 584c3c8d42..57872f5113 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -1570,7 +1570,7 @@ msgstr "" #: forder.c:714 msgid "Internal error: column not supported, not caught earlier" -msgstr "" +msgstr "内部错误:列有不支持类型,未被前置识别" #: forder.c:722 #, c-format @@ -1581,16 +1581,16 @@ msgstr "" #, c-format msgid "" "Failed to allocate TMP or UGRP or they weren't cache line aligned: nth=%d" -msgstr "" +msgstr "分配TMP或UGRP失败或缓存行不一致: nth=%d" #: forder.c:733 msgid "Could not allocate (very tiny) group size thread buffers" -msgstr "" +msgstr "无法分配(极小)块组大小的线程缓冲区" #: forder.c:794 #, c-format msgid "Timing block %2d%s = %8.3f %8d\n" -msgstr "" +msgstr "定时块 %2d%s = %8.3f %8d\n" #: forder.c:797 #, c-format @@ -1600,12 +1600,12 @@ msgstr "" #: forder.c:1053 #, c-format msgid "Failed to allocate parallel counts. my_n=%d, nBatch=%d" -msgstr "" +msgstr "分配并行计算失败,my_n=%d, nBatch=%d" #: forder.c:1162 #, c-format msgid "Unable to allocate TMP for my_n=%d items in parallel batch counting" -msgstr "" +msgstr "无法分配TMP给并行批处理计算的 my_n=%d 项" #: forder.c:1270 msgid "" @@ -1613,144 +1613,152 @@ msgid "" "needed on a list/data.table, you'll need the order anyway if not sorted, so " "use if (length(o<-forder(...))) for efficiency in one step, or equivalent at " "C level" -msgstr "" +msgstr "is.sorted (R层面)和 fsorted (C 层面)使用对象仅为向量。如果" +"需要用于list或data.table,需要对其进行排序" +"如果(length(o<-forder(...))),使用提高效率,或相当于在 " #: forder.c:1302 #, c-format msgid "type '%s' is not yet supported" -msgstr "" +msgstr "类型 '%s' 目前不支持" #: forder.c:1311 msgid "x must be either NULL or an integer vector" -msgstr "" +msgstr "x 必须为空值或整型向量" #: forder.c:1313 msgid "nrow must be integer vector length 1" -msgstr "" +msgstr "nrow 必须为长度为1的整型向量" #: forder.c:1315 #, c-format msgid "nrow==%d but must be >=0" -msgstr "" +msgstr "nrow==%d 但是必须 >=0" #: forder.c:1332 msgid "x must be type 'double'" -msgstr "" +msgstr "x 必须为浮点数类型" #: frank.c:11 #, c-format msgid "Internal error. Argument 'x' to Cdt_na is type '%s' not 'list'" -msgstr "" +msgstr "内部错误:参数 'x' 关于 Cdt_na 是 '%s' 类型而不是 'list' 类型" #: frank.c:12 #, c-format msgid "Internal error. Argument 'cols' to Cdt_na is type '%s' not 'integer'" -msgstr "" +msgstr "内部错误:参数 'cols' 关于 Cdt_na 是 '%s' 类型而不是 'integer' 类型" #: frank.c:16 frank.c:146 subset.c:263 #, c-format msgid "Item %d of 'cols' is %d which is outside 1-based range [1,ncol(x)=%d]" -msgstr "" +msgstr "'cols' 的 %d 项为 %d ,超出1的范围 [1,ncol(x)=%d]" #: frank.c:26 frank.c:155 #, c-format msgid "" "Column %d of input list x is length %d, inconsistent with first column of " "that item which is length %d." -msgstr "" +msgstr "输入列表x的列 %d 长度为 %d,不同于第一列的" +"该项长度为 %d" #: frank.c:65 frank.c:202 transpose.c:88 #, c-format msgid "Unsupported column type '%s'" -msgstr "" +msgstr "不支持的列类型 '%s'" #: frank.c:83 msgid "" "Internal error: invalid ties.method for frankv(), should have been caught " "before. please report to data.table issue tracker" -msgstr "" +msgstr "内部错误:对于 frankv()的无效值ties.method,应在" +"之前被捕获。请报告给 data.table issue tracker" #: frank.c:130 #, c-format msgid "Internal error: unknown ties value in frank: %d" -msgstr "" +msgstr "内部错误:frank中有未知的ties值 %d" #: frank.c:141 #, c-format msgid "Internal error. Argument 'x' to CanyNA is type '%s' not 'list'" -msgstr "" +msgstr "内部错误:参数 'x' 关于 CanyNA 是 '%s' 类型而不是'list'类型" #: frank.c:142 #, c-format msgid "Internal error. Argument 'cols' to CanyNA is type '%s' not 'integer'" -msgstr "" +msgstr "内部错误:参数 'cols' 关于 CanyNA 是 '%s' 类型而不是'integer'类型" #: fread.c:153 #, c-format msgid "System error %d unmapping view of file\n" -msgstr "" +msgstr "系统错误 %d 取消映射文件视图\n" #: fread.c:156 #, c-format msgid "System errno %d unmapping file: %s\n" -msgstr "" +msgstr "系统错误 %d 取消映射文件: %s\n" #: fread.c:216 #, c-format msgid "Internal error: NUMTYPE(%d) > nLetters(%d)" -msgstr "" +msgstr "内部错误:NUMTYPE(%d) > nLetters(%d)" #: fread.c:441 #, c-format msgid "Unable to allocate %s of contiguous virtual RAM. %s allocation." -msgstr "" +msgstr "无法分配 %s 的连续虚拟内存。 %s 已分配。" #: fread.c:446 #, c-format msgid "Avoidable %.3f seconds. %s time to copy.\n" -msgstr "" +msgstr "可避免的 %.3f 秒。 %s 复制用时\n" #: fread.c:447 #, c-format msgid " File copy in RAM took %.3f seconds.\n" -msgstr "" +msgstr "内存上的文件复制耗时 %.3f 秒\n" #: fread.c:1099 msgid "" "Previous fread() session was not cleaned up properly. Cleaned up ok at the " "beginning of this fread() call.\n" -msgstr "" +msgstr "之前的会话fread()未正确清理。在" +"当前 fread() 会话开始前清理好\n" #: fread.c:1102 msgid "[01] Check arguments\n" -msgstr "" +msgstr "[01] 参数检查\n" #: fread.c:1109 #, c-format msgid " Using %d threads (omp_get_max_threads()=%d, nth=%d)\n" -msgstr "" +msgstr "使用 %d 线程 (omp_get_max_threads()=%d, nth=%d)\n" #: fread.c:1117 msgid "" "Internal error: NAstrings is itself NULL. When empty it should be pointer to " "NULL." msgstr "" +"内部错误:NAstrings 自身为空值。当清空该项会指向" +"NULL空值" #: fread.c:1135 #, c-format msgid "freadMain: NAstring <<%s>> has whitespace at the beginning or end" -msgstr "" +msgstr "freadMain: NAstring <<%s>> 在开始或者结束处有空白" #: fread.c:1140 #, c-format msgid "" "freadMain: NAstring <<%s>> is recognized as type boolean, this is not " "permitted." -msgstr "" +msgstr "freadMain: NAstring <<%s>> 被识别为布尔型,这是不" +"允许" #: fread.c:1150 msgid " No NAstrings provided.\n" -msgstr "" +msgstr "未提供 NAstrings \n" #: fread.c:1152 msgid " NAstrings = [" @@ -1762,74 +1770,76 @@ msgstr "" #: fread.c:1157 msgid " One or more of the NAstrings looks like a number.\n" -msgstr "" +msgstr "一个或多个 NAstrings 类似数值\n" #: fread.c:1159 msgid " None of the NAstrings look like numbers.\n" -msgstr "" +msgstr "没有 NAstrings 为数值\n" #: fread.c:1161 #, c-format msgid " skip num lines = %llu\n" -msgstr "" +msgstr "跳过行数为 %llu\n" #: fread.c:1162 #, c-format msgid " skip to string = <<%s>>\n" -msgstr "" +msgstr "跳转至 string = <<%s>>\n" #: fread.c:1163 #, c-format msgid " show progress = %d\n" -msgstr "" +msgstr "显示进程 %d\n" #: fread.c:1164 #, c-format msgid " 0/1 column will be read as %s\n" -msgstr "" +msgstr " 0/1 列被读取为 %s\n" #: fread.c:1172 #, c-format msgid "sep == quote ('%c') is not allowed" -msgstr "" +msgstr "sep == quote ('%c') 不被允许" #: fread.c:1173 msgid "dec='' not allowed. Should be '.' or ','" -msgstr "" +msgstr "dec='' 不允许,应该为 '.' 或者 ','" #: fread.c:1174 #, c-format msgid "sep == dec ('%c') is not allowed" -msgstr "" +msgstr "sep == dec ('%c') 不允许" #: fread.c:1175 #, c-format msgid "quote == dec ('%c') is not allowed" -msgstr "" +msgstr "quote == dec ('%c') 不允许" #: fread.c:1192 msgid "[02] Opening the file\n" -msgstr "" +msgstr "[02] 打开文件\n" #: fread.c:1195 msgid "" " `input` argument is provided rather than a file name, interpreting as raw " "text to read\n" msgstr "" +"提供 `input` 参数而非文件名,理解为原始的" +"文本读取\n" #: fread.c:1199 msgid "Internal error: last byte of character input isn't \\0" -msgstr "" +msgstr "内部错误:字符输入的最后一个字节不是 \\0" #: fread.c:1202 #, c-format msgid " Opening file %s\n" -msgstr "" +msgstr "打开文件 %s\n" #: fread.c:1206 #, c-format msgid "file not found: %s" -msgstr "" +msgstr "文件未找到: %s" #: fread.c:1210 #, c-format From d722f811ab5d9f652db40679a9b4c61598f19d41 Mon Sep 17 00:00:00 2001 From: Yuanchen Xie Date: Tue, 19 Nov 2019 13:56:48 +0800 Subject: [PATCH 44/78] translation(partial) into zh_CN by Yuanchen Xie (#4010) * translation(partial) into zh_CN by Yuanchen Xie * Add new translation results, based on messages * update mo file * update transitions as renkun-ken's suggestions * update binary mo --- inst/po/zh_CN/LC_MESSAGES/R-data.table.mo | Bin 35255 -> 38850 bytes inst/po/zh_CN/LC_MESSAGES/data.table.mo | Bin 48828 -> 55561 bytes po/R-zh_CN.po | 56 +++++++------- po/zh_CN.po | 90 +++++++++++----------- 4 files changed, 75 insertions(+), 71 deletions(-) diff --git a/inst/po/zh_CN/LC_MESSAGES/R-data.table.mo b/inst/po/zh_CN/LC_MESSAGES/R-data.table.mo index 78da1e2ab781cc3e63442918dfe2d88e264cff5b..eb9d10699b78ad1baa793fddc9533a05c444a731 100644 GIT binary patch delta 8596 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 SC^F`i_j51h;EBo>k^cohZ+`9o delta 6177 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 0." -msgstr "" +msgstr "内部错误。最大值是 %d ,且必须 >= 0。" #: subset.c:149 #, c-format msgid "i[%d] is %d which is out of range [1,nrow=%d]" -msgstr "" +msgstr "i[%d] 是 %d ,超出 [1,nrow=%d] 的范围" #: subset.c:161 #, c-format msgid "" "Item %d of i is %d and item %d is %d. Cannot mix positives and negatives." -msgstr "" +msgstr "i 的第 %d 项是 %d ,第 %d 项是 %d 。正负不能混用。" #: subset.c:171 #, c-format msgid "Item %d of i is %d and item %d is NA. Cannot mix negatives and NA." -msgstr "" +msgstr "i 的第 %d 项是 %d ,第 %d 项是 NA 。负值和 NA 不能混用。" #: subset.c:207 #, c-format msgid "" "Item %d of i is %d but there are only %d rows. Ignoring this and %d more " "like it out of %d." -msgstr "" +msgstr "i 的第 %d 项是 %d ,但只有 %d 行。忽略这项以及其他相似的 %d 项(共 %d 项)。" #: subset.c:209 #, c-format msgid "" "Item %d of i is %d which removes that item but that has occurred before. " "Ignoring this dup and %d other dups." -msgstr "" +msgstr "i 的第 %d 项是 %d ,它删除了这项但此操作之前发生过。忽略该重复以及其他 %d 个重复。" #: subset.c:223 #, c-format msgid "Column %d is NULL; malformed data.table." -msgstr "" +msgstr "%d 列为空(NULL);data.table 格式错误。" #: subset.c:226 #, c-format msgid "Column %d ['%s'] is a data.frame or data.table; malformed data.table." -msgstr "" +msgstr "%d ['%s'] 列是 data.frame 或 data.table; data.table 格式错误。" #: subset.c:231 #, c-format msgid "" "Column %d ['%s'] is length %d but column 1 is length %d; malformed data." "table." -msgstr "" +msgstr "%d ['%s'] 长度为 %d ,而列 1 的长度为 %d ;data.table 格式错误。" #: subset.c:247 #, c-format msgid "Internal error. Argument 'x' to CsubsetDT is type '%s' not 'list'" -msgstr "" +msgstr "内部错误:CsubsetDT 的参数 'x' 是 '%s' 类型而非列表" #: subset.c:260 #, c-format msgid "Internal error. Argument 'cols' to Csubset is type '%s' not 'integer'" -msgstr "" +msgstr "内部错误:CsubsetDT 的参数 'cols' 是 '%s' 类型而非整数" #: subset.c:337 msgid "" "Internal error: NULL can not be subset. It is invalid for a data.table to " "contain a NULL column." -msgstr "" +msgstr "内部错误:空集(NULL)不能作为子集。data.table 包含空列是无效的。" #: subset.c:339 msgid "" "Internal error: CsubsetVector is internal-use-only but has received " "negatives, zeros or out-of-range" -msgstr "" +msgstr "内部错误:CsubsetVector 仅供内部使用,但收到了负数、零或其他超出范围的值" #: transpose.c:9 msgid "l must be a list." -msgstr "" +msgstr "l 必须是列表" #: transpose.c:13 msgid "ignore.empty should be logical TRUE/FALSE." -msgstr "" +msgstr "ignore.empty 应该是逻辑类型 TRUE 或 FALSE。" #: transpose.c:16 msgid "" "keep.names should be either NULL, or the name of the first column of the " "result in which to place the names of the input" -msgstr "" +msgstr "keep.names 应该是空(NULL),或者为放置输入名称的结果中第一列的列名" #: transpose.c:19 msgid "fill must be a length 1 vector, such as the default NA" -msgstr "" +msgstr "fill 必须是长度为 1 的向量,例如默认值 NA" #: transpose.c:28 #, c-format msgid "Item %d of list input is not an atomic vector" -msgstr "" +msgstr "列表输入的第 %d 项不是原子(atomic)向量" #: types.c:55 msgid "internal error: status, nx, nk must be integer" -msgstr "" +msgstr "内部错误:status, nx, nk 必须是整数" #: uniqlist.c:14 msgid "Internal error: uniqlist has not been passed a list of columns" -msgstr "" +msgstr "内部错误:uniqlist 尚未传递列" #: uniqlist.c:17 msgid "Internal error: uniqlist has been passed a non-integer order" -msgstr "" +msgstr "内部错误:uniqlist 已经传递非整数序列" #: uniqlist.c:18 msgid "Internal error: uniqlist has been passed a length-0 order" -msgstr "" +msgstr "内部错误:uniqlist 已经传递长度为 0 的序列" #: uniqlist.c:19 #, c-format msgid "Internal error: uniqlist has been passed length(order)==%d but nrow==%d" -msgstr "" +msgstr "内部错误:uniqlist 已经传递长度为 %d 的序列,而行数是 %d" #: uniqlist.c:96 uniqlist.c:127 uniqlist.c:208 uniqlist.c:245 uniqlist.c:318 #, c-format msgid "Type '%s' not supported" -msgstr "" +msgstr "类型 '%s' 不被支持" #: uniqlist.c:148 msgid "Input argument 'x' to 'uniqlengths' must be an integer vector" -msgstr "" +msgstr "输入到 'uniqlengths' 的参数 'x' 必须是整数向量" #: uniqlist.c:149 msgid "" "Input argument 'n' to 'uniqlengths' must be an integer vector of length 1" -msgstr "" +msgstr "输入到 'uniqlengths' 的参数 'n' 必须是长度为 1 的整数向量" #: uniqlist.c:167 msgid "cols must be an integer vector with length >= 1" From dd24dbbe74fc8cd3bb31974040f15c8a4f775c53 Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Wed, 20 Nov 2019 05:48:02 +0800 Subject: [PATCH 45/78] update vs recent master --- inst/po/en@quot/LC_MESSAGES/R-data.table.mo | Bin 88480 -> 88858 bytes inst/po/en@quot/LC_MESSAGES/data.table.mo | Bin 138720 -> 138720 bytes po/R-data.table.pot | 17 +- po/R-zh_CN.po | 319 ++++++++++---------- po/data.table.pot | 12 +- po/zh_CN.po | 72 +++-- 6 files changed, 226 insertions(+), 194 deletions(-) diff --git a/inst/po/en@quot/LC_MESSAGES/R-data.table.mo b/inst/po/en@quot/LC_MESSAGES/R-data.table.mo index 1a688c2ba6166b9c195e0d0a7f4b5594c1d1403a..feb481de4e3c031997e2f2778e60ea948099890b 100644 GIT binary patch delta 13007 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 delta 12670 zcmYk?2YgRg8^G~%GYE-@M2LvwA0q@ILk0H(OinRizYFvtlbP ztyQblsv1>$*NQ4FulM)dbM({ud5`b&oV(9C_uQNR+r``6m*=@VFZsI7Q!HsNN(EtK zU#0w9l^R)IYLz+?sZ?b=igEZ9-LXoPQWi#G62@R5?1$bs9IN4EtbjW)3@_mzbdOf5 zx>8OxTnFk4EXj)V7>rL)b|@C3R0&MLq1Y5>;9+c!ZE7f06*r?N{)VOT4*H>ctWssL z6qdz!lpF1Up`2e0B{)gNB5a1exy?$r3*~~YVmtgBYhufIrDy~-9VgKQ`!Jn6ot502 znu&7f`>_^2!ep#MB4#0tt=3^X&aXBSIIv)%Qg2};Y=ndGJ=|vur=6RV&&7Ut6GO3W zZKWn+F7CwFSQ>ZM(RcbYenkG*IF753{rpmBe+NMR4dgcb1+N>e|;1oTQ(Dia%^H2EA1#mz|HtJA5pzZ}q|p1uHIEJdD-Qs3U# z2R|gwMGLL^dQiFIEb?%a`aS4|d(i_AU@#s-IqqGQG2zxgDH=%yG@$)m2-;8~ciJ9l zZPgFE;CkGOUTI2g!u?2Zss41hw9tAijF(Va;tr0&ferNqJ;o8_`8XVN=vQC7i*muQ zoCMM|udy)(W$32sgB8hFpsfEM={9u>9axcp!njfmu^f)WP+W}+3v~p$qdNz6#Xfil zvrS%uepyHEOd#M%QrEE(1~j2Lv92)-{mJK{T=6>m5I5jnjBTpd=c5mKp=L@2Vj#*5 z#G;IW&ghNnP%eBo(wI*5lt2bcVsoV!7iy4k2Qmeyzp*z)v`~rxtmflTJcDv!nJtx~ zQB-%718+p>y4x6m4O{6J8G>>_c~})MV6;5{9&CxHX!qZjVL3HTlQ zV51It&~(5ahKPoo^DYezlW-$fn})z7%q)IY~s)LWhO1tp=}=m2!e0oM@7240<+ z-7p<#U9|+W@c~MUbb4D4!pSJxA2qts-nGe-u?UXBVK^1(UFFtQUubKLBkzRLvU9r9 z{>2FnQ?U#$qBP~mZo02lVP*0YC{6wx1F#PLQ5xH#>^Bf=q8~#(3Nx`hI?)3^!z;J} zW$eu4u4RxH?CI2xMO05-3{*VFFpTV_)L?9jBk=@E-(|e3FJL@2CjS_vrS70yU{Y^A z=*FQ8%FP&z|6nKv_R%+#g!ReabrO^$SdVgL-(fjSdQTsqE6R@RP%i8QR>r3&O&*e^ z?To49OHfArCCost_qiDtZUm)kC-vpchZl{`_#9rbRLn*<{0s}=S`5d{$p6%N{*k`S z=%?>|305J$jnXB>`_r5lfwEsL%K9!QpK9`LDBE4ZcJln+A)wV&>Hs~cK1XTFYv_mJ z1N8(_8$HOU;(VNoITj}wq|`L>CG=M*tTaTQAQk<|Gf=v&E5_j>lneX;Bjx%3o4|*P zDzv}cc@mDsdMI~(0NZh*=wW*O)Lf;uQ9m2UW5eP4sW^_FZ09wCZlOMafinsdP+DR; zCgD|-t_opgG0v~vA&}8J2&D@aAvdKyG5T>eGIdVEC|rPr@F-TtpHNQd%E4s6au|&Z zaUvcwHXoxuT+U)gF4SWz?f(xO^cbfHM^|n~cG!xZSZjhlQ5w=$su{|Buog>VNj6@L z)$sy;kDYP#2l}aS`;hktd0UhVUxdkc471R4678QzFm#e`l01~>_!&x5MNU>K1+!7M z+laFMF1E(Vs$A;wNP}U#A^5{NQzn&|j7kMnwn<^Ehg?3M+X}Zu9e^8N0Mdoy+ zKE)*{O<8*eSC3n;85W+&s}wt;FCN57_$xj_>m&V^d}4fxfz&@kcPutbcU4J@Adhzv z@OY}8D0k2s!|_Y(gcr~i6K3lvI0?s&g?f|@MnCdTu`q5!xu9=QcD##n0oEc$GWwvjKt4uc5Cftz zHo=mZi$!o2*1=`S^{PwAgyvM23FN>9m*_zejMd4f;C9@NIoSVWeV{8CNd6EfVd16B z|2PLTu;3?pf@*`gk2t#zHUja1y*vP!tEF4^G5#I3K0&cVh_d z!z{dnG@Z&=shhYz-XWiiE;#Tr{lzo{CI20L@v8Ap>__ggiuNBskV|kC?_&o%wOTh} z00N3MX48ZB1>&I|4Rv_Pq{`fOWOWsAffvB~5Y&6HR$(sFY*;AgJ%=Ufp4H(Nbp8&8+0R|fzdbz<&F-ajF~&er&yEx zHHKo%P5R@sBg%R9I0;%396=e?L7Vj`kH>=K4X_GkVj;{$7aVW=06obkV-n880(csw z$MhG(@@LFEJQ@!W4Xh(giVjdXP552=YN# z3Rhrd{0eDhbqg(=yH(%$d`u*NhCDS+6}?SAxBajZEB0VjypCDSda6o{seNx+t3Fuqs&~7k#VI8 z?bZ{ez~>l_#rEi#F%h|Am5udq9Tw#L>LEck{)KYo zJ-^Z|G9Qa_hgZ-+{o}p51$_5uYoYYna#Sy4?6PN>_Ru z(u3H6VdTkJ0(%{D>JNfZRLr2_Pi&794(ma935$|@9?^erltw@Dcr1f&VOi{h@>ER2 zP+W^A@ffzk#Ygqveu$;X1HRW^R5hFg()80&`tUHyk4n$+E%LF)b<>_expUVO`ZXGd zGKdBnccBaUD{O~y_VUmkTjFTU#M3wg9jCO;1q7|B@cuzJVGpc8eh%d=_ZqngHS0$` z*gBlnV_`UcO#KpL!cTg?Gbkti2P4t(vmSiSQN~Cv2ID4-lIQ;jDAlS$9be- zC^O$zC{21Bld$kF`p@umbdWDXx!~O>Q}kt&;{}}6f8|z1*}oe~{dnU7oGQ=%Is#f; z#s8`gR1@XSyP(uRMmNky4}6Yt2i7?~<2g_cTnpv-Zi3Pk)35~2#6(<;UGOSy#nkh( z0_RtM5!Avp7xYAN6$_IWzo_T#5FACm7UhB}{-z(xa2!s)3VqRWNw1H=Ao5t0`Je?R z;WCtY;G$XY_B-vLOhqVx1G`~O9EaubD-6ZUCl<^|}D zH&8D8DW+ky8~U|97*okN8XsdEd5xR;2a2qlPQAl*DhO4TTl&Q7unGBotc^am^_@3C zMy=X{(zMr625HnCJ=!~?oL~k@3mn7*d|}o{-_?V(JNBY}iIbo;fy+JprP2=N&Q@Sm ze1x5_%zgb-498eWTpP5mLPL;Wd~ruTlVAGd}m#~Xz*sBdCh41J>iCd|cb^5a-T z8ogG&K0yx34m*rbP?|pCseT7!;YjjaY=+NJE;Rj5-Q-O$o_rz}$Gx}=Ph%w<@Jx@L zC0LpKTWlbm{(vBWiW-0Exj7Tpk@rElGymth&zoX-^0DZFtC4}OHsMg5^+J#GLVxSI zKL+Eeclk%ZbZX&X@@^FdrLW#w-1a^$})}@55j$^gsQ0 zRzkU>46KiXu_W$BxvIcD zS@w@gJ+USEd{;}ojdzWW+${S~uFuhp`rRm9^)}DltFywp zfMw5Mb+90LN0c4AqpY80^8F@%h_YQsLCb#oRm7g;W3Ue1#70=b!?LI99Lyvi@8PuU zzWkAj#Z;Wffy_vQ3t9G$N_Prd_E+r?e%O%{e1!hE5R-5t$_egaI9B$eWv~_c;6#)= zpO2$)DaxG(@#QMNDNS<{$ObpOE&E5M`#7F_1s{IN80NzjvtcikJ{(@mvfl-tU={Kp zUwt7BQMzg(7Q-VbgY`U07re$X=*GdsiRg{a0>v$RM)Su)RHUOcadQm8u{a1nMR`0+ z_*?edvAOXY${i0bVcEZ=tVRa5D!_-Hj18Akmi?z%8}uZhe94c0BvA7xN)#T0yk z^)V(y_H%Lq0@+|Ew#R2EecjBV2W2~y$8Z(OL~;)cWARYS{u?d?rOT?Kw9sbkPM6(7 z8Dve%S@v&AOHo=fxjZd}Thadi|B6?z>>rh~QQqTcQBHIhAE95Er8u5)tEer2!Q>w3 zjulb5Dgxyx$wU_%fempq%HTYVo$xWbVv|aia!TK|AdtZ@9_2@+*(g6Mc~-IPAC+RO z>c{aFMzdXDgzkb&luSG*HOaDnQ;MpsTW}i6^M4LgPido{I4JgqGAh9#8c>p zty3-g)2a_j6RtpcJoB&-9zwZLpL)7W!coS`0F(>di!$T6)z@Rh2W9M(!31oH@tj{x zlK{U%nX6x79kd$gJ4!+6aq=1<#-t#->^JCs!&;i!4SNtb0*f^c2ct zc@~}07q02LPm36RP_En${~pi{W&2f_jT9aFFwd4H5UJb==4M^FaQ17lzt-4baiV`ePMh3!LmY+s^ut#4b){!J+k z%ggh>g+S)wv${g1x6>zhALVhGjnd>tP+H^{T#n~ZE@XInJr>+qSzk6_`IZt)d==+% zw;!PgevYzyN-W(b=T|pKWRVfQ!;bVnrKz7r$Wvu6(ml(FS5azm@GJNUC66LYKgu0q zcaw9&_9Cq&UqUkQ7?<|an|~J)zt8#qU6@(zWgY%yYF86~^`@S>ag;EVGfmiw^!F1T zs(9+YF!eOAy>u|<8$(zhNIU@T^Y14)L|GtG=}HOX4r3^?4AI#Co@8B5$~CfHc<(>! z-h`8>pGRS6sE;YK6vE9qR58S!9Q#)}|1v7Kn2qF_t;34T7>~*30_5Z5CZ!VjFDMJ2 zhw5{)pEvb|DQ}aPH2cV%?Y6h1yQt?qWG^YKmnZ2wWrp1UOkHn(y$)t0SMpwzQDz5O zJ)5%iKe^Oxq{LFk6KH=c{DR@;lvE6V_@RW!61H<|FkjC4w@>)K})>elW32Zn8LAYwc&XKO4(` zEWjI5O{B=uN~4aDZ#Q){*k+cAe_}nesrntynz}v21x@VFwto^AKv{MWry`$#vN-L( zdcGs6%LYg7ItCYcb@J)tyC^Y~EVEAdRqw105FaJJPVuCiGTXc&ZovNCQ5KnBWO+f( z{AN%2#aRE1<)>H3zv-0ftPGe_EZoo8%&b^~GIPH$`AW8^L7c|!PlyXpT!|y`ABrrK zDOCNtETaA)nVYGZL0(UCHcCcb2J-8ty?n>N`Mj6yq!t^LC0c6^{1x$I;yV~k`J4DN zvu-iDES1Q4d-2;Q??XyQ;%KwY*W_y{{^U%z_E*GRa#^06ZSsgek@LT#;-0B|*H{*# z%&kq5y~rKpGUFGLoaJlk#+vOfl24?#m|WIRAr4`ms+1t|+mx&SSszIK2Xg-hDdWwG z_wajiSwe{$nR;I=#|~vE!&rBa{1l}tr9I^j$`6#4tm}qlDE%n1ET!Bcme156Q}MrQe{x{@JEaxx6#(!XtxqzAGK*!%~gk@P5P4P49rW!Zl zb=F@pxqK_h(%IyDi9e={B;QMk;22BsDP?DOD-8sUM0P@HS;0@fu1n@ixi^;)Rs4l;)HZlwitu z%BPgVl$&gqO!-INi+!osPWh2ioJvoui|r_x#2=w7L$MfEHM!LJQ|43pP^MF#W!6>W z?xsm>?y|P=1a+TLElUn@Ihp^{bgsOq2sg1%fqVseu=8)kQ_Q*)qtKiB0a%I>KrG8U zlzQfbrKoF99!j1_JcxK0_Mwa*&XE4!PiaCqOU0YzGWp;)iSa&uNWCl#F;<86-#clh zzA#pyzKmJ7(bShF|Bxc*>w+WjON!NDj(=3|ya`dGL-HKWAA8L?nSVI1Y?tDmc`sf& z-RDI1bIUuI^QdOtskMQDg(D-Pqa0CjwW4D4^1qF>@~R(P;b5;^E3fyhAg{cW`JP_v Rb~uHt3%cz%QQyie@qbS8;}`${ diff --git a/inst/po/en@quot/LC_MESSAGES/data.table.mo b/inst/po/en@quot/LC_MESSAGES/data.table.mo index f641958a82e09983ffe29527f7eb5639bd89184f..0268e1b93aaf402535b802d8a76106a296600ba1 100644 GIT binary patch delta 25 hcmaE`o8!T5j)pCaoAua@3=|AZtxUG>(qmM64*-Vp32p!Y delta 25 hcmaE`o8!T5j)pCaoAuZYO%)6+tqivB(qmM64*-WV33C7d diff --git a/po/R-data.table.pot b/po/R-data.table.pot index ee2d6efa79..95f302bb65 100644 --- a/po/R-data.table.pot +++ b/po/R-data.table.pot @@ -1,7 +1,7 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.7\n" -"POT-Creation-Date: 2019-10-21 16:15\n" +"POT-Creation-Date: 2019-11-20 05:46\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -412,9 +412,24 @@ msgstr "" msgid "; the same length as there are rows in x (after subsetting if i is provided)." msgstr "" +msgid "Internal error: drop_dot passed" +msgstr "" + +msgid "items" +msgstr "" + msgid "of the .() or list() passed to j is missing" msgstr "" +msgid "Different branches of j expression produced different auto-named columns:" +msgstr "" + +msgid "%s!=%s" +msgstr "" + +msgid "; using the most \"last\" names" +msgstr "" + msgid ".SDcols missing at the following indices:" msgstr "" diff --git a/po/R-zh_CN.po b/po/R-zh_CN.po index 1159b5117f..1e0c9d0de1 100644 --- a/po/R-zh_CN.po +++ b/po/R-zh_CN.po @@ -1,7 +1,7 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.5\n" -"POT-Creation-Date: 2019-10-21 16:15\n" +"POT-Creation-Date: 2019-11-20 05:46\n" "PO-Revision-Date: 2019-11-10 15:29-04\n" "Last-Translator: Xianghui Dong \n" "Language-Team: Mandarin\n" @@ -99,30 +99,29 @@ msgid "" "'between' function the 'x' argument is a POSIX class while 'lower' was not, " "coercion to POSIX failed with:" msgstr "" -"'between' 中的 'x' 参数为 POSIX 类,而 'lower' 并不是," -"将 'lower' 自动转换成 POSIX 失败:" +"'between' 中的 'x' 参数为 POSIX 类,而 'lower' 并不是,将 'lower' 自动转换成 " +"POSIX 失败:" msgid "" "'between' function the 'x' argument is a POSIX class while 'upper' was not, " "coercion to POSIX failed with:" msgstr "" -"'between' 中的 'x' 参数为 POSIX 类,而 'upper' 并不是," -"将 'upper' 自动转换成 POSIX 失败:" +"'between' 中的 'x' 参数为 POSIX 类,而 'upper' 并不是,将 'upper' 自动转换成 " +"POSIX 失败:" msgid "" "'between' lower= and upper= are both POSIXct but have different tzone " "attributes:" msgstr "" -"'between' 中的 lower= 和 upper= 均为 POSIXct 类型但却有不同的时区" -"属性(tzone):" +"'between' 中的 lower= 和 upper= 均为 POSIXct 类型但却有不同的时区属性" +"(tzone):" msgid ". Please align their time zones." msgstr "。请确保二者的时区一致。" msgid "" "'between' arguments are all POSIXct but have mismatched tzone attributes:" -msgstr "" -"'between' 的参数均为 POSIXct 类型但时区属性(tzone)不匹配:" +msgstr "'between' 的参数均为 POSIXct 类型但时区属性(tzone)不匹配:" msgid ". The UTC times will be compared." msgstr "。将采用 UTC 时间进行比较。" @@ -133,10 +132,13 @@ msgstr "试图使用 intger64 类型但 'bit64' 包尚未安装" msgid "" "Not yet implemented NAbounds=TRUE for this non-numeric and non-character type" msgstr "" -"对这种非数值(numeric)和非字符(character)的类型,尚未实现 NAbounds=TRUE 的功能" +"对这种非数值(numeric)和非字符(character)的类型,尚未实现 NAbounds=TRUE 的" +"功能" msgid "Some lower>upper for this non-numeric and non-character type" -msgstr "对于该非数值(numeric)和非字符(character)类型的输入,存在一部分下界(lower)> 上界(upper)的情况" +msgstr "" +"对于该非数值(numeric)和非字符(character)类型的输入,存在一部分下界" +"(lower)> 上界(upper)的情况" msgid "RHS has length()" msgstr "右手侧(RHS)的长度为" @@ -175,7 +177,9 @@ msgid "to i." msgstr "与 i." msgid ". Only integer, double or character columns may be roll joined." -msgstr "联接时。但只有整数(integer)、双精度(double)或字符(character)类型的列可以使用滚动联接(roll join)。" +msgstr "" +"联接时。但只有整数(integer)、双精度(double)或字符(character)类型的列可" +"以使用滚动联接(roll join)。" msgid "Incompatible join types: x." msgstr "不兼容的联结类型: x。" @@ -245,8 +249,8 @@ msgid "" "frame, and a natural join (i.e. join on common names) is invoked. Ignoring " "on= which is '" msgstr "" -"当提供 on= 而不提供 i= 的时候, on= 必须是带名称的 list 或者 data.table 或者 data.frame," -"并且会调用自然联结(例如,按照共有名称联结),忽略 on= " +"当提供 on= 而不提供 i= 的时候, on= 必须是带名称的 list 或者 data.table 或者 " +"data.frame,并且会调用自然联结(例如,按照共有名称联结),忽略 on= " msgid "'." msgstr "'。" @@ -254,8 +258,7 @@ msgstr "'。" msgid "" "i and j are both missing so ignoring the other arguments. This warning will " "be upgraded to error in future." -msgstr "" -"i 和 j 都缺少的时候忽略其他参数。将来此警告信息将升级为错误信息。" +msgstr "i 和 j 都缺少的时候忽略其他参数。将来此警告信息将升级为错误信息。" msgid "mult argument can only be 'first', 'last' or 'all'" msgstr "mult 参数只能赋值为 'first', 'last' 或 'all'" @@ -264,8 +267,8 @@ msgid "" "roll must be a single TRUE, FALSE, positive/negative integer/double " "including +Inf and -Inf or 'nearest'" msgstr "" -"roll 必须是单个参数,例如 TRUE, FALSE, 正或负的 integer 或 double" -"包括 +Inf , -Inf 或 'nearest'" +"roll 必须是单个参数,例如 TRUE, FALSE, 正或负的 integer 或 double包括 " +"+Inf , -Inf 或 'nearest'" msgid "roll is '" msgstr "roll 是" @@ -417,8 +420,8 @@ msgid "" "is worth the rare convenience. Explicitly use rep(...,length=.N) if you " "really need to recycle." msgstr "" -"行。不再允许布尔值 i 循环补齐,尽管这样有些许便利,但会隐藏更多的 bug,得不偿失。" -"若确实需要循环补齐,请直接使用 rep(...,length=.N)。" +"行。不再允许布尔值 i 循环补齐,尽管这样有些许便利,但会隐藏更多的 bug,得不偿" +"失。若确实需要循环补齐,请直接使用 rep(...,length=.N)。" msgid "Internal error: notjoin but byjoin or !integer or nomatch==NA" msgstr "内部错误。原因可能为:notjoin 而非 byjoin;非整数;nomatch 为空" @@ -429,11 +432,9 @@ msgid "" "to assign to column name(s) held in variable myVar. See ?':=' for other " "examples. As warned in 2014, this is now a warning." msgstr "" -"2014年10月发布的1.9.4版本中,with=FALSE 和 := 共用的用法已被弃用。" -"请把 := 左侧部分打上括号;例如,DT[,(myVar):=sum(b),by=a]" -"对 myVar 中的列名进行赋值。输入 ?':=' 参看其他的" -"例子。正如2014年的版本中所说明的,现在这种用法会出现警告。" - +"2014年10月发布的1.9.4版本中,with=FALSE 和 := 共用的用法已被弃用。请把 := 左" +"侧部分打上括号;例如,DT[,(myVar):=sum(b),by=a]对 myVar 中的列名进行赋值。输" +"入 ?':=' 参看其他的例子。正如2014年的版本中所说明的,现在这种用法会出现警告。" msgid "" "with=FALSE ignored, it isn't needed when using :=. See ?':=' for examples." @@ -461,9 +462,7 @@ msgstr "j 中同时存在正数和负数" msgid "" "When with=FALSE, j-argument should be of type logical/character/integer " "indicating the columns to select." -msgstr "" -"当 with=FALSE,参数 j 必须为布尔型/字符型/整型之一" -",表征要选择的列。" +msgstr "当 with=FALSE,参数 j 必须为布尔型/字符型/整型之一,表征要选择的列。" msgid "by=c(...), key(...) or names(...) must evaluate to 'character'" msgstr "by=c(...), key(...) 或 names(...) 只接受 'character' " @@ -477,10 +476,9 @@ msgid "" "containing comma separated column names. See ?data.table for other " "possibilities." msgstr "" -"但是其中包含一个或多个逗号。请传入一个列名组成的向量" -"(可以包含空格,但是不能包含逗号),或传入一个长度为1,由逗号分隔的列名组成的向量" -"输入 ?data.table" -"查看其他的选项。" +"但是其中包含一个或多个逗号。请传入一个列名组成的向量(可以包含空格,但是不能" +"包含逗号),或传入一个长度为1,由逗号分隔的列名组成的向量输入 ?data.table查看" +"其他的选项。" msgid "Internal error: irows isn't integer" msgstr "内部错误:irows 不是整型" @@ -496,15 +494,14 @@ msgid "" "should work. This is for efficiency so data.table can detect which columns " "are needed." msgstr "" -"应该是可行的。这样做是出于性能考虑,凭此 data.table 可以判断哪些列" -"是需要的。" +"应该是可行的。这样做是出于性能考虑,凭此 data.table 可以判断哪些列是需要的。" msgid "" "'by' or 'keyby' must evaluate to a vector or a list of vectors (where 'list' " "includes data.table and data.frame which are lists, too)" msgstr "" -"'by' 或者 'keyby' 参数只接受一个向量或由向量组成的列表(这里 'list'" -"包含 data.table 和 data.frame,这二者本质也是列表" +"'by' 或者 'keyby' 参数只接受一个向量或由向量组成的列表(这里 'list'包含 data." +"table 和 data.frame,这二者本质也是列表" msgid "column or expression" msgstr "列或者表达式" @@ -517,8 +514,7 @@ msgid "" msgstr "。请勿引用列名。用法:DT[,sum(colC),by=list(colA,month(colB))]" msgid "The items in the 'by' or 'keyby' list are length (" -msgstr "" -"'by' 或 'keyby' 列表中的元素长度为(" +msgstr "'by' 或 'keyby' 列表中的元素长度为(" msgid "). Each must be length" msgstr "" @@ -527,9 +523,26 @@ msgid "" "; the same length as there are rows in x (after subsetting if i is provided)." msgstr "" +#, fuzzy +msgid "Internal error: drop_dot passed" +msgstr "内部错误 : xcolAns 无法通过检查:" + +msgid "items" +msgstr "" + msgid "of the .() or list() passed to j is missing" msgstr "" +msgid "" +"Different branches of j expression produced different auto-named columns:" +msgstr "" + +msgid "%s!=%s" +msgstr "" + +msgid "; using the most \"last\" names" +msgstr "" + msgid ".SDcols missing at the following indices:" msgstr "" @@ -551,16 +564,15 @@ msgstr ".SDcols 中的部份项目不是列名:" msgid "" "This j doesn't use .SD but .SDcols has been supplied. Ignoring .SDcols. See ?" "data.table." -msgstr "此处 j 不使用 .SD 但提供了 .SDcols ,因此忽略 .SDcols" -"详见 ?data.table" +msgstr "此处 j 不使用 .SD 但提供了 .SDcols ,因此忽略 .SDcols详见 ?data.table" msgid "" ".SD is locked. Using := in .SD's j is reserved for possible future use; a " "tortuously flexible way to modify by group. Use := in j directly to modify " "by group by reference." -msgstr ".SD 已锁定,在 .SD 的 j 中使用 := 进行分组修改是较不直观的方式" -"此功能被保留以供未来使用" -"请直接在 j 中使用 := 依照引用进行分组修改" +msgstr "" +".SD 已锁定,在 .SD 的 j 中使用 := 进行分组修改是较不直观的方式此功能被保留" +"以供未来使用请直接在 j 中使用 := 依照引用进行分组修改" msgid "In `:=`(col1=val1, col2=val2, ...) form, all arguments must be named." msgstr "在`:=`(col1=val1, col2=val2, ...) 中,所有参数必须被指名" @@ -572,8 +584,7 @@ msgstr ":= 的 LHS 必须是符号或是原子向量(列名或是列的位置)" msgid "" "LHS of := appears to be column positions but are outside [1,ncol] range. New " "columns can only be added by name." -msgstr ":= 的 LHS 是列的位置但超出了 [1,ncol] 的范围" -"新列只能以名称的方式新增" +msgstr ":= 的 LHS 是列的位置但超出了 [1,ncol] 的范围新列只能以名称的方式新增" msgid "" "LHS of := isn't column names ('character') or positions ('integer' or " @@ -589,20 +600,20 @@ msgid "" "copying: ?set, ?setnames and ?setattr. If this message doesn't help, please " "report your use case to the data.table issue tracker so the root cause can " "be fixed or this message improved." -msgstr "侦测到无效的 .internal.selfref ,已藉由获取 data.table 的(浅层)副本的方式修复" -"以便 := 能利用引用加入新列" -"在过去的某个时间点,此 data.table 已被 R 复制(或是以 structure()等方式手动生成)" -"请避免 names<- 与 attr<- 等目前(与偶发)可能会在 R 中复制整个data.table的操作" -"请改用 set* 语法以避免复制,详见 ?set、?setnames 及 ?setattr" -"如果以上讯息无法提供帮助,请回报你的案例至 data.table 问题追踪" -"以助于修复根本原因或改进本讯息" +msgstr "" +"侦测到无效的 .internal.selfref ,已藉由获取 data.table 的(浅层)副本的方式修复" +"以便 := 能利用引用加入新列在过去的某个时间点,此 data.table 已被 R 复制(或是" +"以 structure()等方式手动生成)请避免 names<- 与 attr<- 等目前(与偶发)可能会在 " +"R 中复制整个data.table的操作请改用 set* 语法以避免复制,详见 ?set、?setnames " +"及 ?setattr如果以上讯息无法提供帮助,请回报你的案例至 data.table 问题追踪以助" +"于修复根本原因或改进本讯息" msgid "" "Cannot assign to an under-allocated recursively indexed list -- L[[i]][,:=] " "syntax is only valid when i is length 1, but it's length" msgstr "" -"无法指定配置不足的递归索引列表" -"-- L[[i]][,:=] 语法只有在 i 长度为1时有效,但它的長度" +"无法指定配置不足的递归索引列表-- L[[i]][,:=] 语法只有在 i 长度为1时有效,但它" +"的長度" msgid "Internal error -- item '" msgstr "内部错误 -- 项目 '" @@ -618,17 +629,17 @@ msgid "" "the chance of assigning POSIXlt columns, which use 40+ bytes to store one " "date (versus 8 for POSIXct). Use as.POSIXct() (which will call strptime() as " "needed internally) to avoid this warning." -msgstr "侦测到使用 strptime() ,已用 as.POSIXct() 包裹" -"这么做是为了尽量避免列被指定为 POSIXlt" -"POSIXlt用40个以上的位元组储存日期(相较于 POSIXct 只用8位元组)" -"请使用 as.POSIXct() 以避免本警告 (此函数会根据需求在内部调用 strptime())" +msgstr "" +"侦测到使用 strptime() ,已用 as.POSIXct() 包裹这么做是为了尽量避免列被指定为 " +"POSIXltPOSIXlt用40个以上的位元组储存日期(相较于 POSIXct 只用8位元组)请使用 " +"as.POSIXct() 以避免本警告 (此函数会根据需求在内部调用 strptime())" msgid "" "' is not found in calling scope. Looking in calling scope because this " "symbol was prefixed with .. in the j= parameter." msgstr "" -"' 未能在调用范围 (calling scope) 中找到,请查看调用范围" -"因为 j= 的参数以 .. 作为前缀" +"' 未能在调用范围 (calling scope) 中找到,请查看调用范围因为 j= 的参数以 .. " +"作为前缀" msgid "Internal error: xcolAns does not pass checks:" msgstr "内部错误 : xcolAns 无法通过检查:" @@ -636,8 +647,9 @@ msgstr "内部错误 : xcolAns 无法通过检查:" msgid "" "Internal error: irows is NULL when making join result at R level. Should no " "longer happen now we use CsubsetDT earlier." -msgstr "内部错误 : 在 R 生成连接结果时,irows为 NULL " -"我们已使用了 CsubsetDT,现在不应该再发生了" +msgstr "" +"内部错误 : 在 R 生成连接结果时,irows为 NULL 我们已使用了 CsubsetDT,现在不应" +"该再发生了" msgid "j (the 2nd argument inside [...]) is a single symbol but column name '" msgstr "j ( [...] 中的第二顺位参数) 是单个符号而列名 '" @@ -647,8 +659,7 @@ msgstr "' 未被找到,也许你打算 DT[, .." msgid "" "]. This difference to data.frame is deliberate and explained in FAQ 1.1." -msgstr "" -"] ,在FAQ 1.1 中有解释dat.table与data.frame的差别" +msgstr "] ,在FAQ 1.1 中有解释dat.table与data.frame的差别" msgid "" "Internal error: j has created a data.table result containing a NULL column" @@ -657,14 +668,16 @@ msgstr "内部错误 : j 创建了一个有列为 NULL 的 data.table" msgid "" "The column '.N' can't be grouped because it conflicts with the special .N " "variable. Try setnames(DT,'.N','N') first." -msgstr "无法对 '.N' 列进行分组,因为与 data.table 特有的 .N 变量冲突" -"请先尝试 setnames(DT,'.N','N')" +msgstr "" +"无法对 '.N' 列进行分组,因为与 data.table 特有的 .N 变量冲突请先尝试 " +"setnames(DT,'.N','N')" msgid "" "The column '.I' can't be grouped because it conflicts with the special .I " "variable. Try setnames(DT,'.I','I') first." -msgstr "无法对 '.I' 列进行分组,因为与 data.table 特有的 .I 变量冲突" -"请先尝试 setnames(DT,'.I','I')" +msgstr "" +"无法对 '.I' 列进行分组,因为与 data.table 特有的 .I 变量冲突请先尝试 " +"setnames(DT,'.I','I')" msgid "logical error. i is not data.table, but mult='all' and 'by'=.EACHI" msgstr "逻辑错误: i 不是data.table,但 mult='all' 及 'by'=.EACHI" @@ -672,7 +685,6 @@ msgstr "逻辑错误: i 不是data.table,但 mult='all' 及 'by'=.EACHI" msgid "Internal error: by= is missing" msgstr "内部错误 : 缺少 by=" - msgid "Internal error: byindex not the index name" msgstr "内部错误 : byindex 不是索引名称" @@ -683,9 +695,10 @@ msgid "" "Unable to optimize call to mean() and could be very slow. You must name 'na." "rm' like that otherwise if you do mean(x,TRUE) the TRUE is taken to mean " "'trim' which is the 2nd argument of mean. 'trim' is not yet optimized." -msgstr "无法优化对 mean() 的调用,这可能导致运行非常缓慢" -"您必须使用 na.rm=TRUE,否则如果您直接使用 mean(x,TRUE)" -"会被认定为 trim=TRUE,trim 是 mean() 中尚未被优化的第二顺位参数" +msgstr "" +"无法优化对 mean() 的调用,这可能导致运行非常缓慢您必须使用 na.rm=TRUE,否则如" +"果您直接使用 mean(x,TRUE)会被认定为 trim=TRUE,trim 是 mean() 中尚未被优化的" +"第二顺位参数" msgid "Internal error: length(irows)!=length(o__)" msgstr "" @@ -889,8 +902,7 @@ msgstr "是" msgid "" "' which appears several times in column names. Just the first will be " "changed. There are" -msgstr "在列名中重复出现,仅第一个" -"会改动,如下:" +msgstr "在列名中重复出现,仅第一个会改动,如下:" msgid "other items in old that are also duplicated in column names." msgstr "old中的其他项在列名中出现重复" @@ -919,8 +931,8 @@ msgstr "应该叠加普通列表项" msgid "" "idcol must be a logical or character vector of length 1. If logical TRUE the " "id column will named '.id'." -msgstr "idcol必须为逻辑型向量或长度为1的字符型向量.如果逻辑值为TRUE" -"id 列会命名为'.id'" +msgstr "" +"idcol必须为逻辑型向量或长度为1的字符型向量.如果逻辑值为TRUEid 列会命名为'.id'" msgid "use.names=NA invalid" msgstr "use.names=NA 无效赋值" @@ -929,15 +941,16 @@ msgid "" "use.names='check' cannot be used explicitly because the value 'check' is new " "in v1.12.2 and subject to change. It is just meant to convey default " "behavior. See ?rbindlist." -msgstr "请勿直接使用use.names='check',因为值'check'为新增" -"在v1.12.2中后续有所变化,仅用表示默认模式" -"详见 ?rbindlist" +msgstr "" +"请勿直接使用use.names='check',因为值'check'为新增在v1.12.2中后续有所变化,仅" +"用表示默认模式详见 ?rbindlist" msgid "" "Check that is.data.table(DT) == TRUE. Otherwise, := and `:=`(...) are " "defined for use in j, once only and in particular ways. See help(\":=\")." -msgstr "检查是否is.data.table(DT) == TRUE,否则,:= and `:=`(...) 为" -"被界定在j使用,仅一次以特别的方式使用,详见help(\":=\")" +msgstr "" +"检查是否is.data.table(DT) == TRUE,否则,:= and `:=`(...) 为被界定在j使用,仅一" +"次以特别的方式使用,详见help(\":=\")" msgid "" "setDF only accepts data.table, data.frame or list of equal length as input" @@ -964,18 +977,15 @@ msgstr "无法转换'" msgid "" "' to data.table by reference because binding is locked. It is very likely " "that '" -msgstr "" -"' 为引用形式的 data.table,因为绑定被锁定了。很有可能 " -"'" +msgstr "' 为引用形式的 data.table,因为绑定被锁定了。很有可能 '" msgid "" "' resides within a package (or an environment) that is locked to prevent " "modifying its variable bindings. Try copying the object to your current " "environment, ex: var <- copy(var) and then using setDT again." msgstr "" -"' 存在于一个被锁定的包(或环境)中导致无法" -"修改其绑定的变量。可以尝试复制对象(object)到你的现有" -"环境,如:var <- copy(var) 然后再使用 setDT。" +"' 存在于一个被锁定的包(或环境)中导致无法修改其绑定的变量。可以尝试复制对象" +"(object)到你的现有环境,如:var <- copy(var) 然后再使用 setDT。" msgid "Some columns are a multi-column type (such as a matrix column):" msgstr "某些列是多重列类型(如矩阵列):" @@ -985,9 +995,8 @@ msgid "" "grouping and joining may fail. Please consider as.data.table() instead which " "will create a new column for each embedded column." msgstr "" -"。setDT 会原样保留这些列但后续的操作如" -"编组(grouping)和联接(joining)可能会失败。请考虑使用 as.data.table() 因为它" -"会为每个内嵌列建立一个新列。" +"。setDT 会原样保留这些列但后续的操作如编组(grouping)和联接(joining)可能会" +"失败。请考虑使用 as.data.table() 因为它会为每个内嵌列建立一个新列。" msgid "Column" msgstr "列" @@ -997,16 +1006,15 @@ msgid "" "setDT again. We do not recommend use of POSIXlt at all because it uses 40 " "bytes to store one date." msgstr "" -"属于 POSIXlt 类型。请使用 as.POSIXct 转换为 POSIXct 并再次执行" -"setDT。我们非常不推荐使用 POSIXlt 因为它要用 40 " -"字节来存储一个日期。" +"属于 POSIXlt 类型。请使用 as.POSIXct 转换为 POSIXct 并再次执行setDT。我们非常" +"不推荐使用 POSIXlt 因为它要用 40 字节来存储一个日期。" msgid "" "All elements in argument 'x' to 'setDT' must be of same length, but the " "profile of input lengths (length:frequency) is:" msgstr "" -"'setDT' 的参数 'x' 中所有的元素都必须是同一长度,但" -"输入长度的概况(长度(length):频率(frequency))是:" +"'setDT' 的参数 'x' 中所有的元素都必须是同一长度,但输入长度的概况(长度" +"(length):频率(frequency))是:" msgid "%s:%d" msgstr "" @@ -1020,7 +1028,8 @@ msgstr "的输入项是" msgid "" "Argument 'x' to 'setDT' should be a 'list', 'data.frame' or 'data.table'" msgstr "" -"'setDT' 参数 'x' 应为一个列表('list'),数据框('data.frame')或 'data.table'" +"'setDT' 参数 'x' 应为一个列表('list'),数据框('data.frame')或 'data." +"table'" msgid "Item '" msgstr "项 '" @@ -1050,20 +1059,19 @@ msgid "" "). For robustness, no recycling is allowed (other than of length 1 RHS). " "Consider %in% instead." msgstr "" -")。考虑到程序的稳健性,只有在右侧元素长度为 1 的情况下,我们才会对之进行循环。" -"考虑改用 %in% 。" +")。考虑到程序的稳健性,只有在右侧元素长度为 1 的情况下,我们才会对之进行循" +"环。考虑改用 %in% 。" msgid "" "Internal error in .isFastSubsettable. Please report to data.table developers" -msgstr "" -".isFastSubsettable 产生了内部错误。请向 data.table 开发者报告" +msgstr ".isFastSubsettable 产生了内部错误。请向 data.table 开发者报告" msgid "" "'on' argument should be a named atomic vector of column names indicating " "which columns in 'i' should be joined with which columns in 'x'." msgstr "" -"'on' 参数应为一个有子项名字的原子列名向量,指明" -"'i' 中的哪些列应与 'x' 中的哪些列联接。" +"'on' 参数应为一个有子项名字的原子列名向量,指明'i' 中的哪些列应与 'x' 中的哪" +"些列联接。" msgid "Found more than one operator in one 'on' statement:" msgstr "在一个 'on' 语句中出现了多于一个的操作符(operator):" @@ -1367,25 +1375,24 @@ msgid "" "'ftp[s]://' or 'file://', or, the input data itself containing at least one " "\\n or \\r" msgstr "" -"input= 必须是以下其中一种字符串: " -"一个文件名, 一个含有不少于一个空格的系统命令, " -"以'http[s]://','ftp[s]://' 或 'file://' 开头的URL, " -"或是本身就包含至少一个\\n 或 \\r的输入数据" +"input= 必须是以下其中一种字符串: 一个文件名, 一个含有不少于一个空格的系统命" +"令, 以'http[s]://','ftp[s]://' 或 'file://' 开头的URL, 或是本身就包含至少一个" +"\\n 或 \\r的输入数据" msgid "" "input= contains no \\n or \\r, but starts with a space. Please remove the " "leading space, or use text=, file= or cmd=" msgstr "" -"input= 不包含 \\n 或 \\r, 但是开头有个空格" -"请移除开头的空格, 或使用text=, file= 或 cmd=" +"input= 不包含 \\n 或 \\r, 但是开头有个空格请移除开头的空格, 或使用text=, " +"file= 或 cmd=" msgid "" "Input URL requires https:// connection for which fread() requires 'curl' " "package which cannot be found. Please install 'curl' using 'install." "packages('curl')'." msgstr "" -"输入的URL要求 https:// 连接. 因而 fread() 要求 'curl' 包." -"请用 'install.packages('curl')' 安装'curl'包." +"输入的URL要求 https:// 连接. 因而 fread() 要求 'curl' 包.请用 'install." +"packages('curl')' 安装'curl'包." msgid "Taking input= as a system command ('" msgstr "正将 input= 当做系统命令 ('" @@ -1398,10 +1405,10 @@ msgid "" "the NEWS file for v1.11.6 for more information and for the option to " "suppress this message." msgstr "" -"') 同时一个变量也被传输到 `input=`.请使用fread(cmd=...)." -"这是出于安全考虑. 试想你在开发一个app, 这个app可能有恶意用户, " -"同时这个app的运行环境不安全 (比如在root环境下运行)." -"请阅读v1.11.6版本的NEWS file里面的item 5获取更多资讯, 或了解如何取消这个提示." +"') 同时一个变量也被传输到 `input=`.请使用fread(cmd=...).这是出于安全考虑. 试" +"想你在开发一个app, 这个app可能有恶意用户, 同时这个app的运行环境不安全 (比如在" +"root环境下运行).请阅读v1.11.6版本的NEWS file里面的item 5获取更多资讯, 或了解" +"如何取消这个提示." msgid "File '" msgstr "文件'" @@ -1426,8 +1433,8 @@ msgid "" "cannot be found. Please install 'R.utils' using 'install.packages('R." "utils')'." msgstr "" -"想要直接读取 gz 和 bz2 文件, fread() 需要 'R.utils' 包." -"请用 'install.packages('R.utils')'安装 'R.utils' 包." +"想要直接读取 gz 和 bz2 文件, fread() 需要 'R.utils' 包.请用 'install." +"packages('R.utils')'安装 'R.utils' 包." msgid "" "'autostart' is now deprecated and ignored. Consider skip='string' or skip=n" @@ -1439,8 +1446,8 @@ msgid "" "FALSE values in it which is not allowed. Please consider the drop= or " "select= argument instead. See ?fread." msgstr "" -"colClasses 只能在全部是NA的情况下为逻辑变量. " -"请考虑使用 drop= 或 select= . 更多信息请参照 ?fread" +"colClasses 只能在全部是NA的情况下为逻辑变量. 请考虑使用 drop= 或 select= . 更" +"多信息请参照 ?fread" msgid "colClasses is not type list or character vector" msgstr "colClasses 不是列表 (list) 或字符向量 (character vector)" @@ -1449,56 +1456,53 @@ msgid "" "colClasses=\"NULL\" (quoted) is interpreted as colClasses=NULL (the default) " "as opposed to dropping every column." msgstr "" -"colClasses=\"NULL\" (带引号) 应该被视为 colClasses=NULL (默认情况)" -"而不是弃掉每个列" +"colClasses=\"NULL\" (带引号) 应该被视为 colClasses=NULL (默认情况)而不是弃掉" +"每个列" msgid "" "strip.white==TRUE (default) and \"\" is present in na.strings, so any number " "of spaces in string columns will already be read as ." msgstr "" -"na.strings 中包含 strip.white==TRUE (默认情况) 和 \"\", 因此" -"(字符类型的)列中的空格会被当作 ." +"na.strings 中包含 strip.white==TRUE (默认情况) 和 \"\", 因此(字符类型的)列中" +"的空格会被当作 ." msgid "" "Since strip.white=TRUE (default), use na.strings=\"\" to specify that any " "number of spaces in a string column should be read as ." msgstr "" -"因为 strip.white=TRUE (默认情况), 请使用 na.strings=\"\" 以使得" -"(字符类型的)列中的空格会被当作 ." +"因为 strip.white=TRUE (默认情况), 请使用 na.strings=\"\" 以使得(字符类型的)列" +"中的空格会被当作 ." msgid "" "But strip.white=FALSE. Use strip.white=TRUE (default) together with na." "strings=\"\" to turn any number of spaces in string columns into " msgstr "" -"但是 strip.white=FALSE. 请使用 strip.white=TRUE (默认情况), 同时" -"na.strings=\"\", 以使得(字符类型的)列中的空格转成 ." +"但是 strip.white=FALSE. 请使用 strip.white=TRUE (默认情况), 同时na.strings=" +"\"\", 以使得(字符类型的)列中的空格转成 ." msgid "" "'data.table' relies on the package 'yaml' to parse the file header; please " "add this to your library with install.packages('yaml') and try again." msgstr "" -"'data.table' 依赖 'yaml' 包来分析文件头 (header)" -"请使用 install.packages('yaml') 来安装然后再重试." +"'data.table' 依赖 'yaml' 包来分析文件头 (header)请使用 install." +"packages('yaml') 来安装然后再重试." msgid "" "Combining a search string as 'skip' and reading a YAML header may not work " "as expected -- currently," msgstr "" -"读取一个 YAML 文件头 (header) 的同时以 'skip' 为搜索字符" -"可能会引起异常 -- 目前" +"读取一个 YAML 文件头 (header) 的同时以 'skip' 为搜索字符可能会引起异常 -- 目" +"前" msgid "" "reading will proceed to search for 'skip' from the beginning of the file, " "NOT from the end of" -msgstr "" -"读取会直接从文件的开头搜索 'skip', " -"而非从元数据 (metadata) " +msgstr "读取会直接从文件的开头搜索 'skip', 而非从元数据 (metadata) " msgid "" "the metadata; please file an issue on GitHub if you'd like to see more " "intuitive behavior supported." -msgstr "" -"的尾部开始; 如果你希望更直观的功能, 请在 Github 上提交 issue." +msgstr "的尾部开始; 如果你希望更直观的功能, 请在 Github 上提交 issue." msgid "Encountered <" msgstr "遇到 <" @@ -1525,8 +1529,8 @@ msgid "" "Reached the end of the file before finding a completion to the YAML header. " "A valid YAML header is bookended by lines matching" msgstr "" -"到了文件的结尾, 还没发现 YAML header 的完结." -"一个有效的 YAML header 应该根据行匹配结尾." +"到了文件的结尾, 还没发现 YAML header 的完结.一个有效的 YAML header 应该根据行" +"匹配结尾." msgid "the regex \"" msgstr "正则 \"" @@ -1617,7 +1621,8 @@ msgid "dateTimeAs must be 'ISO','squash','epoch' or 'write.csv'" msgstr "dateTimeAs 必须是 'ISO','squash','epoch' 或 'write.csv'" msgid "logicalAsInt has been renamed logical01. Use logical01 only, not both." -msgstr "logicalAsInt 已重命名为 logical01。不要同时使用它们,仅使用 logical01。" +msgstr "" +"logicalAsInt 已重命名为 logical01。不要同时使用它们,仅使用 logical01。" msgid "x being coerced from class: matrix to data.table" msgstr "x 的类将强制从 matrix 转变为 data.table" @@ -1640,8 +1645,9 @@ msgstr "' 并退出。" msgid "" "'data.table' relies on the package 'yaml' to write the file header; please " "add this to your library with install.packages('yaml') and try again." -msgstr "'data.table' 依赖于 'yaml' 包来写文件头;" -"请运行 install.packages('yaml') 安装 'yaml' 包后再试。" +msgstr "" +"'data.table' 依赖于 'yaml' 包来写文件头;请运行 install.packages('yaml') 安" +"装 'yaml' 包后再试。" msgid "Argument 'x' must be a data.table object" msgstr "'x' 参数必须是一个 data.table 对象" @@ -1669,14 +1675,14 @@ msgstr "'sets' 参数必须是一个字符向量的列表。" msgid "" "All columns used in 'sets' argument must be in 'by' too. Columns used in " "'sets' but not present in 'by':" -msgstr "在 'sets' 参数中应用的所有列也必须在 'by' 中。" -"当前 'sets' 包含而 'by' 中不含的列有:" +msgstr "" +"在 'sets' 参数中应用的所有列也必须在 'by' 中。当前 'sets' 包含而 'by' 中不含" +"的列有:" msgid "" "When using `id=TRUE` the 'x' data.table must not have a column named " "'grouping'." -msgstr "当使用 `id=TRUE` 时," -"data.table 'x' 不能包含名为 'grouping' 的列。" +msgstr "当使用 `id=TRUE` 时,data.table 'x' 不能包含名为 'grouping' 的列。" msgid "" "Character vectors in 'sets' list must not have duplicated column names " @@ -1691,15 +1697,16 @@ msgid "" "; as such, there will be duplicate rows in the output -- note that grouping " "by A,B and B,A will produce the same aggregations. Use " "`sets=unique(lapply(sets, sort))` to eliminate duplicates." -msgstr ";同样的,输出中也会包含重复的行(注意按照A、B分组与按照B、A分组的结果是一样的。)" -"使用 `sets=unique(lapply(sets, sort))` 来消除重复。" - +msgstr "" +";同样的,输出中也会包含重复的行(注意按照A、B分组与按照B、A分组的结果是一样" +"的。)使用 `sets=unique(lapply(sets, sort))` 来消除重复。" msgid "" "Expression passed to grouping sets function must not update by reference. " "Use ':=' on results of your grouping function." -msgstr "传递给分组相关函数的表达式不能通过引用更新。" -"请在你的分组函数返回的结果中使用 ':=' 。" +msgstr "" +"传递给分组相关函数的表达式不能通过引用更新。请在你的分组函数返回的结果中使用 " +"':=' 。" msgid "" "When using `id=TRUE` the 'j' expression must not evaluate to a column named " @@ -2120,13 +2127,15 @@ msgstr "与 'ignore.row.order' 进行比较的数据集,不能存在不支持 msgid "" "Argument 'tolerance' was forced to lowest accepted value `sqrt(.Machine" "$double.eps)` from provided" -msgstr "参数 'tolerance' 被强制设定为最低接受值 `sqrt(.Machine$double.eps)`," -"此值来自于:" +msgstr "" +"参数 'tolerance' 被强制设定为最低接受值 `sqrt(.Machine$double.eps)`,此值来自" +"于:" msgid "" "Duplicate rows in datasets, numeric columns and ignore.row.order cannot be " "used with non 0 tolerance argument" -msgstr "数据集中的重复行、数字列和 ignore.row.order 都不能与非 0 的容差(tolerance)" +msgstr "" +"数据集中的重复行、数字列和 ignore.row.order 都不能与非 0 的容差(tolerance)" "参数同时使用" msgid "" @@ -2147,12 +2156,14 @@ msgid "' not a column name of info" msgstr "' 不是如下信息的列名:" msgid "data.table package is loaded. Unload or start a fresh R session." -msgstr "data.table 包加载完毕,并将一直可用,直到其被卸载或启用一个新的 R 会话为止。" +msgstr "" +"data.table 包加载完毕,并将一直可用,直到其被卸载或启用一个新的 R 会话为止。" msgid "" "script must end with '.Rraw'. If a file ending '.Rraw.bz2' exists, that will " "be found and used." -msgstr "脚本必须以 '.Rraw' 结尾。如果以 'Rraw.bz2' 结尾的文件存在,也将被发现和使用。" +msgstr "" +"脚本必须以 '.Rraw' 结尾。如果以 'Rraw.bz2' 结尾的文件存在,也将被发现和使用。" msgid "Neither" msgstr "" diff --git a/po/data.table.pot b/po/data.table.pot index 8511a9c29d..57924b83b0 100644 --- a/po/data.table.pot +++ b/po/data.table.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.7\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-11-15 19:06+0800\n" +"POT-Creation-Date: 2019-11-20 05:46+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -4397,24 +4397,24 @@ msgid "" "instead." msgstr "" -#: wrappers.c:59 +#: wrappers.c:66 msgid "First argument to setlistelt must be a list()" msgstr "" -#: wrappers.c:60 +#: wrappers.c:67 msgid "Second argument to setlistelt must a length 1 integer vector" msgstr "" -#: wrappers.c:62 +#: wrappers.c:69 #, c-format msgid "i (%d) is outside the range of items [1,%d]" msgstr "" -#: wrappers.c:84 +#: wrappers.c:91 msgid "x isn't a VECSXP" msgstr "" -#: wrappers.c:99 +#: wrappers.c:106 #, c-format msgid "" "dim.data.table expects a data.table as input (which is a list), but seems to " diff --git a/po/zh_CN.po b/po/zh_CN.po index a49bbf0007..e4b2afcb9b 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-11-11 11:44+0800\n" +"POT-Creation-Date: 2019-11-20 05:46+0800\n" "PO-Revision-Date: 2019-11-10 15:29-04\n" "Last-Translator: Xianghui Dong \n" "Language-Team: Mandarin\n" @@ -1613,9 +1613,10 @@ msgid "" "needed on a list/data.table, you'll need the order anyway if not sorted, so " "use if (length(o<-forder(...))) for efficiency in one step, or equivalent at " "C level" -msgstr "is.sorted (R层面)和 fsorted (C 层面)使用对象仅为向量。如果" -"需要用于list或data.table,需要对其进行排序" -"如果(length(o<-forder(...))),使用提高效率,或相当于在 " +msgstr "" +"is.sorted (R层面)和 fsorted (C 层面)使用对象仅为向量。如果需要用于list或data." +"table,需要对其进行排序如果(length(o<-forder(...))),使用提高效率,或相当于" +"在 " #: forder.c:1302 #, c-format @@ -1659,8 +1660,7 @@ msgstr "'cols' 的 %d 项为 %d ,超出1的范围 [1,ncol(x)=%d]" msgid "" "Column %d of input list x is length %d, inconsistent with first column of " "that item which is length %d." -msgstr "输入列表x的列 %d 长度为 %d,不同于第一列的" -"该项长度为 %d" +msgstr "输入列表x的列 %d 长度为 %d,不同于第一列的该项长度为 %d" #: frank.c:65 frank.c:202 transpose.c:88 #, c-format @@ -1671,8 +1671,9 @@ msgstr "不支持的列类型 '%s'" msgid "" "Internal error: invalid ties.method for frankv(), should have been caught " "before. please report to data.table issue tracker" -msgstr "内部错误:对于 frankv()的无效值ties.method,应在" -"之前被捕获。请报告给 data.table issue tracker" +msgstr "" +"内部错误:对于 frankv()的无效值ties.method,应在之前被捕获。请报告给 data." +"table issue tracker" #: frank.c:130 #, c-format @@ -1723,8 +1724,7 @@ msgstr "内存上的文件复制耗时 %.3f 秒\n" msgid "" "Previous fread() session was not cleaned up properly. Cleaned up ok at the " "beginning of this fread() call.\n" -msgstr "之前的会话fread()未正确清理。在" -"当前 fread() 会话开始前清理好\n" +msgstr "之前的会话fread()未正确清理。在当前 fread() 会话开始前清理好\n" #: fread.c:1102 msgid "[01] Check arguments\n" @@ -1739,9 +1739,7 @@ msgstr "使用 %d 线程 (omp_get_max_threads()=%d, nth=%d)\n" msgid "" "Internal error: NAstrings is itself NULL. When empty it should be pointer to " "NULL." -msgstr "" -"内部错误:NAstrings 自身为空值。当清空该项会指向" -"NULL空值" +msgstr "内部错误:NAstrings 自身为空值。当清空该项会指向NULL空值" #: fread.c:1135 #, c-format @@ -1753,8 +1751,7 @@ msgstr "freadMain: NAstring <<%s>> 在开始或者结束处有空白" msgid "" "freadMain: NAstring <<%s>> is recognized as type boolean, this is not " "permitted." -msgstr "freadMain: NAstring <<%s>> 被识别为布尔型,这是不" -"允许" +msgstr "freadMain: NAstring <<%s>> 被识别为布尔型,这是不允许" #: fread.c:1150 msgid " No NAstrings provided.\n" @@ -1823,9 +1820,7 @@ msgstr "[02] 打开文件\n" msgid "" " `input` argument is provided rather than a file name, interpreting as raw " "text to read\n" -msgstr "" -"提供 `input` 参数而非文件名,理解为原始的" -"文本读取\n" +msgstr "提供 `input` 参数而非文件名,理解为原始的文本读取\n" #: fread.c:1199 msgid "Internal error: last byte of character input isn't \\0" @@ -4174,14 +4169,17 @@ msgstr "列 %d 的长度是 %d ,与列 1 (%d) 的长度不同。数据表无 msgid "" "reorder accepts vectors but this non-VECSXP is type '%s' which isn't yet " "supported (SIZEOF=%d)" -msgstr "重新排序需要输入向量,但输入了 '%s' 类型的非向量对象,目前并不支持 (SIZEOF=%d)" +msgstr "" +"重新排序需要输入向量,但输入了 '%s' 类型的非向量对象,目前并不支持 (SIZEOF=" +"%d)" #: reorder.c:28 msgid "" "Internal error in reorder.c: cannot reorder an ALTREP vector. Please see " "NEWS item 2 in v1.11.4 and report this as a bug." -msgstr "reorder.c中的内部错误:无法重新排序ALTREP向量。请参阅 v1.11.4 中“新闻”(NEWS)的" -"项目2,并将其作为 BUG 上报。" +msgstr "" +"reorder.c中的内部错误:无法重新排序ALTREP向量。请参阅 v1.11.4 中“新" +"闻”(NEWS)的项目2,并将其作为 BUG 上报。" #: reorder.c:33 msgid "order must be an integer vector" @@ -4207,14 +4205,16 @@ msgstr "在工作内存中无法分配 %d * %d 个字节对 data.table 重新排 #, c-format msgid "" "type '%s' passed to shift(). Must be a vector, list, data.frame or data.table" -msgstr "传递给 shift() 的 '%s' 类型,必须是向量、列表、data.frame 或 data.table" +msgstr "" +"传递给 shift() 的 '%s' 类型,必须是向量、列表、data.frame 或 data.table" #: shift.c:24 shift.c:28 msgid "" "Internal error: invalid type for shift(), should have been caught before. " "please report to data.table issue tracker" -msgstr "内部错误:shift() 的类型无效,请提前排查。请向 data.table 提交问题" -"追踪(issue tracker)报告" +msgstr "" +"内部错误:shift() 的类型无效,请提前排查。请向 data.table 提交问题追踪" +"(issue tracker)报告" #: shift.c:31 msgid "Internal error: k must be integer" @@ -4240,7 +4240,9 @@ msgstr "内部错误: subsetVectorRaw ans length(ans)==%d n=%d" msgid "" "Internal error: column type '%s' not supported by data.table subset. All " "known types are supported so please report as bug." -msgstr "内部错误:data.table 子集不支持列类型 '%s' 。已知所有类型均被支持,因此请提交此BUG。" +msgstr "" +"内部错误:data.table 子集不支持列类型 '%s' 。已知所有类型均被支持,因此请提交" +"此BUG。" #: subset.c:97 subset.c:121 #, c-format @@ -4284,14 +4286,17 @@ msgstr "i 的第 %d 项是 %d ,第 %d 项是 NA 。负值和 NA 不能混用 msgid "" "Item %d of i is %d but there are only %d rows. Ignoring this and %d more " "like it out of %d." -msgstr "i 的第 %d 项是 %d ,但只有 %d 行。忽略这项以及其他相似的 %d 项(共 %d 项)。" +msgstr "" +"i 的第 %d 项是 %d ,但只有 %d 行。忽略这项以及其他相似的 %d 项(共 %d 项)。" #: subset.c:209 #, c-format msgid "" "Item %d of i is %d which removes that item but that has occurred before. " "Ignoring this dup and %d other dups." -msgstr "i 的第 %d 项是 %d ,它删除了这项但此操作之前发生过。忽略该重复以及其他 %d 个重复。" +msgstr "" +"i 的第 %d 项是 %d ,它删除了这项但此操作之前发生过。忽略该重复以及其他 %d 个" +"重复。" #: subset.c:223 #, c-format @@ -4330,7 +4335,8 @@ msgstr "内部错误:空集(NULL)不能作为子集。data.table 包含空 msgid "" "Internal error: CsubsetVector is internal-use-only but has received " "negatives, zeros or out-of-range" -msgstr "内部错误:CsubsetVector 仅供内部使用,但收到了负数、零或其他超出范围的值" +msgstr "" +"内部错误:CsubsetVector 仅供内部使用,但收到了负数、零或其他超出范围的值" #: transpose.c:9 msgid "l must be a list." @@ -4544,24 +4550,24 @@ msgid "" "instead." msgstr "" -#: wrappers.c:59 +#: wrappers.c:66 msgid "First argument to setlistelt must be a list()" msgstr "" -#: wrappers.c:60 +#: wrappers.c:67 msgid "Second argument to setlistelt must a length 1 integer vector" msgstr "" -#: wrappers.c:62 +#: wrappers.c:69 #, c-format msgid "i (%d) is outside the range of items [1,%d]" msgstr "" -#: wrappers.c:84 +#: wrappers.c:91 msgid "x isn't a VECSXP" msgstr "" -#: wrappers.c:99 +#: wrappers.c:106 #, c-format msgid "" "dim.data.table expects a data.table as input (which is a list), but seems to " From c13a1fbbcc15b54f6f802286394adf663b2f706d Mon Sep 17 00:00:00 2001 From: Amy Tzu-Yu Chen Date: Wed, 20 Nov 2019 07:58:54 -0800 Subject: [PATCH 46/78] Translation to zh_CN - Group 7 (#4019) * translate R msgs * src error messages * missing quote * missing quote * remove extra quote --- po/R-zh_CN.po | 71 +++++++++++++++++++++------------------- po/zh_CN.po | 91 +++++++++++++++++++++++++++------------------------ 2 files changed, 87 insertions(+), 75 deletions(-) diff --git a/po/R-zh_CN.po b/po/R-zh_CN.po index 1e0c9d0de1..3d7fdd1d44 100644 --- a/po/R-zh_CN.po +++ b/po/R-zh_CN.po @@ -1,9 +1,9 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.5\n" -"POT-Creation-Date: 2019-11-20 05:46\n" -"PO-Revision-Date: 2019-11-10 15:29-04\n" -"Last-Translator: Xianghui Dong \n" +"POT-Creation-Date: 2019-10-21 16:15\n" +"PO-Revision-Date: 2019-10-31 15:46+08\n" +"Last-Translator: Amy Tzu-Yu Chen \n" "Language-Team: Mandarin\n" "Language: Mandarin\n" "MIME-Version: 1.0\n" @@ -701,107 +701,112 @@ msgstr "" "第二顺位参数" msgid "Internal error: length(irows)!=length(o__)" -msgstr "" +msgstr "内部错误:length(irows)!=length(o__)" msgid "" "The setkey() normally performed by keyby= has been skipped (as if by= was " "used) because := is being used together with keyby= but the keyby= contains " "some expressions. To avoid this warning, use by= instead, or provide " "existing column names to keyby=." -msgstr "" +msgstr "因为`:=`与`keyby=`一起使用且`keyby=`含有表达式, 所以代码跳过了一般" +"`keyby=`会执行的`setkey()` -- 代码只执行了`by=`。" +"若要避免此警告, 请使用`by=`, 或者提供`keyby=`现有的列名" msgid "Internal error: jvnames is length" -msgstr "" +msgstr "内部错误:jvnames 是长度" msgid "but ans is" -msgstr "" +msgstr "但是ans(答案)是" msgid "and bynames is" -msgstr "" +msgstr "同时bynames是" msgid "rownames and rownames.value cannot both be used at the same time" -msgstr "" +msgstr "rownames和rownames.value 不能同时使用" msgid "length(rownames)==" -msgstr "" +msgstr "length(rownames)== (行名长度==)" msgid "but nrow(DT)==" -msgstr "" +msgstr "但是nrow(DT)==" msgid "" ". The rownames argument specifies a single column name or number. Consider " "rownames.value= instead." -msgstr "" +msgstr "。 rownames参数为单一列名或单一数值。请考虑使用`rownames.values=`。" msgid "" "length(rownames)==0 but should be a single column name or number, or NULL" -msgstr "" +msgstr "行名长度为零,`length(rownames)==0`,但应该为单一列名,单一数值,或NULL" msgid "rownames is TRUE but key has multiple columns" -msgstr "" +msgstr "rownames是TRUE但key不只一个列" msgid "; taking first column x[,1] as rownames" -msgstr "" +msgstr "; 取第一列, `column x[,1]`, 为rownames" msgid "'" -msgstr "" +msgstr "'" msgid "' is not a column of x" -msgstr "" +msgstr "' 不是x的一个列" msgid "as.integer(rownames)==" -msgstr "" +msgstr "as.integer(rownames)==" msgid "]." -msgstr "" +msgstr "]." msgid "length(rownames.value)==" -msgstr "" +msgstr "length(rownames.value)==" msgid "but should be nrow(x)==" -msgstr "" +msgstr "但应该是nrow(x)==" msgid "" "When i is a matrix in DT[i]<-value syntax, it doesn't make sense to provide j" -msgstr "" +msgstr "当i以`DT[i]<-value`的形式出现,不需要提供j" msgid "j must be an atomic vector, see ?is.atomic" -msgstr "" +msgstr "j必须是原子向量,请参考 ?is.atomic" msgid "NA in j" -msgstr "" +msgstr "j里有NA" msgid "j must be vector of column name or positions" -msgstr "" +msgstr "j 必须是列名(column name)或列位(column position)的向量" msgid "" "Attempt to assign to column position greater than ncol(x). Create the column " "by name, instead. This logic intends to catch (most likely) user errors." -msgstr "" +msgstr "试图指定至比ncol(x)还大的列位(column position)。请指定至列名(column name)。" +"一般来说用列名取代列位能解决大部分错误。" msgid "" "data.table inherits from data.frame (from v1.5), but this data.table does " "not. Has it been created manually (e.g. by using 'structure' rather than " "'data.table') or saved to disk using a prior version of data.table?" -msgstr "" +msgstr "data.table继承自data.frame(v1.5),但这个data.table并不是。" +"请检查这个data.table是不是手动创建的(可能创建时使用了`structure()`而非`data.table()`)," +"或者是不是使用了更早的data.table版本创建后存到硬盘了。" msgid "attempting to assign invalid object to dimnames of a data.table" -msgstr "" +msgstr "试图指定无效对象给data.table的维度名(dimnames)" msgid "data.tables do not have rownames" -msgstr "" +msgstr "data.tables没有rownames" msgid "Can't assign" -msgstr "" +msgstr "无法指定" msgid "colnames to a" -msgstr "" +msgstr "列名为一个" msgid "-column data.table" -msgstr "" +msgstr "-列 data.table" msgid "'subset' must evaluate to logical" -msgstr "" +msgstr "'subset' 必须为logical" msgid "Argument 'invert' must be logical TRUE/FALSE" msgstr "" diff --git a/po/zh_CN.po b/po/zh_CN.po index e4b2afcb9b..256b6fcd75 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -2,9 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-11-20 05:46+0800\n" -"PO-Revision-Date: 2019-11-10 15:29-04\n" -"Last-Translator: Xianghui Dong \n" +"POT-Creation-Date: 2019-11-01 00:42+0800\n" +"PO-Revision-Date: 2019-10-31 17:27+08\n" +"Last-Translator: Amy Tzu-Yu Chen \n" "Language-Team: Mandarin\n" "Language: Mandarin\n" "MIME-Version: 1.0\n" @@ -1154,120 +1154,121 @@ msgstr "" #: dogroups.c:458 #, c-format msgid " eval(j) took %.3fs for %d calls\n" -msgstr "" +msgstr " eval(j)取%.3fs给 %d 调用\n" #: dogroups.c:482 msgid "growVector passed NULL" -msgstr "" +msgstr "growVector通过NULL" #: fastmean.c:39 msgid "narm should be TRUE or FALSE" -msgstr "" +msgstr "narm必须是TRUE或FALSE" #: fastmean.c:45 #, c-format msgid "fastmean was passed type %s, not numeric or logical" -msgstr "" +msgstr "传递给 fastmean 的是 %s 类型,而不是数值或逻辑类型" #: fastmean.c:83 fastmean.c:111 #, c-format msgid "Internal error: type '%s' not caught earlier in fastmean" -msgstr "" +msgstr "内部错误:先前fastmean没有侦测到类型 '%s' " #: fcast.c:80 #, c-format msgid "Unsupported column type in fcast val: '%s'" -msgstr "" +msgstr "fcast val不支持的列类型:'%s'" #: fifelse.c:5 msgid "Argument 'test' must be logical." -msgstr "" +msgstr "参数'test'必须是逻辑类型。" #: fifelse.c:23 #, c-format msgid "" "'yes' is of type %s but 'no' is of type %s. Please make sure that both " "arguments have the same type." -msgstr "" +msgstr "'yes'是%s类型,但'no'是%s类型。请确认两个参数是同一类型。" #: fifelse.c:28 msgid "" "'yes' has different class than 'no'. Please make sure that both arguments " "have the same class." -msgstr "" +msgstr "'yes'的类型与'no'不同。请确认两个参数是同一类型。" #: fifelse.c:33 msgid "'yes' and 'no' are both type factor but their levels are different." -msgstr "" +msgstr "'yes'和'no'都是因子类型但他们的因子水平不同。" #: fifelse.c:38 #, c-format msgid "Length of 'yes' is %lld but must be 1 or length of 'test' (%lld)." -msgstr "" +msgstr "'yes'长度是%lld但长度必须是1或者等于'test'的长度 (%lld)。" #: fifelse.c:40 #, c-format msgid "Length of 'no' is %lld but must be 1 or length of 'test' (%lld)." -msgstr "" +msgstr "'no'长度是%lld但长度必须是1或者等于'test'的长度 (%lld)。" #: fifelse.c:51 #, c-format msgid "Length of 'na' is %lld but must be 1" -msgstr "" +msgstr "'na'长度是%lld但必须是长度必须是1" #: fifelse.c:57 #, c-format msgid "" "'yes' is of type %s but 'na' is of type %s. Please make sure that both " "arguments have the same type." -msgstr "" +msgstr "'yes'是%s类型,但'na'是%s类型。请确认两个参数是同一类型。" #: fifelse.c:59 msgid "" "'yes' has different class than 'na'. Please make sure that both arguments " "have the same class." -msgstr "" +msgstr "'yes'的类型与'na'不同。请确认两个参数是同一类型。" #: fifelse.c:63 msgid "'yes' and 'na' are both type factor but their levels are different." -msgstr "" +msgstr "'yes'和'na'都是因子类型但他们的因子水平不同" #: fifelse.c:133 #, c-format msgid "Type %s is not supported." -msgstr "" +msgstr "不支持类型 %s" #: fmelt.c:18 msgid "'x' must be an integer" -msgstr "" +msgstr "'x'必须是整数" #: fmelt.c:19 msgid "'n' must be a positive integer" -msgstr "" +msgstr "'n'必须是正整数" #: fmelt.c:41 msgid "Argument to 'which' must be logical" -msgstr "" +msgstr "'which'的参数必须是逻辑值" #: fmelt.c:70 msgid "concat: 'vec must be a character vector" -msgstr "" +msgstr "串联:'vec 必须是一个字符向量" #: fmelt.c:71 msgid "concat: 'idx' must be an integer vector of length >= 0" -msgstr "" +msgstr "串联:'idx' 必须为一个长度>= 0的整数向量" #: fmelt.c:75 #, c-format msgid "" "Internal error in concat: 'idx' must take values between 0 and length(vec); " "0 <= idx <= %d" -msgstr "" +msgstr "串联内部错误:'idx'必须为0到length(vec)之间的值;" +"0 <= idx <= %d" #: fmelt.c:102 #, c-format msgid "Unknown 'measure.vars' type %s at index %d of list" -msgstr "" +msgstr "未知'measure.vars'类型 %s,位于列表中 %d" #: fmelt.c:148 #, c-format @@ -1276,80 +1277,86 @@ msgid "" "non-numeric/integer/logical type columns are considered id.vars, which in " "this case are columns [%s]. Consider providing at least one of 'id' or " "'measure' vars in future." -msgstr "" +msgstr "当'id.vars'和'measure.vars'都是NULL时,data.table会自动猜测适当值。" +"所有非数值/整数/逻辑类型列会作为'id.vars',即以下列 [%s]。" +"以后请考虑择一指定'id.vars'或'measure.vars'。" #: fmelt.c:154 fmelt.c:219 #, c-format msgid "Unknown 'id.vars' type %s, must be character or integer vector" -msgstr "" +msgstr "未知'id.vars'类型 %s,必须是字符或者整数向量(vector)" #: fmelt.c:159 fmelt.c:223 msgid "One or more values in 'id.vars' is invalid." -msgstr "" +msgstr "'id.vars'里,一或多个数值无效" #: fmelt.c:175 msgid "" "'measure.vars' is missing. Assigning all columns other than 'id.vars' " "columns as 'measure.vars'.\n" -msgstr "" +msgstr "找不到'measure.vars'。将指定所有'id.vars'以外的所有列为" +"'measure.vars'。\n" #: fmelt.c:176 #, c-format msgid "Assigned 'measure.vars' are [%s].\n" -msgstr "" +msgstr "指定'measure.vars'为[%s]。\n" #: fmelt.c:184 #, c-format msgid "" "Unknown 'measure.vars' type %s, must be character or integer vector/list" -msgstr "" +msgstr "未知'measure.vars'类型 %s,必须是字符或者整数向量(vector)/列表(list)" #: fmelt.c:193 fmelt.c:239 msgid "One or more values in 'measure.vars' is invalid." -msgstr "" +msgstr "'measure.vars'里,一或多个数值无效" #: fmelt.c:211 msgid "" "'id.vars' is missing. Assigning all columns other than 'measure.vars' " "columns as 'id.vars'.\n" -msgstr "" +msgstr "找不到'id.vars'。将指定所有'measure.vars'以外的所有列为'id.vars'。\n" #: fmelt.c:212 #, c-format msgid "Assigned 'id.vars' are [%s].\n" -msgstr "" +msgstr "指定的 'id.vars' 是 [%s].\n" #: fmelt.c:231 #, c-format msgid "Unknown 'measure.vars' type %s, must be character or integer vector" -msgstr "" +msgstr "未知'measure.vars'类型 %s,必须是字符或者整数向量" #: fmelt.c:276 msgid "" "When 'measure.vars' is a list, 'value.name' must be a character vector of " "length =1 or =length(measure.vars)." -msgstr "" +msgstr "当'measure.vars'是一个列表(list), 'value.name' 必须是一个" +"长度为1或者等于length(measure.vars)的字符向量" + #: fmelt.c:277 msgid "" "When 'measure.vars' is either not specified or a character/integer vector, " "'value.name' must be a character vector of length =1." -msgstr "" +msgstr "当'measure.vars'未被指定或者是一个字符/整数向量时," +"'value.name'必须是一个长度1的字符/整数向量" #: fmelt.c:280 msgid "'variable.name' must be a character/integer vector of length=1." -msgstr "" +msgstr "'variable.name' 必须是长度1的字符/整数向量。" #: fmelt.c:329 msgid "" "Internal error: combineFactorLevels in fmelt.c expects all-character input" -msgstr "" +msgstr "内部错误:fmelt.c里的combineFactorLevels期望输入值为全字符" #: fmelt.c:332 msgid "" "Internal error: combineFactorLevels in fmelt.c expects a character target to " "factorize" -msgstr "" +msgstr "内部错误:fmelt.c里的combineFactorLevels期望一个字符来分解" #: fmelt.c:385 #, c-format From 396a5b2591916635b7b7282318490a8b7ff5a338 Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Thu, 21 Nov 2019 07:59:42 +0800 Subject: [PATCH 47/78] fix-up of merge --- src/fread.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/fread.c b/src/fread.c index f3efe61834..567cbcbb1a 100644 --- a/src/fread.c +++ b/src/fread.c @@ -1390,8 +1390,8 @@ int freadMain(freadMainArgs _args) { row1line++; } } - if (ch > sof && verbose) DTPRINT(_(" Skipped to line %"PRIu64" in the file"), (llu)row1line); - if (ch>=eof) STOP(_("skip=%"PRIu64" but the input only has %"PRIu64" line%s"), (llu)args.skipNrow, (llu)row1line, row1line>1?"s":""); + if (ch > sof && verbose) DTPRINT(_(" Skipped to line %"PRIu64" in the file"), (uint64_t)row1line); + if (ch>=eof) STOP(_("skip=%"PRIu64" but the input only has %"PRIu64" line%s"), (uint64_t)args.skipNrow, (uint64_t)row1line, row1line>1?"s":""); pos = ch; } @@ -1992,7 +1992,7 @@ int freadMain(freadMainArgs _args) { restartTeam = false; if (verbose) DTPRINT(_(" jumps=[%d..%d), chunk_size=%"PRIu64", total_size=%"PRIu64"\n"), jump0, nJumps, (uint64_t)chunkBytes, (uint64_t)(eof-pos)); - ASSERT(allocnrow <= nrowLimit, _("allocnrow(%"PRIu64") <= nrowLimit(%"PRIu64")"), (uint64_t)allocnrow, (uint64_t)nrowLimit); + ASSERT(allocnrow <= nrowLimit, "allocnrow(%"PRIu64") <= nrowLimit(%"PRIu64")", (uint64_t)allocnrow, (uint64_t)nrowLimit); #pragma omp parallel num_threads(nth) { int me = omp_get_thread_num(); From a613456549e17e886967e3e660c5d2852a24400d Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Thu, 21 Nov 2019 08:17:19 +0800 Subject: [PATCH 48/78] update po after merge --- inst/po/en@quot/LC_MESSAGES/data.table.mo | Bin 138720 -> 140104 bytes inst/po/zh_CN/LC_MESSAGES/R-data.table.mo | Bin 38850 -> 42572 bytes inst/po/zh_CN/LC_MESSAGES/data.table.mo | Bin 55561 -> 59859 bytes po/data.table.pot | 482 +++++++++---------- po/zh_CN.po | 537 +++++++++++----------- 5 files changed, 532 insertions(+), 487 deletions(-) diff --git a/inst/po/en@quot/LC_MESSAGES/data.table.mo b/inst/po/en@quot/LC_MESSAGES/data.table.mo index 0268e1b93aaf402535b802d8a76106a296600ba1..cd9ef4957478faa6a53558b84bb9346067c68712 100644 GIT binary patch delta 21284 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 U=9GW24!Kx|a=F)MGQG3@AIt9S6#xJL diff --git a/inst/po/zh_CN/LC_MESSAGES/R-data.table.mo b/inst/po/zh_CN/LC_MESSAGES/R-data.table.mo index eb9d10699b78ad1baa793fddc9533a05c444a731..c9de091a47babd9ea9cad3c78fc90b6eaa668506 100644 GIT binary patch delta 9321 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 D2E6h3 delta 8015 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

-(`vJmzrsdH!_&)?g4%o0Y<9r zf2TXd7#ZWfl|3;jLlz>|Y9v}?;;rdMI^AYsrzWLm*mW}1h>x+ygm^h$@ASyiS={Yz z6=!hYvMNsRAy2)WnPW>|aSlir@0nkm9FYGg+1L4!ZAGR0hiSu|GiRK$I45Luu{iTG zpI3Hno!!MFz`fS7ESW5}Uc6LWa<(j*-UqTH{4$)M&ztVqF|lU9L6PFsF8t0s~u%D;5VN`tJbmi_Z ze|zbjBZuy;UvziR9({+3;^ofcOYMi;@YsI z;`nMlY;9B=%Xcl_cCX;Lt8Dwf-edYaSLq?n`wz|@@y|{V{J+~h$n4AAU4^byTZ}-x z-ckFI(H*S+urpwS@A*&E?Jl8TY@~WbJ+b$u{fm*MW~*xl8UX zUSar!`pPDD?JcZ$a{*KBTC&)+cir8cW%mjXI`$gWkp$~WZw&pt8Oi342AJpT@hoWm;s diff --git a/po/data.table.pot b/po/data.table.pot index 57924b83b0..0ac90c9d40 100644 --- a/po/data.table.pot +++ b/po/data.table.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.7\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-11-20 05:46+0800\n" +"POT-Creation-Date: 2019-11-21 08:00+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -614,7 +614,8 @@ msgstr "" #: between.c:95 #, c-format -msgid "Item %d of lower (%lld) is greater than item %d of upper (%lld)" +msgid "" +"Item %d of lower (%) is greater than item %d of upper (%)" msgstr "" #: between.c:112 @@ -784,8 +785,8 @@ msgstr "" #: chmatch.c:60 #, c-format msgid "" -"Failed to allocate %lld bytes working memory in chmatchdup: length(table)=%d " -"length(unique(table))=%d" +"Failed to allocate % bytes working memory in chmatchdup: " +"length(table)=%d length(unique(table))=%d" msgstr "" #: cj.c:89 @@ -1120,17 +1121,19 @@ msgstr "" #: fifelse.c:38 #, c-format -msgid "Length of 'yes' is %lld but must be 1 or length of 'test' (%lld)." +msgid "" +"Length of 'yes' is % but must be 1 or length of 'test' (%)." msgstr "" #: fifelse.c:40 #, c-format -msgid "Length of 'no' is %lld but must be 1 or length of 'test' (%lld)." +msgid "" +"Length of 'no' is % but must be 1 or length of 'test' (%)." msgstr "" #: fifelse.c:51 #, c-format -msgid "Length of 'na' is %lld but must be 1" +msgid "Length of 'na' is % but must be 1" msgstr "" #: fifelse.c:57 @@ -1512,7 +1515,7 @@ msgstr "" #: forder.c:797 #, c-format -msgid "stat[%03d]==%10zd\n" +msgid "stat[%03d]==%20\n" msgstr "" #: forder.c:1053 @@ -1603,362 +1606,370 @@ msgstr "" msgid "Internal error. Argument 'cols' to CanyNA is type '%s' not 'integer'" msgstr "" -#: fread.c:153 +#: fread.c:147 #, c-format msgid "System error %d unmapping view of file\n" msgstr "" -#: fread.c:156 +#: fread.c:150 #, c-format msgid "System errno %d unmapping file: %s\n" msgstr "" -#: fread.c:216 +#: fread.c:210 #, c-format msgid "Internal error: NUMTYPE(%d) > nLetters(%d)" msgstr "" -#: fread.c:441 +#: fread.c:435 #, c-format msgid "Unable to allocate %s of contiguous virtual RAM. %s allocation." msgstr "" -#: fread.c:446 +#: fread.c:440 #, c-format msgid "Avoidable %.3f seconds. %s time to copy.\n" msgstr "" -#: fread.c:447 +#: fread.c:441 #, c-format msgid " File copy in RAM took %.3f seconds.\n" msgstr "" -#: fread.c:1099 +#: fread.c:1093 msgid "" "Previous fread() session was not cleaned up properly. Cleaned up ok at the " "beginning of this fread() call.\n" msgstr "" -#: fread.c:1102 +#: fread.c:1096 msgid "[01] Check arguments\n" msgstr "" -#: fread.c:1109 +#: fread.c:1103 #, c-format msgid " Using %d threads (omp_get_max_threads()=%d, nth=%d)\n" msgstr "" -#: fread.c:1117 +#: fread.c:1111 msgid "" "Internal error: NAstrings is itself NULL. When empty it should be pointer to " "NULL." msgstr "" -#: fread.c:1135 +#: fread.c:1129 #, c-format msgid "freadMain: NAstring <<%s>> has whitespace at the beginning or end" msgstr "" -#: fread.c:1140 +#: fread.c:1134 #, c-format msgid "" "freadMain: NAstring <<%s>> is recognized as type boolean, this is not " "permitted." msgstr "" -#: fread.c:1150 +#: fread.c:1144 msgid " No NAstrings provided.\n" msgstr "" -#: fread.c:1152 +#: fread.c:1146 msgid " NAstrings = [" msgstr "" -#: fread.c:1155 +#: fread.c:1149 msgid "]\n" msgstr "" -#: fread.c:1157 +#: fread.c:1151 msgid " One or more of the NAstrings looks like a number.\n" msgstr "" -#: fread.c:1159 +#: fread.c:1153 msgid " None of the NAstrings look like numbers.\n" msgstr "" -#: fread.c:1161 +#: fread.c:1155 #, c-format -msgid " skip num lines = %llu\n" +msgid " skip num lines = %\n" msgstr "" -#: fread.c:1162 +#: fread.c:1156 #, c-format msgid " skip to string = <<%s>>\n" msgstr "" -#: fread.c:1163 +#: fread.c:1157 #, c-format msgid " show progress = %d\n" msgstr "" -#: fread.c:1164 +#: fread.c:1158 #, c-format msgid " 0/1 column will be read as %s\n" msgstr "" -#: fread.c:1172 +#: fread.c:1158 +msgid "boolean" +msgstr "" + +#: fread.c:1158 +msgid "integer" +msgstr "" + +#: fread.c:1166 #, c-format msgid "sep == quote ('%c') is not allowed" msgstr "" -#: fread.c:1173 +#: fread.c:1167 msgid "dec='' not allowed. Should be '.' or ','" msgstr "" -#: fread.c:1174 +#: fread.c:1168 #, c-format msgid "sep == dec ('%c') is not allowed" msgstr "" -#: fread.c:1175 +#: fread.c:1169 #, c-format msgid "quote == dec ('%c') is not allowed" msgstr "" -#: fread.c:1192 +#: fread.c:1186 msgid "[02] Opening the file\n" msgstr "" -#: fread.c:1195 +#: fread.c:1189 msgid "" " `input` argument is provided rather than a file name, interpreting as raw " "text to read\n" msgstr "" -#: fread.c:1199 +#: fread.c:1193 msgid "Internal error: last byte of character input isn't \\0" msgstr "" -#: fread.c:1202 +#: fread.c:1196 #, c-format msgid " Opening file %s\n" msgstr "" -#: fread.c:1206 +#: fread.c:1200 #, c-format msgid "file not found: %s" msgstr "" -#: fread.c:1210 +#: fread.c:1204 #, c-format msgid "Opened file ok but couldn't obtain its size: %s" msgstr "" -#: fread.c:1213 fread.c:1241 +#: fread.c:1207 fread.c:1235 #, c-format msgid "File is empty: %s" msgstr "" -#: fread.c:1214 fread.c:1242 +#: fread.c:1208 fread.c:1236 #, c-format msgid " File opened, size = %s.\n" msgstr "" -#: fread.c:1231 +#: fread.c:1225 #, c-format msgid "File not found: %s" msgstr "" -#: fread.c:1237 +#: fread.c:1231 #, c-format msgid "Unable to open file after %d attempts (error %d): %s" msgstr "" -#: fread.c:1239 +#: fread.c:1233 #, c-format msgid "GetFileSizeEx failed (returned 0) on file: %s" msgstr "" -#: fread.c:1244 +#: fread.c:1238 #, c-format msgid "This is Windows, CreateFileMapping returned error %d for file %s" msgstr "" -#: fread.c:1251 +#: fread.c:1245 #, c-format msgid "" "Opened %s file ok but could not memory map it. This is a %dbit process. %s." msgstr "" -#: fread.c:1252 +#: fread.c:1246 msgid "Please upgrade to 64bit" msgstr "" -#: fread.c:1252 +#: fread.c:1246 msgid "There is probably not enough contiguous virtual memory available" msgstr "" -#: fread.c:1255 +#: fread.c:1249 msgid " Memory mapped ok\n" msgstr "" -#: fread.c:1257 +#: fread.c:1251 msgid "" "Internal error: Neither `input` nor `filename` are given, nothing to read." msgstr "" -#: fread.c:1274 +#: fread.c:1268 msgid "[03] Detect and skip BOM\n" msgstr "" -#: fread.c:1278 +#: fread.c:1272 msgid "" " UTF-8 byte order mark EF BB BF found at the start of the file and " "skipped.\n" msgstr "" -#: fread.c:1283 +#: fread.c:1277 msgid "" "GB-18030 encoding detected, however fread() is unable to decode it. Some " "character fields may be garbled.\n" msgstr "" -#: fread.c:1286 +#: fread.c:1280 msgid "" "File is encoded in UTF-16, this encoding is not supported by fread(). Please " "recode the file to UTF-8." msgstr "" -#: fread.c:1291 +#: fread.c:1285 #, c-format msgid " Last byte(s) of input found to be %s and removed.\n" msgstr "" -#: fread.c:1294 +#: fread.c:1288 msgid "Input is empty or only contains BOM or terminal control characters" msgstr "" -#: fread.c:1301 +#: fread.c:1295 msgid "[04] Arrange mmap to be \\0 terminated\n" msgstr "" -#: fread.c:1308 +#: fread.c:1302 msgid "" " No \\n exists in the file at all, so single \\r (if any) will be taken as " "one line ending. This is unusual but will happen normally when there is no " "\\r either; e.g. a single line missing its end of line.\n" msgstr "" -#: fread.c:1309 +#: fread.c:1303 msgid "" " \\n has been found in the input and different lines can end with different " "line endings (e.g. mixed \\n and \\r\\n in one file). This is common and " "ideal.\n" msgstr "" -#: fread.c:1333 +#: fread.c:1327 #, c-format msgid "" " File ends abruptly with '%c'. Final end-of-line is missing. Using cow page " "to write 0 to the last byte.\n" msgstr "" -#: fread.c:1339 +#: fread.c:1333 msgid "" "This file is very unusual: it ends abruptly without a final newline, and " "also its size is a multiple of 4096 bytes. Please properly end the last row " "with a newline using for example 'echo >> file' to avoid this " msgstr "" -#: fread.c:1340 +#: fread.c:1334 #, c-format msgid " File ends abruptly with '%c'. Copying file in RAM. %s copy.\n" msgstr "" -#: fread.c:1374 +#: fread.c:1368 msgid "[05] Skipping initial rows if needed\n" msgstr "" -#: fread.c:1380 +#: fread.c:1374 #, c-format msgid "" "skip='%s' not found in input (it is case sensitive and literal; i.e., no " "patterns, wildcards or regex)" msgstr "" -#: fread.c:1386 +#: fread.c:1380 #, c-format msgid "" -"Found skip='%s' on line %llu. Taking this to be header row or first row of " -"data.\n" +"Found skip='%s' on line %. Taking this to be header row or first row " +"of data.\n" msgstr "" -#: fread.c:1399 +#: fread.c:1393 #, c-format -msgid " Skipped to line %llu in the file" +msgid " Skipped to line % in the file" msgstr "" -#: fread.c:1400 +#: fread.c:1394 #, c-format -msgid "skip=%llu but the input only has %llu line%s" +msgid "skip=% but the input only has % line%s" msgstr "" -#: fread.c:1409 +#: fread.c:1403 msgid "" "Input is either empty, fully whitespace, or skip has been set after the last " "non-whitespace." msgstr "" -#: fread.c:1411 +#: fread.c:1405 #, c-format msgid " Moved forward to first non-blank line (%d)\n" msgstr "" -#: fread.c:1412 +#: fread.c:1406 #, c-format msgid " Positioned on line %d starting: <<%s>>\n" msgstr "" -#: fread.c:1430 +#: fread.c:1424 msgid "[06] Detect separator, quoting rule, and ncolumns\n" msgstr "" -#: fread.c:1434 +#: fread.c:1428 msgid " sep='\\n' passed in meaning read lines as single character column\n" msgstr "" -#: fread.c:1453 +#: fread.c:1447 msgid " Detecting sep automatically ...\n" msgstr "" -#: fread.c:1460 +#: fread.c:1454 #, c-format msgid " Using supplied sep '%s'\n" msgstr "" -#: fread.c:1494 +#: fread.c:1488 #, c-format msgid " with %d fields using quote rule %d\n" msgstr "" -#: fread.c:1544 +#: fread.c:1538 #, c-format msgid " with %d lines of %d fields using quote rule %d\n" msgstr "" -#: fread.c:1551 +#: fread.c:1545 msgid "" " No sep and quote rule found a block of 2x2 or greater. Single column " "input.\n" msgstr "" -#: fread.c:1567 +#: fread.c:1561 msgid "" "Single column input contains invalid quotes. Self healing only effective " "when ncol>1" msgstr "" -#: fread.c:1572 +#: fread.c:1566 #, c-format msgid "" "Found and resolved improper quoting in first %d rows. If the fields are not " @@ -1966,285 +1977,290 @@ msgid "" "\"\" to avoid this warning." msgstr "" -#: fread.c:1588 +#: fread.c:1582 #, c-format msgid "" "Internal error: ncol==%d line==%d after detecting sep, ncol and first line" msgstr "" -#: fread.c:1591 +#: fread.c:1585 #, c-format msgid "Internal error: first line has field count %d but expecting %d" msgstr "" -#: fread.c:1593 +#: fread.c:1587 #, c-format msgid "" " Detected %d columns on line %d. This line is either column names or first " "data row. Line starts as: <<%s>>\n" msgstr "" -#: fread.c:1595 +#: fread.c:1589 #, c-format msgid " Quote rule picked = %d\n" msgstr "" -#: fread.c:1596 +#: fread.c:1590 #, c-format msgid " fill=%s and the most number of columns found is %d\n" msgstr "" -#: fread.c:1602 +#: fread.c:1596 msgid "" "This file is very unusual: it's one single column, ends with 2 or more end-" "of-line (representing several NA at the end), and is a multiple of 4096, too." msgstr "" -#: fread.c:1603 +#: fread.c:1597 #, c-format msgid " Copying file in RAM. %s\n" msgstr "" -#: fread.c:1609 +#: fread.c:1603 msgid "" " 1-column file ends with 2 or more end-of-line. Restoring last eol using " "extra byte in cow page.\n" msgstr "" -#: fread.c:1628 +#: fread.c:1622 msgid "" "[07] Detect column types, good nrow estimate and whether first row is column " "names\n" msgstr "" -#: fread.c:1629 +#: fread.c:1623 #, c-format msgid " 'header' changed by user from 'auto' to %s\n" msgstr "" -#: fread.c:1633 +#: fread.c:1627 #, c-format msgid "Failed to allocate 2 x %d bytes for type and tmpType: %s" msgstr "" -#: fread.c:1654 +#: fread.c:1648 #, c-format msgid " Number of sampling jump points = %d because " msgstr "" -#: fread.c:1655 +#: fread.c:1649 #, c-format -msgid "nrow limit (%llu) supplied\n" +msgid "nrow limit (%) supplied\n" msgstr "" -#: fread.c:1656 +#: fread.c:1650 msgid "jump0size==0\n" msgstr "" -#: fread.c:1657 +#: fread.c:1651 #, c-format -msgid "(%llu bytes from row 1 to eof) / (2 * %llu jump0size) == %llu\n" +msgid "" +"(% bytes from row 1 to eof) / (2 * % jump0size) == " +"%\n" msgstr "" -#: fread.c:1695 +#: fread.c:1689 #, c-format msgid "" " A line with too-%s fields (%d/%d) was found on line %d of sample jump %d. " "%s\n" msgstr "" -#: fread.c:1696 +#: fread.c:1690 msgid "few" msgstr "" -#: fread.c:1696 +#: fread.c:1690 msgid "many" msgstr "" -#: fread.c:1696 +#: fread.c:1690 msgid "" "Most likely this jump landed awkwardly so type bumps here will be skipped." msgstr "" -#: fread.c:1722 +#: fread.c:1716 #, c-format msgid " Type codes (jump %03d) : %s Quote rule %d\n" msgstr "" -#: fread.c:1735 +#: fread.c:1729 #, c-format msgid "" " 'header' determined to be true due to column %d containing a string on row " "1 and a lower type (%s) in the rest of the %d sample rows\n" msgstr "" -#: fread.c:1747 +#: fread.c:1741 msgid "" "Internal error: row before first data row has the same number of fields but " "we're not using it." msgstr "" -#: fread.c:1748 +#: fread.c:1742 msgid "" "Internal error: ch!=pos after counting fields in the line before the first " "data row." msgstr "" -#: fread.c:1749 +#: fread.c:1743 #, c-format msgid "" "Types in 1st data row match types in 2nd data row but previous row has %d " "fields. Taking previous row as column names." msgstr "" -#: fread.c:1752 +#: fread.c:1746 #, c-format msgid "" "Detected %d column names but the data has %d columns (i.e. invalid file). " "Added %d extra default column name%s\n" msgstr "" -#: fread.c:1753 +#: fread.c:1747 msgid "" " for the first column which is guessed to be row names or an index. Use " "setnames() afterwards if this guess is not correct, or fix the file write " "command that created the file to create a valid file." msgstr "" -#: fread.c:1753 +#: fread.c:1747 msgid "s at the end." msgstr "" -#: fread.c:1755 +#: fread.c:1749 msgid "" "Internal error: fill=true but there is a previous row which should already " "have been filled." msgstr "" -#: fread.c:1756 +#: fread.c:1750 #, c-format msgid "" "Detected %d column names but the data has %d columns. Filling rows " "automatically. Set fill=TRUE explicitly to avoid this warning.\n" msgstr "" -#: fread.c:1760 +#: fread.c:1754 #, c-format msgid "Failed to realloc 2 x %d bytes for type and tmpType: %s" msgstr "" -#: fread.c:1780 +#: fread.c:1774 #, c-format msgid "" " 'header' determined to be %s because there are%s number fields in the " "first and only row\n" msgstr "" -#: fread.c:1780 +#: fread.c:1774 msgid "true" msgstr "" -#: fread.c:1780 +#: fread.c:1774 msgid "false" msgstr "" -#: fread.c:1780 +#: fread.c:1774 msgid " no" msgstr "" -#: fread.c:1783 +#: fread.c:1777 msgid "" " 'header' determined to be true because all columns are type string and a " "better guess is not possible\n" msgstr "" -#: fread.c:1785 +#: fread.c:1779 msgid "" " 'header' determined to be false because there are some number columns and " "those columns do not have a string field at the top of them\n" msgstr "" -#: fread.c:1801 +#: fread.c:1795 #, c-format msgid " Type codes (first row) : %s Quote rule %d\n" msgstr "" -#: fread.c:1810 +#: fread.c:1804 #, c-format msgid "" -" All rows were sampled since file is small so we know nrow=%llu exactly\n" +" All rows were sampled since file is small so we know nrow=% " +"exactly\n" msgstr "" -#: fread.c:1822 fread.c:1829 +#: fread.c:1816 fread.c:1823 msgid " =====\n" msgstr "" -#: fread.c:1823 +#: fread.c:1817 #, c-format msgid "" -" Sampled %llu rows (handled \\n inside quoted fields) at %d jump points\n" +" Sampled % rows (handled \\n inside quoted fields) at %d jump " +"points\n" msgstr "" -#: fread.c:1824 +#: fread.c:1818 #, c-format -msgid " Bytes from first data row on line %d to the end of last row: %llu\n" +msgid "" +" Bytes from first data row on line %d to the end of last row: %\n" msgstr "" -#: fread.c:1825 +#: fread.c:1819 #, c-format msgid " Line length: mean=%.2f sd=%.2f min=%d max=%d\n" msgstr "" -#: fread.c:1826 +#: fread.c:1820 #, c-format -msgid " Estimated number of rows: %llu / %.2f = %llu\n" +msgid " Estimated number of rows: % / %.2f = %\n" msgstr "" -#: fread.c:1827 +#: fread.c:1821 #, c-format msgid "" -" Initial alloc = %llu rows (%llu + %d%%) using bytes/max(mean-2*sd,min) " -"clamped between [1.1*estn, 2.0*estn]\n" +" Initial alloc = % rows (% + %d%%) using bytes/" +"max(mean-2*sd,min) clamped between [1.1*estn, 2.0*estn]\n" msgstr "" -#: fread.c:1831 +#: fread.c:1825 #, c-format -msgid "Internal error: sampleLines(%llu) > allocnrow(%llu)" +msgid "Internal error: sampleLines(%) > allocnrow(%)" msgstr "" -#: fread.c:1835 +#: fread.c:1829 #, c-format -msgid " Alloc limited to lower nrows=%llu passed in.\n" +msgid " Alloc limited to lower nrows=% passed in.\n" msgstr "" -#: fread.c:1847 +#: fread.c:1841 msgid "[08] Assign column names\n" msgstr "" -#: fread.c:1855 +#: fread.c:1849 #, c-format msgid "Unable to allocate %d*%d bytes for column name pointers: %s" msgstr "" -#: fread.c:1877 +#: fread.c:1871 #, c-format msgid "Internal error: reading colnames ending on '%c'" msgstr "" -#: fread.c:1895 +#: fread.c:1889 msgid "[09] Apply user overrides on column types\n" msgstr "" -#: fread.c:1899 +#: fread.c:1893 msgid " Cancelled by user: userOverride() returned false." msgstr "" -#: fread.c:1909 +#: fread.c:1903 #, c-format msgid "Failed to allocate %d bytes for size array: %s" msgstr "" -#: fread.c:1916 +#: fread.c:1910 #, c-format msgid "" "Attempt to override column %d <<%.*s>> of inherent type '%s' down to '%s' " @@ -2252,169 +2268,171 @@ msgid "" "was intended, please coerce to the lower type afterwards." msgstr "" -#: fread.c:1930 +#: fread.c:1924 #, c-format msgid " After %d type and %d drop user overrides : %s\n" msgstr "" -#: fread.c:1938 +#: fread.c:1932 msgid "[10] Allocate memory for the datatable\n" msgstr "" -#: fread.c:1939 +#: fread.c:1933 #, c-format -msgid " Allocating %d column slots (%d - %d dropped) with %llu rows\n" +msgid " Allocating %d column slots (%d - %d dropped) with % rows\n" msgstr "" -#: fread.c:1993 +#: fread.c:1987 #, c-format -msgid "Buffer size %lld is too large\n" +msgid "Buffer size % is too large\n" msgstr "" -#: fread.c:1996 +#: fread.c:1990 msgid "[11] Read the data\n" msgstr "" -#: fread.c:1999 +#: fread.c:1993 #, c-format -msgid " jumps=[%d..%d), chunk_size=%llu, total_size=%llu\n" +msgid " jumps=[%d..%d), chunk_size=%, total_size=%\n" msgstr "" -#: fread.c:2011 +#: fread.c:2005 #, c-format msgid "Internal error: Master thread is not thread 0 but thread %d.\n" msgstr "" -#: fread.c:2219 +#: fread.c:2213 #, c-format msgid "" -"Column %d (\"%.*s\") bumped from '%s' to '%s' due to <<%.*s>> on row %llu\n" +"Column %d (\"%.*s\") bumped from '%s' to '%s' due to <<%.*s>> on row " +"%\n" msgstr "" -#: fread.c:2268 +#: fread.c:2262 #, c-format msgid "" "Internal error: invalid head position. jump=%d, headPos=%p, thisJumpStart=" "%p, sof=%p" msgstr "" -#: fread.c:2341 +#: fread.c:2335 #, c-format msgid "" -" Too few rows allocated. Allocating additional %llu rows (now nrows=%llu) " -"and continue reading from jump %d\n" +" Too few rows allocated. Allocating additional % rows (now nrows=" +"%) and continue reading from jump %d\n" msgstr "" -#: fread.c:2348 +#: fread.c:2342 #, c-format msgid " Restarting team from jump %d. nSwept==%d quoteRule==%d\n" msgstr "" -#: fread.c:2368 +#: fread.c:2362 #, c-format msgid " %d out-of-sample type bumps: %s\n" msgstr "" -#: fread.c:2404 +#: fread.c:2398 #, c-format msgid "" -"Read %llu rows x %d columns from %s file in %02d:%06.3f wall clock time\n" +"Read % rows x %d columns from %s file in %02d:%06.3f wall clock " +"time\n" msgstr "" -#: fread.c:2411 +#: fread.c:2405 msgid "[12] Finalizing the datatable\n" msgstr "" -#: fread.c:2412 +#: fread.c:2406 msgid " Type counts:\n" msgstr "" -#: fread.c:2414 +#: fread.c:2408 #, c-format msgid "%10d : %-9s '%c'\n" msgstr "" -#: fread.c:2430 +#: fread.c:2424 #, c-format msgid "Discarded single-line footer: <<%s>>" msgstr "" -#: fread.c:2435 +#: fread.c:2429 #, c-format msgid "" -"Stopped early on line %llu. Expected %d fields but found %d. Consider " +"Stopped early on line %. Expected %d fields but found %d. Consider " "fill=TRUE and comment.char=. First discarded non-empty line: <<%s>>" msgstr "" -#: fread.c:2441 +#: fread.c:2435 #, c-format msgid "" -"Found and resolved improper quoting out-of-sample. First healed line %llu: <<" -"%s>>. If the fields are not quoted (e.g. field separator does not appear " -"within any field), try quote=\"\" to avoid this warning." +"Found and resolved improper quoting out-of-sample. First healed line " +"%: <<%s>>. If the fields are not quoted (e.g. field separator does " +"not appear within any field), try quote=\"\" to avoid this warning." msgstr "" -#: fread.c:2445 +#: fread.c:2439 msgid "=============================\n" msgstr "" -#: fread.c:2447 +#: fread.c:2441 #, c-format msgid "%8.3fs (%3.0f%%) Memory map %.3fGB file\n" msgstr "" -#: fread.c:2448 +#: fread.c:2442 #, c-format msgid "%8.3fs (%3.0f%%) sep=" msgstr "" -#: fread.c:2450 +#: fread.c:2444 #, c-format msgid " ncol=%d and header detection\n" msgstr "" -#: fread.c:2451 +#: fread.c:2445 #, c-format -msgid "%8.3fs (%3.0f%%) Column type detection using %llu sample rows\n" +msgid "%8.3fs (%3.0f%%) Column type detection using % sample rows\n" msgstr "" -#: fread.c:2453 +#: fread.c:2447 #, c-format msgid "" -"%8.3fs (%3.0f%%) Allocation of %llu rows x %d cols (%.3fGB) of which %llu " -"(%3.0f%%) rows used\n" +"%8.3fs (%3.0f%%) Allocation of % rows x %d cols (%.3fGB) of which " +"% (%3.0f%%) rows used\n" msgstr "" -#: fread.c:2457 +#: fread.c:2451 #, c-format msgid "" "%8.3fs (%3.0f%%) Reading %d chunks (%d swept) of %.3fMB (each chunk %d rows) " "using %d threads\n" msgstr "" -#: fread.c:2459 +#: fread.c:2453 #, c-format msgid "" " + %8.3fs (%3.0f%%) Parse to row-major thread buffers (grown %d times)\n" msgstr "" -#: fread.c:2460 +#: fread.c:2454 #, c-format msgid " + %8.3fs (%3.0f%%) Transpose\n" msgstr "" -#: fread.c:2461 +#: fread.c:2455 #, c-format msgid " + %8.3fs (%3.0f%%) Waiting\n" msgstr "" -#: fread.c:2462 +#: fread.c:2456 #, c-format msgid "" "%8.3fs (%3.0f%%) Rereading %d columns due to out-of-sample type exceptions\n" msgstr "" -#: fread.c:2464 +#: fread.c:2458 #, c-format msgid "%8.3fs Total\n" msgstr "" @@ -2643,7 +2661,7 @@ msgstr "" #: froll.c:52 froll.c:255 #, c-format -msgid "%s: running for input length %llu, window %d, hasna %d, narm %d\n" +msgid "%s: running for input length %, window %d, hasna %d, narm %d\n" msgstr "" #: froll.c:72 froll.c:82 froll.c:173 froll.c:275 froll.c:285 froll.c:366 @@ -2673,7 +2691,8 @@ msgstr "" #: froll.c:141 froll.c:339 #, c-format msgid "" -"%s: running in parallel for input length %llu, window %d, hasna %d, narm %d\n" +"%s: running in parallel for input length %, window %d, hasna %d, " +"narm %d\n" msgstr "" #: froll.c:179 froll.c:372 frolladaptive.c:157 frolladaptive.c:336 @@ -2842,7 +2861,7 @@ msgstr "" #: frolladaptive.c:33 frolladaptive.c:222 #, c-format -msgid "%s: running for input length %llu, hasna %d, narm %d\n" +msgid "%s: running for input length %, hasna %d, narm %d\n" msgstr "" #: frolladaptive.c:39 frolladaptive.c:228 @@ -2857,7 +2876,7 @@ msgstr "" #: frolladaptive.c:118 frolladaptive.c:302 #, c-format -msgid "%s: running in parallel for input length %llu, hasna %d, narm %d\n" +msgid "%s: running in parallel for input length %, hasna %d, narm %d\n" msgstr "" #: fsort.c:111 @@ -2890,7 +2909,8 @@ msgstr "" #: fsort.c:177 #, c-format msgid "" -"counts is %dMB (%d pages per nBatch=%d, batchSize=%lld, lastBatchSize=%lld)\n" +"counts is %dMB (%d pages per nBatch=%d, batchSize=%, lastBatchSize=" +"%)\n" msgstr "" #: fsort.c:230 @@ -2903,10 +2923,10 @@ msgstr "" #: fsort.c:246 #, c-format -msgid "%lld " +msgid "% " msgstr "" -#: fsort.c:246 fwrite.c:693 fwrite.c:951 +#: fsort.c:246 fwrite.c:694 fwrite.c:952 msgid "\n" msgstr "" @@ -2925,49 +2945,49 @@ msgstr "" msgid "%d: %.3f (%4.1f%%)\n" msgstr "" -#: fwrite.c:603 +#: fwrite.c:604 #, c-format msgid "buffMB=%d outside [1,1024]" msgstr "" -#: fwrite.c:610 +#: fwrite.c:611 #, c-format msgid "" "eol must be 1 or more bytes (usually either \\n or \\r\\n) but is length %d" msgstr "" -#: fwrite.c:613 +#: fwrite.c:614 msgid "Column writers: " msgstr "" -#: fwrite.c:615 fwrite.c:617 fwrite.c:619 +#: fwrite.c:616 fwrite.c:618 fwrite.c:620 #, c-format msgid "%d " msgstr "" -#: fwrite.c:618 +#: fwrite.c:619 msgid "... " msgstr "" -#: fwrite.c:621 +#: fwrite.c:622 #, c-format msgid "" "\n" -"args.doRowNames=%d args.rowNames=%d doQuote=%d args.nrow=%lld args.ncol=%d " -"eolLen=%d\n" +"args.doRowNames=%d args.rowNames=%d doQuote=%d args.nrow=% args.ncol=" +"%d eolLen=%d\n" msgstr "" -#: fwrite.c:654 +#: fwrite.c:655 #, c-format msgid "Internal error: type %d has no max length method implemented" msgstr "" -#: fwrite.c:662 +#: fwrite.c:663 #, c-format -msgid "maxLineLen=%zd. Found in %.3fs\n" +msgid "maxLineLen=%. Found in %.3fs\n" msgstr "" -#: fwrite.c:682 +#: fwrite.c:683 #, c-format msgid "" "%s: '%s'. Failed to open existing file for writing. Do you have write " @@ -2975,7 +2995,7 @@ msgid "" "have it open?" msgstr "" -#: fwrite.c:683 +#: fwrite.c:684 #, c-format msgid "" "%s: '%s'. Unable to create new file for writing (it does not exist already). " @@ -2983,65 +3003,65 @@ msgid "" "the path exist?" msgstr "" -#: fwrite.c:691 +#: fwrite.c:692 #, c-format msgid "Writing bom (%s), yaml (%d characters) and column names (%s) ... " msgstr "" -#: fwrite.c:704 +#: fwrite.c:705 #, c-format msgid "Unable to allocate %d MiB for header: %s" msgstr "" -#: fwrite.c:732 fwrite.c:793 +#: fwrite.c:733 fwrite.c:794 msgid "Can't allocate gzip stream structure" msgstr "" -#: fwrite.c:738 +#: fwrite.c:739 #, c-format msgid "Unable to allocate %d MiB for zbuffer: %s" msgstr "" -#: fwrite.c:753 +#: fwrite.c:754 #, c-format msgid "Compress gzip error: %d" msgstr "" -#: fwrite.c:754 fwrite.c:763 fwrite.c:957 +#: fwrite.c:755 fwrite.c:764 fwrite.c:958 #, c-format msgid "%s: '%s'" msgstr "" -#: fwrite.c:760 +#: fwrite.c:761 #, c-format msgid "done in %.3fs\n" msgstr "" -#: fwrite.c:762 +#: fwrite.c:763 msgid "No data rows present (nrow==0)\n" msgstr "" -#: fwrite.c:780 +#: fwrite.c:781 #, c-format msgid "" -"Writing %lld rows in %d batches of %d rows (each buffer size %dMB, " +"Writing % rows in %d batches of %d rows (each buffer size %dMB, " "showProgress=%d, nth=%d)\n" msgstr "" -#: fwrite.c:965 +#: fwrite.c:966 #, c-format msgid "" "zlib %s (zlib.h %s) deflate() returned error %d with z_stream->msg==\"%s\" " "Z_FINISH=%d Z_BLOCK=%d. %s" msgstr "" -#: fwrite.c:967 +#: fwrite.c:968 msgid "" "Please include the full output above and below this message in your data." "table bug report." msgstr "" -#: fwrite.c:968 +#: fwrite.c:969 msgid "" "Please retry fwrite() with verbose=TRUE and include the full output with " "your data.table bug report." @@ -3672,7 +3692,7 @@ msgstr "" #: init.c:254 #, c-format -msgid "Conversion of NA_INT64 via double failed %lld!=%lld" +msgid "Conversion of NA_INT64 via double failed %!=%" msgstr "" #: init.c:258 @@ -3877,8 +3897,8 @@ msgstr "" #: rbindlist.c:62 #, c-format msgid "" -"Total rows in the list is %lld which is larger than the maximum number of " -"rows, currently %d" +"Total rows in the list is % which is larger than the maximum number " +"of rows, currently %d" msgstr "" #: rbindlist.c:63 @@ -3888,8 +3908,8 @@ msgstr "" #: rbindlist.c:71 #, c-format msgid "" -"Failed to allocate upper bound of %lld unique column names [sum(lapply(l," -"ncol))]" +"Failed to allocate upper bound of % unique column names " +"[sum(lapply(l,ncol))]" msgstr "" #: rbindlist.c:102 @@ -4256,7 +4276,7 @@ msgstr "" #, c-format msgid "" "All elements to input list must be of same length. Element [%d] has length " -"%llu != length of first element = %llu." +"% != length of first element = %." msgstr "" #: uniqlist.c:255 diff --git a/po/zh_CN.po b/po/zh_CN.po index 256b6fcd75..60fb5520e2 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-11-01 00:42+0800\n" +"POT-Creation-Date: 2019-11-21 08:00+0800\n" "PO-Revision-Date: 2019-10-31 17:27+08\n" "Last-Translator: Amy Tzu-Yu Chen \n" "Language-Team: Mandarin\n" @@ -658,7 +658,8 @@ msgstr "" #: between.c:95 #, c-format -msgid "Item %d of lower (%lld) is greater than item %d of upper (%lld)" +msgid "" +"Item %d of lower (%) is greater than item %d of upper (%)" msgstr "" #: between.c:112 @@ -828,10 +829,10 @@ msgstr "" "问题追踪器。" #: chmatch.c:60 -#, c-format +#, fuzzy, c-format msgid "" -"Failed to allocate %lld bytes working memory in chmatchdup: length(table)=%d " -"length(unique(table))=%d" +"Failed to allocate % bytes working memory in chmatchdup: " +"length(table)=%d length(unique(table))=%d" msgstr "" "无法为 chmatchdup: length(table)=%2$d length(unique(table))=%3$d 分配 %1$lld " "字节的内存空间" @@ -1201,18 +1202,20 @@ msgid "'yes' and 'no' are both type factor but their levels are different." msgstr "'yes'和'no'都是因子类型但他们的因子水平不同。" #: fifelse.c:38 -#, c-format -msgid "Length of 'yes' is %lld but must be 1 or length of 'test' (%lld)." +#, fuzzy, c-format +msgid "" +"Length of 'yes' is % but must be 1 or length of 'test' (%)." msgstr "'yes'长度是%lld但长度必须是1或者等于'test'的长度 (%lld)。" #: fifelse.c:40 -#, c-format -msgid "Length of 'no' is %lld but must be 1 or length of 'test' (%lld)." +#, fuzzy, c-format +msgid "" +"Length of 'no' is % but must be 1 or length of 'test' (%)." msgstr "'no'长度是%lld但长度必须是1或者等于'test'的长度 (%lld)。" #: fifelse.c:51 -#, c-format -msgid "Length of 'na' is %lld but must be 1" +#, fuzzy, c-format +msgid "Length of 'na' is % but must be 1" msgstr "'na'长度是%lld但必须是长度必须是1" #: fifelse.c:57 @@ -1262,8 +1265,7 @@ msgstr "串联:'idx' 必须为一个长度>= 0的整数向量" msgid "" "Internal error in concat: 'idx' must take values between 0 and length(vec); " "0 <= idx <= %d" -msgstr "串联内部错误:'idx'必须为0到length(vec)之间的值;" -"0 <= idx <= %d" +msgstr "串联内部错误:'idx'必须为0到length(vec)之间的值;0 <= idx <= %d" #: fmelt.c:102 #, c-format @@ -1277,9 +1279,10 @@ msgid "" "non-numeric/integer/logical type columns are considered id.vars, which in " "this case are columns [%s]. Consider providing at least one of 'id' or " "'measure' vars in future." -msgstr "当'id.vars'和'measure.vars'都是NULL时,data.table会自动猜测适当值。" -"所有非数值/整数/逻辑类型列会作为'id.vars',即以下列 [%s]。" -"以后请考虑择一指定'id.vars'或'measure.vars'。" +msgstr "" +"当'id.vars'和'measure.vars'都是NULL时,data.table会自动猜测适当值。所有非数" +"值/整数/逻辑类型列会作为'id.vars',即以下列 [%s]。以后请考虑择一指定'id." +"vars'或'measure.vars'。" #: fmelt.c:154 fmelt.c:219 #, c-format @@ -1294,8 +1297,8 @@ msgstr "'id.vars'里,一或多个数值无效" msgid "" "'measure.vars' is missing. Assigning all columns other than 'id.vars' " "columns as 'measure.vars'.\n" -msgstr "找不到'measure.vars'。将指定所有'id.vars'以外的所有列为" -"'measure.vars'。\n" +msgstr "" +"找不到'measure.vars'。将指定所有'id.vars'以外的所有列为'measure.vars'。\n" #: fmelt.c:176 #, c-format @@ -1332,16 +1335,17 @@ msgstr "未知'measure.vars'类型 %s,必须是字符或者整数向量" msgid "" "When 'measure.vars' is a list, 'value.name' must be a character vector of " "length =1 or =length(measure.vars)." -msgstr "当'measure.vars'是一个列表(list), 'value.name' 必须是一个" -"长度为1或者等于length(measure.vars)的字符向量" - +msgstr "" +"当'measure.vars'是一个列表(list), 'value.name' 必须是一个长度为1或者等于" +"length(measure.vars)的字符向量" #: fmelt.c:277 msgid "" "When 'measure.vars' is either not specified or a character/integer vector, " "'value.name' must be a character vector of length =1." -msgstr "当'measure.vars'未被指定或者是一个字符/整数向量时," -"'value.name'必须是一个长度1的字符/整数向量" +msgstr "" +"当'measure.vars'未被指定或者是一个字符/整数向量时,'value.name'必须是一个长度" +"1的字符/整数向量" #: fmelt.c:280 msgid "'variable.name' must be a character/integer vector of length=1." @@ -1601,7 +1605,7 @@ msgstr "定时块 %2d%s = %8.3f %8d\n" #: forder.c:797 #, c-format -msgid "stat[%03d]==%10zd\n" +msgid "stat[%03d]==%20\n" msgstr "" #: forder.c:1053 @@ -1697,247 +1701,255 @@ msgstr "内部错误:参数 'x' 关于 CanyNA 是 '%s' 类型而不是'list' msgid "Internal error. Argument 'cols' to CanyNA is type '%s' not 'integer'" msgstr "内部错误:参数 'cols' 关于 CanyNA 是 '%s' 类型而不是'integer'类型" -#: fread.c:153 +#: fread.c:147 #, c-format msgid "System error %d unmapping view of file\n" msgstr "系统错误 %d 取消映射文件视图\n" -#: fread.c:156 +#: fread.c:150 #, c-format msgid "System errno %d unmapping file: %s\n" msgstr "系统错误 %d 取消映射文件: %s\n" -#: fread.c:216 +#: fread.c:210 #, c-format msgid "Internal error: NUMTYPE(%d) > nLetters(%d)" msgstr "内部错误:NUMTYPE(%d) > nLetters(%d)" -#: fread.c:441 +#: fread.c:435 #, c-format msgid "Unable to allocate %s of contiguous virtual RAM. %s allocation." msgstr "无法分配 %s 的连续虚拟内存。 %s 已分配。" -#: fread.c:446 +#: fread.c:440 #, c-format msgid "Avoidable %.3f seconds. %s time to copy.\n" msgstr "可避免的 %.3f 秒。 %s 复制用时\n" -#: fread.c:447 +#: fread.c:441 #, c-format msgid " File copy in RAM took %.3f seconds.\n" msgstr "内存上的文件复制耗时 %.3f 秒\n" -#: fread.c:1099 +#: fread.c:1093 msgid "" "Previous fread() session was not cleaned up properly. Cleaned up ok at the " "beginning of this fread() call.\n" msgstr "之前的会话fread()未正确清理。在当前 fread() 会话开始前清理好\n" -#: fread.c:1102 +#: fread.c:1096 msgid "[01] Check arguments\n" msgstr "[01] 参数检查\n" -#: fread.c:1109 +#: fread.c:1103 #, c-format msgid " Using %d threads (omp_get_max_threads()=%d, nth=%d)\n" msgstr "使用 %d 线程 (omp_get_max_threads()=%d, nth=%d)\n" -#: fread.c:1117 +#: fread.c:1111 msgid "" "Internal error: NAstrings is itself NULL. When empty it should be pointer to " "NULL." msgstr "内部错误:NAstrings 自身为空值。当清空该项会指向NULL空值" -#: fread.c:1135 +#: fread.c:1129 #, c-format msgid "freadMain: NAstring <<%s>> has whitespace at the beginning or end" msgstr "freadMain: NAstring <<%s>> 在开始或者结束处有空白" -#: fread.c:1140 +#: fread.c:1134 #, c-format msgid "" "freadMain: NAstring <<%s>> is recognized as type boolean, this is not " "permitted." msgstr "freadMain: NAstring <<%s>> 被识别为布尔型,这是不允许" -#: fread.c:1150 +#: fread.c:1144 msgid " No NAstrings provided.\n" msgstr "未提供 NAstrings \n" -#: fread.c:1152 +#: fread.c:1146 msgid " NAstrings = [" msgstr "" -#: fread.c:1155 +#: fread.c:1149 msgid "]\n" msgstr "" -#: fread.c:1157 +#: fread.c:1151 msgid " One or more of the NAstrings looks like a number.\n" msgstr "一个或多个 NAstrings 类似数值\n" -#: fread.c:1159 +#: fread.c:1153 msgid " None of the NAstrings look like numbers.\n" msgstr "没有 NAstrings 为数值\n" -#: fread.c:1161 -#, c-format -msgid " skip num lines = %llu\n" +#: fread.c:1155 +#, fuzzy, c-format +msgid " skip num lines = %\n" msgstr "跳过行数为 %llu\n" -#: fread.c:1162 +#: fread.c:1156 #, c-format msgid " skip to string = <<%s>>\n" msgstr "跳转至 string = <<%s>>\n" -#: fread.c:1163 +#: fread.c:1157 #, c-format msgid " show progress = %d\n" msgstr "显示进程 %d\n" -#: fread.c:1164 +#: fread.c:1158 #, c-format msgid " 0/1 column will be read as %s\n" msgstr " 0/1 列被读取为 %s\n" -#: fread.c:1172 +#: fread.c:1158 +msgid "boolean" +msgstr "" + +#: fread.c:1158 +msgid "integer" +msgstr "" + +#: fread.c:1166 #, c-format msgid "sep == quote ('%c') is not allowed" msgstr "sep == quote ('%c') 不被允许" -#: fread.c:1173 +#: fread.c:1167 msgid "dec='' not allowed. Should be '.' or ','" msgstr "dec='' 不允许,应该为 '.' 或者 ','" -#: fread.c:1174 +#: fread.c:1168 #, c-format msgid "sep == dec ('%c') is not allowed" msgstr "sep == dec ('%c') 不允许" -#: fread.c:1175 +#: fread.c:1169 #, c-format msgid "quote == dec ('%c') is not allowed" msgstr "quote == dec ('%c') 不允许" -#: fread.c:1192 +#: fread.c:1186 msgid "[02] Opening the file\n" msgstr "[02] 打开文件\n" -#: fread.c:1195 +#: fread.c:1189 msgid "" " `input` argument is provided rather than a file name, interpreting as raw " "text to read\n" msgstr "提供 `input` 参数而非文件名,理解为原始的文本读取\n" -#: fread.c:1199 +#: fread.c:1193 msgid "Internal error: last byte of character input isn't \\0" msgstr "内部错误:字符输入的最后一个字节不是 \\0" -#: fread.c:1202 +#: fread.c:1196 #, c-format msgid " Opening file %s\n" msgstr "打开文件 %s\n" -#: fread.c:1206 +#: fread.c:1200 #, c-format msgid "file not found: %s" msgstr "文件未找到: %s" -#: fread.c:1210 +#: fread.c:1204 #, c-format msgid "Opened file ok but couldn't obtain its size: %s" msgstr "文件能够打开但无法获知其大小:%s" -#: fread.c:1213 fread.c:1241 +#: fread.c:1207 fread.c:1235 #, c-format msgid "File is empty: %s" msgstr "文件是空的:%s" -#: fread.c:1214 fread.c:1242 +#: fread.c:1208 fread.c:1236 #, c-format msgid " File opened, size = %s.\n" msgstr "文件已打开,大小为 %s.\n" -#: fread.c:1231 +#: fread.c:1225 #, c-format msgid "File not found: %s" msgstr "文件没有找到:%s" -#: fread.c:1237 +#: fread.c:1231 #, c-format msgid "Unable to open file after %d attempts (error %d): %s" msgstr "经过 %d 次尝试后仍无法打开文件(错误 %d):%s" -#: fread.c:1239 +#: fread.c:1233 #, c-format msgid "GetFileSizeEx failed (returned 0) on file: %s" msgstr "GetFileSizeEx 未能成功执行(返回值为0)于文件:%s" -#: fread.c:1244 +#: fread.c:1238 #, c-format msgid "This is Windows, CreateFileMapping returned error %d for file %s" msgstr "现在在Windows下,CreateFileMapping 返回错误 %d 于文件 %s" -#: fread.c:1251 +#: fread.c:1245 #, c-format msgid "" "Opened %s file ok but could not memory map it. This is a %dbit process. %s." msgstr "能够打开文件 %s 但不能创建内存映射。这是一个 %d 位进程。 %s." -#: fread.c:1252 +#: fread.c:1246 msgid "Please upgrade to 64bit" msgstr "请升级到64位" -#: fread.c:1252 +#: fread.c:1246 msgid "There is probably not enough contiguous virtual memory available" msgstr "多半没有足够的连续虚拟内存" -#: fread.c:1255 +#: fread.c:1249 msgid " Memory mapped ok\n" msgstr " 内存映射正常\n" -#: fread.c:1257 +#: fread.c:1251 msgid "" "Internal error: Neither `input` nor `filename` are given, nothing to read." msgstr "" "内部错误:既没有`input`(输入)也没有`filename`(文件名),没有什么可供读入。" -#: fread.c:1274 +#: fread.c:1268 msgid "[03] Detect and skip BOM\n" msgstr "[03] 检测并跳过字节顺序标记(BOM)\n" -#: fread.c:1278 +#: fread.c:1272 msgid "" " UTF-8 byte order mark EF BB BF found at the start of the file and " "skipped.\n" msgstr "在文件头发现了UTF-8 字节顺序标记(BOM)EF BB BF 并已跳过。\n" -#: fread.c:1283 +#: fread.c:1277 msgid "" "GB-18030 encoding detected, however fread() is unable to decode it. Some " "character fields may be garbled.\n" msgstr "检测到GB-18030 编码,但fread() 未能解码。某些 字符字段可能有乱码。\n" -#: fread.c:1286 +#: fread.c:1280 msgid "" "File is encoded in UTF-16, this encoding is not supported by fread(). Please " "recode the file to UTF-8." msgstr "文件编码是UTF-16,fread()不支持此编码。请 将文件转换为UTF-8。" -#: fread.c:1291 +#: fread.c:1285 #, c-format msgid " Last byte(s) of input found to be %s and removed.\n" msgstr " 发现输入的最后字节是 %s 并已去除。\n" -#: fread.c:1294 +#: fread.c:1288 msgid "Input is empty or only contains BOM or terminal control characters" msgstr "输入是空的或只有字节顺序标记(BOM)或终端控制字符" -#: fread.c:1301 +#: fread.c:1295 msgid "[04] Arrange mmap to be \\0 terminated\n" msgstr "[04] 设定mmap为 \\0 终止\n" -#: fread.c:1308 +#: fread.c:1302 msgid "" " No \\n exists in the file at all, so single \\r (if any) will be taken as " "one line ending. This is unusual but will happen normally when there is no " @@ -1946,7 +1958,7 @@ msgstr "" " 文件中完全没有换行符\\n,所以单个 \\r(如果有的话)将被当成一行的结束。这不" "太常见但如果没有\\r 的话属于正常;例如单个行没有行尾结束符。\n" -#: fread.c:1309 +#: fread.c:1303 msgid "" " \\n has been found in the input and different lines can end with different " "line endings (e.g. mixed \\n and \\r\\n in one file). This is common and " @@ -1955,7 +1967,7 @@ msgstr "" " 输入中有\\n 并且不同行可以有不同的 行尾结束符(如在一个文件中混合使用 \\n " "和\\r\\n)。这很常见也是理想情况。\n" -#: fread.c:1333 +#: fread.c:1327 #, c-format msgid "" " File ends abruptly with '%c'. Final end-of-line is missing. Using cow page " @@ -1964,7 +1976,7 @@ msgstr "" " 文件突然中止于 '%c'。没有最后一个行尾结束符。正使用写时复制页(cow, copy-" "on-write)写入 0 到最后一个字节。\n" -#: fread.c:1339 +#: fread.c:1333 msgid "" "This file is very unusual: it ends abruptly without a final newline, and " "also its size is a multiple of 4096 bytes. Please properly end the last row " @@ -1973,16 +1985,16 @@ msgstr "" "这个文件非常不正常:它突然中止而没有最后的换行,并且其大小是4096 字节的整数" "倍。请用一个换行(例如 'echo >> file')来恰当地结束最后一行以避免此错误" -#: fread.c:1340 +#: fread.c:1334 #, c-format msgid " File ends abruptly with '%c'. Copying file in RAM. %s copy.\n" msgstr " 文件突然中止于 '%c'。正在从内存中复制文件。%s 复制。\n" -#: fread.c:1374 +#: fread.c:1368 msgid "[05] Skipping initial rows if needed\n" msgstr "[05] 如需要的话跳过起始行\n" -#: fread.c:1380 +#: fread.c:1374 #, c-format msgid "" "skip='%s' not found in input (it is case sensitive and literal; i.e., no " @@ -1991,79 +2003,79 @@ msgstr "" "在输入中没有发现 skip='%s' (这里大小写敏感并需要是字面形式,也就是说不能使用" "模式,适配符或正则表达式)" -#: fread.c:1386 -#, c-format +#: fread.c:1380 +#, fuzzy, c-format msgid "" -"Found skip='%s' on line %llu. Taking this to be header row or first row of " -"data.\n" +"Found skip='%s' on line %. Taking this to be header row or first row " +"of data.\n" msgstr "在行 %2$llu 发现了 skip='%1$s'。将此当做表头或数据的第一行。\n" -#: fread.c:1399 -#, c-format -msgid " Skipped to line %llu in the file" +#: fread.c:1393 +#, fuzzy, c-format +msgid " Skipped to line % in the file" msgstr " 跳到文件的第 %llu 行" -#: fread.c:1400 -#, c-format -msgid "skip=%llu but the input only has %llu line%s" +#: fread.c:1394 +#, fuzzy, c-format +msgid "skip=% but the input only has % line%s" msgstr "skip=%llu 但输入只有 %llu 行 %s" -#: fread.c:1409 +#: fread.c:1403 msgid "" "Input is either empty, fully whitespace, or skip has been set after the last " "non-whitespace." msgstr "输入是空,或全部为空白,或跳过设置是在最后一个非空白字符之后。" -#: fread.c:1411 +#: fread.c:1405 #, c-format msgid " Moved forward to first non-blank line (%d)\n" msgstr " 前移到第一个非空行 (%d)\n" -#: fread.c:1412 +#: fread.c:1406 #, c-format msgid " Positioned on line %d starting: <<%s>>\n" msgstr " 定位到行 %d 开始于: <<%s>>\n" -#: fread.c:1430 +#: fread.c:1424 msgid "[06] Detect separator, quoting rule, and ncolumns\n" msgstr "[06] 检测分隔符,引用规则,以及列数\n" -#: fread.c:1434 +#: fread.c:1428 msgid " sep='\\n' passed in meaning read lines as single character column\n" msgstr " sep='\\n' 设定意味着将把所有行读作一个字符列\n" -#: fread.c:1453 +#: fread.c:1447 msgid " Detecting sep automatically ...\n" msgstr " 自动检测分隔符中 ...\n" -#: fread.c:1460 +#: fread.c:1454 #, c-format msgid " Using supplied sep '%s'\n" msgstr " 使用提供的分隔符 '%s'\n" -#: fread.c:1494 +#: fread.c:1488 #, c-format msgid " with %d fields using quote rule %d\n" msgstr " 对 %d 个字段使用引用规则 %d\n" -#: fread.c:1544 +#: fread.c:1538 #, c-format msgid " with %d lines of %d fields using quote rule %d\n" msgstr " 对 %d 行的 %d 字段使用引用规则 %d\n" -#: fread.c:1551 +#: fread.c:1545 msgid "" " No sep and quote rule found a block of 2x2 or greater. Single column " "input.\n" msgstr " 没有分隔符并且引用规则发现了一个大于或等于2x2的区块。输入是单列。\n" -#: fread.c:1567 +#: fread.c:1561 msgid "" "Single column input contains invalid quotes. Self healing only effective " "when ncol>1" msgstr "单列输入包含了不合法的引用。自我修正只有在列数大于1(ncol>1)时才有效" -#: fread.c:1572 +#: fread.c:1566 #, c-format msgid "" "Found and resolved improper quoting in first %d rows. If the fields are not " @@ -2073,285 +2085,290 @@ msgstr "" "在前 %d 行中发现并修正了不合适的引号用法。如果字段没有加引号(例如字段间隔符" "没有在任何字段内出现),可以尝试使用 quote=\"\" 来避免此警告。" -#: fread.c:1588 +#: fread.c:1582 #, c-format msgid "" "Internal error: ncol==%d line==%d after detecting sep, ncol and first line" msgstr "" -#: fread.c:1591 +#: fread.c:1585 #, c-format msgid "Internal error: first line has field count %d but expecting %d" msgstr "" -#: fread.c:1593 +#: fread.c:1587 #, c-format msgid "" " Detected %d columns on line %d. This line is either column names or first " "data row. Line starts as: <<%s>>\n" msgstr "" -#: fread.c:1595 +#: fread.c:1589 #, c-format msgid " Quote rule picked = %d\n" msgstr "" -#: fread.c:1596 +#: fread.c:1590 #, c-format msgid " fill=%s and the most number of columns found is %d\n" msgstr "" -#: fread.c:1602 +#: fread.c:1596 msgid "" "This file is very unusual: it's one single column, ends with 2 or more end-" "of-line (representing several NA at the end), and is a multiple of 4096, too." msgstr "" -#: fread.c:1603 +#: fread.c:1597 #, c-format msgid " Copying file in RAM. %s\n" msgstr "" -#: fread.c:1609 +#: fread.c:1603 msgid "" " 1-column file ends with 2 or more end-of-line. Restoring last eol using " "extra byte in cow page.\n" msgstr "" -#: fread.c:1628 +#: fread.c:1622 msgid "" "[07] Detect column types, good nrow estimate and whether first row is column " "names\n" msgstr "" -#: fread.c:1629 +#: fread.c:1623 #, c-format msgid " 'header' changed by user from 'auto' to %s\n" msgstr "" -#: fread.c:1633 +#: fread.c:1627 #, c-format msgid "Failed to allocate 2 x %d bytes for type and tmpType: %s" msgstr "" -#: fread.c:1654 +#: fread.c:1648 #, c-format msgid " Number of sampling jump points = %d because " msgstr "" -#: fread.c:1655 +#: fread.c:1649 #, c-format -msgid "nrow limit (%llu) supplied\n" +msgid "nrow limit (%) supplied\n" msgstr "" -#: fread.c:1656 +#: fread.c:1650 msgid "jump0size==0\n" msgstr "" -#: fread.c:1657 +#: fread.c:1651 #, c-format -msgid "(%llu bytes from row 1 to eof) / (2 * %llu jump0size) == %llu\n" +msgid "" +"(% bytes from row 1 to eof) / (2 * % jump0size) == " +"%\n" msgstr "" -#: fread.c:1695 +#: fread.c:1689 #, c-format msgid "" " A line with too-%s fields (%d/%d) was found on line %d of sample jump %d. " "%s\n" msgstr "" -#: fread.c:1696 +#: fread.c:1690 msgid "few" msgstr "" -#: fread.c:1696 +#: fread.c:1690 msgid "many" msgstr "" -#: fread.c:1696 +#: fread.c:1690 msgid "" "Most likely this jump landed awkwardly so type bumps here will be skipped." msgstr "" -#: fread.c:1722 +#: fread.c:1716 #, c-format msgid " Type codes (jump %03d) : %s Quote rule %d\n" msgstr "" -#: fread.c:1735 +#: fread.c:1729 #, c-format msgid "" " 'header' determined to be true due to column %d containing a string on row " "1 and a lower type (%s) in the rest of the %d sample rows\n" msgstr "" -#: fread.c:1747 +#: fread.c:1741 msgid "" "Internal error: row before first data row has the same number of fields but " "we're not using it." msgstr "" -#: fread.c:1748 +#: fread.c:1742 msgid "" "Internal error: ch!=pos after counting fields in the line before the first " "data row." msgstr "" -#: fread.c:1749 +#: fread.c:1743 #, c-format msgid "" "Types in 1st data row match types in 2nd data row but previous row has %d " "fields. Taking previous row as column names." msgstr "" -#: fread.c:1752 +#: fread.c:1746 #, c-format msgid "" "Detected %d column names but the data has %d columns (i.e. invalid file). " "Added %d extra default column name%s\n" msgstr "" -#: fread.c:1753 +#: fread.c:1747 msgid "" " for the first column which is guessed to be row names or an index. Use " "setnames() afterwards if this guess is not correct, or fix the file write " "command that created the file to create a valid file." msgstr "" -#: fread.c:1753 +#: fread.c:1747 msgid "s at the end." msgstr "" -#: fread.c:1755 +#: fread.c:1749 msgid "" "Internal error: fill=true but there is a previous row which should already " "have been filled." msgstr "" -#: fread.c:1756 +#: fread.c:1750 #, c-format msgid "" "Detected %d column names but the data has %d columns. Filling rows " "automatically. Set fill=TRUE explicitly to avoid this warning.\n" msgstr "" -#: fread.c:1760 +#: fread.c:1754 #, c-format msgid "Failed to realloc 2 x %d bytes for type and tmpType: %s" msgstr "" -#: fread.c:1780 +#: fread.c:1774 #, c-format msgid "" " 'header' determined to be %s because there are%s number fields in the " "first and only row\n" msgstr "" -#: fread.c:1780 +#: fread.c:1774 msgid "true" msgstr "" -#: fread.c:1780 +#: fread.c:1774 msgid "false" msgstr "" -#: fread.c:1780 +#: fread.c:1774 msgid " no" msgstr "" -#: fread.c:1783 +#: fread.c:1777 msgid "" " 'header' determined to be true because all columns are type string and a " "better guess is not possible\n" msgstr "" -#: fread.c:1785 +#: fread.c:1779 msgid "" " 'header' determined to be false because there are some number columns and " "those columns do not have a string field at the top of them\n" msgstr "" -#: fread.c:1801 +#: fread.c:1795 #, c-format msgid " Type codes (first row) : %s Quote rule %d\n" msgstr "" -#: fread.c:1810 +#: fread.c:1804 #, c-format msgid "" -" All rows were sampled since file is small so we know nrow=%llu exactly\n" +" All rows were sampled since file is small so we know nrow=% " +"exactly\n" msgstr "" -#: fread.c:1822 fread.c:1829 +#: fread.c:1816 fread.c:1823 msgid " =====\n" msgstr "" -#: fread.c:1823 +#: fread.c:1817 #, c-format msgid "" -" Sampled %llu rows (handled \\n inside quoted fields) at %d jump points\n" +" Sampled % rows (handled \\n inside quoted fields) at %d jump " +"points\n" msgstr "" -#: fread.c:1824 +#: fread.c:1818 #, c-format -msgid " Bytes from first data row on line %d to the end of last row: %llu\n" +msgid "" +" Bytes from first data row on line %d to the end of last row: %\n" msgstr "" -#: fread.c:1825 +#: fread.c:1819 #, c-format msgid " Line length: mean=%.2f sd=%.2f min=%d max=%d\n" msgstr "" -#: fread.c:1826 +#: fread.c:1820 #, c-format -msgid " Estimated number of rows: %llu / %.2f = %llu\n" +msgid " Estimated number of rows: % / %.2f = %\n" msgstr "" -#: fread.c:1827 +#: fread.c:1821 #, c-format msgid "" -" Initial alloc = %llu rows (%llu + %d%%) using bytes/max(mean-2*sd,min) " -"clamped between [1.1*estn, 2.0*estn]\n" +" Initial alloc = % rows (% + %d%%) using bytes/" +"max(mean-2*sd,min) clamped between [1.1*estn, 2.0*estn]\n" msgstr "" -#: fread.c:1831 +#: fread.c:1825 #, c-format -msgid "Internal error: sampleLines(%llu) > allocnrow(%llu)" +msgid "Internal error: sampleLines(%) > allocnrow(%)" msgstr "" -#: fread.c:1835 +#: fread.c:1829 #, c-format -msgid " Alloc limited to lower nrows=%llu passed in.\n" +msgid " Alloc limited to lower nrows=% passed in.\n" msgstr "" -#: fread.c:1847 +#: fread.c:1841 msgid "[08] Assign column names\n" msgstr "" -#: fread.c:1855 +#: fread.c:1849 #, c-format msgid "Unable to allocate %d*%d bytes for column name pointers: %s" msgstr "" -#: fread.c:1877 +#: fread.c:1871 #, c-format msgid "Internal error: reading colnames ending on '%c'" msgstr "" -#: fread.c:1895 +#: fread.c:1889 msgid "[09] Apply user overrides on column types\n" msgstr "" -#: fread.c:1899 +#: fread.c:1893 msgid " Cancelled by user: userOverride() returned false." msgstr "" -#: fread.c:1909 +#: fread.c:1903 #, c-format msgid "Failed to allocate %d bytes for size array: %s" msgstr "" -#: fread.c:1916 +#: fread.c:1910 #, c-format msgid "" "Attempt to override column %d <<%.*s>> of inherent type '%s' down to '%s' " @@ -2359,169 +2376,173 @@ msgid "" "was intended, please coerce to the lower type afterwards." msgstr "" -#: fread.c:1930 +#: fread.c:1924 #, c-format msgid " After %d type and %d drop user overrides : %s\n" msgstr "" -#: fread.c:1938 +#: fread.c:1932 msgid "[10] Allocate memory for the datatable\n" msgstr "" -#: fread.c:1939 +#: fread.c:1933 #, c-format -msgid " Allocating %d column slots (%d - %d dropped) with %llu rows\n" +msgid " Allocating %d column slots (%d - %d dropped) with % rows\n" msgstr "" -#: fread.c:1993 +#: fread.c:1987 #, c-format -msgid "Buffer size %lld is too large\n" +msgid "Buffer size % is too large\n" msgstr "" -#: fread.c:1996 +#: fread.c:1990 msgid "[11] Read the data\n" msgstr "" -#: fread.c:1999 +#: fread.c:1993 #, c-format -msgid " jumps=[%d..%d), chunk_size=%llu, total_size=%llu\n" +msgid " jumps=[%d..%d), chunk_size=%, total_size=%\n" msgstr "" -#: fread.c:2011 +#: fread.c:2005 #, c-format msgid "Internal error: Master thread is not thread 0 but thread %d.\n" msgstr "" -#: fread.c:2219 +#: fread.c:2213 #, c-format msgid "" -"Column %d (\"%.*s\") bumped from '%s' to '%s' due to <<%.*s>> on row %llu\n" +"Column %d (\"%.*s\") bumped from '%s' to '%s' due to <<%.*s>> on row " +"%\n" msgstr "" -#: fread.c:2268 +#: fread.c:2262 #, c-format msgid "" "Internal error: invalid head position. jump=%d, headPos=%p, thisJumpStart=" "%p, sof=%p" msgstr "" -#: fread.c:2341 +#: fread.c:2335 #, c-format msgid "" -" Too few rows allocated. Allocating additional %llu rows (now nrows=%llu) " -"and continue reading from jump %d\n" +" Too few rows allocated. Allocating additional % rows (now nrows=" +"%) and continue reading from jump %d\n" msgstr "" -#: fread.c:2348 +#: fread.c:2342 #, c-format msgid " Restarting team from jump %d. nSwept==%d quoteRule==%d\n" msgstr "" -#: fread.c:2368 +#: fread.c:2362 #, c-format msgid " %d out-of-sample type bumps: %s\n" msgstr "" -#: fread.c:2404 +#: fread.c:2398 #, c-format msgid "" -"Read %llu rows x %d columns from %s file in %02d:%06.3f wall clock time\n" +"Read % rows x %d columns from %s file in %02d:%06.3f wall clock " +"time\n" msgstr "" -#: fread.c:2411 +#: fread.c:2405 msgid "[12] Finalizing the datatable\n" msgstr "" -#: fread.c:2412 +#: fread.c:2406 msgid " Type counts:\n" msgstr "" -#: fread.c:2414 +#: fread.c:2408 #, c-format msgid "%10d : %-9s '%c'\n" msgstr "" -#: fread.c:2430 +#: fread.c:2424 #, c-format msgid "Discarded single-line footer: <<%s>>" msgstr "" -#: fread.c:2435 +#: fread.c:2429 #, c-format msgid "" -"Stopped early on line %llu. Expected %d fields but found %d. Consider " +"Stopped early on line %. Expected %d fields but found %d. Consider " "fill=TRUE and comment.char=. First discarded non-empty line: <<%s>>" msgstr "" -#: fread.c:2441 -#, c-format +#: fread.c:2435 +#, fuzzy, c-format msgid "" -"Found and resolved improper quoting out-of-sample. First healed line %llu: <<" -"%s>>. If the fields are not quoted (e.g. field separator does not appear " -"within any field), try quote=\"\" to avoid this warning." +"Found and resolved improper quoting out-of-sample. First healed line " +"%: <<%s>>. If the fields are not quoted (e.g. field separator does " +"not appear within any field), try quote=\"\" to avoid this warning." msgstr "" +"在前 %d 行中发现并修正了不合适的引号用法。如果字段没有加引号(例如字段间隔符" +"没有在任何字段内出现),可以尝试使用 quote=\"\" 来避免此警告。" -#: fread.c:2445 +#: fread.c:2439 msgid "=============================\n" msgstr "" -#: fread.c:2447 +#: fread.c:2441 #, c-format msgid "%8.3fs (%3.0f%%) Memory map %.3fGB file\n" msgstr "" -#: fread.c:2448 +#: fread.c:2442 #, c-format msgid "%8.3fs (%3.0f%%) sep=" msgstr "" -#: fread.c:2450 +#: fread.c:2444 #, c-format msgid " ncol=%d and header detection\n" msgstr "" -#: fread.c:2451 +#: fread.c:2445 #, c-format -msgid "%8.3fs (%3.0f%%) Column type detection using %llu sample rows\n" +msgid "%8.3fs (%3.0f%%) Column type detection using % sample rows\n" msgstr "" -#: fread.c:2453 +#: fread.c:2447 #, c-format msgid "" -"%8.3fs (%3.0f%%) Allocation of %llu rows x %d cols (%.3fGB) of which %llu " -"(%3.0f%%) rows used\n" +"%8.3fs (%3.0f%%) Allocation of % rows x %d cols (%.3fGB) of which " +"% (%3.0f%%) rows used\n" msgstr "" -#: fread.c:2457 +#: fread.c:2451 #, c-format msgid "" "%8.3fs (%3.0f%%) Reading %d chunks (%d swept) of %.3fMB (each chunk %d rows) " "using %d threads\n" msgstr "" -#: fread.c:2459 +#: fread.c:2453 #, c-format msgid "" " + %8.3fs (%3.0f%%) Parse to row-major thread buffers (grown %d times)\n" msgstr "" -#: fread.c:2460 +#: fread.c:2454 #, c-format msgid " + %8.3fs (%3.0f%%) Transpose\n" msgstr "" -#: fread.c:2461 +#: fread.c:2455 #, c-format msgid " + %8.3fs (%3.0f%%) Waiting\n" msgstr "" -#: fread.c:2462 +#: fread.c:2456 #, c-format msgid "" "%8.3fs (%3.0f%%) Rereading %d columns due to out-of-sample type exceptions\n" msgstr "" -#: fread.c:2464 +#: fread.c:2458 #, c-format msgid "%8.3fs Total\n" msgstr "" @@ -2749,9 +2770,11 @@ msgid "%s: processing algo %u took %.3fs\n" msgstr "" #: froll.c:52 froll.c:255 -#, c-format -msgid "%s: running for input length %llu, window %d, hasna %d, narm %d\n" +#, fuzzy, c-format +msgid "%s: running for input length %, window %d, hasna %d, narm %d\n" msgstr "" +"%s: 正在并行运行, 输入长度 (input length) %llu, 窗口 (window) %d, hasna %d, " +"narm %d\n" #: froll.c:72 froll.c:82 froll.c:173 froll.c:275 froll.c:285 froll.c:366 #: frolladaptive.c:62 frolladaptive.c:151 frolladaptive.c:251 @@ -2778,9 +2801,10 @@ msgid "" msgstr "%s: NA (或其他非有限长度值) 出现在输入中, 跳过非NA的输入并当心NA值\n" #: froll.c:141 froll.c:339 -#, c-format +#, fuzzy, c-format msgid "" -"%s: running in parallel for input length %llu, window %d, hasna %d, narm %d\n" +"%s: running in parallel for input length %, window %d, hasna %d, " +"narm %d\n" msgstr "" "%s: 正在并行运行, 输入长度 (input length) %llu, 窗口 (window) %d, hasna %d, " "narm %d\n" @@ -2968,8 +2992,8 @@ msgid "internal error: 'rho' should be an environment" msgstr "内部错误: 'rho' 应该为一个环境 (environment)" #: frolladaptive.c:33 frolladaptive.c:222 -#, c-format -msgid "%s: running for input length %llu, hasna %d, narm %d\n" +#, fuzzy, c-format +msgid "%s: running for input length %, hasna %d, narm %d\n" msgstr "%s: 正在运行, 输入长度 %llu, hasna %d, narm %d\n" #: frolladaptive.c:39 frolladaptive.c:228 @@ -2983,8 +3007,8 @@ msgid "%s: Unable to allocate memory for cum NA counter" msgstr "%s: 无法为 cum NA counter 分配内存" #: frolladaptive.c:118 frolladaptive.c:302 -#, c-format -msgid "%s: running in parallel for input length %llu, hasna %d, narm %d\n" +#, fuzzy, c-format +msgid "%s: running in parallel for input length %, hasna %d, narm %d\n" msgstr "%s: 正在并行运行, 输入长度 %llu, hasna %d, narm %d\n" #: fsort.c:111 @@ -3017,7 +3041,8 @@ msgstr "" #: fsort.c:177 #, c-format msgid "" -"counts is %dMB (%d pages per nBatch=%d, batchSize=%lld, lastBatchSize=%lld)\n" +"counts is %dMB (%d pages per nBatch=%d, batchSize=%, lastBatchSize=" +"%)\n" msgstr "" #: fsort.c:230 @@ -3030,10 +3055,10 @@ msgstr "" #: fsort.c:246 #, c-format -msgid "%lld " +msgid "% " msgstr "" -#: fsort.c:246 fwrite.c:693 fwrite.c:951 +#: fsort.c:246 fwrite.c:694 fwrite.c:952 msgid "\n" msgstr "" @@ -3052,49 +3077,49 @@ msgstr "" msgid "%d: %.3f (%4.1f%%)\n" msgstr "" -#: fwrite.c:603 +#: fwrite.c:604 #, c-format msgid "buffMB=%d outside [1,1024]" msgstr "" -#: fwrite.c:610 +#: fwrite.c:611 #, c-format msgid "" "eol must be 1 or more bytes (usually either \\n or \\r\\n) but is length %d" msgstr "" -#: fwrite.c:613 +#: fwrite.c:614 msgid "Column writers: " msgstr "" -#: fwrite.c:615 fwrite.c:617 fwrite.c:619 +#: fwrite.c:616 fwrite.c:618 fwrite.c:620 #, c-format msgid "%d " msgstr "" -#: fwrite.c:618 +#: fwrite.c:619 msgid "... " msgstr "" -#: fwrite.c:621 +#: fwrite.c:622 #, c-format msgid "" "\n" -"args.doRowNames=%d args.rowNames=%d doQuote=%d args.nrow=%lld args.ncol=%d " -"eolLen=%d\n" +"args.doRowNames=%d args.rowNames=%d doQuote=%d args.nrow=% args.ncol=" +"%d eolLen=%d\n" msgstr "" -#: fwrite.c:654 +#: fwrite.c:655 #, c-format msgid "Internal error: type %d has no max length method implemented" msgstr "" -#: fwrite.c:662 +#: fwrite.c:663 #, c-format -msgid "maxLineLen=%zd. Found in %.3fs\n" +msgid "maxLineLen=%. Found in %.3fs\n" msgstr "" -#: fwrite.c:682 +#: fwrite.c:683 #, c-format msgid "" "%s: '%s'. Failed to open existing file for writing. Do you have write " @@ -3102,7 +3127,7 @@ msgid "" "have it open?" msgstr "" -#: fwrite.c:683 +#: fwrite.c:684 #, c-format msgid "" "%s: '%s'. Unable to create new file for writing (it does not exist already). " @@ -3110,65 +3135,65 @@ msgid "" "the path exist?" msgstr "" -#: fwrite.c:691 +#: fwrite.c:692 #, c-format msgid "Writing bom (%s), yaml (%d characters) and column names (%s) ... " msgstr "" -#: fwrite.c:704 +#: fwrite.c:705 #, c-format msgid "Unable to allocate %d MiB for header: %s" msgstr "" -#: fwrite.c:732 fwrite.c:793 +#: fwrite.c:733 fwrite.c:794 msgid "Can't allocate gzip stream structure" msgstr "" -#: fwrite.c:738 +#: fwrite.c:739 #, c-format msgid "Unable to allocate %d MiB for zbuffer: %s" msgstr "" -#: fwrite.c:753 +#: fwrite.c:754 #, c-format msgid "Compress gzip error: %d" msgstr "" -#: fwrite.c:754 fwrite.c:763 fwrite.c:957 +#: fwrite.c:755 fwrite.c:764 fwrite.c:958 #, c-format msgid "%s: '%s'" msgstr "" -#: fwrite.c:760 +#: fwrite.c:761 #, c-format msgid "done in %.3fs\n" msgstr "" -#: fwrite.c:762 +#: fwrite.c:763 msgid "No data rows present (nrow==0)\n" msgstr "" -#: fwrite.c:780 +#: fwrite.c:781 #, c-format msgid "" -"Writing %lld rows in %d batches of %d rows (each buffer size %dMB, " +"Writing % rows in %d batches of %d rows (each buffer size %dMB, " "showProgress=%d, nth=%d)\n" msgstr "" -#: fwrite.c:965 +#: fwrite.c:966 #, c-format msgid "" "zlib %s (zlib.h %s) deflate() returned error %d with z_stream->msg==\"%s\" " "Z_FINISH=%d Z_BLOCK=%d. %s" msgstr "" -#: fwrite.c:967 +#: fwrite.c:968 msgid "" "Please include the full output above and below this message in your data." "table bug report." msgstr "" -#: fwrite.c:968 +#: fwrite.c:969 msgid "" "Please retry fwrite() with verbose=TRUE and include the full output with " "your data.table bug report." @@ -3819,7 +3844,7 @@ msgstr "" #: init.c:254 #, c-format -msgid "Conversion of NA_INT64 via double failed %lld!=%lld" +msgid "Conversion of NA_INT64 via double failed %!=%" msgstr "" #: init.c:258 @@ -4024,8 +4049,8 @@ msgstr "" #: rbindlist.c:62 #, c-format msgid "" -"Total rows in the list is %lld which is larger than the maximum number of " -"rows, currently %d" +"Total rows in the list is % which is larger than the maximum number " +"of rows, currently %d" msgstr "" #: rbindlist.c:63 @@ -4035,8 +4060,8 @@ msgstr "" #: rbindlist.c:71 #, c-format msgid "" -"Failed to allocate upper bound of %lld unique column names [sum(lapply(l," -"ncol))]" +"Failed to allocate upper bound of % unique column names " +"[sum(lapply(l,ncol))]" msgstr "" #: rbindlist.c:102 @@ -4416,7 +4441,7 @@ msgstr "" #, c-format msgid "" "All elements to input list must be of same length. Element [%d] has length " -"%llu != length of first element = %llu." +"% != length of first element = %." msgstr "" #: uniqlist.c:255 From 0de9fb822560787f5f3821da1549990ece368f4c Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Thu, 21 Nov 2019 08:26:04 +0800 Subject: [PATCH 49/78] update fuzzy translations --- inst/po/zh_CN/LC_MESSAGES/data.table.mo | Bin 59859 -> 62017 bytes po/R-zh_CN.po | 3 +- po/zh_CN.po | 53 ++++++++++++------------ 3 files changed, 27 insertions(+), 29 deletions(-) diff --git a/inst/po/zh_CN/LC_MESSAGES/data.table.mo b/inst/po/zh_CN/LC_MESSAGES/data.table.mo index 0f361770add0a9884ff6cc41a513b932806f4cfc..53f52641aeb05949daef10d58ed6db22cdd85884 100644 GIT binary patch delta 9576 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 bytes working memory in chmatchdup: " "length(table)=%d length(unique(table))=%d" msgstr "" -"无法为 chmatchdup: length(table)=%2$d length(unique(table))=%3$d 分配 %1$lld " +"无法为 chmatchdup: length(table)=%2$d length(unique(table))=%3$d 分配 %1$ " "字节的内存空间" #: cj.c:89 @@ -1202,21 +1202,21 @@ msgid "'yes' and 'no' are both type factor but their levels are different." msgstr "'yes'和'no'都是因子类型但他们的因子水平不同。" #: fifelse.c:38 -#, fuzzy, c-format +#, c-format msgid "" "Length of 'yes' is % but must be 1 or length of 'test' (%)." -msgstr "'yes'长度是%lld但长度必须是1或者等于'test'的长度 (%lld)。" +msgstr "'yes'长度是%但长度必须是1或者等于'test'的长度 (%)。" #: fifelse.c:40 -#, fuzzy, c-format +#, c-format msgid "" "Length of 'no' is % but must be 1 or length of 'test' (%)." -msgstr "'no'长度是%lld但长度必须是1或者等于'test'的长度 (%lld)。" +msgstr "'no'长度是%但长度必须是1或者等于'test'的长度 (%)。" #: fifelse.c:51 -#, fuzzy, c-format +#, c-format msgid "Length of 'na' is % but must be 1" -msgstr "'na'长度是%lld但必须是长度必须是1" +msgstr "'na'长度是%但必须是长度必须是1" #: fifelse.c:57 #, c-format @@ -1785,9 +1785,9 @@ msgid " None of the NAstrings look like numbers.\n" msgstr "没有 NAstrings 为数值\n" #: fread.c:1155 -#, fuzzy, c-format +#, c-format msgid " skip num lines = %\n" -msgstr "跳过行数为 %llu\n" +msgstr "跳过行数为 %\n" #: fread.c:1156 #, c-format @@ -2004,21 +2004,21 @@ msgstr "" "模式,适配符或正则表达式)" #: fread.c:1380 -#, fuzzy, c-format +#, c-format msgid "" "Found skip='%s' on line %. Taking this to be header row or first row " "of data.\n" -msgstr "在行 %2$llu 发现了 skip='%1$s'。将此当做表头或数据的第一行。\n" +msgstr "在行 %2$ 发现了 skip='%1$s'。将此当做表头或数据的第一行。\n" #: fread.c:1393 -#, fuzzy, c-format +#, c-format msgid " Skipped to line % in the file" -msgstr " 跳到文件的第 %llu 行" +msgstr " 跳到文件的第 % 行" #: fread.c:1394 -#, fuzzy, c-format +#, c-format msgid "skip=% but the input only has % line%s" -msgstr "skip=%llu 但输入只有 %llu 行 %s" +msgstr "skip=% 但输入只有 % 行 %s" #: fread.c:1403 msgid "" @@ -2473,14 +2473,13 @@ msgid "" msgstr "" #: fread.c:2435 -#, fuzzy, c-format +#, c-format msgid "" "Found and resolved improper quoting out-of-sample. First healed line " "%: <<%s>>. If the fields are not quoted (e.g. field separator does " "not appear within any field), try quote=\"\" to avoid this warning." msgstr "" -"在前 %d 行中发现并修正了不合适的引号用法。如果字段没有加引号(例如字段间隔符" -"没有在任何字段内出现),可以尝试使用 quote=\"\" 来避免此警告。" +"" #: fread.c:2439 msgid "=============================\n" @@ -2770,10 +2769,10 @@ msgid "%s: processing algo %u took %.3fs\n" msgstr "" #: froll.c:52 froll.c:255 -#, fuzzy, c-format +#, c-format msgid "%s: running for input length %, window %d, hasna %d, narm %d\n" msgstr "" -"%s: 正在并行运行, 输入长度 (input length) %llu, 窗口 (window) %d, hasna %d, " +"%s: 正在并行运行, 输入长度 (input length) %, 窗口 (window) %d, hasna %d, " "narm %d\n" #: froll.c:72 froll.c:82 froll.c:173 froll.c:275 froll.c:285 froll.c:366 @@ -2801,12 +2800,12 @@ msgid "" msgstr "%s: NA (或其他非有限长度值) 出现在输入中, 跳过非NA的输入并当心NA值\n" #: froll.c:141 froll.c:339 -#, fuzzy, c-format +#, c-format msgid "" "%s: running in parallel for input length %, window %d, hasna %d, " "narm %d\n" msgstr "" -"%s: 正在并行运行, 输入长度 (input length) %llu, 窗口 (window) %d, hasna %d, " +"%s: 正在并行运行, 输入长度 (input length) %, 窗口 (window) %d, hasna %d, " "narm %d\n" #: froll.c:179 froll.c:372 frolladaptive.c:157 frolladaptive.c:336 @@ -2992,9 +2991,9 @@ msgid "internal error: 'rho' should be an environment" msgstr "内部错误: 'rho' 应该为一个环境 (environment)" #: frolladaptive.c:33 frolladaptive.c:222 -#, fuzzy, c-format +#, c-format msgid "%s: running for input length %, hasna %d, narm %d\n" -msgstr "%s: 正在运行, 输入长度 %llu, hasna %d, narm %d\n" +msgstr "%s: 正在运行, 输入长度 %, hasna %d, narm %d\n" #: frolladaptive.c:39 frolladaptive.c:228 #, c-format @@ -3007,9 +3006,9 @@ msgid "%s: Unable to allocate memory for cum NA counter" msgstr "%s: 无法为 cum NA counter 分配内存" #: frolladaptive.c:118 frolladaptive.c:302 -#, fuzzy, c-format +#, c-format msgid "%s: running in parallel for input length %, hasna %d, narm %d\n" -msgstr "%s: 正在并行运行, 输入长度 %llu, hasna %d, narm %d\n" +msgstr "%s: 正在并行运行, 输入长度 %, hasna %d, narm %d\n" #: fsort.c:111 msgid "x must be a vector of type 'double' currently" From 2c474db12796f01dd55fe1931cc22cae620355f2 Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Thu, 21 Nov 2019 08:54:52 +0800 Subject: [PATCH 50/78] update mistaken PRIu64->PRId64 --- inst/po/en@quot/LC_MESSAGES/data.table.mo | Bin 140104 -> 140272 bytes po/data.table.pot | 34 ++++++++------- po/zh_CN.po | 48 ++++++++++++---------- src/fread.c | 2 +- src/froll.c | 8 ++-- src/frolladaptive.c | 8 ++-- src/fsort.c | 7 ++-- src/fwrite.c | 10 ++--- src/init.c | 2 +- src/rbindlist.c | 4 +- src/uniqlist.c | 2 +- 11 files changed, 69 insertions(+), 56 deletions(-) diff --git a/inst/po/en@quot/LC_MESSAGES/data.table.mo b/inst/po/en@quot/LC_MESSAGES/data.table.mo index cd9ef4957478faa6a53558b84bb9346067c68712..bceac971ae3fbc0c826d6611b81b1a03785fce7e 100644 GIT binary patch delta 18800 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 jMn-OpTK?^+y|+6-7~d)+n_{t!h!U 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 EAC=&Gb^rhX diff --git a/po/data.table.pot b/po/data.table.pot index 0ac90c9d40..1d0416f1b6 100644 --- a/po/data.table.pot +++ b/po/data.table.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.7\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-11-21 08:00+0800\n" +"POT-Creation-Date: 2019-11-21 08:53+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -1606,6 +1606,12 @@ msgstr "" msgid "Internal error. Argument 'cols' to CanyNA is type '%s' not 'integer'" msgstr "" +#: fread.c:104 +#, c-format +msgid "" +"Internal error in line %d of fread.c, please report on data.table GitHub: " +msgstr "" + #: fread.c:147 #, c-format msgid "System error %d unmapping view of file\n" @@ -2913,34 +2919,34 @@ msgid "" "%)\n" msgstr "" -#: fsort.c:230 +#: fsort.c:231 msgid "Internal error: counts[nBatch-1][MSBsize-1] != length(x)" msgstr "" -#: fsort.c:246 +#: fsort.c:247 msgid "Top 5 MSB counts: " msgstr "" -#: fsort.c:246 +#: fsort.c:247 #, c-format -msgid "% " +msgid "% " msgstr "" -#: fsort.c:246 fwrite.c:694 fwrite.c:952 +#: fsort.c:247 fwrite.c:694 fwrite.c:952 msgid "\n" msgstr "" -#: fsort.c:247 +#: fsort.c:248 #, c-format msgid "Reduced MSBsize from %d to " msgstr "" -#: fsort.c:251 +#: fsort.c:252 #, c-format msgid "%d by excluding 0 and 1 counts\n" msgstr "" -#: fsort.c:308 +#: fsort.c:309 #, c-format msgid "%d: %.3f (%4.1f%%)\n" msgstr "" @@ -2973,7 +2979,7 @@ msgstr "" #, c-format msgid "" "\n" -"args.doRowNames=%d args.rowNames=%d doQuote=%d args.nrow=% args.ncol=" +"args.doRowNames=%d args.rowNames=%d doQuote=%d args.nrow=% args.ncol=" "%d eolLen=%d\n" msgstr "" @@ -3044,7 +3050,7 @@ msgstr "" #: fwrite.c:781 #, c-format msgid "" -"Writing % rows in %d batches of %d rows (each buffer size %dMB, " +"Writing % rows in %d batches of %d rows (each buffer size %dMB, " "showProgress=%d, nth=%d)\n" msgstr "" @@ -3692,7 +3698,7 @@ msgstr "" #: init.c:254 #, c-format -msgid "Conversion of NA_INT64 via double failed %!=%" +msgid "Conversion of NA_INT64 via double failed %!=%" msgstr "" #: init.c:258 @@ -3897,7 +3903,7 @@ msgstr "" #: rbindlist.c:62 #, c-format msgid "" -"Total rows in the list is % which is larger than the maximum number " +"Total rows in the list is % which is larger than the maximum number " "of rows, currently %d" msgstr "" @@ -3908,7 +3914,7 @@ msgstr "" #: rbindlist.c:71 #, c-format msgid "" -"Failed to allocate upper bound of % unique column names " +"Failed to allocate upper bound of % unique column names " "[sum(lapply(l,ncol))]" msgstr "" diff --git a/po/zh_CN.po b/po/zh_CN.po index b111533d01..2b19c20e20 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-11-21 08:00+0800\n" +"POT-Creation-Date: 2019-11-21 08:53+0800\n" "PO-Revision-Date: 2019-10-31 17:27+08\n" "Last-Translator: Amy Tzu-Yu Chen \n" "Language-Team: Mandarin\n" @@ -834,8 +834,8 @@ msgid "" "Failed to allocate % bytes working memory in chmatchdup: " "length(table)=%d length(unique(table))=%d" msgstr "" -"无法为 chmatchdup: length(table)=%2$d length(unique(table))=%3$d 分配 %1$ " -"字节的内存空间" +"无法为 chmatchdup: length(table)=%2$d length(unique(table))=%3$d 分配 " +"%1$ 字节的内存空间" #: cj.c:89 #, c-format @@ -1701,6 +1701,13 @@ msgstr "内部错误:参数 'x' 关于 CanyNA 是 '%s' 类型而不是'list' msgid "Internal error. Argument 'cols' to CanyNA is type '%s' not 'integer'" msgstr "内部错误:参数 'cols' 关于 CanyNA 是 '%s' 类型而不是'integer'类型" +#: fread.c:104 +#, fuzzy, c-format +msgid "" +"Internal error in line %d of fread.c, please report on data.table GitHub: " +msgstr "" +"" + #: fread.c:147 #, c-format msgid "System error %d unmapping view of file\n" @@ -2479,7 +2486,6 @@ msgid "" "%: <<%s>>. If the fields are not quoted (e.g. field separator does " "not appear within any field), try quote=\"\" to avoid this warning." msgstr "" -"" #: fread.c:2439 msgid "=============================\n" @@ -2772,8 +2778,8 @@ msgstr "" #, c-format msgid "%s: running for input length %, window %d, hasna %d, narm %d\n" msgstr "" -"%s: 正在并行运行, 输入长度 (input length) %, 窗口 (window) %d, hasna %d, " -"narm %d\n" +"%s: 正在并行运行, 输入长度 (input length) %, 窗口 (window) %d, hasna " +"%d, narm %d\n" #: froll.c:72 froll.c:82 froll.c:173 froll.c:275 froll.c:285 froll.c:366 #: frolladaptive.c:62 frolladaptive.c:151 frolladaptive.c:251 @@ -2805,8 +2811,8 @@ msgid "" "%s: running in parallel for input length %, window %d, hasna %d, " "narm %d\n" msgstr "" -"%s: 正在并行运行, 输入长度 (input length) %, 窗口 (window) %d, hasna %d, " -"narm %d\n" +"%s: 正在并行运行, 输入长度 (input length) %, 窗口 (window) %d, hasna " +"%d, narm %d\n" #: froll.c:179 froll.c:372 frolladaptive.c:157 frolladaptive.c:336 #, c-format @@ -3044,34 +3050,34 @@ msgid "" "%)\n" msgstr "" -#: fsort.c:230 +#: fsort.c:231 msgid "Internal error: counts[nBatch-1][MSBsize-1] != length(x)" msgstr "" -#: fsort.c:246 +#: fsort.c:247 msgid "Top 5 MSB counts: " msgstr "" -#: fsort.c:246 +#: fsort.c:247 #, c-format -msgid "% " +msgid "% " msgstr "" -#: fsort.c:246 fwrite.c:694 fwrite.c:952 +#: fsort.c:247 fwrite.c:694 fwrite.c:952 msgid "\n" msgstr "" -#: fsort.c:247 +#: fsort.c:248 #, c-format msgid "Reduced MSBsize from %d to " msgstr "" -#: fsort.c:251 +#: fsort.c:252 #, c-format msgid "%d by excluding 0 and 1 counts\n" msgstr "" -#: fsort.c:308 +#: fsort.c:309 #, c-format msgid "%d: %.3f (%4.1f%%)\n" msgstr "" @@ -3104,7 +3110,7 @@ msgstr "" #, c-format msgid "" "\n" -"args.doRowNames=%d args.rowNames=%d doQuote=%d args.nrow=% args.ncol=" +"args.doRowNames=%d args.rowNames=%d doQuote=%d args.nrow=% args.ncol=" "%d eolLen=%d\n" msgstr "" @@ -3175,7 +3181,7 @@ msgstr "" #: fwrite.c:781 #, c-format msgid "" -"Writing % rows in %d batches of %d rows (each buffer size %dMB, " +"Writing % rows in %d batches of %d rows (each buffer size %dMB, " "showProgress=%d, nth=%d)\n" msgstr "" @@ -3843,7 +3849,7 @@ msgstr "" #: init.c:254 #, c-format -msgid "Conversion of NA_INT64 via double failed %!=%" +msgid "Conversion of NA_INT64 via double failed %!=%" msgstr "" #: init.c:258 @@ -4048,7 +4054,7 @@ msgstr "" #: rbindlist.c:62 #, c-format msgid "" -"Total rows in the list is % which is larger than the maximum number " +"Total rows in the list is % which is larger than the maximum number " "of rows, currently %d" msgstr "" @@ -4059,7 +4065,7 @@ msgstr "" #: rbindlist.c:71 #, c-format msgid "" -"Failed to allocate upper bound of % unique column names " +"Failed to allocate upper bound of % unique column names " "[sum(lapply(l,ncol))]" msgstr "" diff --git a/src/fread.c b/src/fread.c index 567cbcbb1a..306c8f9fe2 100644 --- a/src/fread.c +++ b/src/fread.c @@ -101,7 +101,7 @@ static void Field(FieldParseContext *ctx); // essentially that would come down to creating f() g() in the code after // macro expansion, which is not valid. These are internal errors, so just concede. #define ASSERT(cond, msg, ...) \ - if (!(cond)) STOP("Internal error in line %d of fread.c, please report on data.table GitHub: " msg, __LINE__, __VA_ARGS__) // # nocov + if (!(cond)) STOP(_("Internal error in line %d of fread.c, please report on data.table GitHub: " msg), __LINE__, __VA_ARGS__) // # nocov diff --git a/src/froll.c b/src/froll.c index b8b3be07b9..49db82691d 100644 --- a/src/froll.c +++ b/src/froll.c @@ -49,7 +49,7 @@ void frollmean(unsigned int algo, double *x, uint64_t nx, ans_t *ans, int k, int */ void frollmeanFast(double *x, uint64_t nx, ans_t *ans, int k, double fill, bool narm, int hasna, bool verbose) { if (verbose) - snprintf(end(ans->message[0]), 500, _("%s: running for input length %"PRIu64", window %d, hasna %d, narm %d\n"), __func__, (unsigned long long int)nx, k, hasna, (int)narm); + snprintf(end(ans->message[0]), 500, _("%s: running for input length %"PRIu64", window %d, hasna %d, narm %d\n"), __func__, (uint64_t)nx, k, hasna, (int)narm); long double w = 0.0; // sliding window aggregate bool truehasna = hasna>0; // flag to re-run with NA support if NAs detected if (!truehasna) { @@ -138,7 +138,7 @@ void frollmeanFast(double *x, uint64_t nx, ans_t *ans, int k, double fill, bool */ void frollmeanExact(double *x, uint64_t nx, ans_t *ans, int k, double fill, bool narm, int hasna, bool verbose) { if (verbose) - snprintf(end(ans->message[0]), 500, _("%s: running in parallel for input length %"PRIu64", window %d, hasna %d, narm %d\n"), __func__, (unsigned long long int)nx, k, hasna, (int)narm); + snprintf(end(ans->message[0]), 500, _("%s: running in parallel for input length %"PRIu64", window %d, hasna %d, narm %d\n"), __func__, (uint64_t)nx, k, hasna, (int)narm); for (int i=0; idbl_v[i] = fill; } @@ -252,7 +252,7 @@ void frollsum(unsigned int algo, double *x, uint64_t nx, ans_t *ans, int k, int } void frollsumFast(double *x, uint64_t nx, ans_t *ans, int k, double fill, bool narm, int hasna, bool verbose) { if (verbose) - snprintf(end(ans->message[0]), 500, _("%s: running for input length %"PRIu64", window %d, hasna %d, narm %d\n"), __func__, (unsigned long long int)nx, k, hasna, (int)narm); + snprintf(end(ans->message[0]), 500, _("%s: running for input length %"PRIu64", window %d, hasna %d, narm %d\n"), __func__, (uint64_t)nx, k, hasna, (int)narm); long double w = 0.0; bool truehasna = hasna>0; if (!truehasna) { @@ -336,7 +336,7 @@ void frollsumFast(double *x, uint64_t nx, ans_t *ans, int k, double fill, bool n } void frollsumExact(double *x, uint64_t nx, ans_t *ans, int k, double fill, bool narm, int hasna, bool verbose) { if (verbose) - snprintf(end(ans->message[0]), 500, _("%s: running in parallel for input length %"PRIu64", window %d, hasna %d, narm %d\n"), __func__, (unsigned long long int)nx, k, hasna, (int)narm); + snprintf(end(ans->message[0]), 500, _("%s: running in parallel for input length %"PRIu64", window %d, hasna %d, narm %d\n"), __func__, (uint64_t)nx, k, hasna, (int)narm); for (int i=0; idbl_v[i] = fill; } diff --git a/src/frolladaptive.c b/src/frolladaptive.c index 7b4d0ed194..7c2f6bf94e 100644 --- a/src/frolladaptive.c +++ b/src/frolladaptive.c @@ -30,7 +30,7 @@ void fadaptiverollmean(unsigned int algo, double *x, uint64_t nx, ans_t *ans, in */ void fadaptiverollmeanFast(double *x, uint64_t nx, ans_t *ans, int *k, double fill, bool narm, int hasna, bool verbose) { if (verbose) - snprintf(end(ans->message[0]), 500, _("%s: running for input length %"PRIu64", hasna %d, narm %d\n"), __func__, (unsigned long long int)nx, hasna, (int) narm); + snprintf(end(ans->message[0]), 500, _("%s: running for input length %"PRIu64", hasna %d, narm %d\n"), __func__, (uint64_t)nx, hasna, (int) narm); bool truehasna = hasna>0; // flag to re-run if NAs detected long double w = 0.0; double *cs = malloc(nx*sizeof(double)); // cumsum vector, same as double cs[nx] but no segfault @@ -115,7 +115,7 @@ void fadaptiverollmeanFast(double *x, uint64_t nx, ans_t *ans, int *k, double fi */ void fadaptiverollmeanExact(double *x, uint64_t nx, ans_t *ans, int *k, double fill, bool narm, int hasna, bool verbose) { if (verbose) - snprintf(end(ans->message[0]), 500, _("%s: running in parallel for input length %"PRIu64", hasna %d, narm %d\n"), __func__, (unsigned long long int)nx, hasna, (int) narm); + snprintf(end(ans->message[0]), 500, _("%s: running in parallel for input length %"PRIu64", hasna %d, narm %d\n"), __func__, (uint64_t)nx, hasna, (int) narm); bool truehasna = hasna>0; // flag to re-run if NAs detected if (!truehasna || !narm) { // narm=FALSE handled here as NAs properly propagated in exact algo #pragma omp parallel for num_threads(getDTthreads()) @@ -219,7 +219,7 @@ void fadaptiverollsum(unsigned int algo, double *x, uint64_t nx, ans_t *ans, int } void fadaptiverollsumFast(double *x, uint64_t nx, ans_t *ans, int *k, double fill, bool narm, int hasna, bool verbose) { if (verbose) - snprintf(end(ans->message[0]), 500, _("%s: running for input length %"PRIu64", hasna %d, narm %d\n"), __func__, (unsigned long long int)nx, hasna, (int) narm); + snprintf(end(ans->message[0]), 500, _("%s: running for input length %"PRIu64", hasna %d, narm %d\n"), __func__, (uint64_t)nx, hasna, (int) narm); bool truehasna = hasna>0; long double w = 0.0; double *cs = malloc(nx*sizeof(double)); @@ -299,7 +299,7 @@ void fadaptiverollsumFast(double *x, uint64_t nx, ans_t *ans, int *k, double fil } void fadaptiverollsumExact(double *x, uint64_t nx, ans_t *ans, int *k, double fill, bool narm, int hasna, bool verbose) { if (verbose) - snprintf(end(ans->message[0]), 500, _("%s: running in parallel for input length %"PRIu64", hasna %d, narm %d\n"), __func__, (unsigned long long int)nx, hasna, (int) narm); + snprintf(end(ans->message[0]), 500, _("%s: running in parallel for input length %"PRIu64", hasna %d, narm %d\n"), __func__, (uint64_t)nx, hasna, (int) narm); bool truehasna = hasna>0; if (!truehasna || !narm) { #pragma omp parallel for num_threads(getDTthreads()) diff --git a/src/fsort.c b/src/fsort.c index c443d0c131..f35ad15bac 100644 --- a/src/fsort.c +++ b/src/fsort.c @@ -175,8 +175,9 @@ SEXP fsort(SEXP x, SEXP verboseArg) { // TODO: change all calloc, malloc and free to Calloc and Free to be robust to error() and catch ooms. if (verbose) Rprintf(_("counts is %dMB (%d pages per nBatch=%d, batchSize=%"PRIu64", lastBatchSize=%"PRIu64")\n"), - nBatch*MSBsize*sizeof(R_xlen_t)/(1024*1024), nBatch*MSBsize*sizeof(R_xlen_t)/(4*1024*nBatch), - nBatch, batchSize, lastBatchSize); + nBatch*MSBsize*sizeof(R_xlen_t)/(1024*1024), + nBatch*MSBsize*sizeof(R_xlen_t)/(4*1024*nBatch), + nBatch, (uint64_t)batchSize, (uint64_t)lastBatchSize); t[3] = wallclock(); #pragma omp parallel for num_threads(nth) for (int batch=0; batch0 && msbCounts[order[MSBsize-1]] < 2) MSBsize--; diff --git a/src/fwrite.c b/src/fwrite.c index eda0a6fffd..c19bbd2463 100644 --- a/src/fwrite.c +++ b/src/fwrite.c @@ -619,8 +619,8 @@ void fwriteMain(fwriteMainArgs args) DTPRINT(_("... ")); for (int j=args.ncol-10; jINT32_MAX) error(_("Total rows in the list is %"PRIu64" which is larger than the maximum number of rows, currently %d"), nrow, INT32_MAX); + if (nrow>INT32_MAX) error(_("Total rows in the list is %"PRId64" which is larger than the maximum number of rows, currently %d"), (int64_t)nrow, INT32_MAX); if (usenames==TRUE && !anyNames) error(_("use.names=TRUE but no item of input list has any names")); int *colMap=NULL; // maps each column in final result to the column of each list item @@ -68,7 +68,7 @@ SEXP rbindlist(SEXP l, SEXP usenamesArg, SEXP fillArg, SEXP idcolArg) // when use.names==NA we also proceed here as if use.names was TRUE to save new code and then check afterwards the map is 1:ncol for every item // first find number of unique column names present; i.e. length(unique(unlist(lapply(l,names)))) SEXP *uniq = (SEXP *)malloc(upperBoundUniqueNames * sizeof(SEXP)); // upperBoundUniqueNames was initialized with 1 to ensure this is defined (otherwise 0 when no item has names) - if (!uniq) error(_("Failed to allocate upper bound of %"PRIu64" unique column names [sum(lapply(l,ncol))]"), upperBoundUniqueNames); + if (!uniq) error(_("Failed to allocate upper bound of %"PRId64" unique column names [sum(lapply(l,ncol))]"), (int64_t)upperBoundUniqueNames); savetl_init(); int nuniq=0; for (int i=0; incol) error(_("Item %d of cols is %d which is outside range of l [1,length(l)=%d]"), i+1, elem, ncol); } for (int i=1; i Date: Thu, 21 Nov 2019 20:42:24 +0800 Subject: [PATCH 51/78] caught a few more failed merges --- src/forder.c | 3 +-- src/fsort.c | 4 ++-- src/fwrite.c | 2 -- src/init.c | 2 +- 4 files changed, 4 insertions(+), 7 deletions(-) diff --git a/src/forder.c b/src/forder.c index d46ce88970..ea0be76d04 100644 --- a/src/forder.c +++ b/src/forder.c @@ -309,7 +309,7 @@ static void range_str(SEXP *x, int n, uint64_t *out_min, uint64_t *out_max, int ustr_alloc = (ustr_alloc==0) ? 16384 : ustr_alloc*2; // small initial guess, negligible time to alloc 128KB (32 pages) if (ustr_alloc>n) ustr_alloc = n; // clamp at n. Reaches n when fully unique (no dups) ustr = realloc(ustr, ustr_alloc * sizeof(SEXP)); - if (ustr==NULL) STOP(_("Unable to realloc %d * %d bytes in range_str"), ustr_alloc, sizeof(SEXP)); // # nocov + if (ustr==NULL) STOP(_("Unable to realloc %d * %d bytes in range_str"), ustr_alloc, (int)sizeof(SEXP)); // # nocov } ustr[ustr_n++] = s; SET_TRUELENGTH(s, -ustr_n); // unique in any order is fine. first-appearance order is achieved later in count_group @@ -1160,7 +1160,6 @@ void radix_r(const int from, const int to, const int radix) { if (!skip) { int *TMP = malloc(my_n * sizeof(int)); if (!TMP) STOP(_("Unable to allocate TMP for my_n=%d items in parallel batch counting"), my_n); - if (!TMP) STOP("Unable to allocate TMP for my_n=%d items in parallel batch counting", my_n); #pragma omp parallel for num_threads(getDTthreads()) for (int batch=0; batch Date: Thu, 21 Nov 2019 21:23:56 +0800 Subject: [PATCH 52/78] line # update --- inst/po/en@quot/LC_MESSAGES/data.table.mo | Bin 140272 -> 140270 bytes po/data.table.pot | 48 ++++++++++---------- po/zh_CN.po | 51 +++++++++++----------- 3 files changed, 49 insertions(+), 50 deletions(-) diff --git a/inst/po/en@quot/LC_MESSAGES/data.table.mo b/inst/po/en@quot/LC_MESSAGES/data.table.mo index bceac971ae3fbc0c826d6611b81b1a03785fce7e..bb35931f528d7e27ea94df3db854dfa5033fc91d 100644 GIT binary patch delta 10108 zcmZ|U3!F_=|HtvQkH#=^8Dm`L%rIjbl8C`141<}$7$PdUq(R6fmvRX?6^|4WCm~&s zk#b2Sw@6eJ)l<4r63QiaUDcDG&-eWH{GVRD{^yn6`?vN!d#}CL@3;1znR7c!oY`4o zb+@vi4Ch?Eubu0T1F#=%$4Xf98|UuE7C0CS@iB}&;9PH9fDd`j{fP<06An7}6wbwR zc>Q{M3k2zNd3vdL^#60wlhv)?-%0KShd>URq;anDW{L#6; za3=1>87G~ahXtpcOTs^}Jyt$#$M?e&;zI0ac+T2S<6PoL&O0|76E4_sD^cI;^plzy9Yt$Whm$(aT zh&pa6>V%6?N%$eg;V)PfOaAR#0Ix;GwedU5!|EY5I4@F89kDU-D&J$+hB(>tBGoVu zlZn^hO}H18?WF@=WJtT9Ms6-P!rd5+UNJ9Ho+U9zd<{l&14Fvw0cMGB5AdV$Sz}{FN$DxLH1!mwks1b;xRwrUp)Oj{xcRYd`$>!1a{eID2$d#et zX&UauLevQ=l(0K(hWbJ;-$~e<_+`}4A4ihN1xi}S+G7-Pf7D0}!D6@&%i|JMN7tju z^-Rf-7fGISF|_8rLXo}CJsa0 z`AXD{lql^*a;z?D#B)M^!w9TK!&HCAGTcP`8P>s>WxU8rwgvUYQ%I@1$}EFQzS8CF z`;Ad^-VHTHccG?WHrB<>zCZegs>FKk1UuTIPMluebD!az*a92G*$CW+HxsYJ(im02 zb7L_Ml@rr37GJ_7+=%z%m#87nkM|;eW&aJ8Y^d)>oqqzV<4aKc*I-cff81}lsWZ6c%2{b_v1^bbs#mtbCp&9t=Ld@_CO8Y zy%-r%>_hw#j>edv&E>M(B$yTnTQ5~6!OK}tS$AT2Qp02)$5c5<)F7t56r%g?gG*yw>WxHEKw^VjUcT zT3TN~jp$~~#-pf_tzFBDJpVhPs%#+k#iv4SH1wSN9l_P9ZF74AzDj&EYDE6VWNdf6 z-T5HYP(Fs5^A*?|594%fRmXEf@MD~Y&Fb3scVQpm6IcR6`8QZy--?=(LR1-jfl9)d zdS2vlnufYy7?t&JpoaJWYUxg{Z^zF>Rn04?74#s+VcB#WsZ=aW+!-VFU%$wXfA3hcA$pvf^Q{;OBZN{s+tj43nyb_%23De@;!|=5tnad?fIyVjlg=U|3z%5 zN1vkR`YSfqa55W1vQ}7NX`|)1Xg-bRz>-u)VHnfk$c-)2>*)K3n z^?#lXt<{xo@*=Ot?NAFuY!iEW)x)=m8=@X6zhZI4P3?qDu>x^t)LP#kRsS-Oe4SA1M^_B#h2wrUG)F5jfN!I+_#IS|oW(BqJ3fN>nV!2EKgNal4Zea8Hn)+w zwuL3*b{tN7^(@P+Fsg&^U<#hjqW;xTwxtbaW7Liws0HRhR5D&f4RxJXwsLhs<;HYW zE^NjJ@EmF?2er00qH(CX-irGE861eQ**40)#J8V+Jdovxl6iStlPY^htVgV&;#&Yq|to{GAI^{6{Ki>jj9w^_OM@-0NI zkf%`{NWI-|uq~#k{s%=ioO=>=z#FKM_!?CO#k$!Y)J2U*H{TE{2bN-I+=IQa>K*0; z98A0)HP^Y_ZOvbaTGC^CcScf9*i3(Om+ z3;&GD_N2RQ2wP$&;xX79ccH2xy1%`kw8vYCw_`c1JiwlMwNOde5{Kb9)H?Fx0P4RL z8$$=$(67cR#Gm6$*z+D6+NV*E>Eoz!Dn7`vJOwqkT~RslIO;+hQA2zIRSnGsTZe~X z3*uF%CH~A{>R(BhHiWsrCs9dt1obow4z&~KqZX3!s1q#5>+vMUV&!{nj<3V=#Ivvo zEEC3nWQ#PdRI=)gnxDkcuM4(-8fn5!E{c#)s;dyXW#iO-|jQ|~w1 zjjb$_Iki`|H9BwHm0*NWSkB4Ma&^?Ki-mS z7OK1sqLME-!E-%vBx>qD##}7_puIcZftr%dsHf?9)YGrUM2jEw{Tw-O$fYs`T3~vk zo>p5?3r);Jo_iA~qmrfN!{$5qIB}atY)U@GX2bzfy9c&FCFug+Q>gOHoNP<-OyB+3 zLG_>ZFH4U5uo?%hL1q7^e*7nD&Vy6zPJ7^R;>D;OiF?${#(u=3P*2PKsN}0V)qe{{ z-QX@%l~s7mum4-vP?8klU3dbu@Z>#iJsyQxAGV>Au;(;$I_d&%qNe67YN~Rl+iUtG zs51Q$`(VWxRvix@_wCk5eKGwByU=5(q5BL~Mrkwcj_<^5;zI0;Kcd!+j!#+@Jc-JQ zEvWA$%(5Hkf?329Q5|^;HL{mb*i|=zM!f zEJ9`T4%D1oM6C}uK4Vib4Ar3*Fd2VA&2hyA_PFhXdBk&3Idm8`W!0ax$NjA#HZ&yL zQ5QIg8k$il_l2U z)~FS82&&`rk?)7xUN+Rza)p*8-B8&-7xjhhs5>}|8tQ6GZAwO=reZm21dgE2llYS7 z?!kVjB>f20@p8-TshEQUh&SUcs)N**t!zf4PP7JRwxD|H3!+0-o)s=QbGf?Zp22_6Pp$Y@?M{26me_ST z4u8k>c;9L}uJ&uTe-vuv+khJS3Tx~}9>EjDo3RcSuC;RBi&`fVUZ?)GaT^;Ny4hGB z_hS~GM)kPvI^OAc=!B8{bgkA~2M=zrq-wO$?(iYh({MRz?zi|J!ys|&CR<_a;Bev& zo2Y+1mA29_QVpBE$nWR3p$iqqn@sA2Jrb6|!=uy^W_JcQy?ZIH2-&d+avAa>Tn(PsM$xJE^wAbGxxA zstTgtvE^c_VU>TI}rEr zU5&cKOQ;2@(FZnCgRvv=0UW@2uHWssMZ{0-u_?^>(2M*bV+?*t`>2n+$R8d$d~9!2 zp`&bQ#k%U>_JvNELOcug*j$UsiKtKPeZMkl1k$lOcEo3K1kS@UpW5$!Uc$xNzt`H& z;{xKxKl9wvSmX1^aUr*b4SliS7j~k*a6a)fU)tO@{K}H6pYKc@&HhcOg{%HP+dl%8 z8_%MqWIu=Tcp58Wu|qax30Q-;A*NvuOvi^Yq&Jn<*{Fgg4%-Q< zV@=`?7>A>Ddn%@ES z{WmcgzegP(b;_)bD%;K>HZ=4LQIFA0s5>ln+WwMJ6*UsqU@`25D#xCvBpik*xD=H; zyHGzV9YE#KpQ!Jrow1y`1NHD(fbB4Jij6EbGS1r5Yz%6}dlT=*53waSIA<@BqfmG9 z6>7*Yp@uyEyu~fC8gVyN`&itHOHdD?z85U}XCeDTZW|kp|4yN@`SeeAg33SJoHs_T zcv+}29F5A}7qKpW;T!dfJ?$EzE?o6j`$I+^YMrR|o8?$<>_S|KrB(kI*%(Vh^zSzG z4`D3v0@P5h#0j_?HRNqC+K*TvRPsHGn!+8ZIX~d9W_xSkcV38$71C7 zf6w{{Y)4)A2h^PXhPw0Gf7;L%pe`^LOXEV+{#B@I_}-7*f2@NUm_>URRPsKBG59`S zgP&nYJ-Nt+?j-3i>sdDHfPsEI!;fF{<1hU957fF)?UMbXp*bo!Z%2*XAXG9>#Xk5V zK90rzwz8b{H}$V%*+hdnvLDrvOQ<_bW4X~6d*J=J6%(<67l@2RC)C`IMdi*0RL75C z0hR~^A|o{j?;;+Hvv41F#lgiwfygf!w-pQ6kIPrt2^OO|vJ;o$861Rjq5_dSa>WBq za~edgbj`6nj=|=*165vu=s@HT8Toh>aZ-su-~Di;Q!%DmkRY-mVV zV}1M(l}vx5hBR0@5P8eZMRjZ%MwVXG9qhrr`1{&k^;^dTj(Xw6P0s{)Zs&5a;g29<^xC)&8E* z;n&u7{bDj zsi==~K_4BZBcj8z+Qh{dR1QSe5A9J>YR{|TjctNSiBX+Puiwtj%Ls08MlSD%QLQ6;*}Yf6RzJb7#Nlqej+C!@Ks{? zm7Ijk;z?KLTm#xJ&$(f=U7mB(!f&?=#&2YgUUYRAMRyw=KF^+ERjWn}xa*o# zyE5mBCtsO!t&+pf=O)xzz^==aZXa!$eqA=1e;Ux#@S?o9inpcwZ%!NZaLE*P!~9S=Tw7(mpO}IeY%UtlJmv+&(V8LF$!R_wd>W+J7)}{pVY} c1A(4)qnuGoS3*8>b&Hw-a delta 10106 zcmZ|U37k&l`^WM7JeDzbGbYT!41=bu$ri&j%nZhuEETd#lqG}gJSuHU;i-@)%7{Xl zN;HwA5^aC9O^HZDvi?-s{6F94I`jYa%IiO`U%&Uc?z7$JzOU;($IPks%bj_@+{=Bd z1Y0}jniVxD#vOmESlw0@H9b=Ho*c^{sP*@oAjnIrk^V63_b1xyNw{R>j7L zoXfxt7>9H5eS8+%a(Xw?ztRuZp0>Rc7# z>>r$~M|{gM=Ne)Vb;C8jKVuW(7C+J%9EN$g0J~wJIOyC+E|gR3+)^4|JI>Q$?g{7q z!UebwAN`4^!eJ+!OTa%c8*BY+$B)1y;(Y9hA7B*5p5hp6j2h7_tc`w;R?(>W9_GKG4Z`;om+%)=j^x*sPlTBw+kJ^Cy0apaqeo2x!_y_yxw;dP9}Z~ zHPU5&aqcP%X0p+ajXczxtjF$n0!#|8%Y?&d2NVE!1@`VJGhIu41Bf!Ety6&c#}|3^jzWVSW4t^#p;xo$HM) zQO7-my5MuDB>Who@fWO(qQfL%SYZ;kT#}s7|fU#`dV|yovqsC~71-M%eiyBD|ohOv7Rt z#$i6{0x{+6NmEfL4Dy|e9f;SVhWdMs@TJRJopx z40_?@saD<#*L4F_5_LvB**H|vtiT)a5O&4p6}<2|F~heIwc`DSL$Pv2&!ysc)RS*O zJxF9FFPvjdQ6rui^cyB%9U30;cdW&�Ri3E~xBYUj5_ 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 V7MpLr%9|PTQa0~<%Zt11e*pj{#UKCx diff --git a/po/data.table.pot b/po/data.table.pot index 1d0416f1b6..53ee25d355 100644 --- a/po/data.table.pot +++ b/po/data.table.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.7\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-11-21 08:53+0800\n" +"POT-Creation-Date: 2019-11-21 21:22+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -1528,7 +1528,7 @@ msgstr "" msgid "Unable to allocate TMP for my_n=%d items in parallel batch counting" msgstr "" -#: forder.c:1270 +#: forder.c:1269 msgid "" "is.sorted (R level) and fsorted (C level) only to be used on vectors. If " "needed on a list/data.table, you'll need the order anyway if not sorted, so " @@ -1536,25 +1536,25 @@ msgid "" "C level" msgstr "" -#: forder.c:1302 +#: forder.c:1301 #, c-format msgid "type '%s' is not yet supported" msgstr "" -#: forder.c:1311 +#: forder.c:1310 msgid "x must be either NULL or an integer vector" msgstr "" -#: forder.c:1313 +#: forder.c:1312 msgid "nrow must be integer vector length 1" msgstr "" -#: forder.c:1315 +#: forder.c:1314 #, c-format msgid "nrow==%d but must be >=0" msgstr "" -#: forder.c:1332 +#: forder.c:1331 msgid "x must be type 'double'" msgstr "" @@ -2932,7 +2932,7 @@ msgstr "" msgid "% " msgstr "" -#: fsort.c:247 fwrite.c:694 fwrite.c:952 +#: fsort.c:247 fwrite.c:693 fwrite.c:950 msgid "\n" msgstr "" @@ -2988,12 +2988,12 @@ msgstr "" msgid "Internal error: type %d has no max length method implemented" msgstr "" -#: fwrite.c:663 +#: fwrite.c:662 #, c-format msgid "maxLineLen=%. Found in %.3fs\n" msgstr "" -#: fwrite.c:683 +#: fwrite.c:682 #, c-format msgid "" "%s: '%s'. Failed to open existing file for writing. Do you have write " @@ -3001,7 +3001,7 @@ msgid "" "have it open?" msgstr "" -#: fwrite.c:684 +#: fwrite.c:683 #, c-format msgid "" "%s: '%s'. Unable to create new file for writing (it does not exist already). " @@ -3009,65 +3009,65 @@ msgid "" "the path exist?" msgstr "" -#: fwrite.c:692 +#: fwrite.c:691 #, c-format msgid "Writing bom (%s), yaml (%d characters) and column names (%s) ... " msgstr "" -#: fwrite.c:705 +#: fwrite.c:704 #, c-format msgid "Unable to allocate %d MiB for header: %s" msgstr "" -#: fwrite.c:733 fwrite.c:794 +#: fwrite.c:732 fwrite.c:792 msgid "Can't allocate gzip stream structure" msgstr "" -#: fwrite.c:739 +#: fwrite.c:738 #, c-format msgid "Unable to allocate %d MiB for zbuffer: %s" msgstr "" -#: fwrite.c:754 +#: fwrite.c:753 #, c-format msgid "Compress gzip error: %d" msgstr "" -#: fwrite.c:755 fwrite.c:764 fwrite.c:958 +#: fwrite.c:754 fwrite.c:762 fwrite.c:956 #, c-format msgid "%s: '%s'" msgstr "" -#: fwrite.c:761 +#: fwrite.c:759 #, c-format msgid "done in %.3fs\n" msgstr "" -#: fwrite.c:763 +#: fwrite.c:761 msgid "No data rows present (nrow==0)\n" msgstr "" -#: fwrite.c:781 +#: fwrite.c:779 #, c-format msgid "" "Writing % rows in %d batches of %d rows (each buffer size %dMB, " "showProgress=%d, nth=%d)\n" msgstr "" -#: fwrite.c:966 +#: fwrite.c:964 #, c-format msgid "" "zlib %s (zlib.h %s) deflate() returned error %d with z_stream->msg==\"%s\" " "Z_FINISH=%d Z_BLOCK=%d. %s" msgstr "" -#: fwrite.c:968 +#: fwrite.c:966 msgid "" "Please include the full output above and below this message in your data." "table bug report." msgstr "" -#: fwrite.c:969 +#: fwrite.c:967 msgid "" "Please retry fwrite() with verbose=TRUE and include the full output with " "your data.table bug report." @@ -3719,7 +3719,7 @@ msgstr "" #: init.c:290 #, c-format -msgid "PRINTNAME(install(\")integer64\")) has returned %s not %s" +msgid "PRINTNAME(install(\"integer64\")) has returned %s not %s" msgstr "" #: init.c:359 diff --git a/po/zh_CN.po b/po/zh_CN.po index 2b19c20e20..6d05492213 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-11-21 08:53+0800\n" +"POT-Creation-Date: 2019-11-21 21:22+0800\n" "PO-Revision-Date: 2019-10-31 17:27+08\n" "Last-Translator: Amy Tzu-Yu Chen \n" "Language-Team: Mandarin\n" @@ -1618,7 +1618,7 @@ msgstr "分配并行计算失败,my_n=%d, nBatch=%d" msgid "Unable to allocate TMP for my_n=%d items in parallel batch counting" msgstr "无法分配TMP给并行批处理计算的 my_n=%d 项" -#: forder.c:1270 +#: forder.c:1269 msgid "" "is.sorted (R level) and fsorted (C level) only to be used on vectors. If " "needed on a list/data.table, you'll need the order anyway if not sorted, so " @@ -1629,25 +1629,25 @@ msgstr "" "table,需要对其进行排序如果(length(o<-forder(...))),使用提高效率,或相当于" "在 " -#: forder.c:1302 +#: forder.c:1301 #, c-format msgid "type '%s' is not yet supported" msgstr "类型 '%s' 目前不支持" -#: forder.c:1311 +#: forder.c:1310 msgid "x must be either NULL or an integer vector" msgstr "x 必须为空值或整型向量" -#: forder.c:1313 +#: forder.c:1312 msgid "nrow must be integer vector length 1" msgstr "nrow 必须为长度为1的整型向量" -#: forder.c:1315 +#: forder.c:1314 #, c-format msgid "nrow==%d but must be >=0" msgstr "nrow==%d 但是必须 >=0" -#: forder.c:1332 +#: forder.c:1331 msgid "x must be type 'double'" msgstr "x 必须为浮点数类型" @@ -1702,11 +1702,10 @@ msgid "Internal error. Argument 'cols' to CanyNA is type '%s' not 'integer'" msgstr "内部错误:参数 'cols' 关于 CanyNA 是 '%s' 类型而不是'integer'类型" #: fread.c:104 -#, fuzzy, c-format +#, c-format msgid "" "Internal error in line %d of fread.c, please report on data.table GitHub: " msgstr "" -"" #: fread.c:147 #, c-format @@ -3063,7 +3062,7 @@ msgstr "" msgid "% " msgstr "" -#: fsort.c:247 fwrite.c:694 fwrite.c:952 +#: fsort.c:247 fwrite.c:693 fwrite.c:950 msgid "\n" msgstr "" @@ -3119,12 +3118,12 @@ msgstr "" msgid "Internal error: type %d has no max length method implemented" msgstr "" -#: fwrite.c:663 +#: fwrite.c:662 #, c-format msgid "maxLineLen=%. Found in %.3fs\n" msgstr "" -#: fwrite.c:683 +#: fwrite.c:682 #, c-format msgid "" "%s: '%s'. Failed to open existing file for writing. Do you have write " @@ -3132,7 +3131,7 @@ msgid "" "have it open?" msgstr "" -#: fwrite.c:684 +#: fwrite.c:683 #, c-format msgid "" "%s: '%s'. Unable to create new file for writing (it does not exist already). " @@ -3140,65 +3139,65 @@ msgid "" "the path exist?" msgstr "" -#: fwrite.c:692 +#: fwrite.c:691 #, c-format msgid "Writing bom (%s), yaml (%d characters) and column names (%s) ... " msgstr "" -#: fwrite.c:705 +#: fwrite.c:704 #, c-format msgid "Unable to allocate %d MiB for header: %s" msgstr "" -#: fwrite.c:733 fwrite.c:794 +#: fwrite.c:732 fwrite.c:792 msgid "Can't allocate gzip stream structure" msgstr "" -#: fwrite.c:739 +#: fwrite.c:738 #, c-format msgid "Unable to allocate %d MiB for zbuffer: %s" msgstr "" -#: fwrite.c:754 +#: fwrite.c:753 #, c-format msgid "Compress gzip error: %d" msgstr "" -#: fwrite.c:755 fwrite.c:764 fwrite.c:958 +#: fwrite.c:754 fwrite.c:762 fwrite.c:956 #, c-format msgid "%s: '%s'" msgstr "" -#: fwrite.c:761 +#: fwrite.c:759 #, c-format msgid "done in %.3fs\n" msgstr "" -#: fwrite.c:763 +#: fwrite.c:761 msgid "No data rows present (nrow==0)\n" msgstr "" -#: fwrite.c:781 +#: fwrite.c:779 #, c-format msgid "" "Writing % rows in %d batches of %d rows (each buffer size %dMB, " "showProgress=%d, nth=%d)\n" msgstr "" -#: fwrite.c:966 +#: fwrite.c:964 #, c-format msgid "" "zlib %s (zlib.h %s) deflate() returned error %d with z_stream->msg==\"%s\" " "Z_FINISH=%d Z_BLOCK=%d. %s" msgstr "" -#: fwrite.c:968 +#: fwrite.c:966 msgid "" "Please include the full output above and below this message in your data." "table bug report." msgstr "" -#: fwrite.c:969 +#: fwrite.c:967 msgid "" "Please retry fwrite() with verbose=TRUE and include the full output with " "your data.table bug report." @@ -3870,7 +3869,7 @@ msgstr "" #: init.c:290 #, c-format -msgid "PRINTNAME(install(\")integer64\")) has returned %s not %s" +msgid "PRINTNAME(install(\"integer64\")) has returned %s not %s" msgstr "" #: init.c:359 From 548d0703b72f110db8cb5b7fc9a8c6c0e0c7df36 Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Sun, 8 Dec 2019 11:21:46 +0800 Subject: [PATCH 53/78] rerun update_pkg_po --- inst/po/en@quot/LC_MESSAGES/R-data.table.mo | Bin 88858 -> 88988 bytes inst/po/en@quot/LC_MESSAGES/data.table.mo | Bin 140270 -> 140270 bytes po/R-data.table.pot | 20 +- po/R-zh_CN.po | 42 +-- po/data.table.pot | 304 ++++++++++---------- po/zh_CN.po | 304 ++++++++++---------- 6 files changed, 343 insertions(+), 327 deletions(-) diff --git a/inst/po/en@quot/LC_MESSAGES/R-data.table.mo b/inst/po/en@quot/LC_MESSAGES/R-data.table.mo index feb481de4e3c031997e2f2778e60ea948099890b..28d0f705edfa4d54f4a4174e2dc85995921f521c 100644 GIT binary patch delta 12629 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 delta 12507 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\n" "Language-Team: LANGUAGE \n" @@ -853,6 +853,12 @@ msgstr "" msgid "." msgstr "" +msgid "There is no" +msgstr "" + +msgid "package in provided repository." +msgstr "" + msgid "'fromLast' must be TRUE or FALSE" msgstr "" @@ -1399,12 +1405,6 @@ msgstr "" msgid "This warning message should not occur on Windows or Linux. If it does, please file a GitHub issue.\n**********" msgstr "" -msgid "There is no" -msgstr "" - -msgid "package in provided repository." -msgstr "" - msgid "The option 'datatable.nomatch' is being used and is not set to the default NA. This option is still honored for now but will be deprecated in future. Please see NEWS for 1.12.4 for detailed information and motivation. To specify inner join, please specify `nomatch=NULL` explicitly in your calls rather than changing the default using this option." msgstr "" @@ -1681,6 +1681,12 @@ msgstr "" msgid "exist in" msgstr "" +msgid "Failed after test" +msgstr "" + +msgid "before the next test() call in" +msgstr "" + msgid "Timings count mismatch:" msgstr "" diff --git a/po/R-zh_CN.po b/po/R-zh_CN.po index 893b189c88..0a975e8967 100644 --- a/po/R-zh_CN.po +++ b/po/R-zh_CN.po @@ -1,7 +1,7 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.5\n" -"POT-Creation-Date: 2019-10-21 16:15\n" +"POT-Creation-Date: 2019-12-08 11:20\n" "PO-Revision-Date: 2019-10-31 15:46+08\n" "Last-Translator: Amy Tzu-Yu Chen \n" "Language-Team: Mandarin\n" @@ -707,9 +707,10 @@ msgid "" "used) because := is being used together with keyby= but the keyby= contains " "some expressions. To avoid this warning, use by= instead, or provide " "existing column names to keyby=." -msgstr "因为`:=`与`keyby=`一起使用且`keyby=`含有表达式, 所以代码跳过了一般" -"`keyby=`会执行的`setkey()` -- 代码只执行了`by=`。" -"若要避免此警告, 请使用`by=`, 或者提供`keyby=`现有的列名" +msgstr "" +"因为`:=`与`keyby=`一起使用且`keyby=`含有表达式, 所以代码跳过了一般`keyby=`会" +"执行的`setkey()` -- 代码只执行了`by=`。若要避免此警告, 请使用`by=`, 或者提供" +"`keyby=`现有的列名" msgid "Internal error: jvnames is length" msgstr "内部错误:jvnames 是长度" @@ -736,7 +737,8 @@ msgstr "。 rownames参数为单一列名或单一数值。请考虑使用`rowna msgid "" "length(rownames)==0 but should be a single column name or number, or NULL" -msgstr "行名长度为零,`length(rownames)==0`,但应该为单一列名,单一数值,或NULL" +msgstr "" +"行名长度为零,`length(rownames)==0`,但应该为单一列名,单一数值,或NULL" msgid "rownames is TRUE but key has multiple columns" msgstr "rownames是TRUE但key不只一个列" @@ -778,16 +780,18 @@ msgstr "j 必须是列名(column name)或列位(column position)的向量" msgid "" "Attempt to assign to column position greater than ncol(x). Create the column " "by name, instead. This logic intends to catch (most likely) user errors." -msgstr "试图指定至比ncol(x)还大的列位(column position)。请指定至列名(column name)。" -"一般来说用列名取代列位能解决大部分错误。" +msgstr "" +"试图指定至比ncol(x)还大的列位(column position)。请指定至列名(column name)。一" +"般来说用列名取代列位能解决大部分错误。" msgid "" "data.table inherits from data.frame (from v1.5), but this data.table does " "not. Has it been created manually (e.g. by using 'structure' rather than " "'data.table') or saved to disk using a prior version of data.table?" -msgstr "data.table继承自data.frame(v1.5),但这个data.table并不是。" -"请检查这个data.table是不是手动创建的(可能创建时使用了`structure()`而非`data.table()`)," -"或者是不是使用了更早的data.table版本创建后存到硬盘了。" +msgstr "" +"data.table继承自data.frame(v1.5),但这个data.table并不是。请检查这个data." +"table是不是手动创建的(可能创建时使用了`structure()`而非`data.table()`),或者" +"是不是使用了更早的data.table版本创建后存到硬盘了。" msgid "attempting to assign invalid object to dimnames of a data.table" msgstr "试图指定无效对象给data.table的维度名(dimnames)" @@ -1101,6 +1105,12 @@ msgstr "。只有这些操作符是有效的" msgid "." msgstr "" +msgid "There is no" +msgstr "" + +msgid "package in provided repository." +msgstr "" + msgid "'fromLast' must be TRUE or FALSE" msgstr "" @@ -1827,12 +1837,6 @@ msgid "" "**********" msgstr "" -msgid "There is no" -msgstr "" - -msgid "package in provided repository." -msgstr "" - msgid "" "The option 'datatable.nomatch' is being used and is not set to the default " "NA. This option is still honored for now but will be deprecated in future. " @@ -2175,6 +2179,12 @@ msgstr "" msgid "exist in" msgstr "" +msgid "Failed after test" +msgstr "" + +msgid "before the next test() call in" +msgstr "" + msgid "Timings count mismatch:" msgstr "" diff --git a/po/data.table.pot b/po/data.table.pot index 53ee25d355..1d41adf37a 100644 --- a/po/data.table.pot +++ b/po/data.table.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.7\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-11-21 21:22+0800\n" +"POT-Creation-Date: 2019-12-08 11:20+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -17,20 +17,20 @@ msgstr "" "Content-Type: text/plain; charset=CHARSET\n" "Content-Transfer-Encoding: 8bit\n" -#: assign.c:9 +#: assign.c:7 msgid "Internal error: finalizer hasn't received an ExternalPtr" msgstr "" -#: assign.c:11 +#: assign.c:9 msgid "Internal error: finalizer's ExternalPtr doesn't see names in tag" msgstr "" -#: assign.c:14 +#: assign.c:12 #, c-format msgid "Internal error: finalizer sees l=%d, tl=%d" msgstr "" -#: assign.c:123 +#: assign.c:121 msgid "" ".internal.selfref ptr is NULL. This is expected and normal for a data.table " "loaded from disk. Please remember to always setDT() immediately after " @@ -39,49 +39,49 @@ msgid "" "tracker.\n" msgstr "" -#: assign.c:126 +#: assign.c:124 msgid "Internal error: .internal.selfref ptr is not NULL or R_NilValue" msgstr "" -#: assign.c:128 +#: assign.c:126 msgid "Internal error: .internal.selfref tag isn't NULL or a character vector" msgstr "" -#: assign.c:170 +#: assign.c:168 msgid "Internal error: length(names)>0 but =0 and not NA." msgstr "" -#: assign.c:241 fsort.c:109 nafill.c:73 +#: assign.c:239 fsort.c:109 nafill.c:73 msgid "verbose must be TRUE or FALSE" msgstr "" -#: assign.c:289 +#: assign.c:287 msgid "assign has been passed a NULL dt" msgstr "" -#: assign.c:290 +#: assign.c:288 msgid "dt passed to assign isn't type VECSXP" msgstr "" -#: assign.c:292 +#: assign.c:290 msgid "" ".SD is locked. Updating .SD by reference using := or set are reserved for " "future use. Use := in j directly. Or use copy(.SD) as a (slow) last resort, " "until shallow() is exported." msgstr "" -#: assign.c:300 +#: assign.c:298 msgid "Internal error: dt passed to Cassign is not a data.table or data.frame" msgstr "" -#: assign.c:304 +#: assign.c:302 msgid "dt passed to assign has no names" msgstr "" -#: assign.c:306 +#: assign.c:304 #, c-format msgid "Internal error in assign: length of names (%d) is not length of dt (%d)" msgstr "" -#: assign.c:308 +#: assign.c:306 msgid "" "data.table is NULL; malformed. A null data.table should be an empty list. " "typeof() should always return 'list' for data.table." msgstr "" -#: assign.c:317 +#: assign.c:315 #, c-format msgid "Assigning to all %d rows\n" msgstr "" -#: assign.c:322 +#: assign.c:320 msgid "" "Coerced i from numeric to integer. Please pass integer for efficiency; e.g., " "2L rather than 2" msgstr "" -#: assign.c:325 +#: assign.c:323 #, c-format msgid "" "i is type '%s'. Must be integer, or numeric is coerced with warning. If i is " @@ -179,68 +179,68 @@ msgid "" "loop if possible for efficiency." msgstr "" -#: assign.c:331 +#: assign.c:329 #, c-format msgid "i[%d] is %d which is out of range [1,nrow=%d]." msgstr "" -#: assign.c:334 +#: assign.c:332 #, c-format msgid "Assigning to %d row subset of %d rows\n" msgstr "" -#: assign.c:342 +#: assign.c:340 #, c-format msgid "Added %d new column%s initialized with all-NA\n" msgstr "" -#: assign.c:347 +#: assign.c:345 msgid "length(LHS)==0; no columns to delete or assign RHS to." msgstr "" -#: assign.c:361 +#: assign.c:359 msgid "" "set() on a data.frame is for changing existing columns, not adding new ones. " "Please use a data.table for that. data.table's are over-allocated and don't " "shallow copy." msgstr "" -#: assign.c:372 +#: assign.c:370 msgid "" "Coerced j from numeric to integer. Please pass integer for efficiency; e.g., " "2L rather than 2" msgstr "" -#: assign.c:375 +#: assign.c:373 #, c-format msgid "" "j is type '%s'. Must be integer, character, or numeric is coerced with " "warning." msgstr "" -#: assign.c:377 +#: assign.c:375 msgid "" "Can't assign to the same column twice in the same query (duplicates " "detected)." msgstr "" -#: assign.c:378 +#: assign.c:376 msgid "newcolnames is supplied but isn't a character vector" msgstr "" -#: assign.c:380 +#: assign.c:378 #, c-format msgid "RHS_list_of_columns == %s\n" msgstr "" -#: assign.c:385 +#: assign.c:383 #, c-format msgid "" "RHS_list_of_columns revised to true because RHS list has 1 item which is " "NULL, or whose length %d is either 1 or targetlen (%d). Please unwrap RHS.\n" msgstr "" -#: assign.c:390 +#: assign.c:388 #, c-format msgid "" "Supplied %d columns to be assigned an empty list (which may be an empty data." @@ -248,18 +248,18 @@ msgid "" "use NULL instead. To add multiple empty list columns, use list(list())." msgstr "" -#: assign.c:395 +#: assign.c:393 #, c-format msgid "Recycling single RHS list item across %d columns. Please unwrap RHS.\n" msgstr "" -#: assign.c:397 +#: assign.c:395 #, c-format msgid "" "Supplied %d columns to be assigned %d items. Please see NEWS for v1.12.2." msgstr "" -#: assign.c:405 +#: assign.c:403 #, c-format msgid "" "Item %d of column numbers in j is %d which is outside range [1,ncol=%d]. " @@ -267,18 +267,18 @@ msgid "" "Please use a data.table for that." msgstr "" -#: assign.c:406 +#: assign.c:404 #, c-format msgid "" "Item %d of column numbers in j is %d which is outside range [1,ncol=%d]. Use " "column names instead in j to add new columns." msgstr "" -#: assign.c:411 +#: assign.c:409 msgid "When deleting columns, i should not be provided" msgstr "" -#: assign.c:417 +#: assign.c:415 #, c-format msgid "" "RHS of assignment to existing column '%s' is zero length but not NULL. If " @@ -289,30 +289,30 @@ msgid "" "new column." msgstr "" -#: assign.c:422 +#: assign.c:420 #, c-format msgid "" "Internal error in assign.c: length(newcolnames)=%d, length(names)=%d, coln=%d" msgstr "" -#: assign.c:424 +#: assign.c:422 #, c-format msgid "Column '%s' does not exist to remove" msgstr "" -#: assign.c:430 +#: assign.c:428 #, c-format msgid "%d column matrix RHS of := will be treated as one vector" msgstr "" -#: assign.c:434 +#: assign.c:432 #, c-format msgid "" "Can't assign to column '%s' (type 'factor') a value of type '%s' (not " "character, factor, integer or numeric)" msgstr "" -#: assign.c:439 +#: assign.c:437 #, c-format msgid "" "Supplied %d items to be assigned to %d items of column '%s'. If you wish to " @@ -320,7 +320,7 @@ msgid "" "your code." msgstr "" -#: assign.c:449 +#: assign.c:447 msgid "" "This data.table has either been loaded from disk (e.g. using readRDS()/" "load()) or constructed manually (e.g. using structure()). Please run setDT() " @@ -328,14 +328,14 @@ msgid "" "assigning by reference to it." msgstr "" -#: assign.c:450 +#: assign.c:448 #, c-format msgid "" "Internal error: oldtncol(%d) < oldncol(%d). Please report to data.table " "issue tracker, including result of sessionInfo()." msgstr "" -#: assign.c:452 +#: assign.c:450 #, c-format msgid "" "truelength (%d) is greater than 10,000 items over-allocated (length = %d). " @@ -344,238 +344,238 @@ msgid "" "sessionInfo()." msgstr "" -#: assign.c:454 +#: assign.c:452 #, c-format msgid "" "Internal error: DT passed to assign has not been allocated enough column " "slots. l=%d, tl=%d, adding %d" msgstr "" -#: assign.c:456 +#: assign.c:454 msgid "" "It appears that at some earlier point, names of this data.table have been " "reassigned. Please ensure to use setnames() rather than names<- or " "colnames<-. Otherwise, please report to data.table issue tracker." msgstr "" -#: assign.c:460 +#: assign.c:458 #, c-format msgid "Internal error: selfrefnames is ok but tl names [%d] != tl [%d]" msgstr "" -#: assign.c:471 +#: assign.c:469 msgid "" "Internal error: earlier error 'When deleting columns, i should not be " "provided' did not happen." msgstr "" -#: assign.c:482 +#: assign.c:480 #, c-format msgid "" "RHS for item %d has been duplicated because NAMED==%d MAYBE_SHARED==%d, but " "then is being plonked. length(values)==%d; length(cols)==%d)\n" msgstr "" -#: assign.c:487 +#: assign.c:485 #, c-format msgid "Direct plonk of unnamed RHS, no copy. NAMED==%d, MAYBE_SHARED==%d\n" msgstr "" -#: assign.c:556 +#: assign.c:554 #, c-format msgid "" "Dropping index '%s' as it doesn't have '__' at the beginning of its name. It " "was very likely created by v1.9.4 of data.table.\n" msgstr "" -#: assign.c:564 +#: assign.c:562 msgid "Internal error: index name ends with trailing __" msgstr "" -#: assign.c:569 +#: assign.c:567 msgid "Internal error: Couldn't allocate memory for s4." msgstr "" -#: assign.c:580 +#: assign.c:578 msgid "Internal error: Couldn't allocate memory for s5." msgstr "" -#: assign.c:601 assign.c:617 +#: assign.c:599 assign.c:615 #, c-format msgid "Dropping index '%s' due to an update on a key column\n" msgstr "" -#: assign.c:610 +#: assign.c:608 #, c-format msgid "Shortening index '%s' to '%s' due to an update on a key column\n" msgstr "" -#: assign.c:687 +#: assign.c:685 #, c-format msgid "Internal error: recycle length error not caught earlier. slen=%d len=%d" msgstr "" -#: assign.c:691 +#: assign.c:689 msgid "Internal error: memrecycle has received NULL colname" msgstr "" -#: assign.c:717 +#: assign.c:715 #, c-format msgid "" "Cannot assign 'factor' to '%s'. Factors can only be assigned to factor, " "character or list columns." msgstr "" -#: assign.c:731 +#: assign.c:729 #, c-format msgid "" "Assigning factor numbers to column %d named '%s'. But %d is outside the " "level range [1,%d]" msgstr "" -#: assign.c:739 +#: assign.c:737 #, c-format msgid "" "Assigning factor numbers to column %d named '%s'. But %f is outside the " "level range [1,%d], or is not a whole number." msgstr "" -#: assign.c:745 +#: assign.c:743 #, c-format msgid "" "Cannot assign '%s' to 'factor'. Factor columns can be assigned factor, " "character, NA in any type, or level numbers." msgstr "" -#: assign.c:766 +#: assign.c:764 msgid "" "Internal error: levels of target are either not unique or have truelength<0" msgstr "" -#: assign.c:805 +#: assign.c:803 #, c-format msgid "Unable to allocate working memory of %d bytes to combine factor levels" msgstr "" -#: assign.c:812 +#: assign.c:810 msgid "Internal error: extra level check sum failed" msgstr "" -#: assign.c:831 +#: assign.c:829 #, c-format msgid "" "Coercing 'character' RHS to '%s' to match the type of the target column " "(column %d named '%s')." msgstr "" -#: assign.c:837 +#: assign.c:835 #, c-format msgid "" "Cannot coerce 'list' RHS to 'integer64' to match the type of the target " "column (column %d named '%s')." msgstr "" -#: assign.c:842 +#: assign.c:840 #, c-format msgid "" "Coercing 'list' RHS to '%s' to match the type of the target column (column " "%d named '%s')." msgstr "" -#: assign.c:848 +#: assign.c:846 #, c-format msgid "Zero-copy coerce when assigning '%s' to '%s' column %d named '%s'.\n" msgstr "" -#: assign.c:943 +#: assign.c:941 #, c-format msgid "type '%s' cannot be coerced to '%s'" msgstr "" -#: assign.c:1063 +#: assign.c:1061 msgid "" "To assign integer64 to a character column, please use as.character() for " "clarity." msgstr "" -#: assign.c:1074 +#: assign.c:1072 #, c-format msgid "Unsupported column type in assign.c:memrecycle '%s'" msgstr "" -#: assign.c:1121 +#: assign.c:1119 #, c-format msgid "Internal error: writeNA passed a vector of type '%s'" msgstr "" -#: assign.c:1152 +#: assign.c:1150 #, c-format msgid "" "Internal error: savetl_init checks failed (%d %d %p %p). please report to " "data.table issue tracker." msgstr "" -#: assign.c:1160 +#: assign.c:1158 #, c-format msgid "Failed to allocate initial %d items in savetl_init" msgstr "" -#: assign.c:1169 +#: assign.c:1167 #, c-format msgid "" "Internal error: reached maximum %d items for savetl. Please report to data." "table issue tracker." msgstr "" -#: assign.c:1176 +#: assign.c:1174 #, c-format msgid "Failed to realloc saveds to %d items in savetl" msgstr "" -#: assign.c:1182 +#: assign.c:1180 #, c-format msgid "Failed to realloc savedtl to %d items in savetl" msgstr "" -#: assign.c:1205 +#: assign.c:1203 msgid "x must be a character vector" msgstr "" -#: assign.c:1206 +#: assign.c:1204 msgid "'which' must be an integer vector" msgstr "" -#: assign.c:1207 +#: assign.c:1205 msgid "'new' must be a character vector" msgstr "" -#: assign.c:1208 +#: assign.c:1206 #, c-format msgid "'new' is length %d. Should be the same as length of 'which' (%d)" msgstr "" -#: assign.c:1211 +#: assign.c:1209 #, c-format msgid "" "Item %d of 'which' is %d which is outside range of the length %d character " "vector" msgstr "" -#: assign.c:1221 +#: assign.c:1219 msgid "dt passed to setcolorder has no names" msgstr "" -#: assign.c:1223 +#: assign.c:1221 #, c-format msgid "Internal error: dt passed to setcolorder has %d columns but %d names" msgstr "" -#: assign.c:1230 +#: assign.c:1228 msgid "" "Internal error: o passed to Csetcolorder contains an NA or out-of-bounds" msgstr "" -#: assign.c:1232 +#: assign.c:1230 msgid "Internal error: o passed to Csetcolorder contains a duplicate" msgstr "" @@ -2650,82 +2650,82 @@ msgstr "" msgid "%s" msgstr "" -#: froll.c:18 froll.c:227 froll.c:411 +#: froll.c:14 froll.c:223 froll.c:407 #, c-format msgid "%s: window width longer than input vector, returning all NA vector\n" msgstr "" -#: froll.c:36 froll.c:244 froll.c:460 +#: froll.c:32 froll.c:240 froll.c:456 #, c-format msgid "%s: align %d, shift answer by %d\n" msgstr "" -#: froll.c:43 froll.c:251 frolladaptive.c:23 frolladaptive.c:218 +#: froll.c:39 froll.c:247 frolladaptive.c:19 frolladaptive.c:214 #, c-format msgid "%s: processing algo %u took %.3fs\n" msgstr "" -#: froll.c:52 froll.c:255 +#: froll.c:48 froll.c:251 #, c-format msgid "%s: running for input length %, window %d, hasna %d, narm %d\n" msgstr "" -#: froll.c:72 froll.c:82 froll.c:173 froll.c:275 froll.c:285 froll.c:366 -#: frolladaptive.c:62 frolladaptive.c:151 frolladaptive.c:251 -#: frolladaptive.c:330 +#: froll.c:68 froll.c:78 froll.c:169 froll.c:271 froll.c:281 froll.c:362 +#: frolladaptive.c:58 frolladaptive.c:147 frolladaptive.c:247 +#: frolladaptive.c:326 #, c-format msgid "" "%s: hasNA=FALSE used but NA (or other non-finite) value(s) are present in " "input, use default hasNA=NA to avoid this warning" msgstr "" -#: froll.c:75 froll.c:177 froll.c:278 froll.c:370 frolladaptive.c:65 -#: frolladaptive.c:155 frolladaptive.c:254 frolladaptive.c:334 +#: froll.c:71 froll.c:173 froll.c:274 froll.c:366 frolladaptive.c:61 +#: frolladaptive.c:151 frolladaptive.c:250 frolladaptive.c:330 #, c-format msgid "" "%s: NA (or other non-finite) value(s) are present in input, re-running with " "extra care for NAs\n" msgstr "" -#: froll.c:85 froll.c:288 +#: froll.c:81 froll.c:284 #, c-format msgid "" "%s: NA (or other non-finite) value(s) are present in input, skip non-NA " "attempt and run with extra care for NAs\n" msgstr "" -#: froll.c:141 froll.c:339 +#: froll.c:137 froll.c:335 #, c-format msgid "" "%s: running in parallel for input length %, window %d, hasna %d, " "narm %d\n" msgstr "" -#: froll.c:179 froll.c:372 frolladaptive.c:157 frolladaptive.c:336 +#: froll.c:175 froll.c:368 frolladaptive.c:153 frolladaptive.c:332 #, c-format msgid "" "%s: NA (or other non-finite) value(s) are present in input, na.rm was FALSE " "so in 'exact' implementation NAs were handled already, no need to re-run\n" msgstr "" -#: froll.c:428 +#: froll.c:424 #, c-format msgid "%s: results from provided FUN are not length 1" msgstr "" -#: froll.c:435 +#: froll.c:431 #, c-format msgid "" "%s: results from provided FUN are not of type double, coercion from integer " "or logical will be applied on each iteration\n" msgstr "" -#: froll.c:438 +#: froll.c:434 #, c-format msgid "%s: results from provided FUN are not of type double" msgstr "" -#: froll.c:467 +#: froll.c:463 #, c-format msgid "%s: took %.3fs\n" msgstr "" @@ -2865,22 +2865,22 @@ msgstr "" msgid "internal error: 'rho' should be an environment" msgstr "" -#: frolladaptive.c:33 frolladaptive.c:222 +#: frolladaptive.c:29 frolladaptive.c:218 #, c-format msgid "%s: running for input length %, hasna %d, narm %d\n" msgstr "" -#: frolladaptive.c:39 frolladaptive.c:228 +#: frolladaptive.c:35 frolladaptive.c:224 #, c-format msgid "%s: Unable to allocate memory for cumsum" msgstr "" -#: frolladaptive.c:75 frolladaptive.c:264 +#: frolladaptive.c:71 frolladaptive.c:260 #, c-format msgid "%s: Unable to allocate memory for cum NA counter" msgstr "" -#: frolladaptive.c:118 frolladaptive.c:302 +#: frolladaptive.c:114 frolladaptive.c:298 #, c-format msgid "%s: running in parallel for input length %, hasna %d, narm %d\n" msgstr "" @@ -3573,156 +3573,156 @@ msgstr "" msgid "Final step, fetching indices in overlaps ... done in %8.3f seconds\n" msgstr "" -#: init.c:198 +#: init.c:231 #, c-format msgid "" "Pointers are %d bytes, greater than 8. We have not tested on any " "architecture greater than 64bit yet." msgstr "" -#: init.c:209 +#: init.c:242 #, c-format msgid "Checking NA_INTEGER [%d] == INT_MIN [%d] %s" msgstr "" -#: init.c:210 +#: init.c:243 #, c-format msgid "Checking NA_INTEGER [%d] == NA_LOGICAL [%d] %s" msgstr "" -#: init.c:211 +#: init.c:244 #, c-format msgid "Checking sizeof(int) [%d] is 4 %s" msgstr "" -#: init.c:212 +#: init.c:245 #, c-format msgid "Checking sizeof(double) [%d] is 8 %s" msgstr "" -#: init.c:214 +#: init.c:247 #, c-format msgid "Checking sizeof(long long) [%d] is 8 %s" msgstr "" -#: init.c:215 +#: init.c:248 #, c-format msgid "Checking sizeof(pointer) [%d] is 4 or 8 %s" msgstr "" -#: init.c:216 +#: init.c:249 #, c-format msgid "Checking sizeof(SEXP) [%d] == sizeof(pointer) [%d] %s" msgstr "" -#: init.c:217 +#: init.c:250 #, c-format msgid "Checking sizeof(uint64_t) [%d] is 8 %s" msgstr "" -#: init.c:218 +#: init.c:251 #, c-format msgid "Checking sizeof(int64_t) [%d] is 8 %s" msgstr "" -#: init.c:219 +#: init.c:252 #, c-format msgid "Checking sizeof(signed char) [%d] is 1 %s" msgstr "" -#: init.c:220 +#: init.c:253 #, c-format msgid "Checking sizeof(int8_t) [%d] is 1 %s" msgstr "" -#: init.c:221 +#: init.c:254 #, c-format msgid "Checking sizeof(uint8_t) [%d] is 1 %s" msgstr "" -#: init.c:222 +#: init.c:255 #, c-format msgid "Checking sizeof(int16_t) [%d] is 2 %s" msgstr "" -#: init.c:223 +#: init.c:256 #, c-format msgid "Checking sizeof(uint16_t) [%d] is 2 %s" msgstr "" -#: init.c:226 +#: init.c:259 #, c-format msgid "Checking LENGTH(allocVector(INTSXP,2)) [%d] is 2 %s" msgstr "" -#: init.c:227 +#: init.c:260 #, c-format msgid "Checking TRUELENGTH(allocVector(INTSXP,2)) [%d] is 0 %s" msgstr "" -#: init.c:234 +#: init.c:267 #, c-format msgid "Checking memset(&i,0,sizeof(int)); i == (int)0 %s" msgstr "" -#: init.c:237 +#: init.c:270 #, c-format msgid "Checking memset(&ui, 0, sizeof(unsigned int)); ui == (unsigned int)0 %s" msgstr "" -#: init.c:240 +#: init.c:273 #, c-format msgid "Checking memset(&d, 0, sizeof(double)); d == (double)0.0 %s" msgstr "" -#: init.c:243 +#: init.c:276 #, c-format msgid "Checking memset(&ld, 0, sizeof(long double)); ld == (long double)0.0 %s" msgstr "" -#: init.c:246 +#: init.c:279 msgid "The ascii character '/' is not just before '0'" msgstr "" -#: init.c:247 +#: init.c:280 msgid "The C expression (uint_fast8_t)('/'-'0')<10 is true. Should be false." msgstr "" -#: init.c:248 +#: init.c:281 msgid "The ascii character ':' is not just after '9'" msgstr "" -#: init.c:249 +#: init.c:282 msgid "The C expression (uint_fast8_t)('9'-':')<10 is true. Should be false." msgstr "" -#: init.c:254 +#: init.c:287 #, c-format msgid "Conversion of NA_INT64 via double failed %!=%" msgstr "" -#: init.c:258 +#: init.c:291 msgid "NA_INT64_D (negative -0.0) is not == 0.0." msgstr "" -#: init.c:259 +#: init.c:292 msgid "NA_INT64_D (negative -0.0) is not ==-0.0." msgstr "" -#: init.c:260 +#: init.c:293 msgid "ISNAN(NA_INT64_D) is TRUE but should not be" msgstr "" -#: init.c:261 +#: init.c:294 msgid "isnan(NA_INT64_D) is TRUE but should not be" msgstr "" -#: init.c:290 +#: init.c:323 #, c-format msgid "PRINTNAME(install(\"integer64\")) has returned %s not %s" msgstr "" -#: init.c:359 +#: init.c:392 msgid ".Last.value in namespace is not a length 1 integer" msgstr "" diff --git a/po/zh_CN.po b/po/zh_CN.po index 6d05492213..41f5ba9d38 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-11-21 21:22+0800\n" +"POT-Creation-Date: 2019-12-08 11:20+0800\n" "PO-Revision-Date: 2019-10-31 17:27+08\n" "Last-Translator: Amy Tzu-Yu Chen \n" "Language-Team: Mandarin\n" @@ -11,20 +11,20 @@ msgstr "" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" -#: assign.c:9 +#: assign.c:7 msgid "Internal error: finalizer hasn't received an ExternalPtr" msgstr "" -#: assign.c:11 +#: assign.c:9 msgid "Internal error: finalizer's ExternalPtr doesn't see names in tag" msgstr "" -#: assign.c:14 +#: assign.c:12 #, c-format msgid "Internal error: finalizer sees l=%d, tl=%d" msgstr "" -#: assign.c:123 +#: assign.c:121 msgid "" ".internal.selfref ptr is NULL. This is expected and normal for a data.table " "loaded from disk. Please remember to always setDT() immediately after " @@ -33,49 +33,49 @@ msgid "" "tracker.\n" msgstr "" -#: assign.c:126 +#: assign.c:124 msgid "Internal error: .internal.selfref ptr is not NULL or R_NilValue" msgstr "" -#: assign.c:128 +#: assign.c:126 msgid "Internal error: .internal.selfref tag isn't NULL or a character vector" msgstr "" -#: assign.c:170 +#: assign.c:168 msgid "Internal error: length(names)>0 but =0 and not NA." msgstr "" -#: assign.c:241 fsort.c:109 nafill.c:73 +#: assign.c:239 fsort.c:109 nafill.c:73 msgid "verbose must be TRUE or FALSE" msgstr "" -#: assign.c:289 +#: assign.c:287 msgid "assign has been passed a NULL dt" msgstr "" -#: assign.c:290 +#: assign.c:288 msgid "dt passed to assign isn't type VECSXP" msgstr "" -#: assign.c:292 +#: assign.c:290 msgid "" ".SD is locked. Updating .SD by reference using := or set are reserved for " "future use. Use := in j directly. Or use copy(.SD) as a (slow) last resort, " "until shallow() is exported." msgstr "" -#: assign.c:300 +#: assign.c:298 msgid "Internal error: dt passed to Cassign is not a data.table or data.frame" msgstr "" -#: assign.c:304 +#: assign.c:302 msgid "dt passed to assign has no names" msgstr "" -#: assign.c:306 +#: assign.c:304 #, c-format msgid "Internal error in assign: length of names (%d) is not length of dt (%d)" msgstr "" -#: assign.c:308 +#: assign.c:306 msgid "" "data.table is NULL; malformed. A null data.table should be an empty list. " "typeof() should always return 'list' for data.table." msgstr "" -#: assign.c:317 +#: assign.c:315 #, c-format msgid "Assigning to all %d rows\n" msgstr "" -#: assign.c:322 +#: assign.c:320 msgid "" "Coerced i from numeric to integer. Please pass integer for efficiency; e.g., " "2L rather than 2" msgstr "" -#: assign.c:325 +#: assign.c:323 #, c-format msgid "" "i is type '%s'. Must be integer, or numeric is coerced with warning. If i is " @@ -176,26 +176,26 @@ msgstr "" "整型并发出警告)。如果 i 为一个用于筛选的逻辑(logical)向量,请直接将它传给 " "which(),且如果可能的话将 which() 放置于循环之外以保持高效。" -#: assign.c:331 +#: assign.c:329 #, c-format msgid "i[%d] is %d which is out of range [1,nrow=%d]." msgstr "i[%d] 为 %d 且超出了范围 [1,nrow=%d]。" -#: assign.c:334 +#: assign.c:332 #, c-format msgid "Assigning to %d row subset of %d rows\n" msgstr "正在为 %d 行(总数为 %d 行)进行赋值\n" -#: assign.c:342 +#: assign.c:340 #, c-format msgid "Added %d new column%s initialized with all-NA\n" msgstr "添加了 %d 个新列 %s 并全部初始化为 NA\n" -#: assign.c:347 +#: assign.c:345 msgid "length(LHS)==0; no columns to delete or assign RHS to." msgstr "左手侧长度为0(length(LHS)==0);没有列可供删除或赋值给右手侧(RHS)。" -#: assign.c:361 +#: assign.c:359 msgid "" "set() on a data.frame is for changing existing columns, not adding new ones. " "Please use a data.table for that. data.table's are over-allocated and don't " @@ -205,7 +205,7 @@ msgstr "" "table 来添加新列。data.table 的操作是超额分配的(over-allocated)并且不进行浅" "拷贝(shallow copy)。" -#: assign.c:372 +#: assign.c:370 msgid "" "Coerced j from numeric to integer. Please pass integer for efficiency; e.g., " "2L rather than 2" @@ -213,7 +213,7 @@ msgstr "" "将 j 从数值(numeric)型自动转换为整(integer)型。为了保持高效请直接传入整" "型,如2L 而非 2" -#: assign.c:375 +#: assign.c:373 #, c-format msgid "" "j is type '%s'. Must be integer, character, or numeric is coerced with " @@ -222,22 +222,22 @@ msgstr "" "j 为 '%s' 型。j 必须为整(integer)型、字符(character)型,或数值(numeric)" "型(将被自动转换成整型并发出警告)。" -#: assign.c:377 +#: assign.c:375 msgid "" "Can't assign to the same column twice in the same query (duplicates " "detected)." msgstr "在一次查询中无法对同一列赋值两次(检测出重复项)。" -#: assign.c:378 +#: assign.c:376 msgid "newcolnames is supplied but isn't a character vector" msgstr "指定了 newcolnames 但其并非一字符串向量" -#: assign.c:380 +#: assign.c:378 #, c-format msgid "RHS_list_of_columns == %s\n" msgstr "RHS_list_of_columns == %s\n" -#: assign.c:385 +#: assign.c:383 #, c-format msgid "" "RHS_list_of_columns revised to true because RHS list has 1 item which is " @@ -246,7 +246,7 @@ msgstr "" "RHS_list_of_columns 改为真(True),因为右手侧列表(RHS list)有一子项为空值" "(NULL)或长度 %d 为 1 或 targetlen(%d)。请拆开右手侧。\n" -#: assign.c:390 +#: assign.c:388 #, c-format msgid "" "Supplied %d columns to be assigned an empty list (which may be an empty data." @@ -257,19 +257,19 @@ msgstr "" "后两者也是列表的一种)。删除多个列时请使用空值(NULL)。添加多个空列表列" "(list columns)时,请使用 list(list())。" -#: assign.c:395 +#: assign.c:393 #, c-format msgid "Recycling single RHS list item across %d columns. Please unwrap RHS.\n" msgstr "" "回收重用(Recycling)单个右手侧(RHS)列表子项于 %d 列。请拆开右手侧。\n" -#: assign.c:397 +#: assign.c:395 #, c-format msgid "" "Supplied %d columns to be assigned %d items. Please see NEWS for v1.12.2." msgstr "试图将 %2$d 项赋值给 %1$d 列。请阅读 v1.12.2 的更新信息(NEWS)。" -#: assign.c:405 +#: assign.c:403 #, c-format msgid "" "Item %d of column numbers in j is %d which is outside range [1,ncol=%d]. " @@ -279,7 +279,7 @@ msgstr "" "j 中的列编号里第 %d 项是 %d,超出了有效范围 [1,ncol=%d]。数据框(data.frame)" "的 set() 是用于修改现有列,而非添加新列。请使用 data.table 来添加新列。" -#: assign.c:406 +#: assign.c:404 #, c-format msgid "" "Item %d of column numbers in j is %d which is outside range [1,ncol=%d]. Use " @@ -288,11 +288,11 @@ msgstr "" "j 中的列编号里第 %d 项是 %d,超出了有效范围 [1,ncol=%d]。请在 j 中使用列名来" "添加新列。" -#: assign.c:411 +#: assign.c:409 msgid "When deleting columns, i should not be provided" msgstr "当删除列时,不应指定 i" -#: assign.c:417 +#: assign.c:415 #, c-format msgid "" "RHS of assignment to existing column '%s' is zero length but not NULL. If " @@ -308,23 +308,23 @@ msgstr "" "一个与该列原数据等长的向量,如 vector('list',nrow(DT)),即,用新数据替换" "(plonk)重新生成该列。" -#: assign.c:422 +#: assign.c:420 #, c-format msgid "" "Internal error in assign.c: length(newcolnames)=%d, length(names)=%d, coln=%d" msgstr "assign.c 内部错误:length(newcolnames)=%d, length(names)=%d, coln=%d" -#: assign.c:424 +#: assign.c:422 #, c-format msgid "Column '%s' does not exist to remove" msgstr "要删除的列 '%s' 不存在" -#: assign.c:430 +#: assign.c:428 #, c-format msgid "%d column matrix RHS of := will be treated as one vector" msgstr "':=' 右手侧(RHS)%d 列矩阵将被视为一维向量" -#: assign.c:434 +#: assign.c:432 #, c-format msgid "" "Can't assign to column '%s' (type 'factor') a value of type '%s' (not " @@ -333,7 +333,7 @@ msgstr "" "无法给因子(factor)类型列 '%s' 赋类型为 '%s' 的值(不是字符(character)、因" "子(factor)、整数(integer)或数值(numeric)类中的一种)" -#: assign.c:439 +#: assign.c:437 #, c-format msgid "" "Supplied %d items to be assigned to %d items of column '%s'. If you wish to " @@ -343,7 +343,7 @@ msgstr "" "试图将 %d 项赋值给 %d 项(列 '%s')。如果想'回收重用'('recycle')右手侧,请" "使用 rep() 以将该意图清晰地表述给阅读代码的人。" -#: assign.c:449 +#: assign.c:447 msgid "" "This data.table has either been loaded from disk (e.g. using readRDS()/" "load()) or constructed manually (e.g. using structure()). Please run setDT() " @@ -354,7 +354,7 @@ msgstr "" "structure() )。在通过引用的方式进行赋值前,请先运行 setDT() 或 setalloccol() " "来为增加的列预先分配空间" -#: assign.c:450 +#: assign.c:448 #, c-format msgid "" "Internal error: oldtncol(%d) < oldncol(%d). Please report to data.table " @@ -363,7 +363,7 @@ msgstr "" "内部错误: oldtncol(%d) < oldncol(%d)。 请将此问题汇报给 data.table 问题追踪" "器,包括 sessionInfo() 的信息。" -#: assign.c:452 +#: assign.c:450 #, c-format msgid "" "truelength (%d) is greater than 10,000 items over-allocated (length = %d). " @@ -375,7 +375,7 @@ msgstr "" "truelength。如果你没有将 datatable.alloccol 设置为非常大的数值,请将此问题汇" "报给 data.table 问题追踪器,包含 sessionInfo() 的信息" -#: assign.c:454 +#: assign.c:452 #, c-format msgid "" "Internal error: DT passed to assign has not been allocated enough column " @@ -383,7 +383,7 @@ msgid "" msgstr "" "内部错误: 传递出去赋值的 DT 没有被分配足够的列槽。 l=%d, tl=%d, 增加 %d" -#: assign.c:456 +#: assign.c:454 msgid "" "It appears that at some earlier point, names of this data.table have been " "reassigned. Please ensure to use setnames() rather than names<- or " @@ -393,18 +393,18 @@ msgstr "" "names<- 或 colnames<- 进行赋值。如果该办法无效,请将此问题汇报给 data.table " "问题追踪器,包含 sessionInfo() 的信息" -#: assign.c:460 +#: assign.c:458 #, c-format msgid "Internal error: selfrefnames is ok but tl names [%d] != tl [%d]" msgstr "内部错误: selfrefnames 正确,但 tl 的名称 [%d] != tl [%d]" -#: assign.c:471 +#: assign.c:469 msgid "" "Internal error: earlier error 'When deleting columns, i should not be " "provided' did not happen." msgstr "内部错误: 前期的错误 '当删除列的时候,不应该提供参数 i ' 没有发生" -#: assign.c:482 +#: assign.c:480 #, c-format msgid "" "RHS for item %d has been duplicated because NAMED==%d MAYBE_SHARED==%d, but " @@ -413,12 +413,12 @@ msgstr "" "因为 NAMED==%d MAYBE_SHARED==%d, 所以条目 %d 的 RHS 已经被复制,但是接下来又" "要被替换了。length(values)==%d; length(cols)==%d)\n" -#: assign.c:487 +#: assign.c:485 #, c-format msgid "Direct plonk of unnamed RHS, no copy. NAMED==%d, MAYBE_SHARED==%d\n" msgstr "直接替换没有名字的 RHS,并没有复制。 NAMED==%d, MAYBE_SHARED==%d\n" -#: assign.c:556 +#: assign.c:554 #, c-format msgid "" "Dropping index '%s' as it doesn't have '__' at the beginning of its name. It " @@ -427,38 +427,38 @@ msgstr "" "丢掉索引 '%s' 因为它的名字前面没有 '__' 。这个很可能是 data.table v1.9.4 创建" "的\n" -#: assign.c:564 +#: assign.c:562 msgid "Internal error: index name ends with trailing __" msgstr "内部错误: 索引名称以 __ 结尾" -#: assign.c:569 +#: assign.c:567 msgid "Internal error: Couldn't allocate memory for s4." msgstr "内部错误: 不能给 s4 分配内存" -#: assign.c:580 +#: assign.c:578 msgid "Internal error: Couldn't allocate memory for s5." msgstr "内部错误: 不能给 s5 分配内存" -#: assign.c:601 assign.c:617 +#: assign.c:599 assign.c:615 #, c-format msgid "Dropping index '%s' due to an update on a key column\n" msgstr " 因为一个主列的更新,丢掉索引 '%s'\n" -#: assign.c:610 +#: assign.c:608 #, c-format msgid "Shortening index '%s' to '%s' due to an update on a key column\n" msgstr "因为一个主列的更新,缩短索引 '%s' 到 '%s'\n" -#: assign.c:687 +#: assign.c:685 #, c-format msgid "Internal error: recycle length error not caught earlier. slen=%d len=%d" msgstr "内部错误: 早期未被发现的循环长度错误 slen=%d len=%d" -#: assign.c:691 +#: assign.c:689 msgid "Internal error: memrecycle has received NULL colname" msgstr "内部错误: memrecycle 接受到的列名为 NULL " -#: assign.c:717 +#: assign.c:715 #, c-format msgid "" "Cannot assign 'factor' to '%s'. Factors can only be assigned to factor, " @@ -466,14 +466,14 @@ msgid "" msgstr "" "不能将 'factor' 赋值为 '%s' 。因子类型只能赋值为因子,字符或者列表其中的列" -#: assign.c:731 +#: assign.c:729 #, c-format msgid "" "Assigning factor numbers to column %d named '%s'. But %d is outside the " "level range [1,%d]" msgstr "将列 %d 名称为 '%s' 赋值为因子。但是 %d 在层次范围[1,%d]之外" -#: assign.c:739 +#: assign.c:737 #, c-format msgid "" "Assigning factor numbers to column %d named '%s'. But %f is outside the " @@ -482,7 +482,7 @@ msgstr "" "将列 %d 名称为 '%s' 赋值为因子。但是 %f 在层次范围[1,%d]之外,或者不是一个完" "整的数字" -#: assign.c:745 +#: assign.c:743 #, c-format msgid "" "Cannot assign '%s' to 'factor'. Factor columns can be assigned factor, " @@ -490,28 +490,28 @@ msgid "" msgstr "" "不能将 'factor' 赋值为 '%s' 。 因子列可被赋值为因子,字符 ,NA 或者 层次数值" -#: assign.c:766 +#: assign.c:764 msgid "" "Internal error: levels of target are either not unique or have truelength<0" msgstr "内部错误: 目标的层次不是唯一或者长度<0" -#: assign.c:805 +#: assign.c:803 #, c-format msgid "Unable to allocate working memory of %d bytes to combine factor levels" msgstr "不能分配 %d 字节的工作内存来组合因子层次" -#: assign.c:812 +#: assign.c:810 msgid "Internal error: extra level check sum failed" msgstr "内部错误: 额外的层次校验和失败" -#: assign.c:831 +#: assign.c:829 #, c-format msgid "" "Coercing 'character' RHS to '%s' to match the type of the target column " "(column %d named '%s')." msgstr "将'character' RHS 强制转换成 '%s' 来匹配目标列的类型(列 %d 名称 '%s')" -#: assign.c:837 +#: assign.c:835 #, c-format msgid "" "Cannot coerce 'list' RHS to 'integer64' to match the type of the target " @@ -519,107 +519,107 @@ msgid "" msgstr "" "不能将'list' RHS 强制转换成 'integer64' 来匹配目标列的类型(列 %d 名称 '%s')" -#: assign.c:842 +#: assign.c:840 #, c-format msgid "" "Coercing 'list' RHS to '%s' to match the type of the target column (column " "%d named '%s')." msgstr "将'list' RHS 强制转换成 '%s' 来匹配目标列的类型(列 %d 名称 '%s')" -#: assign.c:848 +#: assign.c:846 #, c-format msgid "Zero-copy coerce when assigning '%s' to '%s' column %d named '%s'.\n" msgstr "当 '%s' 赋值成 '%s' 列 %d 名称 '%s',进行Zero-copy强制转换。\n" -#: assign.c:943 +#: assign.c:941 #, c-format msgid "type '%s' cannot be coerced to '%s'" msgstr "类型 '%s' 不能强制转换成 '%s'" -#: assign.c:1063 +#: assign.c:1061 msgid "" "To assign integer64 to a character column, please use as.character() for " "clarity." msgstr "请使用 as.character() 把 integer64 类型的数值赋值给字符列" -#: assign.c:1074 +#: assign.c:1072 #, c-format msgid "Unsupported column type in assign.c:memrecycle '%s'" msgstr "" -#: assign.c:1121 +#: assign.c:1119 #, c-format msgid "Internal error: writeNA passed a vector of type '%s'" msgstr "" -#: assign.c:1152 +#: assign.c:1150 #, c-format msgid "" "Internal error: savetl_init checks failed (%d %d %p %p). please report to " "data.table issue tracker." msgstr "" -#: assign.c:1160 +#: assign.c:1158 #, c-format msgid "Failed to allocate initial %d items in savetl_init" msgstr "" -#: assign.c:1169 +#: assign.c:1167 #, c-format msgid "" "Internal error: reached maximum %d items for savetl. Please report to data." "table issue tracker." msgstr "" -#: assign.c:1176 +#: assign.c:1174 #, c-format msgid "Failed to realloc saveds to %d items in savetl" msgstr "" -#: assign.c:1182 +#: assign.c:1180 #, c-format msgid "Failed to realloc savedtl to %d items in savetl" msgstr "" -#: assign.c:1205 +#: assign.c:1203 msgid "x must be a character vector" msgstr "" -#: assign.c:1206 +#: assign.c:1204 msgid "'which' must be an integer vector" msgstr "" -#: assign.c:1207 +#: assign.c:1205 msgid "'new' must be a character vector" msgstr "" -#: assign.c:1208 +#: assign.c:1206 #, c-format msgid "'new' is length %d. Should be the same as length of 'which' (%d)" msgstr "" -#: assign.c:1211 +#: assign.c:1209 #, c-format msgid "" "Item %d of 'which' is %d which is outside range of the length %d character " "vector" msgstr "" -#: assign.c:1221 +#: assign.c:1219 msgid "dt passed to setcolorder has no names" msgstr "" -#: assign.c:1223 +#: assign.c:1221 #, c-format msgid "Internal error: dt passed to setcolorder has %d columns but %d names" msgstr "" -#: assign.c:1230 +#: assign.c:1228 msgid "" "Internal error: o passed to Csetcolorder contains an NA or out-of-bounds" msgstr "" -#: assign.c:1232 +#: assign.c:1230 msgid "Internal error: o passed to Csetcolorder contains a duplicate" msgstr "" @@ -2758,53 +2758,53 @@ msgstr "" msgid "%s" msgstr "" -#: froll.c:18 froll.c:227 froll.c:411 +#: froll.c:14 froll.c:223 froll.c:407 #, c-format msgid "%s: window width longer than input vector, returning all NA vector\n" msgstr "" -#: froll.c:36 froll.c:244 froll.c:460 +#: froll.c:32 froll.c:240 froll.c:456 #, c-format msgid "%s: align %d, shift answer by %d\n" msgstr "" -#: froll.c:43 froll.c:251 frolladaptive.c:23 frolladaptive.c:218 +#: froll.c:39 froll.c:247 frolladaptive.c:19 frolladaptive.c:214 #, c-format msgid "%s: processing algo %u took %.3fs\n" msgstr "" -#: froll.c:52 froll.c:255 +#: froll.c:48 froll.c:251 #, c-format msgid "%s: running for input length %, window %d, hasna %d, narm %d\n" msgstr "" "%s: 正在并行运行, 输入长度 (input length) %, 窗口 (window) %d, hasna " "%d, narm %d\n" -#: froll.c:72 froll.c:82 froll.c:173 froll.c:275 froll.c:285 froll.c:366 -#: frolladaptive.c:62 frolladaptive.c:151 frolladaptive.c:251 -#: frolladaptive.c:330 +#: froll.c:68 froll.c:78 froll.c:169 froll.c:271 froll.c:281 froll.c:362 +#: frolladaptive.c:58 frolladaptive.c:147 frolladaptive.c:247 +#: frolladaptive.c:326 #, c-format msgid "" "%s: hasNA=FALSE used but NA (or other non-finite) value(s) are present in " "input, use default hasNA=NA to avoid this warning" msgstr "" -#: froll.c:75 froll.c:177 froll.c:278 froll.c:370 frolladaptive.c:65 -#: frolladaptive.c:155 frolladaptive.c:254 frolladaptive.c:334 +#: froll.c:71 froll.c:173 froll.c:274 froll.c:366 frolladaptive.c:61 +#: frolladaptive.c:151 frolladaptive.c:250 frolladaptive.c:330 #, c-format msgid "" "%s: NA (or other non-finite) value(s) are present in input, re-running with " "extra care for NAs\n" msgstr "" -#: froll.c:85 froll.c:288 +#: froll.c:81 froll.c:284 #, c-format msgid "" "%s: NA (or other non-finite) value(s) are present in input, skip non-NA " "attempt and run with extra care for NAs\n" msgstr "%s: NA (或其他非有限长度值) 出现在输入中, 跳过非NA的输入并当心NA值\n" -#: froll.c:141 froll.c:339 +#: froll.c:137 froll.c:335 #, c-format msgid "" "%s: running in parallel for input length %, window %d, hasna %d, " @@ -2813,7 +2813,7 @@ msgstr "" "%s: 正在并行运行, 输入长度 (input length) %, 窗口 (window) %d, hasna " "%d, narm %d\n" -#: froll.c:179 froll.c:372 frolladaptive.c:157 frolladaptive.c:336 +#: froll.c:175 froll.c:368 frolladaptive.c:153 frolladaptive.c:332 #, c-format msgid "" "%s: NA (or other non-finite) value(s) are present in input, na.rm was FALSE " @@ -2822,12 +2822,12 @@ msgstr "" "%s: NA (或其他非有限长度值) 出现在输入中, na.rm 为 FALSE 因此在'exact'实现" "中, NA值已经被处理, 不需要重新运行\n" -#: froll.c:428 +#: froll.c:424 #, c-format msgid "%s: results from provided FUN are not length 1" msgstr "%s: 所提供的函数 (FUN) 的结果长度不为1" -#: froll.c:435 +#: froll.c:431 #, c-format msgid "" "%s: results from provided FUN are not of type double, coercion from integer " @@ -2836,12 +2836,12 @@ msgstr "" "%s: 所提供的函数 (FUN) 的结果不是双精度 (double) 类型, 对整数或逻辑值的类型转" "换会在每个循环中执行\n" -#: froll.c:438 +#: froll.c:434 #, c-format msgid "%s: results from provided FUN are not of type double" msgstr "%s: 所提供的函数 (FUN) 的结果不是双精度 (double) 类型" -#: froll.c:467 +#: froll.c:463 #, c-format msgid "%s: took %.3fs\n" msgstr "%s: 使用了 %.3fs\n" @@ -2995,22 +2995,22 @@ msgstr "内部错误: 'fun' 必须是一个函数" msgid "internal error: 'rho' should be an environment" msgstr "内部错误: 'rho' 应该为一个环境 (environment)" -#: frolladaptive.c:33 frolladaptive.c:222 +#: frolladaptive.c:29 frolladaptive.c:218 #, c-format msgid "%s: running for input length %, hasna %d, narm %d\n" msgstr "%s: 正在运行, 输入长度 %, hasna %d, narm %d\n" -#: frolladaptive.c:39 frolladaptive.c:228 +#: frolladaptive.c:35 frolladaptive.c:224 #, c-format msgid "%s: Unable to allocate memory for cumsum" msgstr "%s: 无法为 cumsum 分配内存" -#: frolladaptive.c:75 frolladaptive.c:264 +#: frolladaptive.c:71 frolladaptive.c:260 #, c-format msgid "%s: Unable to allocate memory for cum NA counter" msgstr "%s: 无法为 cum NA counter 分配内存" -#: frolladaptive.c:118 frolladaptive.c:302 +#: frolladaptive.c:114 frolladaptive.c:298 #, c-format msgid "%s: running in parallel for input length %, hasna %d, narm %d\n" msgstr "%s: 正在并行运行, 输入长度 %, hasna %d, narm %d\n" @@ -3723,156 +3723,156 @@ msgstr "" msgid "Final step, fetching indices in overlaps ... done in %8.3f seconds\n" msgstr "" -#: init.c:198 +#: init.c:231 #, c-format msgid "" "Pointers are %d bytes, greater than 8. We have not tested on any " "architecture greater than 64bit yet." msgstr "" -#: init.c:209 +#: init.c:242 #, c-format msgid "Checking NA_INTEGER [%d] == INT_MIN [%d] %s" msgstr "" -#: init.c:210 +#: init.c:243 #, c-format msgid "Checking NA_INTEGER [%d] == NA_LOGICAL [%d] %s" msgstr "" -#: init.c:211 +#: init.c:244 #, c-format msgid "Checking sizeof(int) [%d] is 4 %s" msgstr "" -#: init.c:212 +#: init.c:245 #, c-format msgid "Checking sizeof(double) [%d] is 8 %s" msgstr "" -#: init.c:214 +#: init.c:247 #, c-format msgid "Checking sizeof(long long) [%d] is 8 %s" msgstr "" -#: init.c:215 +#: init.c:248 #, c-format msgid "Checking sizeof(pointer) [%d] is 4 or 8 %s" msgstr "" -#: init.c:216 +#: init.c:249 #, c-format msgid "Checking sizeof(SEXP) [%d] == sizeof(pointer) [%d] %s" msgstr "" -#: init.c:217 +#: init.c:250 #, c-format msgid "Checking sizeof(uint64_t) [%d] is 8 %s" msgstr "" -#: init.c:218 +#: init.c:251 #, c-format msgid "Checking sizeof(int64_t) [%d] is 8 %s" msgstr "" -#: init.c:219 +#: init.c:252 #, c-format msgid "Checking sizeof(signed char) [%d] is 1 %s" msgstr "" -#: init.c:220 +#: init.c:253 #, c-format msgid "Checking sizeof(int8_t) [%d] is 1 %s" msgstr "" -#: init.c:221 +#: init.c:254 #, c-format msgid "Checking sizeof(uint8_t) [%d] is 1 %s" msgstr "" -#: init.c:222 +#: init.c:255 #, c-format msgid "Checking sizeof(int16_t) [%d] is 2 %s" msgstr "" -#: init.c:223 +#: init.c:256 #, c-format msgid "Checking sizeof(uint16_t) [%d] is 2 %s" msgstr "" -#: init.c:226 +#: init.c:259 #, c-format msgid "Checking LENGTH(allocVector(INTSXP,2)) [%d] is 2 %s" msgstr "" -#: init.c:227 +#: init.c:260 #, c-format msgid "Checking TRUELENGTH(allocVector(INTSXP,2)) [%d] is 0 %s" msgstr "" -#: init.c:234 +#: init.c:267 #, c-format msgid "Checking memset(&i,0,sizeof(int)); i == (int)0 %s" msgstr "" -#: init.c:237 +#: init.c:270 #, c-format msgid "Checking memset(&ui, 0, sizeof(unsigned int)); ui == (unsigned int)0 %s" msgstr "" -#: init.c:240 +#: init.c:273 #, c-format msgid "Checking memset(&d, 0, sizeof(double)); d == (double)0.0 %s" msgstr "" -#: init.c:243 +#: init.c:276 #, c-format msgid "Checking memset(&ld, 0, sizeof(long double)); ld == (long double)0.0 %s" msgstr "" -#: init.c:246 +#: init.c:279 msgid "The ascii character '/' is not just before '0'" msgstr "" -#: init.c:247 +#: init.c:280 msgid "The C expression (uint_fast8_t)('/'-'0')<10 is true. Should be false." msgstr "" -#: init.c:248 +#: init.c:281 msgid "The ascii character ':' is not just after '9'" msgstr "" -#: init.c:249 +#: init.c:282 msgid "The C expression (uint_fast8_t)('9'-':')<10 is true. Should be false." msgstr "" -#: init.c:254 +#: init.c:287 #, c-format msgid "Conversion of NA_INT64 via double failed %!=%" msgstr "" -#: init.c:258 +#: init.c:291 msgid "NA_INT64_D (negative -0.0) is not == 0.0." msgstr "" -#: init.c:259 +#: init.c:292 msgid "NA_INT64_D (negative -0.0) is not ==-0.0." msgstr "" -#: init.c:260 +#: init.c:293 msgid "ISNAN(NA_INT64_D) is TRUE but should not be" msgstr "" -#: init.c:261 +#: init.c:294 msgid "isnan(NA_INT64_D) is TRUE but should not be" msgstr "" -#: init.c:290 +#: init.c:323 #, c-format msgid "PRINTNAME(install(\"integer64\")) has returned %s not %s" msgstr "" -#: init.c:359 +#: init.c:392 msgid ".Last.value in namespace is not a length 1 integer" msgstr "" From 5f3af309fed6d1fadd6994c958c8895da7e956f9 Mon Sep 17 00:00:00 2001 From: ShawnChen1996 Date: Sun, 8 Dec 2019 18:54:44 +0800 Subject: [PATCH 54/78] Translation shawn (#4050) * done some translation! * done some translation! * done some translation * revised the translation --- po/R-zh_CN.po | 55 +++++++++++++++++-------------- po/zh_CN.po | 90 +++++++++++++++++++++++++++++---------------------- 2 files changed, 82 insertions(+), 63 deletions(-) diff --git a/po/R-zh_CN.po b/po/R-zh_CN.po index 0a975e8967..3f96dac5fe 100644 --- a/po/R-zh_CN.po +++ b/po/R-zh_CN.po @@ -1920,101 +1920,106 @@ msgid "but should be a number between 2 and 100" msgstr "" msgid "Valid options for col.names are 'auto', 'top', and 'none'" -msgstr "" +msgstr "对col.names有效的参数为'auto', 'top', and 'none'" msgid "Column classes will be suppressed when col.names is 'none'" -msgstr "" +msgstr "当col.names为'none'时,列的类型将被抑制" msgid "" "Internal structure doesn't seem to be a list. Possibly corrupt data.table." -msgstr "" +msgstr "内部类型可能不是一个列表,该操作可能会损坏data.table" msgid "" "x may no longer be the character name of the data.table. The possibility was " "undocumented and has been removed." -msgstr "" +msgstr "x可能不再是data.table的名字。 该变化不被记录并且已经被删除" msgid "set2key() is now deprecated. Please use setindex() instead." -msgstr "" +msgstr "set2key()已经废弃,请使用setindex()" msgid "set2keyv() is now deprecated. Please use setindexv() instead." -msgstr "" +msgstr "set2keyv()已经废弃,请使用setindexv()" msgid "key2() is now deprecated. Please use indices() instead." -msgstr "" +msgstr "key2()已经废弃,请使用indices()" msgid "" "key(x)<-value is deprecated and not supported. Please change to use setkey() " "with perhaps copy(). Has been warning since 2012 and will be an error in " "future." -msgstr "" +msgstr "key(x)<-value 已经废弃,不再支持。请使用setkey(), 也许您需要配套使用copy()" +"自2012年来就警告将弃用原用法,将来该用法将报错" msgid "x is not a data.table" -msgstr "" +msgstr "x不是一个data.table" msgid "" "cols is not a character vector. Please see further information in ?setkey." -msgstr "" +msgstr "列不是一个字符类型的向量. 更多信息请查看?setkey." msgid "" "Setting a physical key on .SD is reserved for possible future use; to modify " "the original data's order by group. Try setindex() instead. Or, set*(copy(." "SD)) as a (slow) last resort." -msgstr "" +msgstr "在.SD设置一个物理的键的功能被保留,以备未来的需求; 如需通过分组修改原数据顺序" +"请使用setindex(), 或者set*(copy(.SD))作为最终(该方式缓慢)的方法" msgid "" "cols is a character vector of zero length. Removed the key, but use NULL " "instead, or wrap with suppressWarnings() to avoid this warning." -msgstr "" +msgstr "列为一个长度为0的字符串向量,请删除键值并使用NULL, 或者使用suppressWarnings()来避免警告" msgid "cols is the empty string. Use NULL to remove the key." -msgstr "" +msgstr "列为一个空字符串,请使用NULL以删除键值。" msgid "cols contains some blanks." -msgstr "" +msgstr "列中包含空白" msgid "some columns are not in the data.table:" -msgstr "" +msgstr "一些列不在data.table中" msgid "" "x contains a column called '.xi'. Conflicts with internal use by data.table." -msgstr "" +msgstr "x包含一个叫做'.xi'的列。这与data.table中使用的内部名称冲突" msgid "' is type '" -msgstr "" +msgstr "是类型" msgid "' which is not supported as a key column type, currently." -msgstr "" +msgstr "目前不是一种被支持的列类型" msgid "" "Internal error. 'cols' should be character at this point in setkey; please " "report." -msgstr "" +msgstr "内部错误: 目前在setkey中,'cols'应该是字符类型, 请报告" msgid "Internal error: index '" -msgstr "" +msgstr "内部错误:索引" msgid "' exists but is invalid" -msgstr "" +msgstr "存在但无效" msgid "" "Use 'if (length(o <- forderv(DT,by))) ...' for efficiency in one step, so " "you have o as well if not sorted." msgstr "" +"请使用'if (length(o <- forderv(DT,by))) ...' , 以便在一步中拥有较好的效率," +"同时如果你还未排序,你也获得了变量o" msgid "x is vector but 'by' is supplied" -msgstr "" +msgstr "x是一个向量, 但是参数'by'被提供" msgid "x is a single vector, non-NULL 'by' doesn't make sense" -msgstr "" +msgstr "x是一个单向量,非NULL的'by'参数不合理" msgid "Attempting to order a 0-column data.table or data.frame." -msgstr "" +msgstr "你正在试图对一个0列的data.table或者data.frame排序" msgid "" "The first item passed to [f]order is a plain list but there are more items. " "It should be a data.table or data.frame." -msgstr "" +msgstr "传递给[f]order的第一个变量是一个简单的列表, 但此处有更多的项" +"它需要是一个data.table或者data.frame" msgid "Internal code should not be being called on type double" msgstr "" diff --git a/po/zh_CN.po b/po/zh_CN.po index 41f5ba9d38..9bc2b996db 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -118,7 +118,7 @@ msgstr "" #: assign.c:239 fsort.c:109 nafill.c:73 msgid "verbose must be TRUE or FALSE" -msgstr "" +msgstr "verbose必须是TRUE或FALSE" #: assign.c:287 msgid "assign has been passed a NULL dt" @@ -583,7 +583,7 @@ msgstr "" #: assign.c:1203 msgid "x must be a character vector" -msgstr "" +msgstr "x必需为字符矢量" #: assign.c:1204 msgid "'which' must be an integer vector" @@ -3828,81 +3828,85 @@ msgstr "" #: init.c:276 #, c-format msgid "Checking memset(&ld, 0, sizeof(long double)); ld == (long double)0.0 %s" -msgstr "" +msgstr "检查memset(&ld, 0, sizeof(long double)); ld == (long double)0.0 %s" #: init.c:279 msgid "The ascii character '/' is not just before '0'" -msgstr "" +msgstr "ascii字符'/'不是在'0'前" #: init.c:280 msgid "The C expression (uint_fast8_t)('/'-'0')<10 is true. Should be false." -msgstr "" +msgstr "C表达式 (uint_fast8_t)('/'-'0') <10 为 true. 应该是 false." #: init.c:281 msgid "The ascii character ':' is not just after '9'" -msgstr "" +msgstr "ascii字符':'不是在'9'后" #: init.c:282 msgid "The C expression (uint_fast8_t)('9'-':')<10 is true. Should be false." -msgstr "" +msgstr "C表达式(uint_fast8_t)('9'-':') < 10 为 true. 应该是 false." #: init.c:287 #, c-format msgid "Conversion of NA_INT64 via double failed %!=%" -msgstr "" +msgstr "double类型转化为NA_INT64失败,%!=%" #: init.c:291 msgid "NA_INT64_D (negative -0.0) is not == 0.0." -msgstr "" +msgstr "NA_INT64_D (negative -0.0) 不是 == 0.0." + #: init.c:292 msgid "NA_INT64_D (negative -0.0) is not ==-0.0." -msgstr "" +msgstr "NA_INT64_D (negative -0.0) 不是 ==-0.0." #: init.c:293 msgid "ISNAN(NA_INT64_D) is TRUE but should not be" -msgstr "" +msgstr "ISNAN(NA_INT64_D) 不应该是TRUE" + #: init.c:294 msgid "isnan(NA_INT64_D) is TRUE but should not be" -msgstr "" +msgstr "isnan(NA_INT64_D) 不应该是 TRUE" + #: init.c:323 #, c-format msgid "PRINTNAME(install(\"integer64\")) has returned %s not %s" -msgstr "" +msgstr "PRINTNAME(install(\"integer64\")) 返回了 %s , 而不是 %s" #: init.c:392 msgid ".Last.value in namespace is not a length 1 integer" -msgstr "" +msgstr "命名空间中,.Last.value 不是一个长度为 1 的整型" #: nafill.c:83 msgid "" "'x' argument is atomic vector, in-place update is supported only for list/" "data.table" -msgstr "" +msgstr "参数'x'是一个原子型矢量,原位的更新只为list 或 data.table提供" #: nafill.c:85 nafill.c:95 msgid "'x' argument must be numeric type, or list/data.table of numeric types" -msgstr "" +msgstr "参数'x'必须是数字类型,或者是数字类型的list/data.table" #: nafill.c:133 nafill.c:161 msgid "" "Internal error: invalid type argument in nafillR function, should have been " "caught before. Please report to data.table issue tracker." -msgstr "" +msgstr "内部错误:函数 nafillR 中有无效类型的参数, 该错误理应已被捕获,请向data.table的issue通道报告" #: nafill.c:177 #, c-format msgid "%s: parallel processing of %d column(s) took %.3fs\n" -msgstr "" +msgstr "%s : 并行处理 %d 列, 用时 %.3fs\n" #: openmp-utils.c:22 #, c-format msgid "" "Ignoring invalid %s==\")%s\". Not an integer >= 1. Please remove any " "characters that are not a digit [0-9]. See ?data.table::setDTthreads." -msgstr "" +msgstr "忽略无效的 %s==\")%s\". 不是一个 >= 1 的整型. 请去除任何不是[0-9]数字的字符。 " +"查看?data.table::setDTthreads." #: openmp-utils.c:40 #, c-format @@ -3910,85 +3914,91 @@ msgid "" "Ignoring invalid R_DATATABLE_NUM_PROCS_PERCENT==%d. If used it must be an " "integer between 2 and 100. Default is 50. See ?setDTtheads." msgstr "" +"忽略无效的R_DATATABLE_NUM_PROCS_PERCENT==%d. 如需使用,它必须是一个2-100的整型,默认值为50" +"查看?setDTtheads." #: openmp-utils.c:67 msgid "'verbose' must be TRUE or FALSE" -msgstr "" +msgstr "'verbose'必须是TRUE或者FALSE" #: openmp-utils.c:70 msgid "" "This installation of data.table has not been compiled with OpenMP support.\n" -msgstr "" +msgstr "安装的data.table并不是获得OpenMP支持的编译" #: openmp-utils.c:75 #, c-format msgid " omp_get_num_procs() %d\n" -msgstr "" +msgstr " omp_get_num_procs() %d\n" #: openmp-utils.c:76 #, c-format msgid " R_DATATABLE_NUM_PROCS_PERCENT %s\n" -msgstr "" +msgstr " R_DATATABLE_NUM_PROCS_PERCENT %s\n" #: openmp-utils.c:77 #, c-format msgid " R_DATATABLE_NUM_THREADS %s\n" -msgstr "" +msgstr " R_DATATABLE_NUM_THREADS %s\n" #: openmp-utils.c:78 #, c-format msgid " omp_get_thread_limit() %d\n" -msgstr "" +msgstr " omp_get_thread_limit() %d\n" #: openmp-utils.c:79 #, c-format msgid " omp_get_max_threads() %d\n" -msgstr "" +msgstr " omp_get_max_threads() %d\n" #: openmp-utils.c:80 #, c-format msgid " OMP_THREAD_LIMIT %s\n" -msgstr "" +msgstr " OMP_THREAD_LIMIT %s\n" #: openmp-utils.c:81 #, c-format msgid " OMP_NUM_THREADS %s\n" -msgstr "" +msgstr " OMP_NUM_THREADS %s\n" #: openmp-utils.c:82 #, c-format msgid " RestoreAfterFork %s\n" -msgstr "" +msgstr " RestoreAfterFork %s\n" #: openmp-utils.c:83 #, c-format msgid " data.table is using %d threads. See ?setDTthreads.\n" -msgstr "" +msgstr " data.table 正在使用 %d 线程. 查看 ?setDTthreads.\n" #: openmp-utils.c:91 msgid "" "restore_after_fork= must be TRUE, FALSE, or NULL (default). " "getDTthreads(verbose=TRUE) reports the current setting.\n" msgstr "" +"restore_after_fork= 必须是 TRUE, FALSE, 或者 NULL (默认值). " +"getDTthreads(verbose=TRUE) 来查看当前设置.\n" #: openmp-utils.c:105 #, c-format msgid "" "threads= must be either NULL (default) or a single number. It has length %d" msgstr "" +"threads= 必须是 NULL (默认值) 或者一个数字. 目前它长度为 %d" #: openmp-utils.c:107 msgid "threads= must be either NULL (default) or type integer/numeric" -msgstr "" +msgstr "threads= 必须是 NULL (默认值) 或者数字/整型类型" #: openmp-utils.c:109 msgid "" "threads= must be either NULL or a single integer >= 0. See ?setDTthreads." msgstr "" +"threads= 必须是 NULL 或者一个>=0 的整型。 查看 ?setDTthreads." #: openmp-utils.c:114 msgid "Internal error: percent= must be TRUE or FALSE at C level" -msgstr "" +msgstr "内部错误: 在 C 中,percent= 必须是TRUE or FALSE " #: openmp-utils.c:117 #, c-format @@ -3996,33 +4006,35 @@ msgid "" "Internal error: threads==%d should be between 2 and 100 (percent=TRUE at C " "level)." msgstr "" +"内部错误: threads==%d 应该为 2 至 100 (percent=TRUE, 在 C 中)." #: rbindlist.c:8 msgid "fill= should be TRUE or FALSE" -msgstr "" +msgstr "fill= 应该是 TRUE 或 FALSE" #: rbindlist.c:10 msgid "use.names= should be TRUE, FALSE, or not used (\"check\" by default)" -msgstr "" +msgstr "use.names= 应该是 TRUE, FALSE, 或者默认不使用 (\"check\" )" #: rbindlist.c:12 msgid "" "Input to rbindlist must be a list. This list can contain data.tables, data." "frames or plain lists." msgstr "" +"rbindlist的输入必须是一个list. 该list可以包含data.table, data.frame 或者 普通list." #: rbindlist.c:16 msgid "use.names= cannot be FALSE when fill is TRUE. Setting use.names=TRUE." -msgstr "" +msgstr "当fill是TRUE时,use.names= 不能是FALSE . 正在设置 use.names=TRUE." #: rbindlist.c:20 msgid "Internal error: rbindlist.c idcol is not a single string" -msgstr "" +msgstr "内部错误: rbindlist.c idcol 不是一个单字符串" #: rbindlist.c:31 #, c-format msgid "Item %d of input is not a data.frame, data.table or list" -msgstr "" +msgstr "输入项 %d 不是一个data.frame, data.table 或list" #: rbindlist.c:39 #, c-format @@ -4030,11 +4042,13 @@ msgid "" "Item %d has %d columns, inconsistent with item %d which has %d columns. To " "fill missing columns use fill=TRUE." msgstr "" +"项%d有%d列, 与第%d项不一致, 它有%d列. 若要填补这些列, 请使用fill=TRUE." #: rbindlist.c:42 #, c-format msgid "Item %d has %d columns but %d column names. Invalid object." -msgstr "" +msgstr "=====================" +"第%d项有%d列, 却有列名 %d 个. 无效对象." #: rbindlist.c:49 #, c-format From f1be93e96398bec1714a17926d74d21a5bd465ce Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Sun, 8 Dec 2019 18:57:25 +0800 Subject: [PATCH 55/78] small tweak --- inst/po/zh_CN/LC_MESSAGES/R-data.table.mo | Bin 42572 -> 46724 bytes inst/po/zh_CN/LC_MESSAGES/data.table.mo | Bin 62017 -> 68512 bytes po/zh_CN.po | 2 +- 3 files changed, 1 insertion(+), 1 deletion(-) diff --git a/inst/po/zh_CN/LC_MESSAGES/R-data.table.mo b/inst/po/zh_CN/LC_MESSAGES/R-data.table.mo index c9de091a47babd9ea9cad3c78fc90b6eaa668506..e8002f19c38c14a7b6907ab378032f8bc2302068 100644 GIT binary patch delta 10281 zcma*r33yc1*}(CWuqetR0wViGkVzm65s_5{3W^8r%C?ZQW(=B&n@dt=87I-}is#+$7lV>(k!HH@|c4dY1Rx zJNVjbv1|Vr8~E_X)+LH_U3)5ZC*Fh|aV`$R zBpiktusfc^zWA1P{7-lj_3pit%0@dTC>2nLC|u8ucaZ;?|G+yiNao0h{1i80>~N*p zV-c>!GQ0u%(LEW`L`=cSScHeMEsmrWl62!y?wf;hUR8j?Tnb&-n}JKQ1O5tg@Cwex zMI-f%Dv^7t(99gku*zJQV=W64CBsz*_-JAynX zpngt4ZtxXK*7jin#Yd27R=ZFxd<7F@8D)rar*?vHNt!{{RIig@t$x<0V741YLLn zW3VS@x53`X45(XBZg?xULN|6qFR}tvKFWhm;7#~@oPaSib@orfF4VJUGXB?5*u)Mw z@oDUcmG~*vqGaj5Svp7FLP@T_V+ZU?Yvp}#3(EBllo8CqGk6$1xa0wS{+rm7`UhBu z-#x(iGa4$N)Mllr*RU(bvL?mu7>5b?Yn+c0r9Mx;2{Vv|qqd-Qw*e z&DSrm73ih@5lRQ=1QsauFoio9|8`i6$FU40Tc9H;Oj3NNAD_}WL5YK^mSIL<@q*?R1W+fjzT z5~YC`P#S(2WASyo9)E$7_3z_i?6F9nmyI$-`Isi_|0IQp?C8l^z3~wofH^o6%TY$; zXSf8jAJt#AcX2%RF6@*kd;l3tRgO0N8rNd4$7nEFydP7jS2=V8yCm^Gk@eq?f@Jq> zWXY-pD05hb-SHS6!^_weJ;{3L)?z&MJt#@~3MS%TQ5rOur*-1NStt!!=hRlBocAl7 z!ShwyR6WOYQBKUYJb)vq{}e}~TB?`T7?fP_p@ADvvivAs!vlLVu7jxG;?m1^8jhtt z9c6VDV1F#Zz^xR{Qs{&qSO@-ylJ%XI=?9I*OzJaH_Fuww*nkFpg)-+|Ncni|hq8Yf z_QhrRB5uIxI5S;$s4SiFx3S|Lc1)+`-{VB;Q{6fT3N4Rg0{ee~GUxxW97nfXQ_n^6 zSFOUC_*>)@6-TSZQe+lX+vR%QKaSGSKQCwecT(ufqRhgx=)>4XPRmd#0g0$;=d zIKi)TBN?Yqe-dZl^VkDBa5FpFurn^eR+xs8?lGR+FdvYU%*1_wnES0 zUX%vyM@h;PI1OJ#$&DMc^=g@p1F7fY7Tjyqhvw+_#2l0vuvf1B zs(peZsh84iNtQRzz(3(>?EIu|$jd0p^h4~3?Vr*~+6yIT=Hn=Q8Mom-aV{3GjJ|OL zDojDZ?)a{4BCkR2c8Z`M}0CA!~Kctj24pe}@c$ zidm>rP};^Zxi|6&R*cHE7x;62!Z zi5r6RupQ>%7~F_*-ix>luPfF=pM^5Ct59;M45h(uqAcIf(Tg!;;7`zxGF2nDGyaJb zPHop0TtOT4*q~m1gRw335K7O_<8u7aa`p~=-3urq_zC9YUvL=amT)c}!9`g3G%Es4 zWFe?=fl@M)LJiVLRkD+RmEfRV+BB5qbJX%ve4ctwQeH;lJ)DjGck|O4y%>XUp=A9# z$PB2DaU5Pj=}^CN{gDd{qF`soC>)KccoXhJx!??rz^|~QCA+^yNwPi%d0%58 zeuCfN0(`eZC#U_8{(UeSr2%0afL|g#RNbD_KT;FXpzc9=V;18ip06%ah(mRl|Mdd# zXv5c0ZuAX4ian0#^__#0sBgoE@f~c7_M`fheFt7gJsssi+1Lszuniu;&RC5Bx$q|x zWDZ}&!T4L8iLH<6$qi{~&0T{yf_FXwWU2EB?i z@Y_npKb^wlDt&_!D0BR})MI!nR_j-@;v~LH z(cgDV@h=2}q`o2Q2-${n&LxzbxO(H2qDT?-HeutOPjLhB1tIy@+=8JTl+oykMR=Z& z#E~A1BxI9cwDMj^B4mpGDm&TkCte{~Wzl8%TWs27uKRPYYz#njIWn`7I|0>^1AnB_ znUF1y_=*_B{tNhbLbsA%!jy{%dGpEAx=b`}gD9*a)>=D0XgYv5b1#`**%oTl^HI68 z{GU&mbJ^Y^ZloNK`NSJUXX{ug<)*F1D%`@cYpn8F97Q}v+(}4+t|M3^(XXK_;futd ziFb+nh=I~G7h&f{pJ99AAwo7;8Imk75&Ma3q9buD(S}%0%ps-_jYI>HLZlH*+wUmw zt%`2fS{)gTKV#36M08~TK;bUpIpTAo4<{sACwHU%uiJcfT*vVq1o^AF;Zf_P*_NAe zIC03T@54oe&#JG|2BOQTp2|(u0YUz~_748T+IJj>5Zj4KL>zGsA=_S}JLk)GhbH>P zvs>jh9E-7zTf5Y4R()G@W^v?t;x=Lk2W2hGCSS6y)Ol~HH;G>mH&_?HOj)+W#B0$K zZ$j&sRaFiOt%>&RzZb8!j`yQHkLWAozmkwGnYb=m;>RZzTIC0@lGtk1e{Jc-?};yo z2=Plowh-YYZXsSE{zkk{^yA?Ji3G|8gh2!j@@E;bh4`9~EuNE197bF#JJ?<%PDe}n z&#jzu^>&k0pUlo(#Op+F>x9KP(JJr8r-@Fw9?ie#JGwhN60W-GN7N1KB{&Sf#YAE{ z@g5N-WZR@sr*I=NmB=DI#BYeFh)iM+@gT9Bm_>+Vh7?+R=r1C>qb}D(bp>HQZ5fx zbpLfXXO7F~_Zdl9e#7N6T<#T)bXQ6!=jJvs?Wp^6Go6Ml^hA#iv7?RbG*@z(oaOfT z4PRDfrpN1drWg*N;V>R|<{HVK^sEeb^qK@CIm_#Hy8Y?7_RzXshq{cKGW{<1 zQp4{tJl+(im&+1|S{J1_{0_U{k(BP_m=Ud|dL0?gQ2ekdv9~9uJA6K;&&YPAryEJm z=)=8EcBRlLr(2$EcXKu!@EJC@$L+L*oVSf{GsSM$IOek%zBEr(dWu||oaXR4lKt{{ zzu`~gf=rLgP4C@?&*`Th7+T%RkM8_Rfl+=hMbl;EnkK>==<;Yo3&=F(yrA=gruJYL4h=CejK zDc4x)^<-t*jd|W&>5EGm9T!i}e14}R#cs^RL3f;)jDg3<^<)`ojunih zj6k-NyyCvm#HRPb&!-fRSs*LH@Q||}w=a6XmNb(t*&JDZk1fHl`8}E7aHlk--padw z);8c{y4`+;!^iV7oJLZ*!~M9=t|T8NO&wQd;tFT7pZ0oEjVGL5kD+^KH|97qJS$|F z83z&~Av&g6WaiBIGiEeRYl4hgw%3u#>hPyEFO7B!9bPx9%@-G3@=%XJ(^I8~|M$t{ zs7`sZ*GSFs%Di!Z#xTPn-Iw8;pjSsr2c%W9q{%gs#J$vR%x`KMdEt$=y{YLj_R!=R zIc)>bqsI+GpI_Xq>{gEvcat5~w`rB2B<>AY?Sc^&ODw5_vw$%9ZT&UA3@6=jUv09T+a1`%f4DKg&|FPp)0@Utb(O(^}MW^^|)^ z?%?!=y9Y_4G1a_=NicF$##7b~Q`Pc@9UBTS{JhP5&FM)#=r=bno^;a9X3ufi?8an| zJ2l;v%*P=*(7Yq{J5R=dcTLOv?7=q|m&PXL2A4g0e{j{K;{rK)1SQj2&Qj66R;J76 z#+H<8lN04jlJ0V*a6*P7mnIwO9;VwXuTW`t%L`jx@v=yM*d5+?oRt}U$-2^A{@g*# zz0b&Ur+AXHGWZ73C0U$lO_`xnGbMEP(U)R6nUy=u^26b}f=KE9NJ(Mv$;bZQF0!+_ z{^SL7@21cS$EPv2`rTFLhN5sy5&Oe6dG*f~H9T`HvZFe(IlsPatyx%VoxCu)YuEAn zBbCo`!-nb-bN5BF`WzR8YmO$$S!HWmMk7-AbVJ^{Xg&I!i)`6$p5Gcu%kCCCye`Om z=*f$r?xCow9nkLwWX(_Df#X;f%3zAZW^jC*4I_(5vkvB zq`tU-F=^aUC8M};ACI6z;Y)k!OLlSR@P!KV;QC1U(a4?(IjuY|a&q-J!#uQ_Vq;!e z!=?3RVL|J)>t`4^d5& z8%DD?Tyx4S-o|i8bMUNLxW94NK~l-gt2NJ^(Niy9$)-8Cl7Ux^{BCUiHpY`&jro_% zb%COW%0uS1jrzIPN|!{xYOTn_qtCP(diuhb4n*>+nTyE2iu&?R&0ol?+fH|yTddpK z(l|+RtKrv3%dh0E4s8s+{I8!$^X#em3tP?e`^?%kG6OY5WZTJ^Mme+Rl}^C6_qq+VdI{?l5kuiAGW5nFEWb@dCvvwE1ZFxtKXn4Pg6O~ z>%RGB(RT%J>geK;`^l?*YjODEZk1!bX>}IttZuncG(U^THoC-Xy@I7_Zho4Fa&be| Ui5_NMiL8y99eQNhtFur2FL6#O-v9sr delta 6315 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 diff --git a/inst/po/zh_CN/LC_MESSAGES/data.table.mo b/inst/po/zh_CN/LC_MESSAGES/data.table.mo index 53f52641aeb05949daef10d58ed6db22cdd85884..ec7558dc0f7523becc0dda08da487733fc4cb0d1 100644 GIT binary patch delta 14614 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

wK#+=L9BdW0ORnzq)C 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 diff --git a/po/zh_CN.po b/po/zh_CN.po index 9bc2b996db..29c301cd3a 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -3924,7 +3924,7 @@ msgstr "'verbose'必须是TRUE或者FALSE" #: openmp-utils.c:70 msgid "" "This installation of data.table has not been compiled with OpenMP support.\n" -msgstr "安装的data.table并不是获得OpenMP支持的编译" +msgstr "安装的data.table并不是获得OpenMP支持的编译\n" #: openmp-utils.c:75 #, c-format From dca3e33fb63f6e9fed87d9444f7b034398087a73 Mon Sep 17 00:00:00 2001 From: Yilei <30611492+Zachary-Wu@users.noreply.github.com> Date: Thu, 12 Dec 2019 11:37:59 +0800 Subject: [PATCH 56/78] Translation yilei (#3989) * messsage * messsage * messsage * messsage * messsage * done some translation! * done it. --- po/R-zh_CN.po | 47 +++++++++++++------------ po/zh_CN.po | 95 ++++++++++++++++++++++++++++----------------------- 2 files changed, 77 insertions(+), 65 deletions(-) diff --git a/po/R-zh_CN.po b/po/R-zh_CN.po index 3f96dac5fe..599a04e97b 100644 --- a/po/R-zh_CN.po +++ b/po/R-zh_CN.po @@ -812,79 +812,82 @@ msgid "'subset' must evaluate to logical" msgstr "'subset' 必须为logical" msgid "Argument 'invert' must be logical TRUE/FALSE" -msgstr "" +msgstr " 'invert' 的参数是逻辑值,必须是 TRUE/FALSE" msgid "x argument must be a data.table" -msgstr "" +msgstr "参数 x 必须是一个 data.table" msgid "group length is 0 but data nrow > 0" -msgstr "" +msgstr "分组长度为0,但 data nrow > 0" msgid "" "passing 'f' argument together with 'by' is not allowed, use 'by' when split " "by column in data.table and 'f' when split by external factor" -msgstr "" +msgstr "不可同时指定参数 'f' 和参数 'by' ,当利用 data.table" "的纵列进行数据分割时,请使用参数 'by';"" +"当利用外部因子进行数据分割时,请使用参数 'f'" msgid "Either 'by' or 'f' argument must be supplied" -msgstr "" +msgstr "必须提供参数 'by' 或参数 'f'" msgid "Column '.ll.tech.split' is reserved for split.data.table processing" -msgstr "" +msgstr "为 split.data.table 进程,纵列 '.ll.tech.split' 被保存" msgid "Column '.nm.tech.split' is reserved for split.data.table processing" -msgstr "" +msgstr "为 split.data.table 进程,纵列 '.nm.tech.split' 被保存" msgid "Argument 'by' must refer to column names in x" -msgstr "" +msgstr "参数 'by' 只适用于 x 中的列名" msgid "" "Argument 'by' must refer only to atomic-type columns, but the following " "columns are non-atomic:" -msgstr "" +msgstr "参数 'by' 只适用于原子类型的纵列,但现在关联的纵列不是原子类型" msgid "" "x is not a data.table. Shallow copy is a copy of the vector of column " "pointers (only), so is only meaningful for data.table" -msgstr "" +msgstr "浅拷贝(shallow copy)只是列指针向量的拷贝,因此仅对 data.table 有意义,而 x 不是 data.table" msgid "setalloccol attempting to modify `*tmp*`" -msgstr "" +msgstr "setalloccol 试图修改 '*tmp*'" msgid "" "Input is a length=1 logical that points to the same address as R's global " "value. Therefore the attribute has not been set by reference, rather on a " "copy. You will need to assign the result back to a variable. See issue #1281." -msgstr "" +msgstr "输入值是一个指向与R全局值相同位置的长度为1的逻辑" +"值。因此,该属性是通过副本,而不是reference 的形式设置。" +"您需要将结果分配回一个变量,参看 issue #1281" msgid "x is not a data.table or data.frame" -msgstr "" +msgstr "x 不是 data.table 或 data.frame." msgid "x has" -msgstr "" +msgstr "x 有" msgid "columns but its names are length" -msgstr "" +msgstr " 列,但其列名的数为 " msgid "Passed a vector of type '" -msgstr "" +msgstr "传递了一个向量,向量类型是;" msgid "'. Needs to be type 'character'." -msgstr "" +msgstr ". 需要是 "character" 类型." msgid "names to a" -msgstr "" +msgstr "命名" msgid "column data.table" -msgstr "" +msgstr "data.table 的纵列" msgid "When 'new' is provided, 'old' must be provided too" -msgstr "" +msgstr "当提供参数 'new' 时,也必须要提供参数 'old' " msgid "'new' is not a character vector or a function" -msgstr "" +msgstr "'new' 既不是特征向量也不是 function" msgid "NA in 'new' at positions" -msgstr "" +msgstr "在 'new' 中有NA值" msgid "Some duplicates exist in 'old':" msgstr "在'old' 中存在重复名称" diff --git a/po/zh_CN.po b/po/zh_CN.po index ae558902b2..68e3dea6de 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -1369,201 +1369,209 @@ msgid "" "molten data value column will be of type '%s'. All measure variables not of " "type '%s' will be coerced too. Check DETAILS in ?melt.data.table for more on " "coercion.\n" -msgstr "" +msgstr "'measure.vars'[%s] 的数据类型不完全相同。" +"由于融合后的数据将是'%s'类型,所以变量中不是'%s'类型" +"的数将被强制转换为'%s'类型,更多关于强制转换的信息" +"请查看 ?melt.data.table.\n" #: fmelt.c:387 #, c-format msgid "" "The molten data value type is a list at item %d. 'na.rm=TRUE' is ignored.\n" -msgstr "" +msgstr "在项目%d中,融合后的数值类型是列表," +"参数'na.rm = TRUE'被自动忽略\n" #: fmelt.c:490 #, c-format msgid "Unknown column type '%s' for column '%s'." -msgstr "" +msgstr "'%s'列是未知的纵列类型" #: fmelt.c:514 #, c-format msgid "Internal error: fmelt.c:getvarcols %d %d" -msgstr "" +msgstr "内部错误:fmelt.c : getvarcols %d %d" #: fmelt.c:662 #, c-format msgid "Unknown column type '%s' for column '%s' in 'data'" -msgstr "" +msgstr "'data' 中的'%s'列是未知列类型" #: fmelt.c:673 msgid "Input is not of type VECSXP, expected a data.table, data.frame or list" -msgstr "" +msgstr "输入类型不是 VECSXP,输入类型应该是 data.table," "data.frame 或 list。" #: fmelt.c:674 msgid "Argument 'value.factor' should be logical TRUE/FALSE" -msgstr "" +msgstr "'value.factor' 的参数是逻辑值,必须是 TRUE 或" "FALSE" #: fmelt.c:675 msgid "Argument 'variable.factor' should be logical TRUE/FALSE" -msgstr "" +msgstr "'variable.factor' 的参数是逻辑值,必须是 TRUE 或" +"FALSE" #: fmelt.c:676 msgid "Argument 'na.rm' should be logical TRUE/FALSE." -msgstr "" +msgstr "'na.rm' 的参数是逻辑值,必须是 TRUE 或 FALSE" #: fmelt.c:677 msgid "Argument 'variable.name' must be a character vector" -msgstr "" +msgstr "'variable.name' 必须是字符串类型" #: fmelt.c:678 msgid "Argument 'value.name' must be a character vector" -msgstr "" +msgstr "'value.name' 必须是字符串类型" #: fmelt.c:679 msgid "Argument 'verbose' should be logical TRUE/FALSE" -msgstr "" +msgstr "'verbose' 的参数是逻辑值,必须是 TRUE 或 FALSE" #: fmelt.c:683 msgid "ncol(data) is 0. Nothing to melt. Returning original data.table." -msgstr "" +msgstr "ncol(data)为0,返回原 data.table" #: fmelt.c:688 msgid "names(data) is NULL. Please report to data.table-help" -msgstr "" +msgstr "names(data)为NULL,请向 data.table-help 报告" #: forder.c:106 #, c-format msgid "Failed to realloc thread private group size buffer to %d*4bytes" -msgstr "" +msgstr "无法重新将线程私有的组大小缓冲区分割为%d*4字节" #: forder.c:120 #, c-format msgid "Failed to realloc group size result to %d*4bytes" -msgstr "" +msgstr "分配%d*4字节内存时失败。" #: forder.c:263 #, c-format msgid "" "Logical error. counts[0]=%d in cradix but should have been decremented to 0. " "radix=%d" -msgstr "" +msgstr "逻辑错误:在 cradix 中的 counts[0] 应该为0,而不是%d" +"radix=%d" #: forder.c:278 msgid "Failed to alloc cradix_counts" -msgstr "" +msgstr "分配 cradix_counts 失败" #: forder.c:280 msgid "Failed to alloc cradix_tmp" -msgstr "" +msgstr "分配 cradix_tmp 失败" #: forder.c:291 #, c-format msgid "" "Internal error: ustr isn't empty when starting range_str: ustr_n=%d, " "ustr_alloc=%d" -msgstr "" +msgstr "内部错误:开始运行 range_str 时,ustr 未清空:ustr_n=%d," +"ustr_alloc=%d" #: forder.c:292 msgid "Internal error: ustr_maxlen isn't 0 when starting range_str" -msgstr "" +msgstr "内部错误:开始 range_str 时,ustr_maxlen 不是0" #: forder.c:312 #, c-format msgid "Unable to realloc %d * %d bytes in range_str" -msgstr "" +msgstr "在 range_str 中,无法重新分配%d * %d字节" #: forder.c:330 msgid "Failed to alloc ustr3 when converting strings to UTF8" -msgstr "" +msgstr "将字符串转换为 UTF8 格式时,无法分配ustr3" #: forder.c:348 msgid "Failed to alloc tl when converting strings to UTF8" -msgstr "" +msgstr "将字符串转换为 UTF8 格式时,无法分配 tl" #: forder.c:377 msgid "Must an integer or numeric vector length 1" -msgstr "" +msgstr "必须是长度为1的整数或数字向量" #: forder.c:378 msgid "Must be 2, 1 or 0" -msgstr "" +msgstr "必须是2、1或者0" #: forder.c:412 msgid "Unknown non-finite value; not NA, NaN, -Inf or +Inf" -msgstr "" +msgstr "未知的取值范围,不属于 NA, NaN, -Inf 或 +Inf" #: forder.c:434 msgid "" "Internal error: input is not either a list of columns, or an atomic vector." -msgstr "" +msgstr "内部错误:输入值既不是列表中的一列,也不是原子向量" #: forder.c:436 msgid "" "Internal error: input is an atomic vector (not a list of columns) but by= is " "not NULL" -msgstr "" +msgstr "内部错误:输入值是一个原子向量(而不是列表中的一列),但是" "'by' 的参数是列表而不是NULL" #: forder.c:438 msgid "" "Input is an atomic vector (not a list of columns) but order= is not a length " "1 integer" -msgstr "" +msgstr "输入值是一个原子向量(而不是列表中的一列),但参数 order" "不是长度为1的整数" #: forder.c:440 #, c-format msgid "forder.c received a vector type '%s' length %d\n" -msgstr "" +msgstr "forder.c 接收到一个类型为'%s'长度为%d的向量\n" #: forder.c:448 #, c-format msgid "forder.c received %d rows and %d columns\n" -msgstr "" +msgstr "forder.c 接收到%d行和%d列\n" #: forder.c:451 msgid "Internal error: DT is an empty list() of 0 columns" -msgstr "" +msgstr "内部错误:DT 是一个0列的空 list" #: forder.c:453 #, c-format msgid "" "Internal error: DT has %d columns but 'by' is either not integer or is " "length 0" -msgstr "" +msgstr "内部错误:DT 内部有%d列,但参数 "by" 不是整数或长度为0" #: forder.c:455 #, c-format msgid "" "Either order= is not integer or its length (%d) is different to by='s length " "(%d)" -msgstr "" +msgstr "参数 order 不是整数,或者它的长度(%d)与参数 'by' 指定的" +"长度不同" #: forder.c:461 #, c-format msgid "internal error: 'by' value %d out of range [1,%d]" -msgstr "" +msgstr "内部错误:参数 'by' 的值%d超出[1,%d]的范围" #: forder.c:463 #, c-format msgid "Column %d is length %d which differs from length of column 1 (%d)\n" -msgstr "" +msgstr "列%d的长度是%d,与第1列的长度(%d)不同\n" #: forder.c:467 msgid "retGrp must be TRUE or FALSE" -msgstr "" +msgstr "retGrp 的参数是逻辑值,必须是 TRUE 或 FALSE" #: forder.c:470 msgid "sort must be TRUE or FALSE" -msgstr "" +msgstr " sort 的参数是逻辑值,必须是 TRUE 或 FALSE" #: forder.c:473 msgid "At least one of retGrp= or sort= must be TRUE" -msgstr "" +msgstr "retGrp 和sort 的参数中,至少一个必须是 TRUE" #: forder.c:475 msgid "na.last must be logical TRUE, FALSE or NA of length 1" -msgstr "" +msgstr "na.last 的参数必须是逻辑值 TRUE, FALSE 或 NA " #: forder.c:519 #, c-format msgid "Item %d of order (ascending/descending) is %d. Must be +1 or -1." -msgstr "" +msgstr "排序(ascending/descending)选项%d是%d,必须是+1 or -1" #: forder.c:545 #, c-format @@ -1572,7 +1580,8 @@ msgid "" "*** Column %d passed to forder is a date stored as an 8 byte double but no " "fractions are present. Please consider a 4 byte integer date such as IDate " "to save space and time.\n" -msgstr "" +msgstr ""\n" +"***传递给 forder 的%d列是一个没有小数的8字节 double 类型的日期数""据,请考虑使用4字节的整数日期(例如IDate)以节省空间和时间\n" #: forder.c:561 #, c-format From f54a69d3e63cfbb6349cbd1cc2c6000c395ff1ae Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Thu, 12 Dec 2019 11:55:12 +0800 Subject: [PATCH 57/78] updating some small misses from last pull --- inst/po/en@quot/LC_MESSAGES/R-data.table.mo | Bin 88988 -> 88988 bytes inst/po/en@quot/LC_MESSAGES/data.table.mo | Bin 140270 -> 140270 bytes inst/po/zh_CN/LC_MESSAGES/R-data.table.mo | Bin 46724 -> 49700 bytes inst/po/zh_CN/LC_MESSAGES/data.table.mo | Bin 68512 -> 74861 bytes po/R-data.table.pot | 4 ++-- po/R-zh_CN.po | 4 ++-- po/data.table.pot | 4 ++-- po/zh_CN.po | 18 +++++++++--------- 8 files changed, 15 insertions(+), 15 deletions(-) diff --git a/inst/po/en@quot/LC_MESSAGES/R-data.table.mo b/inst/po/en@quot/LC_MESSAGES/R-data.table.mo index 28d0f705edfa4d54f4a4174e2dc85995921f521c..e452c2e20a36f662148df7ce7b40dcc9f4b8da23 100644 GIT binary patch delta 29 lcmbQUopsK3)(r|r7%e9&9+BoSG*U1$v@$W=>~bVxIsl-a3P=C| delta 29 lcmbQUopsK3)(r|r7|kau9+BoSuuw2Gv@$Z->~bVxIsl-b3P=C| diff --git a/inst/po/en@quot/LC_MESSAGES/data.table.mo b/inst/po/en@quot/LC_MESSAGES/data.table.mo index cc8c90cade8d6cf8bb4b34e565ac1da93a41a873..849a67326d4fbd72c88c90fb31f405c10a11a265 100644 GIT binary patch delta 33 pcmaENoa5bbj)pCaGFpt5(`B_7jW`UA6bucmOboY&YcWp$2>`?$3YGu> delta 33 pcmaENoa5bbj)pCaGFpu0(`B_7jW`S}6bvn_Of9#EYcWp$2>`^o3aJ19 diff --git a/inst/po/zh_CN/LC_MESSAGES/R-data.table.mo b/inst/po/zh_CN/LC_MESSAGES/R-data.table.mo index e8002f19c38c14a7b6907ab378032f8bc2302068..98949cbc9c64640b986c01d3393b694d842da03a 100644 GIT binary patch delta 9672 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 bv9+Lb8LzaK1v0bT)z+KE8c5*h!>j%Ww6b1E delta 6872 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 WvF-JCw)H+(WZXK~&|=$g*!n*zUa>&{ diff --git a/inst/po/zh_CN/LC_MESSAGES/data.table.mo b/inst/po/zh_CN/LC_MESSAGES/data.table.mo index ec7558dc0f7523becc0dda08da487733fc4cb0d1..a9fd5abdf32ba29e2e68bf6cb6eeffde28d2745b 100644 GIT binary patch delta 15159 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 dG!K0JYtJgJ&41pxd5g1+xuzIelwR{p(HdIA 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 J1\n" "Language-Team: LANGUAGE \n" diff --git a/po/R-zh_CN.po b/po/R-zh_CN.po index 599a04e97b..56e8bf1322 100644 --- a/po/R-zh_CN.po +++ b/po/R-zh_CN.po @@ -823,7 +823,7 @@ msgstr "分组长度为0,但 data nrow > 0" msgid "" "passing 'f' argument together with 'by' is not allowed, use 'by' when split " "by column in data.table and 'f' when split by external factor" -msgstr "不可同时指定参数 'f' 和参数 'by' ,当利用 data.table" "的纵列进行数据分割时,请使用参数 'by';"" +msgstr "不可同时指定参数 'f' 和参数 'by' ,当利用 data.table" "的纵列进行数据分割时,请使用参数 'by';" "当利用外部因子进行数据分割时,请使用参数 'f'" msgid "Either 'by' or 'f' argument must be supplied" @@ -872,7 +872,7 @@ msgid "Passed a vector of type '" msgstr "传递了一个向量,向量类型是;" msgid "'. Needs to be type 'character'." -msgstr ". 需要是 "character" 类型." +msgstr ". 需要是 'character' 类型." msgid "names to a" msgstr "命名" diff --git a/po/data.table.pot b/po/data.table.pot index 0000e38385..ccec7d1f08 100644 --- a/po/data.table.pot +++ b/po/data.table.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: data.table 1.12.7\n" +"Project-Id-Version: data.table 1.12.9\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-12-08 18:59+0800\n" +"POT-Creation-Date: 2019-12-12 11:41+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/po/zh_CN.po b/po/zh_CN.po index 68e3dea6de..5da4d16dea 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -1369,9 +1369,9 @@ msgid "" "molten data value column will be of type '%s'. All measure variables not of " "type '%s' will be coerced too. Check DETAILS in ?melt.data.table for more on " "coercion.\n" -msgstr "'measure.vars'[%s] 的数据类型不完全相同。" -"由于融合后的数据将是'%s'类型,所以变量中不是'%s'类型" -"的数将被强制转换为'%s'类型,更多关于强制转换的信息" +msgstr "'measure.vars'[%1$s] 的数据类型不完全相同。" +"由于融合后的数据将是'%2$s'类型,所以变量中不是'%3$s'类型" +"的数将被强制转换为'%2$s'类型,更多关于强制转换的信息" "请查看 ?melt.data.table.\n" #: fmelt.c:387 @@ -1384,7 +1384,7 @@ msgstr "在项目%d中,融合后的数值类型是列表," #: fmelt.c:490 #, c-format msgid "Unknown column type '%s' for column '%s'." -msgstr "'%s'列是未知的纵列类型" +msgstr "'%s'列是未知的纵列类型: '%s'" #: fmelt.c:514 #, c-format @@ -1394,7 +1394,7 @@ msgstr "内部错误:fmelt.c : getvarcols %d %d" #: fmelt.c:662 #, c-format msgid "Unknown column type '%s' for column '%s' in 'data'" -msgstr "'data' 中的'%s'列是未知列类型" +msgstr "'data' 中的'%s'列是未知列类型:'%s'" #: fmelt.c:673 msgid "Input is not of type VECSXP, expected a data.table, data.frame or list" @@ -1436,7 +1436,7 @@ msgstr "names(data)为NULL,请向 data.table-help 报告" #: forder.c:106 #, c-format msgid "Failed to realloc thread private group size buffer to %d*4bytes" -msgstr "无法重新将线程私有的组大小缓冲区分割为%d*4字节" +msgstr "无法将线程私有的组大小缓冲区重新分配为%d*4字节" #: forder.c:120 #, c-format @@ -1532,7 +1532,7 @@ msgstr "内部错误:DT 是一个0列的空 list" msgid "" "Internal error: DT has %d columns but 'by' is either not integer or is " "length 0" -msgstr "内部错误:DT 内部有%d列,但参数 "by" 不是整数或长度为0" +msgstr "内部错误:DT 内部有%d列,但参数 'by' 不是整数或长度为0" #: forder.c:455 #, c-format @@ -1540,7 +1540,7 @@ msgid "" "Either order= is not integer or its length (%d) is different to by='s length " "(%d)" msgstr "参数 order 不是整数,或者它的长度(%d)与参数 'by' 指定的" -"长度不同" +"长度(%d)不同" #: forder.c:461 #, c-format @@ -1580,7 +1580,7 @@ msgid "" "*** Column %d passed to forder is a date stored as an 8 byte double but no " "fractions are present. Please consider a 4 byte integer date such as IDate " "to save space and time.\n" -msgstr ""\n" +msgstr "\n" "***传递给 forder 的%d列是一个没有小数的8字节 double 类型的日期数""据,请考虑使用4字节的整数日期(例如IDate)以节省空间和时间\n" #: forder.c:561 From 533e842e8e093bf5dc18a99a6ad24253ae6c6a3d Mon Sep 17 00:00:00 2001 From: Kun Ren Date: Sat, 14 Dec 2019 15:16:58 +0800 Subject: [PATCH 58/78] Translation to zh_CN assigned to group 12 (#3987) * Update translations * Minor refine * Minor reformatting --- po/R-zh_CN.po | 42 ++++++++++++++++-------- po/zh_CN.po | 90 +++++++++++++++++++++++++++++++-------------------- 2 files changed, 83 insertions(+), 49 deletions(-) diff --git a/po/R-zh_CN.po b/po/R-zh_CN.po index 56e8bf1322..fe7ed248db 100644 --- a/po/R-zh_CN.po +++ b/po/R-zh_CN.po @@ -1196,18 +1196,21 @@ msgid "Internal error -- empty rhsnames in dcast; please report" msgstr "" msgid "The melt generic in data.table has been passed a" -msgstr "" +msgstr "data.table 中的 melt 泛型函数被传递了" msgid "" ", but data.table::melt currently only has a method for data.tables. Please " "confirm your input is a data.table, with setDT(" -msgstr "" +msgstr ",然而 data.table::melt 当前只支持输入 data.table 对象。请确保输入的是一个 " +" data.table 对象,可以用 setDT(" msgid "" "). If you intend to use a method from reshape2, try installing that package " "first, but do note that reshape2 is deprecated and you should be migrating " "your code away from using it." msgstr "" +")。如果确实要使用 reshape2 中的方法,首先要安装这个包。需要注意,reshape2 已经" +"弃用,你应该将代码迁移并且不再使用它。" msgid "" "and will attempt to redirect to the relevant reshape2 method; please note " @@ -1215,69 +1218,80 @@ msgid "" "To continue using melt methods from reshape2 while both libraries are " "attached, e.g. melt.list, you can prepend the namespace like reshape2::melt(" msgstr "" +"即将转向到 reshape2 中的相关方法;请注意 reshape2 已经弃用,这个转向也已经弃用。" +"如果要在 data.table 和 reshape2 同时附着的情况下继续使用 reshape2 中的 melt 方法," +"(例如 melt.list),你可以把命名空间写在函数名称前面,例如 reshape2::melt(" msgid "Input patterns must be of type character." -msgstr "" +msgstr "输入的 patterns 必须是字符类型。" msgid "'data' must be a data.table" -msgstr "" +msgstr "'data' 必须是一个 data.table" msgid "'value.name' provided in both 'measure.vars'" -msgstr "" +msgstr "'value.name' 同时出现在了 'measure.vars'" msgid "and 'value.name argument'; value provided in" -msgstr "" +msgstr "和 'value.name' 参数中;'measure.vars' 中的值" msgid "'measure.vars' is given precedence." -msgstr "" +msgstr "将被优先使用。" msgid "Please provide a name to each element of 'measure.vars'." -msgstr "" +msgstr "请为 'measure.vars' 中的每个元素提供一个名称。" msgid "" "y and x must both be data.tables. Use `setDT()` to convert list/data.frames " "to data.tables by reference or as.data.table() to convert to data.tables by " "copying." msgstr "" +"y 和 x 必须都是 data.table 对象。用 `setDT()` 可以把列表/数据框引用转换为 " +" data.table,或者用 as.data.table() 进行复制转换。" msgid "maxgap must be a non-negative integer value of length 1" -msgstr "" +msgstr "maxgap 必须是一个长度为1的非负整数" msgid "minoverlap must be a positive integer value of length 1" -msgstr "" +msgstr "minoverlap 必须是一个长度为1的正整数" msgid "which must be a logical vector of length 1. Either TRUE/FALSE" -msgstr "" +msgstr "which 必须是一个长度为1的逻辑向量(TRUE/FALSE)" msgid "nomatch must either be NA or NULL" -msgstr "" +msgstr "nomatch 必须是 NA 或 NULL" msgid "maxgap and minoverlap arguments are not yet implemented." -msgstr "" +msgstr "maxgap 和 minoverlap 参数还未实现。" msgid "" "'y' must be keyed (i.e., sorted, and, marked as sorted). Call setkey(y, ...) " "first, see ?setkey. Also check the examples in ?foverlaps." msgstr "" +"'y' 必须有主键(已经排序并且标记为已排序)。请先用 setkey(y, ...) 设置主键," +"可以参考 ?setkey 以及 ?foverlaps 中提供的例子。" msgid "" "'by.x' and 'by.y' should contain at least two column names (or numbers) each " "- corresponding to 'start' and 'end' points of intervals. Please see ?" "foverlaps and examples for more info." msgstr "" +"'by.x' 和 'by.y' 每个应当包含至少两个列名(或序号)," +"分别对应区间的起始点 'start' 和 结束点 'end'。请参考 ?foverlaps 以及提供的例子。" msgid "" "Invalid numeric value for 'by.x'; it should be a vector with values 1 <= by." "x <= length(x)" msgstr "" +"无效的 'by.x' 数值,应该是一个向量,其中的值满足 1 <= by.x <= length(x)" msgid "" "Invalid numeric value for 'by.y'; it should be a vector with values 1 <= by." "y <= length(y)" msgstr "" +"无效的 'by.y' 数值,应当满足 1 <= by.y <= length(y)" msgid "A non-empty vector of column names or numbers is required for by.x" -msgstr "" +msgstr "'by.x' 必须是一个非空向量,包含列名或者序号" msgid "A non-empty vector of column names or numbers is required for by.y" msgstr "" diff --git a/po/zh_CN.po b/po/zh_CN.po index 5da4d16dea..9d7bb5a273 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -2349,39 +2349,39 @@ msgstr "" #: fread.c:1825 #, c-format msgid "Internal error: sampleLines(%) > allocnrow(%)" -msgstr "" +msgstr "内部错误:sampleLines(%) > allocnrow(%)" #: fread.c:1829 #, c-format msgid " Alloc limited to lower nrows=% passed in.\n" -msgstr "" +msgstr " 分配被限制在输入的更小的 nrows=% 值上。\n" #: fread.c:1841 msgid "[08] Assign column names\n" -msgstr "" +msgstr "[08] 指定列名\n" #: fread.c:1849 #, c-format msgid "Unable to allocate %d*%d bytes for column name pointers: %s" -msgstr "" +msgstr "无法分配 %d*%d 字节给列名指针: %s" #: fread.c:1871 #, c-format msgid "Internal error: reading colnames ending on '%c'" -msgstr "" +msgstr "内部错误:读取列名终止于 '%c'" #: fread.c:1889 msgid "[09] Apply user overrides on column types\n" -msgstr "" +msgstr "[09] 使用用户指定的列类型\n" #: fread.c:1893 msgid " Cancelled by user: userOverride() returned false." -msgstr "" +msgstr " 用户已取消:userOverride() 返回 false。" #: fread.c:1903 #, c-format msgid "Failed to allocate %d bytes for size array: %s" -msgstr "" +msgstr "无法分配 %d 字节给 size 数组:%s" #: fread.c:1910 #, c-format @@ -2390,34 +2390,36 @@ msgid "" "ignored. Only overrides to a higher type are currently supported. If this " "was intended, please coerce to the lower type afterwards." msgstr "" +"试图覆盖第 %d 列 <<%.*s>>,将内部类型 '%s' 降级为 '%s' 的操作被忽略。只支持将列类型" +"升为更高阶的类型。如果确定此操作,请完成之后再转换类型。" #: fread.c:1924 #, c-format msgid " After %d type and %d drop user overrides : %s\n" -msgstr "" +msgstr " 经过 %d 类型和 %d 丢弃用户覆盖:%s\n" #: fread.c:1932 msgid "[10] Allocate memory for the datatable\n" -msgstr "" +msgstr "[10] 分配内存给 datatable\n" #: fread.c:1933 #, c-format msgid " Allocating %d column slots (%d - %d dropped) with % rows\n" -msgstr "" +msgstr " 正在分配 %d 列位置(%d - %d 已丢弃),% 行\n" #: fread.c:1987 #, c-format msgid "Buffer size % is too large\n" -msgstr "" +msgstr "缓冲长度 % 过大" #: fread.c:1990 msgid "[11] Read the data\n" -msgstr "" +msgstr "[11] 读取数据\n" #: fread.c:1993 #, c-format msgid " jumps=[%d..%d), chunk_size=%, total_size=%\n" -msgstr "" +msgstr " jumps=[%d..%d),chunk_size=%,total_size=%\n" #: fread.c:2005 #, c-format @@ -2429,7 +2431,7 @@ msgstr "" msgid "" "Column %d (\"%.*s\") bumped from '%s' to '%s' due to <<%.*s>> on row " "%\n" -msgstr "" +msgstr "第 %d 列(\"%.*s\") 发生了从 '%s' 到 '%s' 的类型转换,由于 <<%.*s>> 出现在第 % 行\n" #: fread.c:2262 #, c-format @@ -2441,19 +2443,19 @@ msgstr "" #: fread.c:2335 #, c-format msgid "" -" Too few rows allocated. Allocating additional % rows (now nrows=" -"%) and continue reading from jump %d\n" -msgstr "" +" Too few rows allocated. Allocating additional % rows (now nrows=%) " +"and continue reading from jump %d\n" +msgstr " 分配的行数太少。正在分配额外的 % 行(当前 nrows=%),并从跳跃 %d 继续读取\n" #: fread.c:2342 #, c-format msgid " Restarting team from jump %d. nSwept==%d quoteRule==%d\n" -msgstr "" +msgstr " 从跳跃 %d 重启组。nSwept==%d quoteRule==%d\n" #: fread.c:2362 #, c-format msgid " %d out-of-sample type bumps: %s\n" -msgstr "" +msgstr " %d 样本外类型变更:%s\n" #: fread.c:2398 #, c-format @@ -2461,24 +2463,25 @@ msgid "" "Read % rows x %d columns from %s file in %02d:%06.3f wall clock " "time\n" msgstr "" +"读取 %llu 行 x %d 列,从 %s 文件(时钟时间 %02d:%06.3f)\n" #: fread.c:2405 msgid "[12] Finalizing the datatable\n" -msgstr "" +msgstr "[12] 最后定型 datatable" #: fread.c:2406 msgid " Type counts:\n" -msgstr "" +msgstr " 类型数量:\n" #: fread.c:2408 #, c-format msgid "%10d : %-9s '%c'\n" -msgstr "" +msgstr "%10d : %-9s '%c'\n" #: fread.c:2424 #, c-format msgid "Discarded single-line footer: <<%s>>" -msgstr "" +msgstr "丢弃末尾行:<<%s>>" #: fread.c:2429 #, c-format @@ -2486,6 +2489,8 @@ msgid "" "Stopped early on line %. Expected %d fields but found %d. Consider " "fill=TRUE and comment.char=. First discarded non-empty line: <<%s>>" msgstr "" +"在第 %llu 行提前终止。预期有 %d 个字段但只找到 %d 个。可以考虑设置 " +"fill=TRUE 和 comment.char=。 首个丢弃的非空行:<<%s>>" #: fread.c:2435 #, c-format @@ -2494,30 +2499,33 @@ msgid "" "%: <<%s>>. If the fields are not quoted (e.g. field separator does " "not appear within any field), try quote=\"\" to avoid this warning." msgstr "" +"发现并修复了样本外的错误引号。首次在第 %llu 行修复:<<%s>>。" +"如果这些字段不在引号内(例如:字段间隔符没有在任何一个字段中出现)," +"尝试用 quote=\"\" 来避免该警告。" #: fread.c:2439 msgid "=============================\n" -msgstr "" +msgstr "=============================\n" #: fread.c:2441 #, c-format msgid "%8.3fs (%3.0f%%) Memory map %.3fGB file\n" -msgstr "" +msgstr "%8.3fs (%3.0f%%) 内存映射 %.3fGB 文件\n" #: fread.c:2442 #, c-format msgid "%8.3fs (%3.0f%%) sep=" -msgstr "" +msgstr "%8.3fs (%3.0f%%) sep=" #: fread.c:2444 #, c-format msgid " ncol=%d and header detection\n" -msgstr "" +msgstr " ncol=%d 和表头检测\n" #: fread.c:2445 #, c-format msgid "%8.3fs (%3.0f%%) Column type detection using % sample rows\n" -msgstr "" +msgstr "%8.3fs (%3.0f%%) 列类型检测基于 % 个样本行\n" #: fread.c:2447 #, c-format @@ -2525,6 +2533,8 @@ msgid "" "%8.3fs (%3.0f%%) Allocation of % rows x %d cols (%.3fGB) of which " "% (%3.0f%%) rows used\n" msgstr "" +"%8.3fs (%3.0f%%) %llu 行 x %d 列 (%.3fGB) 的分配中已使用 %llu " +"(%3.0f%%) 行\n" #: fread.c:2451 #, c-format @@ -2532,67 +2542,77 @@ msgid "" "%8.3fs (%3.0f%%) Reading %d chunks (%d swept) of %.3fMB (each chunk %d rows) " "using %d threads\n" msgstr "" +"%8.3fs (%3.0f%%) 正在读取 %d 个块 (%d 已扫描) of %.3fMB (每个块 %d 行) " +"使用 %d 个线程\n" #: fread.c:2453 #, c-format msgid "" " + %8.3fs (%3.0f%%) Parse to row-major thread buffers (grown %d times)\n" msgstr "" +" + %8.3fs (%3.0f%%) 解析到行处理线程的缓冲区(已增长 %d 次)\n" #: fread.c:2454 #, c-format msgid " + %8.3fs (%3.0f%%) Transpose\n" -msgstr "" +msgstr " + %8.3fs (%3.0f%%) 转置\n" #: fread.c:2455 #, c-format msgid " + %8.3fs (%3.0f%%) Waiting\n" -msgstr "" +msgstr " + %8.3fs (%3.0f%%) 正在等待\n" #: fread.c:2456 #, c-format msgid "" "%8.3fs (%3.0f%%) Rereading %d columns due to out-of-sample type exceptions\n" msgstr "" +"%8.3fs (%3.0f%%) 正在重读 %d 列,由于样本外类型异常\n" #: fread.c:2458 #, c-format msgid "%8.3fs Total\n" -msgstr "" +msgstr "%8.3fs 总计\n" #: freadR.c:84 msgid "" "Internal error: freadR input not a single character string: a filename or " "the data itself. Should have been caught at R level." msgstr "" +"内部错误:freadR 输入的不是单个字符串:文件名或者数据文本。" +"该错误本应在 R 中被捕获。" #: freadR.c:92 msgid "" "Input contains a \\n or is \")\". Taking this to be text input (not a " "filename)\n" msgstr "" +"输入中包含 \\n 或者是 \")\"。输入将被当做数据文本(而非" +"文件名)\n" #: freadR.c:95 msgid "Input contains no \\n. Taking this to be a filename to open\n" -msgstr "" +msgstr "输入中不包含 \\n。输入将被当做文件名打开。" #: freadR.c:101 msgid "" "Internal error: freadR sep not a single character. R level catches this." msgstr "" +"内部错误:freadR sep 不是单个字符。R 中应该捕获此错误。" #: freadR.c:105 msgid "" "Internal error: freadR dec not a single character. R level catches this." msgstr "" +"内部错误:freadR dec 不是单个字符。R 中应该捕获此错误。" #: freadR.c:112 msgid "quote= must be a single character, blank \"\", or FALSE" -msgstr "" +msgstr "quote= 必须是单个字符,空白 \"\",或者 FALSE" #: freadR.c:137 msgid "Internal error: skip not integer or string in freadR.c" -msgstr "" +msgstr "内部错误:freadR.c 中 skip 非整数或字符串" #: freadR.c:140 #, c-format From 2a4f6e6ae0ad8cfecefb436f530fa3c7975e3766 Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Sat, 14 Dec 2019 15:27:13 +0800 Subject: [PATCH 59/78] no longer using %llu, other small tidying --- inst/po/zh_CN/LC_MESSAGES/R-data.table.mo | Bin 49700 -> 53956 bytes inst/po/zh_CN/LC_MESSAGES/data.table.mo | Bin 74861 -> 81723 bytes po/zh_CN.po | 14 +++++++------- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/inst/po/zh_CN/LC_MESSAGES/R-data.table.mo b/inst/po/zh_CN/LC_MESSAGES/R-data.table.mo index 98949cbc9c64640b986c01d3393b694d842da03a..e5bec5d73928dc376c78b33fc825a4366080f376 100644 GIT binary patch delta 11478 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 So$79hJ6-8)X>sA1{eJ<}fB9?x diff --git a/inst/po/zh_CN/LC_MESSAGES/data.table.mo b/inst/po/zh_CN/LC_MESSAGES/data.table.mo index a9fd5abdf32ba29e2e68bf6cb6eeffde28d2745b..96af413eba7336e0dec655d80b560bfd86b449ad 100644 GIT binary patch delta 16655 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 GxBU;ZgR40J delta 10171 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 d)^^0LI628SytpjMR 行\n" #: fread.c:1987 #, c-format msgid "Buffer size % is too large\n" -msgstr "缓冲长度 % 过大" +msgstr "缓冲长度 % 过大\n" #: fread.c:1990 msgid "[11] Read the data\n" @@ -2463,11 +2463,11 @@ msgid "" "Read % rows x %d columns from %s file in %02d:%06.3f wall clock " "time\n" msgstr "" -"读取 %llu 行 x %d 列,从 %s 文件(时钟时间 %02d:%06.3f)\n" +"读取 % 行 x %d 列,从 %s 文件(时钟时间 %02d:%06.3f)\n" #: fread.c:2405 msgid "[12] Finalizing the datatable\n" -msgstr "[12] 最后定型 datatable" +msgstr "[12] 最后定型 datatable\n" #: fread.c:2406 msgid " Type counts:\n" @@ -2489,7 +2489,7 @@ msgid "" "Stopped early on line %. Expected %d fields but found %d. Consider " "fill=TRUE and comment.char=. First discarded non-empty line: <<%s>>" msgstr "" -"在第 %llu 行提前终止。预期有 %d 个字段但只找到 %d 个。可以考虑设置 " +"在第 % 行提前终止。预期有 %d 个字段但只找到 %d 个。可以考虑设置 " "fill=TRUE 和 comment.char=。 首个丢弃的非空行:<<%s>>" #: fread.c:2435 @@ -2499,7 +2499,7 @@ msgid "" "%: <<%s>>. If the fields are not quoted (e.g. field separator does " "not appear within any field), try quote=\"\" to avoid this warning." msgstr "" -"发现并修复了样本外的错误引号。首次在第 %llu 行修复:<<%s>>。" +"发现并修复了样本外的错误引号。首次在第 % 行修复:<<%s>>。" "如果这些字段不在引号内(例如:字段间隔符没有在任何一个字段中出现)," "尝试用 quote=\"\" 来避免该警告。" @@ -2533,7 +2533,7 @@ msgid "" "%8.3fs (%3.0f%%) Allocation of % rows x %d cols (%.3fGB) of which " "% (%3.0f%%) rows used\n" msgstr "" -"%8.3fs (%3.0f%%) %llu 行 x %d 列 (%.3fGB) 的分配中已使用 %llu " +"%8.3fs (%3.0f%%) % 行 x %d 列 (%.3fGB) 的分配中已使用 % " "(%3.0f%%) 行\n" #: fread.c:2451 @@ -2592,7 +2592,7 @@ msgstr "" #: freadR.c:95 msgid "Input contains no \\n. Taking this to be a filename to open\n" -msgstr "输入中不包含 \\n。输入将被当做文件名打开。" +msgstr "输入中不包含 \\n。输入将被当做文件名打开。\n" #: freadR.c:101 msgid "" From 005d5af2f5cf7e0c246122e8a8f8595c00cf02ea Mon Sep 17 00:00:00 2001 From: fengqifang Date: Mon, 16 Dec 2019 22:00:03 -0500 Subject: [PATCH 60/78] Translation fengqifang (#3990) * First version, finished all message * 2nd one, multiple lines of msgstr * 3rd, finished * zh_CN.po 1st * after zh_CN.po reviewed * fix encoding issue * manually editing per GH UI submission --- inst/po/zh_CN/LC_MESSAGES/R-data.table.mo | Bin 53956 -> 56627 bytes inst/po/zh_CN/LC_MESSAGES/data.table.mo | Bin 81723 -> 87164 bytes po/R-zh_CN.po | 55 ++++++++++---------- po/zh_CN.po | 58 ++++++++++++++-------- 4 files changed, 68 insertions(+), 45 deletions(-) diff --git a/inst/po/zh_CN/LC_MESSAGES/R-data.table.mo b/inst/po/zh_CN/LC_MESSAGES/R-data.table.mo index e5bec5d73928dc376c78b33fc825a4366080f376..4e8407df4d7649cf4056c7cddcc0b7299d438a78 100644 GIT binary patch delta 10230 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 R5&yn_adrJGztFV7e*^E3X_o*1 delta 7789 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 diff --git a/inst/po/zh_CN/LC_MESSAGES/data.table.mo b/inst/po/zh_CN/LC_MESSAGES/data.table.mo index 96af413eba7336e0dec655d80b560bfd86b449ad..ee12606a2c45945b00bc2c235910273efe330927 100644 GIT binary patch delta 16427 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 delta 11515 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 but =0 and not NA." -msgstr "" +msgstr "getOption('datatable.alloc')值为%d, 其必须大于等于零且不能为NA" #: assign.c:239 fsort.c:109 nafill.c:73 msgid "verbose must be TRUE or FALSE" -msgstr "verbose必须是TRUE或FALSE" +msgstr "verbose参数必须为TRUE或FALSE" #: assign.c:287 msgid "assign has been passed a NULL dt" -msgstr "" +msgstr "赋值已经被传递给一个空的(NULL)dt" #: assign.c:288 msgid "dt passed to assign isn't type VECSXP" -msgstr "" +msgstr "传递给赋值操作的dt不是VECSXP类型" #: assign.c:290 msgid "" @@ -134,30 +148,34 @@ msgid "" "future use. Use := in j directly. Or use copy(.SD) as a (slow) last resort, " "until shallow() is exported." msgstr "" +".SD被锁定。 使用':='更新.SD操作保留将来使用对'j'直接使用':=', 或可以使用" +"copy(.SD), 直到导出shallow()" #: assign.c:298 msgid "Internal error: dt passed to Cassign is not a data.table or data.frame" -msgstr "" +msgstr "内部错误: 传递给赋值操作的dt不是data.table或data.frame类型" #: assign.c:302 msgid "dt passed to assign has no names" -msgstr "" +msgstr "传递给赋值操作的dt没有命名" #: assign.c:304 #, c-format msgid "Internal error in assign: length of names (%d) is not length of dt (%d)" -msgstr "" +msgstr "赋值的内部错误: names的长度(%d)与dt的长度(%d)不匹配" #: assign.c:306 msgid "" "data.table is NULL; malformed. A null data.table should be an empty list. " "typeof() should always return 'list' for data.table." msgstr "" +"data.table为空, 格式错误,一个null的data.table应该为空的列表list即对data." +"table使用typeof()函数应该返回'list'类型" #: assign.c:315 #, c-format msgid "Assigning to all %d rows\n" -msgstr "" +msgstr "为所有的%d行赋值\n" #: assign.c:320 msgid "" From c89a455c9afe71710f96e66f55764ab446a77228 Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Tue, 17 Dec 2019 11:04:16 +0800 Subject: [PATCH 61/78] run update_pkg_po on new merge --- inst/po/en@quot/LC_MESSAGES/R-data.table.mo | Bin 88988 -> 88924 bytes inst/po/en@quot/LC_MESSAGES/data.table.mo | Bin 140270 -> 140270 bytes inst/po/zh_CN/LC_MESSAGES/R-data.table.mo | Bin 56627 -> 56746 bytes po/R-data.table.pot | 19 +-- po/R-zh_CN.po | 115 ++++++++-------- po/data.table.pot | 48 +++---- po/zh_CN.po | 137 ++++++++++---------- 7 files changed, 154 insertions(+), 165 deletions(-) diff --git a/inst/po/en@quot/LC_MESSAGES/R-data.table.mo b/inst/po/en@quot/LC_MESSAGES/R-data.table.mo index e452c2e20a36f662148df7ce7b40dcc9f4b8da23..6611e35e77ccc3da37aee3224879b7c661f9f29b 100644 GIT binary patch delta 12185 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 Z`i{m}Sl+`5*!D8Z`j!i9;{wHg{|~#z>&*ZF diff --git a/inst/po/en@quot/LC_MESSAGES/data.table.mo b/inst/po/en@quot/LC_MESSAGES/data.table.mo index 849a67326d4fbd72c88c90fb31f405c10a11a265..99ff5e67c3992fa9b74dbd4812b44de525ef5160 100644 GIT binary patch delta 25 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 Nwy!U$^=a~U|2G^K@E`yH delta 7212 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\n" "Language-Team: LANGUAGE \n" @@ -1687,28 +1687,19 @@ msgstr "" msgid "before the next test() call in" msgstr "" -msgid "Timings count mismatch:" -msgstr "" - -msgid "vs" -msgstr "" - msgid "out of" msgstr "" -msgid "in" +msgid ". Search" msgstr "" -msgid "on" -msgstr "" - -msgid ". [" +msgid "for test number" msgstr "" -msgid "Search" +msgid "Timings count mismatch:" msgstr "" -msgid "for test number" +msgid "vs" msgstr "" msgid "Test" diff --git a/po/R-zh_CN.po b/po/R-zh_CN.po index 9b13a891d8..fef902df59 100644 --- a/po/R-zh_CN.po +++ b/po/R-zh_CN.po @@ -1,7 +1,7 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.5\n" -"POT-Creation-Date: 2019-12-08 11:20\n" +"POT-Creation-Date: 2019-12-17 11:02\n" "PO-Revision-Date: 2019-10-31 15:46+08\n" "Last-Translator: Amy Tzu-Yu Chen \n" "Language-Team: Mandarin\n" @@ -16,26 +16,27 @@ msgstr "data.table包已载入, 开发时无需载入" msgid "" "Internal error -- difftime objects may not be added to IDate, but Ops " "dispatch should have intervened to prevent this" -msgstr "内部错误 -- 'difftime'对象可能不能被添加到IDate类型" -"但是正确操作应该防止此行为发生" +msgstr "" +"内部错误 -- 'difftime'对象可能不能被添加到IDate类型但是正确操作应该防止此行为" +"发生" -msgid "binary + is not defined for "IDate" objects" -msgstr "没有为"IDate" 对象定义的'+'操作" +msgid "binary + is not defined for \"IDate\" objects" +msgstr "没有为\"IDate\" 对象定义的'+'操作" -msgid "can only subtract from "IDate" objects" -msgstr "只能从"IDate"对象中减去" +msgid "can only subtract from \"IDate\" objects" +msgstr "只能从\"IDate\"对象中减去" msgid "Internal error: storage mode of IDate is somehow no longer integer" msgstr "内部错误: IDate的存储模式不为整型" -msgid "unary - is not defined for "IDate" objects" -msgstr "没有为"IDate" 对象定义的一元的'-'操作" +msgid "unary - is not defined for \"IDate\" objects" +msgstr "没有为\"IDate\" 对象定义的一元的'-'操作" msgid "" "Internal error -- difftime objects may not be subtracted from IDate, but Ops " "dispatch should have intervened to prevent this" -msgstr "内部错误 -- 不能与IDate类型中减去'difftime'对象" -"但是正确操作应该防止此行为发生" +msgstr "" +"内部错误 -- 不能与IDate类型中减去'difftime'对象但是正确操作应该防止此行为发生" msgid "Valid options for ms are 'truncate'," msgstr "'ms'有效的选项为'truncate'" @@ -46,14 +47,13 @@ msgstr "'nearest'和'ceil'" msgid "" "as.data.table.array method should only be called for arrays with 3+ " "dimensions; use the matrix method for 2-dimensional arrays" -msgstr "请只对3维或以上的数组使用as.data.table.array方法" -"对二维数组请使用matrix方法" +msgstr "" +"请只对3维或以上的数组使用as.data.table.array方法对二维数组请使用matrix方法" msgid "" "Argument 'value.name' must be scalar character, non-NA and at least one " "character" -msgstr "参数'value.name'必须为标量字符或non-NA" -"至少包含一个字符" +msgstr "参数'value.name'必须为标量字符或non-NA至少包含一个字符" msgid "Argument 'sorted' must be scalar logical and non-NA" msgstr "参数'sorted'必须为标量逻辑或non-NA" @@ -70,8 +70,9 @@ msgstr "参数'value.name'不能与结果中已有列名重复" msgid "" "POSIXlt column type detected and converted to POSIXct. We do not recommend " "use of POSIXlt at all because it uses 40 bytes to store one date." -msgstr "检测到使用了POSIXlt类型的列, 并转成POSIXct" -"data.table不建议使用POSIXlt对象, 因为其使用40字节来存储一个日期" +msgstr "" +"检测到使用了POSIXlt类型的列, 并转成POSIXctdata.table不建议使用POSIXlt对象, " +"因为其使用40字节来存储一个日期" msgid "Item" msgstr "条目" @@ -828,8 +829,9 @@ msgstr "分组长度为0,但 data nrow > 0" msgid "" "passing 'f' argument together with 'by' is not allowed, use 'by' when split " "by column in data.table and 'f' when split by external factor" -msgstr "不可同时指定参数 'f' 和参数 'by' ,当利用 data.table" "的纵列进行数据分割时,请使用参数 'by';" -"当利用外部因子进行数据分割时,请使用参数 'f'" +msgstr "" +"不可同时指定参数 'f' 和参数 'by' ,当利用 data.table的纵列进行数据分割时,请使" +"用参数 'by';当利用外部因子进行数据分割时,请使用参数 'f'" msgid "Either 'by' or 'f' argument must be supplied" msgstr "必须提供参数 'by' 或参数 'f'" @@ -851,7 +853,9 @@ msgstr "参数 'by' 只适用于原子类型的纵列,但现在关联的纵列 msgid "" "x is not a data.table. Shallow copy is a copy of the vector of column " "pointers (only), so is only meaningful for data.table" -msgstr "浅拷贝(shallow copy)只是列指针向量的拷贝,因此仅对 data.table 有意义,而 x 不是 data.table" +msgstr "" +"浅拷贝(shallow copy)只是列指针向量的拷贝,因此仅对 data.table 有意义,而 x " +"不是 data.table" msgid "setalloccol attempting to modify `*tmp*`" msgstr "setalloccol 试图修改 '*tmp*'" @@ -860,9 +864,9 @@ msgid "" "Input is a length=1 logical that points to the same address as R's global " "value. Therefore the attribute has not been set by reference, rather on a " "copy. You will need to assign the result back to a variable. See issue #1281." -msgstr "输入值是一个指向与R全局值相同位置的长度为1的逻辑" -"值。因此,该属性是通过副本,而不是reference 的形式设置。" -"您需要将结果分配回一个变量,参看 issue #1281" +msgstr "" +"输入值是一个指向与R全局值相同位置的长度为1的逻辑值。因此,该属性是通过副本," +"而不是reference 的形式设置。您需要将结果分配回一个变量,参看 issue #1281" msgid "x is not a data.table or data.frame" msgstr "x 不是 data.table 或 data.frame." @@ -1206,16 +1210,17 @@ msgstr "data.table 中的 melt 泛型函数被传递了" msgid "" ", but data.table::melt currently only has a method for data.tables. Please " "confirm your input is a data.table, with setDT(" -msgstr ",然而 data.table::melt 当前只支持输入 data.table 对象。请确保输入的是一个 " -" data.table 对象,可以用 setDT(" +msgstr "" +",然而 data.table::melt 当前只支持输入 data.table 对象。请确保输入的是一个 " +"data.table 对象,可以用 setDT(" msgid "" "). If you intend to use a method from reshape2, try installing that package " "first, but do note that reshape2 is deprecated and you should be migrating " "your code away from using it." msgstr "" -")。如果确实要使用 reshape2 中的方法,首先要安装这个包。需要注意,reshape2 已经" -"弃用,你应该将代码迁移并且不再使用它。" +")。如果确实要使用 reshape2 中的方法,首先要安装这个包。需要注意,reshape2 已" +"经弃用,你应该将代码迁移并且不再使用它。" msgid "" "and will attempt to redirect to the relevant reshape2 method; please note " @@ -1223,9 +1228,10 @@ msgid "" "To continue using melt methods from reshape2 while both libraries are " "attached, e.g. melt.list, you can prepend the namespace like reshape2::melt(" msgstr "" -"即将转向到 reshape2 中的相关方法;请注意 reshape2 已经弃用,这个转向也已经弃用。" -"如果要在 data.table 和 reshape2 同时附着的情况下继续使用 reshape2 中的 melt 方法," -"(例如 melt.list),你可以把命名空间写在函数名称前面,例如 reshape2::melt(" +"即将转向到 reshape2 中的相关方法;请注意 reshape2 已经弃用,这个转向也已经弃" +"用。如果要在 data.table 和 reshape2 同时附着的情况下继续使用 reshape2 中的 " +"melt 方法,(例如 melt.list),你可以把命名空间写在函数名称前面,例如 " +"reshape2::melt(" msgid "Input patterns must be of type character." msgstr "输入的 patterns 必须是字符类型。" @@ -1250,8 +1256,8 @@ msgid "" "to data.tables by reference or as.data.table() to convert to data.tables by " "copying." msgstr "" -"y 和 x 必须都是 data.table 对象。用 `setDT()` 可以把列表/数据框引用转换为 " -" data.table,或者用 as.data.table() 进行复制转换。" +"y 和 x 必须都是 data.table 对象。用 `setDT()` 可以把列表/数据框引用转换为 " +"data.table,或者用 as.data.table() 进行复制转换。" msgid "maxgap must be a non-negative integer value of length 1" msgstr "maxgap 必须是一个长度为1的非负整数" @@ -1280,8 +1286,8 @@ msgid "" "- corresponding to 'start' and 'end' points of intervals. Please see ?" "foverlaps and examples for more info." msgstr "" -"'by.x' 和 'by.y' 每个应当包含至少两个列名(或序号)," -"分别对应区间的起始点 'start' 和 结束点 'end'。请参考 ?foverlaps 以及提供的例子。" +"'by.x' 和 'by.y' 每个应当包含至少两个列名(或序号),分别对应区间的起始点 " +"'start' 和 结束点 'end'。请参考 ?foverlaps 以及提供的例子。" msgid "" "Invalid numeric value for 'by.x'; it should be a vector with values 1 <= by." @@ -1292,8 +1298,7 @@ msgstr "" msgid "" "Invalid numeric value for 'by.y'; it should be a vector with values 1 <= by." "y <= length(y)" -msgstr "" -"无效的 'by.y' 数值,应当满足 1 <= by.y <= length(y)" +msgstr "无效的 'by.y' 数值,应当满足 1 <= by.y <= length(y)" msgid "A non-empty vector of column names or numbers is required for by.x" msgstr "'by.x' 必须是一个非空向量,包含列名或者序号" @@ -1969,8 +1974,9 @@ msgid "" "key(x)<-value is deprecated and not supported. Please change to use setkey() " "with perhaps copy(). Has been warning since 2012 and will be an error in " "future." -msgstr "key(x)<-value 已经废弃,不再支持。请使用setkey(), 也许您需要配套使用copy()" -"自2012年来就警告将弃用原用法,将来该用法将报错" +msgstr "" +"key(x)<-value 已经废弃,不再支持。请使用setkey(), 也许您需要配套使用copy()自" +"2012年来就警告将弃用原用法,将来该用法将报错" msgid "x is not a data.table" msgstr "x不是一个data.table" @@ -1983,13 +1989,16 @@ msgid "" "Setting a physical key on .SD is reserved for possible future use; to modify " "the original data's order by group. Try setindex() instead. Or, set*(copy(." "SD)) as a (slow) last resort." -msgstr "在.SD设置一个物理的键的功能被保留,以备未来的需求; 如需通过分组修改原数据顺序" +msgstr "" +"在.SD设置一个物理的键的功能被保留,以备未来的需求; 如需通过分组修改原数据顺序" "请使用setindex(), 或者set*(copy(.SD))作为最终(该方式缓慢)的方法" msgid "" "cols is a character vector of zero length. Removed the key, but use NULL " "instead, or wrap with suppressWarnings() to avoid this warning." -msgstr "列为一个长度为0的字符串向量,请删除键值并使用NULL, 或者使用suppressWarnings()来避免警告" +msgstr "" +"列为一个长度为0的字符串向量,请删除键值并使用NULL, 或者使用suppressWarnings()" +"来避免警告" msgid "cols is the empty string. Use NULL to remove the key." msgstr "列为一个空字符串,请使用NULL以删除键值。" @@ -2025,8 +2034,8 @@ msgid "" "Use 'if (length(o <- forderv(DT,by))) ...' for efficiency in one step, so " "you have o as well if not sorted." msgstr "" -"请使用'if (length(o <- forderv(DT,by))) ...' , 以便在一步中拥有较好的效率," -"同时如果你还未排序,你也获得了变量o" +"请使用'if (length(o <- forderv(DT,by))) ...' , 以便在一步中拥有较好的效率,同" +"时如果你还未排序,你也获得了变量o" msgid "x is vector but 'by' is supplied" msgstr "x是一个向量, 但是参数'by'被提供" @@ -2040,8 +2049,9 @@ msgstr "你正在试图对一个0列的data.table或者data.frame排序" msgid "" "The first item passed to [f]order is a plain list but there are more items. " "It should be a data.table or data.frame." -msgstr "传递给[f]order的第一个变量是一个简单的列表, 但此处有更多的项" -"它需要是一个data.table或者data.frame" +msgstr "" +"传递给[f]order的第一个变量是一个简单的列表, 但此处有更多的项它需要是一个data." +"table或者data.frame" msgid "Internal code should not be being called on type double" msgstr "" @@ -2212,28 +2222,19 @@ msgstr "" msgid "before the next test() call in" msgstr "" -msgid "Timings count mismatch:" -msgstr "" - -msgid "vs" -msgstr "" - msgid "out of" msgstr "" -msgid "in" +msgid ". Search" msgstr "" -msgid "on" -msgstr "" - -msgid ". [" +msgid "for test number" msgstr "" -msgid "Search" +msgid "Timings count mismatch:" msgstr "" -msgid "for test number" +msgid "vs" msgstr "" msgid "Test" diff --git a/po/data.table.pot b/po/data.table.pot index ccec7d1f08..7c680f10f0 100644 --- a/po/data.table.pot +++ b/po/data.table.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.9\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-12-12 11:41+0800\n" +"POT-Creation-Date: 2019-12-17 11:02+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -2932,7 +2932,7 @@ msgstr "" msgid "% " msgstr "" -#: fsort.c:247 fwrite.c:693 fwrite.c:950 +#: fsort.c:247 fwrite.c:702 fwrite.c:966 msgid "\n" msgstr "" @@ -2951,31 +2951,31 @@ msgstr "" msgid "%d: %.3f (%4.1f%%)\n" msgstr "" -#: fwrite.c:604 +#: fwrite.c:613 #, c-format msgid "buffMB=%d outside [1,1024]" msgstr "" -#: fwrite.c:611 +#: fwrite.c:620 #, c-format msgid "" "eol must be 1 or more bytes (usually either \\n or \\r\\n) but is length %d" msgstr "" -#: fwrite.c:614 +#: fwrite.c:623 msgid "Column writers: " msgstr "" -#: fwrite.c:616 fwrite.c:618 fwrite.c:620 +#: fwrite.c:625 fwrite.c:627 fwrite.c:629 #, c-format msgid "%d " msgstr "" -#: fwrite.c:619 +#: fwrite.c:628 msgid "... " msgstr "" -#: fwrite.c:622 +#: fwrite.c:631 #, c-format msgid "" "\n" @@ -2983,17 +2983,17 @@ msgid "" "%d eolLen=%d\n" msgstr "" -#: fwrite.c:655 +#: fwrite.c:664 #, c-format msgid "Internal error: type %d has no max length method implemented" msgstr "" -#: fwrite.c:662 +#: fwrite.c:671 #, c-format msgid "maxLineLen=%. Found in %.3fs\n" msgstr "" -#: fwrite.c:682 +#: fwrite.c:691 #, c-format msgid "" "%s: '%s'. Failed to open existing file for writing. Do you have write " @@ -3001,7 +3001,7 @@ msgid "" "have it open?" msgstr "" -#: fwrite.c:683 +#: fwrite.c:692 #, c-format msgid "" "%s: '%s'. Unable to create new file for writing (it does not exist already). " @@ -3009,65 +3009,65 @@ msgid "" "the path exist?" msgstr "" -#: fwrite.c:691 +#: fwrite.c:700 #, c-format msgid "Writing bom (%s), yaml (%d characters) and column names (%s) ... " msgstr "" -#: fwrite.c:704 +#: fwrite.c:713 #, c-format msgid "Unable to allocate %d MiB for header: %s" msgstr "" -#: fwrite.c:732 fwrite.c:792 +#: fwrite.c:741 fwrite.c:803 msgid "Can't allocate gzip stream structure" msgstr "" -#: fwrite.c:738 +#: fwrite.c:748 #, c-format msgid "Unable to allocate %d MiB for zbuffer: %s" msgstr "" -#: fwrite.c:753 +#: fwrite.c:764 #, c-format msgid "Compress gzip error: %d" msgstr "" -#: fwrite.c:754 fwrite.c:762 fwrite.c:956 +#: fwrite.c:765 fwrite.c:773 fwrite.c:972 #, c-format msgid "%s: '%s'" msgstr "" -#: fwrite.c:759 +#: fwrite.c:770 #, c-format msgid "done in %.3fs\n" msgstr "" -#: fwrite.c:761 +#: fwrite.c:772 msgid "No data rows present (nrow==0)\n" msgstr "" -#: fwrite.c:779 +#: fwrite.c:790 #, c-format msgid "" "Writing % rows in %d batches of %d rows (each buffer size %dMB, " "showProgress=%d, nth=%d)\n" msgstr "" -#: fwrite.c:964 +#: fwrite.c:980 #, c-format msgid "" "zlib %s (zlib.h %s) deflate() returned error %d with z_stream->msg==\"%s\" " "Z_FINISH=%d Z_BLOCK=%d. %s" msgstr "" -#: fwrite.c:966 +#: fwrite.c:982 msgid "" "Please include the full output above and below this message in your data." "table bug report." msgstr "" -#: fwrite.c:967 +#: fwrite.c:983 msgid "" "Please retry fwrite() with verbose=TRUE and include the full output with " "your data.table bug report." diff --git a/po/zh_CN.po b/po/zh_CN.po index 309c92fc5d..e9bf3dccf9 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-12-08 18:59+0800\n" +"POT-Creation-Date: 2019-12-17 11:02+0800\n" "PO-Revision-Date: 2019-10-31 17:27+08\n" "Last-Translator: Amy Tzu-Yu Chen \n" "Language-Team: Mandarin\n" @@ -1387,17 +1387,16 @@ msgid "" "molten data value column will be of type '%s'. All measure variables not of " "type '%s' will be coerced too. Check DETAILS in ?melt.data.table for more on " "coercion.\n" -msgstr "'measure.vars'[%1$s] 的数据类型不完全相同。" -"由于融合后的数据将是'%2$s'类型,所以变量中不是'%3$s'类型" -"的数将被强制转换为'%2$s'类型,更多关于强制转换的信息" -"请查看 ?melt.data.table.\n" +msgstr "" +"'measure.vars'[%1$s] 的数据类型不完全相同。由于融合后的数据将是'%2$s'类型,所" +"以变量中不是'%3$s'类型的数将被强制转换为'%2$s'类型,更多关于强制转换的信息请" +"查看 ?melt.data.table.\n" #: fmelt.c:387 #, c-format msgid "" "The molten data value type is a list at item %d. 'na.rm=TRUE' is ignored.\n" -msgstr "在项目%d中,融合后的数值类型是列表," -"参数'na.rm = TRUE'被自动忽略\n" +msgstr "在项目%d中,融合后的数值类型是列表,参数'na.rm = TRUE'被自动忽略\n" #: fmelt.c:490 #, c-format @@ -1416,16 +1415,15 @@ msgstr "'data' 中的'%s'列是未知列类型:'%s'" #: fmelt.c:673 msgid "Input is not of type VECSXP, expected a data.table, data.frame or list" -msgstr "输入类型不是 VECSXP,输入类型应该是 data.table," "data.frame 或 list。" +msgstr "输入类型不是 VECSXP,输入类型应该是 data.table,data.frame 或 list。" #: fmelt.c:674 msgid "Argument 'value.factor' should be logical TRUE/FALSE" -msgstr "'value.factor' 的参数是逻辑值,必须是 TRUE 或" "FALSE" +msgstr "'value.factor' 的参数是逻辑值,必须是 TRUE 或FALSE" #: fmelt.c:675 msgid "Argument 'variable.factor' should be logical TRUE/FALSE" -msgstr "'variable.factor' 的参数是逻辑值,必须是 TRUE 或" -"FALSE" +msgstr "'variable.factor' 的参数是逻辑值,必须是 TRUE 或FALSE" #: fmelt.c:676 msgid "Argument 'na.rm' should be logical TRUE/FALSE." @@ -1466,8 +1464,7 @@ msgstr "分配%d*4字节内存时失败。" msgid "" "Logical error. counts[0]=%d in cradix but should have been decremented to 0. " "radix=%d" -msgstr "逻辑错误:在 cradix 中的 counts[0] 应该为0,而不是%d" -"radix=%d" +msgstr "逻辑错误:在 cradix 中的 counts[0] 应该为0,而不是%dradix=%d" #: forder.c:278 msgid "Failed to alloc cradix_counts" @@ -1482,8 +1479,7 @@ msgstr "分配 cradix_tmp 失败" msgid "" "Internal error: ustr isn't empty when starting range_str: ustr_n=%d, " "ustr_alloc=%d" -msgstr "内部错误:开始运行 range_str 时,ustr 未清空:ustr_n=%d," -"ustr_alloc=%d" +msgstr "内部错误:开始运行 range_str 时,ustr 未清空:ustr_n=%d,ustr_alloc=%d" #: forder.c:292 msgid "Internal error: ustr_maxlen isn't 0 when starting range_str" @@ -1523,13 +1519,16 @@ msgstr "内部错误:输入值既不是列表中的一列,也不是原子向 msgid "" "Internal error: input is an atomic vector (not a list of columns) but by= is " "not NULL" -msgstr "内部错误:输入值是一个原子向量(而不是列表中的一列),但是" "'by' 的参数是列表而不是NULL" +msgstr "" +"内部错误:输入值是一个原子向量(而不是列表中的一列),但是'by' 的参数是列表而不" +"是NULL" #: forder.c:438 msgid "" "Input is an atomic vector (not a list of columns) but order= is not a length " "1 integer" -msgstr "输入值是一个原子向量(而不是列表中的一列),但参数 order" "不是长度为1的整数" +msgstr "" +"输入值是一个原子向量(而不是列表中的一列),但参数 order不是长度为1的整数" #: forder.c:440 #, c-format @@ -1557,8 +1556,7 @@ msgstr "内部错误:DT 内部有%d列,但参数 'by' 不是整数或长度 msgid "" "Either order= is not integer or its length (%d) is different to by='s length " "(%d)" -msgstr "参数 order 不是整数,或者它的长度(%d)与参数 'by' 指定的" -"长度(%d)不同" +msgstr "参数 order 不是整数,或者它的长度(%d)与参数 'by' 指定的长度(%d)不同" #: forder.c:461 #, c-format @@ -1598,8 +1596,10 @@ msgid "" "*** Column %d passed to forder is a date stored as an 8 byte double but no " "fractions are present. Please consider a 4 byte integer date such as IDate " "to save space and time.\n" -msgstr "\n" -"***传递给 forder 的%d列是一个没有小数的8字节 double 类型的日期数""据,请考虑使用4字节的整数日期(例如IDate)以节省空间和时间\n" +msgstr "" +"\n" +"***传递给 forder 的%d列是一个没有小数的8字节 double 类型的日期数据,请考虑使" +"用4字节的整数日期(例如IDate)以节省空间和时间\n" #: forder.c:561 #, c-format @@ -2408,8 +2408,8 @@ msgid "" "ignored. Only overrides to a higher type are currently supported. If this " "was intended, please coerce to the lower type afterwards." msgstr "" -"试图覆盖第 %d 列 <<%.*s>>,将内部类型 '%s' 降级为 '%s' 的操作被忽略。只支持将列类型" -"升为更高阶的类型。如果确定此操作,请完成之后再转换类型。" +"试图覆盖第 %d 列 <<%.*s>>,将内部类型 '%s' 降级为 '%s' 的操作被忽略。只支持将" +"列类型升为更高阶的类型。如果确定此操作,请完成之后再转换类型。" #: fread.c:1924 #, c-format @@ -2449,7 +2449,9 @@ msgstr "" msgid "" "Column %d (\"%.*s\") bumped from '%s' to '%s' due to <<%.*s>> on row " "%\n" -msgstr "第 %d 列(\"%.*s\") 发生了从 '%s' 到 '%s' 的类型转换,由于 <<%.*s>> 出现在第 % 行\n" +msgstr "" +"第 %d 列(\"%.*s\") 发生了从 '%s' 到 '%s' 的类型转换,由于 <<%.*s>> 出现在第 " +"% 行\n" #: fread.c:2262 #, c-format @@ -2461,9 +2463,11 @@ msgstr "" #: fread.c:2335 #, c-format msgid "" -" Too few rows allocated. Allocating additional % rows (now nrows=%) " -"and continue reading from jump %d\n" -msgstr " 分配的行数太少。正在分配额外的 % 行(当前 nrows=%),并从跳跃 %d 继续读取\n" +" Too few rows allocated. Allocating additional % rows (now nrows=" +"%) and continue reading from jump %d\n" +msgstr "" +" 分配的行数太少。正在分配额外的 % 行(当前 nrows=%),并从跳" +"跃 %d 继续读取\n" #: fread.c:2342 #, c-format @@ -2480,8 +2484,7 @@ msgstr " %d 样本外类型变更:%s\n" msgid "" "Read % rows x %d columns from %s file in %02d:%06.3f wall clock " "time\n" -msgstr "" -"读取 % 行 x %d 列,从 %s 文件(时钟时间 %02d:%06.3f)\n" +msgstr "读取 % 行 x %d 列,从 %s 文件(时钟时间 %02d:%06.3f)\n" #: fread.c:2405 msgid "[12] Finalizing the datatable\n" @@ -2517,9 +2520,9 @@ msgid "" "%: <<%s>>. If the fields are not quoted (e.g. field separator does " "not appear within any field), try quote=\"\" to avoid this warning." msgstr "" -"发现并修复了样本外的错误引号。首次在第 % 行修复:<<%s>>。" -"如果这些字段不在引号内(例如:字段间隔符没有在任何一个字段中出现)," -"尝试用 quote=\"\" 来避免该警告。" +"发现并修复了样本外的错误引号。首次在第 % 行修复:<<%s>>。如果这些字段" +"不在引号内(例如:字段间隔符没有在任何一个字段中出现),尝试用 quote=\"\" 来" +"避免该警告。" #: fread.c:2439 msgid "=============================\n" @@ -2560,15 +2563,14 @@ msgid "" "%8.3fs (%3.0f%%) Reading %d chunks (%d swept) of %.3fMB (each chunk %d rows) " "using %d threads\n" msgstr "" -"%8.3fs (%3.0f%%) 正在读取 %d 个块 (%d 已扫描) of %.3fMB (每个块 %d 行) " -"使用 %d 个线程\n" +"%8.3fs (%3.0f%%) 正在读取 %d 个块 (%d 已扫描) of %.3fMB (每个块 %d 行) 使用 " +"%d 个线程\n" #: fread.c:2453 #, c-format msgid "" " + %8.3fs (%3.0f%%) Parse to row-major thread buffers (grown %d times)\n" -msgstr "" -" + %8.3fs (%3.0f%%) 解析到行处理线程的缓冲区(已增长 %d 次)\n" +msgstr " + %8.3fs (%3.0f%%) 解析到行处理线程的缓冲区(已增长 %d 次)\n" #: fread.c:2454 #, c-format @@ -2584,8 +2586,7 @@ msgstr " + %8.3fs (%3.0f%%) 正在等待\n" #, c-format msgid "" "%8.3fs (%3.0f%%) Rereading %d columns due to out-of-sample type exceptions\n" -msgstr "" -"%8.3fs (%3.0f%%) 正在重读 %d 列,由于样本外类型异常\n" +msgstr "%8.3fs (%3.0f%%) 正在重读 %d 列,由于样本外类型异常\n" #: fread.c:2458 #, c-format @@ -2597,16 +2598,14 @@ msgid "" "Internal error: freadR input not a single character string: a filename or " "the data itself. Should have been caught at R level." msgstr "" -"内部错误:freadR 输入的不是单个字符串:文件名或者数据文本。" -"该错误本应在 R 中被捕获。" +"内部错误:freadR 输入的不是单个字符串:文件名或者数据文本。该错误本应在 R 中" +"被捕获。" #: freadR.c:92 msgid "" "Input contains a \\n or is \")\". Taking this to be text input (not a " "filename)\n" -msgstr "" -"输入中包含 \\n 或者是 \")\"。输入将被当做数据文本(而非" -"文件名)\n" +msgstr "输入中包含 \\n 或者是 \")\"。输入将被当做数据文本(而非文件名)\n" #: freadR.c:95 msgid "Input contains no \\n. Taking this to be a filename to open\n" @@ -2615,14 +2614,12 @@ msgstr "输入中不包含 \\n。输入将被当做文件名打开。\n" #: freadR.c:101 msgid "" "Internal error: freadR sep not a single character. R level catches this." -msgstr "" -"内部错误:freadR sep 不是单个字符。R 中应该捕获此错误。" +msgstr "内部错误:freadR sep 不是单个字符。R 中应该捕获此错误。" #: freadR.c:105 msgid "" "Internal error: freadR dec not a single character. R level catches this." -msgstr "" -"内部错误:freadR dec 不是单个字符。R 中应该捕获此错误。" +msgstr "内部错误:freadR dec 不是单个字符。R 中应该捕获此错误。" #: freadR.c:112 msgid "quote= must be a single character, blank \"\", or FALSE" @@ -3109,7 +3106,7 @@ msgstr "" msgid "% " msgstr "" -#: fsort.c:247 fwrite.c:693 fwrite.c:950 +#: fsort.c:247 fwrite.c:702 fwrite.c:966 msgid "\n" msgstr "" @@ -3128,31 +3125,31 @@ msgstr "" msgid "%d: %.3f (%4.1f%%)\n" msgstr "" -#: fwrite.c:604 +#: fwrite.c:613 #, c-format msgid "buffMB=%d outside [1,1024]" msgstr "" -#: fwrite.c:611 +#: fwrite.c:620 #, c-format msgid "" "eol must be 1 or more bytes (usually either \\n or \\r\\n) but is length %d" msgstr "" -#: fwrite.c:614 +#: fwrite.c:623 msgid "Column writers: " msgstr "" -#: fwrite.c:616 fwrite.c:618 fwrite.c:620 +#: fwrite.c:625 fwrite.c:627 fwrite.c:629 #, c-format msgid "%d " msgstr "" -#: fwrite.c:619 +#: fwrite.c:628 msgid "... " msgstr "" -#: fwrite.c:622 +#: fwrite.c:631 #, c-format msgid "" "\n" @@ -3160,17 +3157,17 @@ msgid "" "%d eolLen=%d\n" msgstr "" -#: fwrite.c:655 +#: fwrite.c:664 #, c-format msgid "Internal error: type %d has no max length method implemented" msgstr "" -#: fwrite.c:662 +#: fwrite.c:671 #, c-format msgid "maxLineLen=%. Found in %.3fs\n" msgstr "" -#: fwrite.c:682 +#: fwrite.c:691 #, c-format msgid "" "%s: '%s'. Failed to open existing file for writing. Do you have write " @@ -3178,7 +3175,7 @@ msgid "" "have it open?" msgstr "" -#: fwrite.c:683 +#: fwrite.c:692 #, c-format msgid "" "%s: '%s'. Unable to create new file for writing (it does not exist already). " @@ -3186,65 +3183,65 @@ msgid "" "the path exist?" msgstr "" -#: fwrite.c:691 +#: fwrite.c:700 #, c-format msgid "Writing bom (%s), yaml (%d characters) and column names (%s) ... " msgstr "" -#: fwrite.c:704 +#: fwrite.c:713 #, c-format msgid "Unable to allocate %d MiB for header: %s" msgstr "" -#: fwrite.c:732 fwrite.c:792 +#: fwrite.c:741 fwrite.c:803 msgid "Can't allocate gzip stream structure" msgstr "" -#: fwrite.c:738 +#: fwrite.c:748 #, c-format msgid "Unable to allocate %d MiB for zbuffer: %s" msgstr "" -#: fwrite.c:753 +#: fwrite.c:764 #, c-format msgid "Compress gzip error: %d" msgstr "" -#: fwrite.c:754 fwrite.c:762 fwrite.c:956 +#: fwrite.c:765 fwrite.c:773 fwrite.c:972 #, c-format msgid "%s: '%s'" msgstr "" -#: fwrite.c:759 +#: fwrite.c:770 #, c-format msgid "done in %.3fs\n" msgstr "" -#: fwrite.c:761 +#: fwrite.c:772 msgid "No data rows present (nrow==0)\n" msgstr "" -#: fwrite.c:779 +#: fwrite.c:790 #, c-format msgid "" "Writing % rows in %d batches of %d rows (each buffer size %dMB, " "showProgress=%d, nth=%d)\n" msgstr "" -#: fwrite.c:964 +#: fwrite.c:980 #, c-format msgid "" "zlib %s (zlib.h %s) deflate() returned error %d with z_stream->msg==\"%s\" " "Z_FINISH=%d Z_BLOCK=%d. %s" msgstr "" -#: fwrite.c:966 +#: fwrite.c:982 msgid "" "Please include the full output above and below this message in your data." "table bug report." msgstr "" -#: fwrite.c:967 +#: fwrite.c:983 msgid "" "Please retry fwrite() with verbose=TRUE and include the full output with " "your data.table bug report." From 49ba638530626fc52741bd1f321fb3c403f8876e Mon Sep 17 00:00:00 2001 From: Shayebuhuii <32659317+sunshine1126@users.noreply.github.com> Date: Wed, 18 Dec 2019 00:51:46 +0800 Subject: [PATCH 62/78] done some translation (#4069) * done some translation * do some revisions --- po/R-zh_CN.po | 85 ++++++++++++++++++++++++++++++++++----------------- po/zh_CN.po | 85 ++++++++++++++++++++++++++------------------------- 2 files changed, 101 insertions(+), 69 deletions(-) diff --git a/po/R-zh_CN.po b/po/R-zh_CN.po index fef902df59..29a16e1264 100644 --- a/po/R-zh_CN.po +++ b/po/R-zh_CN.po @@ -1823,13 +1823,13 @@ msgid "using" msgstr "" msgid "threads (see ?getDTthreads). Latest news: r-datatable.com" -msgstr "" +msgstr "线程(请参阅?getDTthreads)。最新的消息:r-datatable.com" msgid "TRANSLATION CHECK" -msgstr "中文" +msgstr "翻译检查" msgid "**********" -msgstr "" +msgstr "**********" msgid "" "Running data.table in English; package support is available in English only. " @@ -1837,32 +1837,45 @@ msgid "" "message. This can be obtained by looking at the po/R-.po and po/" ".po files in the package source, where the native language and " "English error messages can be found side-by-side" -msgstr "" +msgstr "用英语运行data.table。软件包只提供英语支持。" +"当在在线搜索帮助时,也要确保检查英语错误信息。" +"这个可以通过查看软件包源文件中的po/R-.po和po/.po文件获得," +"这个文件可以并排找到母语和英语错误信息。" msgid "" "**********\n" "This development version of data.table was built more than 4 weeks ago. " "Please update: data.table::update.dev.pkg()\n" "**********" -msgstr "" +msgstr "**********" +"这个data.table的开发版本是在4个多星期之前构建的。" +"请更新版本:data.table::update.dev.pkg()\n" +"**********" msgid "" "**********\n" "This installation of data.table has not detected OpenMP support. It should " "still work but in single-threaded mode." -msgstr "" +msgstr "**********\n" +"data.table的安装未检测到OpenMP支持。" +"在单线程模式下应该仍能运行" msgid "" "If this is a Mac, please ensure you are using R>=3.4.0 and have followed our " "Mac instructions here: https://github.com/Rdatatable/data.table/wiki/" "Installation." -msgstr "" +msgstr "如果是Mac,请确保您使用的R版本>=3.4.0," +"同时遵循了我们Mac上的安装说明:https://github.com/Rdatatable/data.table/wiki/Installation。" + msgid "" "This warning message should not occur on Windows or Linux. If it does, " "please file a GitHub issue.\n" "**********" -msgstr "" +msgstr "在Windows或Linux上不应出现此警告消息。" +"如果有,请提交给GitHub issue。\n" +"**********" + msgid "" "The option 'datatable.nomatch' is being used and is not set to the default " @@ -1870,19 +1883,23 @@ msgid "" "Please see NEWS for 1.12.4 for detailed information and motivation. To " "specify inner join, please specify `nomatch=NULL` explicitly in your calls " "rather than changing the default using this option." -msgstr "" +msgstr "这个选项'datatable.nomatch'正在被使用,没有被设置为默认值NA。" +"该选项目前仍被使用,但在未来不会被使用。" +"相关的详细信息和动机,请参阅1.12.4的信息。" +"要指定内部连接,请在调用中明确指定`nomatch = NULL`," +"而不要使用此选项更改默认值。" msgid "The datatable." -msgstr "" +msgstr "datatable" msgid "version (" -msgstr "" +msgstr "版本(" msgid ") does not match the package (" -msgstr "" +msgstr ")和包不匹配 (" msgid "). Please close all R sessions to release the old" -msgstr "" +msgstr ").请关闭所有R会话以释放旧版本" msgid "" "and reinstall data.table in a fresh R session. The root cause is that R's " @@ -1894,57 +1911,69 @@ msgid "" "circumstances to 17478 to move the status to confirmed. This mismatch " "between R and C code can happen with any package not just data.table. It is " "just that data.table has added this check." -msgstr "" +msgstr "并在全新的R会话中重新安装data.table。" +"根本原因是R包安装程序可能在某些未经确认的条件下将包置于显然可以正常工作的状态," +"但是新的R代码正在默默地调用旧的C代码:" +"https://bugs.r-project.org/bugzilla/show_bug.cgi?id=17478。" +"一旦安装包处于这不匹配的状态下,在您下次升级程序包之前," +"它可能会默默地产生错误的结果" +"请提交具体的情况至17478协助我们确认这个Bug。" +"R和C代码之间的这种不匹配可能发生在任何包中,而不仅仅是在data.table中。" +"只是data.table添加了这个检查" msgid "This is R" -msgstr "" +msgstr "这是R" msgid "but data.table has been installed using R" -msgstr "" +msgstr "但是data.table安装在R" msgid ". The major version must match. Please reinstall data.table." -msgstr "" +msgstr "。主要的版本必须匹配。 请重新安装data.table" msgid "" "Option 'datatable.old.bywithoutby' has been removed as warned for 2 years. " "It is now ignored. Please use by=.EACHI instead and stop using this option." -msgstr "" +msgstr "选项'datatable.old.bywithoutby'已经被移除,警告了2年。" +"它现在被忽略。 请改用by = .EACHI,然后停止使用这个选项。" msgid "Unexpected base R behaviour: list(x) has copied x" -msgstr "" +msgstr "意外的base R行为:list(x)已经复制了x" msgid "Unexpected base R behaviour: names<- has copied column contents" -msgstr "" +msgstr "意外的base R行为:names<- 已复制列内容" msgid "" "Unexpected base R behaviour: DF[2,2]<- did not copy column 2 which was " "assigned to" -msgstr "" +msgstr "意外的base R行为:DF[2,2]<- 没有复制第二列" +"它被分配给" msgid "" "Unexpected base R behaviour: DF[2,2]<- copied the first column which was not " "assigned to, too" -msgstr "" +msgstr "意外的base R行为:DF[2,2]<-复制了第一列的内容," +"它也没有被分配给" msgid "Unexpected base R behaviour: DF[2,2]<- has not copied address(DF)" -msgstr "" +msgstr "意外的base R行为:DF[2,2]<- 还没有复制address(DF)" msgid "" "Reminder to data.table developers: don't use getRversion() internally. Add a " "behaviour test to .onLoad instead." -msgstr "" +msgstr "提醒data.table开发人员:请勿在内部使用getRversion()。" +"将行为测试添加到.onLoad" msgid "Provide either threads= or percent= but not both" -msgstr "" +msgstr "提供threads=或percent=,但不能两者都提供" msgid "percent= is provided but is length" -msgstr "" +msgstr "提供了percent =,但为长度" msgid "percent==" -msgstr "" +msgstr "percent==" msgid "but should be a number between 2 and 100" -msgstr "" +msgstr "但应为2到100之间的数字" msgid "Valid options for col.names are 'auto', 'top', and 'none'" msgstr "对col.names有效的参数为'auto', 'top', and 'none'" diff --git a/po/zh_CN.po b/po/zh_CN.po index e9bf3dccf9..8395f0bd7b 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -3661,7 +3661,7 @@ msgstr "" msgid "" "Type '%s' not supported by GForce sd (gsd). Either add the prefix stats::" "sd(.) or turn off GForce optimization using options(datatable.optimize=1)" -msgstr "" +msgstr "GForce sd (gsd)不支持类型'%s',要么添加前缀 stats::sd(.),要么使用选项datatable.optimize=1来关闭GForce优化。" #: gsumm.c:1403 msgid "" @@ -3669,205 +3669,208 @@ msgid "" "all items in a list such as .SD, either add the prefix base::prod(.SD) or " "turn off GForce optimization using options(datatable.optimize=1). More " "likely, you may be looking for 'DT[,lapply(.SD,prod),by=,.SDcols=]'" -msgstr "" +msgstr "GForce prod只能应用于列,而不能应用于.SD或其他类似格式的。" +"为了在列表如.SD相乘所有的元素,要么添加前缀base::prod(.SD), " +"要么使用选项datatable.optimize=1来关闭GForce优化。" +"你可以试试'DT[,lapply(.SD,prod),by=,.SDcols=]'" #: gsumm.c:1404 msgid "prod is not meaningful for factors." -msgstr "" +msgstr "prod对于因子是没有意义的" #: gsumm.c:1409 #, c-format msgid "nrow [%d] != length(x) [%d] in gprod" -msgstr "" +msgstr "在gprod中,nrow [%d] != length(x) [%d]" #: gsumm.c:1411 #, c-format msgid "Unable to allocate %d * %d bytes for gprod" -msgstr "" +msgstr "无法给gprod分配%d * %d 字节" #: gsumm.c:1446 #, c-format msgid "" "Type '%s' not supported by GForce prod (gprod). Either add the prefix base::" "prod(.) or turn off GForce optimization using options(datatable.optimize=1)" -msgstr "" +msgstr "GForce prod (gprod)不支持类型'%s',要么添加前缀 base::prod(.),要么使用选项datatable.optimize=1来关闭GForce优化。" #: ijoin.c:22 ijoin.c:243 msgid "" "Internal error: invalid value for 'mult'; this should have been caught " "before. please report to data.table issue tracker" -msgstr "" +msgstr "内部错误:'mult'的值无效;这应该在之前被找到。请报告给data.table问题跟踪器" #: ijoin.c:29 ijoin.c:250 msgid "" "Internal error: invalid value for 'type'; this should have been caught " "before. please report to data.table issue tracker" -msgstr "" +msgstr "内部错误:'type'的值无效;这应该在之前被找到。请报告给data.table问题跟踪器" #: ijoin.c:56 ijoin.c:121 #, c-format msgid "Internal error: unknown type in mult=%d in lookup: %d" -msgstr "" +msgstr "内部错误:在查找的过程中,mult=%d出现未知的类型:%d" #: ijoin.c:124 ijoin.c:215 #, c-format msgid "Internal error: unknown mult in lookup: %d" -msgstr "" +msgstr "内部错误:在查找中出现未知的mult:%d" #: ijoin.c:128 #, c-format msgid "First pass on calculating lengths in lookup ... done in %8.3f seconds\n" -msgstr "" +msgstr "查找的第一步:长度计算...在%8.3f秒内完成" #: ijoin.c:141 #, c-format msgid "Second pass on allocation in lookup ... done in %8.3f seconds\n" -msgstr "" +msgstr "查找的第二步:分配...在%8.3f秒内完成" #: ijoin.c:160 #, c-format msgid "Internal error: unknown type lookup should have been caught earlier: %d" -msgstr "" +msgstr "内部错误:未知类型查找应该被更早找到:%d" #: ijoin.c:212 #, c-format msgid "" "Internal error: unknown type in mult=%d in lookup should have been caught " "earlier: %d" -msgstr "" +msgstr "内部错误:在在查找的过程中,mult=%d出现未知的类型应该被更早找到:%d" #: ijoin.c:220 #, c-format msgid "Final step in generating lookup ... done in %8.3f seconds\n" -msgstr "" +msgstr "查找的最后一步:生成结果...在在%8.3f秒内完成" #: ijoin.c:323 #, c-format msgid "Internal error: unknown type in mult=ALL in overlaps: %d" -msgstr "" +msgstr "内部错误:在重叠的过程中,mult=ALL出现未知类型:%d" #: ijoin.c:328 #, c-format msgid "" "First pass on calculating lengths in overlaps ... done in %8.3f seconds\n" -msgstr "" +msgstr "重叠的第一步:长度计算...在%8.3f秒内完成" #: ijoin.c:464 ijoin.c:571 ijoin.c:720 #, c-format msgid "Internal error: unknown type in mult=%d in overlaps: %d" -msgstr "" +msgstr "内部错误:在重叠的过程中,mult=%d出现未知类型:%d" #: ijoin.c:723 #, c-format msgid "Internal error: unknown mult in overlaps: %d" -msgstr "" +msgstr "内部错误:在重叠中出现未知的mult:%d" #: ijoin.c:727 #, c-format msgid "Final step, fetching indices in overlaps ... done in %8.3f seconds\n" -msgstr "" +msgstr "重叠的最后一步:获取索引...在%8.3f秒内完成" #: init.c:231 #, c-format msgid "" "Pointers are %d bytes, greater than 8. We have not tested on any " "architecture greater than 64bit yet." -msgstr "" +msgstr "指针是%d个字节,大于8。我们尚未在大于64位的任何体系结构上进行测试。" #: init.c:242 #, c-format msgid "Checking NA_INTEGER [%d] == INT_MIN [%d] %s" -msgstr "" +msgstr "检查NA_INTEGER [%d] == INT_MIN [%d] %s" #: init.c:243 #, c-format msgid "Checking NA_INTEGER [%d] == NA_LOGICAL [%d] %s" -msgstr "" +msgstr "检查Checking NA_INTEGER [%d] == NA_LOGICAL [%d] %s" #: init.c:244 #, c-format msgid "Checking sizeof(int) [%d] is 4 %s" -msgstr "" +msgstr "检查sizeof(int)[%d]是否为4 %s" #: init.c:245 #, c-format msgid "Checking sizeof(double) [%d] is 8 %s" -msgstr "" +msgstr "检查 sizeof(double) [%d]是否为8 %s" #: init.c:247 #, c-format msgid "Checking sizeof(long long) [%d] is 8 %s" -msgstr "" +msgstr "检查sizeof(long long) [%d]是否为8 %s" #: init.c:248 #, c-format msgid "Checking sizeof(pointer) [%d] is 4 or 8 %s" -msgstr "" +msgstr "检查sizeof(pointer) [%d]是否为4 或者 8 %s" #: init.c:249 #, c-format msgid "Checking sizeof(SEXP) [%d] == sizeof(pointer) [%d] %s" -msgstr "" +msgstr "检查sizeof(SEXP) [%d] == sizeof(pointer) [%d] %s" #: init.c:250 #, c-format msgid "Checking sizeof(uint64_t) [%d] is 8 %s" -msgstr "" +msgstr "检查 sizeof(uint64_t) [%d]是否为8 %s" #: init.c:251 #, c-format msgid "Checking sizeof(int64_t) [%d] is 8 %s" -msgstr "" +msgstr "检查sizeof(int64_t) [%d]是否为8 %s" #: init.c:252 #, c-format msgid "Checking sizeof(signed char) [%d] is 1 %s" -msgstr "" +msgstr "检查sizeof(signed char) [%d]是否为1 %s" #: init.c:253 #, c-format msgid "Checking sizeof(int8_t) [%d] is 1 %s" -msgstr "" +msgstr "检查sizeof(int8_t) [%d]是否为1 %s" #: init.c:254 #, c-format msgid "Checking sizeof(uint8_t) [%d] is 1 %s" -msgstr "" +msgstr "检查sizeof(uint8_t) [%d]是否为1 %s" #: init.c:255 #, c-format msgid "Checking sizeof(int16_t) [%d] is 2 %s" -msgstr "" +msgstr "检查sizeof(int16_t) [%d]是否为2 %s" #: init.c:256 #, c-format msgid "Checking sizeof(uint16_t) [%d] is 2 %s" -msgstr "" +msgstr "检查sizeof(uint16_t) [%d]是否为2 %s" #: init.c:259 #, c-format msgid "Checking LENGTH(allocVector(INTSXP,2)) [%d] is 2 %s" -msgstr "" +msgstr "检查LENGTH(allocVector(INTSXP,2)) [%d]是否为2 %s" #: init.c:260 #, c-format msgid "Checking TRUELENGTH(allocVector(INTSXP,2)) [%d] is 0 %s" -msgstr "" +msgstr "检查TRUELENGTH(allocVector(INTSXP,2)) [%d]是否为0 %s" #: init.c:267 #, c-format msgid "Checking memset(&i,0,sizeof(int)); i == (int)0 %s" -msgstr "" +msgstr "检查memset(&i,0,sizeof(int)); i == (int)0 %s" #: init.c:270 #, c-format msgid "Checking memset(&ui, 0, sizeof(unsigned int)); ui == (unsigned int)0 %s" -msgstr "" +msgstr "检查memset(&ui, 0, sizeof(unsigned int)); ui == (unsigned int)0 %s" #: init.c:273 #, c-format msgid "Checking memset(&d, 0, sizeof(double)); d == (double)0.0 %s" -msgstr "" +msgstr "检查memset(&d, 0, sizeof(double)); d == (double)0.0 %s" #: init.c:276 #, c-format @@ -3876,7 +3879,7 @@ msgstr "检查memset(&ld, 0, sizeof(long double)); ld == (long double)0.0 %s" #: init.c:279 msgid "The ascii character '/' is not just before '0'" -msgstr "ascii字符'/'不是在'0'前" +msgstr "ASCII 字符 '/' 后一个字符并非字符 '0'" #: init.c:280 msgid "The C expression (uint_fast8_t)('/'-'0')<10 is true. Should be false." From 5e8281f8fd2a6cf1ca7b7b0377dc63d33d145068 Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Wed, 18 Dec 2019 01:00:55 +0800 Subject: [PATCH 63/78] touch-up --- inst/po/en@quot/LC_MESSAGES/data.table.mo | Bin 140270 -> 140270 bytes inst/po/zh_CN/LC_MESSAGES/R-data.table.mo | Bin 56746 -> 62912 bytes inst/po/zh_CN/LC_MESSAGES/data.table.mo | Bin 87164 -> 93306 bytes po/data.table.pot | 6 ++-- po/zh_CN.po | 38 +++++++++++++--------- 5 files changed, 25 insertions(+), 19 deletions(-) diff --git a/inst/po/en@quot/LC_MESSAGES/data.table.mo b/inst/po/en@quot/LC_MESSAGES/data.table.mo index 99ff5e67c3992fa9b74dbd4812b44de525ef5160..1e95d2a30497594e7c34f068433b746bf11fbc6d 100644 GIT binary patch delta 25 hcmaENoa5bbj)pCa0b1-93I+yNre@p2wHT-W1OS9`30D9B delta 25 hcmaENoa5bbj)pCa0b1#S*U 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 diff --git a/inst/po/zh_CN/LC_MESSAGES/data.table.mo b/inst/po/zh_CN/LC_MESSAGES/data.table.mo index ee12606a2c45945b00bc2c235910273efe330927..3495f3304d90496aa89fe0d785e6a30bce722050 100644 GIT binary patch delta 17233 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 delta 12141 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\n" "Language-Team: LANGUAGE \n" @@ -775,14 +775,14 @@ msgstr "" msgid "Internal error: either chin or chmatchdup should be true not both" msgstr "" -#: chmatch.c:30 +#: chmatch.c:44 #, c-format msgid "" "Internal error: CHARSXP '%s' has a negative truelength (%d). Please file an " "issue on the data.table tracker." msgstr "" -#: chmatch.c:60 +#: chmatch.c:73 #, c-format msgid "" "Failed to allocate % bytes working memory in chmatchdup: " diff --git a/po/zh_CN.po b/po/zh_CN.po index 8395f0bd7b..09de494b68 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-12-17 11:02+0800\n" +"POT-Creation-Date: 2019-12-18 00:56+0800\n" "PO-Revision-Date: 2019-10-31 17:27+08\n" "Last-Translator: Amy Tzu-Yu Chen \n" "Language-Team: Mandarin\n" @@ -837,7 +837,7 @@ msgstr "table 类型为 '%s' (必须为 'character' 或 NULL)" msgid "Internal error: either chin or chmatchdup should be true not both" msgstr "内部错误:chin 和 chmatchdup 不能同时为真" -#: chmatch.c:30 +#: chmatch.c:44 #, c-format msgid "" "Internal error: CHARSXP '%s' has a negative truelength (%d). Please file an " @@ -846,7 +846,7 @@ msgstr "" "内部错误:CHARSXP '%s' 的 truelength (%d) 为负。请将此问题汇报给 data.table " "问题追踪器。" -#: chmatch.c:60 +#: chmatch.c:73 #, c-format msgid "" "Failed to allocate % bytes working memory in chmatchdup: " @@ -3661,7 +3661,9 @@ msgstr "" msgid "" "Type '%s' not supported by GForce sd (gsd). Either add the prefix stats::" "sd(.) or turn off GForce optimization using options(datatable.optimize=1)" -msgstr "GForce sd (gsd)不支持类型'%s',要么添加前缀 stats::sd(.),要么使用选项datatable.optimize=1来关闭GForce优化。" +msgstr "" +"GForce sd (gsd)不支持类型'%s',要么添加前缀 stats::sd(.),要么使用选项" +"datatable.optimize=1来关闭GForce优化。" #: gsumm.c:1403 msgid "" @@ -3669,10 +3671,10 @@ msgid "" "all items in a list such as .SD, either add the prefix base::prod(.SD) or " "turn off GForce optimization using options(datatable.optimize=1). More " "likely, you may be looking for 'DT[,lapply(.SD,prod),by=,.SDcols=]'" -msgstr "GForce prod只能应用于列,而不能应用于.SD或其他类似格式的。" -"为了在列表如.SD相乘所有的元素,要么添加前缀base::prod(.SD), " -"要么使用选项datatable.optimize=1来关闭GForce优化。" -"你可以试试'DT[,lapply(.SD,prod),by=,.SDcols=]'" +msgstr "" +"GForce prod只能应用于列,而不能应用于.SD或其他类似格式的。为了在列表如.SD相乘" +"所有的元素,要么添加前缀base::prod(.SD), 要么使用选项datatable.optimize=1来关" +"闭GForce优化。你可以试试'DT[,lapply(.SD,prod),by=,.SDcols=]'" #: gsumm.c:1404 msgid "prod is not meaningful for factors." @@ -3693,19 +3695,23 @@ msgstr "无法给gprod分配%d * %d 字节" msgid "" "Type '%s' not supported by GForce prod (gprod). Either add the prefix base::" "prod(.) or turn off GForce optimization using options(datatable.optimize=1)" -msgstr "GForce prod (gprod)不支持类型'%s',要么添加前缀 base::prod(.),要么使用选项datatable.optimize=1来关闭GForce优化。" +msgstr "" +"GForce prod (gprod)不支持类型'%s',要么添加前缀 base::prod(.),要么使用选项" +"datatable.optimize=1来关闭GForce优化。" #: ijoin.c:22 ijoin.c:243 msgid "" "Internal error: invalid value for 'mult'; this should have been caught " "before. please report to data.table issue tracker" -msgstr "内部错误:'mult'的值无效;这应该在之前被找到。请报告给data.table问题跟踪器" +msgstr "" +"内部错误:'mult'的值无效;这应该在之前被找到。请报告给data.table问题跟踪器" #: ijoin.c:29 ijoin.c:250 msgid "" "Internal error: invalid value for 'type'; this should have been caught " "before. please report to data.table issue tracker" -msgstr "内部错误:'type'的值无效;这应该在之前被找到。请报告给data.table问题跟踪器" +msgstr "" +"内部错误:'type'的值无效;这应该在之前被找到。请报告给data.table问题跟踪器" #: ijoin.c:56 ijoin.c:121 #, c-format @@ -3720,12 +3726,12 @@ msgstr "内部错误:在查找中出现未知的mult:%d" #: ijoin.c:128 #, c-format msgid "First pass on calculating lengths in lookup ... done in %8.3f seconds\n" -msgstr "查找的第一步:长度计算...在%8.3f秒内完成" +msgstr "查找的第一步:长度计算...在%8.3f秒内完成\n" #: ijoin.c:141 #, c-format msgid "Second pass on allocation in lookup ... done in %8.3f seconds\n" -msgstr "查找的第二步:分配...在%8.3f秒内完成" +msgstr "查找的第二步:分配...在%8.3f秒内完成\n" #: ijoin.c:160 #, c-format @@ -3742,7 +3748,7 @@ msgstr "内部错误:在在查找的过程中,mult=%d出现未知的类型 #: ijoin.c:220 #, c-format msgid "Final step in generating lookup ... done in %8.3f seconds\n" -msgstr "查找的最后一步:生成结果...在在%8.3f秒内完成" +msgstr "查找的最后一步:生成结果...在在%8.3f秒内完成\n" #: ijoin.c:323 #, c-format @@ -3753,7 +3759,7 @@ msgstr "内部错误:在重叠的过程中,mult=ALL出现未知类型:%d" #, c-format msgid "" "First pass on calculating lengths in overlaps ... done in %8.3f seconds\n" -msgstr "重叠的第一步:长度计算...在%8.3f秒内完成" +msgstr "重叠的第一步:长度计算...在%8.3f秒内完成\n" #: ijoin.c:464 ijoin.c:571 ijoin.c:720 #, c-format @@ -3768,7 +3774,7 @@ msgstr "内部错误:在重叠中出现未知的mult:%d" #: ijoin.c:727 #, c-format msgid "Final step, fetching indices in overlaps ... done in %8.3f seconds\n" -msgstr "重叠的最后一步:获取索引...在%8.3f秒内完成" +msgstr "重叠的最后一步:获取索引...在%8.3f秒内完成\n" #: init.c:231 #, c-format From 1b41217e316d4b54f9ced14427774fce3cfa1b56 Mon Sep 17 00:00:00 2001 From: Zhi Yang Date: Tue, 17 Dec 2019 23:03:11 -0800 Subject: [PATCH 64/78] Translation to zh_CN assigned to group 4 (#3997) * finish R-zh_CN.po * finish zh_CN.po * finalize two files * change author * make the package * finalize the messages * change the format of numbering * install the pacakge * delete excessive src folders * manually revert coding issues (open to a better solution... `iconv(bad_str, from = 'GBK'|'GB18030', to = 'UTF-8')` both returned something gibberish-y. * update mo files * update .mo * add in suggestions from gaospecial --- inst/po/zh_CN/LC_MESSAGES/R-data.table.mo | Bin 62912 -> 68515 bytes inst/po/zh_CN/LC_MESSAGES/data.table.mo | Bin 93306 -> 99832 bytes po/R-zh_CN.po | 75 ++++++++++------- po/zh_CN.po | 98 ++++++++++++---------- 4 files changed, 97 insertions(+), 76 deletions(-) diff --git a/inst/po/zh_CN/LC_MESSAGES/R-data.table.mo b/inst/po/zh_CN/LC_MESSAGES/R-data.table.mo index 022057748e97073ab569f23d7062a8f4ef61f572..12a6d7f7ef6be6bfe13f6311c7c20ef6373ba2d9 100644 GIT binary patch delta 14252 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 delta 8934 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 diff --git a/inst/po/zh_CN/LC_MESSAGES/data.table.mo b/inst/po/zh_CN/LC_MESSAGES/data.table.mo index 3495f3304d90496aa89fe0d785e6a30bce722050..dc5912aa5ed05a6ca4589d0a17e43b1175e8f1cf 100644 GIT binary patch delta 18896 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 diff --git a/po/R-zh_CN.po b/po/R-zh_CN.po index 29a16e1264..58b0aa7cf7 100644 --- a/po/R-zh_CN.po +++ b/po/R-zh_CN.po @@ -1,9 +1,9 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.5\n" -"POT-Creation-Date: 2019-12-17 11:02\n" -"PO-Revision-Date: 2019-10-31 15:46+08\n" -"Last-Translator: Amy Tzu-Yu Chen \n" +"POT-Creation-Date: 2019-10-21 16:15\n" +"PO-Revision-Date: 2019-10-04 17:06+08\n" +"Last-Translator: Zhi Yang \n" "Language-Team: Mandarin\n" "Language: Mandarin\n" "MIME-Version: 1.0\n" @@ -283,111 +283,121 @@ msgid "' (type character). Only valid character value is 'nearest'." msgstr "'(字符类型)。 唯一有效的字符值是'nearest'。" msgid "rollends must be a logical vector" -msgstr "" +msgstr "rollends必须是一个逻辑向量" msgid "rollends must be length 1 or 2" -msgstr "" +msgstr "rollends 的长度必须是 1 或者 2" msgid "" "nomatch= must be either NA or NULL (or 0 for backwards compatibility which " "is the same as NULL)" -msgstr "" +msgstr "nomatch= 必须是 NA 或 NULL (或者在向后兼容的情形下为 0,这等同于 NULL)" msgid "which= must be a logical vector length 1. Either FALSE, TRUE or NA." -msgstr "" +msgstr "which= 必须是一个长度为 1 的逻辑向量。其取值为 FALSE,TRUE 或者 NA。" msgid "which==" -msgstr "" +msgstr "which==" msgid "" "(meaning return row numbers) but j is also supplied. Either you need row " "numbers or the result of j, but only one type of result can be returned." -msgstr "" +msgstr "(表示行数会被返回) 但是 j 也被提供了。你可能需要行数或者是 j 的结果," +"但是只能返回一种结果。" msgid "" "which=NA with nomatch=0 would always return an empty vector. Please change " "or remove either which or nomatch." -msgstr "" +msgstr "同时使用 which=NA 和 nomatch=0 会得到一个空向量。请改变或者是移除 which" +"或 nomatch 的取值" msgid "j must be provided when with=FALSE" -msgstr "" +msgstr "如果with=FALSE(假),j必须要赋值" msgid "" "The symbol .. is invalid. The .. prefix must be followed by at least one " "character." -msgstr "" +msgstr "符号 .. 是无效的。前缀 .. 之后必须要有至少一个字符" msgid "Variable '" -msgstr "" +msgstr "变量 '" msgid "" "' is not found in calling scope. Looking in calling scope because you used " "the .. prefix." -msgstr "" +msgstr "' 并没有存在于调用环境中。之所以在调用环境中寻找是因为你使用了..的前缀" msgid "Variable '.." -msgstr "" +msgstr "变量 '.." msgid "" "' does exist in calling scope though, so please just removed the .. prefix " "from that variable name in calling scope." -msgstr "" +msgstr "' 并不存在于调用环境中。所以请移除在调用环境中那个变量名字的..前缀" msgid "Both '" -msgstr "" +msgstr "两个都有 '" msgid "' and '.." -msgstr "" +msgstr "' 和 '.." msgid "' exist in calling scope. Please remove the '.." -msgstr "" +msgstr "' 当前存在于调用环境. 请删除 '.." msgid "' variable in calling scope for clarity." -msgstr "" +msgstr "这个调用环境里的变量以方便理解" msgid "" "Internal error: DT[, ..var] should be dealt with by the branch above now." -msgstr "" +msgstr "内部错误: DT[, ..var]应该被分支处理中。" msgid "" "' is not found in calling scope. Looking in calling scope because you set " "with=FALSE. Also, please use .. symbol prefix and remove with=FALSE." -msgstr "" +msgstr "' 并没有存在于调用环境中。之所以在调用环境中搜索是因为你使用了" +"with=FALSE。请使用 .. 符号前缀并且移除 with=FALSE。" msgid "" "You have wrapped := with {} which is ok but then := must be the only thing " "inside {}. You have something else inside {} as well. Consider placing the " "{} on the RHS of := instead; e.g. DT[,someCol:={tmpVar1<-...;tmpVar2<-...;" "tmpVar1*tmpVar2}" -msgstr "" +msgstr "用 {} 套用 := 可行,但是 {} 中只能有 := 。而你现在 {} 中还有其他的参" +"数。请尝试将 {} 置于 := 的RHS之上;比如,DT[,someCol:={tmpVar1<-...; " +"tmpVar2<-...; tmpVar1*tmpVar2}" msgid "" ":= with keyby is only possible when i is not supplied since you can't setkey " "on a subset of rows. Either change keyby to by or remove i" -msgstr "" +msgstr ":=和keyby的组合只有在i没有赋值下才合理存在。因为你不能在一个行的子集" +"调用setkey。要么把keyby换成by或者是移除i" msgid "nomatch isn't relevant together with :=, ignoring nomatch" -msgstr "" +msgstr "nomatch 并不和 := 有任何的相关,将忽略nomatch" msgid "" "not-join '!' prefix is present on i but nomatch is provided. Please remove " "nomatch." -msgstr "" +msgstr "not-join '!' 前缀在 i 中存在,但是 nomatch 也被提供了。需要移除" +"nomatch。" msgid "is not found in calling scope" -msgstr "" +msgstr "不存在调用环境里" msgid "" "When the first argument inside DT[...] is a single symbol (e.g. DT[var]), " "data.table looks for var in calling scope." -msgstr "" +msgstr "当DT[...]的第一个参数是一个单个的符号(e.g. DT[var]),data.table会在" +"调用环境中搜寻var。" msgid "" "i is invalid type (matrix). Perhaps in future a 2 column matrix could return " "a list of elements of DT (in the spirit of A[B] in FAQ 2.14). Please report " "to data.table issue tracker if you'd like this, or add your comments to FR " "#657." -msgstr "" +msgstr "i不是一个有效的类型(矩阵)。也许在以后一个包含两列的矩阵会返回" +"包含一串元素的DT (请参考问答集2.14的A[B])。如果你有需求,请将此问题汇报给" +"data.table 问题追踪器或者是在FR中留下你的想法" msgid "" "When i is a data.table (or character vector), the columns to join by must be " @@ -395,10 +405,13 @@ msgid "" "and, marked as sorted, see ?setkey), or by sharing column names between x " "and i (i.e., a natural join). Keyed joins might have further speed benefits " "on very large data due to x being sorted in RAM." -msgstr "" +msgstr "但i是一个 data.table (或者是字符向量),必须使用 'on=' 参数指明参与连接" +"的列 (参见 ?data.table),可以是keying x(比如,已排序过,和标记已排序过,请参见" +"?setkey),或者是在x和i共用列的名字(比如,自然连接)。如果x有在内存被排序过," +"Keyed连接的速度会在非常大的数据上有较明显的提高。" msgid "Attempting to do natural join but no common columns in provided tables" -msgstr "" +msgstr "尝试进行自然连接然而并没有找到表格中相同的列" msgid "Internal error. Cannot by=.EACHI when joining to a secondary key, yet" msgstr "" diff --git a/po/zh_CN.po b/po/zh_CN.po index 09de494b68..7895548737 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -2,9 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-12-18 00:56+0800\n" -"PO-Revision-Date: 2019-10-31 17:27+08\n" -"Last-Translator: Amy Tzu-Yu Chen \n" +"POT-Creation-Date: 2019-11-21 21:16+0800\n" +"PO-Revision-Date: 2019-10-04 17:06+08\n" +"Last-Translator: Zhi Yang \n" "Language-Team: Mandarin\n" "Language: Mandarin\n" "MIME-Version: 1.0\n" @@ -563,12 +563,12 @@ msgstr "请使用 as.character() 把 integer64 类型的数值赋值给字符列 #: assign.c:1067 #, c-format msgid "Unsupported column type in assign.c:memrecycle '%s'" -msgstr "" +msgstr "assign.c:memrecycle '%s' 里有不支持的列的类型" #: assign.c:1114 #, c-format msgid "Internal error: writeNA passed a vector of type '%s'" -msgstr "" +msgstr "内部错误:writeNA 函数读取到了一个类型是'%s'的向量" #: assign.c:1145 #, c-format @@ -576,11 +576,13 @@ msgid "" "Internal error: savetl_init checks failed (%d %d %p %p). please report to " "data.table issue tracker." msgstr "" +"内部错误:savetl_init的校验失败 (%d %d %p %p),请将此问题汇报给data.table 问" +"题追踪器。" #: assign.c:1153 #, c-format msgid "Failed to allocate initial %d items in savetl_init" -msgstr "" +msgstr "不能为 savetl_init 最开始的 %d 个项分配空间" #: assign.c:1162 #, c-format @@ -588,58 +590,60 @@ msgid "" "Internal error: reached maximum %d items for savetl. Please report to data." "table issue tracker." msgstr "" +"内部错误:已经达到了 savetl 能处理的子项上限 %d。请将此问题汇报给data.table" +"问题追踪器。" #: assign.c:1169 #, c-format msgid "Failed to realloc saveds to %d items in savetl" -msgstr "" +msgstr "不能给 savetl 里的 %d 个项重新分配 saveds" #: assign.c:1175 #, c-format msgid "Failed to realloc savedtl to %d items in savetl" -msgstr "" +msgstr "不能给savetl里的 %d 个项提供 savetl" #: assign.c:1198 msgid "x must be a character vector" -msgstr "x必需为字符矢量" +msgstr "x 必须是一个字符向量" #: assign.c:1199 msgid "'which' must be an integer vector" -msgstr "" +msgstr "'which' 必须是一个整数向量" #: assign.c:1200 msgid "'new' must be a character vector" -msgstr "" +msgstr "'new' 必须是一个字符向量" #: assign.c:1201 #, c-format msgid "'new' is length %d. Should be the same as length of 'which' (%d)" -msgstr "" +msgstr "'new' 的长度是 %d。 它的长度必须和'which' (%d)的长度一致。" #: assign.c:1204 #, c-format msgid "" "Item %d of 'which' is %d which is outside range of the length %d character " "vector" -msgstr "" +msgstr "'which' 的 %d 项是 %d,这超出了 %d 字符的长度范围" #: assign.c:1214 msgid "dt passed to setcolorder has no names" -msgstr "" +msgstr "setcolorder读取到的dt并没有名字" #: assign.c:1216 #, c-format msgid "Internal error: dt passed to setcolorder has %d columns but %d names" -msgstr "" +msgstr "内部错误: setcolorder读取到的dt有 %d 列但是有 %d 个名字。" #: assign.c:1223 msgid "" "Internal error: o passed to Csetcolorder contains an NA or out-of-bounds" -msgstr "" +msgstr "内部错误: Csetcolorder读取到的o有一个NA(缺失值)或者是下标出界" #: assign.c:1225 msgid "Internal error: o passed to Csetcolorder contains a duplicate" -msgstr "" +msgstr "内部错误: Csetcolorder读取到的o含有一个重复值" #: between.c:12 #, c-format @@ -647,145 +651,149 @@ msgid "" "Incompatible vector lengths: length(x)==%d length(lower)==%d length(upper)==" "%d. Each should be either length 1 or the length of the longest." msgstr "" +"向量长度不一致:length(x)==%d length(lower)==%d length(upper)==%d。每一个向量" +"要么是长度为一或者是等于最长向量的长度。" #: between.c:16 msgid "incbounds must be TRUE or FALSE" -msgstr "" +msgstr "incbounds 必须是 TRUE (真) 或者是 FALSE (假)" #: between.c:19 msgid "NAbounds must be TRUE or NA" -msgstr "" +msgstr "NAbounds 必须是 TRUE (真) 或者是 FALSE (假)" #: between.c:22 msgid "check must be TRUE or FALSE" -msgstr "" +msgstr "check 必须是 TRUE (真) 或者是 FALSE (假)" #: between.c:64 #, c-format msgid "Item %d of lower (%d) is greater than item %d of upper (%d)" -msgstr "" +msgstr "lower (%2$d) 的 %1$d 项大于 upper (%3$d)的 %4$d 项" #: between.c:82 #, c-format msgid "between parallel processing of integer took %8.3fs\n" -msgstr "" +msgstr "整数的并行运行时间一共花费了 %8.3fs\n" #: between.c:88 msgid "x is integer64 but lower and/or upper are not." -msgstr "" +msgstr "x 是一个64位整数但是至少在 lower 和 upper 其中有一个不是。" #: between.c:95 #, c-format msgid "" "Item %d of lower (%) is greater than item %d of upper (%)" -msgstr "" +msgstr "lower (%2$) 的 %1$d 项大于 upper (%4$)的 %3$d 项" #: between.c:112 #, c-format msgid "between parallel processing of integer64 took %8.3fs\n" -msgstr "" +msgstr "64位整数的并行运行时间一共花费了 %8.3fs\n" #: between.c:115 msgid "" "x is not integer64 but lower and/or upper is integer64. Please align classes." msgstr "" +"x 不是一个64位整数但是 lower 和 upper 中至少有一个是64位整数,请保证所有" +"的变量类型一致。" #: between.c:122 #, c-format msgid "Item %d of lower (%f) is greater than item %d of upper (%f)" -msgstr "" +msgstr "lower (%2$f) 的 %1$d 项大于 upper (%4$f)的 %3$d 项" #: between.c:140 #, c-format msgid "between parallel processing of double with open bounds took %8.3fs\n" -msgstr "" +msgstr "不设界的双精度浮点数的并行运行时间一共花费了 %8.3fs\n" #: between.c:157 #, c-format msgid "between parallel processing of double with closed bounds took %8.3fs\n" -msgstr "" +msgstr "设界的双精度浮点数的并行运行时间一共花费了 %8.3fs\n" #: between.c:172 #, c-format msgid "Item %d of lower ('%s') is greater than item %d of upper ('%s')" -msgstr "" +msgstr "lower (%2$s) 的 %1$d 项大于 upper (%4$s)的 %3$d 项" #: between.c:187 #, c-format msgid "between non-parallel processing of character took %8.3fs\n" -msgstr "" +msgstr "字符的并行运行时间一共花费了 %8.3fs\n" #: between.c:190 #, c-format msgid "" "Internal error: between.c unsupported type '%s' should have been caught at R " "level" -msgstr "" +msgstr "内部错误: between.c 不支持 '%s' 类型这个问题应该在R运行的时候被发现。" #: bmerge.c:48 msgid "Internal error: icols is not integer vector" -msgstr "" +msgstr "内部错误: icols 不是一个整数向量" #: bmerge.c:49 msgid "Internal error: xcols is not integer vector" -msgstr "" +msgstr "内部错误: xcols 不是一个整数向量" #: bmerge.c:50 #, c-format msgid "Internal error: length(icols) [%d] > length(xcols) [%d]" -msgstr "" +msgstr "内部错误: icols[%1$d] 的长度大于 xcols[%2$d] 的长度" #: bmerge.c:57 #, c-format msgid "Internal error. icols[%d] is NA" -msgstr "" +msgstr "内部错误: icols[%d] 是 NA, 缺失值" #: bmerge.c:58 #, c-format msgid "Internal error. xcols[%d] is NA" -msgstr "" +msgstr "内部错误: xcols[%d] 是 NA, 缺失值" #: bmerge.c:59 #, c-format msgid "icols[%d]=%d outside range [1,length(i)=%d]" -msgstr "" +msgstr "icols[%1$d]=%2$d 造成了空间溢出,当前范围是[1,length(i)=%3$d]" #: bmerge.c:60 #, c-format msgid "xcols[%d]=%d outside range [1,length(x)=%d]" -msgstr "" +msgstr "xcols[%1$d]=%2$d 造成了空间溢出,当前范围是[1,length(i)=%3$d]" #: bmerge.c:63 #, c-format msgid "typeof x.%s (%s) != typeof i.%s (%s)" -msgstr "" +msgstr "x.%1$s (%2$s) 的数据类型和 i.%3$s (%4$s) 的数据类型并不一致" #: bmerge.c:70 msgid "roll is character but not 'nearest'" -msgstr "" +msgstr "roll 是字符但并不是最近的" #: bmerge.c:71 msgid "roll='nearest' can't be applied to a character column, yet." -msgstr "" +msgstr "roll='最近的'的功能当前并不能被使用在字符列。" #: bmerge.c:74 msgid "Internal error: roll is not character or double" -msgstr "" +msgstr "内部错误: roll 不是字符或者是浮点" #: bmerge.c:79 msgid "rollends must be a length 2 logical vector" -msgstr "" +msgstr "rollends 必须是一个长度为2的逻辑向量" #: bmerge.c:89 uniqlist.c:270 msgid "" "Internal error: invalid value for 'mult'. please report to data.table issue " "tracker" -msgstr "" +msgstr "内部错误: 'mult' 是无效值。 请将此问题汇报给 data.table 问题追踪器。" #: bmerge.c:93 msgid "" "Internal error: opArg is not an integer vector of length equal to length(on)" -msgstr "" +msgstr "内部错误: opArg 不是一个长度为 on 的整数向量" #: bmerge.c:96 msgid "Internal error: nqgrpArg must be an integer vector" From edefd0f118d4c04824b6f31d7727767ce4a9c28a Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Wed, 18 Dec 2019 15:04:50 +0800 Subject: [PATCH 65/78] update mo --- inst/po/zh_CN/LC_MESSAGES/R-data.table.mo | Bin 68515 -> 68486 bytes inst/po/zh_CN/LC_MESSAGES/data.table.mo | Bin 99832 -> 99837 bytes 2 files changed, 0 insertions(+), 0 deletions(-) diff --git a/inst/po/zh_CN/LC_MESSAGES/R-data.table.mo b/inst/po/zh_CN/LC_MESSAGES/R-data.table.mo index 12a6d7f7ef6be6bfe13f6311c7c20ef6373ba2d9..80f1aefc39a06efc9bcd61a00b2e011eee4f4040 100644 GIT binary patch delta 3802 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 O*YWqOfABGF_xT^hS3))b diff --git a/inst/po/zh_CN/LC_MESSAGES/data.table.mo b/inst/po/zh_CN/LC_MESSAGES/data.table.mo index dc5912aa5ed05a6ca4589d0a17e43b1175e8f1cf..a04104dce10894d38be2aeca2beb458df69de8b3 100644 GIT binary patch delta 4401 zcmZYB32>C<9mnzKArLttN7gmK64($3EKwmRL_i3ULm&iE?pqE;h@6JYupog52@+Uw zp`{f&h?PPE4VsvuRIMG0Z4s&MP+Muogpgq<9#yFd_WSdBGcwbi+4(%j`@YZnJkS6C z>|QI2ym*UFlKxE?2CH4esht*u#z`8X3#;3$l56Sn373e($IGY>0KE8&Z? z=042D5m<)f@qMp7`Bpd6Ld>WAFg}CVP&3=n*7Ya1vnHGR94x>nYULX6LA*QM-kRYQ zcH&t40LNi>mSY$$#}J;t4E)He$H%(?2H`!luf?TUgT1h~&p93!P+x;%@FVPleQvX6 zHijos(2~52nu*VE%`}{g8u%nG#*4TbC){pL8lFbQ$hTfSEy0>u)aT*d_$Dd_uH!1~ z-_dQ+5znuX@xo?UC)ZJddXWz?3v)WV;9H8C;eOQKeu&zNgn)a&M^G!b8`t6muRfK) z(shSWLHreJWqKsKiHyZDjBkERK{vMVYRx*_j%%<*H)|fp4Ooo-LA9?4x+uPk4^tnR zs33hF)&2=;rlCGANavwu7)8BUo!1_h>iUPGvTRi<`9Fuk&uCCS#@yku zVJs@`cBA(EJSuIdhwq_+N%0I%P*eS!s$~4qT_Z}*JpUrg7KaYx) z~KZ`~`(V3Y+e>W(i(J?b(chZYfJp2gY&KlK&n1V%i|Lv~#fo^`GEF zScy7O;|E)_4;P}++1z8zTO9G(*qQ3rL##Qf{Pz!aH@<~>vy@!7r_*pg^=EJ*{ulXq zFa^V`xlDaxo;5FF?!DH0iq~Z`7;sEIvKjnl3nJjN77OR9d})UGW=KFn1nnO+3!Sj#%Wm6Sq zWzAev(C$SYMCUN9CHGD64hBr8UXHnV3MZj`zy;M5>`A=@_29#(z5Eyz%{RRM><3-& z&AYw6h%$e%iOHebcM!nEg z)P2Eeu00d+BXO`Q_Cs1knIu_u2I2Oaf+1A`op%Aqdr%=(_ zfXaI_#~nDSsJ$PGDVAVEz4(r~?#HASwPKBU9y1?uKW1&`IrC62xCXUSRmh5l%|9sU z$G|_|Juna7p}q`t6z41;O>icvegk!|bYJNHFPuc3h@BsHGwh4QspsMxEJdCDm#`DI zd&I>=2)io(M^H$jV*zT3N>Tq}_o05b|AN{I{~{Odsi;^Ofx2%4Dr*j)1~`XWsVkU? zzDHf~jY7@5(5pwWm-7Fl3Rs6qr?|!5j}R&*#$W(fq4K^0l?_#>7deYdu+blS}cSH}z zeClCT(ESk=18tUD^9D}BFR|kaw*~E1y8E+n3hfhClK;Bl7c?juzeGiC-YWN?t@t$c zv#6QRdEEW+*o;c2_fh9Sevw;|O_)XfISk?lsQ(RLqE=$&YPZ6hP~+}jUDdV6;kZ@} z)Ni5w@5tGH=Mul5rqf3sZKOWU_ZZBeh}evPf8ly-V!fWBsOKDsq-FR*8Be%>VY;Wp z>$y&w{yVCzt=ES-NWp6LrE zZgfxA8x8k*me6)PWwkXur!;ajGtlBidb&i4(-Q{&nNridHzR-}(?oXEPdBN-HR^mA8yokWs;}79Sh};ieJgt=5L;JMcJV-I^@Sex zv`uMx^rg+O)gLTrsMyK?^+zjscwNo*#(fnG_VLCiqm?Uc$LQ4*+d7(*WV=^)>1Dre zbLadZmtEXj$u(C`mR~xx@6sz<>Pu_uYPaeY>yJhojvV4~8o%~X^{5QnuX#**kNMG4 u8*F0r-u`ynJ)MI~mabl~B3Qq>JoxysWt8e_j$SIQsz0`?I=0Au*6x4dnhHn& delta 4344 zcmZwJd2p508OQN+WK9qwgiC-+!i@yNB@oC4ktA%g$sQ0yb^>9M#RUiigEv3|r2!W% zAqDARl(j;UB8JjBR9kEmiv^jEFojVj0iup#sZQET>G$V(GxA68%$?79&UxSSzGr#P zy?4r*)|WMXGczXiura2sv8E@E$A|EF?17b@=kO8Y|6m&&V6B;ek6{cRzyWv~v+*vf z-|YLG1$c(|O`L`WjjSoh3yo~ZbhO4SY-~*{ENx=VAQ~!~S`&wta1qv{UM#PfHKkbU z*`m2MWyCMzNQ{lJCJPthlBt zl5rTW#_@RCtADVi8|hRWLwyBq$6D0L);!?aAB?i55Ahfrhb5?)yNHirV(39@hEgcP z(fA&Y#VDp@FwVpvR$>~S_2RpzsSdWbra#Wdr*I!8qA%K+gZaeyI10~VcZ_Lc%`6NJ zrl2W#4K)(uvt}xcMLqZsF2+xA6%J@?O$t_FI@Wn{T#Pj{iN|95tsQS-PBW>T^ZPJOT5pF`g*hR1Y2hZL~F3aX6k^i%~U>g<6$J?lE$nN3N zZar$vKS1Sglb-IymY~w-b<~6FQTL@LyR}}8n$dlz`>$YEY~Rbx*g(8RytWtluRLGY z+wIqkRG&jVI3msMm2r56_zWt2%hFx{=TLj4U53ks zV$=(M7ozYXg`R!f)Yao7#69}DseRh>kmogQL%ToIoou}^pLiK6zb|4E1|GJ?hoezz zpXa#+b&kA^Wf=N`!cqza{j6DnHK;Yq&2m#&h&nL#qo({k_QI~&ZfYlEE8=aKhkH>c zYO@?`cH%TtI)8_MhS?mh!*paBH5RVm`L#0e`@K z#Ft07nJ9kLn#;ro@jPxAX-!9*G|DZ}v#7Ls1LN=(YBNWTwx%^s!FIUVvjjI2{}NwS z{wI#H=I2d8NbIQ95d0HE?9`_cn@kVKSk~4+g^LpV{Y^1 zVhr^QP$y`}^9}}xpPNMfYqRa12@G$CyYEbw2 zrn>sUsLi(qU&Otr2c%DPGd3I75O2h8Xs5dase6cmI?6>gJdfH;2T=L@6>6&Qo8k6C z7HUdopf=k|4B&Ru+MYn|iCd@xD0!w^%4bk%dK|~$861rv-z;l#DdeG+;w{u}{W~h} zze623f!S^(8Q9g5*Qgg?Kga!;97WC8RlJ13JojVPXs$C8^@2-LGj$M|(U7@7p(hoQ z^IV6SSWTRdI*OC?NfVraif^M1mYDhO|H3iU3q~z)BTT@d#C>o!7NO4mE7%?zFLZk% z4&#*nSrp=Fn2MUBBGk|B3#i}iv#6zrT;z6p0JRsgQ1>lIWlcHi0oAB1xrXW3{7JX@ za!@1B^WrU-sQf>s0$xI;lU?ja+7Y!U2BIGqq4K^Il??|`FY-Pv!T(|bE?(m5uc2nF z!%}MoVt-7*5GpHacG50BVfZRY`7x%O~qWdBL;miuu zrh5;y2h20pybGi7du;ivTY|>R-Tg^8h5F&k$$#DODizv|U!rzx<_g!*bNB-B`>2sm zTIv3Htj1#EKcmip5e05WiZFwC7Y6XJsQ(S$qGn>sDmTMLsOMI!Iv$tstNSCa5jP{Q z3!m@(N$f2moj&?#A@#YB?_ECK!|$d<$8KHi_MBQ8u4v?4@j>|86u+-=;ZJ=;c`aST z@u|_lY+AHUEMNV}Qm!iA~+9J9ua=ic_7)M>1$)4QvmMbznj zeHxxx8a|)u_Z_E2=Zdaw7|XxHHqGyw^PDwJy_SKfeh!3F(xQXOMebji?kVwF>Z#Lz zN7X&x)uo4*rulXK4@H>|*4jtBeP{-Du~-|Z~#WIMOKdHR)` zm0N0mwy~~sYoL6romPI;#-F%g2Q+VbeRpwP`RS_85%yz$Regf}&?YUPQ;@%6$;}P# z)b1_0@zTZ{yGppIcJHo0mwAEf Date: Thu, 19 Dec 2019 12:34:45 +0800 Subject: [PATCH 66/78] My part of translation has been completed. It's so happy! (#4051) * messsage * Update R-zh_CN.po * Update R-zh_CN.po * Update zh_CN.po --- po/R-zh_CN.po | 48 +++++++++++++++++++++++------------- po/zh_CN.po | 67 +++++++++++++++++++++++++++++++++------------------ 2 files changed, 75 insertions(+), 40 deletions(-) diff --git a/po/R-zh_CN.po b/po/R-zh_CN.po index 709a08f069..92266b0656 100644 --- a/po/R-zh_CN.po +++ b/po/R-zh_CN.po @@ -1322,73 +1322,83 @@ msgid "A non-empty vector of column names or numbers is required for by.x" msgstr "'by.x' 必须是一个非空向量,包含列名或者序号" msgid "A non-empty vector of column names or numbers is required for by.y" -msgstr "" +msgstr "‘by.y’应该是具有列名或者数字非空向量" msgid "The first" -msgstr "" +msgstr "首先" msgid "columns of y's key must be identical to the columns specified in by.y." -msgstr "" +msgstr "在‘by.y’中,y键的列必须与指定的列相同" msgid "Elements listed in 'by.x' must be valid names in data.table 'x'" -msgstr "" +msgstr "对于data.table中的‘X’,‘by.x’中的元素必须是有效名称" msgid "" "Duplicate columns are not allowed in overlap joins. This may change in the " "future." msgstr "" +“搭接部分不允许出现重复列。” +“这个要求可能会在未来有所调整。” msgid "" "length(by.x) != length(by.y). Columns specified in by.x should correspond to " "columns specified in by.y and should be of same lengths." msgstr "" +“当by.x的长度不等于by.y时。by.x中指定的列应该与by.y中指定的列等长。” msgid "y has some duplicated column name(s):" -msgstr "" +msgstr "y有重复的列名时:" msgid "" "The last two columns in by.x should correspond to the 'start' and 'end' " "intervals in data.table 'x' and must be integer/numeric type." msgstr "" +“‘by.x’的最后两列应该与data.table ‘x’中的‘开始’与‘结尾’的间隔对应” +“且必须是整数/数字类型” msgid "NA values in data.table 'x' start column: '" -msgstr "" +msgstr "在data.table的X的初始列的NA值时:‘" msgid "" "'. All rows with NA values in the range columns must be removed for " "foverlaps() to work." msgstr "" +“’。必须删除范围列内的具有NA值的行,以(保证)foverlaps()起作用。” msgid "NA values in data.table 'x' end column: '" -msgstr "" +msgstr "在data.table的‘X’的末尾列中NA值时:" msgid "All entries in column" -msgstr "" +msgstr "列中所有条目" msgid "should be <= corresponding entries in column" -msgstr "" +msgstr "应该<=列中相应的条目" msgid "in data.table 'x'." -msgstr "" +msgstr "在data.table的‘X’部分" msgid "" "The last two columns in by.y should correspond to the 'start' and 'end' " "intervals in data.table 'y' and must be integer/numeric type." msgstr "" +“‘by.y’的最后两列应该与data.table ‘y’中的‘开始’与‘结尾’的间隔对应” +“且必须是整数/数字类型” msgid "NA values in data.table 'y' start column: '" -msgstr "" +msgstr "NA值在data.table的‘y’起始列时:" msgid "NA values in data.table 'y' end column: '" -msgstr "" +msgstr "NA值在data.table的‘y’尾列时:" msgid "in data.table 'y'." -msgstr "" +msgstr "在data.table的‘y’部分" msgid "" "Some interval cols are of type POSIXct while others are not. Please ensure " "all interval cols are (or are not) of POSIXct type" msgstr "" +“一些间隔列的类型是POSIXct而有些不是。” +“(因此)请确保所有间隔列都是或都不是POSIXct类型” msgid "" "POSIXct interval cols have mixed timezones. Overlaps are performed on the " @@ -1397,18 +1407,22 @@ msgid "" "overlap but their internal representations do Please ensure that POSIXct " "type interval cols have identical 'tzone' attributes to avoid confusion." msgstr "" +“POSIXct间隔列有混合的时区。” +“POSIXct对象(始终以UTC纪元时间为准)以内部数字表现形式展现为重叠,” +“因此显示的值可能(使用户)留下‘值是不会重叠,但其内部表现显示显示却重叠’的印象,” +“(所以)请确保POSIXct类型的间隔列具有相同的‘时区’属性以避免混乱。” msgid "Not yet implemented" -msgstr "" +msgstr "尚未实现" msgid "maxgap > minoverlap. maxgap will have no effect here." -msgstr "" +msgstr "最大空隙大于最小重叠,此处的最大空隙无效。" msgid "length(na.last) = 0" -msgstr "" +msgstr "na.last长度等于0" msgid "length(na.last) > 1, only the first element will be used" -msgstr "" +msgstr "当na.last长度大于1时,只会使用第一个元素" msgid "x is a single vector, non-NULL 'cols' doesn't make sense" msgstr "x是单个向量,非空的'cols'没有意义" diff --git a/po/zh_CN.po b/po/zh_CN.po index 53f0cc9da0..05faab9d44 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -2640,16 +2640,16 @@ msgstr "内部错误:freadR.c 中 skip 非整数或字符串" #: freadR.c:140 #, c-format msgid "Internal error: NAstringsArg is type '%s'. R level catches this" -msgstr "" +msgstr "内部错误:NAstringsArg是'%s'数据类型.R中能够捕获这个信息" #: freadR.c:153 #, c-format msgid "nThread(%d)<1" -msgstr "" +msgstr "nThread(%d)<1(线程数(%d)小于1)" #: freadR.c:160 msgid "'integer64' must be a single character string" -msgstr "" +msgstr "'64整数型'必须是单个字符串" #: freadR.c:168 #, c-format @@ -2657,66 +2657,72 @@ msgid "" "Invalid value integer64='%s'. Must be 'integer64', 'character', 'double' or " "'numeric'" msgstr "" +"64位整数型有效值='%s'.必须是'64位整数型','字符串','双精度浮点型'或者'数值型'" #: freadR.c:176 msgid "Use either select= or drop= but not both." -msgstr "" +msgstr "select=和drop=不可同时使用" #: freadR.c:179 msgid "" "select= is type list for specifying types in select=, but colClasses= has " "been provided as well. Please remove colClasses=." msgstr "" +"select=是用于在select=中指定类型的类型列表,但是还提供了colClasses=。请删除colClasses=。" #: freadR.c:181 msgid "" "select= is type list but has no names; expecting list(type1=cols1, " "type2=cols2, ...)" msgstr "" +"select =是类型列表,但没有名称; 期望列表(type1 = cols1,type2 = cols2,...)" #: freadR.c:188 msgid "" "select= is a named vector specifying the columns to select and their types, " "but colClasses= has been provided as well. Please remove colClasses=." msgstr "" +"select =是一个命名向量,用于指定要选择的列及其类型," +"但是还提供了colClasses =。 请删除colClasses =。" #: freadR.c:196 freadR.c:346 msgid "colClasses is type list but has no names" -msgstr "" +msgstr "colClasses是类型列表,但没有名称" #: freadR.c:206 #, c-format msgid "encoding='%s' invalid. Must be 'unknown', 'Latin-1' or 'UTF-8'" -msgstr "" +msgstr "encoding ='%s'无效。 必须为'未知','Latin-1'或'UTF-8' #: freadR.c:229 #, c-format msgid "Column name '%s' (%s) not found" -msgstr "" +msgstr "找不到列名'%s'(%s)" #: freadR.c:231 #, c-format msgid "%s is NA" -msgstr "" +msgstr "%s是缺失值" #: freadR.c:233 #, c-format msgid "%s is %d which is out of range [1,ncol=%d]" -msgstr "" +msgstr "%s是%d,超出范围[1,ncol =%d]" #: freadR.c:247 msgid "Internal error: typeSize[CT_BOOL8_N] != 1" -msgstr "" +msgstr "内部错误:类型大小[CT_BOOL8_N]不等于1" #: freadR.c:248 msgid "Internal error: typeSize[CT_STRING] != 1" -msgstr "" +msgstr "内部错误:类型大小[CT_STRING]不等于1" #: freadR.c:282 #, c-format msgid "" "Column name '%s' not found in column name header (case sensitive), skipping." msgstr "" +"在列名标题中找不到列名'%s'(区分大小写),正在跳过。" #: freadR.c:292 #, c-format @@ -2724,6 +2730,8 @@ msgid "" "Column number %d (select[%d]) is negative but should be in the range [1,ncol=" "%d]. Consider drop= for column exclusion." msgstr "" +"列号%d(select [%d])为负,但应在[1,ncol =%d]范围内。” +“考虑drop=用于排除列。" #: freadR.c:293 #, c-format @@ -2731,6 +2739,7 @@ msgid "" "select = 0 (select[%d]) has no meaning. All values of select should be in " "the range [1,ncol=%d]." msgstr "" +“select=0(select[%d])没有意义。select的所有值都应在[1,ncol=%d]范围内。” #: freadR.c:294 #, c-format @@ -2738,16 +2747,18 @@ msgid "" "Column number %d (select[%d]) is too large for this table, which only has %d " "columns." msgstr "" +“对于此表(仅包含%d列,)列号%d(select [%d])太大。” #: freadR.c:295 #, c-format msgid "Column number %d ('%s') has been selected twice by select=" -msgstr "" +msgstr "列号%d('%s')已由select =选择两次" #: freadR.c:313 msgid "" "colClasses='NULL' is not permitted; i.e. to drop all columns and load nothing" msgstr "" +“colClasses ='NULL'是不允许的; 即删除所有列而不加载任何内容” #: freadR.c:318 #, c-format @@ -2757,31 +2768,36 @@ msgid "" "a named vector, list format, or specify types using select= instead of " "colClasses=. Please see examples in ?fread." msgstr "" +"colClasses =是类型为%d的类型的未命名向量,但是有%d输入中的列。 +"要为列的子集指定类型,可以使用命名向量,列表格式或使用select=" +"而不是colClasses=。请参阅'?fread'中的示例。" #: freadR.c:329 msgid "Internal error: selectInts is NULL but selectColClasses is true" -msgstr "" +msgstr "内部错误:selectInts为NULL,但selectColClasses为true" #: freadR.c:330 msgid "" "Internal error: length(selectSxp)!=length(colClassesSxp) but " "selectColClasses is true" msgstr "" +"内部错误:length(select xp)!=length(colClasses xp), +"但select ColClasses为true" #: freadR.c:344 #, c-format msgid "colClasses is type '%s' but should be list or character" -msgstr "" +msgstr "colClasses是类型'%s',但应该是列表或字符" #: freadR.c:368 #, c-format msgid "Column name '%s' (colClasses[[%d]][%d]) not found" -msgstr "" +msgstr "找不到列名'%s'(colClasses[[%d]][%d])" #: freadR.c:370 #, c-format msgid "colClasses[[%d]][%d] is NA" -msgstr "" +msgstr "colClasses[[%d]][%d]是NA" #: freadR.c:374 #, c-format @@ -2789,41 +2805,43 @@ msgid "" "Column %d ('%s') appears more than once in colClasses. The second time is " "colClasses[[%d]][%d]." msgstr "" +"Column %d ('%s')在colClasses中出现了多次。" +"第二次是colClasses[[%d]][%d]." #: freadR.c:381 #, c-format msgid "Column number %d (colClasses[[%d]][%d]) is out of range [1,ncol=%d]" -msgstr "" +msgstr "列号%d(colClasses[[%d]][%d])超出范围[1,ncol=%d]" #: freadR.c:583 #, c-format msgid "Field size is 1 but the field is of type %d\n" -msgstr "" +msgstr "字段大小为1,但字段类型为%d \ n" #: freadR.c:592 #, c-format msgid "Internal error: unexpected field of size %d\n" -msgstr "" +msgstr "内部错误:大小为%d \ n的意外字段" #: freadR.c:660 #, c-format msgid "%s" -msgstr "" +msgstr "%s" #: froll.c:14 froll.c:223 froll.c:407 #, c-format msgid "%s: window width longer than input vector, returning all NA vector\n" -msgstr "" +msgstr "%s:窗口宽度比输入向量长,返回所有NA向量\n" #: froll.c:32 froll.c:240 froll.c:456 #, c-format msgid "%s: align %d, shift answer by %d\n" -msgstr "" +msgstr "%s:对齐%d,将答案移位%d\n" #: froll.c:39 froll.c:247 frolladaptive.c:19 frolladaptive.c:214 #, c-format msgid "%s: processing algo %u took %.3fs\n" -msgstr "" +msgstr "%s: 处理算法%u用了%.3fs\n" #: froll.c:48 froll.c:251 #, c-format @@ -2840,6 +2858,8 @@ msgid "" "%s: hasNA=FALSE used but NA (or other non-finite) value(s) are present in " "input, use default hasNA=NA to avoid this warning" msgstr "" +"%s:使用了hasNA = FALSE,但输入中存在NA(或其他非限定性)值," +"请使用默认的hasNA=NA以避免此警告" #: froll.c:71 froll.c:173 froll.c:274 froll.c:366 frolladaptive.c:61 #: frolladaptive.c:151 frolladaptive.c:250 frolladaptive.c:330 @@ -2848,6 +2868,7 @@ msgid "" "%s: NA (or other non-finite) value(s) are present in input, re-running with " "extra care for NAs\n" msgstr "" +"%s:输入中存在NA(或非限定值),请格外注意NA值并重新运行" #: froll.c:81 froll.c:284 #, c-format From cf9298413a9a0208144cc03725bcd3e2e0159d8f Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Thu, 19 Dec 2019 12:43:21 +0800 Subject: [PATCH 67/78] some revisions due to foreign char, touch-up, remove fuzzy --- inst/po/en@quot/LC_MESSAGES/data.table.mo | Bin 140270 -> 140270 bytes inst/po/zh_CN/LC_MESSAGES/R-data.table.mo | Bin 67801 -> 71640 bytes inst/po/zh_CN/LC_MESSAGES/data.table.mo | Bin 99837 -> 105633 bytes po/R-zh_CN.po | 52 ++++---- po/data.table.pot | 66 +++++----- po/zh_CN.po | 142 +++++++++++----------- 6 files changed, 130 insertions(+), 130 deletions(-) diff --git a/inst/po/en@quot/LC_MESSAGES/data.table.mo b/inst/po/en@quot/LC_MESSAGES/data.table.mo index e42ff1dc0a577b14f52eb8740746bbbc4c5a947c..4f754b0cc23ac7ece7b942b9b4dae0ae136e1f48 100644 GIT binary patch delta 25 hcmaENoa5bbj)pCa0b1;q3Wi2j#%9~YwHT-W1OSAN30VLD delta 25 hcmaENoa5bbj)pCa0b1-93Wlau2IkwtwHT-W1OSAN30VLD diff --git a/inst/po/zh_CN/LC_MESSAGES/R-data.table.mo b/inst/po/zh_CN/LC_MESSAGES/R-data.table.mo index 3042372a5f6dd3492fba92173088f65bc33b3506..c20f9cca5dd35fc45963e9bf5b0c5dcb3459c48c 100644 GIT binary patch delta 13068 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 SZP~TN!E)JgSB{${%JqMS=X2fw diff --git a/inst/po/zh_CN/LC_MESSAGES/data.table.mo b/inst/po/zh_CN/LC_MESSAGES/data.table.mo index a04104dce10894d38be2aeca2beb458df69de8b3..ffdd3b002f6dbaa417f8a2768a741900e43a34f2 100644 GIT binary patch delta 19484 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 diff --git a/po/R-zh_CN.po b/po/R-zh_CN.po index 92266b0656..bf05739b37 100644 --- a/po/R-zh_CN.po +++ b/po/R-zh_CN.po @@ -929,7 +929,7 @@ msgid "'old' is length" msgstr "'old' 长度为" msgid "but 'new' is length" -msgstr "‘new’ 的长度为" +msgstr "'new' 的长度为" msgid "NA (or out of bounds) in 'old' at positions" msgstr "NA(或超出界限)出现在'old' 的位置" @@ -1322,29 +1322,29 @@ msgid "A non-empty vector of column names or numbers is required for by.x" msgstr "'by.x' 必须是一个非空向量,包含列名或者序号" msgid "A non-empty vector of column names or numbers is required for by.y" -msgstr "‘by.y’应该是具有列名或者数字非空向量" +msgstr "'by.y'应该是具有列名或者数字非空向量" msgid "The first" msgstr "首先" msgid "columns of y's key must be identical to the columns specified in by.y." -msgstr "在‘by.y’中,y键的列必须与指定的列相同" +msgstr "在'by.y'中,y键的列必须与指定的列相同" msgid "Elements listed in 'by.x' must be valid names in data.table 'x'" -msgstr "对于data.table中的‘X’,‘by.x’中的元素必须是有效名称" +msgstr "对于data.table中的'X','by.x'中的元素必须是有效名称" msgid "" "Duplicate columns are not allowed in overlap joins. This may change in the " "future." msgstr "" -“搭接部分不允许出现重复列。” -“这个要求可能会在未来有所调整。” +"搭接部分不允许出现重复列。" +"这个要求可能会在未来有所调整。" msgid "" "length(by.x) != length(by.y). Columns specified in by.x should correspond to " "columns specified in by.y and should be of same lengths." msgstr "" -“当by.x的长度不等于by.y时。by.x中指定的列应该与by.y中指定的列等长。” +"当by.x的长度不等于by.y时。by.x中指定的列应该与by.y中指定的列等长。" msgid "y has some duplicated column name(s):" msgstr "y有重复的列名时:" @@ -1353,20 +1353,20 @@ msgid "" "The last two columns in by.x should correspond to the 'start' and 'end' " "intervals in data.table 'x' and must be integer/numeric type." msgstr "" -“‘by.x’的最后两列应该与data.table ‘x’中的‘开始’与‘结尾’的间隔对应” -“且必须是整数/数字类型” +"'by.x'的最后两列应该与data.table 'x'中的'开始'与'结尾'的间隔对应" +"且必须是整数/数字类型" msgid "NA values in data.table 'x' start column: '" -msgstr "在data.table的X的初始列的NA值时:‘" +msgstr "在data.table的X的初始列的NA值时:'" msgid "" "'. All rows with NA values in the range columns must be removed for " "foverlaps() to work." msgstr "" -“’。必须删除范围列内的具有NA值的行,以(保证)foverlaps()起作用。” +"'。必须删除范围列内的具有NA值的行,以(保证)foverlaps()起作用。" msgid "NA values in data.table 'x' end column: '" -msgstr "在data.table的‘X’的末尾列中NA值时:" +msgstr "在data.table的'X'的末尾列中NA值时:" msgid "All entries in column" msgstr "列中所有条目" @@ -1375,30 +1375,30 @@ msgid "should be <= corresponding entries in column" msgstr "应该<=列中相应的条目" msgid "in data.table 'x'." -msgstr "在data.table的‘X’部分" +msgstr "在data.table的'X'部分" msgid "" "The last two columns in by.y should correspond to the 'start' and 'end' " "intervals in data.table 'y' and must be integer/numeric type." msgstr "" -“‘by.y’的最后两列应该与data.table ‘y’中的‘开始’与‘结尾’的间隔对应” -“且必须是整数/数字类型” +"'by.y'的最后两列应该与data.table 'y'中的'开始'与'结尾'的间隔对应" +"且必须是整数/数字类型" msgid "NA values in data.table 'y' start column: '" -msgstr "NA值在data.table的‘y’起始列时:" +msgstr "NA值在data.table的'y'起始列时:" msgid "NA values in data.table 'y' end column: '" -msgstr "NA值在data.table的‘y’尾列时:" +msgstr "NA值在data.table的'y'尾列时:" msgid "in data.table 'y'." -msgstr "在data.table的‘y’部分" +msgstr "在data.table的'y'部分" msgid "" "Some interval cols are of type POSIXct while others are not. Please ensure " "all interval cols are (or are not) of POSIXct type" msgstr "" -“一些间隔列的类型是POSIXct而有些不是。” -“(因此)请确保所有间隔列都是或都不是POSIXct类型” +"一些间隔列的类型是POSIXct而有些不是。" +"(因此)请确保所有间隔列都是或都不是POSIXct类型" msgid "" "POSIXct interval cols have mixed timezones. Overlaps are performed on the " @@ -1407,10 +1407,10 @@ msgid "" "overlap but their internal representations do Please ensure that POSIXct " "type interval cols have identical 'tzone' attributes to avoid confusion." msgstr "" -“POSIXct间隔列有混合的时区。” -“POSIXct对象(始终以UTC纪元时间为准)以内部数字表现形式展现为重叠,” -“因此显示的值可能(使用户)留下‘值是不会重叠,但其内部表现显示显示却重叠’的印象,” -“(所以)请确保POSIXct类型的间隔列具有相同的‘时区’属性以避免混乱。” +"POSIXct间隔列有混合的时区。" +"POSIXct对象(始终以UTC纪元时间为准)以内部数字表现形式展现为重叠," +"因此显示的值可能(使用户)留下'值是不会重叠,但其内部表现显示显示却重叠'的印象," +"(所以)请确保POSIXct类型的间隔列具有相同的'时区'属性以避免混乱。" msgid "Not yet implemented" msgstr "尚未实现" @@ -2334,11 +2334,11 @@ msgstr "" #, fuzzy msgid "Argument 'nan' must be length 1" -msgstr "class 的长度必须为 1" +msgstr "" #, fuzzy msgid "Argument 'nan' must be NA or NaN" -msgstr "'id' 参数必须是一个逻辑标量。" +msgstr "" msgid "x not boolean" msgstr "" diff --git a/po/data.table.pot b/po/data.table.pot index 66b164693e..9ee90ce6b4 100644 --- a/po/data.table.pot +++ b/po/data.table.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.9\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-12-18 15:07+0800\n" +"POT-Creation-Date: 2019-12-19 12:36+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -3573,156 +3573,156 @@ msgstr "" msgid "Final step, fetching indices in overlaps ... done in %8.3f seconds\n" msgstr "" -#: init.c:231 +#: init.c:233 #, c-format msgid "" "Pointers are %d bytes, greater than 8. We have not tested on any " "architecture greater than 64bit yet." msgstr "" -#: init.c:245 +#: init.c:247 #, c-format msgid "Checking NA_INTEGER [%d] == INT_MIN [%d] %s" msgstr "" -#: init.c:246 +#: init.c:248 #, c-format msgid "Checking NA_INTEGER [%d] == NA_LOGICAL [%d] %s" msgstr "" -#: init.c:247 +#: init.c:249 #, c-format msgid "Checking sizeof(int) [%d] is 4 %s" msgstr "" -#: init.c:248 +#: init.c:250 #, c-format msgid "Checking sizeof(double) [%d] is 8 %s" msgstr "" -#: init.c:250 +#: init.c:252 #, c-format msgid "Checking sizeof(long long) [%d] is 8 %s" msgstr "" -#: init.c:251 +#: init.c:253 #, c-format msgid "Checking sizeof(pointer) [%d] is 4 or 8 %s" msgstr "" -#: init.c:252 +#: init.c:254 #, c-format msgid "Checking sizeof(SEXP) [%d] == sizeof(pointer) [%d] %s" msgstr "" -#: init.c:253 +#: init.c:255 #, c-format msgid "Checking sizeof(uint64_t) [%d] is 8 %s" msgstr "" -#: init.c:254 +#: init.c:256 #, c-format msgid "Checking sizeof(int64_t) [%d] is 8 %s" msgstr "" -#: init.c:255 +#: init.c:257 #, c-format msgid "Checking sizeof(signed char) [%d] is 1 %s" msgstr "" -#: init.c:256 +#: init.c:258 #, c-format msgid "Checking sizeof(int8_t) [%d] is 1 %s" msgstr "" -#: init.c:257 +#: init.c:259 #, c-format msgid "Checking sizeof(uint8_t) [%d] is 1 %s" msgstr "" -#: init.c:258 +#: init.c:260 #, c-format msgid "Checking sizeof(int16_t) [%d] is 2 %s" msgstr "" -#: init.c:259 +#: init.c:261 #, c-format msgid "Checking sizeof(uint16_t) [%d] is 2 %s" msgstr "" -#: init.c:262 +#: init.c:264 #, c-format msgid "Checking LENGTH(allocVector(INTSXP,2)) [%d] is 2 %s" msgstr "" -#: init.c:263 +#: init.c:265 #, c-format msgid "Checking TRUELENGTH(allocVector(INTSXP,2)) [%d] is 0 %s" msgstr "" -#: init.c:270 +#: init.c:272 #, c-format msgid "Checking memset(&i,0,sizeof(int)); i == (int)0 %s" msgstr "" -#: init.c:273 +#: init.c:275 #, c-format msgid "Checking memset(&ui, 0, sizeof(unsigned int)); ui == (unsigned int)0 %s" msgstr "" -#: init.c:276 +#: init.c:278 #, c-format msgid "Checking memset(&d, 0, sizeof(double)); d == (double)0.0 %s" msgstr "" -#: init.c:279 +#: init.c:281 #, c-format msgid "Checking memset(&ld, 0, sizeof(long double)); ld == (long double)0.0 %s" msgstr "" -#: init.c:282 +#: init.c:284 msgid "The ascii character '/' is not just before '0'" msgstr "" -#: init.c:283 +#: init.c:285 msgid "The C expression (uint_fast8_t)('/'-'0')<10 is true. Should be false." msgstr "" -#: init.c:284 +#: init.c:286 msgid "The ascii character ':' is not just after '9'" msgstr "" -#: init.c:285 +#: init.c:287 msgid "The C expression (uint_fast8_t)('9'-':')<10 is true. Should be false." msgstr "" -#: init.c:290 +#: init.c:292 #, c-format msgid "Conversion of NA_INT64 via double failed %!=%" msgstr "" -#: init.c:294 +#: init.c:296 msgid "NA_INT64_D (negative -0.0) is not == 0.0." msgstr "" -#: init.c:295 +#: init.c:297 msgid "NA_INT64_D (negative -0.0) is not ==-0.0." msgstr "" -#: init.c:296 +#: init.c:298 msgid "ISNAN(NA_INT64_D) is TRUE but should not be" msgstr "" -#: init.c:297 +#: init.c:299 msgid "isnan(NA_INT64_D) is TRUE but should not be" msgstr "" -#: init.c:326 +#: init.c:328 #, c-format msgid "PRINTNAME(install(\"integer64\")) has returned %s not %s" msgstr "" -#: init.c:395 +#: init.c:397 msgid ".Last.value in namespace is not a length 1 integer" msgstr "" diff --git a/po/zh_CN.po b/po/zh_CN.po index 05faab9d44..e073ee4acb 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-12-18 15:07+0800\n" +"POT-Creation-Date: 2019-12-19 12:36+0800\n" "PO-Revision-Date: 2019-10-04 17:06+08\n" "Last-Translator: Zhi Yang \n" "Language-Team: Mandarin\n" @@ -2645,7 +2645,7 @@ msgstr "内部错误:NAstringsArg是'%s'数据类型.R中能够捕获这个信 #: freadR.c:153 #, c-format msgid "nThread(%d)<1" -msgstr "nThread(%d)<1(线程数(%d)小于1)" +msgstr "nThread(%1$d)<1(线程数(%1$d)小于1)" #: freadR.c:160 msgid "'integer64' must be a single character string" @@ -2657,7 +2657,8 @@ msgid "" "Invalid value integer64='%s'. Must be 'integer64', 'character', 'double' or " "'numeric'" msgstr "" -"64位整数型有效值='%s'.必须是'64位整数型','字符串','双精度浮点型'或者'数值型'" +"64位整数型有效值='%s'.必须是'64位整数型','字符串','双精度浮点型'或者'数值" +"型'" #: freadR.c:176 msgid "Use either select= or drop= but not both." @@ -2668,22 +2669,24 @@ msgid "" "select= is type list for specifying types in select=, but colClasses= has " "been provided as well. Please remove colClasses=." msgstr "" -"select=是用于在select=中指定类型的类型列表,但是还提供了colClasses=。请删除colClasses=。" +"select=是用于在select=中指定类型的类型列表,但是还提供了colClasses=。请删除" +"colClasses=。" #: freadR.c:181 msgid "" "select= is type list but has no names; expecting list(type1=cols1, " "type2=cols2, ...)" msgstr "" -"select =是类型列表,但没有名称; 期望列表(type1 = cols1,type2 = cols2,...)" +"select =是类型列表,但没有名称; 期望列表(type1 = cols1,type2 = " +"cols2,...)" #: freadR.c:188 msgid "" "select= is a named vector specifying the columns to select and their types, " "but colClasses= has been provided as well. Please remove colClasses=." msgstr "" -"select =是一个命名向量,用于指定要选择的列及其类型," -"但是还提供了colClasses =。 请删除colClasses =。" +"select =是一个命名向量,用于指定要选择的列及其类型,但是还提供了colClasses " +"=。 请删除colClasses =。" #: freadR.c:196 freadR.c:346 msgid "colClasses is type list but has no names" @@ -2692,12 +2695,12 @@ msgstr "colClasses是类型列表,但没有名称" #: freadR.c:206 #, c-format msgid "encoding='%s' invalid. Must be 'unknown', 'Latin-1' or 'UTF-8'" -msgstr "encoding ='%s'无效。 必须为'未知','Latin-1'或'UTF-8' +msgstr "encoding ='%s'无效。 必须为'未知','Latin-1'或'UTF-8'" #: freadR.c:229 #, c-format msgid "Column name '%s' (%s) not found" -msgstr "找不到列名'%s'(%s)" +msgstr "找不到列名'%s'(%s)" #: freadR.c:231 #, c-format @@ -2707,7 +2710,7 @@ msgstr "%s是缺失值" #: freadR.c:233 #, c-format msgid "%s is %d which is out of range [1,ncol=%d]" -msgstr "%s是%d,超出范围[1,ncol =%d]" +msgstr "%s是%d,超出范围[1,ncol =%d]" #: freadR.c:247 msgid "Internal error: typeSize[CT_BOOL8_N] != 1" @@ -2721,8 +2724,7 @@ msgstr "内部错误:类型大小[CT_STRING]不等于1" #, c-format msgid "" "Column name '%s' not found in column name header (case sensitive), skipping." -msgstr "" -"在列名标题中找不到列名'%s'(区分大小写),正在跳过。" +msgstr "在列名标题中找不到列名'%s'(区分大小写),正在跳过。" #: freadR.c:292 #, c-format @@ -2730,8 +2732,8 @@ msgid "" "Column number %d (select[%d]) is negative but should be in the range [1,ncol=" "%d]. Consider drop= for column exclusion." msgstr "" -"列号%d(select [%d])为负,但应在[1,ncol =%d]范围内。” -“考虑drop=用于排除列。" +"列号%d(select [%d])为负,但应在[1,ncol =%d]范围内。考虑drop=用于排除" +"列。" #: freadR.c:293 #, c-format @@ -2739,26 +2741,24 @@ msgid "" "select = 0 (select[%d]) has no meaning. All values of select should be in " "the range [1,ncol=%d]." msgstr "" -“select=0(select[%d])没有意义。select的所有值都应在[1,ncol=%d]范围内。” +"select=0(select[%d])没有意义。select的所有值都应在[1,ncol=%d]范围内。" #: freadR.c:294 #, c-format msgid "" "Column number %d (select[%d]) is too large for this table, which only has %d " "columns." -msgstr "" -“对于此表(仅包含%d列,)列号%d(select [%d])太大。” +msgstr "对于此表(仅包含%d列,)列号%d(select [%d])太大。" #: freadR.c:295 #, c-format msgid "Column number %d ('%s') has been selected twice by select=" -msgstr "列号%d('%s')已由select =选择两次" +msgstr "列号%d('%s')已由select =选择两次" #: freadR.c:313 msgid "" "colClasses='NULL' is not permitted; i.e. to drop all columns and load nothing" -msgstr "" -“colClasses ='NULL'是不允许的; 即删除所有列而不加载任何内容” +msgstr "colClasses ='NULL'是不允许的; 即删除所有列而不加载任何内容" #: freadR.c:318 #, c-format @@ -2768,9 +2768,9 @@ msgid "" "a named vector, list format, or specify types using select= instead of " "colClasses=. Please see examples in ?fread." msgstr "" -"colClasses =是类型为%d的类型的未命名向量,但是有%d输入中的列。 -"要为列的子集指定类型,可以使用命名向量,列表格式或使用select=" -"而不是colClasses=。请参阅'?fread'中的示例。" +"colClasses =是类型为%d的类型的未命名向量,但是有%d输入中的列。要为列的子集" +"指定类型,可以使用命名向量,列表格式或使用select=而不是colClasses=。请参阅'?" +"fread'中的示例。" #: freadR.c:329 msgid "Internal error: selectInts is NULL but selectColClasses is true" @@ -2781,18 +2781,18 @@ msgid "" "Internal error: length(selectSxp)!=length(colClassesSxp) but " "selectColClasses is true" msgstr "" -"内部错误:length(select xp)!=length(colClasses xp), -"但select ColClasses为true" +"内部错误:length(select xp)!=length(colClasses xp),但select ColClasses" +"为true" #: freadR.c:344 #, c-format msgid "colClasses is type '%s' but should be list or character" -msgstr "colClasses是类型'%s',但应该是列表或字符" +msgstr "colClasses是类型'%s',但应该是列表或字符" #: freadR.c:368 #, c-format msgid "Column name '%s' (colClasses[[%d]][%d]) not found" -msgstr "找不到列名'%s'(colClasses[[%d]][%d])" +msgstr "找不到列名'%s'(colClasses[[%d]][%d])" #: freadR.c:370 #, c-format @@ -2805,23 +2805,24 @@ msgid "" "Column %d ('%s') appears more than once in colClasses. The second time is " "colClasses[[%d]][%d]." msgstr "" -"Column %d ('%s')在colClasses中出现了多次。" -"第二次是colClasses[[%d]][%d]." +"Column %d ('%s')在colClasses中出现了多次。第二次是colClasses[[%d]][%d]." #: freadR.c:381 #, c-format msgid "Column number %d (colClasses[[%d]][%d]) is out of range [1,ncol=%d]" -msgstr "列号%d(colClasses[[%d]][%d])超出范围[1,ncol=%d]" +msgstr "列号%d(colClasses[[%d]][%d])超出范围[1,ncol=%d]" #: freadR.c:583 #, c-format msgid "Field size is 1 but the field is of type %d\n" -msgstr "字段大小为1,但字段类型为%d \ n" +msgstr "字段大小为1,但字段类型为%d \n" #: freadR.c:592 #, c-format msgid "Internal error: unexpected field of size %d\n" -msgstr "内部错误:大小为%d \ n的意外字段" +msgstr "" +"内部错误:大小为%d " +"的意外字段\n" #: freadR.c:660 #, c-format @@ -2831,7 +2832,7 @@ msgstr "%s" #: froll.c:14 froll.c:223 froll.c:407 #, c-format msgid "%s: window width longer than input vector, returning all NA vector\n" -msgstr "%s:窗口宽度比输入向量长,返回所有NA向量\n" +msgstr "%s:窗口宽度比输入向量长,返回所有NA向量\n" #: froll.c:32 froll.c:240 froll.c:456 #, c-format @@ -2858,8 +2859,8 @@ msgid "" "%s: hasNA=FALSE used but NA (or other non-finite) value(s) are present in " "input, use default hasNA=NA to avoid this warning" msgstr "" -"%s:使用了hasNA = FALSE,但输入中存在NA(或其他非限定性)值," -"请使用默认的hasNA=NA以避免此警告" +"%s:使用了hasNA = FALSE,但输入中存在NA(或其他非限定性)值,请使用默认的" +"hasNA=NA以避免此警告" #: froll.c:71 froll.c:173 froll.c:274 froll.c:366 frolladaptive.c:61 #: frolladaptive.c:151 frolladaptive.c:250 frolladaptive.c:330 @@ -2867,8 +2868,7 @@ msgstr "" msgid "" "%s: NA (or other non-finite) value(s) are present in input, re-running with " "extra care for NAs\n" -msgstr "" -"%s:输入中存在NA(或非限定值),请格外注意NA值并重新运行" +msgstr "%s:输入中存在NA(或非限定值),请格外注意NA值并重新运行\n" #: froll.c:81 froll.c:284 #, c-format @@ -3805,156 +3805,156 @@ msgstr "内部错误:在重叠中出现未知的mult:%d" msgid "Final step, fetching indices in overlaps ... done in %8.3f seconds\n" msgstr "重叠的最后一步:获取索引...在%8.3f秒内完成\n" -#: init.c:231 +#: init.c:233 #, c-format msgid "" "Pointers are %d bytes, greater than 8. We have not tested on any " "architecture greater than 64bit yet." msgstr "指针是%d个字节,大于8。我们尚未在大于64位的任何体系结构上进行测试。" -#: init.c:245 +#: init.c:247 #, c-format msgid "Checking NA_INTEGER [%d] == INT_MIN [%d] %s" msgstr "检查NA_INTEGER [%d] == INT_MIN [%d] %s" -#: init.c:246 +#: init.c:248 #, c-format msgid "Checking NA_INTEGER [%d] == NA_LOGICAL [%d] %s" msgstr "检查Checking NA_INTEGER [%d] == NA_LOGICAL [%d] %s" -#: init.c:247 +#: init.c:249 #, c-format msgid "Checking sizeof(int) [%d] is 4 %s" msgstr "检查sizeof(int)[%d]是否为4 %s" -#: init.c:248 +#: init.c:250 #, c-format msgid "Checking sizeof(double) [%d] is 8 %s" msgstr "检查 sizeof(double) [%d]是否为8 %s" -#: init.c:250 +#: init.c:252 #, c-format msgid "Checking sizeof(long long) [%d] is 8 %s" msgstr "检查sizeof(long long) [%d]是否为8 %s" -#: init.c:251 +#: init.c:253 #, c-format msgid "Checking sizeof(pointer) [%d] is 4 or 8 %s" msgstr "检查sizeof(pointer) [%d]是否为4 或者 8 %s" -#: init.c:252 +#: init.c:254 #, c-format msgid "Checking sizeof(SEXP) [%d] == sizeof(pointer) [%d] %s" msgstr "检查sizeof(SEXP) [%d] == sizeof(pointer) [%d] %s" -#: init.c:253 +#: init.c:255 #, c-format msgid "Checking sizeof(uint64_t) [%d] is 8 %s" msgstr "检查 sizeof(uint64_t) [%d]是否为8 %s" -#: init.c:254 +#: init.c:256 #, c-format msgid "Checking sizeof(int64_t) [%d] is 8 %s" msgstr "检查sizeof(int64_t) [%d]是否为8 %s" -#: init.c:255 +#: init.c:257 #, c-format msgid "Checking sizeof(signed char) [%d] is 1 %s" msgstr "检查sizeof(signed char) [%d]是否为1 %s" -#: init.c:256 +#: init.c:258 #, c-format msgid "Checking sizeof(int8_t) [%d] is 1 %s" msgstr "检查sizeof(int8_t) [%d]是否为1 %s" -#: init.c:257 +#: init.c:259 #, c-format msgid "Checking sizeof(uint8_t) [%d] is 1 %s" msgstr "检查sizeof(uint8_t) [%d]是否为1 %s" -#: init.c:258 +#: init.c:260 #, c-format msgid "Checking sizeof(int16_t) [%d] is 2 %s" msgstr "检查sizeof(int16_t) [%d]是否为2 %s" -#: init.c:259 +#: init.c:261 #, c-format msgid "Checking sizeof(uint16_t) [%d] is 2 %s" msgstr "检查sizeof(uint16_t) [%d]是否为2 %s" -#: init.c:262 +#: init.c:264 #, c-format msgid "Checking LENGTH(allocVector(INTSXP,2)) [%d] is 2 %s" msgstr "检查LENGTH(allocVector(INTSXP,2)) [%d]是否为2 %s" -#: init.c:263 +#: init.c:265 #, c-format msgid "Checking TRUELENGTH(allocVector(INTSXP,2)) [%d] is 0 %s" msgstr "检查TRUELENGTH(allocVector(INTSXP,2)) [%d]是否为0 %s" -#: init.c:270 +#: init.c:272 #, c-format msgid "Checking memset(&i,0,sizeof(int)); i == (int)0 %s" msgstr "检查memset(&i,0,sizeof(int)); i == (int)0 %s" -#: init.c:273 +#: init.c:275 #, c-format msgid "Checking memset(&ui, 0, sizeof(unsigned int)); ui == (unsigned int)0 %s" msgstr "检查memset(&ui, 0, sizeof(unsigned int)); ui == (unsigned int)0 %s" -#: init.c:276 +#: init.c:278 #, c-format msgid "Checking memset(&d, 0, sizeof(double)); d == (double)0.0 %s" msgstr "检查memset(&d, 0, sizeof(double)); d == (double)0.0 %s" -#: init.c:279 +#: init.c:281 #, c-format msgid "Checking memset(&ld, 0, sizeof(long double)); ld == (long double)0.0 %s" msgstr "检查memset(&ld, 0, sizeof(long double)); ld == (long double)0.0 %s" -#: init.c:282 +#: init.c:284 msgid "The ascii character '/' is not just before '0'" msgstr "ASCII 字符 '/' 后一个字符并非字符 '0'" -#: init.c:283 +#: init.c:285 msgid "The C expression (uint_fast8_t)('/'-'0')<10 is true. Should be false." msgstr "C表达式 (uint_fast8_t)('/'-'0') <10 为 true. 应该是 false." -#: init.c:284 +#: init.c:286 msgid "The ascii character ':' is not just after '9'" msgstr "ascii字符':'不是在'9'后" -#: init.c:285 +#: init.c:287 msgid "The C expression (uint_fast8_t)('9'-':')<10 is true. Should be false." msgstr "C表达式(uint_fast8_t)('9'-':') < 10 为 true. 应该是 false." -#: init.c:290 +#: init.c:292 #, c-format msgid "Conversion of NA_INT64 via double failed %!=%" msgstr "double类型转化为NA_INT64失败,%!=%" -#: init.c:294 +#: init.c:296 msgid "NA_INT64_D (negative -0.0) is not == 0.0." msgstr "NA_INT64_D (negative -0.0) 不是 == 0.0." -#: init.c:295 +#: init.c:297 msgid "NA_INT64_D (negative -0.0) is not ==-0.0." msgstr "NA_INT64_D (negative -0.0) 不是 ==-0.0." -#: init.c:296 +#: init.c:298 msgid "ISNAN(NA_INT64_D) is TRUE but should not be" msgstr "ISNAN(NA_INT64_D) 不应该是TRUE" -#: init.c:297 +#: init.c:299 msgid "isnan(NA_INT64_D) is TRUE but should not be" msgstr "isnan(NA_INT64_D) 不应该是 TRUE" -#: init.c:326 +#: init.c:328 #, c-format msgid "PRINTNAME(install(\"integer64\")) has returned %s not %s" msgstr "PRINTNAME(install(\"integer64\")) 返回了 %s , 而不是 %s" -#: init.c:395 +#: init.c:397 msgid ".Last.value in namespace is not a length 1 integer" msgstr "命名空间中,.Last.value 不是一个长度为 1 的整型" @@ -4307,8 +4307,8 @@ msgid "" "Internal error in reorder.c: cannot reorder an ALTREP vector. Please see " "NEWS item 2 in v1.11.4 and report this as a bug." msgstr "" -"reorder.c中的内部错误:无法重新排序ALTREP向量。请参阅 v1.11.4 中“新" -"闻”(NEWS)的项目2,并将其作为 BUG 上报。" +"reorder.c中的内部错误:无法重新排序ALTREP向量。请参阅 v1.11.4 中\"新闻" +"\"(NEWS)的项目2,并将其作为 BUG 上报。" #: reorder.c:33 msgid "order must be an integer vector" From 72fb18120ad4ed1ea5085f272515544f7b04743c Mon Sep 17 00:00:00 2001 From: JulianYlli12 <43525270+JulianYlli12@users.noreply.github.com> Date: Sun, 22 Dec 2019 23:55:59 +0800 Subject: [PATCH 68/78] Translation yuliang li (#4055) * completed yuliang's translation * yuliang's work * Update zh_CN.po Co-authored-by: Michael Chirico --- po/zh_CN.po | 53 ++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 40 insertions(+), 13 deletions(-) diff --git a/po/zh_CN.po b/po/zh_CN.po index e073ee4acb..379177f697 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -2131,11 +2131,12 @@ msgstr "" msgid "" "Internal error: ncol==%d line==%d after detecting sep, ncol and first line" msgstr "" +"内部错误:检测分隔符,列数和首行后,ncol==%d line==%d" #: fread.c:1585 #, c-format msgid "Internal error: first line has field count %d but expecting %d" -msgstr "" +msgstr "内部错误:首行有%d个字段,但应该有%d个" #: fread.c:1587 #, c-format @@ -2143,54 +2144,61 @@ msgid "" " Detected %d columns on line %d. This line is either column names or first " "data row. Line starts as: <<%s>>\n" msgstr "" +"检测到第%2$d行有%1$d列。该行为列名或数据集首行。" +"该行以<<%3$s>>开始\n” #: fread.c:1589 #, c-format msgid " Quote rule picked = %d\n" -msgstr "" +msgstr "标点符号规则 = %d\n" #: fread.c:1590 #, c-format msgid " fill=%s and the most number of columns found is %d\n" -msgstr "" +msgstr "fill=%s 且找到的最大列数为 %d\n" #: fread.c:1596 msgid "" "This file is very unusual: it's one single column, ends with 2 or more end-" "of-line (representing several NA at the end), and is a multiple of 4096, too." msgstr "" +"该文件极为特殊,仅有一列数据,在结尾处包含多个行结束标记(表示多个空值)," +"且长度为4096的整数倍。" #: fread.c:1597 #, c-format msgid " Copying file in RAM. %s\n" -msgstr "" +msgstr "正在将文件拷贝到RAM。%s\n" #: fread.c:1603 msgid "" " 1-column file ends with 2 or more end-of-line. Restoring last eol using " "extra byte in cow page.\n" msgstr "" +"该文件包含一列数据,存在多个行结束标记(表示多个空值)。" +"正在使用写时复制页(cow, copy-on-write)额外的字节恢复最后一个标记.\n" #: fread.c:1622 msgid "" "[07] Detect column types, good nrow estimate and whether first row is column " "names\n" msgstr "" +"[07] 检测列类型,估计行数以及首行是否为列名\n" #: fread.c:1623 #, c-format msgid " 'header' changed by user from 'auto' to %s\n" -msgstr "" +msgstr " 用户已将'header'(列名)从 'auto' 改为 %s\n" #: fread.c:1627 #, c-format msgid "Failed to allocate 2 x %d bytes for type and tmpType: %s" -msgstr "" +msgstr "为 %2$s 类型分配 2 x %1$d bytes失败" #: fread.c:1648 #, c-format msgid " Number of sampling jump points = %d because " -msgstr "" +msgstr "采样跳点数 = %d 因为" #: fread.c:1649 #, c-format @@ -2206,14 +2214,14 @@ msgstr "" msgid "" "(% bytes from row 1 to eof) / (2 * % jump0size) == " "%\n" -msgstr "" +msgstr "(从首行到结束共 % bytes) / (2 * % jump0size) == %\n" #: fread.c:1689 #, c-format msgid "" " A line with too-%s fields (%d/%d) was found on line %d of sample jump %d. " "%s\n" -msgstr "" +msgstr "第%4$d个跳点所找到的第%3$d行,该行字段过于%1$s(%2$d/%3$d). " #: fread.c:1690 msgid "few" @@ -2239,18 +2247,23 @@ msgid "" " 'header' determined to be true due to column %d containing a string on row " "1 and a lower type (%s) in the rest of the %d sample rows\n" msgstr "" +" 'header' 参数设为真,原因是第%1$d列首行包含字符串," +"并且在样本中的另外%3$d行包含有较底层的数据类型(%2$s)\n" #: fread.c:1741 msgid "" "Internal error: row before first data row has the same number of fields but " "we're not using it." msgstr "" +"内部错误:数据首行的前一行包含相同数量的字段" +"但不会用到该行。" #: fread.c:1742 msgid "" "Internal error: ch!=pos after counting fields in the line before the first " "data row." msgstr "" +"内部错误:对数据首行前一行的字段计数后,ch不等于pos" #: fread.c:1743 #, c-format @@ -2258,6 +2271,8 @@ msgid "" "Types in 1st data row match types in 2nd data row but previous row has %d " "fields. Taking previous row as column names." msgstr "" +"数据第一行的类型与第二行相匹配,但是之前的行有" +" %d 个字段。故将第一行数据的前一行作为列名" #: fread.c:1746 #, c-format @@ -2265,6 +2280,8 @@ msgid "" "Detected %d column names but the data has %d columns (i.e. invalid file). " "Added %d extra default column name%s\n" msgstr "" +"检测到 %d 个列名,然而数据共有 %d 列(文件不合法)。" +"添加了 %d 个额外列名%s\n" #: fread.c:1747 msgid "" @@ -2282,6 +2299,8 @@ msgid "" "Internal error: fill=true but there is a previous row which should already " "have been filled." msgstr "" +"内部错误:参数fill=true,但是在此之前有一行" +"应当已经被填充。" #: fread.c:1750 #, c-format @@ -2289,11 +2308,13 @@ msgid "" "Detected %d column names but the data has %d columns. Filling rows " "automatically. Set fill=TRUE explicitly to avoid this warning.\n" msgstr "" +"检测到%d个列名,但数据共有%d列。已经自动填充。" +"设置参数fill=TRUE以屏蔽此警告。" #: fread.c:1754 #, c-format msgid "Failed to realloc 2 x %d bytes for type and tmpType: %s" -msgstr "" +msgstr "为 %2$s 类型重新分配 2 x %d bytes失败" #: fread.c:1774 #, c-format @@ -2301,6 +2322,7 @@ msgid "" " 'header' determined to be %s because there are%s number fields in the " "first and only row\n" msgstr "" +" 参数'header' 被设置为%s, 因为唯一的一行包含 %s 个字段\n" #: fread.c:1774 msgid "true" @@ -2319,12 +2341,14 @@ msgid "" " 'header' determined to be true because all columns are type string and a " "better guess is not possible\n" msgstr "" +"参数 'header' 被设置为true,因为所有列类型均为字符串\n" #: fread.c:1779 msgid "" " 'header' determined to be false because there are some number columns and " "those columns do not have a string field at the top of them\n" msgstr "" +"参数 'header' 被设置为false,因为部分字段的首行不为字符串\n" #: fread.c:1795 #, c-format @@ -2337,10 +2361,11 @@ msgid "" " All rows were sampled since file is small so we know nrow=% " "exactly\n" msgstr "" +" 文件太小,全部行均被采样到,所以 nrow=%llu\n" #: fread.c:1816 fread.c:1823 msgid " =====\n" -msgstr "" +msgstr " =====\n" #: fread.c:1817 #, c-format @@ -2348,6 +2373,7 @@ msgid "" " Sampled % rows (handled \\n inside quoted fields) at %d jump " "points\n" msgstr "" +" 已使用了 %1$d个跳点抽样 %2$llu 行(处理了字段间的分隔符\\n)\n" #: fread.c:1818 #, c-format @@ -2355,15 +2381,16 @@ msgid "" " Bytes from first data row on line %d to the end of last row: %\n" msgstr "" + #: fread.c:1819 #, c-format msgid " Line length: mean=%.2f sd=%.2f min=%d max=%d\n" -msgstr "" +msgstr "文件每行长度的统计量:均值=%.2f,标准差=%.2f,最小值=%d ,最大值=%d\n" #: fread.c:1820 #, c-format msgid " Estimated number of rows: % / %.2f = %\n" -msgstr "" +msgstr "估计数据共有 % / %.2f = % 行\n" #: fread.c:1821 #, c-format From 71db7e7ab09ac3f51a3ae3e02dc8ecb01f001f94 Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Mon, 23 Dec 2019 00:11:41 +0800 Subject: [PATCH 69/78] tweaks for syntax mistakes --- inst/po/en@quot/LC_MESSAGES/R-data.table.mo | Bin 89014 -> 89456 bytes inst/po/en@quot/LC_MESSAGES/data.table.mo | Bin 140270 -> 140270 bytes inst/po/zh_CN/LC_MESSAGES/data.table.mo | Bin 105633 -> 111146 bytes po/R-data.table.pot | 5 +- po/R-zh_CN.po | 40 +++--- po/data.table.pot | 50 ++++---- po/zh_CN.po | 127 +++++++++----------- 7 files changed, 103 insertions(+), 119 deletions(-) diff --git a/inst/po/en@quot/LC_MESSAGES/R-data.table.mo b/inst/po/en@quot/LC_MESSAGES/R-data.table.mo index a9e61974f94c3e93db98cdd64be795b853058027..858b4ec1beeb784d490a164ef8fff229e5a28e29 100644 GIT binary patch delta 12065 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 F{vSR%SsVZW delta 11630 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 Mtl|n`#<1l710zYQ1poj5 diff --git a/inst/po/en@quot/LC_MESSAGES/data.table.mo b/inst/po/en@quot/LC_MESSAGES/data.table.mo index 4f754b0cc23ac7ece7b942b9b4dae0ae136e1f48..1d85d8380e3f48d591c4147c4c3623fe8a398642 100644 GIT binary patch delta 26 icmaENoa5bbj)pCa{#qPH#tH@oRt5&!!?hTv{{#Sw$_aS@ delta 26 icmaENoa5bbj)pCa{#qP{mI{VOR>o%A!?hTv{{#SxYYB<~ diff --git a/inst/po/zh_CN/LC_MESSAGES/data.table.mo b/inst/po/zh_CN/LC_MESSAGES/data.table.mo index ffdd3b002f6dbaa417f8a2768a741900e43a34f2..52572aa808c7f6d0f1111f11af69b24852bebe78 100644 GIT binary patch delta 20020 zcmai)2V7Lg*1+##ODwVXc2!VNM8J+<@7P;ncYzg%z#G@Sk&L?vyiU%3ZVVc*$LPCEeF670ck!Mf1Vbq6v;ePlY>;q>-@IE{b<()#< z5SHp_7|mf*I2t|!)8XNchTDiE5z)yo7Q>y;gh8DRBMJ_LPryTPAUp}BlV!RXMoSnD zYr$lg2$w-=@ORi4*6C^(v}JUI&%$|7%6|`A!6&-84Wk8#h;D{a874yM>0DS7?uVD) zMK}Pi?QR&&pa%xQiaiX&7k1WkK&f~stOU=(0QfPK`W`?jU#+KN2RDiK7$#`LMpz#G zEbI?Ifa3MKy;RSK!42q6I1)bD+b~+gXxI>L(E2GT4gI89o%s+zfr-71$JBg-^g@ z{S0F$?HgrD%*HSQX2Bb9JWONw$?yu4Iq!-8rNODN0oEz=G!m^yWa@Kr7#rz zE<6MqK20#%@DP-a+Xx65sR`eL1GQdtl@=9zzI;IG#yHhbD)gyE6w7}hg8rEGALs(q|e5FD4r?rQ2Mj52l_iu zMp}VUN$`$`U12(87L9k^Bw|T4o1DV%Sk;yA;Yf_^1lb+F&FDySwy8S!e!LNVTi zVX(p^6+@9w-phc5k5LkT%Q74ToiGc|gC!DGN8ITod@;NWXTu+0Yv@d(6L1HV82A;| zf>o(Sf-o3Lxo8*!H$Z9V0%YqjY{{xzBy58|8_Lujfx+;5$a`+1-eeVY{b46EX2C#s z8dik2Ax<(Lz)CPWMU8k0?1p|2_JsFfZx~KM?S~5?&M{i28pbNP6`FW9gvb>R!A;F& z{kx_bMhyyVgLZfVO3>ArrcSBea3T6fa5;Q>x*A~~j6e^Xp|{MCN;|D)(mC2U){^KCFTq~0)-2UPl;$2N72k)WU?}rM+r|pG6qcfr7Vvo} zu6+Xzg+IgYu-6>LuUa>Wm`>=Op^RV-B#w;p zP#SDCU(o?s2*z4C5dIs6!pH?`3TMMebPpT?Ll)wHsdxeYodD0lrqFMZVf2NA;3l{U z$_U#oR*Z#G@j56Ky#vKVb<@>WI})}--v{xwQ2=F1qL-+8Pe2(+iKW^_{qW;>46C7d z;zuY!*m9Yg!wFC-JPn(|`>-=?KtPBGqo6ppK7#HTS?^EPaW9-XOn zzI9NR>v0$X??PFQ?&fQhOC3-;k_Aop9h450%~FTPGq5lE3YY+|LaC_7S~bG?um}1j zD8X52o!X$5L-EY#us!ryuRIwJ@wnSaBO!Bp1@?j^HYmM6lqs17qv2Pu6YR24aV{K) z{yJ;}D-tLTVQ<(9PJ$8}TcJ$J&#)Z~->kOwH0Uqu|3wmkWL$vl;XN1*TWnDsN`NxQ zhoQ{<&rr(OdqH(H5)May4z`9LL2+%V7gd9upbTspw8Ph+bgHyy7nF>A zC_z$to6>th37(lS2Fds_8&0aE$_u*V9^$dF1Fp}VMC>{PcjDd}}lLwc7-a@|)o5KsQs`B@t zbgca@#WdIn{opSAUx~zz7&^n^yH!tnKpELCC?hcTsI#CM3_y+0jD@w)SHq=nFO&|o z+pB_fClpUs-lvvZCn!^s3?pIoKKw7i_X`FIBH#UNi*Ph_Ko^_@KZi?Tj{_U$lbjmRPlydMB z=*~E880$$ypHb)h11PSkbymGF5jH@71zNEIYogbFO?j#{tcTto5`RVlTm#F$&h`wq z!{=f68_NCxY=$25rggJ&8>>i6!H^3(!Ju<$&Xb@7%?2pT@e1q*E4`)cRXz;%mi0fIgk+qD5?p`4meBVCcL4Yd6g>?}Fun?_ z!ppD1z~nIEdv@HLdx^Z-f+TYjWY!_iRQy9Q-| z#XiRWNhAV3Rt48X6a6(P1-{lS^@*Cp=1`_00ak)rp)`~O8^GI8rljm;70eBwOid@) z0>;BGa046!zqpM5JCg{!!W9}OLOYxdBj8Oq3fB8nb!a-QhW;WHj~vzdH?ThX?~oN| z)ci~>%gZnb-RG(*9|C_t9}8s)hqymiFV2D?7`8xh(Fago{7tjTHKmV$x3DjS(gEie z1R~r7JHg~H)v0&@PD3}oQd2S=RzzI`Q{hh72D)osS3x%f*2FL!O4Mh0BN4C~x(mu&FNNjcA)Wsklo-0N^-4EY{k>sl+BX~|S{d{RN`qfOU-(e# zzF#Z7H>`&}5!QgqVO_WbipSoB_2C^T^_2ZabvzihMjr~t!6i^UPzdYD`XBqPdSM3a zK*kGD=H?odj+Dq#G0_xGKwl15!|&lR==P|q*=1;=56V{!Plh|u*T9LeLxGx#mtaHm z(=eF!jhiGQVZ}lf>))nZM3W|TPw#p$;=H3mP!_81U@eb?`??GuO>|bi{9}kxz;Domb$-PE5`_^zDi5T>f#|Qn-mtE?YKMTWR3?{65Uj<`F zI2PRntHO_<^t?dpWqwsZu{40uVuuptk-sU%Lh;mm&1~2N{XJL#-h+){N%!w6nwvv; zp{M2~*b04>*585^(QiZX&;y;{?+?}Sxo`vamtapA{%;k`^P#Movrsy49ZEYTA1Jz; z>BJz|iHtNT4IP2C;CU!6`v$gvW&TuC(E&!F4~J4d6N;yHz(9Bs#=%0^4G#WGa53~NX0r~Fy-<4k2CNPLg2P~~;x_AWaza*? zkp)M>xg3S!fiGY`_#>1c?8yDDJ)8hV-v}j^PC@Jbf0Kknd&^Qb>r|Tw!_hNfCwK`; z2g^R8I0Q-ztk*1rQm);THtSn)8mw*Oo(Jn;uUSS$N5oSR@ zco}wqe?Xc0@Nzcm1H=Kv#ap3N{3fgqzk!3G&r>#QYaI%u!3(ekd;q1vs@!bP!2xgw ztX#q7w&vz|1)GtB;aeC9*HyGxzlwdU8Cl6@eGBHm*79Oy)v-QMR!IsJ7rz3fp|4>O ztX0KkZCrgcSHe*2pFoL`l2zR{YaIqvRfgf3v!JZc9Z-Vj5)6j-q3n1~s;LePg_1uL zN`*V&O!z*08b-1$O3=Oxhr;_%mS^7@%44hDB*azUKp9E3nkslA;Q;jYa1$(mblR9- z%Vyn})-%B}1*Ph!;A{+K%kBy#_>!S4!_!bab{j@Pv#yGv`LGST`yz>W5=K2$@w0F+ z>gQ1Au33GXwT`>P5cIup6ubdtRfL(U+z2QYI-yL#PAF%`4b9RGR7YAv$)5!2u-n*9 zLR|YXl;A4XP4@Fpty2ly)&uY%&C{ZKksGr(s31QV|L23&`| zcT=17>2(u!KyTJe#Xu~KKtBs*L;Dksg)xCFd)hbNAR)m~rn${JOvXc*%Qs;k_#>2{ z=@6uXW*!v#Cs0OOw}s8R2aJNUQ)a^~*gjb0e*k4_%7&?X!#^$gXs{e zf@dz2;Cml-g>_ph*H3^FtV^|i21*ACq3j=it!&nh%rQ__!)46}(1GsTS}pITP-5fL z)~x^WBy4SzOYE>e`dKLZK)JRm*hWH``@?V&ybh{z5!+R{G#=M_BQLTHyVav zKLPu~dr)GcbC}wwW`wy_#$60jAgqJxz(OecCs5|9Ubu?hnNWiA5ERedfHLw{5o*p| zP<_7p6d|_&gNX{Q_l#bvi3gtby|4O*jLN>SD9* z_g7#V`hc!BV-`FIr@^k>RFt2DvFO#iE4ra{tN@zOUB8ER36zn{fU=B^L+SDFP^PG7 zPxZo1C>5NC;_`>E7i`tbX8qhg6G}`JKnXJ6-YS18oR5AMN`ALK)E?m$`2p@WGT+Bc??kd5I8lpfa^qDC+jO2gSuUi=11jQ9^#Q!pILMzaDoh8Ll@ z_6L{%n-8;D|8Thx%6_qIxLOrgpj<#&jbQ!Dx_pL&%+(o~1S>wR=5h{{sre3ehK-+5 z!4?bOLjMZN{_yfh)j&R!U<)3lme+bHu~Kfdx_I<};;9N_)Rx|T4C`O!JRO7Zb)hIvOmnw+zzFo_u(?=Gu~$XG_w+lXC6SAy7&oh z<Z&p-08pj91}+c$@J6{sv{F_nuX( zKS@nNAI;@Zg7*Vh7a9p_`PPFYQD?)Nbnq(Nf$sh(QMqD$lFhh=;WhXX+~l+wD`8?X zrz3m-Wr}J}R?BP%lncl@DA9csR)P;<4Ol5f-yh%-^zLvgd><}_PM39xx{W_bEWj`) zRb7uuq^af81kS@g9Lk(ug$<$a6crP_pftP?O8)y$R!6O=s-wN2tfo0of;bn-#`Y7G zDF~e=17ZD5BoT^XH|zqh!x7M&u7YeT^h19ciU%%2nOmP3D!S`J$sZ1@!slRhxEeNq zuR__H-_`8%oXs%N&%-9N{tHR;gB4~f7mkIM(UYOfgXS4pBk;o?@uB*gq5KnZ1vZtp&IR#H>dx<$}#OVkAzLpQ=n{MTcE_oA=ubP5JMTj z!zJo43v@44E*=d(Cu1j+V|C6l#UoHUcpHk#{FW;h4uo>ZEQV6y5qJT917&aDy+SRw z51{DDE7eA|298A!%1|A2FDD@*+y;BV95?~~4&_i8wMxz1Tqr@b35pAkL2>P8P~QI? zhQl(e)jgs&l+~~p%4*pHWk)>*B?by1@4F52c@=bBp#(`96qjW{@x&1*QGFYV2g+wE zy*(7ykJDTPrJ;RLMtl)UjC>E}L#5gpwSR;{Sxv)XTUq}u5(yY~!zr*vmg->!l#0&7 z&hR@J0t447PmF`n=+8mp7%gyaCgAr$F1qd>Z+nh+dui zE9i1N+O6$7i{$%~Zb6y4K15JElrAWPk=;@o&v)2l!?=i4K>B3<*toL$SFEKF38zny ztE5ZwmiLK84?|wWz~mY~Ar*E0Hf*ENYa#MPz!5sHyXFKdhbypVZ%sB0d3qY-^vg%! zdst3uU3QMn$QiAZG}a<<=+B9wp9XNBHIz(J<;mTlb0SH9i)5ky0&gSi0M=6u?m%Qm zm1iI64s^LI@+axvkt(D|LwU9%J$2eL@aG4lBDVIFV?nx&2omy?L|T%LA@hC9!gr&7 znZ3+7kHnEbOP5cE*C^-IWj=vvNPYcoAn5}-y$%M%I{;RtN{ zy0ZVxBJF*O>2w%|?~uOeCh`RD$mt@F9ABJb#&1YI>Df@88I&0YTcLjlO=OF-|0M>0 z#7Tj!P@c_5P4tmkZwuvgktdk+Pf+&8MWnYvi3EyUM_C+v66ue~Gfu(iPuTzp{RodD zeu&%7pNSYhgYrBr8E`eMp>6NOK9p&TG}E?+l$nOyKt^I8ha!sdNK z$$J7xL|($U-)3aa_peCsx;gZ$X8@drG}Ev3hC9iT^F^K?bh%;h93ltWGnC1;a`|8N zNXxwZC5;E9<%E?dmUrcTGRe}|$;c~|`@rK(? zpkG4DW1A1H2m5q6=;c`|l_K)=q)<1~7m>!=))BTu{)OZtm38H7D8CvxjIEoz%#)^I z{T;yHPLzF}`~*av?yx6pjx3P&M^m7&J81|tKpnYs;Y{GGiD8DAjrh&-i`TF4i?97&m}V&n-#0K^kNCz-V}z ze0h4KKZ)*rwxicCqSqi}JhtYDJWVB_TaYM=;osV5G$Q*3)yiHo3o3J0^?nfbc)+0|Nn=!tHjK#iGGKxI) zvCFee)1y@D?>cO=is+IYN*#-}?FhVp6vOr+WmAKA;mw zq$AsrW5^}sCh`kXp&c6v(i<6rOheWn*~ls6L*x!3Q(6ZJM!F-*RHEZJ++jrU~WxX%RJ|%fgSh4@C%$pZg zB(J)S73Yy+J zCsHOt+hjS&>wB@uMMB=gN0#kpY;t6X&70?~qwbE!dD4F=LtbV^>k{rr@=R^>c5fOs zIgX^9gqO5=7@OqF^^1+zDyh8D)z1v4zVmiO-gReZCbg+G{3==AKAO6CwO7@zf>PXT zn}E$*uBtAVS)`oT_OaM9o42pw=B$wkk*B_bhy!2MtWRLpYR;u*c?ARLX_vEOR{_Mx*U2NXqlev_<%jDJ3<^K_UU2J1LYCkz!6vaVDBg>}jda zCT6PB^mCOqO!HCc7)PojB{4pU7s!lqkk8*}JFl9lagG#+X-{!rOG-tz|Gn~w_5|wvkNQoQGtuE~BHEddmYC$Ss!fe^Qr>Hc zahgfaR5Q*#gl`?DTdbYuNsNz7egv3)gGTD zBX~3vXOei(46%l8HxrywY0~P8zn?3>>+}={K38Luid^=@PxQ?J9BK-5UD9Me)$829v4 zhcp~bzmn~-jvyIqgglbyVoD{d{#2*4IdRfPM~J^)Obfr50CTF{WlnUaNr)t=()5|$ z>ux`rmYB>af-|?mZ5{e;U+!kBzvO6 zB_ma#8Dmeii%)~he$r7_sy!u@$a005;o*L+jvXJjCPQ{Pl5?K!(AE}c6;5y@#iquE znTZa2QiNYnD1DAmWVuApwM6?gkh3&A+ZH%LEf4R&q&914$6XIj=UVjUYJ4mA;~zJ>dbhX+5v*y`K2er>G(npx{rmftXN6sqgXXOL@t<*)`JTH*&K~z(pT2Zn z?J>&f6la#~W^#&SO1v}8Wv%q7aq-b{rYp{wmcS;Hkirf=U2Shs4o8yZ0S9ZtJ+F4A zectA#)^2NcKqk-Xm+GeF2HL?SG5+T7VuUQE-I@zVHk`nZR zW)j7$P*cl>!a1KV%Pm${wj({*zb`0y>B@Zl!z%T(cOs;I&L{P zk?4$<-H;X1D!6@{K=xc`kimYDQ}Xb!;%*5F>+lL;F?sg})^RGcAp5M97s`rzlqci* z+mz{LqlV2^WS=B4^0y+)jT)a?1wqE}Bs<51nVPxlc+H#}$3jXCY&%wOa^8|w>w#vh z(-~tXiPzbdAeT!uQ{G~?1Z`tcrxbYXC3gqU>3f#yKvu`g46pb;ODw~YPspz zw3W1H&HlV&a|$*t;BVo!<(}mWJ*#%hZ6WX2F3;X|`TN{QN*k)K$G3~3m04#$^{MJ^ z&Cm9vFS1@dLZ!EMuBFnvV=JVkz3U40?94lM=)cz|tLss9`Ag=w^EWSHtOW;8dR|!O z*|PZWH9hW=>LX*MK*8o0rHYj=(y9FQ`wRB$@eA>dp%&F2HONQ(k)p?s<{ew(*_@rf zH8+3rp1fmw>AWXnr)T?Gw_i)&m`9$WGlgg7dro9|4$h+p9?oB}PxZ~;FVxo+z|j-j zBE+OEank;io{Y70$h799aQ}|{wTtsk9#tK{;}la>NFVmDrvskt8}U5t6`ah>-|}Mq zR`=q%#?=A2^gznwELfA7n@mUsFrapGCDA%ERb&-N9b^rN@7 z9r5RQ4_0kpwC8OKBu5jtR{JAetJb&{X&#IO5hoY6UaV8~y$r(@j0cw%FR+fJl0pk-#Nz@!EJi9pW#7f-m62EY1 zz>6F`er+Sq zoid`6FBb0Gc589Q-BTM0H~ehf4j3Mu@ho2C$=&zJfZGmaSS4aiDS*EH6{Y7)FIaD@ zeQWVzB1*e0>wsxp7}QGPy0E)CRpL;Vg(oAo@RbFg^bJ;#%-bCYk4Of^5P{`G6JbS(Toj zlci%S_oQd(*1QvobWJK~RDFM&8$XE(-Ok8U%kxezD%y&lEIFouy{q74M&aUJo~7BI zZM!`S7s}jNyOCP8kM0C{CwF)bW)!YDoxgW`;ohB|)k`T^I=A0bwosp@)>v6%rrrzE z7u{O8f(tO$1y;AZFnG2fEIhnp-K+|>7lQv${?_6Z`D+ibJNn>Wdm&ceR>oblitk4FYEWq_Of?- z-tlGB$sDL^Jtx+9PG@Qly|nw0d)Do4X8Y1#MY6=bFo2%_0DJYTCN3;Zx8FbbhcH_o!{D)TP(8Z$YsFZ!K)3cVACI>Tgh&dcVfBBH-lY%oLG@st@%?kM}=xD@~$##Qm8sVYa#oYyl+*i zTv^nKd8aqiD_Jc*t5&T0D9TnpcW#ueU8!)c4c?j4=bW^8>Hv`@O=TUBWs$K|2Lpk$ ziepsod$~vAZErVr`}=t>%<{8K80Nif4k+>4&L)zt}j5#TZs^umV;m5Vq9?j)ls&Nms zK3DmuP__BUWI%ht!lfAxe4 zQqT5X?C27S3$wY(;C+q&4sx}R6W(NT{4pQe3DRp8uR4BXtsRrI>hV#z^fddw>`x|j w`4iR!s}@m8osqZJ9hUfDN3xddm?UlwYT8xsc=zfeW0z`5=k{G^d%DE`0h{Hz;Q#;t delta 14740 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 diff --git a/po/R-data.table.pot b/po/R-data.table.pot index 8de32bf985..caf1686ff2 100644 --- a/po/R-data.table.pot +++ b/po/R-data.table.pot @@ -1,7 +1,7 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.9\n" -"POT-Creation-Date: 2019-12-18 15:07\n" +"POT-Creation-Date: 2019-12-22 23:59\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -430,6 +430,9 @@ msgstr "" msgid "; using the most \"last\" names" msgstr "" +msgid "When .SDcols is a function, it is applied to each column; the output of this function must be a non-missing boolean scalar signalling inclusion/exclusion of the column. However, these conditions were not met for:" +msgstr "" + msgid ".SDcols missing at the following indices:" msgstr "" diff --git a/po/R-zh_CN.po b/po/R-zh_CN.po index bf05739b37..dedb9576ec 100644 --- a/po/R-zh_CN.po +++ b/po/R-zh_CN.po @@ -1,7 +1,7 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.5\n" -"POT-Creation-Date: 2019-12-18 15:07\n" +"POT-Creation-Date: 2019-12-22 23:59\n" "PO-Revision-Date: 2019-10-04 17:06+08\n" "Last-Translator: Zhi Yang \n" "Language-Team: Mandarin\n" @@ -569,6 +569,12 @@ msgstr "" msgid "; using the most \"last\" names" msgstr "" +msgid "" +"When .SDcols is a function, it is applied to each column; the output of this " +"function must be a non-missing boolean scalar signalling inclusion/exclusion " +"of the column. However, these conditions were not met for:" +msgstr "" + msgid ".SDcols missing at the following indices:" msgstr "" @@ -1336,15 +1342,12 @@ msgstr "对于data.table中的'X','by.x'中的元素必须是有效名称" msgid "" "Duplicate columns are not allowed in overlap joins. This may change in the " "future." -msgstr "" -"搭接部分不允许出现重复列。" -"这个要求可能会在未来有所调整。" +msgstr "搭接部分不允许出现重复列。这个要求可能会在未来有所调整。" msgid "" "length(by.x) != length(by.y). Columns specified in by.x should correspond to " "columns specified in by.y and should be of same lengths." -msgstr "" -"当by.x的长度不等于by.y时。by.x中指定的列应该与by.y中指定的列等长。" +msgstr "当by.x的长度不等于by.y时。by.x中指定的列应该与by.y中指定的列等长。" msgid "y has some duplicated column name(s):" msgstr "y有重复的列名时:" @@ -1353,8 +1356,8 @@ msgid "" "The last two columns in by.x should correspond to the 'start' and 'end' " "intervals in data.table 'x' and must be integer/numeric type." msgstr "" -"'by.x'的最后两列应该与data.table 'x'中的'开始'与'结尾'的间隔对应" -"且必须是整数/数字类型" +"'by.x'的最后两列应该与data.table 'x'中的'开始'与'结尾'的间隔对应且必须是整数/" +"数字类型" msgid "NA values in data.table 'x' start column: '" msgstr "在data.table的X的初始列的NA值时:'" @@ -1362,8 +1365,7 @@ msgstr "在data.table的X的初始列的NA值时:'" msgid "" "'. All rows with NA values in the range columns must be removed for " "foverlaps() to work." -msgstr "" -"'。必须删除范围列内的具有NA值的行,以(保证)foverlaps()起作用。" +msgstr "'。必须删除范围列内的具有NA值的行,以(保证)foverlaps()起作用。" msgid "NA values in data.table 'x' end column: '" msgstr "在data.table的'X'的末尾列中NA值时:" @@ -1381,8 +1383,8 @@ msgid "" "The last two columns in by.y should correspond to the 'start' and 'end' " "intervals in data.table 'y' and must be integer/numeric type." msgstr "" -"'by.y'的最后两列应该与data.table 'y'中的'开始'与'结尾'的间隔对应" -"且必须是整数/数字类型" +"'by.y'的最后两列应该与data.table 'y'中的'开始'与'结尾'的间隔对应且必须是整数/" +"数字类型" msgid "NA values in data.table 'y' start column: '" msgstr "NA值在data.table的'y'起始列时:" @@ -1397,8 +1399,8 @@ msgid "" "Some interval cols are of type POSIXct while others are not. Please ensure " "all interval cols are (or are not) of POSIXct type" msgstr "" -"一些间隔列的类型是POSIXct而有些不是。" -"(因此)请确保所有间隔列都是或都不是POSIXct类型" +"一些间隔列的类型是POSIXct而有些不是。(因此)请确保所有间隔列都是或都不是" +"POSIXct类型" msgid "" "POSIXct interval cols have mixed timezones. Overlaps are performed on the " @@ -1407,10 +1409,10 @@ msgid "" "overlap but their internal representations do Please ensure that POSIXct " "type interval cols have identical 'tzone' attributes to avoid confusion." msgstr "" -"POSIXct间隔列有混合的时区。" -"POSIXct对象(始终以UTC纪元时间为准)以内部数字表现形式展现为重叠," -"因此显示的值可能(使用户)留下'值是不会重叠,但其内部表现显示显示却重叠'的印象," -"(所以)请确保POSIXct类型的间隔列具有相同的'时区'属性以避免混乱。" +"POSIXct间隔列有混合的时区。POSIXct对象(始终以UTC纪元时间为准)以内部数字表现" +"形式展现为重叠,因此显示的值可能(使用户)留下'值是不会重叠,但其内部表现显示" +"显示却重叠'的印象,(所以)请确保POSIXct类型的间隔列具有相同的'时区'属性以避" +"免混乱。" msgid "Not yet implemented" msgstr "尚未实现" @@ -2332,11 +2334,9 @@ msgstr "" msgid "l not type list" msgstr "" -#, fuzzy msgid "Argument 'nan' must be length 1" msgstr "" -#, fuzzy msgid "Argument 'nan' must be NA or NaN" msgstr "" diff --git a/po/data.table.pot b/po/data.table.pot index 9ee90ce6b4..5041a04c94 100644 --- a/po/data.table.pot +++ b/po/data.table.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.9\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-12-19 12:36+0800\n" +"POT-Creation-Date: 2019-12-23 00:00+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -498,84 +498,84 @@ msgid "" "clarity." msgstr "" -#: assign.c:1067 +#: assign.c:1068 #, c-format msgid "Unsupported column type in assign.c:memrecycle '%s'" msgstr "" -#: assign.c:1114 +#: assign.c:1115 #, c-format msgid "Internal error: writeNA passed a vector of type '%s'" msgstr "" -#: assign.c:1145 +#: assign.c:1146 #, c-format msgid "" "Internal error: savetl_init checks failed (%d %d %p %p). please report to " "data.table issue tracker." msgstr "" -#: assign.c:1153 +#: assign.c:1154 #, c-format msgid "Failed to allocate initial %d items in savetl_init" msgstr "" -#: assign.c:1162 +#: assign.c:1163 #, c-format msgid "" "Internal error: reached maximum %d items for savetl. Please report to data." "table issue tracker." msgstr "" -#: assign.c:1169 +#: assign.c:1170 #, c-format msgid "Failed to realloc saveds to %d items in savetl" msgstr "" -#: assign.c:1175 +#: assign.c:1176 #, c-format msgid "Failed to realloc savedtl to %d items in savetl" msgstr "" -#: assign.c:1198 +#: assign.c:1199 msgid "x must be a character vector" msgstr "" -#: assign.c:1199 +#: assign.c:1200 msgid "'which' must be an integer vector" msgstr "" -#: assign.c:1200 +#: assign.c:1201 msgid "'new' must be a character vector" msgstr "" -#: assign.c:1201 +#: assign.c:1202 #, c-format msgid "'new' is length %d. Should be the same as length of 'which' (%d)" msgstr "" -#: assign.c:1204 +#: assign.c:1205 #, c-format msgid "" "Item %d of 'which' is %d which is outside range of the length %d character " "vector" msgstr "" -#: assign.c:1214 +#: assign.c:1215 msgid "dt passed to setcolorder has no names" msgstr "" -#: assign.c:1216 +#: assign.c:1217 #, c-format msgid "Internal error: dt passed to setcolorder has %d columns but %d names" msgstr "" -#: assign.c:1223 +#: assign.c:1224 msgid "" "Internal error: o passed to Csetcolorder contains an NA or out-of-bounds" msgstr "" -#: assign.c:1225 +#: assign.c:1226 msgid "Internal error: o passed to Csetcolorder contains a duplicate" msgstr "" @@ -3982,34 +3982,34 @@ msgid "" "'message'|'warning'|'error'|'none'. See news item 5 in v1.12.2." msgstr "" -#: rbindlist.c:297 +#: rbindlist.c:298 #, c-format msgid "" "Column %d of item %d has type 'factor' but has no levels; i.e. malformed." msgstr "" -#: rbindlist.c:315 +#: rbindlist.c:316 #, c-format msgid "" "Class attribute on column %d of item %d does not match with column %d of " "item %d." msgstr "" -#: rbindlist.c:325 +#: rbindlist.c:326 #, c-format msgid "" "Internal error: column %d of result is determined to be integer64 but " "maxType=='%s' != REALSXP" msgstr "" -#: rbindlist.c:361 +#: rbindlist.c:362 #, c-format msgid "" "Failed to allocate working memory for %d ordered factor levels of result " "column %d" msgstr "" -#: rbindlist.c:382 +#: rbindlist.c:383 #, c-format msgid "" "Column %d of item %d is an ordered factor but level %d ['%s'] is missing " @@ -4018,7 +4018,7 @@ msgid "" "factor will be created for this column." msgstr "" -#: rbindlist.c:387 +#: rbindlist.c:388 #, c-format msgid "" "Column %d of item %d is an ordered factor with '%s'<'%s' in its levels. But " @@ -4026,14 +4026,14 @@ msgid "" "will be created for this column due to this ambiguity." msgstr "" -#: rbindlist.c:432 +#: rbindlist.c:433 #, c-format msgid "" "Failed to allocate working memory for %d factor levels of result column %d " "when reading item %d of item %d" msgstr "" -#: rbindlist.c:522 +#: rbindlist.c:523 #, c-format msgid "Column %d of item %d: %s" msgstr "" diff --git a/po/zh_CN.po b/po/zh_CN.po index 379177f697..4816440eb6 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-12-19 12:36+0800\n" +"POT-Creation-Date: 2019-12-23 00:00+0800\n" "PO-Revision-Date: 2019-10-04 17:06+08\n" "Last-Translator: Zhi Yang \n" "Language-Team: Mandarin\n" @@ -560,17 +560,17 @@ msgid "" "clarity." msgstr "请使用 as.character() 把 integer64 类型的数值赋值给字符列" -#: assign.c:1067 +#: assign.c:1068 #, c-format msgid "Unsupported column type in assign.c:memrecycle '%s'" msgstr "assign.c:memrecycle '%s' 里有不支持的列的类型" -#: assign.c:1114 +#: assign.c:1115 #, c-format msgid "Internal error: writeNA passed a vector of type '%s'" msgstr "内部错误:writeNA 函数读取到了一个类型是'%s'的向量" -#: assign.c:1145 +#: assign.c:1146 #, c-format msgid "" "Internal error: savetl_init checks failed (%d %d %p %p). please report to " @@ -579,12 +579,12 @@ msgstr "" "内部错误:savetl_init的校验失败 (%d %d %p %p),请将此问题汇报给data.table 问" "题追踪器。" -#: assign.c:1153 +#: assign.c:1154 #, c-format msgid "Failed to allocate initial %d items in savetl_init" msgstr "不能为 savetl_init 最开始的 %d 个项分配空间" -#: assign.c:1162 +#: assign.c:1163 #, c-format msgid "" "Internal error: reached maximum %d items for savetl. Please report to data." @@ -593,55 +593,55 @@ msgstr "" "内部错误:已经达到了 savetl 能处理的子项上限 %d。请将此问题汇报给data.table问" "题追踪器。" -#: assign.c:1169 +#: assign.c:1170 #, c-format msgid "Failed to realloc saveds to %d items in savetl" msgstr "不能给 savetl 里的 %d 个项重新分配 saveds" -#: assign.c:1175 +#: assign.c:1176 #, c-format msgid "Failed to realloc savedtl to %d items in savetl" msgstr "不能给savetl里的 %d 个项提供 savetl" -#: assign.c:1198 +#: assign.c:1199 msgid "x must be a character vector" msgstr "x 必须是一个字符向量" -#: assign.c:1199 +#: assign.c:1200 msgid "'which' must be an integer vector" msgstr "'which' 必须是一个整数向量" -#: assign.c:1200 +#: assign.c:1201 msgid "'new' must be a character vector" msgstr "'new' 必须是一个字符向量" -#: assign.c:1201 +#: assign.c:1202 #, c-format msgid "'new' is length %d. Should be the same as length of 'which' (%d)" msgstr "'new' 的长度是 %d。 它的长度必须和'which' (%d)的长度一致。" -#: assign.c:1204 +#: assign.c:1205 #, c-format msgid "" "Item %d of 'which' is %d which is outside range of the length %d character " "vector" msgstr "'which' 的 %d 项是 %d,这超出了 %d 字符的长度范围" -#: assign.c:1214 +#: assign.c:1215 msgid "dt passed to setcolorder has no names" msgstr "setcolorder读取到的dt并没有名字" -#: assign.c:1216 +#: assign.c:1217 #, c-format msgid "Internal error: dt passed to setcolorder has %d columns but %d names" msgstr "内部错误: setcolorder读取到的dt有 %d 列但是有 %d 个名字。" -#: assign.c:1223 +#: assign.c:1224 msgid "" "Internal error: o passed to Csetcolorder contains an NA or out-of-bounds" msgstr "内部错误: Csetcolorder读取到的o有一个NA(缺失值)或者是下标出界" -#: assign.c:1225 +#: assign.c:1226 msgid "Internal error: o passed to Csetcolorder contains a duplicate" msgstr "内部错误: Csetcolorder读取到的o含有一个重复值" @@ -2130,8 +2130,7 @@ msgstr "" #, c-format msgid "" "Internal error: ncol==%d line==%d after detecting sep, ncol and first line" -msgstr "" -"内部错误:检测分隔符,列数和首行后,ncol==%d line==%d" +msgstr "内部错误:检测分隔符,列数和首行后,ncol==%d line==%d" #: fread.c:1585 #, c-format @@ -2143,9 +2142,7 @@ msgstr "内部错误:首行有%d个字段,但应该有%d个" msgid "" " Detected %d columns on line %d. This line is either column names or first " "data row. Line starts as: <<%s>>\n" -msgstr "" -"检测到第%2$d行有%1$d列。该行为列名或数据集首行。" -"该行以<<%3$s>>开始\n” +msgstr "检测到第%2$d行有%1$d列。该行为列名或数据集首行。该行以<<%3$s>>开始\n" #: fread.c:1589 #, c-format @@ -2162,8 +2159,8 @@ msgid "" "This file is very unusual: it's one single column, ends with 2 or more end-" "of-line (representing several NA at the end), and is a multiple of 4096, too." msgstr "" -"该文件极为特殊,仅有一列数据,在结尾处包含多个行结束标记(表示多个空值)," -"且长度为4096的整数倍。" +"该文件极为特殊,仅有一列数据,在结尾处包含多个行结束标记(表示多个空值),且" +"长度为4096的整数倍。" #: fread.c:1597 #, c-format @@ -2175,15 +2172,14 @@ msgid "" " 1-column file ends with 2 or more end-of-line. Restoring last eol using " "extra byte in cow page.\n" msgstr "" -"该文件包含一列数据,存在多个行结束标记(表示多个空值)。" -"正在使用写时复制页(cow, copy-on-write)额外的字节恢复最后一个标记.\n" +"该文件包含一列数据,存在多个行结束标记(表示多个空值)。正在使用写时复制页" +"(cow, copy-on-write)额外的字节恢复最后一个标记.\n" #: fread.c:1622 msgid "" "[07] Detect column types, good nrow estimate and whether first row is column " "names\n" -msgstr "" -"[07] 检测列类型,估计行数以及首行是否为列名\n" +msgstr "[07] 检测列类型,估计行数以及首行是否为列名\n" #: fread.c:1623 #, c-format @@ -2214,14 +2210,15 @@ msgstr "" msgid "" "(% bytes from row 1 to eof) / (2 * % jump0size) == " "%\n" -msgstr "(从首行到结束共 % bytes) / (2 * % jump0size) == %\n" +msgstr "" +"(从首行到结束共 % bytes) / (2 * % jump0size) == %\n" #: fread.c:1689 #, c-format msgid "" " A line with too-%s fields (%d/%d) was found on line %d of sample jump %d. " "%s\n" -msgstr "第%4$d个跳点所找到的第%3$d行,该行字段过于%1$s(%2$d/%3$d). " +msgstr "第%5$d个跳点所找到的第%4$d行,该行字段过于%1$s(%2$d/%3$d). %6$s\n" #: fread.c:1690 msgid "few" @@ -2247,23 +2244,20 @@ msgid "" " 'header' determined to be true due to column %d containing a string on row " "1 and a lower type (%s) in the rest of the %d sample rows\n" msgstr "" -" 'header' 参数设为真,原因是第%1$d列首行包含字符串," -"并且在样本中的另外%3$d行包含有较底层的数据类型(%2$s)\n" +" 'header' 参数设为真,原因是第%1$d列首行包含字符串,并且在样本中的另外%3$d行" +"包含有较底层的数据类型(%2$s)\n" #: fread.c:1741 msgid "" "Internal error: row before first data row has the same number of fields but " "we're not using it." -msgstr "" -"内部错误:数据首行的前一行包含相同数量的字段" -"但不会用到该行。" +msgstr "内部错误:数据首行的前一行包含相同数量的字段但不会用到该行。" #: fread.c:1742 msgid "" "Internal error: ch!=pos after counting fields in the line before the first " "data row." -msgstr "" -"内部错误:对数据首行前一行的字段计数后,ch不等于pos" +msgstr "内部错误:对数据首行前一行的字段计数后,ch不等于pos" #: fread.c:1743 #, c-format @@ -2271,8 +2265,8 @@ msgid "" "Types in 1st data row match types in 2nd data row but previous row has %d " "fields. Taking previous row as column names." msgstr "" -"数据第一行的类型与第二行相匹配,但是之前的行有" -" %d 个字段。故将第一行数据的前一行作为列名" +"数据第一行的类型与第二行相匹配,但是之前的行有 %d 个字段。故将第一行数据的前" +"一行作为列名" #: fread.c:1746 #, c-format @@ -2280,8 +2274,7 @@ msgid "" "Detected %d column names but the data has %d columns (i.e. invalid file). " "Added %d extra default column name%s\n" msgstr "" -"检测到 %d 个列名,然而数据共有 %d 列(文件不合法)。" -"添加了 %d 个额外列名%s\n" +"检测到 %d 个列名,然而数据共有 %d 列(文件不合法)。添加了 %d 个额外列名%s\n" #: fread.c:1747 msgid "" @@ -2298,9 +2291,7 @@ msgstr "" msgid "" "Internal error: fill=true but there is a previous row which should already " "have been filled." -msgstr "" -"内部错误:参数fill=true,但是在此之前有一行" -"应当已经被填充。" +msgstr "内部错误:参数fill=true,但是在此之前有一行应当已经被填充。" #: fread.c:1750 #, c-format @@ -2308,21 +2299,19 @@ msgid "" "Detected %d column names but the data has %d columns. Filling rows " "automatically. Set fill=TRUE explicitly to avoid this warning.\n" msgstr "" -"检测到%d个列名,但数据共有%d列。已经自动填充。" -"设置参数fill=TRUE以屏蔽此警告。" +"检测到%d个列名,但数据共有%d列。已经自动填充。设置参数fill=TRUE以屏蔽此警告。\n" #: fread.c:1754 #, c-format msgid "Failed to realloc 2 x %d bytes for type and tmpType: %s" -msgstr "为 %2$s 类型重新分配 2 x %d bytes失败" +msgstr "为 %2$s 类型重新分配 2 x %1$d bytes失败" #: fread.c:1774 #, c-format msgid "" " 'header' determined to be %s because there are%s number fields in the " "first and only row\n" -msgstr "" -" 参数'header' 被设置为%s, 因为唯一的一行包含 %s 个字段\n" +msgstr " 参数'header' 被设置为%s, 因为唯一的一行包含 %s 个字段\n" #: fread.c:1774 msgid "true" @@ -2340,15 +2329,13 @@ msgstr "" msgid "" " 'header' determined to be true because all columns are type string and a " "better guess is not possible\n" -msgstr "" -"参数 'header' 被设置为true,因为所有列类型均为字符串\n" +msgstr "参数 'header' 被设置为true,因为所有列类型均为字符串\n" #: fread.c:1779 msgid "" " 'header' determined to be false because there are some number columns and " "those columns do not have a string field at the top of them\n" -msgstr "" -"参数 'header' 被设置为false,因为部分字段的首行不为字符串\n" +msgstr "参数 'header' 被设置为false,因为部分字段的首行不为字符串\n" #: fread.c:1795 #, c-format @@ -2360,8 +2347,7 @@ msgstr "" msgid "" " All rows were sampled since file is small so we know nrow=% " "exactly\n" -msgstr "" -" 文件太小,全部行均被采样到,所以 nrow=%llu\n" +msgstr " 文件太小,全部行均被采样到,所以 nrow=%\n" #: fread.c:1816 fread.c:1823 msgid " =====\n" @@ -2372,8 +2358,7 @@ msgstr " =====\n" msgid "" " Sampled % rows (handled \\n inside quoted fields) at %d jump " "points\n" -msgstr "" -" 已使用了 %1$d个跳点抽样 %2$llu 行(处理了字段间的分隔符\\n)\n" +msgstr " 已使用了 %2$d个跳点抽样 %1$ 行(处理了字段间的分隔符\\n)\n" #: fread.c:1818 #, c-format @@ -2381,7 +2366,6 @@ msgid "" " Bytes from first data row on line %d to the end of last row: %\n" msgstr "" - #: fread.c:1819 #, c-format msgid " Line length: mean=%.2f sd=%.2f min=%d max=%d\n" @@ -2759,8 +2743,7 @@ msgid "" "Column number %d (select[%d]) is negative but should be in the range [1,ncol=" "%d]. Consider drop= for column exclusion." msgstr "" -"列号%d(select [%d])为负,但应在[1,ncol =%d]范围内。考虑drop=用于排除" -"列。" +"列号%d(select [%d])为负,但应在[1,ncol =%d]范围内。考虑drop=用于排除列。" #: freadR.c:293 #, c-format @@ -2795,8 +2778,8 @@ msgid "" "a named vector, list format, or specify types using select= instead of " "colClasses=. Please see examples in ?fread." msgstr "" -"colClasses =是类型为%d的类型的未命名向量,但是有%d输入中的列。要为列的子集" -"指定类型,可以使用命名向量,列表格式或使用select=而不是colClasses=。请参阅'?" +"colClasses =是类型为%d的类型的未命名向量,但是有%d输入中的列。要为列的子集指" +"定类型,可以使用命名向量,列表格式或使用select=而不是colClasses=。请参阅'?" "fread'中的示例。" #: freadR.c:329 @@ -2847,9 +2830,7 @@ msgstr "字段大小为1,但字段类型为%d \n" #: freadR.c:592 #, c-format msgid "Internal error: unexpected field of size %d\n" -msgstr "" -"内部错误:大小为%d " -"的意外字段\n" +msgstr "内部错误:大小为%d 的意外字段\n" #: freadR.c:660 #, c-format @@ -4252,34 +4233,34 @@ msgid "" "'message'|'warning'|'error'|'none'. See news item 5 in v1.12.2." msgstr "" -#: rbindlist.c:297 +#: rbindlist.c:298 #, c-format msgid "" "Column %d of item %d has type 'factor' but has no levels; i.e. malformed." msgstr "" -#: rbindlist.c:315 +#: rbindlist.c:316 #, c-format msgid "" "Class attribute on column %d of item %d does not match with column %d of " "item %d." msgstr "" -#: rbindlist.c:325 +#: rbindlist.c:326 #, c-format msgid "" "Internal error: column %d of result is determined to be integer64 but " "maxType=='%s' != REALSXP" msgstr "" -#: rbindlist.c:361 +#: rbindlist.c:362 #, c-format msgid "" "Failed to allocate working memory for %d ordered factor levels of result " "column %d" msgstr "" -#: rbindlist.c:382 +#: rbindlist.c:383 #, c-format msgid "" "Column %d of item %d is an ordered factor but level %d ['%s'] is missing " @@ -4288,7 +4269,7 @@ msgid "" "factor will be created for this column." msgstr "" -#: rbindlist.c:387 +#: rbindlist.c:388 #, c-format msgid "" "Column %d of item %d is an ordered factor with '%s'<'%s' in its levels. But " @@ -4296,14 +4277,14 @@ msgid "" "will be created for this column due to this ambiguity." msgstr "" -#: rbindlist.c:432 +#: rbindlist.c:433 #, c-format msgid "" "Failed to allocate working memory for %d factor levels of result column %d " "when reading item %d of item %d" msgstr "" -#: rbindlist.c:522 +#: rbindlist.c:523 #, c-format msgid "Column %d of item %d: %s" msgstr "" From c9b49e5a0b0e9b50d046432d4e0e64a052185499 Mon Sep 17 00:00:00 2001 From: Xianying Tan Date: Sat, 28 Dec 2019 16:00:31 +0800 Subject: [PATCH 70/78] Translation to zh_CN - Group 17 (#4049) * finish the Chinese message translation for group 17 * change as KingdaShi suggests Co-authored-by: Michael Chirico --- po/R-zh_CN.po | 40 ++++++++++++++++++++-------------------- po/zh_CN.po | 38 +++++++++++++++++++++++++++----------- 2 files changed, 47 insertions(+), 31 deletions(-) diff --git a/po/R-zh_CN.po b/po/R-zh_CN.po index dedb9576ec..e5d0c51a40 100644 --- a/po/R-zh_CN.po +++ b/po/R-zh_CN.po @@ -1,9 +1,9 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.5\n" -"POT-Creation-Date: 2019-12-22 23:59\n" -"PO-Revision-Date: 2019-10-04 17:06+08\n" -"Last-Translator: Zhi Yang \n" +"POT-Creation-Date: 2019-10-21 16:15\n" +"PO-Revision-Date: 2019-11-16 18:37+0800\n" +"Last-Translator: Xianying Tan \n" "Language-Team: Mandarin\n" "Language: Mandarin\n" "MIME-Version: 1.0\n" @@ -1811,55 +1811,55 @@ msgid "Argument 'sort' should be logical TRUE/FALSE" msgstr "参数 'sort' 应为逻辑值 TRUE 或 FALSE" msgid "Argument 'no.dups' should be logical TRUE/FALSE" -msgstr "" +msgstr "参数 'no.dups' 应为逻辑值 TRUE 或 FALSE" msgid "You are trying to join data.tables where" -msgstr "" +msgstr "你正在试图去联结data.table,其中" msgid "'x' and 'y' arguments are" -msgstr "" +msgstr "参数'x'和'y'是" msgid "'x' argument is" -msgstr "" +msgstr "参数'x'的值为" msgid "'y' argument is" -msgstr "" +msgstr "参数'y'的值为" msgid "0 columns data.table." -msgstr "" +msgstr "0列的data.table对象。" msgid "`by.x` and `by.y` must be of same length." -msgstr "" +msgstr "`by.x`和`by.y`必须是相同的长度。" msgid "Supplied both `by` and `by.x/by.y`. `by` argument will be ignored." -msgstr "" +msgstr "参数`by`和`by.x/by.y`都提供了值。参数`by`的值会被忽略。" msgid "A non-empty vector of column names are required for `by.x` and `by.y`." -msgstr "" +msgstr "`by.x`和`by.y`必须是非空的列名。" msgid "Elements listed in `by.x` must be valid column names in x." -msgstr "" +msgstr "`by.x`中的列名必须是x的有效列。" msgid "Elements listed in `by.y` must be valid column names in y." -msgstr "" +msgstr "`by.y`中的列名必须是y的有效列。" msgid "A non-empty vector of column names for `by` is required." -msgstr "" +msgstr "`by`必须是非空的列名。" msgid "Elements listed in `by` must be valid column names in x and y" -msgstr "" +msgstr "`by`中的列名必须是x和y的有效列" msgid "column names" -msgstr "" +msgstr "列名" msgid "are duplicated in the result" -msgstr "" +msgstr "在结果中是重复的" msgid "IN DEVELOPMENT built" -msgstr "" +msgstr "在开发版本中" msgid "using" -msgstr "" +msgstr "使用" msgid "threads (see ?getDTthreads). Latest news: r-datatable.com" msgstr "线程(请参阅?getDTthreads)。最新的消息:r-datatable.com" diff --git a/po/zh_CN.po b/po/zh_CN.po index 4816440eb6..3bd33a81c1 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -2,10 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-12-23 00:00+0800\n" -"PO-Revision-Date: 2019-10-04 17:06+08\n" -"Last-Translator: Zhi Yang \n" -"Language-Team: Mandarin\n" +"POT-Creation-Date: 2019-10-22 21:04+0800\n" +"PO-Revision-Date: 2019-11-16 20:05+0800\n" +"Last-Translator: Xianying Tan \n" "Language: Mandarin\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" @@ -3563,25 +3562,30 @@ msgid "" "turn off GForce optimization using options(datatable.optimize=1). More " "likely, you may be looking for 'DT[,lapply(.SD,max),by=,.SDcols=]'" msgstr "" +"GForce的max函数只能在应用在数据列上,而不能在.SD或者其他对象上。为了找到" +"某个list(如.SD)里所有元素的最大值,请使用 base::max(.SD) 或者" +"通过设置 options(datatable.optimize=1) 来关掉GForce优化。更有可能的是," +"你真正想要使用的命令是 'DT[,lapply(.SD,max),by=,.SDcols=]'" #: gsumm.c:807 msgid "max is not meaningful for factors." -msgstr "" +msgstr "因子的最大值是没有意义的" #: gsumm.c:812 #, c-format msgid "nrow [%d] != length(x) [%d] in gmax" -msgstr "" +msgstr "gmax检测到行数[%d]不等于x的长度[%d]" #: gsumm.c:930 msgid "" "No non-missing values found in at least one group. Returning '-Inf' for such " "groups to be consistent with base" msgstr "" +"至少有一个子集的值全为缺失值。为保持和base包一致,对这种情况将会返回'-Inf'" #: gsumm.c:937 msgid "Type 'complex' has no well-defined max" -msgstr "" +msgstr "类型'complex'没有明确定义的最大值" #: gsumm.c:940 #, c-format @@ -3589,6 +3593,8 @@ msgid "" "Type '%s' not supported by GForce max (gmax). Either add the prefix base::" "max(.) or turn off GForce optimization using options(datatable.optimize=1)" msgstr "" +"GForce的max (gmax)函数不支持类型 '%s'。请使用 base::max(.) 或者设置" +" options(datatable.optimize=1) 来关掉GForce优化" #: gsumm.c:951 msgid "" @@ -3598,15 +3604,19 @@ msgid "" "optimize=1). More likely, you may be looking for 'DT[,lapply(.SD,median)," "by=,.SDcols=]'" msgstr "" +"GForce的median函数只能在应用在数据列上,而不能在.SD或者其他对象上。为了找到" +"某个list(如.SD)里所有元素的最大值,请使用 stats::median(.SD) 或者" +"通过设置 options(datatable.optimize=1) 来关掉GForce优化。更有可能的是," +"你真正想要使用的命令是 'DT[,lapply(.SD,median),by=,.SDcols=]'" #: gsumm.c:952 msgid "median is not meaningful for factors." -msgstr "" +msgstr "因子的中位值没有意义。" #: gsumm.c:955 #, c-format msgid "nrow [%d] != length(x) [%d] in gmedian" -msgstr "" +msgstr "gmedian函数检测到行数[%d]不等于x的长度[%d]" #: gsumm.c:992 #, c-format @@ -3615,11 +3625,13 @@ msgid "" "stats::median(.) or turn off GForce optimization using options(datatable." "optimize=1)" msgstr "" +"GForce函数median (gmedian)不支持类型'%s'。请使用 stats::tail(.) 或者设置" +" options(datatable.optimize=1) 来关掉GForce优化。" #: gsumm.c:1005 #, c-format msgid "nrow [%d] != length(x) [%d] in gtail" -msgstr "" +msgstr "gtail函数检测到行数[%d]不等于x的长度[%d]" #: gsumm.c:1073 #, c-format @@ -3627,11 +3639,13 @@ msgid "" "Type '%s' not supported by GForce tail (gtail). Either add the prefix utils::" "tail(.) or turn off GForce optimization using options(datatable.optimize=1)" msgstr "" +"GForce函数tail (gtail)不支持类型'%s'。请使用 utils::tail(.) 或者设置" +" options(datatable.optimize=1) 来关掉GForce优化。" #: gsumm.c:1085 gsumm.c:1176 #, c-format msgid "nrow [%d] != length(x) [%d] in ghead" -msgstr "" +msgstr "ghead函数检测到行数[%d]不等于x的长度[%d]" #: gsumm.c:1153 #, c-format @@ -3639,6 +3653,8 @@ msgid "" "Type '%s' not supported by GForce head (ghead). Either add the prefix utils::" "head(.) or turn off GForce optimization using options(datatable.optimize=1)" msgstr "" +"GForce函数head (ghead)不支持类型'%s'。请使用 utils::head(.) 或者设置" +" options(datatable.optimize=1) 来关掉GForce优化。" #: gsumm.c:1161 msgid "" From 5094c46ed98a35748e6fbd6ff938661446986ef1 Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Sat, 28 Dec 2019 19:08:41 +0800 Subject: [PATCH 71/78] update mo, fix missing field --- inst/po/zh_CN/LC_MESSAGES/R-data.table.mo | Bin 71640 -> 73208 bytes inst/po/zh_CN/LC_MESSAGES/data.table.mo | Bin 111146 -> 114655 bytes po/zh_CN.po | 1 + 3 files changed, 1 insertion(+) diff --git a/inst/po/zh_CN/LC_MESSAGES/R-data.table.mo b/inst/po/zh_CN/LC_MESSAGES/R-data.table.mo index c20f9cca5dd35fc45963e9bf5b0c5dcb3459c48c..a4a04fd5ff88c1c39836592692e7088af3ca63af 100644 GIT binary patch delta 11255 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 delta 15503 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 BH^u+} diff --git a/po/zh_CN.po b/po/zh_CN.po index 3bd33a81c1..9376af2bee 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -5,6 +5,7 @@ msgstr "" "POT-Creation-Date: 2019-10-22 21:04+0800\n" "PO-Revision-Date: 2019-11-16 20:05+0800\n" "Last-Translator: Xianying Tan \n" +"Language-Team: Mandarin\n" "Language: Mandarin\n" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" From 3f8cefe278f73e94c7ca408e31ad70b0b8174039 Mon Sep 17 00:00:00 2001 From: yc0802 <55459478+yc0802@users.noreply.github.com> Date: Sat, 28 Dec 2019 06:12:32 -0500 Subject: [PATCH 72/78] Translation yc0802 (#4054) * message * message * added hongyuans review Co-authored-by: Michael Chirico --- inst/po/zh_CN/LC_MESSAGES/data.table.mo | Bin 114655 -> 120147 bytes po/zh_CN.po | 44 +++++++++++++++++++----- 2 files changed, 35 insertions(+), 9 deletions(-) diff --git a/inst/po/zh_CN/LC_MESSAGES/data.table.mo b/inst/po/zh_CN/LC_MESSAGES/data.table.mo index f3b1be6c57b874d9b7679fe284e422d0a27c9561..8fc0afd67ede8eb278a1c0abdf707228a89c1b36 100644 GIT binary patch delta 21099 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 delta 15824 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 diff --git a/po/zh_CN.po b/po/zh_CN.po index 9376af2bee..b53759e053 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -2,9 +2,9 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-10-22 21:04+0800\n" -"PO-Revision-Date: 2019-11-16 20:05+0800\n" -"Last-Translator: Xianying Tan \n" +"POT-Creation-Date: 2019-11-11 11:44+0800\n" +"PO-Revision-Date: 2019-11-18 00:26-04\n" +"Last-Translator: Yuhang Chen \n" "Language-Team: Mandarin\n" "Language: Mandarin\n" "MIME-Version: 1.0\n" @@ -4160,6 +4160,8 @@ msgid "" "Column %d of item %d is length %d inconsistent with column %d which is " "length %d. Only length-1 columns are recycled." msgstr "" +"第 %2$d 项的第 %1$d 列长度为 %3$d,与第 %4$d 列的长度 %5$d 不一致。" +"只有长度为 1 的列会被循环补齐。" #: rbindlist.c:58 #, c-format @@ -4167,6 +4169,8 @@ msgid "" "Column %d ['%s'] of item %d is length 0. This (and %d other%s like it) has " "been filled with NA (NULL for list columns) to make each item uniform." msgstr "" +"第%d列['%s'](子项%d的)的长度为0,它(以及%d其他%s类似的)被填充为NA" +"(等同与列表列的NULL值)使得每一个子项统一。" #: rbindlist.c:62 #, c-format @@ -4174,10 +4178,12 @@ msgid "" "Total rows in the list is % which is larger than the maximum number " "of rows, currently %d" msgstr "" +"列表的总行数为 %,比当前行数的最大值 %d 大。" #: rbindlist.c:63 msgid "use.names=TRUE but no item of input list has any names" msgstr "" +"use.names=TRUE,但是输入列表的各项均没有名字。" #: rbindlist.c:71 #, c-format @@ -4185,22 +4191,24 @@ msgid "" "Failed to allocate upper bound of % unique column names " "[sum(lapply(l,ncol))]" msgstr "" +"无法为 % 个独有列名 [sum(lapply(l,ncol))] 的上界分配内存。" #: rbindlist.c:102 #, c-format msgid "Failed to allocate nuniq=%d items working memory in rbindlist.c" -msgstr "" +msgstr "错误发生于 rbindlist.c,无法分配 nuniq=%d 项工作内存。" #: rbindlist.c:136 #, c-format msgid "Failed to allocate ncol=%d items working memory in rbindlist.c" -msgstr "" +msgstr "错误发生于 rbindlist.c,无法分配 ncol=%d 项工作内存。" #: rbindlist.c:191 msgid "" "Internal error: usenames==NA but fill=TRUE. usenames should have been set to " "TRUE earlier with warning." msgstr "" +"内部错误:usenames==NA 但是 fill=TRUE。usenames应该已在警告之前被设置为了 TRUE。" #: rbindlist.c:196 msgid "" @@ -4208,12 +4216,14 @@ msgid "" "if use.names=FALSE for backwards compatibility. See news item 5 in v1.12.2 " "for options to control this message." msgstr "" +"use.names='check'(从v1.12.2版本开始的默认值)发出该消息并为了向后兼容按照" +"use.names=FALSE执行。有关控制此消息的选项,请参见 v1.12.2 更新信息中的第 5 项。" #: rbindlist.c:206 msgid "" "Internal error: could not find the first column name not present in earlier " "item" -msgstr "" +msgstr "内部错误:无法找到一个不存在于之前项中的列名。" #: rbindlist.c:210 #, c-format @@ -4221,6 +4231,8 @@ msgid "" "Column %d ['%s'] of item %d is missing in item %d. Use fill=TRUE to fill " "with NA (NULL for list columns), or use.names=FALSE to ignore column names.%s" msgstr "" +"第 %3$d 项的第 %1$d 列 ['%2$s'] 在第 %4$d 项中并不存在。请使用 fill=TRUE 以用" +"NA (或 NULL 若该列为列表(list))填充,或使用 use.names=FALSE 以忽略列名。%5$s" #: rbindlist.c:218 #, c-format @@ -4228,6 +4240,7 @@ msgid "" "Internal error: usenames==NA but an out-of-order name has been found in an " "item with no names or the first item. [%d]" msgstr "" +"内部错误:usenames==NA 但某项或第一项中存在一个无序的名字。 [%d]" #: rbindlist.c:219 #, c-format @@ -4236,12 +4249,16 @@ msgid "" "names=TRUE to match by column name, or use.names=FALSE to ignore column " "names.%s" msgstr "" +"第 %3$d 项的第 %1$d 列 ['%2$s'] 出现在第 %5$d 项的第 %4$d 列。设置" +"use.names=TRUE 以按列名匹配,或使用 use.names=FALSE 以忽视列名。%6$s" #: rbindlist.c:228 msgid "" "options()$datatable.rbindlist.check is set but is not a single string. See " "news item 5 in v1.12.2." msgstr "" +"options()$datatable.rbindlist.check 已设置但并非单个字符串。参见 v1.12.2" +"更新信息中的第 5 项。" #: rbindlist.c:235 #, c-format @@ -4249,19 +4266,21 @@ msgid "" "options()$datatable.rbindlist.check=='%s' which is not " "'message'|'warning'|'error'|'none'. See news item 5 in v1.12.2." msgstr "" +"options()$datatable.rbindlist.check=='%s' 不是" +"'message'|'warning'|'error'|'none'。参见 v1.12.2 更新信息中的第 5 项。" #: rbindlist.c:298 #, c-format msgid "" "Column %d of item %d has type 'factor' but has no levels; i.e. malformed." -msgstr "" +msgstr "第%2$d 项的第 %1$d 列为因子('factor')类型却没有因子水平(levels),格式错误。" #: rbindlist.c:316 #, c-format msgid "" "Class attribute on column %d of item %d does not match with column %d of " "item %d." -msgstr "" +msgstr "第 %2$d 项的第 %1$d 列的类属性与第 %4$d 项的第 %3$d列的不匹配。" #: rbindlist.c:326 #, c-format @@ -4269,13 +4288,14 @@ msgid "" "Internal error: column %d of result is determined to be integer64 but " "maxType=='%s' != REALSXP" msgstr "" +"内部错误:结果中的第 %d 列应为 integer64 类型,但maxType=='%s' != REALSXP" #: rbindlist.c:362 #, c-format msgid "" "Failed to allocate working memory for %d ordered factor levels of result " "column %d" -msgstr "" +msgstr "未能为结果中第 %d 列的 %d 个有序因子水平分配工作内存" #: rbindlist.c:383 #, c-format @@ -4285,6 +4305,9 @@ msgid "" "factor levels should be an ordered subset of the first longest. A regular " "factor will be created for this column." msgstr "" +"第 %2$d 项的第 %1$d 列为一有序因子(ordered factor),但第 %3$d 个水平(level)['%4$s']" +"在第 %6$d 项第 %5$d 列的有序因子水平中缺失。每组有序" +"因子水平应为其中最长有序因子水平的子集。该列将被创建为一非有序因子列。" #: rbindlist.c:388 #, c-format @@ -4293,6 +4316,9 @@ msgid "" "'%s'<'%s' in the ordered levels from column %d of item %d. A regular factor " "will be created for this column due to this ambiguity." msgstr "" +"第 %2$d 项的第 %1$d 列中有序因子水平 '%3$s'<'%4$s'。但" +"在第 %8$d 项第 %7$d 列的有序因子水平中却 '%5$s'<'%6$s'。由于" +"这种模糊性,该列将被创建为一非有序因子列。" #: rbindlist.c:433 #, c-format From a9de5aa70a1c8cec34c2aadfabcf91b7af84cf87 Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Sat, 28 Dec 2019 21:01:25 +0800 Subject: [PATCH 73/78] adding "leftover" translations (#4143) --- inst/po/zh_CN/LC_MESSAGES/R-data.table.mo | Bin 73208 -> 76167 bytes inst/po/zh_CN/LC_MESSAGES/data.table.mo | Bin 120147 -> 126390 bytes po/R-zh_CN.po | 80 ++++++++++++--------- po/zh_CN.po | 83 +++++++++++++--------- 4 files changed, 97 insertions(+), 66 deletions(-) diff --git a/inst/po/zh_CN/LC_MESSAGES/R-data.table.mo b/inst/po/zh_CN/LC_MESSAGES/R-data.table.mo index a4a04fd5ff88c1c39836592692e7088af3ca63af..e26f29a6f4b01e9824580a393e958b4d3306aefb 100644 GIT binary patch delta 13391 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\n" "Language-Team: Mandarin\n" @@ -2243,32 +2243,32 @@ msgid "" msgstr "因子列和 ignore.row.order 都不能与非 0 的容差(tolerance)参数同时使用" msgid "Internal error: factor type mismatch should have been caught earlier" -msgstr "内部错误:请提前排查不匹配的因子类型" +msgstr "内部错误:此时不匹配的因子类型应已被发现" msgid "argument 'fill' ignored, only make sense for type='const'" -msgstr "参数 'fill' 被忽略,仅对 'const' 类型有意义" +msgstr "参数 'fill' 将被忽略,因其仅当 type='const'时有意义" msgid "order.col='" -msgstr "按列排序 = '" +msgstr "order.col='" msgid "' not a column name of info" -msgstr "' 不是如下信息的列名:" +msgstr "' 并非info的一个列名" msgid "data.table package is loaded. Unload or start a fresh R session." -msgstr "" -"data.table 包加载完毕,并将一直可用,直到其被卸载或启用一个新的 R 会话为止。" +msgstr "data.table 包已被加载。请将其卸载或启动一个新的 R 会话。" msgid "" "script must end with '.Rraw'. If a file ending '.Rraw.bz2' exists, that will " "be found and used." msgstr "" -"脚本必须以 '.Rraw' 结尾。如果以 'Rraw.bz2' 结尾的文件存在,也将被发现和使用。" +"脚本文件名必须以 '.Rraw' 结尾。如果以 'Rraw.bz2' 结尾的文件存在,其也将被使" +"用。" msgid "Neither" msgstr "" msgid "exist in" -msgstr "" +msgstr "均不存在于文件夹" msgid "Failed after test" msgstr "" @@ -2277,62 +2277,62 @@ msgid "before the next test() call in" msgstr "" msgid "out of" -msgstr "" +msgstr "总数为" msgid ". Search" -msgstr "" +msgstr ". 搜索" msgid "for test number" -msgstr "" +msgstr "以获得测试编号" msgid "Timings count mismatch:" -msgstr "" +msgstr "计时不一致:" msgid "vs" -msgstr "" +msgstr "vs" msgid "Test" -msgstr "" +msgstr "测试" msgid "" "is invalid: when error= is provided it does not make sense to pass y as well" -msgstr "" +msgstr "无效:当使用了error=,不应再输入y" msgid "Use started.at=proc.time() not Sys.time() (POSIXt and slow)" -msgstr "" +msgstr "使用started.at=proc.time()而非Sys.time() (返回POSIXt类型,处理较慢)" msgid "make.names='" -msgstr "" +msgstr "make.names='" msgid "' not found in names of input" -msgstr "" +msgstr "'不存在于输入的名字里" msgid "make.names=" -msgstr "" +msgstr "make.names=" msgid "is out of range [1,ncol=" -msgstr "" +msgstr "不在以下区间[1,ncol=" msgid "'names' must be TRUE/FALSE or a character vector." -msgstr "" +msgstr "'names'必须为TRUE/FALSE,或一个字符(character)向量。" msgid "'keep' should contain integer values between" -msgstr "" +msgstr "'keep'所含整数值应在区间" msgid "length(names) (=" -msgstr "" +msgstr "length(names) (=" msgid ") is not equal to length(" -msgstr "" +msgstr ") 并不等于(=" msgid ") (=" -msgstr "" +msgstr ") (=" msgid ")." -msgstr "" +msgstr ")." msgid "l not type list" -msgstr "" +msgstr "l并非列表(list)类型" msgid "Argument 'nan' must be length 1" msgstr "" @@ -2341,7 +2341,7 @@ msgid "Argument 'nan' must be NA or NaN" msgstr "" msgid "x not boolean" -msgstr "" +msgstr "x并非布尔值" msgid "" "Some columns are type 'integer64' but package bit64 is not installed. Those " @@ -2349,29 +2349,45 @@ msgid "" "to reload the data. Simply install.packages('bit64') to obtain the integer64 " "print method and print the data again." msgstr "" +"有些列的类型是64 位整数类型('integer64')但bit64包并没有安装。这些列会被显示" +"成看起来有些奇怪的浮点型数据。然而并不需要重新载入这些数据,只需运行 install." +"packages('bit64') 来获取显示integer64类型的打印方法,再重新打印该数据即可。" msgid "Pattern" -msgstr "" +msgstr "Pattern" msgid "not found: [" -msgstr "" +msgstr "未找到: [" msgid "" "Input xts object should not have 'index' column because it would result in " "duplicate column names. Rename 'index' column in xts or use `keep." "rownames=FALSE` and add index manually as another column." msgstr "" +"输入的xts对象不能含有'index'列,因这会导致出现重复的列名。请尝试重新命名xts中" +"的'index'列或者使用`keep.rownames=FALSE`并手动添加index为另外的列" msgid "" "data.table must have a time based column in first position, use " "`setcolorder` function to change the order, or see ?timeBased for supported " "types" msgstr "" +"data.table的首列必须为一个以时间为基础的列,请使用`setcolorder`方程来改变它的" +"顺序,或者通过?timeBased来查看支持的类型" msgid "Following columns are not numeric and will be omitted:" -msgstr "" +msgstr "以下的列并非数值类型,将被忽略:" msgid "%d variable not shown: %s\n" msgid_plural "%d variables not shown: %s\n" msgstr[0] "" msgstr[1] "" + +#~ msgid "in" +#~ msgstr "在" + +#~ msgid "on" +#~ msgstr "在" + +#~ msgid ". [" +#~ msgstr ". [" diff --git a/po/zh_CN.po b/po/zh_CN.po index b53759e053..b478dcdba0 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -4578,117 +4578,119 @@ msgstr "输入到 'uniqlengths' 的参数 'n' 必须是长度为 1 的整数向 #: uniqlist.c:167 msgid "cols must be an integer vector with length >= 1" -msgstr "" +msgstr "cols必须是一个长度大于等于1的整数向量" #: uniqlist.c:171 #, c-format msgid "Item %d of cols is %d which is outside range of l [1,length(l)=%d]" -msgstr "" +msgstr "列的%d项是%d,它超出l的所在区间[1,length(l)=%d]" #: uniqlist.c:174 #, c-format msgid "" "All elements to input list must be of same length. Element [%d] has length " "% != length of first element = %." -msgstr "" +msgstr "列表的所有元素必须是同样的长度。元素[%d]的长度%不等于" +"第一个元素的长度%" #: uniqlist.c:255 msgid "Internal error: nestedid was not passed a list length 1 or more" -msgstr "" +msgstr "内部错误:nestedid并不是一个长度大于或者等于1的列表" #: uniqlist.c:262 #, c-format msgid "Internal error: nrows[%d]>0 but ngrps==0" -msgstr "" +msgstr "内部错误:nrows[%d]>0但是but ngrps==0" #: uniqlist.c:264 msgid "cols must be an integer vector of positive length" -msgstr "" +msgstr "cols必须是一个长度大于零的整数向量" #: uniqlist.c:349 msgid "x is not a logical vector" -msgstr "" +msgstr "x不是一个逻辑向量" #: utils.c:73 #, c-format msgid "Unsupported type '%s' passed to allNA()" -msgstr "" +msgstr "allNA() 不支持'%s'类型" #: utils.c:92 msgid "'x' argument must be data.table compatible" -msgstr "" +msgstr "'x' 必须为data.table支持的类型" #: utils.c:94 msgid "'check_dups' argument must be TRUE or FALSE" -msgstr "" +msgstr "参数'check_dups'必须为TRUE或者是FALSE" #: utils.c:110 msgid "" "argument specifying columns is type 'double' and one or more items in it are " "not whole integers" -msgstr "" +msgstr "指定列的参数是一个双精度类型而其中至少有一个元素不是整数" #: utils.c:116 #, c-format msgid "argument specifying columns specify non existing column(s): cols[%d]=%d" -msgstr "" +msgstr "指定列的参数指定了不存在的列: cols[%d]=%d" #: utils.c:121 msgid "'x' argument data.table has no names" -msgstr "" +msgstr "data.table的参数x并没有名字" #: utils.c:126 #, c-format msgid "" "argument specifying columns specify non existing column(s): cols[%d]='%s'" -msgstr "" +msgstr "指定列的参数指定了不存在的列: cols[%d]='%s'" #: utils.c:129 msgid "argument specifying columns must be character or numeric" -msgstr "" +msgstr "指定列的参数必须是字符或者是数值" #: utils.c:132 msgid "argument specifying columns specify duplicated column(s)" -msgstr "" +msgstr "指定列的参数指定了重复的列" #: utils.c:138 #, c-format msgid "%s: fill argument must be length 1" -msgstr "" +msgstr "%s:fill参数的长度必须为1" #: utils.c:171 #, c-format msgid "%s: fill argument must be numeric" -msgstr "" +msgstr "%s:fill参数必须为数值类型" #: utils.c:273 #, c-format msgid "Internal error: unsupported type '%s' passed to copyAsPlain()" -msgstr "" +msgstr "内部错误:copyAsPlain()不支持类型为'%s'的参数" #: utils.c:277 #, c-format msgid "" "Internal error: type '%s' passed to copyAsPlain() but it seems " "copyMostAttrib() retains ALTREP attributes" -msgstr "" +msgstr "内部错误:copyAsPlain()中参数为'%s'类型,但" +"copyMostAttrib() 保留了ALTREP属性" #: utils.c:312 #, c-format msgid "Found and copied %d column%s with a shared memory address\n" -msgstr "" +msgstr "发现并拷贝了具有相同的内存地址的%d列%s\n" #: vecseq.c:13 msgid "x must be an integer vector" -msgstr "" +msgstr "x必须为一个整数向量" #: vecseq.c:14 msgid "len must be an integer vector" -msgstr "" +msgstr "len必须为一个整数向量" #: vecseq.c:15 msgid "x and len must be the same length" -msgstr "" +msgstr "x和len必须长度一致" #: vecseq.c:21 msgid "" @@ -4699,14 +4701,20 @@ msgid "" "Otherwise, please search for this error message in the FAQ, Wiki, Stack " "Overflow and data.table issue tracker for advice." msgstr "" +"连接后将生成超过2^31行(已达内部的vecseq的物理" +"极限)。这很可能是一个错误的连接操作。请检查i中是否存在重复的键值(key values)," +"导致x中对应的组反复连接。若确定重复的连接可授受,可尝试 by=.EACHI " +"以使j中的语句仅在每个 i 中对应的组运行以避免大量的内存分配。" +"否则,请在常见问题(FAQ)、维基(Wiki)、Stack " +"Overflow 和 data.table GitHub Issue中寻求帮助。" #: vecseq.c:25 msgid "clamp must be a double vector length 1" -msgstr "" +msgstr "clamp 必须为一个长度为1的双精度向量" #: vecseq.c:27 msgid "clamp must be positive" -msgstr "" +msgstr "clamp必须为正数" #: vecseq.c:28 #, c-format @@ -4717,39 +4725,46 @@ msgid "" "large allocation. If you are sure you wish to proceed, rerun with allow." "cartesian=TRUE. Otherwise, please search for this error message in the FAQ, " "Wiki, Stack Overflow and data.table issue tracker for advice." -msgstr "" +msgstr "连接后生成%d行;多于%d = nrow(x)+nrow(i)。请检查" +"i中是否存在重复的键值(key values),导致x中对应的组反复连接。" +"若确定重复的连接可授受,可尝试 by=.EACHI 以使j中的语句仅在每个 i 中对应的组运行" +"以避免大量的内存分配。如果确认要继续,请设置" +"cartesian=TRUE 并重新运行。否则,请在常见问题(FAQ)、" +"维基(Wiki)、Stack Overflow 和 data.table GitHub Issue中寻求帮助。" #: wrappers.c:11 msgid "Attribute name must be a character vector of length 1" -msgstr "" +msgstr "属性的名字必须为一个长度为1的字符向量" #: wrappers.c:16 msgid "" "Internal structure doesn't seem to be a list. Can't set class to be 'data." "table' or 'data.frame'. Use 'as.data.table()' or 'as.data.frame()' methods " "instead." -msgstr "" +msgstr "内部结构并不非一个列表。无法将目标的类型设置为一个data.table" +"或data.frame。请使用'as.data.table()' 或 'as.data.frame()'." #: wrappers.c:66 msgid "First argument to setlistelt must be a list()" -msgstr "" +msgstr "setlistelt的第一个参数必须是一个列表" #: wrappers.c:67 msgid "Second argument to setlistelt must a length 1 integer vector" -msgstr "" +msgstr "setlistelt的第二个参数必须为一个长度为1的整数向量" #: wrappers.c:69 #, c-format msgid "i (%d) is outside the range of items [1,%d]" -msgstr "" +msgstr "i (%d)超出了[1,%d]的范围" #: wrappers.c:91 msgid "x isn't a VECSXP" -msgstr "" +msgstr "x并非一个VECSXP" #: wrappers.c:106 #, c-format msgid "" "dim.data.table expects a data.table as input (which is a list), but seems to " "be of type %s" -msgstr "" +msgstr "dim.data.table的参数必须为一个data.table(实质为一个列表),但输入参数" +"为%s类型" From 2864ca66e7ac2b7c825f3b6e07401d0faa23ddb4 Mon Sep 17 00:00:00 2001 From: KingdaShi <50854702+KingdaShi@users.noreply.github.com> Date: Sun, 29 Dec 2019 18:21:57 +0800 Subject: [PATCH 74/78] done some translation!-kingda (#4046) * done some translation! * done some translation * messsage * messsage Co-authored-by: Michael Chirico --- po/R-zh_CN.po | 48 +++++++++--------- po/zh_CN.po | 133 +++++++++++++++++++++++++++++--------------------- 2 files changed, 101 insertions(+), 80 deletions(-) diff --git a/po/R-zh_CN.po b/po/R-zh_CN.po index 643348d63e..b652c35993 100644 --- a/po/R-zh_CN.po +++ b/po/R-zh_CN.po @@ -1611,86 +1611,86 @@ msgid "the regex \"" msgstr "正则 \"" msgid "\". Please double check the input file is a valid csvy." -msgstr "" +msgstr "从这里开始" msgid "User-supplied 'header' will override that found in metadata." -msgstr "" +msgstr "用户提供的“header”将覆盖元数据中的表头" msgid "" "User-supplied column names in 'col.names' will override those found in YAML " "metadata." -msgstr "" +msgstr "用户在“col.names”中提供的列名将覆盖在YAML元数据中找到的列名" msgid "" "colClasses dictated by user input and those read from YAML header are in " "conflict (specifically, for column" -msgstr "" +msgstr "用户输入指定的列类型和从YAML列名中读取的列类型发生冲突(特别是column" msgid "s" -msgstr "" +msgstr "s" msgid "[" -msgstr "" +msgstr "[" msgid "]); the proceeding assumes the user input was" -msgstr "" +msgstr "]); 该过程假定用户输入的是" msgid "" "an intentional override and will ignore the types implied by the YAML " "header; please exclude" -msgstr "" +msgstr "有意覆盖的,因此将忽略YAML表头所指示的列类型;请排除" msgid "these columns" -msgstr "" +msgstr "这些列" msgid "this column from colClasses if this was unintentional." -msgstr "" +msgstr "如果不想覆盖,请将这些列从colClasses中排除" msgid "User-supplied 'sep' will override that found in metadata." -msgstr "" +msgstr "用户提供的“sep”将覆盖元数据中的分隔符" msgid "User-supplied 'quote' will override that found in metadata." -msgstr "" +msgstr "用户提供的“quote”将覆盖元数据中的引号" msgid "User-supplied 'dec' will override that found in metadata." -msgstr "" +msgstr "用户提供的“dec”将覆盖元数据中的小数点分隔符" msgid "User-supplied 'na.strings' will override that found in metadata." -msgstr "" +msgstr "用户提供的“na.strings”将覆盖元数据中对默认值的预处理" msgid "Column '" -msgstr "" +msgstr "列" msgid "' was requested to be '" -msgstr "" +msgstr "被要求为" msgid "' but fread encountered the following" -msgstr "" +msgstr "但是fread遇到了以下问题" msgid "error" -msgstr "" +msgstr "错误" msgid "warning" -msgstr "" +msgstr "警告" msgid ":" -msgstr "" +msgstr ":" msgid "so the column has been left as type '" -msgstr "" +msgstr "所以该列已经被保存为类型" msgid "" "key argument of data.table() must be a character vector naming columns (NB: " "col.names are applied before this)" -msgstr "" +msgstr "data.table()的关键参数必须是字符向量命名的列(NB:col.names在这之前被使用过)" msgid "" "index argument of data.table() must be a character vector naming columns " "(NB: col.names are applied before this)" -msgstr "" +msgstr "data.table()的index参数必须是字符向量命名的列(NB:参数col.names在这之前被使用过)" msgid "dateTimeAs must be a single string" -msgstr "" +msgstr "dataTimeAs 必须是单个字符串" msgid "dateTimeAs must be 'ISO','squash','epoch' or 'write.csv'" msgstr "dateTimeAs 必须是 'ISO','squash','epoch' 或 'write.csv'" diff --git a/po/zh_CN.po b/po/zh_CN.po index b478dcdba0..770ee8c3d1 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -3108,101 +3108,110 @@ msgstr "" #: fsort.c:156 #, c-format msgid "Range = [%g,%g]\n" -msgstr "" +msgstr "Range = [%g,%g]\n" #: fsort.c:157 msgid "Cannot yet handle negatives." -msgstr "" +msgstr "目前无法处理负值。" #: fsort.c:170 #, c-format msgid "maxBit=%d; MSBNbits=%d; shift=%d; MSBsize=%d\n" -msgstr "" +msgstr "maxBit=%d; MSBNbits=%d; shift=%d; MSBsize=%d\n" #: fsort.c:173 msgid "Unable to allocate working memory" -msgstr "" +msgstr "无法分配工作内存" #: fsort.c:177 #, c-format msgid "" -"counts is %dMB (%d pages per nBatch=%d, batchSize=%, lastBatchSize=" -"%)\n" -msgstr "" +"counts is %dMB (%d pages per nBatch=%d, batchSize=%, lastBatchSize=%)\n" +msgstr "counts为%dMB (每个nBatch中的%d页=%d, batchSize=%, lastBatchSize=%)\n" #: fsort.c:231 msgid "Internal error: counts[nBatch-1][MSBsize-1] != length(x)" -msgstr "" +msgstr "内部错误:counts[nBatch-1][MSBsize-1] 不等于 length(x)" #: fsort.c:247 msgid "Top 5 MSB counts: " -msgstr "" +msgstr "前5个MSB counts:" #: fsort.c:247 #, c-format msgid "% " -msgstr "" +msgstr "% " #: fsort.c:247 fwrite.c:702 fwrite.c:966 msgid "\n" -msgstr "" +msgstr "\n" #: fsort.c:248 #, c-format msgid "Reduced MSBsize from %d to " -msgstr "" +<<<<<<< HEAD +msgstr "MSB��С �� %d ���ٵ�%d" +======= +msgstr "MSBsize 从 %d 减少到" +>>>>>>> a9485c1829c5d28082736eded48ccc8aaad51393 #: fsort.c:252 #, c-format msgid "%d by excluding 0 and 1 counts\n" -msgstr "" +<<<<<<< HEAD +msgstr "ͨ���ų�0��1��counts" +======= +msgstr "%d 通过排除0和1的counts\n" +>>>>>>> a9485c1829c5d28082736eded48ccc8aaad51393 #: fsort.c:309 #, c-format msgid "%d: %.3f (%4.1f%%)\n" -msgstr "" +msgstr "%d: %.3f (%4.1f%%)\n" #: fwrite.c:613 #, c-format msgid "buffMB=%d outside [1,1024]" -msgstr "" +msgstr "buffMB=%d 在[1,1024]之外" #: fwrite.c:620 #, c-format msgid "" "eol must be 1 or more bytes (usually either \\n or \\r\\n) but is length %d" -msgstr "" +msgstr "eol必须是1或更多的字节(通常是either\\n 或 \\r\\n)但是长度为%d" #: fwrite.c:623 msgid "Column writers: " -msgstr "" +msgstr "数据写入: " #: fwrite.c:625 fwrite.c:627 fwrite.c:629 #, c-format msgid "%d " -msgstr "" +msgstr "%d " #: fwrite.c:628 msgid "... " -msgstr "" +msgstr "... " #: fwrite.c:631 #, c-format msgid "" "\n" -"args.doRowNames=%d args.rowNames=%d doQuote=%d args.nrow=% args.ncol=" -"%d eolLen=%d\n" -msgstr "" +"args.doRowNames=%d args.rowNames=%d doQuote=%d args.nrow=% args.ncol=%d " +"eolLen=%d\n" +msgstr "\n" +"args.doRowNames=%d args.rowNames=%d doQuote=%d args.nrow=% args.ncol=%d " +"eolLen=%d\n" #: fwrite.c:664 #, c-format msgid "Internal error: type %d has no max length method implemented" -msgstr "" +msgstr "内部错误:" #: fwrite.c:671 #, c-format msgid "maxLineLen=%. Found in %.3fs\n" -msgstr "" +msgstr "maxLineLen=%. 在%.3fs中发现\n" #: fwrite.c:691 #, c-format @@ -3210,7 +3219,8 @@ msgid "" "%s: '%s'. Failed to open existing file for writing. Do you have write " "permission to it? Is this Windows and does another process such as Excel " "have it open?" -msgstr "" +msgstr "%s: '%s'. 无法打开一斤存在的文件进行写入.你是否对该文件有写入权限?" +"这是Windows系统?是否有Excel之类的进程已经打开了该文件?" #: fwrite.c:692 #, c-format @@ -3218,79 +3228,78 @@ msgid "" "%s: '%s'. Unable to create new file for writing (it does not exist already). " "Do you have permission to write here, is there space on the disk and does " "the path exist?" -msgstr "" +msgstr "%s: '%s'. 无法创建新的文件进行写入(文件不存在)" +"你是否对此有写入权限?磁盘上是否有空间以及路径是否存在?" #: fwrite.c:700 #, c-format msgid "Writing bom (%s), yaml (%d characters) and column names (%s) ... " -msgstr "" +msgstr "正在写入bom (%s), yaml (%d characters) 和 column names (%s) ..." #: fwrite.c:713 #, c-format msgid "Unable to allocate %d MiB for header: %s" -msgstr "" +msgstr "无法为header: %s分配%d MiB" #: fwrite.c:741 fwrite.c:803 msgid "Can't allocate gzip stream structure" -msgstr "" +msgstr "无法分配gzip的流结构" #: fwrite.c:748 #, c-format msgid "Unable to allocate %d MiB for zbuffer: %s" -msgstr "" +msgstr "无法为zbuffer: %s分配%d MiB" #: fwrite.c:764 #, c-format msgid "Compress gzip error: %d" -msgstr "" +msgstr "解压gzip错误: %d" #: fwrite.c:765 fwrite.c:773 fwrite.c:972 #, c-format msgid "%s: '%s'" -msgstr "" +msgstr "%s: '%s'" #: fwrite.c:770 #, c-format msgid "done in %.3fs\n" -msgstr "" +msgstr "%.3fs完成\n" #: fwrite.c:772 msgid "No data rows present (nrow==0)\n" -msgstr "" +msgstr "当前没有数据行(nrow==0)\n" #: fwrite.c:790 #, c-format msgid "" "Writing % rows in %d batches of %d rows (each buffer size %dMB, " "showProgress=%d, nth=%d)\n" -msgstr "" +msgstr "正在%d行的批处理中写入%lld行(每个缓存的大小为%dMB,showProgress=%d, nth=%d)\n)" #: fwrite.c:980 #, c-format -msgid "" -"zlib %s (zlib.h %s) deflate() returned error %d with z_stream->msg==\"%s\" " -"Z_FINISH=%d Z_BLOCK=%d. %s" -msgstr "" +msgid "zlib v%s deflate() returned error %d with z_stream.msg '%s'. %s\n" +msgstr "zlib v%s deflate()使用%d with z_stream.msg '%s'. %s返回了错误\n" #: fwrite.c:982 msgid "" "Please include the full output above and below this message in your data." "table bug report." -msgstr "" +msgstr "请将此消息上方和下方的全部输出结果一起提交到data.table的bug report中" #: fwrite.c:983 msgid "" "Please retry fwrite() with verbose=TRUE and include the full output with " "your data.table bug report." -msgstr "" +msgstr "请使用verbose=TRUE重试fwrite(),并将完整的输出提交到data.table的bug report中" #: fwriteR.c:41 msgid "Internal error: col passed to getMaxCategLen is missing levels" -msgstr "" +msgstr "内部错误:传递给getMaxCateLen的col正在丢失级别" #: fwriteR.c:75 msgid "Internal error: getMaxListItemLen should have caught this up front." -msgstr "" +msgstr "内部错误:getMaxListItemLen应该已经预先抓取了这个" #: fwriteR.c:98 #, c-format @@ -3298,64 +3307,76 @@ msgid "" "Row %d of list column is type '%s' - not yet implemented. fwrite() can write " "list columns containing items which are atomic vectors of type logical, " "integer, integer64, double, complex and character." -msgstr "" +msgstr "列表页行%d的类型是'%s' - 尚未实施. fwrite()可以写入" +"包含逻辑类型原子向量项目的列表页," +"整数,整数64,双精度,复数和字符" #: fwriteR.c:103 #, c-format msgid "" "Internal error: row %d of list column has no max length method implemented" -msgstr "" +msgstr "内部错误:列表页的%d行没有实现最大长度方法" #: fwriteR.c:170 msgid "" "fwrite must be passed an object of type list; e.g. data.frame, data.table" -msgstr "" +msgstr "fwrite必须传递一个类型为列表的对象;比如data.frame, data.table" #: fwriteR.c:179 msgid "fwrite was passed an empty list of no columns. Nothing to write." -msgstr "" +msgstr "fwrite传递了一个没有列的空列表. 没有对象可以写入" #: fwriteR.c:234 #, c-format msgid "Column %d's length (%d) is not the same as column 1's length (%d)" -msgstr "" +msgstr "列%d的长度(%d)和列1的长度(%d)不一致" #: fwriteR.c:237 #, c-format msgid "Column %d's type is '%s' - not yet implemented in fwrite." -msgstr "" +msgstr "列%d的类型是'%s' - 尚未在fwrite中实施" #: fwriteR.c:262 msgid "" "No list columns are present. Setting sep2='' otherwise quote='auto' would " "quote fields containing sep2.\n" -msgstr "" +msgstr "当前没有列表页. 设置sep2=''否则quote='auto'会自动为所有包含sep2的字段加上引号.\n" #: fwriteR.c:266 #, c-format msgid "" "If quote='auto', fields will be quoted if the field contains either sep " "('%c') or sep2 ('%c') because column %d is a list column.\n" -msgstr "" +<<<<<<< HEAD +msgstr "��������趨quote = 'auto'������%d�����б�ҳ�����а���sep('%c') �� sep2 ('%c')���ֶν��ᱻ�Զ���������" +======= +msgstr "如果quote='auto', 字段包含任意一个sep,字段将被引用" +>>>>>>> a9485c1829c5d28082736eded48ccc8aaad51393 #: fwriteR.c:270 #, c-format -msgid "" +msgid ""2019-12-28 "sep ('%c'), sep2 ('%c') and dec ('%c') must all be different. Column %d is a " "list column." -msgstr "" +<<<<<<< HEAD +msgstr "sep ('%c'), sep2 ('%c') �� dec ('%c') ���붼����ͬ. �� %d ��һ��" +"�б�ҳ" +======= +msgstr "sep ('%c'), sep2 ('%c') 和 dec ('%c') 必须都不相同. 列 %d 是一个" +"空列表" +>>>>>>> a9485c1829c5d28082736eded48ccc8aaad51393 #: gsumm.c:43 msgid "env is not an environment" -msgstr "" +msgstr "env不是环境" #: gsumm.c:45 msgid "o is not an integer vector" -msgstr "" +msgstr "o不是整数向量" #: gsumm.c:46 msgid "f is not an integer vector" -msgstr "" +msgstr "f不是一个整数向量" #: gsumm.c:47 msgid "l is not an integer vector" From b4cb61688fe2a6512ad0c980edaca3ed40738c98 Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Mon, 30 Dec 2019 09:54:06 +0800 Subject: [PATCH 75/78] Translation leftover pt2 (#4146) * covering trivial translations from among the leftovers * progress on paring down leftover translations * completed translations!!! * adjustments --- R/data.table.R | 4 +- R/devel.R | 2 +- R/last.R | 4 +- R/setkey.R | 4 +- R/test.data.table.R | 2 +- inst/po/en@quot/LC_MESSAGES/R-data.table.mo | Bin 89456 -> 89010 bytes inst/po/en@quot/LC_MESSAGES/data.table.mo | Bin 140270 -> 139310 bytes inst/po/zh_CN/LC_MESSAGES/R-data.table.mo | Bin 78879 -> 87131 bytes inst/po/zh_CN/LC_MESSAGES/data.table.mo | Bin 132958 -> 138485 bytes inst/tests/tests.Rraw | 2 +- po/R-data.table.pot | 35 +-- po/R-zh_CN.po | 244 ++++++++------------ po/data.table.pot | 71 +----- po/zh_CN.po | 194 ++++++---------- src/fread.c | 4 +- src/gsumm.c | 26 +-- 16 files changed, 208 insertions(+), 384 deletions(-) diff --git a/R/data.table.R b/R/data.table.R index c05e7d0074..8cde3e3aee 100644 --- a/R/data.table.R +++ b/R/data.table.R @@ -820,7 +820,7 @@ replace_dot_alias = function(e) { if (!typeof(byval[[jj]]) %chin% ORDERING_TYPES) stop("column or expression ",jj," of 'by' or 'keyby' is type ",typeof(byval[[jj]]),". Do not quote column names. Usage: DT[,sum(colC),by=list(colA,month(colB))]") } tt = vapply_1i(byval,length) - if (any(tt!=xnrow)) stop("The items in the 'by' or 'keyby' list are length (",paste(tt,collapse=","),"). Each must be length ", xnrow, "; the same length as there are rows in x (after subsetting if i is provided).") + if (any(tt!=xnrow)) stop(gettextf("The items in the 'by' or 'keyby' list are length(s) (%s). Each must be length %d; the same length as there are rows in x (after subsetting if i is provided).", paste(tt, collapse=","), xnrow, domain='R-data.table')) if (is.null(bynames)) bynames = rep.int("",length(byval)) if (length(idx <- which(!nzchar(bynames))) && !bynull) { # TODO: improve this and unify auto-naming of jsub and bysub @@ -874,7 +874,7 @@ replace_dot_alias = function(e) { # attempt to auto-name unnamed columns for (jj in which(nm=="")) { thisq = q[[jj + 1L]] - if (missing(thisq)) stop("Item ", jj, " of the .() or list() passed to j is missing") #3507 + if (missing(thisq)) stop(gettextf("Item %d of the .() or list() passed to j is missing", jj, domain="R-data.table")) #3507 if (is.name(thisq)) nm[jj] = drop_dot(thisq) # TO DO: if call to a[1] for example, then call it 'a' too } diff --git a/R/devel.R b/R/devel.R index c82c62f136..8db74e47ce 100644 --- a/R/devel.R +++ b/R/devel.R @@ -13,7 +13,7 @@ dcf.repo = function(pkg, repo, field, type){ idx = file(file.path(contrib.url(repo, type=type),"PACKAGES")) on.exit(close(idx)) dcf = read.dcf(idx, fields=c("Package",field)) - if (!pkg %in% dcf[,"Package"]) stop("There is no ", pkg, " package in provided repository.") + if (!pkg %in% dcf[,"Package"]) stop(gettextf("There is no package %s in provided repository.", pkg, domain='R-data.table')) dcf[dcf[,"Package"]==pkg, field][[1L]] } diff --git a/R/last.R b/R/last.R index 8b26b92850..abf4050b40 100644 --- a/R/last.R +++ b/R/last.R @@ -35,7 +35,7 @@ last = function(x, n=1L, ...) { } } else { if (!requireNamespace("xts", quietly=TRUE)) - stop("'xts' class passed to data.table::last function but 'xts' is not available, you should have 'xts' installed already") # nocov + stop(gettextf("'xts' class passed to %s function but 'xts' is not available, you should have 'xts' installed already", "data.table::last", domain="R-data.table")) # nocov if (verbose) cat("last: using xts::last: is.xts(x)\n") xts::last(x, n=n, ...) @@ -76,7 +76,7 @@ first = function(x, n=1L, ...) { } } else { if (!requireNamespace("xts", quietly=TRUE)) - stop("'xts' class passed to data.table::first function but 'xts' is not available, you should have 'xts' installed already") # nocov + stop(gettextf("'xts' class passed to %s function but 'xts' is not available, you should have 'xts' installed already", "data.table::first", domain="R-data.table")) # nocov if (verbose) cat("first: using xts::first: is.xts(x)\n") xts::first(x, n=n, ...) diff --git a/R/setkey.R b/R/setkey.R index 5caefcf68f..fb8924b7a4 100644 --- a/R/setkey.R +++ b/R/setkey.R @@ -251,7 +251,7 @@ setorder = function(x, ..., na.last=FALSE) # na.last=FALSE here, to be consistent with data.table's default # as opposed to DT[order(.)] where na.last=TRUE, to be consistent with base { - if (!is.data.frame(x)) stop("x must be a data.frame or data.table.") + if (!is.data.frame(x)) stop("x must be a data.frame or data.table") cols = substitute(list(...))[-1L] if (identical(as.character(cols),"NULL")) return(x) if (length(cols)) { @@ -357,7 +357,7 @@ CJ = function(..., sorted = TRUE, unique = FALSE) } } nrow = prod( vapply_1i(l, length) ) # lengths(l) will work from R 3.2.0 - if (nrow > .Machine$integer.max) stop("Cross product of elements provided to CJ() would result in ",nrow," rows which exceeds .Machine$integer.max == ",.Machine$integer.max) + if (nrow > .Machine$integer.max) stop(gettextf("Cross product of elements provided to CJ() would result in %d rows which exceeds .Machine$integer.max == %d", nrow, Machine$integer.max, domain='R-data.table')) l = .Call(Ccj, l) setDT(l) l = setalloccol(l) # a tiny bit wasteful to over-allocate a fixed join table (column slots only), doing it anyway for consistency since diff --git a/R/test.data.table.R b/R/test.data.table.R index decf1c4b3c..33752545d5 100644 --- a/R/test.data.table.R +++ b/R/test.data.table.R @@ -43,7 +43,7 @@ test.data.table = function(script="tests.Rraw", verbose=FALSE, pkg=".", silent=F # nocov start fn2 = paste0(fn,".bz2") if (!file.exists(file.path(fulldir, fn2))) - stop("Neither ",fn," or ",fn2," exist in ",fulldir) + stop(gettextf("Neither %s nor %s exist in %s",fn, fn2, fulldir, domain="R-data.table")) fn = fn2 # nocov end # sys.source() below accepts .bz2 directly. diff --git a/inst/po/en@quot/LC_MESSAGES/R-data.table.mo b/inst/po/en@quot/LC_MESSAGES/R-data.table.mo index 858b4ec1beeb784d490a164ef8fff229e5a28e29..e52bcf8fafb2e81f09cca9d20c658263d028f5f8 100644 GIT binary patch delta 12855 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 delta 13081 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 Ud7ZcHD|nS|Z7B9%uTsML59tADzyJUM diff --git a/inst/po/en@quot/LC_MESSAGES/data.table.mo b/inst/po/en@quot/LC_MESSAGES/data.table.mo index 1d85d8380e3f48d591c4147c4c3623fe8a398642..f88de8edf3658ac0de0066f31f1d52e78ebd041d 100644 GIT binary patch delta 19093 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 cU|R(%nPtn0~E& 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 HuJ8IE;cNpj delta 11849 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 Y@8PP|S^KAD?Oc*I`EcU8*2aPV0r);vwg3PC diff --git a/inst/po/zh_CN/LC_MESSAGES/data.table.mo b/inst/po/zh_CN/LC_MESSAGES/data.table.mo index adb535149076e1c7f5fe725a310adc063f37b6ba..c5d63fb7d333e36e882685abafccd4c609d72aa0 100644 GIT binary patch delta 23479 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 ns5d-$Kz`rG\n" "Language-Team: LANGUAGE \n" @@ -403,13 +403,7 @@ msgstr "" msgid ". Do not quote column names. Usage: DT[,sum(colC),by=list(colA,month(colB))]" msgstr "" -msgid "The items in the 'by' or 'keyby' list are length (" -msgstr "" - -msgid "). Each must be length" -msgstr "" - -msgid "; the same length as there are rows in x (after subsetting if i is provided)." +msgid "The items in the 'by' or 'keyby' list are length(s) (%s). Each must be length %d; the same length as there are rows in x (after subsetting if i is provided)." msgstr "" msgid "Internal error: drop_dot passed" @@ -418,7 +412,7 @@ msgstr "" msgid "items" msgstr "" -msgid "of the .() or list() passed to j is missing" +msgid "Item %d of the .() or list() passed to j is missing" msgstr "" msgid "Different branches of j expression produced different auto-named columns:" @@ -853,10 +847,7 @@ msgstr "" msgid "." msgstr "" -msgid "There is no" -msgstr "" - -msgid "package in provided repository." +msgid "There is no package %s in provided repository." msgstr "" msgid "'fromLast' must be TRUE or FALSE" @@ -1324,10 +1315,7 @@ msgstr "" msgid "Using integer64 class columns require to have 'bit64' package installed." msgstr "" -msgid "'xts' class passed to data.table::last function but 'xts' is not available, you should have 'xts' installed already" -msgstr "" - -msgid "'xts' class passed to data.table::first function but 'xts' is not available, you should have 'xts' installed already" +msgid "'xts' class passed to %s function but 'xts' is not available, you should have 'xts' installed already" msgstr "" msgid "Argument 'sort' should be logical TRUE/FALSE" @@ -1549,9 +1537,6 @@ msgstr "" msgid "New parallel sort has not been implemented for vectors containing NA values so far. Using one thread." msgstr "" -msgid "x must be a data.frame or data.table." -msgstr "" - msgid "x must be a data.frame or data.table" msgstr "" @@ -1573,10 +1558,7 @@ msgstr "" msgid "is non-atomic, which can't be sorted; try setting sorted = FALSE" msgstr "" -msgid "Cross product of elements provided to CJ() would result in" -msgstr "" - -msgid "rows which exceeds .Machine$integer.max ==" +msgid "Cross product of elements provided to CJ() would result in %d rows which exceeds .Machine$integer.max == %d" msgstr "" msgid "x and y must both be data.tables" @@ -1669,10 +1651,7 @@ msgstr "" msgid "script must end with '.Rraw'. If a file ending '.Rraw.bz2' exists, that will be found and used." msgstr "" -msgid "Neither" -msgstr "" - -msgid "exist in" +msgid "Neither %s nor %s exist in %s" msgstr "" msgid "Failed after test" diff --git a/po/R-zh_CN.po b/po/R-zh_CN.po index 7afdcdae16..e74646eb14 100644 --- a/po/R-zh_CN.po +++ b/po/R-zh_CN.po @@ -1,7 +1,7 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.5\n" -"POT-Creation-Date: 2019-12-22 23:59\n" +"POT-Creation-Date: 2019-12-29 22:35\n" "PO-Revision-Date: 2019-11-16 18:37+0800\n" "Last-Translator: Xianying Tan \n" "Language-Team: Mandarin\n" @@ -9,6 +9,7 @@ msgstr "" "MIME-Version: 1.0\n" "Content-Type: text/plain; charset=UTF-8\n" "Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=1; plural=0;\n" msgid "data.table package loaded. When developing don't load package" msgstr "data.table包已载入, 开发时无需载入" @@ -153,7 +154,7 @@ msgid "; expecting length 2." msgstr ";其长度应为 2。" msgid "c" -msgstr "" +msgstr "c" msgid "Perhaps you meant %s?" msgstr "或许你想用的是 %s?" @@ -165,7 +166,7 @@ msgid "the second element should be the upper bound(s)." msgstr "第二个元素应为上界。" msgid "x." -msgstr "" +msgstr "x." msgid "is type" msgstr "的类型为" @@ -174,7 +175,7 @@ msgid "which is not supported by data.table join" msgstr ",该类型无法用于 data.table 的联接" msgid "i." -msgstr "" +msgstr "i." msgid "Attempting roll join on factor column when joining x." msgstr "试图滚动联接(roll join)因子类型(factor)的列,这发生于将 x." @@ -422,16 +423,16 @@ msgid "Attempting to do natural join but no common columns in provided tables" msgstr "尝试进行自然连接然而并没有找到表格中相同的列" msgid "Internal error. Cannot by=.EACHI when joining to a secondary key, yet" -msgstr "" +msgstr "内部错误:目前尚无法对次键使用by=.EACH命令" msgid "Internal error. irows has length in by=.EACHI" -msgstr "" +msgstr "内部错误:by=.EACHI 中 irows 有长度" msgid "logical error. i is not a data.table, but 'on' argument is provided." -msgstr "" +msgstr "逻辑错误。当 i 并非一个 data.table时,不应提供'on'参数" msgid "i has evaluated to type" -msgstr "" +msgstr "i 运算结果为类型" msgid ". Expecting logical, integer or double." msgstr "。期望布尔类型,整型或浮点型。" @@ -540,43 +541,35 @@ msgid "" ". Do not quote column names. Usage: DT[,sum(colC),by=list(colA,month(colB))]" msgstr "。请勿引用列名。用法:DT[,sum(colC),by=list(colA,month(colB))]" -msgid "The items in the 'by' or 'keyby' list are length (" -msgstr "'by' 或 'keyby' 列表中的元素长度为(" - -msgid "). Each must be length" -msgstr "" - msgid "" -"; the same length as there are rows in x (after subsetting if i is provided)." -msgstr "" +"The items in the 'by' or 'keyby' list are length(s) (%s). Each must be " +"length %d; the same length as there are rows in x (after subsetting if i is " +"provided)." +msgstr "在'by'或'keyby'列表中的项长度为 %s。每一项的长度须均为%d,即应与 x (或经 i 筛选后的子集)中所包含行数相同。" msgid "Internal error: drop_dot passed" -msgstr "" +msgstr "内部错误:drop_dot 传入的参数有" msgid "items" -msgstr "" +msgstr "项" -msgid "of the .() or list() passed to j is missing" -msgstr "" +msgid "Item %d of the .() or list() passed to j is missing" +msgstr "传递给j的 .() 或 list()中第%d项缺失" -msgid "" -"Different branches of j expression produced different auto-named columns:" -msgstr "" +msgid "Different branches of j expression produced different auto-named columns:" +msgstr "j表达式中的不同分支自动生成的列名不同:" msgid "%s!=%s" -msgstr "" +msgstr "%s!=%s" msgid "; using the most \"last\" names" -msgstr "" +msgstr ";将使用最晚生成的名字" -msgid "" -"When .SDcols is a function, it is applied to each column; the output of this " -"function must be a non-missing boolean scalar signalling inclusion/exclusion " -"of the column. However, these conditions were not met for:" -msgstr "" +msgid "When .SDcols is a function, it is applied to each column; the output of this function must be a non-missing boolean scalar signalling inclusion/exclusion of the column. However, these conditions were not met for:" +msgstr "当传入 .SDcols 的参数为一个方程时,该方程将应用于每一列,并须返回单个非缺失值的布尔值指示该列是否应当被包含/排除。然而上述条件对如下列并不满足:" msgid ".SDcols missing at the following indices:" -msgstr "" +msgstr ".SDcols 的如下位置为缺失值:" msgid ".SDcols is numeric but has both +ve and -ve indices" msgstr ".SDcols 为数值,但同时具有 +ve 和 -ve 索引" @@ -1061,7 +1054,7 @@ msgstr "" "(length):频率(frequency))是:" msgid "%s:%d" -msgstr "" +msgstr "%s:%d" msgid "The first entry with fewer than" msgstr "第一个长度少于" @@ -1139,94 +1132,79 @@ msgid ". Only allowed operators are" msgstr "。只有这些操作符是有效的" msgid "." -msgstr "" - -msgid "There is no" -msgstr "" +msgstr "." -msgid "package in provided repository." -msgstr "" +msgid "There is no package %s in provided repository." +msgstr "所提供的资料库中不含包%s" msgid "'fromLast' must be TRUE or FALSE" -msgstr "" +msgstr "'fromLast' 必须为 TRUE 或 FALSE" msgid "x must be an atomic vector or data.frames/data.tables" -msgstr "" +msgstr "x 必须是原子向量或data.frame/data.table" msgid "Using '" -msgstr "" +msgstr "使用 '" msgid "' as value column. Use 'value.var' to override" -msgstr "" +msgstr "' 作为 value 列。可使用 'value.var' 修改" msgid "The dcast generic in data.table has been passed a" -msgstr "" +msgstr "data.table 中的 dcast 泛型函数被传递了" -msgid "" -", but data.table::dcast currently only has a method for data.tables. Please " -"confirm your input is a data.table, with setDT(" -msgstr "" +msgid ", but data.table::dcast currently only has a method for data.tables. Please confirm your input is a data.table, with setDT(" +msgstr ",但目前 data.table::dcast 仅提供了针对 data.table 的方法。您可通过如下两种方法确保您的输入为一个 data.table对象,即setDT(" msgid ") or as.data.table(" -msgstr "" +msgstr ") 或 as.data.table(" -msgid "" -"). If you intend to use a reshape2::dcast, try installing that package " -"first, but do note that reshape2 is deprecated and you should be migrating " -"your code away from using it." -msgstr "" +msgid "). If you intend to use a reshape2::dcast, try installing that package first, but do note that reshape2 is deprecated and you should be migrating your code away from using it." +msgstr ")。若您想使用reshape2::dcast,尝试先安装reshape2。但请注意reshape2已经不推荐使用,您应修改您的代码以不再使用它。" -msgid "" -"and will attempt to redirect to the reshape2::dcast; please note that " -"reshape2 is deprecated, and this redirection is now deprecated as well. " -"Please do this redirection yourself like reshape2::dcast(" -msgstr "" +msgid "and will attempt to redirect to the reshape2::dcast; please note that reshape2 is deprecated, and this redirection is now deprecated as well. Please do this redirection yourself like reshape2::dcast(" +msgstr ",将尝试重定向到reshape2::dcast。请注意reshape2已经不推荐使用,故该重定向目前也不推荐使用。请手动执行该重定向,如reshape2::dcast(" msgid "). In the next version, this warning will become an error." -msgstr "" +msgstr ")。在下一个版本中,此警告将变成为错误。" -msgid "" -"Invalid formula. Cast formula should be of the form LHS ~ RHS, for e.g., a + " -"b ~ c." -msgstr "" +msgid "Invalid formula. Cast formula should be of the form LHS ~ RHS, for e.g., a + b ~ c." +msgstr "无效的公式。所转换的公式的形式应为LHS ~ RHS,如a + b ~ c。" msgid "data.table to cast must have unique column names" -msgstr "" +msgstr "要转换的data.table必须具有唯一的列名" msgid "value.var values [" -msgstr "" +msgstr "value.var 的值 [" msgid "] are not found in 'data'." -msgstr "" +msgstr "] 无法在 'data' 中找到" -msgid "" -"When 'fun.aggregate' and 'value.var' are both lists, 'value.var' must be " -"either of length =1 or =length(fun.aggregate)." -msgstr "" +msgid "When 'fun.aggregate' and 'value.var' are both lists, 'value.var' must be either of length =1 or =length(fun.aggregate)." +msgstr "当 'fun.aggregate' 和 'value.var' 同为 list时, 'value.var' 的长度必须为 1 或 length(fun.aggregate)。" msgid "'data' must be a data.table." -msgstr "" +msgstr "'data' 必须为 data.table" msgid "'drop' must be logical TRUE/FALSE" -msgstr "" +msgstr "'drop' 必须为逻辑 TRUE/FALSE" msgid "Column [" -msgstr "" +msgstr "列 [" msgid "] not found or of unknown type." -msgstr "" +msgstr "] 无法找到或其类型未知。" msgid "Columns specified in formula can not be of type list" -msgstr "" +msgstr "在formula中指定的列不应为列表类型" msgid "Can not cast an empty data.table" -msgstr "" +msgstr "无法转换一个空的data.table" msgid "Aggregate function missing, defaulting to 'length'" -msgstr "" +msgstr "聚合函数缺失,将默认采用'length'" msgid "Internal error -- empty rhsnames in dcast; please report" -msgstr "" +msgstr "内部错误:dcast 中 rhsnames 为空;请报告" msgid "The melt generic in data.table has been passed a" msgstr "data.table 中的 melt 泛型函数被传递了" @@ -1498,10 +1476,10 @@ msgid "' has size 0. Returning a NULL" msgstr "' 的大小为0. 返回一个NULL" msgid "data.table" -msgstr "" +msgstr "data.table" msgid "data.frame" -msgstr "" +msgstr "data.frame" msgid "" "To read gz and bz2 files directly, fread() requires 'R.utils' package which " @@ -1583,7 +1561,7 @@ msgid "Encountered <" msgstr "遇到 <" msgid "..." -msgstr "" +msgstr "..." msgid "> at the first" msgstr "> 在第一个" @@ -1674,7 +1652,7 @@ msgid "warning" msgstr "警告" msgid ":" -msgstr ":" +msgstr ":" msgid "so the column has been left as type '" msgstr "所以该列已经被保存为类型" @@ -1682,12 +1660,15 @@ msgstr "所以该列已经被保存为类型" msgid "" "key argument of data.table() must be a character vector naming columns (NB: " "col.names are applied before this)" -msgstr "data.table()的关键参数必须是字符向量命名的列(NB:col.names在这之前被使用过)" +msgstr "" +"data.table()的关键参数必须是字符向量命名的列(NB:col.names在这之前被使用过)" msgid "" "index argument of data.table() must be a character vector naming columns " "(NB: col.names are applied before this)" -msgstr "data.table()的index参数必须是字符向量命名的列(NB:参数col.names在这之前被使用过)" +msgstr "" +"data.table()的index参数必须是字符向量命名的列(NB:参数col.names在这之前被使用" +"过)" msgid "dateTimeAs must be a single string" msgstr "dataTimeAs 必须是单个字符串" @@ -1797,15 +1778,8 @@ msgid "" "Using integer64 class columns require to have 'bit64' package installed." msgstr "要在列中使用 integer64 类,需要先安装 'bit64' 包。" -msgid "" -"'xts' class passed to data.table::last function but 'xts' is not available, " -"you should have 'xts' installed already" -msgstr "" - -msgid "" -"'xts' class passed to data.table::first function but 'xts' is not available, " -"you should have 'xts' installed already" -msgstr "" +msgid "'xts' class passed to %s function but 'xts' is not available, you should have 'xts' installed already" +msgstr "'xts'类对象传递给了%s方程,但是'xts'包不可用。您应首先安装'xts'包" msgid "Argument 'sort' should be logical TRUE/FALSE" msgstr "参数 'sort' 应为逻辑值 TRUE 或 FALSE" @@ -2108,64 +2082,49 @@ msgstr "" "table或者data.frame" msgid "Internal code should not be being called on type double" -msgstr "" - -msgid "" -"Input is not a vector of type double. New parallel sort has only been done " -"for double vectors so far. Using one thread." -msgstr "" +msgstr "内部代码不应被调用给双精度类型" -msgid "" -"New parallel sort has not been implemented for decreasing=TRUE so far. Using " -"one thread." -msgstr "" +msgid "Input is not a vector of type double. New parallel sort has only been done for double vectors so far. Using one thread." +msgstr "输入一个并非双精度类型的向量。目前新的并行排序方法仅可应用于双精确度向量。将使用单线程进行计算" -msgid "" -"New parallel sort has not been implemented for vectors containing NA values " -"so far. Using one thread." -msgstr "" +msgid "New parallel sort has not been implemented for decreasing=TRUE so far. Using one thread." +msgstr "目前新的并行排序方法尚无法在decreasing=TRUE的条件下使用。将使用单线程进行计算。" -msgid "x must be a data.frame or data.table." -msgstr "" +msgid "New parallel sort has not been implemented for vectors containing NA values so far. Using one thread." +msgstr "目前新的并行排序方法尚无法用于包含缺失值的向量。将使用单线程。" msgid "x must be a data.frame or data.table" -msgstr "" +msgstr "x 必须为 data.frame 或 data.table" msgid "na.last must be logical TRUE/FALSE" -msgstr "" +msgstr "na.last 必须为逻辑 TRUE/FALSE" -msgid "" -"cols is not a character vector. Please see further information in ?setorder." -msgstr "" +msgid "cols is not a character vector. Please see further information in ?setorder." +msgstr "cols并非一个字符向量。请参考 ?setorder以获得更多信息。" -msgid "" -"cols is a character vector of zero length. Use NULL instead, or wrap with " -"suppressWarnings() to avoid this warning." -msgstr "" +msgid "cols is a character vector of zero length. Use NULL instead, or wrap with suppressWarnings() to avoid this warning." +msgstr "cols为一长度为零的字符向量。请使用NULL代替,或将本函数使用suppressWarnings()包裹以阻止该警告。" msgid "' which is not supported for ordering currently." -msgstr "" +msgstr "',该类型目前尚不支持排序。" msgid "'sorted' is TRUE but element" -msgstr "" +msgstr "'sorted' 为 TRUE 但元素" msgid "is non-atomic, which can't be sorted; try setting sorted = FALSE" -msgstr "" +msgstr "并非原子类型,无法排序。请尝试使用 sorted=FALSE" -msgid "Cross product of elements provided to CJ() would result in" -msgstr "" - -msgid "rows which exceeds .Machine$integer.max ==" -msgstr "" +msgid "Cross product of elements provided to CJ() would result in %d rows which exceeds .Machine$integer.max == %d" +msgstr "CJ()中元素的叉积将产生 %d 行,已超过 .Machine$integer.max == %d" msgid "x and y must both be data.tables" -msgstr "" +msgstr "x 和 y 均需为 data.table" msgid "length(by.x) != length(by.y)" -msgstr "" +msgstr "length(by.x) != length(by.y)" msgid "When x's column ('" -msgstr "" +msgstr "当 x 的列 ('" msgid "') is character, the corresponding column in y ('" msgstr "') 是字符,y 中相应的列 ('" @@ -2264,17 +2223,14 @@ msgstr "" "脚本文件名必须以 '.Rraw' 结尾。如果以 'Rraw.bz2' 结尾的文件存在,其也将被使" "用。" -msgid "Neither" -msgstr "" - -msgid "exist in" -msgstr "均不存在于文件夹" +msgid "Neither %s nor %s exist in %s" +msgstr "%3$s 中 %1$s 也 %2$s 不存在" msgid "Failed after test" -msgstr "" +msgstr "错误出现于测试" msgid "before the next test() call in" -msgstr "" +msgstr "后,先于下一调用test()于" msgid "out of" msgstr "总数为" @@ -2335,10 +2291,10 @@ msgid "l not type list" msgstr "l并非列表(list)类型" msgid "Argument 'nan' must be length 1" -msgstr "" +msgstr "参数 'nan' 的长度必须为 1" msgid "Argument 'nan' must be NA or NaN" -msgstr "" +msgstr "参数 'nan' 必须为 NA 或 NaN" msgid "x not boolean" msgstr "x并非布尔值" @@ -2380,14 +2336,4 @@ msgstr "以下的列并非数值类型,将被忽略:" msgid "%d variable not shown: %s\n" msgid_plural "%d variables not shown: %s\n" -msgstr[0] "" -msgstr[1] "" - -#~ msgid "in" -#~ msgstr "在" - -#~ msgid "on" -#~ msgstr "在" - -#~ msgid ". [" -#~ msgstr ". [" +msgstr[0] "%d变量没显示: %s\n" diff --git a/po/data.table.pot b/po/data.table.pot index 5041a04c94..a826bab881 100644 --- a/po/data.table.pot +++ b/po/data.table.pot @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.9\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-12-23 00:00+0800\n" +"POT-Creation-Date: 2019-12-30 01:24+0800\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" @@ -1715,14 +1715,6 @@ msgstr "" msgid " 0/1 column will be read as %s\n" msgstr "" -#: fread.c:1158 -msgid "boolean" -msgstr "" - -#: fread.c:1158 -msgid "integer" -msgstr "" - #: fread.c:1166 #, c-format msgid "sep == quote ('%c') is not allowed" @@ -2159,14 +2151,6 @@ msgid "" "first and only row\n" msgstr "" -#: fread.c:1774 -msgid "true" -msgstr "" - -#: fread.c:1774 -msgid "false" -msgstr "" - #: fread.c:1774 msgid " no" msgstr "" @@ -3138,16 +3122,9 @@ msgstr "" msgid "env is not an environment" msgstr "" -#: gsumm.c:45 -msgid "o is not an integer vector" -msgstr "" - -#: gsumm.c:46 -msgid "f is not an integer vector" -msgstr "" - -#: gsumm.c:47 -msgid "l is not an integer vector" +#: gsumm.c:45 gsumm.c:46 gsumm.c:47 +#, c-format +msgid "%s is not an integer vector" msgstr "" #: gsumm.c:56 @@ -3218,9 +3195,10 @@ msgstr "" msgid "This gsum took (narm=%s) ... " msgstr "" -#: gsumm.c:350 gsumm.c:606 +#: gsumm.c:350 gsumm.c:606 gsumm.c:693 gsumm.c:812 gsumm.c:955 gsumm.c:1005 +#: gsumm.c:1085 gsumm.c:1176 gsumm.c:1266 gsumm.c:1409 #, c-format -msgid "nrow [%d] != length(x) [%d] in gsum" +msgid "nrow [%d] != length(x) [%d] in %s" msgstr "" #: gsumm.c:404 @@ -3291,11 +3269,6 @@ msgstr "" msgid "min is not meaningful for factors." msgstr "" -#: gsumm.c:693 -#, c-format -msgid "nrow [%d] != length(x) [%d] in gmin" -msgstr "" - #: gsumm.c:717 gsumm.c:850 msgid "" "No non-missing values found in at least one group. Coercing to numeric type " @@ -3337,11 +3310,6 @@ msgstr "" msgid "max is not meaningful for factors." msgstr "" -#: gsumm.c:812 -#, c-format -msgid "nrow [%d] != length(x) [%d] in gmax" -msgstr "" - #: gsumm.c:930 msgid "" "No non-missing values found in at least one group. Returning '-Inf' for such " @@ -3372,11 +3340,6 @@ msgstr "" msgid "median is not meaningful for factors." msgstr "" -#: gsumm.c:955 -#, c-format -msgid "nrow [%d] != length(x) [%d] in gmedian" -msgstr "" - #: gsumm.c:992 #, c-format msgid "" @@ -3385,11 +3348,6 @@ msgid "" "optimize=1)" msgstr "" -#: gsumm.c:1005 -#, c-format -msgid "nrow [%d] != length(x) [%d] in gtail" -msgstr "" - #: gsumm.c:1073 #, c-format msgid "" @@ -3397,11 +3355,6 @@ msgid "" "tail(.) or turn off GForce optimization using options(datatable.optimize=1)" msgstr "" -#: gsumm.c:1085 gsumm.c:1176 -#, c-format -msgid "nrow [%d] != length(x) [%d] in ghead" -msgstr "" - #: gsumm.c:1153 #, c-format msgid "" @@ -3450,11 +3403,6 @@ msgstr "" msgid "var/sd is not meaningful for factors." msgstr "" -#: gsumm.c:1266 -#, c-format -msgid "nrow [%d] != length(x) [%d] in gvar" -msgstr "" - #: gsumm.c:1382 #, c-format msgid "" @@ -3481,11 +3429,6 @@ msgstr "" msgid "prod is not meaningful for factors." msgstr "" -#: gsumm.c:1409 -#, c-format -msgid "nrow [%d] != length(x) [%d] in gprod" -msgstr "" - #: gsumm.c:1411 #, c-format msgid "Unable to allocate %d * %d bytes for gprod" diff --git a/po/zh_CN.po b/po/zh_CN.po index 3508a583f9..6a95727f07 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -2,7 +2,7 @@ msgid "" msgstr "" "Project-Id-Version: data.table 1.12.5\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2019-12-23 00:00+0800\n" +"POT-Creation-Date: 2019-12-30 01:24+0800\n" "PO-Revision-Date: 2019-11-18 00:26-04\n" "Last-Translator: Yuhang Chen \n" "Language-Team: Mandarin\n" @@ -181,7 +181,7 @@ msgstr "为所有的%d行赋值\n" msgid "" "Coerced i from numeric to integer. Please pass integer for efficiency; e.g., " "2L rather than 2" -msgstr "" +msgstr "将i由数值型强制转换为整数型。请直接传入整数以提高效率,如传入2L而非2" #: assign.c:323 #, c-format @@ -797,7 +797,7 @@ msgstr "内部错误: opArg 不是一个长度为 on 的整数向量" #: bmerge.c:96 msgid "Internal error: nqgrpArg must be an integer vector" -msgstr "" +msgstr "内部错误:nqgrpArg 必须为一个整数向量" #: bmerge.c:102 msgid "Intrnal error: nqmaxgrpArg is not a positive length-1 integer vector" @@ -1015,16 +1015,16 @@ msgstr "length(iSD)[%d] != length(jiscols)[%d]" #: dogroups.c:92 #, c-format msgid "length(xSD)[%d] != length(xjiscols)[%d]" -msgstr "" +msgstr "length(xSD)[%d] != length(xjiscols)[%d]" #: dogroups.c:155 dogroups.c:184 msgid "Internal error. Type of column should have been checked by now" -msgstr "" +msgstr "内部错误:至此列的类型应已经被检查完成" #: dogroups.c:273 #, c-format msgid "j evaluates to type '%s'. Must evaluate to atomic vector or list." -msgstr "" +msgstr "j的运算结果为'%s'类型。其运算结果必须为原子向量或列表。" #: dogroups.c:281 msgid "" @@ -1125,7 +1125,7 @@ msgstr "dogroups: 从 %d 列增加至 %d 列\n" #: dogroups.c:387 #, c-format msgid "dogroups: length(ans)[%d]!=ngrpcols[%d]+njval[%d]" -msgstr "" +msgstr "dogroups: length(ans)[%d]!=ngrpcols[%d]+njval[%d]" #: dogroups.c:420 #, c-format @@ -1612,7 +1612,7 @@ msgstr "" #: forder.c:561 #, c-format msgid "Column %d passed to [f]order is type '%s', not yet supported." -msgstr "" +msgstr "传递给 [f]order 的第%d列为 '%s'类型,目前尚不支持。" #: forder.c:714 msgid "Internal error: column not supported, not caught earlier" @@ -1621,7 +1621,7 @@ msgstr "内部错误:列有不支持类型,未被前置识别" #: forder.c:722 #, c-format msgid "nradix=%d\n" -msgstr "" +msgstr "nradix=%d\n" #: forder.c:728 #, c-format @@ -1641,7 +1641,7 @@ msgstr "定时块 %2d%s = %8.3f %8d\n" #: forder.c:797 #, c-format msgid "stat[%03d]==%20\n" -msgstr "" +msgstr "stat[%03d]==%20\n" #: forder.c:1053 #, c-format @@ -1740,7 +1740,7 @@ msgstr "内部错误:参数 'cols' 关于 CanyNA 是 '%s' 类型而不是'inte #, c-format msgid "" "Internal error in line %d of fread.c, please report on data.table GitHub: " -msgstr "" +msgstr "fread.c中%d行出现内部错误,请在 data.table 的 GitHub中提交报告:" #: fread.c:147 #, c-format @@ -1811,11 +1811,11 @@ msgstr "未提供 NAstrings \n" #: fread.c:1146 msgid " NAstrings = [" -msgstr "" +msgstr " NAstrings = [" #: fread.c:1149 msgid "]\n" -msgstr "" +msgstr "]\n" #: fread.c:1151 msgid " One or more of the NAstrings looks like a number.\n" @@ -1845,14 +1845,6 @@ msgstr "显示进程 %d\n" msgid " 0/1 column will be read as %s\n" msgstr " 0/1 列被读取为 %s\n" -#: fread.c:1158 -msgid "boolean" -msgstr "" - -#: fread.c:1158 -msgid "integer" -msgstr "" - #: fread.c:1166 #, c-format msgid "sep == quote ('%c') is not allowed" @@ -2199,11 +2191,11 @@ msgstr "采样跳点数 = %d 因为" #: fread.c:1649 #, c-format msgid "nrow limit (%) supplied\n" -msgstr "" +msgstr "指定了nrow 的最大值 (%) \n" #: fread.c:1650 msgid "jump0size==0\n" -msgstr "" +msgstr "jump0size==0\n" #: fread.c:1651 #, c-format @@ -2222,21 +2214,21 @@ msgstr "第%5$d个跳点所找到的第%4$d行,该行字段过于%1$s(%2$d/%3$ #: fread.c:1690 msgid "few" -msgstr "" +msgstr "少" #: fread.c:1690 msgid "many" -msgstr "" +msgstr "多" #: fread.c:1690 msgid "" "Most likely this jump landed awkwardly so type bumps here will be skipped." -msgstr "" +msgstr "很有可能这一跳点的位置并不合适,因此此处的类型转换将被跳过。" #: fread.c:1716 #, c-format msgid " Type codes (jump %03d) : %s Quote rule %d\n" -msgstr "" +msgstr " 类型码(跳点 %03d) : %s 引用规则 %d\n" #: fread.c:1729 #, c-format @@ -2282,10 +2274,12 @@ msgid "" "setnames() afterwards if this guess is not correct, or fix the file write " "command that created the file to create a valid file." msgstr "" +"作为第一列,并被用于猜测行名或索引。若上述猜测不正确,可在后续使用setnames()" +"进行修改,或修复用于生成该文件的文件写入命令以生成有效的文件。" #: fread.c:1747 msgid "s at the end." -msgstr "" +msgstr "到结尾处" #: fread.c:1749 msgid "" @@ -2314,17 +2308,9 @@ msgid "" "first and only row\n" msgstr " 参数'header' 被设置为%s, 因为唯一的一行包含 %s 个字段\n" -#: fread.c:1774 -msgid "true" -msgstr "" - -#: fread.c:1774 -msgid "false" -msgstr "" - #: fread.c:1774 msgid " no" -msgstr "" +msgstr "0" #: fread.c:1777 msgid "" @@ -2341,7 +2327,7 @@ msgstr "参数 'header' 被设置为false,因为部分字段的首行不为字 #: fread.c:1795 #, c-format msgid " Type codes (first row) : %s Quote rule %d\n" -msgstr "" +msgstr " 类型码(第一行) : %s 引用规则 %d\n" #: fread.c:1804 #, c-format @@ -2365,7 +2351,7 @@ msgstr " 已使用了 %2$d个跳点抽样 %1$ 行(处理了字段间的 #, c-format msgid "" " Bytes from first data row on line %d to the end of last row: %\n" -msgstr "" +msgstr " 从第一个数据行(%d)到最后一行的字节: %\n" #: fread.c:1819 #, c-format @@ -2383,6 +2369,8 @@ msgid "" " Initial alloc = % rows (% + %d%%) using bytes/" "max(mean-2*sd,min) clamped between [1.1*estn, 2.0*estn]\n" msgstr "" +"为 % 行 (% + %d%%)分配初始内存,大小为字节数/max(mean-2*sd," +"min),并确保该数值落于区间[1.1*estn, 2.0*estn]中\n" #: fread.c:1825 #, c-format @@ -2462,7 +2450,7 @@ msgstr " jumps=[%d..%d),chunk_size=%,total_size=%\n" #: fread.c:2005 #, c-format msgid "Internal error: Master thread is not thread 0 but thread %d.\n" -msgstr "" +msgstr "内部错误:主线程并非线程0而是线程%d\n" #: fread.c:2213 #, c-format @@ -2478,7 +2466,7 @@ msgstr "" msgid "" "Internal error: invalid head position. jump=%d, headPos=%p, thisJumpStart=" "%p, sof=%p" -msgstr "" +msgstr "内部错误:head 位置无效。jump=%d, headPos=%p, thisJumpStart=%p, sof=%p" #: fread.c:2335 #, c-format @@ -3104,7 +3092,7 @@ msgstr "x 目前必须是双精度 ('double') 类型的向量" #: fsort.c:122 #, c-format msgid "nth=%d, nBatch=%d\n" -msgstr "" +msgstr "nth=%d, nBatch=%d\n" #: fsort.c:156 #, c-format @@ -3127,12 +3115,15 @@ msgstr "无法分配工作内存" #: fsort.c:177 #, c-format msgid "" -"counts is %dMB (%d pages per nBatch=%d, batchSize=%, lastBatchSize=%)\n" -msgstr "counts为%dMB (每个nBatch中的%d页=%d, batchSize=%, lastBatchSize=%)\n" +"counts is %dMB (%d pages per nBatch=%d, batchSize=%, lastBatchSize=" +"%)\n" +msgstr "" +"counts为%dMB (每个nBatch中的%d页=%d, batchSize=%, lastBatchSize=" +"%)\n" #: fsort.c:231 msgid "Internal error: counts[nBatch-1][MSBsize-1] != length(x)" -msgstr "内部错误:counts[nBatch-1][MSBsize-1] 不等于 length(x)" +msgstr "内部错误:counts[nBatch-1][MSBsize-1] != length(x)" #: fsort.c:247 msgid "Top 5 MSB counts: " @@ -3190,11 +3181,12 @@ msgstr "... " #, c-format msgid "" "\n" -"args.doRowNames=%d args.rowNames=%d doQuote=%d args.nrow=% args.ncol=%d " -"eolLen=%d\n" -msgstr "\n" -"args.doRowNames=%d args.rowNames=%d doQuote=%d args.nrow=% args.ncol=%d " -"eolLen=%d\n" +"args.doRowNames=%d args.rowNames=%d doQuote=%d args.nrow=% args.ncol=" +"%d eolLen=%d\n" +msgstr "" +"\n" +"args.doRowNames=%d args.rowNames=%d doQuote=%d args.nrow=% args.ncol=" +"%d eolLen=%d\n" #: fwrite.c:664 #, c-format @@ -3212,8 +3204,9 @@ msgid "" "%s: '%s'. Failed to open existing file for writing. Do you have write " "permission to it? Is this Windows and does another process such as Excel " "have it open?" -msgstr "%s: '%s'. 无法打开一斤存在的文件进行写入.你是否对该文件有写入权限?" -"这是Windows系统?是否有Excel之类的进程已经打开了该文件?" +msgstr "" +"%s: '%s'. 无法打开一斤存在的文件进行写入.你是否对该文件有写入权限?这是" +"Windows系统?是否有Excel之类的进程已经打开了该文件?" #: fwrite.c:692 #, c-format @@ -3221,8 +3214,9 @@ msgid "" "%s: '%s'. Unable to create new file for writing (it does not exist already). " "Do you have permission to write here, is there space on the disk and does " "the path exist?" -msgstr "%s: '%s'. 无法创建新的文件进行写入(文件不存在)" -"你是否对此有写入权限?磁盘上是否有空间以及路径是否存在?" +msgstr "" +"%s: '%s'. 无法创建新的文件进行写入(文件不存在)你是否对此有写入权限?磁盘上" +"是否有空间以及路径是否存在?" #: fwrite.c:700 #, c-format @@ -3291,7 +3285,8 @@ msgstr "请将此消息上方和下方的全部输出结果一起提交到data.t msgid "" "Please retry fwrite() with verbose=TRUE and include the full output with " "your data.table bug report." -msgstr "请使用verbose=TRUE重试fwrite(),并将完整的输出提交到data.table的bug report中" +msgstr "" +"请使用verbose=TRUE重试fwrite(),并将完整的输出提交到data.table的bug report中" #: fwriteR.c:41 msgid "Internal error: col passed to getMaxCategLen is missing levels" @@ -3307,9 +3302,9 @@ msgid "" "Row %d of list column is type '%s' - not yet implemented. fwrite() can write " "list columns containing items which are atomic vectors of type logical, " "integer, integer64, double, complex and character." -msgstr "列表页行%d的类型是'%s' - 尚未实施. fwrite()可以写入" -"包含逻辑类型原子向量项目的列表页," -"整数,整数64,双精度,复数和字符" +msgstr "" +"列表页行%d的类型是'%s' - 尚未实施. fwrite()可以写入包含逻辑类型原子向量项目的" +"列表页,整数,整数64,双精度,复数和字符" #: fwriteR.c:103 #, c-format @@ -3340,7 +3335,9 @@ msgstr "列%d的类型是'%s' - 尚未在fwrite中实施" msgid "" "No list columns are present. Setting sep2='' otherwise quote='auto' would " "quote fields containing sep2.\n" -msgstr "当前没有列表页. 设置sep2=''否则quote='auto'会自动为所有包含sep2的字段加上引号.\n" +msgstr "" +"当前没有列表页. 设置sep2=''否则quote='auto'会自动为所有包含sep2的字段加上引" +"号.\n" #: fwriteR.c:266 #, c-format @@ -3363,17 +3360,10 @@ msgstr "sep ('%c'), sep2 ('%c') 和 dec ('%c') 必须都不相同. 列 %d 是一 msgid "env is not an environment" msgstr "env不是环境" -#: gsumm.c:45 -msgid "o is not an integer vector" -msgstr "o不是整数向量" - -#: gsumm.c:46 -msgid "f is not an integer vector" -msgstr "f不是一个整数向量" - -#: gsumm.c:47 -msgid "l is not an integer vector" -msgstr "l 不是整数向量" +#: gsumm.c:45 gsumm.c:46 gsumm.c:47 +#, c-format +msgid "%s is not an integer vector" +msgstr "%s不是整数向量" #: gsumm.c:56 msgid "irowsArg is neither an integer vector nor NULL" @@ -3382,7 +3372,7 @@ msgstr "irowsArg 既不是整数向量也不是 NULL" #: gsumm.c:58 #, c-format msgid "length(f)=%d != length(l)=%d" -msgstr "" +msgstr "length(f)=%d != length(l)=%d" #: gsumm.c:66 #, c-format @@ -3434,7 +3424,7 @@ msgstr "gather 已支持 INTSXP,REALSXP 和 CPLXSXP,但不支持 '%s'" #: gsumm.c:336 gsumm.c:568 #, c-format msgid "%.3fs\n" -msgstr "" +msgstr "%.3fs\n" #: gsumm.c:345 msgid "sum is not meaningful for factors." @@ -3445,10 +3435,11 @@ msgstr "因子的和没有意义。" msgid "This gsum took (narm=%s) ... " msgstr "gsum 占用了 (narm=%s) ..." -#: gsumm.c:350 gsumm.c:606 +#: gsumm.c:350 gsumm.c:606 gsumm.c:693 gsumm.c:812 gsumm.c:955 gsumm.c:1005 +#: gsumm.c:1085 gsumm.c:1176 gsumm.c:1266 gsumm.c:1409 #, c-format -msgid "nrow [%d] != length(x) [%d] in gsum" -msgstr "gsum 中 nrow [%d] != length(x) [%d]" +msgid "nrow [%d] != length(x) [%d] in %s" +msgstr "%3$s 中 nrow [%1$d] != length(x) [%2$d]" #: gsumm.c:404 msgid "" @@ -3530,11 +3521,6 @@ msgstr "" msgid "min is not meaningful for factors." msgstr "因子的最小值没有意义。" -#: gsumm.c:693 -#, c-format -msgid "nrow [%d] != length(x) [%d] in gmin" -msgstr "gmin 中 nrow [%d] != length(x) [%d]" - #: gsumm.c:717 gsumm.c:850 msgid "" "No non-missing values found in at least one group. Coercing to numeric type " @@ -3586,11 +3572,6 @@ msgstr "" msgid "max is not meaningful for factors." msgstr "因子的最大值是没有意义的" -#: gsumm.c:812 -#, c-format -msgid "nrow [%d] != length(x) [%d] in gmax" -msgstr "gmax检测到行数[%d]不等于x的长度[%d]" - #: gsumm.c:930 msgid "" "No non-missing values found in at least one group. Returning '-Inf' for such " @@ -3628,11 +3609,6 @@ msgstr "" msgid "median is not meaningful for factors." msgstr "因子的中位值没有意义。" -#: gsumm.c:955 -#, c-format -msgid "nrow [%d] != length(x) [%d] in gmedian" -msgstr "gmedian函数检测到行数[%d]不等于x的长度[%d]" - #: gsumm.c:992 #, c-format msgid "" @@ -3643,11 +3619,6 @@ msgstr "" "GForce函数median (gmedian)不支持类型'%s'。请使用 stats::tail(.) 或者设置 " "options(datatable.optimize=1) 来关掉GForce优化。" -#: gsumm.c:1005 -#, c-format -msgid "nrow [%d] != length(x) [%d] in gtail" -msgstr "gtail函数检测到行数[%d]不等于x的长度[%d]" - #: gsumm.c:1073 #, c-format msgid "" @@ -3657,11 +3628,6 @@ msgstr "" "GForce函数tail (gtail)不支持类型'%s'。请使用 utils::tail(.) 或者设置 " "options(datatable.optimize=1) 来关掉GForce优化。" -#: gsumm.c:1085 gsumm.c:1176 -#, c-format -msgid "nrow [%d] != length(x) [%d] in ghead" -msgstr "ghead函数检测到行数[%d]不等于x的长度[%d]" - #: gsumm.c:1153 #, c-format msgid "" @@ -3675,20 +3641,20 @@ msgstr "" msgid "" "Internal error, gtail is only implemented for n=1. This should have been " "caught before. please report to data.table issue tracker." -msgstr "" +msgstr "内部错误:gtail仅能应用于n=1的情况。此错误理应已被处理。请在 data.table 的 GitHub中提交报告。" #: gsumm.c:1166 msgid "" "Internal error, ghead is only implemented for n=1. This should have been " "caught before. please report to data.table issue tracker." -msgstr "" +msgstr "内部错误:ghead仅能应用于n=1的情况。此错误理应已被处理。请在 data.table 的 GitHub中提交报告。" #: gsumm.c:1172 msgid "" "Internal error, `g[` (gnthvalue) is only implemented single value subsets " "with positive index, e.g., .SD[2]. This should have been caught before. " "please report to data.table issue tracker." -msgstr "" +msgstr "内部错误:`g[` (gnthvalue) 仅能用于采用单个正数索引求取子集,如 .SD[2]。此错误理应已被处理。请在 data.table 的 GitHub中提交报告。" #: gsumm.c:1250 #, c-format @@ -3696,7 +3662,7 @@ msgid "" "Type '%s' not supported by GForce subset `[` (gnthvalue). Either add the " "prefix utils::head(.) or turn off GForce optimization using " "options(datatable.optimize=1)" -msgstr "" +msgstr "GForce取子集运算符`[` (gnthvalue)尚不支持'%s'类型。。请添加前缀stats::var(.),或使用options(datatable.optimize=1) 关闭 GForce优化" #: gsumm.c:1262 msgid "" @@ -3706,23 +3672,18 @@ msgid "" "using options(datatable.optimize=1). Alternatively, if you only need the " "diagonal elements, 'DT[,lapply(.SD,var),by=,.SDcols=]' is the optimized way " "to do this." -msgstr "" +msgstr "GForce var/sd 仅能应用于列,而非.SD或其他。若要求取某一列表,如.SD,所有元素的全协方差矩阵,请添加前缀stats::var(.SD)(或stats::sd(.SD)),或使用options(datatable.optimize=1) 关闭 GForce优化。另外,若仅需获得对角线元素,最佳的方式是使用'DT[,lapply(.SD,var),by=,.SDcols=]'。" #: gsumm.c:1263 msgid "var/sd is not meaningful for factors." -msgstr "" - -#: gsumm.c:1266 -#, c-format -msgid "nrow [%d] != length(x) [%d] in gvar" -msgstr "" +msgstr "无法对因子类型使用 var/sd。" #: gsumm.c:1382 #, c-format msgid "" "Type '%s' not supported by GForce var (gvar). Either add the prefix stats::" "var(.) or turn off GForce optimization using options(datatable.optimize=1)" -msgstr "" +msgstr "GForce var (gvar) 尚不支持 '%s'类型。请添加前缀stats::var(.),或使用options(datatable.optimize=1) 关闭 GForce优化" #: gsumm.c:1384 #, c-format @@ -3748,11 +3709,6 @@ msgstr "" msgid "prod is not meaningful for factors." msgstr "prod对于因子是没有意义的" -#: gsumm.c:1409 -#, c-format -msgid "nrow [%d] != length(x) [%d] in gprod" -msgstr "在gprod中,nrow [%d] != length(x) [%d]" - #: gsumm.c:1411 #, c-format msgid "Unable to allocate %d * %d bytes for gprod" @@ -4340,12 +4296,12 @@ msgstr "" msgid "" "Failed to allocate working memory for %d factor levels of result column %d " "when reading item %d of item %d" -msgstr "" +msgstr "当读取第%4$d项的第%3$d个子项时,无法为第%2$d列的%1$d个因素水平分配工作内存" #: rbindlist.c:523 #, c-format msgid "Column %d of item %d: %s" -msgstr "" +msgstr "第 %2$d 项的第 %1$d 列: %3$s" #: reorder.c:17 #, c-format diff --git a/src/fread.c b/src/fread.c index bac355b913..69082c5d95 100644 --- a/src/fread.c +++ b/src/fread.c @@ -1155,7 +1155,7 @@ int freadMain(freadMainArgs _args) { if (args.skipNrow >= 0) DTPRINT(_(" skip num lines = %"PRId64"\n"), (int64_t)args.skipNrow); if (args.skipString) DTPRINT(_(" skip to string = <<%s>>\n"), args.skipString); DTPRINT(_(" show progress = %d\n"), args.showProgress); - DTPRINT(_(" 0/1 column will be read as %s\n"), args.logical01? _("boolean") : _("integer")); + DTPRINT(_(" 0/1 column will be read as %s\n"), args.logical01? "boolean" : "integer"); } stripWhite = args.stripWhite; @@ -1771,7 +1771,7 @@ int freadMain(freadMainArgs _args) { } if (verbose) { if (sampleLines==0) { - DTPRINT(_(" 'header' determined to be %s because there are%s number fields in the first and only row\n"), args.header?_("true"):_("false"), args.header?_(" no"):""); + DTPRINT(_(" 'header' determined to be %s because there are%s number fields in the first and only row\n"), args.header?"TRUE":"FALSE", args.header?_(" no"):""); } else { if (args.header) DTPRINT(_(" 'header' determined to be true because all columns are type string and a better guess is not possible\n")); diff --git a/src/gsumm.c b/src/gsumm.c index e106ddc336..210b6d7bf5 100644 --- a/src/gsumm.c +++ b/src/gsumm.c @@ -42,9 +42,9 @@ SEXP gforce(SEXP env, SEXP jsub, SEXP o, SEXP f, SEXP l, SEXP irowsArg) { const bool verbose = GetVerbose(); if (TYPEOF(env) != ENVSXP) error(_("env is not an environment")); // The type of jsub is pretty flexbile in R, so leave checking to eval() below. - if (!isInteger(o)) error(_("o is not an integer vector")); - if (!isInteger(f)) error(_("f is not an integer vector")); - if (!isInteger(l)) error(_("l is not an integer vector")); + if (!isInteger(o)) error(_("%s is not an integer vector"), "o"); + if (!isInteger(f)) error(_("%s is not an integer vector"), "f"); + if (!isInteger(l)) error(_("%s is not an integer vector"), "l"); if (isNull(irowsArg)) { irows = NULL; irowslen = -1; @@ -347,7 +347,7 @@ SEXP gsum(SEXP x, SEXP narmArg, SEXP warnOverflowArg) double started = wallclock(); const bool verbose=GetVerbose(); if (verbose) Rprintf(_("This gsum took (narm=%s) ... "), narm?"TRUE":"FALSE"); - if (nrow != n) error(_("nrow [%d] != length(x) [%d] in gsum"), nrow, n); + if (nrow != n) error(_("nrow [%d] != length(x) [%d] in %s"), nrow, n, "gsum"); bool anyNA=false; SEXP ans; switch(TYPEOF(x)) { @@ -603,7 +603,7 @@ SEXP gmean(SEXP x, SEXP narm) } // na.rm=TRUE. Similar to gsum, but we need to count the non-NA as well for the divisor const int n = (irowslen == -1) ? length(x) : irowslen; - if (nrow != n) error(_("nrow [%d] != length(x) [%d] in gsum"), nrow, n); + if (nrow != n) error(_("nrow [%d] != length(x) [%d] in %s"), nrow, n, "gsum"); long double *s = calloc(ngrp, sizeof(long double)), *si=NULL; // s = sum; si = sum imaginary just for complex if (!s) error(_("Unable to allocate %d * %d bytes for sum in gmean na.rm=TRUE"), ngrp, sizeof(long double)); @@ -690,7 +690,7 @@ SEXP gmin(SEXP x, SEXP narm) int n = (irowslen == -1) ? length(x) : irowslen; //clock_t start = clock(); SEXP ans; - if (nrow != n) error(_("nrow [%d] != length(x) [%d] in gmin"), nrow, n); + if (nrow != n) error(_("nrow [%d] != length(x) [%d] in %s"), nrow, n, "gmin"); int protecti=0; switch(TYPEOF(x)) { case LGLSXP: case INTSXP: @@ -809,7 +809,7 @@ SEXP gmax(SEXP x, SEXP narm) int n = (irowslen == -1) ? length(x) : irowslen; //clock_t start = clock(); SEXP ans; - if (nrow != n) error(_("nrow [%d] != length(x) [%d] in gmax"), nrow, n); + if (nrow != n) error(_("nrow [%d] != length(x) [%d] in %s"), nrow, n, "gmax"); // TODO rework gmax in the same way as gmin and remove this *update char *update = (char *)R_alloc(ngrp, sizeof(char)); @@ -952,7 +952,7 @@ SEXP gmedian(SEXP x, SEXP narmArg) { if (inherits(x, "factor")) error(_("median is not meaningful for factors.")); const bool isInt64 = INHERITS(x, char_integer64), narm = LOGICAL(narmArg)[0]; int n = (irowslen == -1) ? length(x) : irowslen; - if (nrow != n) error(_("nrow [%d] != length(x) [%d] in gmedian"), nrow, n); + if (nrow != n) error(_("nrow [%d] != length(x) [%d] in %s"), nrow, n, "gmedian"); SEXP ans = PROTECT(allocVector(REALSXP, ngrp)); double *ansd = REAL(ans); switch(TYPEOF(x)) { @@ -1002,7 +1002,7 @@ SEXP glast(SEXP x) { R_len_t i,k; int n = (irowslen == -1) ? length(x) : irowslen; SEXP ans; - if (nrow != n) error(_("nrow [%d] != length(x) [%d] in gtail"), nrow, n); + if (nrow != n) error(_("nrow [%d] != length(x) [%d] in %s"), nrow, n, "gtail"); switch(TYPEOF(x)) { case LGLSXP: { const int *ix = LOGICAL(x); @@ -1082,7 +1082,7 @@ SEXP gfirst(SEXP x) { R_len_t i,k; int n = (irowslen == -1) ? length(x) : irowslen; SEXP ans; - if (nrow != n) error(_("nrow [%d] != length(x) [%d] in ghead"), nrow, n); + if (nrow != n) error(_("nrow [%d] != length(x) [%d] in %s"), nrow, n, "ghead"); switch(TYPEOF(x)) { case LGLSXP: { int const *ix = LOGICAL(x); @@ -1173,7 +1173,7 @@ SEXP gnthvalue(SEXP x, SEXP valArg) { R_len_t i,k, val=INTEGER(valArg)[0]; int n = (irowslen == -1) ? length(x) : irowslen; SEXP ans; - if (nrow != n) error(_("nrow [%d] != length(x) [%d] in ghead"), nrow, n); + if (nrow != n) error(_("nrow [%d] != length(x) [%d] in %s"), nrow, n, "ghead"); switch(TYPEOF(x)) { case LGLSXP: { const int *ix = LOGICAL(x); @@ -1263,7 +1263,7 @@ SEXP gvarsd1(SEXP x, SEXP narm, Rboolean isSD) if (inherits(x, "factor")) error(_("var/sd is not meaningful for factors.")); long double m, s, v; R_len_t i, j, ix, thisgrpsize = 0, n = (irowslen == -1) ? length(x) : irowslen; - if (nrow != n) error(_("nrow [%d] != length(x) [%d] in gvar"), nrow, n); + if (nrow != n) error(_("nrow [%d] != length(x) [%d] in %s"), nrow, n, "gvar"); SEXP sub, ans = PROTECT(allocVector(REALSXP, ngrp)); Rboolean ans_na; switch(TYPEOF(x)) { @@ -1406,7 +1406,7 @@ SEXP gprod(SEXP x, SEXP narm) int n = (irowslen == -1) ? length(x) : irowslen; //clock_t start = clock(); SEXP ans; - if (nrow != n) error(_("nrow [%d] != length(x) [%d] in gprod"), nrow, n); + if (nrow != n) error(_("nrow [%d] != length(x) [%d] in %s"), nrow, n, "gprod"); long double *s = malloc(ngrp * sizeof(long double)); if (!s) error(_("Unable to allocate %d * %d bytes for gprod"), ngrp, sizeof(long double)); for (i=0; i Date: Mon, 30 Dec 2019 10:37:40 +0800 Subject: [PATCH 76/78] missing dot --- R/setkey.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/setkey.R b/R/setkey.R index fb8924b7a4..b71d19d459 100644 --- a/R/setkey.R +++ b/R/setkey.R @@ -357,7 +357,7 @@ CJ = function(..., sorted = TRUE, unique = FALSE) } } nrow = prod( vapply_1i(l, length) ) # lengths(l) will work from R 3.2.0 - if (nrow > .Machine$integer.max) stop(gettextf("Cross product of elements provided to CJ() would result in %d rows which exceeds .Machine$integer.max == %d", nrow, Machine$integer.max, domain='R-data.table')) + if (nrow > .Machine$integer.max) stop(gettextf("Cross product of elements provided to CJ() would result in %d rows which exceeds .Machine$integer.max == %d", nrow, .Machine$integer.max, domain='R-data.table')) l = .Call(Ccj, l) setDT(l) l = setalloccol(l) # a tiny bit wasteful to over-allocate a fixed join table (column slots only), doing it anyway for consistency since From a39acd980fceafb82b6a43e77548037f41b33a2d Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Mon, 30 Dec 2019 10:37:52 +0800 Subject: [PATCH 77/78] add note for proceeding to CRAN_Relase --- .dev/CRAN_Release.cmd | 66 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/.dev/CRAN_Release.cmd b/.dev/CRAN_Release.cmd index b1b434c6f0..6355b1356f 100644 --- a/.dev/CRAN_Release.cmd +++ b/.dev/CRAN_Release.cmd @@ -1,3 +1,69 @@ +############################################### +# Updating translations +############################################### + +# 1) Update messages for new release +## (a) Update C template file: src/data.table.pot +## ideally, we are including _() wrapping in +## new PRs throughout dev cycle, and this step +## becomes about tying up loose ends +## Appending _() char array wrapping to all messages +## that might be shown to the user. This step is slightly +## too greedy, as it includes too many msg, some of which +## need not be translated [more work to do here to make +## this less manual] some things to watch out for: +## * quote embedded (and escaped) within message [could be fixed with smarter regex] +## * multi-line implicit-concat arrays (in C, `"a" "b"` is the same as `"ab"`) should be wrapped "on the outside" not individually +## * `data.table` shares some of its `src` with `pydatatable`, so the requirement to `#include ` before the `#define _` macro meant we need to be careful about including this macro only in the R headers for these files (hence I created `po.h`) +## * Can't use `_()` _inside_ another functional macro. Only wrap the string passed to the macro later. +for MSG in error warning DTWARN DTPRINT Rprintf STOP Error; + do for SRC_FILE in src/*.c; + # no inplace -i in default mac sed + do sed -E "s/$MSG[(]("[^"]*")/$MSG(_(\1)/g" $SRC_FILE > out; + mv out $SRC_FILE; + done +done + +## checking for other lines calling these that didn't get _()-wrapped +for MSG in error warning DTWARN DTPRINT Rprintf STOP Error; + do grep -Er "\b$MSG[(]" src --include=*.c | grep -v _ | grep -Ev "(?://|[*]).*$MSG[(]" + +## similar, but a bit more manual to check snprintf usage + +## look for char array that haven't been covered yet +grep -Er '"[^"]+"' src --include=*.c | grep -Fv '_("' | grep -v "#include" | grep -v '//.*".*"' + +## look for lines starting with a char array (likely continued from prev line & can be combined) +grep -Er '^\s*"' src/*.c + +## Now extract these messages with xgettext +cd src +xgettext --keyword=_ -o data.table.pot *.c +cd .. + +## (b) Update R template file: src/R-data.table.pot +## much easier, once the update_pkg_po bug is fixed +R --no-save +## a bug fix in R still hadn't made the 2019-12-12 release, +## so run the following to source the corrected function manually +STEM='https://raw.githubusercontent.com/wch/r-source/trunk/src/library/tools/R' +source(file.path(STEM, 'utils.R')) +source(file.path(STEM, 'xgettext.R')) +source(file.path(STEM, 'translations.R')) +## shouldn't be any errors from this... +update_pkg_po('.') +q() + +# 2) Open a PR with the new templates & contact the translators +# * zh_CN: +## Translators to submit commits with translations to this PR +## [or perhaps, if we get several languages, each to open +## its own PR and merge to main translation PR] + +## 3) Check validity +## update_pkg_po('.') to be run again for the PR +## [can this be done via Travis?] + ############################################### # Basic checks ############################################### From f9758971b26e9d7b27b865ece214a6daa10c2f56 Mon Sep 17 00:00:00 2001 From: Michael Chirico Date: Mon, 30 Dec 2019 11:45:37 +0800 Subject: [PATCH 78/78] %f needed for > integer max --- R/setkey.R | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/R/setkey.R b/R/setkey.R index b71d19d459..63c6155f68 100644 --- a/R/setkey.R +++ b/R/setkey.R @@ -357,7 +357,7 @@ CJ = function(..., sorted = TRUE, unique = FALSE) } } nrow = prod( vapply_1i(l, length) ) # lengths(l) will work from R 3.2.0 - if (nrow > .Machine$integer.max) stop(gettextf("Cross product of elements provided to CJ() would result in %d rows which exceeds .Machine$integer.max == %d", nrow, .Machine$integer.max, domain='R-data.table')) + if (nrow > .Machine$integer.max) stop(gettextf("Cross product of elements provided to CJ() would result in %.0f rows which exceeds .Machine$integer.max == %d", nrow, .Machine$integer.max, domain='R-data.table')) l = .Call(Ccj, l) setDT(l) l = setalloccol(l) # a tiny bit wasteful to over-allocate a fixed join table (column slots only), doing it anyway for consistency since