diff --git a/po/R-fr.po b/po/R-fr.po
index 1464f0162..5e847aebe 100644
--- a/po/R-fr.po
+++ b/po/R-fr.po
@@ -1,7 +1,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: data.table 1.16.99\n"
-"POT-Creation-Date: 2024-08-28 21:08+0000\n"
+"POT-Creation-Date: 2025-02-02 23:58-0800\n"
 "PO-Revision-Date: 2024-09-04 13:53+0200\n"
 "Last-Translator: Christian Wiat <w9204-rs@yahoo.com>\n"
 "Language-Team: \n"
@@ -16,7 +16,8 @@ msgstr ""
 #, c-format
 msgid "data.table package loaded. When developing don't load package"
 msgstr ""
-"package data.table chargé. En cours de développement, ne pas charger le package"
+"package data.table chargé. En cours de développement, ne pas charger le "
+"package"
 
 #: IDateTime.R:107
 #, c-format
@@ -53,18 +54,20 @@ msgid ""
 "Argument 'value.name' must be scalar character, non-NA and at least one "
 "character"
 msgstr ""
-"L'argument 'value.name' doit être un caractère scalaire, pas NA et d'au moins "
-"un caractère"
+"L'argument 'value.name' doit être un caractère scalaire, pas NA et d'au "
+"moins un caractère"
 
 #: as.data.table.R:90
 #, c-format
 msgid "Argument 'sorted' must be scalar logical and non-NA"
-msgstr "L'argument 'sorted' doit être un scalaire, un booléen et différent de NA"
+msgstr ""
+"L'argument 'sorted' doit être un scalaire, un booléen et différent de NA"
 
 #: as.data.table.R:92
 #, c-format
 msgid "Argument 'na.rm' must be scalar logical and non-NA"
-msgstr "L'argument 'na.rm' doit être un scalaire, un booléen et différent de NA"
+msgstr ""
+"L'argument 'na.rm' doit être un scalaire, un booléen et différent de NA"
 
 #: as.data.table.R:94
 #, c-format
@@ -73,7 +76,8 @@ msgstr "Utiliser 'key' ou 'sorted' mais pas les deux simultanément."
 
 #: as.data.table.R:108
 #, c-format
-msgid "Argument 'value.name' should not overlap with column names in result: %s"
+msgid ""
+"Argument 'value.name' should not overlap with column names in result: %s"
 msgstr ""
 "L'argument 'value.name' ne doit pas recouvrir le nom des colonnes dans le "
 "résultat : %s"
@@ -81,8 +85,8 @@ msgstr ""
 #: as.data.table.R:140
 #, c-format
 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."
+"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 ""
 "Le type de colonne POSIXlt a été détecté et converti en POSIXct. Nous ne "
 "recommandons pas l'utilisation de POSIXlt car il utilise 40 octets pour "
@@ -92,8 +96,8 @@ msgstr ""
 #, c-format
 msgid "Item %d has %d rows but longest item has %d; recycled with remainder."
 msgstr ""
-"L'élément %d a %d lignes mais l'élément le plus long en a %d ; Il est recyclé "
-"avec le reste."
+"L'élément %d a %d lignes mais l'élément le plus long en a %d ; Il est "
+"recyclé avec le reste."
 
 #: as.data.table.R:196
 #, c-format
@@ -112,13 +116,16 @@ msgid "between has been passed an argument x of type logical"
 msgstr "'between' contient un argument x booléen"
 
 #: between.R:13 between.R:15
-#, c-format
+#, fuzzy, c-format
+#| msgid ""
+#| "'between' function the 'x' argument is a POSIX class while '%s' was not, "
+#| "coercion to POSIX failed with: %s"
 msgid ""
-"'between' function the 'x' argument is a POSIX class while '%s' was not, "
-"coercion to POSIX failed with: %s"
+"The 'x' argument of the 'between' function is POSIXct while '%s' was not, "
+"coercion to POSIXct failed with: %s"
 msgstr ""
-"fonction 'between' l'argument 'x' est une classe POSIX alors que '%s' ne l'est "
-"pas, échec de la conversion automatique en POSIX avec : %s"
+"fonction 'between' l'argument 'x' est une classe POSIX alors que '%s' ne "
+"l'est pas, échec de la conversion automatique en POSIX avec : %s"
 
 #: between.R:27
 #, c-format
@@ -132,11 +139,11 @@ msgstr ""
 #: between.R:31
 #, c-format
 msgid ""
-"'between' arguments are all POSIXct but have mismatched tzone attributes: %s. "
-"The UTC times will be compared."
+"'between' arguments are all POSIXct but have mismatched tzone attributes: "
+"%s. The UTC times will be compared."
 msgstr ""
-"les arguments 'between' sont tous POSIXct mais les attributs tzone associés ne "
-"correspondent pas : %s. La comparaison se fera sur le temps UTC."
+"les arguments 'between' sont tous POSIXct mais les attributs tzone associés "
+"ne correspondent pas : %s. La comparaison se fera sur le temps UTC."
 
 #: between.R:36
 #, c-format
@@ -145,6 +152,12 @@ msgstr ""
 "utilisation de la classe integer64 alors que le package 'bit64' n'est pas "
 "installé"
 
+#: between.R:47
+msgid ""
+"optimised between not available for this data type, fallback to slow R "
+"routine"
+msgstr ""
+
 #: between.R:48
 #, c-format
 msgid ""
@@ -157,8 +170,8 @@ msgstr ""
 #, c-format
 msgid "Some lower>upper for this non-numeric and non-character type"
 msgstr ""
-"Certains inférieurs sont plus grands que les supérieurs (lower>upper) pour ce "
-"type non numérique et non caractère"
+"Certains inférieurs sont plus grands que les supérieurs (lower>upper) pour "
+"ce type non numérique et non caractère"
 
 #: between.R:63
 #, c-format
@@ -175,13 +188,29 @@ msgstr ""
 "élément représente la ou les borne(s) inférieure(s) ; Le second élément "
 "représente la ou les borne(s) supérieure(s)."
 
-#: bmerge.R:48 bmerge.R:49
+#: between.R:77
+msgid "forderv(query) took ..."
+msgstr ""
+
+#: between.R:90
+msgid "Generating final logical vector ..."
+msgstr ""
+
+#: between.R:92 bmerge.R:200 bmerge.R:204 bmerge.R:211 data.table.R:496
+msgid "done in %s"
+msgstr ""
+
+#: bmerge.R:21
+msgid "Coercing %s column %s%s to type %s to match type of %s%s."
+msgstr ""
+
+#: bmerge.R:65 bmerge.R:66
 #, c-format
 msgid "%s is type %s which is not supported by data.table join"
 msgstr ""
 "%s est de type %s qui n'est pas pris en charge pour une jointure data.table"
 
-#: bmerge.R:52
+#: bmerge.R:69
 #, c-format
 msgid ""
 "Attempting roll join on factor column when joining %s to %s. Only integer, "
@@ -192,6 +221,14 @@ msgstr ""
 "doubles ou de caractères peuvent être jointes par roulement."
 
 #: bmerge.R:71
+msgid "Matching %s factor levels to %s factor levels."
+msgstr ""
+
+#: bmerge.R:80
+msgid "Matching character column %s to factor levels in %s."
+msgstr ""
+
+#: bmerge.R:87
 #, c-format
 msgid ""
 "Incompatible join types: %s (%s) and %s (%s). Factor columns must join to "
@@ -200,30 +237,103 @@ msgstr ""
 "Types de jointures incompatibles : %s (%s) et %s (%s). Les colonnes de "
 "facteurs doivent être jointes à des colonnes de facteurs ou de caractères."
 
-#: bmerge.R:90
+#: bmerge.R:91
+msgid "%s has same type (%s) as %s. No coercion needed."
+msgstr ""
+
+#: bmerge.R:97 bmerge.R:101
+msgid "(all-NA)"
+msgstr ""
+
+#: bmerge.R:104
 #, c-format
 msgid "Incompatible join types: %s (%s) and %s (%s)"
 msgstr "Types incompatibles pour la jointure : %s (%s) et %s (%s)"
 
-#: bmerge.R:98
-#, c-format
+#: bmerge.R:110
+msgid "(which has integer64 representation, e.g. no fractions)"
+msgstr ""
+
+#: bmerge.R:112
+#, fuzzy, c-format
+#| msgid ""
+#| "Incompatible join types: %s is type integer64 but %s is type double and "
+#| "contains fractions"
 msgid ""
 "Incompatible join types: %s is type integer64 but %s is type double and "
-"contains fractions"
+"cannot be coerced to integer64 (e.g. has fractions)"
 msgstr ""
 "Types de jointures incompatibles : %s est de type integer64 mais %s est de "
 "type double et contient des fractions"
 
-#: bmerge.R:150
+#: bmerge.R:132
+msgid "(which contains no fractions)"
+msgstr ""
+
+#: bmerge.R:144
+msgid "(which contains fractions)"
+msgstr ""
+
+#: bmerge.R:147
+msgid "(for join)"
+msgstr ""
+
+#: bmerge.R:165
+msgid "on= matches existing key, using key"
+msgstr ""
+
+#: bmerge.R:170
+msgid "on= matches existing index, using index"
+msgstr ""
+
+#: bmerge.R:175
+msgid "Calculated ad hoc index in %s"
+msgstr ""
+
+#: bmerge.R:186
+msgid "Non-equi join operators detected ..."
+msgstr ""
+
+#: bmerge.R:187
 #, c-format
 msgid "roll is not implemented for non-equi joins yet."
 msgstr "roll n'est pas encore implémenté avec des jointure non-equi."
 
-#: bmerge.R:170
+#: bmerge.R:188
+msgid "forder took ..."
+msgstr ""
+
+#: bmerge.R:197
+msgid "Generating group lengths ..."
+msgstr ""
+
+#: bmerge.R:202
+msgid "Generating non-equi group ids ..."
+msgstr ""
+
+#: bmerge.R:207
 #, c-format
 msgid "Column name '_nqgrp_' is reserved for non-equi joins."
 msgstr "Le nom de colonne '_nqgrp_' est réservé pour les jointures non-equi."
 
+#: bmerge.R:208
+msgid "Recomputing forder with non-equi ids ..."
+msgstr ""
+
+#: bmerge.R:217
+msgid "Starting bmerge ..."
+msgstr ""
+
+#: bmerge.R:219
+msgid "bmerge done in %s"
+msgstr ""
+
+#: cedta.R:67
+msgid ""
+"cedta decided '%s' wasn't data.table aware. Here is call stack with [[1L]] "
+"applied:"
+msgstr ""
+
 #: data.table.R:55
 #, c-format
 msgid "key argument of data.table() must be character"
@@ -239,117 +349,123 @@ msgstr "Objet '%s' non trouvé. Peut-être vous vouliez dire %s"
 msgid "Object '%s' not found amongst %s"
 msgstr "Objet '%s' non trouvé parmi %s"
 
-#: data.table.R:139
+#: data.table.R:140
 #, c-format
 msgid ""
-"[ was called on a data.table in an environment that is not data.table-aware (i."
-"e. cedta()), but '%s' was used, implying the owner of this call really "
+"[ was called on a data.table in an environment that is not data.table-aware "
+"(i.e. cedta()), but '%s' was used, implying the owner of this call really "
 "intended for data.table methods to be called. See vignette('datatable-"
 "importing') for details on properly importing data.table."
 msgstr ""
 "[ a été appelé sur un data.table dans un environnement qui n'est pas "
 "compatible avec data.table (i.e. cedta()), mais '%s' a été utilisé, ce qui "
-"implique que le propriétaire de cet appel avait vraiment l'intention d'appeler "
-"des méthodes data.table. Voir la vignette('datatable-importing') pour plus de "
-"détails sur l’importation correcte de data.table."
+"implique que le propriétaire de cet appel avait vraiment l'intention "
+"d'appeler des méthodes data.table. Voir la vignette('datatable-importing') "
+"pour plus de détails sur l’importation correcte de data.table."
 
-#: data.table.R:150
+#: data.table.R:151
 #, c-format
 msgid "verbose must be logical or integer"
 msgstr "verbose doit être soit un booléen, soit un entier"
 
-#: data.table.R:151
+#: data.table.R:152
 #, c-format
 msgid "verbose must be length 1 non-NA"
 msgstr "verbose doit être de longueur 1 et différent de NA"
 
-#: data.table.R:159
+#: data.table.R:160
 #, c-format
 msgid "Ignoring by/keyby because 'j' is not supplied"
 msgstr "L'argument by ou keyby est ignoré car 'j' n'est pas fourni"
 
-#: data.table.R:173
+#: data.table.R:174
 #, c-format
 msgid "When by and keyby are both provided, keyby must be TRUE or FALSE"
-msgstr "Si by et keyby sont fournis simultanément, keyby doit être TRUE ou FALSE"
+msgstr ""
+"Si by et keyby sont fournis simultanément, keyby doit être TRUE ou FALSE"
 
-#: data.table.R:185
+#: data.table.R:177 data.table.R:242 data.table.R:331
+msgid "Argument '%s' after substitute: %s"
+msgstr ""
+
+#: data.table.R:186
 #, c-format
 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 '%s'."
+"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 '%s'."
 msgstr ""
-"Lorsque on= est fourni mais pas i=, on= doit être une liste nommée ou un data."
-"table|frame, et une jointure naturelle (c'est-à-dire une jointure sur les noms "
-"communs) est invoquée. La valeur de on= qui est '%s' est ignorée."
+"Lorsque on= est fourni mais pas i=, on= doit être une liste nommée ou un "
+"data.table|frame, et une jointure naturelle (c'est-à-dire une jointure sur "
+"les noms communs) est invoquée. La valeur de on= qui est '%s' est ignorée."
 
-#: data.table.R:198
+#: data.table.R:199
 #, c-format
 msgid ""
-"i and j are both missing so ignoring the other arguments. This warning will be "
-"upgraded to error in future."
+"i and j are both missing so ignoring the other arguments. This warning will "
+"be upgraded to error in future."
 msgstr ""
-"i et j sont tous les deux absents, donc les autres arguments sont ignorés. Cet "
-"avertissement deviendra une erreur à l'avenir."
+"i et j sont tous les deux absents, donc les autres arguments sont ignorés. "
+"Cet avertissement deviendra une erreur à l'avenir."
 
-#: data.table.R:202
+#: data.table.R:203
 #, c-format
 msgid "mult argument can only be 'first', 'last' or 'all'"
 msgstr "l'argument mult ne peut valoir que 'first', 'last' ou 'all'"
 
-#: data.table.R:204
+#: data.table.R:205
 #, c-format
 msgid ""
-"roll must be a single TRUE, FALSE, positive/negative integer/double including "
-"+Inf and -Inf or 'nearest'"
+"roll must be a single TRUE, FALSE, positive/negative integer/double "
+"including +Inf and -Inf or 'nearest'"
 msgstr ""
 "roll doit être une seule valeur TRUE, FALSE, un entier ou un double, positif "
 "ou négatif, +Inf, -Inf ou 'nearest' compris"
 
-#: data.table.R:206
+#: data.table.R:207
 #, c-format
 msgid "roll is '%s' (type character). Only valid character value is 'nearest'."
 msgstr ""
 "roll vaut '%s' (de type caractère). La seule chaîne valide est 'nearest'."
 
-#: data.table.R:211
+#: data.table.R:212
 #, c-format
 msgid "rollends must be a logical vector"
 msgstr "rollends doit être un vecteur de booléens"
 
-#: data.table.R:212
+#: data.table.R:213
 #, c-format
 msgid "rollends must be length 1 or 2"
 msgstr "rollends doit être de longueur 1 ou 2"
 
-#: data.table.R:220
+#: data.table.R:221
 #, c-format
 msgid ""
-"nomatch= must be either NA or NULL (or 0 for backwards compatibility which is "
-"the same as NULL but please use NULL)"
+"nomatch= must be either NA or NULL (or 0 for backwards compatibility which "
+"is the same as NULL but please use NULL)"
 msgstr ""
 "nomatch= doit valoir soit NA, soit NULL (ou 0 pour la compatibilité "
 "descendante qui équivaut à NULL, mais utiliser NULL dorénavant)"
 
-#: data.table.R:223
+#: data.table.R:224
 #, c-format
 msgid "which= must be a logical vector length 1. Either FALSE, TRUE or NA."
 msgstr ""
 "which= doit être un vecteur de booléens de longueur 1. Valeur FALSE, TRUE ou "
 "NA."
 
-#: data.table.R:224
+#: data.table.R:225
 #, c-format
 msgid ""
-"which==%s (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."
+"which==%s (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 ""
 "which==%s (renvoie des numéros de ligne) mais j est également fourni. Vous "
 "avez besoin soit des numéros de ligne, soit du résultat de j, mais un seul "
 "type de résultat peut être renvoyé."
 
-#: data.table.R:225
+#: data.table.R:226
 #, c-format
 msgid ""
 "which=NA with nomatch=0|NULL would always return an empty vector. Please "
@@ -358,17 +474,17 @@ msgstr ""
 "which=NA avec nomatch=0|NULL renverrait toujours un vecteur vide. Veuillez "
 "modifier ou supprimer soit which, soit nomatch."
 
-#: data.table.R:226
+#: data.table.R:227
 #, c-format
 msgid "j must be provided when with=FALSE"
 msgstr "j doit être fourni quand with=FALSE"
 
-#: data.table.R:227
+#: data.table.R:228
 #, c-format
 msgid "%s must be TRUE or FALSE"
 msgstr "%s doit être TRUE ou FALSE"
 
-#: data.table.R:267
+#: data.table.R:270
 #, c-format
 msgid ""
 "The symbol .. is invalid. The .. prefix must be followed by at least one "
@@ -377,7 +493,7 @@ msgstr ""
 "Le symbole .. n'est pas valide. Le préfixe .. doit être suivi d'au moins un "
 "caractère."
 
-#: data.table.R:270
+#: data.table.R:274
 #, c-format
 msgid ""
 "Variable '..%s' does exist in calling scope though, so please just removed "
@@ -386,16 +502,16 @@ msgstr ""
 "La variable '..%s' existe dans la portée de l'appelant, il suffit donc de "
 "supprimer le préfixe .. de ce nom de variable dans la portée de l'appelant."
 
-#: data.table.R:274
+#: data.table.R:278
 #, c-format
 msgid ""
-"Variable '%s' is not found in calling scope. Looking in calling scope because "
-"you used the .. prefix.%s"
+"Variable '%s' is not found in calling scope. Looking in calling scope "
+"because you used the .. prefix.%s"
 msgstr ""
-"La variable '%s' n'est pas visible dans le contexte de l'appelant désigné par "
-"le préfixe .. .%s"
+"La variable '%s' n'est pas visible dans le contexte de l'appelant désigné "
+"par le préfixe .. .%s"
 
-#: data.table.R:276
+#: data.table.R:280
 #, c-format
 msgid ""
 "Both '%1$s' and '..%1$s' exist in calling scope. Please remove the '..%1$s' "
@@ -404,44 +520,51 @@ msgstr ""
 "'%1$s' et '..%1$s' sont tous deux visibles dans le contexte de l'appelant. "
 "Veuillez supprimer la variable '..%1$s' de ce contexte pour clarifier."
 
-#: data.table.R:284
+#: data.table.R:288
 #, c-format
 msgid ""
-"Variable '%s' is not found in calling scope. Looking in calling scope because "
-"you set with=FALSE. Also, please use .. symbol prefix and remove with=FALSE."
+"Variable '%s' 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 ""
-"La variable '%s' n'est pas visible dans le contexte de l'appelant désigné par "
-"with=FALSE. Utilisez alors le préfixe de symbole .. et supprimez with=FALSE."
+"La variable '%s' n'est pas visible dans le contexte de l'appelant désigné "
+"par with=FALSE. Utilisez alors le préfixe de symbole .. et supprimez "
+"with=FALSE."
 
-#: data.table.R:292
-#, c-format
+#: data.table.R:296
+#, fuzzy, c-format
+#| 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}"
 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}"
+"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 ""
 "L'opérateur := est entouré d’accolades {} ce qui est bien, mais ensuite := "
 "doit être le seul élément dans {}. Or il y a autre chose également dans {} . "
 "Déplacez plutôt les {} vers le membre droit de := ; par exemple DT[,someCol:"
 "={tmpVar1<-...;tmpVar2<-...;tmpVar1*tmpVar2}"
 
-#: data.table.R:310
+#: data.table.R:314
 #, c-format
 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 ""
-":= avec keyby n'est accepté que si i n'est pas fourni parce que setkey sur un "
-"sous-ensemble de lignes n'est pas possible. Modifiez soit keyby en by, ou "
+":= avec keyby n'est accepté que si i n'est pas fourni parce que setkey sur "
+"un sous-ensemble de lignes n'est pas possible. Modifiez soit keyby en by, ou "
 "supprimez i"
 
-#: data.table.R:312
+#: data.table.R:316
 #, c-format
 msgid "nomatch isn't relevant together with :=, ignoring nomatch"
 msgstr "nomatch n'est pas pertinent avec with :=, nomatch est ignoré"
 
-#: data.table.R:368
+#: data.table.R:372
 #, c-format
 msgid ""
 "not-join '!' prefix is present on i but nomatch is provided. Please remove "
@@ -450,56 +573,63 @@ msgstr ""
 "le préfixe de non-jointure '!' est présent sur i mais nomatch est fourni. "
 "Supprimer nomatch."
 
-#: data.table.R:396
+#: data.table.R:400
 #, c-format
 msgid ""
 "Operator := detected in i, the first argument inside DT[...], but is only "
-"valid in the second argument, j. Most often, this happens when forgetting the "
-"first comma (e.g. DT[newvar := 5] instead of DT[ , new_var := 5]). Please "
-"double-check the syntax. Run traceback(), and debugger() to get a line number."
+"valid in the second argument, j. Most often, this happens when forgetting "
+"the first comma (e.g. DT[newvar := 5] instead of DT[ , new_var := 5]). "
+"Please double-check the syntax. Run traceback(), and debugger() to get a "
+"line number."
 msgstr ""
-"L'opérateur := est présent dans i, le premier argument de DT[...], mais n'est "
-"valide que dans le second argument, j. Le plus souvent, cela se produit "
-"lorsqu'on oublie la première virgule (par exemple, DT[newvar := 5] au lieu de "
-"DT[ , new_var := 5]). Veuillez vérifier la syntaxe. Exécuter traceback(), et "
-"debugger() pour obtenir un numéro de ligne."
+"L'opérateur := est présent dans i, le premier argument de DT[...], mais "
+"n'est valide que dans le second argument, j. Le plus souvent, cela se "
+"produit lorsqu'on oublie la première virgule (par exemple, DT[newvar := 5] "
+"au lieu de DT[ , new_var := 5]). Veuillez vérifier la syntaxe. Exécuter "
+"traceback(), et debugger() pour obtenir un numéro de ligne."
 
-#: data.table.R:406
+#: data.table.R:410
 #, c-format
 msgid "'%s' is not found in calling scope and it is not a column name either"
 msgstr ""
-"'%s' n'est pas visible dans le contexte de l'appelant et ce n'est pas non plus "
-"un nom de colonne"
+"'%s' n'est pas visible dans le contexte de l'appelant et ce n'est pas non "
+"plus un nom de colonne"
 
-#: data.table.R:409
-#, c-format
+#: data.table.R:413
+#, fuzzy, c-format
+#| msgid ""
+#| "'%s' is not found in calling scope, but it is a column of type %s. If you "
+#| "wish to select rows where that column contains TRUE, or perhaps that "
+#| "column contains row numbers of itself to select, try DT[(col)], "
+#| "DT[DT$col], or DT[col==TRUE} is particularly clear and is optimized"
 msgid ""
-"'%s' is not found in calling scope, but it is a column of type %s. If you wish "
-"to select rows where that column contains TRUE, or perhaps that column "
+"'%s' is not found in calling scope, but it is a column of type %s. If you "
+"wish to select rows where that column contains TRUE, or perhaps that column "
 "contains row numbers of itself to select, try DT[(col)], DT[DT$col], or "
-"DT[col==TRUE} is particularly clear and is optimized"
+"DT[col==TRUE] is particularly clear and is optimized"
 msgstr ""
-"'%s' n'est pas visible dans le contexte de l'appelant, mais c'est une colonne "
-"de type %s. Si vous souhaitez sélectionner des lignes pour lesquelles cette "
-"colonne vaut TRUE, ou peut-être que cette colonne contient ses propres numéros "
-"de lignes à sélectionner, essayez DT[(col)], DT[DT$col], ou DT[col==TRUE] qui "
-"est particulièrement clair et optimisé"
+"'%s' n'est pas visible dans le contexte de l'appelant, mais c'est une "
+"colonne de type %s. Si vous souhaitez sélectionner des lignes pour "
+"lesquelles cette colonne vaut TRUE, ou peut-être que cette colonne contient "
+"ses propres numéros de lignes à sélectionner, essayez DT[(col)], DT[DT$col], "
+"ou DT[col==TRUE] qui est particulièrement clair et optimisé"
 
-#: data.table.R:412
+#: data.table.R:416
 #, c-format
 msgid ""
-"%s. When the first argument inside DT[...] is a single symbol (e.g. DT[var]), "
-"data.table looks for var in calling scope."
+"%s. When the first argument inside DT[...] is a single symbol (e.g. "
+"DT[var]), data.table looks for var in calling scope."
 msgstr ""
-"%s. Lorsque le premier argument de DT[...] est un symbole unique (par exemple "
-"DT[var]), data.table cherche var dans le contexte de l'appelant."
+"%s. Lorsque le premier argument de DT[...] est un symbole unique (par "
+"exemple DT[var]), data.table cherche var dans le contexte de l'appelant."
 
-#: data.table.R:424
+#: data.table.R:428
 #, c-format
 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."
+"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 ""
 "i a un type non valide (matrice). Peut-être qu'à l'avenir, une matrice à 2 "
 "colonnes pourrait renvoyer une liste d'éléments de DT (dans l'esprit de A[B] "
@@ -507,70 +637,104 @@ msgstr ""
 "tickets (issues tracker) de data.table si vous le souhaitez, ou ajouter vos "
 "commentaires à FR #657."
 
-#: data.table.R:447
+#: data.table.R:451
 #, c-format
 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."
+"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 ""
 "Lorsque i est une data.table (ou un vecteur de chaînes de caractères), les "
-"colonnes à joindre doivent être spécifiées à l'aide de l'argument 'on=' (voir ?"
-"data.table), par l'attribution d'une clé à x (c'est-à-dire trié, et, marqué "
-"comme trié, voir ?setkey), ou en partageant les noms des colonnes entre x et i "
-"(c'est-à-dire, une jointure naturelle). Les jointures avec clé peuvent avoir "
-"des avantages supplémentaires en termes de rapidité sur des données très "
-"volumineuses, car x est trié en mémoire vive."
+"colonnes à joindre doivent être spécifiées à l'aide de l'argument 'on=' "
+"(voir ?data.table), par l'attribution d'une clé à x (c'est-à-dire trié, et, "
+"marqué comme trié, voir ?setkey), ou en partageant les noms des colonnes "
+"entre x et i (c'est-à-dire, une jointure naturelle). Les jointures avec clé "
+"peuvent avoir des avantages supplémentaires en termes de rapidité sur des "
+"données très volumineuses, car x est trié en mémoire vive."
 
-#: data.table.R:455
+#: data.table.R:459
 #, c-format
 msgid "Attempting to do natural join but no common columns in provided tables"
 msgstr ""
 "Aucune colonne commune dans les tables fournies pour réaliser la jointure "
 "naturelle"
 
-#: data.table.R:587
+#: data.table.R:462
+msgid "Joining but 'x' has no key, natural join using all 'x' columns"
+msgstr ""
+
+#: data.table.R:464
+msgid "Joining but 'x' has no key, natural join using: %s"
+msgstr ""
+
+#: data.table.R:493
+msgid "not-join called with 'by=.EACHI'; Replacing !i with i=setdiff_(x,i) ..."
+msgstr ""
+
+#: data.table.R:523
+msgid "Constructing irows for '!byjoin || nqbyjoin' ..."
+msgstr ""
+
+#: data.table.R:562
+msgid "Reorder irows for 'mult==\"all\" && !allGrp1' ..."
+msgstr ""
+
+#: data.table.R:574
+msgid "Reordering %d rows after bmerge done in ..."
+msgstr ""
+
+#: data.table.R:591
 #, c-format
 msgid "logical error. i is not a data.table, but 'on' argument is provided."
 msgstr ""
 "erreur logique. i n'est pas une data.table, mais l'argument 'on' est fourni."
 
-#: data.table.R:591
+#: data.table.R:595
 #, c-format
 msgid "i has evaluated to type %s. Expecting logical, integer or double."
 msgstr ""
 "i a pour type %s alors qu'un booléen, un entier ou un double est attendu."
 
-#: data.table.R:613
+#: data.table.R:617
 #, c-format
 msgid ""
-"i evaluates to a logical vector length %d but there are %d 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."
+"i evaluates to a logical vector length %d but there are %d 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 représente un vecteur logique de longueur %d mais il y a %d lignes. Le "
-"recyclage du vecteur logique i n'est plus autorisé, car il cache plus souvent "
-"des bogues qu'il n'en vaut la peine. Utiliser explicitement rep(...,length=.N) "
-"si vous avez vraiment besoin de recycler ce vecteur."
+"recyclage du vecteur logique i n'est plus autorisé, car il cache plus "
+"souvent des bogues qu'il n'en vaut la peine. Utiliser explicitement rep(...,"
+"length=.N) si vous avez vraiment besoin de recycler ce vecteur."
 
-#: data.table.R:616
+#: data.table.R:620
 #, c-format
 msgid ""
-"Please use nomatch=NULL instead of nomatch=0; see news item 5 in v1.12.0 (Jan "
-"2019)"
+"Please use nomatch=NULL instead of nomatch=0; see news item 5 in v1.12.0 "
+"(Jan 2019)"
 msgstr ""
-"Veuillez utiliser nomatch=NULL au lieu de nomatch=0; voir l'élément 5 des news "
-"v1.12.0 (janvier 2019)"
+"Veuillez utiliser nomatch=NULL au lieu de nomatch=0; voir l'élément 5 des "
+"news v1.12.0 (janvier 2019)"
 
-#: data.table.R:688
-#, c-format
-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."
+#: data.table.R:635
+msgid "Inverting irows for notjoin done in ..."
+msgstr ""
+
+#: data.table.R:691
+#, fuzzy, c-format
+#| 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."
+msgid ""
+"with=FALSE together with := was deprecated in v1.9.4 released Oct 2014; this "
+"has been warning since v1.15.0. 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."
 msgstr ""
 "with=FALSE avec := a été déprécié dans la version 1.9.4 publiée en octobre "
 "2014. Veuillez entourer le membre gauche de := avec des parenthèses ; Par "
@@ -578,36 +742,19 @@ msgstr ""
 "contenu(s) dans la variable myVar. Voir ?':=' pour d'autres exemples. Comme "
 "annoncé en 2014, il s'agit maintenant d'un avertissement."
 
-#: data.table.R:691
-#, c-format
-msgid ""
-"with=FALSE ignored, it isn't needed when using :=. See ?':=' for examples."
-msgstr ""
-"with=FALSE est ignoré quand := est utilisé. Voir ?':=' pour les exemples."
-
-#: data.table.R:715
-#, c-format
-msgid "column(s) not removed because not found: %s"
-msgstr "colonne(s) non supprimée(s) car manquante(s) : %s"
-
-#: data.table.R:729
-#, c-format
-msgid "column(s) not found: %s"
-msgstr "colonnes(s) absente(s) : %s"
-
-#: data.table.R:735
+#: data.table.R:734
 #, c-format
 msgid "Item %d of j is %d which is outside the column number range [1,ncol=%d]"
 msgstr ""
-"L'élément %d de j vaut %d qui n'est pas dans l'intervalle des index de colonne "
-"[1,ncol=%d]"
+"L'élément %d de j vaut %d qui n'est pas dans l'intervalle des index de "
+"colonne [1,ncol=%d]"
 
-#: data.table.R:738
+#: data.table.R:737
 #, c-format
 msgid "j mixes positives and negatives"
 msgstr "j mélange les valeurs positives et négatives"
 
-#: data.table.R:746
+#: data.table.R:745
 #, c-format
 msgid ""
 "When with=FALSE, j-argument should be of type logical/character/integer "
@@ -616,21 +763,21 @@ msgstr ""
 "Lorsque with=FALSE, l’argument j doit être de type boléen/caractère/entier "
 "indiquant les colonnes à sélectionner."
 
-#: data.table.R:760
+#: data.table.R:759
 #, c-format
 msgid ""
-"'by' contains .I but only the following are currently supported: by=.I, by=.(."
-"I), by=c(.I), by=list(.I)"
+"'by' contains .I but only the following are currently supported: by=.I, by=."
+"(.I), by=c(.I), by=list(.I)"
 msgstr ""
-"'by' contient .I qui n'autorisé que pour : by=.I, by=.(.I), by=c(.I), by=list(."
-"I)"
+"'by' contient .I qui n'autorisé que pour : by=.I, by=.(.I), by=c(.I), "
+"by=list(.I)"
 
-#: data.table.R:784
+#: data.table.R:783
 #, c-format
 msgid "by=c(...), key(...) or names(...) must evaluate to 'character'"
 msgstr "by=c(...), key(...) ou names(...) doivent être de type 'character'"
 
-#: data.table.R:794
+#: data.table.R:793
 #, c-format
 msgid ""
 "'by' is a character vector length %d but one or more items include a comma. "
@@ -638,18 +785,32 @@ msgid ""
 "commas), or pass a vector length 1 containing comma separated column names. "
 "See ?data.table for other possibilities."
 msgstr ""
-"'by' est un vecteur de caractères de longueur %d mais un ou plusieurs éléments "
-"contiennent une virgule. Passer un vecteur de noms de colonnes (pouvant "
-"contenir des espaces, mais pas de virgule), ou un vecteur de longueur 1 "
-"contenant des noms de colonnes séparés par une virgule. Voir ?data.table pour "
-"d'autres possibilités."
+"'by' est un vecteur de caractères de longueur %d mais un ou plusieurs "
+"éléments contiennent une virgule. Passer un vecteur de noms de colonnes "
+"(pouvant contenir des espaces, mais pas de virgule), ou un vecteur de "
+"longueur 1 contenant des noms de colonnes séparés par une virgule. Voir ?"
+"data.table pour d'autres possibilités."
 
-#: data.table.R:801
+#: data.table.R:800
 #, c-format
 msgid "At least one entry of by is empty"
 msgstr "Au moins une valeur de by est vide"
 
-#: data.table.R:876
+#: data.table.R:827
+msgid "by index '%s' but that index has 0 length. Ignoring."
+msgstr ""
+
+#: data.table.R:850
+msgid "i clause present and columns used in by detected, only these subset: %s"
+msgstr ""
+
+#: data.table.R:853
+msgid ""
+"i clause present but columns used in by not detected. Having to subset all "
+"columns before evaluating 'by': '%s'"
+msgstr ""
+
+#: data.table.R:875
 #, c-format
 msgid ""
 "'by' appears to evaluate to column names but isn't c() or key(). Use "
@@ -661,77 +822,73 @@ msgstr ""
 "C'est à data.table de détecter les colonnes nécessaires pour un traitement "
 "efficace."
 
-#: data.table.R:887
+#: data.table.R:886
 #, c-format
 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' ou 'keyby' doit correspondre à un vecteur ou à une liste de vecteurs (où "
-"'list' inclut data.table et data.frame qui sont également des listes)"
+"'by' ou 'keyby' doit correspondre à un vecteur ou à une liste de vecteurs "
+"(où 'list' inclut data.table et data.frame qui sont également des listes)"
 
-#: data.table.R:891
+#: data.table.R:890
 #, c-format
 msgid ""
-"Column or expression %d of 'by' or 'keyby' is type '%s' which is not currently "
-"supported. If you have a compelling use case, please add it to https://github."
-"com/Rdatatable/data.table/issues/1597. As a workaround, consider converting "
-"the column to a supported type, e.g. by=sapply(list_col, toString), whilst "
-"taking care to maintain distinctness in the process."
+"Column or expression %d of 'by' or 'keyby' is type '%s' which is not "
+"currently supported. If you have a compelling use case, please add it to "
+"https://github.com/Rdatatable/data.table/issues/1597. As a workaround, "
+"consider converting the column to a supported type, e.g. by=sapply(list_col, "
+"toString), whilst taking care to maintain distinctness in the process."
 msgstr ""
 "La colonne ou l'expression %d de 'by' ou 'keyby' est de type '%s' qui n'est "
 "pas pris en charge actuellement. Si vous avez un cas d'utilisation "
 "convaincant, veuillez l'ajouter sur https://github.com/Rdatatable/data.table/"
 "issues/1597. Comme solution de contournement, envisagez de convertir la "
-"colonne en un type pris en charge, par exemple by=sapply(list_col, toString), "
-"tout en veillant à maintenir la distinction dans le processus."
+"colonne en un type pris en charge, par exemple by=sapply(list_col, "
+"toString), tout en veillant à maintenir la distinction dans le processus."
 
-#: data.table.R:895
-#, c-format
+#: data.table.R:916
 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)."
+"by-expression '%s' is not named, and the auto-generated name '%s' clashed "
+"with variable(s) in j. Therefore assigning the entire by-expression as name."
 msgstr ""
-"Les éléments de la liste ‘by’ ou ‘keyby’ sont de longueur(s) %s. Chacun d'eux "
-"doit être de longueur %d ; la même longueur que celle des lignes de x (après "
-"le sous-ensemble si i est fourni)."
 
-#: data.table.R:948
+#: data.table.R:950
 #, c-format
 msgid "Item %d of the .() or list() passed to j is missing"
 msgstr "L'élément %d de .() ou de list() passé à j est absent"
 
-#: data.table.R:954
+#: data.table.R:956
 #, c-format
 msgid ""
 "j may not evaluate to the same number of columns for each group; if you're "
-"sure this warning is in error, please put the branching logic outside of [ for "
-"efficiency"
+"sure this warning is in error, please put the branching logic outside of "
+"[ for efficiency"
 msgstr ""
-"j peut ne pas évaluer le même nombre de colonnes pour chaque groupe ; si vous "
-"êtes sûr que cet avertissement est une erreur, veuillez placer la logique de "
-"branchement en dehors de [ pour plus d'efficacité"
+"j peut ne pas évaluer le même nombre de colonnes pour chaque groupe ; si "
+"vous êtes sûr que cet avertissement est une erreur, veuillez placer la "
+"logique de branchement en dehors de [ pour plus d'efficacité"
 
-#: data.table.R:956
+#: data.table.R:958
 #, c-format
 msgid ""
-"Different branches of j expression produced different auto-named columns: %s; "
-"using the most \"last\" names. If this was intentional (e.g., you know only "
-"one branch will ever be used in a given query because the branch is controlled "
-"by a function argument), please (1) pull this branch out of the call; (2) "
-"explicitly provide missing defaults for each branch in all cases; or (3) use "
-"the same name for each branch and re-name it in a follow-up call."
+"Different branches of j expression produced different auto-named columns: "
+"%s; using the most \"last\" names. If this was intentional (e.g., you know "
+"only one branch will ever be used in a given query because the branch is "
+"controlled by a function argument), please (1) pull this branch out of the "
+"call; (2) explicitly provide missing defaults for each branch in all cases; "
+"or (3) use the same name for each branch and re-name it in a follow-up call."
 msgstr ""
 "Différentes branches de l'expression j ont produit différentes colonnes auto-"
 "nommées : %s ; Les derniers noms connus sont utilisés. Si cela était "
-"intentionnel (par exemple, vous savez qu'une seule branche sera utilisée dans "
-"une requête donnée parce que la branche est contrôlée par un argument de "
-"fonction), veuillez (1) retirer cette branche de l'appel ; (2) fournir "
-"explicitement les valeurs par défaut manquantes pour chaque branche dans tous "
-"les cas ; ou (3) utiliser le même nom pour chaque branche et la renommer dans "
-"un appel ultérieur."
+"intentionnel (par exemple, vous savez qu'une seule branche sera utilisée "
+"dans une requête donnée parce que la branche est contrôlée par un argument "
+"de fonction), veuillez (1) retirer cette branche de l'appel ; (2) fournir "
+"explicitement les valeurs par défaut manquantes pour chaque branche dans "
+"tous les cas ; ou (3) utiliser le même nom pour chaque branche et la "
+"renommer dans un appel ultérieur."
 
-#: data.table.R:1026
+#: data.table.R:1028
 #, c-format
 msgid ""
 "When .SDcols is a function, it is applied to each column; the output of this "
@@ -740,40 +897,53 @@ msgid ""
 msgstr ""
 "Quand .SDcols est une fonction, elle est appliquée à chaque colonne ; La "
 "sortie de cette fonction doit être un scalaire booléen présent indiquant "
-"l'inclusion ou l'exclusion de la colonne. Néanmoins ces conditions ne sont pas "
-"satisfaite pour : %s"
+"l'inclusion ou l'exclusion de la colonne. Néanmoins ces conditions ne sont "
+"pas satisfaite pour : %s"
 
-#: data.table.R:1032
+#: data.table.R:1034
 #, c-format
 msgid ".SDcols missing at the following indices: %s"
 msgstr ".SDcols est absent aux indices suivants : %s"
 
-#: data.table.R:1034
-#, c-format
-msgid ".SDcols is a logical vector length %d but there are %d columns"
+#: data.table.R:1036
+#, fuzzy, c-format
+#| msgid ".SDcols is a logical vector length %d but there are %d columns"
+msgid ".SDcols is a logical vector of length %d but there are %d columns"
 msgstr ".SDcols est un vecteur booléens de longueur %d mais il y a %d colonnes"
 
-#: data.table.R:1040
+#: data.table.R:1042
 #, c-format
 msgid ".SDcols is numeric but has both +ve and -ve indices"
 msgstr ".SDcols est numérique mais comporte à la fois des indices +ve et -ve"
 
-#: data.table.R:1042
+#: data.table.R:1044
 #, c-format
 msgid ".SDcols is numeric but out of bounds [1, %d] at: %s"
 msgstr ".SDcols est numérique mais hors de l'intervalle [1, %d] à : %s"
 
-#: data.table.R:1046
+#: data.table.R:1048
 #, c-format
 msgid ".SDcols should be column numbers or names"
 msgstr ".SDcols doit fournir des numéros de colonnes ou des noms"
 
-#: data.table.R:1048
+#: data.table.R:1050
 #, c-format
 msgid "Some items of .SDcols are not column names: %s"
 msgstr "Certains éléments de .SDcols ne sont pas des noms de colonnes : %s"
 
-#: data.table.R:1090
+#: data.table.R:1063
+msgid ""
+"'(m)get' found in j. ansvars being set to all columns. Use .SDcols or a "
+"single j=eval(macro) instead. Both will detect the columns used which is "
+"important for efficiency.\n"
+"Old ansvars: %s"
+msgstr ""
+
+#: data.table.R:1083
+msgid "New ansvars: %s"
+msgstr ""
+
+#: data.table.R:1092
 #, c-format
 msgid ""
 "This j doesn't use .SD but .SDcols has been supplied. Ignoring .SDcols. See ?"
@@ -782,26 +952,30 @@ msgstr ""
 "Ce j n'utilise pas .SD mais .SDcols qui a été fourni. .SDcols est ignoré. "
 "Voir ?data.table."
 
-#: data.table.R:1106
+#: data.table.R:1095
+msgid "Detected that j uses these columns: %s"
+msgstr ""
+
+#: data.table.R:1108
 #, c-format
 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."
+"tortuously flexible way to modify by group. Use := in j directly to modify "
+"by group by reference."
 msgstr ""
 ".SD est verrouillé. L'utilisation de := dans j de .SD est réservée pour une "
 "utilisation future possible ; une manière un peu tordue de modifier par "
 "groupe. Utiliser := dans j directement pour modifier par groupe et par "
 "référence."
 
-#: data.table.R:1114
+#: data.table.R:1119
 #, c-format
 msgid "In %s(col1=val1, col2=val2, ...) form, all arguments must be named."
 msgstr ""
 "Dans la forme %s(col1=val1, col2=val2, ...), tous les arguments doivent être "
 "nommés."
 
-#: data.table.R:1136
+#: data.table.R:1142
 #, c-format
 msgid ""
 "In %s(col1=val1, col2=val2, ...) form, all arguments must be named, but the "
@@ -811,16 +985,16 @@ msgstr ""
 "nommés, cependant le dernier argument n’a pas de nom. Avez-vous oublié une "
 "virgule à la fin ?"
 
-#: data.table.R:1138
+#: data.table.R:1144
 #, c-format
 msgid ""
-"In %s(col1=val1, col2=val2, ...) form, all arguments must be named, but these "
-"arguments lack names: %s."
+"In %s(col1=val1, col2=val2, ...) form, all arguments must be named, but "
+"these arguments lack names: %s."
 msgstr ""
 "Dans la forme %s(col1=val1, col2=val2, ...), tous les arguments doivent être "
 "nommés, mais les arguments suivants n’ont pas de nom : %s."
 
-#: data.table.R:1145
+#: data.table.R:1151
 #, c-format
 msgid ""
 "LHS of := must be a symbol, or an atomic vector (column names or positions)."
@@ -828,7 +1002,7 @@ msgstr ""
 "Le membre gauche de := doit être un symbole, ou un vecteur atomique (noms de "
 "colonnes ou positions)."
 
-#: data.table.R:1150
+#: data.table.R:1156
 #, c-format
 msgid ""
 "LHS of := appears to be column positions but are outside [1,ncol] range. New "
@@ -838,71 +1012,105 @@ msgstr ""
 "en dehors de l'intervalle [1,ncol] . Ajouter les nouvelles colonnes par nom "
 "uniquement."
 
-#: data.table.R:1153
+#: data.table.R:1159
 #, c-format
 msgid ""
 "LHS of := isn't column names ('character') or positions ('integer' or "
 "'numeric')"
 msgstr ""
-"Le membre gauche de := ne correspond pas à des noms de colonnes ('character') "
-"ni à des positions ('integer' ou 'numeric')"
+"Le membre gauche de := ne correspond pas à des noms de colonnes "
+"('character') ni à des positions ('integer' ou 'numeric')"
+
+#: data.table.R:1175
+msgid ""
+"No rows match i. No new columns to add so not evaluating RHS of :=\n"
+"Assigning to 0 row subset of %d rows"
+msgstr ""
+
+#: data.table.R:1190
+#, fuzzy, c-format
+#| 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."
+msgid ""
+"A shallow copy of this data.table was taken so that := can add or remove %d "
+"columns by reference. At an earlier point, this data.table was 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. It's "
+"also not unusual for data.table-agnostic packages to produce tables affected "
+"by this issue. 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 ""
+"Invalide .internal.selfref détecté et corrigé en prenant une copie (peu "
+"profonde) du data.table afin que := puisse ajouter cette nouvelle colonne "
+"par référence. Ce data.table a été copié antérieurement par R (ou a été créé "
+"manuellement en utilisant structure() ou similaire). Évitez names<- et "
+"attr<- qui, dans R, peuvent actuellement (et bizarrement) copier tout le "
+"data.table. Utilisez plutôt la syntaxe set* pour éviter la copie : ?set, ?"
+"setnames et ?setattr. Si ce message ne vous aide pas, veuillez rapporter "
+"votre cas d'utilisation dans le gestionnaire de tickets de data.table (issue "
+"tracker) afin que la cause première puisse être corrigée ou que ce message "
+"soit amélioré."
 
-#: data.table.R:1184
-#, c-format
+#: data.table.R:1198
 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."
+"Growing vector of column pointers from truelength %d to %d. A shallow copy "
+"has been taken, see ?setalloccol. Only a potential issue if two variables "
+"point to the same data (we can't yet detect that well) and if not you can "
+"safely ignore this. To avoid this message you could setalloccol() first, "
+"deep copy first using copy(), wrap with suppressWarnings() or increase the "
+"'datatable.alloccol' option."
 msgstr ""
-"Invalide .internal.selfref détecté et corrigé en prenant une copie (peu "
-"profonde) du data.table afin que := puisse ajouter cette nouvelle colonne par "
-"référence. Ce data.table a été copié antérieurement par R (ou a été créé "
-"manuellement en utilisant structure() ou similaire). Évitez names<- et attr<- "
-"qui, dans R, peuvent actuellement (et bizarrement) copier tout le data.table. "
-"Utilisez plutôt la syntaxe set* pour éviter la copie : ?set, ?setnames et ?"
-"setattr. Si ce message ne vous aide pas, veuillez rapporter votre cas "
-"d'utilisation dans le gestionnaire de tickets de data.table (issue tracker) "
-"afin que la cause première puisse être corrigée ou que ce message soit "
-"amélioré."
 
-#: data.table.R:1215
+#: data.table.R:1200
+msgid ""
+"Note that the shallow copy will assign to the environment from which := was "
+"called. That means for example that if := was called within a function, the "
+"original table may be unaffected."
+msgstr ""
+
+#: data.table.R:1221
 #, c-format
 msgid ""
 "Cannot assign to an under-allocated recursively indexed list -- L[[i]][,:=] "
 "syntax is only valid when i is length 1, but its length is %d"
 msgstr ""
 "Impossible d'assigner à une sous-liste indexée récursivement -- la syntaxe "
-"L[[i]][,:=] n'est autorisée que si i est de longueur 1 mais sa longueur est %d"
+"L[[i]][,:=] n'est autorisée que si i est de longueur 1 mais sa longueur est "
+"%d"
 
-#: data.table.R:1284
+#: data.table.R:1292
 #, c-format
 msgid ""
-"Variable '%s' is not found in calling scope. Looking in calling scope because "
-"this symbol was prefixed with .. in the j= parameter."
+"Variable '%s' is not found in calling scope. Looking in calling scope "
+"because this symbol was prefixed with .. in the j= parameter."
 msgstr ""
-"La variable '%s' n'est pas visible dans le contexte de l'appelant désigné par "
-"le préfixe .. du symbole dans le paramètre j= ."
+"La variable '%s' n'est pas visible dans le contexte de l'appelant désigné "
+"par le préfixe .. du symbole dans le paramètre j= ."
 
-#: data.table.R:1370
+#: data.table.R:1378
 #, c-format
 msgid ""
-"j (the 2nd argument inside [...]) is a single symbol but column name '%1$s' is "
-"not found. If you intended to select columns using a variable in calling "
-"scope, please try DT[, ..%1$s]. The .. prefix conveys one-level-up similar to "
-"a file system path."
+"j (the 2nd argument inside [...]) is a single symbol but column name '%1$s' "
+"is not found. If you intended to select columns using a variable in calling "
+"scope, please try DT[, ..%1$s]. The .. prefix conveys one-level-up similar "
+"to a file system path."
 msgstr ""
-"j (le deuxième argument à l'intérieur de [...]) est un symbole unique mais le "
-"nom de la colonne '%1$s' n'est pas trouvé. Si vous souhaitez sélectionner des "
-"colonnes à l'aide d'une variable dans la portée de l'appelant, essayez DT[, .."
-"%1$s]. Le préfixe .. indique un niveau supérieur similaire à celui d'un chemin "
-"d'accès pour un système de fichiers."
+"j (le deuxième argument à l'intérieur de [...]) est un symbole unique mais "
+"le nom de la colonne '%1$s' n'est pas trouvé. Si vous souhaitez sélectionner "
+"des colonnes à l'aide d'une variable dans la portée de l'appelant, essayez "
+"DT[, ..%1$s]. Le préfixe .. indique un niveau supérieur similaire à celui "
+"d'un chemin d'accès pour un système de fichiers."
 
-#: data.table.R:1454
+#: data.table.R:1466
 #, c-format
 msgid ""
 "The column '.N' can't be grouped because it conflicts with the special .N "
@@ -911,7 +1119,7 @@ msgstr ""
 "La colonne '.N' ne peut pas être groupée car elle est en conflit avec la "
 "variable spéciale .N variable. Essayer d'abord setnames(DT,'.N','N') ."
 
-#: data.table.R:1455
+#: data.table.R:1467
 #, c-format
 msgid ""
 "The column '.I' can't be grouped because it conflicts with the special .I "
@@ -920,197 +1128,273 @@ msgstr ""
 "La colonne '.I' ne peut pas être groupée car elle est en conflit avec la "
 "variable spéciale .I . Essayez d'abord setnames(DT,'.I','I')."
 
-#: data.table.R:1483
-#, c-format
-msgid "logical error. i is not data.table, but mult='all' and 'by'=.EACHI"
+#: data.table.R:1486
+msgid ""
+"Note: forcing units=\"secs\" on implicit difftime by group; call difftime "
+"explicitly to choose custom units"
+msgstr ""
+
+#: data.table.R:1495
+#, fuzzy, c-format
+#| msgid "logical error. i is not data.table, but mult='all' and 'by'=.EACHI"
+msgid "logical error. i is not a data.table, but mult='all' and 'by'=.EACHI"
 msgstr ""
 "erreur logique. i n'est pas une data.table, mais mult='all' et 'by'=.EACHI"
 
-#: data.table.R:1804
+#: data.table.R:1522
+msgid "Finding groups using forderv ..."
+msgstr ""
+
+#: data.table.R:1536 data.table.R:1568
+msgid "Finding group sizes from the positions (can be avoided to save RAM) ..."
+msgstr ""
+
+#: data.table.R:1544
+msgid "Getting back original order ..."
+msgstr ""
+
+#: data.table.R:1556
+msgid "Finding groups using uniqlist on key ..."
+msgstr ""
+
+#: data.table.R:1560
+msgid "Finding groups using uniqlist on index '%s' ..."
+msgstr ""
+
+#: data.table.R:1779
+msgid "lapply optimization changed j from '%s' to '%s'"
+msgstr ""
+
+#: data.table.R:1781
+msgid "lapply optimization is on, j unchanged as '%s'"
+msgstr ""
+
+#: data.table.R:1790 data.table.R:1814
+msgid "GForce optimized j to '%s' (see ?GForce)"
+msgstr ""
+
+#: data.table.R:1815
+msgid ""
+"GForce is on, but not activated for this query; left j unchanged (see ?"
+"GForce)"
+msgstr ""
+
+#: data.table.R:1834
 #, c-format
 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 ""
-"Impossible d'optimiser l'appel à mean() et risque d'être très lent. Vous devez "
-"nommer 'na.rm' comme cela, sinon si vous faites mean(x,TRUE), TRUE est "
-"considéré comme signifiant 'trim' qui est le deuxième argument de mean. 'trim' "
-"n'est pas encore optimisé."
+"Impossible d'optimiser l'appel à mean() et risque d'être très lent. Vous "
+"devez nommer 'na.rm' comme cela, sinon si vous faites mean(x,TRUE), TRUE est "
+"considéré comme signifiant 'trim' qui est le deuxième argument de mean. "
+"'trim' n'est pas encore optimisé."
+
+#: data.table.R:1838
+msgid "Old mean optimization changed j from '%s' to '%s'"
+msgstr ""
+
+#: data.table.R:1840
+msgid "Old mean optimization is on, left j unchanged."
+msgstr ""
+
+#: data.table.R:1850
+msgid "All optimizations are turned off"
+msgstr ""
+
+#: data.table.R:1851
+msgid "Optimization is on but left j unchanged (single plain symbol): '%s'"
+msgstr ""
+
+#: data.table.R:1880
+msgid "Making each group and running j (GForce %s) ..."
+msgstr ""
 
-#: data.table.R:1950
+#: data.table.R:1976
+msgid "setkey() after the := with keyby= ..."
+msgstr ""
+
+#: data.table.R:1980
 #, c-format
 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=."
+"some expressions. To avoid this warning, use by= instead, or provide "
+"existing column names to keyby=."
 msgstr ""
 "Le setkey() normalement exécuté par keyby= a été ignoré (comme si by= était "
 "utilisé) parce que := est utilisé avec keyby=, mais keyby= contient des "
 "expressions. Pour éviter cet avertissement, utilisez by= à la place, ou "
 "fournissez des noms de colonnes existantes à keyby=."
 
-#: data.table.R:2039
+#: data.table.R:2006
+msgid "setkey() afterwards for keyby=.EACHI ..."
+msgstr ""
+
+#: data.table.R:2072
 #, c-format
 msgid "rownames and rownames.value cannot both be used at the same time"
 msgstr "rownames et rownames.value ne peuvent pas être utilisés simultanément"
 
-#: data.table.R:2044
+#: data.table.R:2075
 #, c-format
 msgid ""
 "length(rownames)==%d but nrow(DT)==%d. The rownames argument specifies a "
 "single column name or number. Consider rownames.value= instead."
 msgstr ""
-"length(rownames)==%d mais nrow(DT)==%d. L'argument rownames spécifie un nom de "
-"colonne unique ou un nombre. Remplacez par rownames.value= ."
+"length(rownames)==%d mais nrow(DT)==%d. L'argument rownames spécifie un nom "
+"de colonne unique ou un nombre. Remplacez par rownames.value= ."
 
-#: data.table.R:2048
+#: data.table.R:2079
 #, c-format
-msgid "length(rownames)==0 but should be a single column name or number, or NULL"
+msgid ""
+"length(rownames)==0 but should be a single column name or number, or NULL"
 msgstr ""
-"length(rownames)==0 mais doit être un nom de vecteur colonne, ou un nombre, ou "
-"NULL"
+"length(rownames)==0 mais doit être un nom de vecteur colonne, ou un nombre, "
+"ou NULL"
 
-#: data.table.R:2052
+#: data.table.R:2083
 #, c-format
 msgid ""
-"rownames is TRUE but key has multiple columns %s; taking first column x[,1] as "
-"rownames"
+"rownames is TRUE but key has multiple columns %s; taking first column x[,1] "
+"as rownames"
 msgstr ""
 "rownames vaut TRUE mais la clé a plusieurs colonnes %s ; Seule la première "
 "colonne x[,1] est utilisée pour le nom des lignes"
 
-#: data.table.R:2062
+#: data.table.R:2093
 #, c-format
 msgid "'%s' is not a column of x"
 msgstr "'%s' n'est pas une colonne de x"
 
-#: data.table.R:2068
+#: data.table.R:2099
 #, c-format
 msgid ""
-"as.integer(rownames)==%d which is outside the column number range [1,ncol=%d]."
+"as.integer(rownames)==%d which is outside the column number range [1,"
+"ncol=%d]."
 msgstr ""
-"as.integer(rownames)==%d est en dehors de l'intervalle des numéros de colonne "
-"[1,ncol=%d]."
+"as.integer(rownames)==%d est en dehors de l'intervalle des numéros de "
+"colonne [1,ncol=%d]."
 
-#: data.table.R:2073
+#: data.table.R:2104
 #, c-format
 msgid "length(rownames.value)==%d but should be nrow(x)==%d"
 msgstr "length(rownames.value)==%d mais devrait être nrow(x)==%d"
 
-#: data.table.R:2169
+#: data.table.R:2200
 #, c-format
 msgid ""
 "When i is a matrix in DT[i]<-value syntax, it doesn't make sense to provide j"
 msgstr ""
-"Si i est une matrice, dans la syntaxe DT[i]<-valeur, fournir j n'a pas de sens"
+"Si i est une matrice, dans la syntaxe DT[i]<-valeur, fournir j n'a pas de "
+"sens"
 
-#: data.table.R:2179
+#: data.table.R:2210
 #, c-format
 msgid "j must be an atomic vector, see ?is.atomic"
 msgstr "j doit être un vecteur atomique, voir ?is.atomic"
 
-#: data.table.R:2180
+#: data.table.R:2211
 #, c-format
 msgid "NA in j"
 msgstr "NA trouvé dans j"
 
-#: data.table.R:2186
+#: data.table.R:2217
 #, c-format
 msgid "j must be vector of column name or positions"
 msgstr "j doit être un vecteur de noms de colonnes ou de positions"
 
-#: data.table.R:2187
+#: data.table.R:2218
 #, c-format
 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 ""
 "Tentative d'accès à une colonne située au-delà de ncol(x). À la place, créez "
-"la colonne par nom. Cette logique permet d'intercepter les erreurs utilisateur "
-"(le plus souvent)."
+"la colonne par nom. Cette logique permet d'intercepter les erreurs "
+"utilisateur (le plus souvent)."
 
-#: data.table.R:2254
+#: data.table.R:2285
 #, c-format
 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?"
+"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 hérite de data.frame (à partir de la version 1.5), mais pas ce data."
-"table. A-t-il été créé manuellement (par exemple en utilisant 'structure' "
-"plutôt que 'data.table') ou sauvegardé sur disque à l'aide d'une version "
-"antérieure de data.table ?"
+"data.table hérite de data.frame (à partir de la version 1.5), mais pas ce "
+"data.table. A-t-il été créé manuellement (par exemple en utilisant "
+"'structure' plutôt que 'data.table') ou sauvegardé sur disque à l'aide d'une "
+"version antérieure de data.table ?"
 
-#: data.table.R:2263
+#: data.table.R:2294
 #, c-format
 msgid "attempting to assign invalid object to dimnames of a data.table"
 msgstr "assignation d'un objet non valide à dimnames d'une data.table"
 
-#: data.table.R:2264
+#: data.table.R:2295
 #, c-format
 msgid "data.tables do not have rownames"
 msgstr "les data.tables n'ont pas de rownames"
 
-#: data.table.R:2265 data.table.R:2634
+#: data.table.R:2296 data.table.R:2665
 #, c-format
 msgid "Can't assign %d names to a %d-column data.table"
 msgstr "Impossible d'assigner %d noms à une data.table de %d colonne(s)"
 
-#: data.table.R:2329
+#: data.table.R:2360
 #, c-format
 msgid "'subset' must evaluate to logical"
 msgstr "'subset' doit représenter une valeur booléenne"
 
-#: data.table.R:2372
+#: data.table.R:2403
 #, c-format
 msgid "Argument 'invert' must be logical TRUE/FALSE"
 msgstr "L'argument 'invert' doit être un booléen TRUE / FALSE"
 
-#: data.table.R:2413
+#: data.table.R:2444
 #, c-format
 msgid "x argument must be a data.table"
 msgstr "l'argument x doit être une data.table"
 
-#: data.table.R:2418
+#: data.table.R:2449
 #, c-format
 msgid "group length is 0 but data nrow > 0"
 msgstr "la longueur du groupe est 0 mais pour les données, nrow > 0"
 
-#: data.table.R:2420
+#: data.table.R:2451
 #, c-format
 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"
+"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 ""
 "le passage de l'argument 'f' en même temps que 'by' n'est pas autorisé, "
 "utilisez 'by' pour la division par colonne dans data.table et 'f' pour la "
 "division par facteur externe"
 
-#: data.table.R:2428
+#: data.table.R:2459
 #, c-format
 msgid "Either 'by' or 'f' argument must be supplied"
 msgstr "Fournir un seul argument 'by' ou 'f' mais pas les deux"
 
-#: data.table.R:2430
+#: data.table.R:2461
 #, c-format
 msgid "Column '.ll.tech.split' is reserved for split.data.table processing"
 msgstr ""
 "La colonne '.ll.tech.split' est réservée au traitement de split.data.table"
 
-#: data.table.R:2431
+#: data.table.R:2462
 #, c-format
 msgid "Column '.nm.tech.split' is reserved for split.data.table processing"
 msgstr ""
 "La colonne '.nm.tech.split' est réservée au traitement de split.data.table"
 
-#: data.table.R:2432
+#: data.table.R:2463
 #, c-format
 msgid "Argument 'by' must refer to column names in x"
 msgstr "L'argument 'by' doit se rapporter aux noms des colonnes dans x"
 
-#: data.table.R:2433
+#: data.table.R:2464
 #, c-format
 msgid ""
 "Argument 'by' must refer only to atomic-type columns, but the following "
@@ -1119,22 +1403,26 @@ msgstr ""
 "L'argument 'by' doit faire référence uniquement à des colonnes de type "
 "atomique, mais les colonnes suivantes ne le sont pas : %s"
 
-#: data.table.R:2565
+#: data.table.R:2511
+msgid "Processing split.data.table with: %s"
+msgstr ""
+
+#: data.table.R:2596
 #, c-format
 msgid ""
 "x is not a data.table|frame. Shallow copy is a copy of the vector of column "
 "pointers (only), so is only meaningful for data.table|frame"
 msgstr ""
 "x n'est pas un data.table|frame. Shallow copy est une copie du vecteur de "
-"pointeurs de colonnes (uniquement), et n'a donc de sens que pour un data.table|"
-"frame"
+"pointeurs de colonnes (uniquement), et n'a donc de sens que pour un data."
+"table|frame"
 
-#: data.table.R:2574
+#: data.table.R:2605
 #, c-format
 msgid "setalloccol attempting to modify `*tmp*`"
 msgstr "setalloccol essaie de modifier `*tmp*`"
 
-#: data.table.R:2609
+#: data.table.R:2640
 #, c-format
 msgid ""
 "Input is a length=1 logical that points to the same address as R's global "
@@ -1146,121 +1434,114 @@ msgstr ""
 "référence mais plutôt par copie. Vous devrez donc assigner le résultat à une "
 "variable. Voir le tickets (issues) numéro #1281."
 
-#: data.table.R:2624
+#: data.table.R:2655
 #, c-format
 msgid "x is not a data.table or data.frame"
 msgstr "x n'est pas une data.table ni un data.frame"
 
-#: data.table.R:2626
+#: data.table.R:2657
 #, c-format
 msgid "x has %d columns but its names are length %d"
 msgstr "x a %d colonnes mais les noms sont de longueur %d"
 
-#: data.table.R:2633
+#: data.table.R:2664
 #, c-format
 msgid "Passed a vector of type '%s'. Needs to be type 'character'."
 msgstr "Passage d'un vecteur de type '%s'. Doit être de type 'character'."
 
-#: data.table.R:2646
+#: data.table.R:2677
 #, c-format
 msgid "'new' is not a character vector or a function"
 msgstr "'new' n’est pas un vecteur de chaîne de caractères ni une fonction"
 
-#: data.table.R:2648
+#: data.table.R:2679
 #, c-format
 msgid "NA in 'new' at positions %s"
 msgstr "NA est présent dans 'new' aux positions %s"
 
-#: data.table.R:2649
+#: data.table.R:2680
 #, c-format
 msgid "Some duplicates exist in 'old': %s"
 msgstr "Présence de certains doublons dans 'old' : %s"
 
-#: data.table.R:2651
+#: data.table.R:2682
 #, c-format
 msgid "'old' is type %s but should be integer, double or character"
 msgstr ""
-"'old' est de type %s mais doit être un entier, un double ou de type 'character'"
+"'old' est de type %s mais doit être un entier, un double ou de type "
+"'character'"
 
-#: data.table.R:2652
+#: data.table.R:2683
 #, c-format
 msgid "'old' is length %d but 'new' is length %d"
 msgstr "'old' est de longueur %d et 'new' est de longueur %d"
 
-#: data.table.R:2653
+#: data.table.R:2684
 #, c-format
 msgid "NA (or out of bounds) in 'old' at positions %s"
 msgstr "NA (ou valeurs hors limites) trouvées dans 'old' aux positions %s"
 
-#: data.table.R:2656
+#: data.table.R:2687
 #, c-format
 msgid ""
-"Item %d of 'old' is '%s' which appears several times in column names. Just the "
-"first will be changed. There are %d other items in 'old' that are also "
+"Item %d of 'old' is '%s' which appears several times in column names. Just "
+"the first will be changed. There are %d other items in 'old' that are also "
 "duplicated in column names."
 msgstr ""
 "L'élément %d de 'old' est '%s' et apparait plusieurs fois dans les noms des "
-"colonnes. Seul le premier sera modifié. Il reste %d autres éléments dans 'old' "
-"qui sont également dupliqués dans les noms des colonnes."
+"colonnes. Seul le premier sera modifié. Il reste %d autres éléments dans "
+"'old' qui sont également dupliqués dans les noms des colonnes."
 
-#: data.table.R:2664
+#: data.table.R:2695
 #, c-format
-msgid "Items of 'old' not found in column names: %s. Consider skip_absent=TRUE."
+msgid ""
+"Items of 'old' not found in column names: %s. Consider skip_absent=TRUE."
 msgstr ""
 "Eléments de 'old' non trouvés parmi les noms de colonnes : %s. Veuillez "
 "utiliser skip_absent=TRUE."
 
-#: data.table.R:2703
-#, c-format
-msgid ""
-"x has some duplicated column name(s): %s. Please remove or rename the "
-"duplicate(s) and try again."
-msgstr ""
-"x comporte des doublons de noms de colonnes : %s. Veuillez les supprimer ou "
-"les renommer et recommencer."
-
-#: data.table.R:2705
+#: data.table.R:2736
 #, c-format
 msgid "Provide either before= or after= but not both"
 msgstr "Fournir before= ou after= mais pas les deux simultanément"
 
-#: data.table.R:2707
+#: data.table.R:2738
 #, c-format
 msgid "before=/after= accept a single column name or number, not more than one"
 msgstr ""
 "before= ou after= n'acceptent qu'un seul nom de colonne ou nombre et pas plus"
 
-#: data.table.R:2763
+#: data.table.R:2795
 #, c-format
 msgid "Input is %s but should be a plain list of items to be stacked"
 msgstr "L'entrée est %s mais doit être une liste d'éléments à empiler"
 
-#: data.table.R:2767
+#: data.table.R:2799
 #, c-format
 msgid ""
 "idcol must be a logical or character vector of length 1. If logical TRUE the "
 "id column will named '.id'."
 msgstr ""
-"idcol doit être un vecteur booléen ou un vecteur de caractères de longueur 1. "
-"Si la valeur logique est TRUE, la colonne id sera nommée '.id'."
+"idcol doit être un vecteur booléen ou un vecteur de caractères de longueur "
+"1. Si la valeur logique est TRUE, la colonne id sera nommée '.id'."
 
-#: data.table.R:2772
+#: data.table.R:2804
 #, c-format
 msgid "use.names=NA invalid"
 msgstr "use.names=NA non valide"
 
-#: data.table.R:2774
+#: data.table.R:2806
 #, c-format
 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."
+"in v1.12.2 and subject to change. It is just meant to convey default "
+"behavior. See ?rbindlist."
 msgstr ""
-"use.names='check' ne peut être utilisé explicitement car la valeur 'check' est "
-"nouvelle en v1.12.2 et peut changer à l'avenir. Elle est présente juste pour "
-"garder le comportement par défaut. Voir ?rbindlist."
+"use.names='check' ne peut être utilisé explicitement car la valeur 'check' "
+"est nouvelle en v1.12.2 et peut changer à l'avenir. Elle est présente juste "
+"pour garder le comportement par défaut. Voir ?rbindlist."
 
-#: data.table.R:2789
+#: data.table.R:2821
 #, c-format
 msgid ""
 "Check that is.data.table(DT) == TRUE. Otherwise, :=, `:=`(...) and let(...) "
@@ -1268,12 +1549,12 @@ msgid ""
 "namespace-qualification like data.table::`:=`(...) is not supported. See "
 "help(\":=\")."
 msgstr ""
-"Vérifiez que is.data.table(DT) == TRUE. Sinon, :=, ':='(...) et let(...) sont "
-"définis pour être utilisés dans j, une seule fois et de manières "
+"Vérifiez que is.data.table(DT) == TRUE. Sinon, :=, ':='(...) et let(...) "
+"sont définis pour être utilisés dans j, une seule fois et de manières "
 "particulières. Notez que la spécification de l’espace de noms comme data."
 "table::`:=`(…) n’est pas supportée. Voir help(\":=\")."
 
-#: data.table.R:2806
+#: data.table.R:2838
 #, c-format
 msgid ""
 "setDF only accepts data.table, data.frame or list of equal length as input"
@@ -1281,99 +1562,130 @@ msgstr ""
 "setDF n'accepte en entrée que des types data.table, data.frame ou des listes "
 "d'égale longeur"
 
-#: data.table.R:2807
+#: data.table.R:2839
 #, c-format
 msgid "rownames contains duplicates"
 msgstr "doublons présents dans rownames"
 
-#: data.table.R:2814 data.table.R:2825 data.table.R:2848
+#: data.table.R:2846 data.table.R:2857 data.table.R:2880
 #, c-format
 msgid "rownames incorrect length; expected %d names, got %d"
 msgstr "longueur incorrecte de rownames ; %d noms attendus, %d sont fournis"
 
-#: data.table.R:2833
+#: data.table.R:2865
 #, c-format
 msgid "All elements in argument 'x' to 'setDF' must be of same length"
 msgstr ""
 "Tous les éléments de l'argument 'x' de 'setDF' doivent avoir la même longueur"
 
-#: data.table.R:2862
+#: data.table.R:2894
 #, c-format
 msgid "Cannot find symbol %s"
 msgstr "Symbole %s non trouvé"
 
-#: data.table.R:2869
+#: data.table.R:2901
 #, c-format
 msgid ""
-"Cannot convert '%1$s' to data.table by reference because binding is locked. It "
-"is very likely that '%1$s' 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."
+"Cannot convert '%1$s' to data.table by reference because binding is locked. "
+"It is very likely that '%1$s' 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 ""
 "Impossible de convertir '%1$s' en data.table par référence car le lien est "
 "verrouillé. Il est très probable que '%1$s' se trouve dans un package (ou un "
-"environnement) qui est verrouillé pour empêcher la modification de ses objets. "
-"Essayez de copier l'objet dans votre environnement actuel, ex : var <- "
-"copy(var) et utilisez ensuite setDT à nouveau."
+"environnement) qui est verrouillé pour empêcher la modification de ses "
+"objets. Essayez de copier l'objet dans votre environnement actuel, ex : var "
+"<- copy(var) et utilisez ensuite setDT à nouveau."
 
-#: data.table.R:2922
+#: data.table.R:2955
 #, c-format
-msgid "Argument 'x' to 'setDT' should be a 'list', 'data.frame' or 'data.table'"
+msgid ""
+"Argument 'x' to 'setDT' should be a 'list', 'data.frame' or 'data.table'"
 msgstr ""
 "L'argument 'x' de 'setDT' doit être de type 'list', 'data.frame' ou 'data."
 "table'"
 
-#: data.table.R:2937
+#: data.table.R:2970
 #, c-format
 msgid "Item '%s' not found in names of input list"
 msgstr "Élément '%s' non trouvé parmi les noms de la liste d'entrée"
 
-#: data.table.R:2962 data.table.R:2987
+#: data.table.R:3003 data.table.R:3028
 #, c-format
 msgid "'prefix' must be NULL or a character vector of length 1."
 msgstr ""
 "'prefix' doit être NULL ou un vecteur de chaîne de caractères de longueur 1."
 
-#: data.table.R:2965 data.table.R:2990
+#: data.table.R:3006 data.table.R:3031
 #, c-format
 msgid "x is a single vector, non-NULL 'cols' doesn't make sense."
 msgstr "x est un vecteur unique, donc 'cols' non NULL n'a pas de sens."
 
-#: data.table.R:2969 data.table.R:2994
+#: data.table.R:3010 data.table.R:3035
 #, c-format
 msgid "x is a list, 'cols' cannot be 0-length."
 msgstr "x est une liste, 'cols' ne peut avoir une longueur 0."
 
-#: data.table.R:3185
+#: data.table.R:3190
+#, c-format
+msgid ""
+"It looks like you re-used `:=` in argument %d a functional assignment call "
+"-- use `=` instead: %s(col1=val1, col2=val2, ...)"
+msgstr ""
+
+#: data.table.R:3256
 #, c-format
 msgid ""
 "RHS of %s is length %d which is not 1 or nrow (%d). For robustness, no "
 "recycling is allowed (other than of length 1 RHS). Consider %%in%% instead."
 msgstr ""
 "Le membre de droite de %s a pour longueur %d au lieu de 1 ou nrow (%d) "
-"attendu. Pour la robustesse, aucun recyclage n'est autorisé (autre que sur une "
-"longueur de 1 du membre de droite). Essayez %%in%% à la place."
+"attendu. Pour la robustesse, aucun recyclage n'est autorisé (autre que sur "
+"une longueur de 1 du membre de droite). Essayez %%in%% à la place."
+
+#: data.table.R:3288
+msgid ""
+"Subsetting optimization disabled because the cross-product of RHS values "
+"exceeds 1e4, causing memory problems."
+msgstr ""
+
+#: data.table.R:3306
+msgid "Optimized subsetting with key %s"
+msgstr ""
 
-#: data.table.R:3300
+#: data.table.R:3325 data.table.R:3337
+msgid "Optimized subsetting with index '%s'"
+msgstr ""
+
+#: data.table.R:3332
+msgid "Creating new index '%s'"
+msgstr ""
+
+#: data.table.R:3333
+msgid "Creating index %s done in ..."
+msgstr ""
+
+#: data.table.R:3371
 #, c-format
 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'."
+"'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 ""
 "l'argument 'on' doit être un vecteur atomique nommé composé de noms de "
-"colonnes indiquant quelle colonne de 'i' doit être jointe à quelle colonne de "
-"'x'."
+"colonnes indiquant quelle colonne de 'i' doit être jointe à quelle colonne "
+"de 'x'."
 
-#: data.table.R:3341
+#: data.table.R:3412
 #, c-format
 msgid ""
 "Found more than one operator in one 'on' statement: %s. Please specify a "
 "single operator."
 msgstr ""
-"Plus d'un opérateur trouvé dans une déclaration 'on' : %s. Veuillez spécifier "
-"un seul opérateur."
+"Plus d'un opérateur trouvé dans une déclaration 'on' : %s. Veuillez "
+"spécifier un seul opérateur."
 
-#: data.table.R:3364
+#: data.table.R:3435
 #, c-format
 msgid ""
 "'on' contains no column name: %s. Each 'on' clause must contain one or two "
@@ -1382,43 +1694,71 @@ msgstr ""
 "'on' n'a pas de nom de colonne : %s. Chaque clause 'on' doit contenir un ou "
 "deux noms de colonnes."
 
-#: data.table.R:3366
+#: data.table.R:3437
 #, c-format
 msgid ""
-"'on' contains more than 2 column names: %s. Each 'on' clause must contain one "
-"or two column names."
+"'on' contains more than 2 column names: %s. Each 'on' clause must contain "
+"one or two column names."
 msgstr ""
 "la clause 'on' contient plus de 2 noms de colonnes : %s. Chaque clause 'on' "
 "doit contenir un ou deux noms de colonnes."
 
-#: data.table.R:3371
+#: data.table.R:3442
 #, c-format
 msgid "Invalid join operators %s. Only allowed operators are %s."
 msgstr ""
-"Opérateurs de jointure non valides %s. Les seuls opérateurs autorisés sont %s."
+"Opérateurs de jointure non valides %s. Les seuls opérateurs autorisés sont "
+"%s."
 
 #: devel.R:16
 #, c-format
 msgid "There is no package %s in provided repository."
 msgstr "Package %s non trouvé dans le dépôt fourni."
 
+#: devel.R:30
+msgid ""
+"No revision information found in DESCRIPTION file for %s package. Make sure "
+"that '%s' is correct field in PACKAGES file in your package repository '%s'. "
+"Otherwise package will be re-installed every time, proceeding to "
+"installation."
+msgstr ""
+
+#: devel.R:39
+msgid "R %s package has been updated to %s (%s)"
+msgstr ""
+
+#: devel.R:41
+msgid "R %s package is up-to-date at %s (%s)"
+msgstr ""
+
+#: devel.R:53
+msgid ""
+"Git revision is not available. Most likely data.table was installed from "
+"CRAN or local archive.\n"
+"Git revision is available when installing from our repositories 'https://"
+"Rdatatable.gitlab.io/data.table' and 'https://Rdatatable.github.io/data."
+"table'."
+msgstr ""
+
 #: duplicated.R:7
 #, c-format
 msgid "'fromLast' must be TRUE or FALSE"
 msgstr "'fromLast' doit être TRUE ou FALSE"
 
 #: duplicated.R:105
-#, c-format
-msgid "x must be an atomic vector or data.frames/data.tables"
+#, fuzzy, c-format
+#| msgid "x must be an atomic vector or data.frames/data.tables"
+msgid "x must be an atomic vector or a data.frame/data.table"
 msgstr "x doit être un vecteur atomique ou des data.frames / data.tables"
 
 #: fcast.R:7
 #, c-format
 msgid "Using '%s' as value column. Use 'value.var' to override"
 msgstr ""
-"'%s' est utilisé comme colonne de valeurs. Utiliser 'value.var' pour redéfinir"
+"'%s' est utilisé comme colonne de valeurs. Utiliser 'value.var' pour "
+"redéfinir"
 
-#: fcast.R:20 fmelt.R:16
+#: fcast.R:17
 #, c-format
 msgid ""
 "The %1$s generic in data.table has been passed a %2$s, but data.table::%1$s "
@@ -1427,119 +1767,109 @@ msgid ""
 "method from reshape2, try installing that package first, but do note that "
 "reshape2 is superseded and is no longer actively developed."
 msgstr ""
-"Le générique %1$s dans data.table a été transmis à un %2$s, mais data.table: :"
-"%1$s n'a actuellement qu'une méthode pour data.tables. Veuillez confirmer que "
-"votre entrée est un data.table, avec setDT(%3$s) ou as.data.table(%3$s). Si "
-"vous avez l'intention d'utiliser une méthode de reshape2, essayez d'installer "
-"ce package en premier, mais notez que reshape2 est dépassé et n'est plus "
-"activement développé."
+"Le générique %1$s dans data.table a été transmis à un %2$s, mais data."
+"table: :%1$s n'a actuellement qu'une méthode pour data.tables. Veuillez "
+"confirmer que votre entrée est un data.table, avec setDT(%3$s) ou as.data."
+"table(%3$s). Si vous avez l'intention d'utiliser une méthode de reshape2, "
+"essayez d'installer ce package en premier, mais notez que reshape2 est "
+"dépassé et n'est plus activement développé."
 
-#: fcast.R:21
+#: fcast.R:24
 #, c-format
 msgid ""
-"The %1$s generic in data.table has been passed a %2$s and will attempt to "
-"redirect to the relevant reshape2 method; please note that reshape2 is "
-"superseded and is no longer actively developed, and this redirection is now "
-"deprecated. Please do this redirection yourself like reshape2::%1$s(%3$s). In "
-"the next version, this warning will become an error."
+"Invalid formula. Cast formula should be of the form LHS ~ RHS, for e.g., a + "
+"b ~ c."
 msgstr ""
-"Le générique %1$s dans data.table s'est vu passer un %2$s et tentera de "
-"rediriger vers la méthode reshape2 correspondante ; veuillez noter que "
-"reshape2 est dépassé et n'est plus activement développé, et que cette "
-"redirection est désormais obsolète. Veuillez effectuer cette redirection vous-"
-"même comme reshape2: :%1$s(%3$s). Dans la prochaine version, cet avertissement "
-"deviendra une erreur."
+"Formule non valide. La formule du cast s'écrit : membre gauche ~ membre "
+"droit, par exemple : a + b ~ c."
 
 #: fcast.R:31
 #, c-format
-msgid ""
-"Invalid formula. Cast formula should be of the form LHS ~ RHS, for e.g., a + b "
-"~ c."
-msgstr ""
-"Formule non valide. La formule du cast s'écrit : membre gauche ~ membre droit, "
-"par exemple : a + b ~ c."
-
-#: fcast.R:38
-#, c-format
 msgid "data.table to cast must have unique column names"
 msgstr ""
-"cast impossible si les noms de colonnes ne sont pas uniques dans la data.table"
+"cast impossible si les noms de colonnes ne sont pas uniques dans la data."
+"table"
 
-#: fcast.R:83
+#: fcast.R:76
 #, c-format
 msgid "value.var values %s are not found in 'data'."
 msgstr "valeurs %s de value.var absentes dans 'data'."
 
-#: fcast.R:99
+#: fcast.R:92
 #, c-format
 msgid ""
 "When 'fun.aggregate' and 'value.var' are both lists, 'value.var' must be "
 "either of length =1 or =length(fun.aggregate)."
 msgstr ""
-"Si 'fun.aggregate' et 'value.var' sont tous deux des listes, 'value.var' doit "
-"avoir une longueur =1 ou =length(fun.aggregate)."
+"Si 'fun.aggregate' et 'value.var' sont tous deux des listes, 'value.var' "
+"doit avoir une longueur =1 ou =length(fun.aggregate)."
 
-#: fcast.R:132
+#: fcast.R:125
 #, c-format
 msgid "'data' must be a data.table."
 msgstr "'data' doit être une data.table."
 
-#: fcast.R:134
+#: fcast.R:127
 #, c-format
 msgid "'drop' must be logical TRUE/FALSE"
 msgstr "'drop' doit être un booléen TRUE / FALSE"
 
-#: fcast.R:136
+#: fcast.R:129
 #, c-format
 msgid "Argument 'value.var.in.dots' should be logical TRUE/FALSE"
 msgstr "L'argument ‘value.var.in.dots’ doit être un booléen TRUE/FALSE"
 
-#: fcast.R:138
+#: fcast.R:131
 #, c-format
 msgid ""
 "Arguments 'value.var.in.LHSdots', 'value.var.in.RHSdots' should be logical "
 "TRUE/FALSE"
 msgstr ""
-"Les arguments 'value.var.in.LHSdots', 'value.var.in.RHSdots' doivent être des "
-"booléens TRUE/FALSE"
+"Les arguments 'value.var.in.LHSdots', 'value.var.in.RHSdots' doivent être "
+"des booléens TRUE/FALSE"
 
-#: fcast.R:155
+#: fcast.R:148
 #, c-format
 msgid "Column [%s] not found or of unknown type."
 msgstr "La colonne [%s] est absente ou de type inconnu."
 
-#: fcast.R:170
+#: fcast.R:163
 #, c-format
 msgid "Columns specified in formula can not be of type list"
 msgstr ""
 "Les colonnes spécifiées dans la formule ne peuvent pas avoir le type liste"
 
-#: fcast.R:185
+#: fcast.R:178
 #, c-format
 msgid ""
 "'fun.aggregate' is NULL, but found duplicate row/column combinations, so "
 "defaulting to length(). That is, the variables %s used in 'formula' do not "
-"uniquely identify rows in the input 'data'. In such cases, 'fun.aggregate' is "
-"used to derive a single representative value for each combination in the "
+"uniquely identify rows in the input 'data'. In such cases, 'fun.aggregate' "
+"is used to derive a single representative value for each combination in the "
 "output data.table, for example by summing or averaging (fun.aggregate=sum or "
-"fun.aggregate=mean, respectively). Check the resulting table for values larger "
-"than 1 to see which combinations were not unique. See ?dcast.data.table for "
-"more details."
-msgstr ""
-"'fun.aggregate' est NULL, mais des combinaisons de lignes/colonnes dupliquées "
-"sont rencontrées, donc par défaut length() est utilisé. En d'autres termes, "
-"les variables %s utilisées dans 'formula' n'identifient pas de manière unique "
-"les lignes dans les données d'entrée 'data'. Dans ce cas, 'fun.aggregate' est "
-"utilisé pour dériver une valeur représentative unique pour chaque combinaison "
-"dans la 'data.table' de sortie, par exemple en faisant la somme ou la moyenne "
-"(fun.aggregate=sum ou fun.aggregate=mean, respectivement). Vérifiez que le "
-"tableau résultant contient des valeurs supérieures à 1 pour voir quelles "
-"combinaisons n'étaient pas uniques. Voir ?dcast.data.table pour plus de "
-"détails."
-
-#: fcast.R:195
-msgid ""
-"Aggregating function(s) should take a vector as input and return a single "
+"fun.aggregate=mean, respectively). Check the resulting table for values "
+"larger than 1 to see which combinations were not unique. See ?dcast.data."
+"table for more details."
+msgstr ""
+"'fun.aggregate' est NULL, mais des combinaisons de lignes/colonnes "
+"dupliquées sont rencontrées, donc par défaut length() est utilisé. En "
+"d'autres termes, les variables %s utilisées dans 'formula' n'identifient pas "
+"de manière unique les lignes dans les données d'entrée 'data'. Dans ce cas, "
+"'fun.aggregate' est utilisé pour dériver une valeur représentative unique "
+"pour chaque combinaison dans la 'data.table' de sortie, par exemple en "
+"faisant la somme ou la moyenne (fun.aggregate=sum ou fun.aggregate=mean, "
+"respectivement). Vérifiez que le tableau résultant contient des valeurs "
+"supérieures à 1 pour voir quelles combinaisons n'étaient pas uniques. Voir ?"
+"dcast.data.table pour plus de détails."
+
+#: fcast.R:188
+#, fuzzy
+#| msgid ""
+#| "Aggregating function(s) should take a vector as input and return a single "
+#| "value (length=1), but they do not, so the result is undefined. Please fix "
+#| "by modifying your function so that a single value is always returned."
+msgid ""
+"Aggregating functions should take a vector as input and return a single "
 "value (length=1), but they do not, so the result is undefined. Please fix by "
 "modifying your function so that a single value is always returned."
 msgstr ""
@@ -1548,60 +1878,70 @@ msgstr ""
 "résultat est donc indéfini. Veuillez corriger en modifiant votre fonction de "
 "manière à ce qu'une seule valeur soit toujours renvoyée."
 
-#: fdroplevels.R:13
+#: fdroplevels.R:12
 #, c-format
 msgid ""
 "droplevels() with in.place=TRUE is deprecated. Use setdroplevels() instead."
 msgstr ""
-"droplevels() avec in.place=TRUE est obsolète. Utilisez plutôt setdroplevels()."
+"droplevels() avec in.place=TRUE est obsolète. Utilisez plutôt "
+"setdroplevels()."
 
-#: fmelt.R:17
-#, c-format
+#: fmelt.R:12
+#, fuzzy, c-format
+#| msgid ""
+#| "The %1$s generic in data.table has been passed a %2$s and will attempt to "
+#| "redirect to the relevant reshape2 method; please note that reshape2 is "
+#| "superseded and is no longer actively developed, and this redirection is "
+#| "now deprecated. To continue using melt methods from reshape2 while both "
+#| "libraries are attached, e.g. melt.list, you can prepend the namespace, i."
+#| "e. reshape2::%1$s(%3$s). In the next version, this warning will become an "
+#| "error."
 msgid ""
 "The %1$s generic in data.table has been passed a %2$s and will attempt to "
 "redirect to the relevant reshape2 method; please note that reshape2 is "
 "superseded and is no longer actively developed, and this redirection is now "
-"deprecated. To continue using melt methods from reshape2 while both libraries "
+"deprecated. To continue using melt methods from reshape2 while both packages "
 "are attached, e.g. melt.list, you can prepend the namespace, i.e. reshape2::"
 "%1$s(%3$s). In the next version, this warning will become an error."
 msgstr ""
-"Le générique %1$s dans data.table a reçu un %2$s et tentera de rediriger vers "
-"la méthode reshape2 correspondante ; Veuillez noter que reshape2 est remplacé "
-"et n'est plus activement développé, et que cette redirection est maintenant "
-"dépréciée. Pour continuer à utiliser les méthodes 'melt' de reshape2 alors que "
-"les deux bibliothèques sont attachées, par exemple 'melt.list', vous pouvez "
-"ajouter l'espace de noms, c'est-à-dire reshape2: :%1$s(%3$s). Dans la "
-"prochaine version, cet avertissement deviendra une erreur."
+"Le générique %1$s dans data.table a reçu un %2$s et tentera de rediriger "
+"vers la méthode reshape2 correspondante ; Veuillez noter que reshape2 est "
+"remplacé et n'est plus activement développé, et que cette redirection est "
+"maintenant dépréciée. Pour continuer à utiliser les méthodes 'melt' de "
+"reshape2 alors que les deux bibliothèques sont attachées, par exemple 'melt."
+"list', vous pouvez ajouter l'espace de noms, c'est-à-dire reshape2: :"
+"%1$s(%3$s). Dans la prochaine version, cet avertissement deviendra une "
+"erreur."
 
-#: fmelt.R:28
+#: fmelt.R:19 fmelt.R:73
 #, c-format
-msgid "Input patterns must be of type character."
-msgstr "Les motifs d'entrée doivent être de type chaînes de caractères."
+msgid "cols must be a character vector of column names"
+msgstr "cols doit être un vecteur de chaînes de caractères de noms de colonnes"
 
-#: fmelt.R:31
+#: fmelt.R:24
 #, c-format
-msgid "Pattern(s) not found: [%s]"
-msgstr "Motif(s) non trouvé(s) : [%s]"
+msgid "Input patterns must be of type character."
+msgstr "Les motifs d'entrée doivent être de type chaînes de caractères."
 
-#: fmelt.R:46
+#: fmelt.R:42
 #, c-format
 msgid ""
-"each ... argument to measure must be either a symbol without argument name, or "
-"a function with argument name, problems: %s"
+"each ... argument to measure must be either a symbol without argument name, "
+"or a function with argument name, problems: %s"
 msgstr ""
 "chaque argument ... à mesurer doit être soit un symbole sans nom d'argument, "
 "soit une fonction avec nom d'argument, problèmes : %s"
 
-#: fmelt.R:54
+#: fmelt.R:50
 #, c-format
 msgid ""
-"group names specified in ... conflict with measure argument names; please fix "
-"by changing group names: %s"
+"group names specified in ... conflict with measure argument names; please "
+"fix by changing group names: %s"
 msgstr ""
 "les noms de groupes spécifiés dans ... sont en conflit avec les noms des "
 "arguments de mesure ; veuillez corriger en changeant les noms de groupes : %s"
 
-#: fmelt.R:60
+#: fmelt.R:56
 #, c-format
 msgid ""
 "each ... argument to measure must be a function with at least one argument, "
@@ -1610,45 +1950,38 @@ msgstr ""
 "chaque argument ... à mesurer doit être une fonction avec au moins un "
 "argument, problème : %s"
 
-#: fmelt.R:74
+#: fmelt.R:67
 #, c-format
 msgid ""
-"both sep and pattern arguments used; must use either sep or pattern (not both)"
+"both sep and pattern arguments used; must use either sep or pattern (not "
+"both)"
 msgstr ""
 "vous utilisez à la fois les arguments sep et pattern ; Choisir entre sep ou "
 "pattern (mais pas les deux)"
 
-#: fmelt.R:77
+#: fmelt.R:70
 #, c-format
 msgid "multiple.keyword must be a character string with nchar>0"
 msgstr "multiple.keyword doit être une chaîne de caractères avec nchar>0"
 
-#: fmelt.R:80
-#, c-format
-msgid "cols must be a character vector of column names"
-msgstr "cols doit être un vecteur de chaînes de caractères de noms de colonnes"
-
-#: fmelt.R:88
-#, c-format
-msgid "in measurev, %s must be named, problems: %s"
+#: fmelt.R:81
+#, fuzzy, c-format
+#| msgid "in measurev, %s must be named, problems: %s"
+msgid "in measurev, elements of fun.list must be named, problems: %s"
 msgstr "dans measurev, %s doit avoir un nom, problèmes : %s"
 
-#: fmelt.R:94
-#, c-format
-msgid "%s should be uniquely named, problems: %s"
+#: fmelt.R:84
+#, fuzzy, c-format
+#| msgid "%s should be uniquely named, problems: %s"
+msgid "elements of fun.list should be uniquely named, problems: %s"
 msgstr "%s doit avoir un nom unique, problèmes : %s"
 
-#: fmelt.R:99
-#, c-format
-msgid "number of %s =%d must be same as %s =%d"
-msgstr "le nombre de %s =%d doit être le même que %s =%d"
-
-#: fmelt.R:106
+#: fmelt.R:89
 #, c-format
 msgid "pattern must be character string"
 msgstr "le motif doit être une chaîne de caractères"
 
-#: fmelt.R:111
+#: fmelt.R:94
 #, c-format
 msgid ""
 "pattern did not match any cols, so nothing would be melted; fix by changing "
@@ -1657,7 +1990,7 @@ msgstr ""
 "le motif ne correspondait à aucune colonne, donc rien n'aurait été fait "
 "(melt) ; corrigez en changeant de motif"
 
-#: fmelt.R:115
+#: fmelt.R:98
 #, c-format
 msgid ""
 "pattern must contain at least one capture group (parenthesized sub-pattern)"
@@ -1665,12 +1998,19 @@ msgstr ""
 "le motif doit contenir au moins un groupe de capture (sous-motif entre "
 "parenthèses)"
 
-#: fmelt.R:124
+#: fmelt.R:101
+#, c-format
+msgid ""
+"number of elements of fun.list (%d) must be the same as the number of "
+"capture groups in pattern (%d)"
+msgstr ""
+
+#: fmelt.R:109
 #, c-format
 msgid "sep must be character string"
 msgstr "sep doit être une chaîne de caractères"
 
-#: fmelt.R:130
+#: fmelt.R:115
 #, c-format
 msgid ""
 "each column name results in only one item after splitting using sep, which "
@@ -1678,46 +2018,59 @@ msgid ""
 "all columns directly without using measure, or use a different sep/pattern "
 "specification"
 msgstr ""
-"chaque nom de colonne ne donne qu'un seul élément après séparation à l'aide de "
-"'sep', ce qui signifie que toutes les colonnes seraient fusionnées ; pour "
+"chaque nom de colonne ne donne qu'un seul élément après séparation à l'aide "
+"de 'sep', ce qui signifie que toutes les colonnes seraient fusionnées ; pour "
 "résoudre ce problème, veuillez spécifier la fusion (melt) sur toutes les "
 "colonnes directement sans utiliser la mesure, ou utiliser une spécification "
 "sep/motif différente"
 
-#: fmelt.R:140
+#: fmelt.R:118
 #, c-format
 msgid ""
-"number of unique column IDs =%d is less than number of melted columns =%d; fix "
-"by changing pattern/sep"
+"number of elements of fun.list (%d) must be the same as the max number of "
+"items after splitting column names (%d)"
+msgstr ""
+
+#: fmelt.R:125
+#, fuzzy, c-format
+#| msgid "%s should be uniquely named, problems: %s"
+msgid "measured columns should be uniquely named, problems: %s"
+msgstr "%s doit avoir un nom unique, problèmes : %s"
+
+#: fmelt.R:129
+#, c-format
+msgid ""
+"number of unique column IDs =%d is less than number of melted columns =%d; "
+"fix by changing pattern/sep"
 msgstr ""
 "le nombre d'ID de colonnes uniques =%d est inférieur au nombre de colonnes "
 "fusionnées =%d ; corrigez en changeant le motif ou sep"
 
-#: fmelt.R:150
+#: fmelt.R:139
 #, c-format
 msgid ""
 "in the measurev fun.list, each non-NULL element must be a function with at "
 "least one argument, problem: %s"
 msgstr ""
-"dans la mesurev fun.list, chaque élément non NULL doit être une fonction avec "
-"au moins un argument, problème : %s"
+"dans la mesurev fun.list, chaque élément non NULL doit être une fonction "
+"avec au moins un argument, problème : %s"
 
-#: fmelt.R:154
+#: fmelt.R:143
 #, c-format
 msgid ""
-"each conversion function must return an atomic vector with same length as its "
-"first argument, problem: %s"
+"each conversion function must return an atomic vector with same length as "
+"its first argument, problem: %s"
 msgstr ""
 "chaque fonction de conversion doit renvoyer un vecteur atomique de même "
 "longueur que son premier argument, problème : %s"
 
-#: fmelt.R:157
+#: fmelt.R:146
 #, c-format
 msgid "%s conversion function returned vector of all NA"
 msgstr ""
 "la fonction de conversion %s a renvoyé un vecteur ne contenant que des NA"
 
-#: fmelt.R:163
+#: fmelt.R:152
 #, c-format
 msgid ""
 "number of unique groups after applying type conversion functions less than "
@@ -1726,7 +2079,7 @@ msgstr ""
 "nombre de groupes uniques après application des fonctions de conversion de "
 "type inférieur au nombre de groupes, modifier la conversion de type"
 
-#: fmelt.R:168
+#: fmelt.R:157
 #, c-format
 msgid ""
 "%s column class=%s after applying conversion function, but must be character"
@@ -1734,41 +2087,47 @@ msgstr ""
 "colonne %s class=%s après avoir appliqué les fonctions de conversion, mais "
 "doivent être des chaînes de caractères"
 
-#: fmelt.R:172
+#: fmelt.R:161
 #, c-format
 msgid "%s is the only group; fix by creating at least one more group"
 msgstr ""
 "%s est le seul groupe ; Corrigez en créant au moins un groupe supplémentaire"
 
-#: fmelt.R:195
+#: fmelt.R:184
 #, c-format
 msgid "'data' must be a data.table"
 msgstr "'data' doit être une data.table"
 
-#: fmelt.R:214
+#: fmelt.R:203
 #, c-format
 msgid ""
-"'value.name' provided in both 'measure.vars' and 'value.name argument'; value "
-"provided in 'measure.vars' is given precedence."
+"'value.name' provided in both 'measure.vars' and 'value.name argument'; "
+"value provided in 'measure.vars' is given precedence."
 msgstr ""
 "'value.name' est fourni à la fois dans 'measure.vars' et 'value.name "
 "argument' ; La valeur de 'measure.vars' prévaut."
 
-#: fmelt.R:217
+#: fmelt.R:206
 #, c-format
 msgid "Please provide a name to each element of 'measure.vars'."
 msgstr "Veuillez fournir un nom pour chaque élément de 'measure.vars'."
 
+#: fmelt.R:217
+msgid ""
+"Duplicate column names found in molten data.table. Setting unique names "
+"using 'make.names'"
+msgstr ""
+
 #: foverlaps.R:3
 #, c-format
 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 "
+"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 et x doivent tous deux être des data.tables. Utilisez `setDT()` pour "
-"convertir des list/data.frames en data.tables par référence ou as.data.table() "
-"pour convertir en data.tables par copie."
+"convertir des list/data.frames en data.tables par référence ou as.data."
+"table() pour convertir en data.tables par copie."
 
 #: foverlaps.R:9
 #, c-format
@@ -1783,7 +2142,8 @@ msgstr "minorverlap doit être un entier positif ou nul de longueur 1"
 #: foverlaps.R:13
 #, c-format
 msgid "which must be a logical vector of length 1. Either TRUE/FALSE"
-msgstr "which doit être un vecteur de booléens de longueur 1. Soit TRUE ou FALSE"
+msgstr ""
+"which doit être un vecteur de booléens de longueur 1. Soit TRUE ou FALSE"
 
 #: foverlaps.R:15
 #, c-format
@@ -1808,9 +2168,9 @@ msgstr ""
 #: foverlaps.R:24
 #, c-format
 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."
+"'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' et 'by.y' doivent contenir chacun au moins deux noms de colonnes (ou "
 "leurs indices) - correspondant aux bornes 'start' et 'end' des intervalles. "
@@ -1819,50 +2179,50 @@ msgstr ""
 #: foverlaps.R:27
 #, c-format
 msgid ""
-"Invalid numeric value for 'by.x'; it should be a vector with values 1 <= by.x "
-"<= length(x)"
+"Invalid numeric value for 'by.x'; it should be a vector with values 1 <= by."
+"x <= length(x)"
 msgstr ""
-"Valeur numérique non valide pour 'by.x' ; Doit être un vecteur de valeurs 1 <= "
-"by.x <= length(x)"
+"Valeur numérique non valide pour 'by.x' ; Doit être un vecteur de valeurs 1 "
+"<= by.x <= length(x)"
 
 #: foverlaps.R:32
 #, c-format
 msgid ""
-"Invalid numeric value for 'by.y'; it should be a vector with values 1 <= by.y "
-"<= length(y)"
+"Invalid numeric value for 'by.y'; it should be a vector with values 1 <= by."
+"y <= length(y)"
 msgstr ""
-"Valeur numérique non valide pour 'by.y' ; Doit être un vecteur de valeurs 1 <= "
-"by.y <= length(y)"
+"Valeur numérique non valide pour 'by.y' ; Doit être un vecteur de valeurs 1 "
+"<= by.y <= length(y)"
 
 #: foverlaps.R:36
 #, c-format
 msgid "A non-empty vector of column names or numbers is required for by.x"
 msgstr ""
-"Un vecteur non vide de noms de colonnes ou d’indices (nombres) est nécessaire "
-"pour by.x"
+"Un vecteur non vide de noms de colonnes ou d’indices (nombres) est "
+"nécessaire pour by.x"
 
 #: foverlaps.R:38
 #, c-format
 msgid "A non-empty vector of column names or numbers is required for by.y"
 msgstr ""
-"Un vecteur non vide de noms de colonnes ou d’indices (nombres) est nécessaire "
-"pour by.y"
+"Un vecteur non vide de noms de colonnes ou d’indices (nombres) est "
+"nécessaire pour by.y"
 
 #: foverlaps.R:40
 #, c-format
 msgid ""
-"The first %d columns of y's key must be identical to the columns specified in "
-"by.y."
+"The first %d columns of y's key must be identical to the columns specified "
+"in by.y."
 msgstr ""
-"Les %d premières colonnes de la clé de y doivent être identiques aux colonnes "
-"spécifiées dans by.y."
+"Les %d premières colonnes de la clé de y doivent être identiques aux "
+"colonnes spécifiées dans by.y."
 
 #: foverlaps.R:42
 #, c-format
 msgid "Elements listed in 'by.x' must be valid names in data.table x"
 msgstr ""
-"Les éléments listés dans 'by.x' doivent être des noms valides de la data.table "
-"x"
+"Les éléments listés dans 'by.x' doivent être des noms valides de la data."
+"table x"
 
 #: foverlaps.R:44
 #, c-format
@@ -1882,16 +2242,7 @@ msgstr ""
 "length(by.x) != length(by.y). Les colonnes spécifiées dans by.x doivent "
 "correspondre aux colonnes spécifiées dans by.y et être de même longueur."
 
-#: foverlaps.R:48 foverlaps.R:50 merge.R:26 merge.R:27
-#, c-format
-msgid ""
-"%s has some duplicated column name(s): %s. Please remove or rename the "
-"duplicate(s) and try again."
-msgstr ""
-"%s comporte certains noms de colonnes dupliqués : %s. Veuillez supprimer les "
-"doublons ou les renommer et recommencer."
-
-#: foverlaps.R:56
+#: foverlaps.R:57
 #, c-format
 msgid ""
 "The last two columns in by.x should correspond to the 'start' and 'end' "
@@ -1901,7 +2252,7 @@ msgstr ""
 "'start' et 'end' de la data.table x et doivent être de type entier ou "
 "numérique."
 
-#: foverlaps.R:60 foverlaps.R:62 foverlaps.R:69 foverlaps.R:71
+#: foverlaps.R:61 foverlaps.R:63 foverlaps.R:70 foverlaps.R:72
 #, c-format
 msgid ""
 "NA values in data.table %s '%s' column: '%s'. All rows with NA values in the "
@@ -1911,7 +2262,7 @@ msgstr ""
 "lignes avec des valeurs NA dans l'intervalle des colonnes doivent être "
 "supprimées avant d’exécuter foverlaps()."
 
-#: foverlaps.R:63
+#: foverlaps.R:64
 #, c-format
 msgid ""
 "All entries in column '%s' should be <= corresponding entries in column '%s' "
@@ -1920,7 +2271,7 @@ msgstr ""
 "Toutes les entrées de la colonne '%s' doivent être <= aux entrées "
 "correspondantes de la colonne '%s' de la data.table x."
 
-#: foverlaps.R:66
+#: foverlaps.R:67
 #, c-format
 msgid ""
 "The last two columns in by.y should correspond to the 'start' and 'end' "
@@ -1929,7 +2280,7 @@ msgstr ""
 "Les deux dernières colonnes de by.y doivent correspondre aux intervalles de "
 "'start' et 'end' de la data.table y et doivent être de type entier/numérique."
 
-#: foverlaps.R:72
+#: foverlaps.R:73
 #, c-format
 msgid ""
 "All entries in column '%s' should be <= corresponding entries in column '%s' "
@@ -1938,23 +2289,23 @@ msgstr ""
 "Toutes les entrées de la colonne '%s' doivent être <= aux entrées "
 "correspondantes de la colonne '%s' de la data.table y."
 
-#: foverlaps.R:77
+#: foverlaps.R:78
 #, c-format
 msgid ""
-"Some interval cols are of type POSIXct while others are not. Please ensure all "
-"interval cols are (or are not) of POSIXct type"
+"Some interval cols are of type POSIXct while others are not. Please ensure "
+"all interval cols are (or are not) of POSIXct type"
 msgstr ""
 "Certains interval cols sont de type POSIXct et d'autres non. Veuillez vous "
 "assurer que tous les 'interval cols' sont (ou ne sont pas) de type POSIXct"
 
-#: foverlaps.R:83
+#: foverlaps.R:84
 #, c-format
 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."
+"overlap but their internal representations do Please ensure that POSIXct "
+"type interval cols have identical 'tzone' attributes to avoid confusion."
 msgstr ""
 "Les colonnes d'intervalles POSIXct ont des fuseaux horaires différents. Les "
 "chevauchements sont effectués sur la représentation numérique interne des "
@@ -1964,12 +2315,20 @@ msgstr ""
 "d'intervalle de type POSIXct ont des attributs 'tzone' identiques afin "
 "d'éviter toute confusion."
 
-#: foverlaps.R:164 foverlaps.R:166 foverlaps.R:170
+#: foverlaps.R:132
+msgid "unique() + setkey() operations done in ..."
+msgstr ""
+
+#: foverlaps.R:158
+msgid "binary search(es) done in ..."
+msgstr ""
+
+#: foverlaps.R:165 foverlaps.R:167 foverlaps.R:171
 #, c-format
 msgid "Not yet implemented"
 msgstr "Non encore implémenté"
 
-#: foverlaps.R:169
+#: foverlaps.R:170
 #, c-format
 msgid "maxgap > minoverlap. maxgap will have no effect here."
 msgstr "maxgap > minoverlap. maxgap n'a pas de conséquence ici."
@@ -1997,11 +2356,11 @@ msgstr "x est une liste, 'cols' ne peut pas avoir une longueur 0"
 #: frank.R:31
 #, c-format
 msgid ""
-"Input column '..na_prefix..' conflicts with data.table internal usage; please "
-"rename"
+"Input column '..na_prefix..' conflicts with data.table internal usage; "
+"please rename"
 msgstr ""
-"La colonne d'entrée '..na_prefix..' est en conflit avec l'utilisation interne "
-"de data.table ; Veuillez la renommer"
+"La colonne d'entrée '..na_prefix..' est en conflit avec l'utilisation "
+"interne de data.table ; Veuillez la renommer"
 
 #: frank.R:46
 #, c-format
@@ -2012,23 +2371,23 @@ msgstr ""
 "La colonne d'entrée '..stats_runif..' est en conflit avec l'utilisation "
 "interne de data.table ; Veuillez la renommer"
 
-#: fread.R:10
+#: fread.R:12
 #, c-format
 msgid "Used more than one of the arguments input=, file=, text= and cmd=."
 msgstr ""
 "Plusieurs occurrences d'un des arguments suivants input=, file=, text=, cmd=."
 
-#: fread.R:23
+#: fread.R:25
 #, c-format
 msgid "Argument 'encoding' must be 'unknown', 'UTF-8' or 'Latin-1'."
 msgstr "L'argument 'encoding' doit être 'unknown', 'UTF-8' ou 'Latin-1'."
 
-#: fread.R:42
+#: fread.R:44
 #, c-format
 msgid "'text=' is type %s but must be character."
 msgstr "'text=' est de type %s mais doit être de type 'character'."
 
-#: fread.R:55
+#: fread.R:57
 #, c-format
 msgid ""
 "input= must be a single character string containing a file name, a system "
@@ -2041,7 +2400,7 @@ msgstr ""
 "'http[s]://', 'ftp[s]://' ou 'file://', ou les données d'entrée elles-mêmes "
 "contenant au moins un \\n ou \\r"
 
-#: fread.R:60
+#: fread.R:62
 #, c-format
 msgid ""
 "input= contains no \\n or \\r, but starts with a space. Please remove the "
@@ -2050,128 +2409,136 @@ msgstr ""
 "input= ne contient ni \\n, ni \\r, mais commence par une espace. Veuillez "
 "supprimer l'espace qui précède ou utiliser text=, file= ou cmd="
 
-#: fread.R:64
+#: fread.R:66
 #, c-format
 msgid ""
-"Taking input= as a system command because it contains a space ('%s'). If it's "
-"a filename please remove the space, or use file= explicitly. A variable is "
-"being passed to input= and when this is taken as a system command there is a "
-"security concern if you are creating an app, 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."
+"Taking input= as a system command because it contains a space ('%s'). If "
+"it's a filename please remove the space, or use file= explicitly. A variable "
+"is being passed to input= and when this is taken as a system command there "
+"is a security concern if you are creating an app, 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 ""
-"Le contenu de l’argument input= est considéré comme une commande système parce "
-"qu'il contient une espace ('%s'). S'il s'agit d'un nom de fichier, supprimez "
-"l'espace ou utilisez explicitement file=. Une variable est passée à input= et "
-"lorsque cela est pris comme une commande système, il y a un problème de "
-"sécurité si vous créez une application. L’application pourrait alors être "
-"détournée par un utilisateur malveillant, si elle ne s'exécute pas dans un "
-"environnement sécurisé, par exemple si l'application s'exécute en tant que "
-"root. Veuillez lire le point 5 dans le fichier NEWS pour la v1.11.6 pour plus "
-"d'informations et pour l'option permettant de supprimer ce message."
+"Le contenu de l’argument input= est considéré comme une commande système "
+"parce qu'il contient une espace ('%s'). S'il s'agit d'un nom de fichier, "
+"supprimez l'espace ou utilisez explicitement file=. Une variable est passée "
+"à input= et lorsque cela est pris comme une commande système, il y a un "
+"problème de sécurité si vous créez une application. L’application pourrait "
+"alors être détournée par un utilisateur malveillant, si elle ne s'exécute "
+"pas dans un environnement sécurisé, par exemple si l'application s'exécute "
+"en tant que root. Veuillez lire le point 5 dans le fichier NEWS pour la "
+"v1.11.6 pour plus d'informations et pour l'option permettant de supprimer ce "
+"message."
 
-#: fread.R:77
+#: fread.R:79
 #, c-format
 msgid ""
-"file= must be a single character string containing a filename, or URL starting "
-"'http[s]://', 'ftp[s]://' or 'file://'"
+"file= must be a single character string containing a filename, or URL "
+"starting 'http[s]://', 'ftp[s]://' or 'file://'"
 msgstr ""
-"file= doit être une seule chaîne de caractères contenant un nom de fichier ou "
-"une URL commençant par 'http[s]://', 'ftp[s]://' or 'file://'"
+"file= doit être une seule chaîne de caractères contenant un nom de fichier "
+"ou une URL commençant par 'http[s]://', 'ftp[s]://' or 'file://'"
 
-#: fread.R:90
+#: fread.R:92
 #, c-format
 msgid "File '%s' does not exist or is non-readable. getwd()=='%s'"
 msgstr "Fichier '%s' absent ou non accessible en lecture. getwd()=='%s'"
 
-#: fread.R:91
+#: fread.R:93
 #, c-format
 msgid "File '%s' is a directory. Not yet implemented."
 msgstr "Le fichier '%s' est un répertoire. Ceci n’est pas encore implémenté."
 
-#: fread.R:93
+#: fread.R:95
 #, c-format
 msgid "File '%s' has size 0. Returning a NULL %s."
 msgstr "Le fichier '%s' a pour taille 0. Renvoi de %s NULL."
 
-#: fread.R:105
+#: fread.R:107
 #, c-format
-msgid "Compressed files containing more than 1 file are currently not supported."
+msgid ""
+"Compressed files containing more than 1 file are currently not supported."
 msgstr ""
 "Les fichiers compressés contenant plusieurs fichiers ne sont pas reconnus "
 "actuellement."
 
-#: fread.R:115
+#: fread.R:117
 #, c-format
 msgid ""
-"To read %s files directly, fread() requires 'R.utils' package which cannot be "
-"found. Please install 'R.utils' using 'install.packages('R.utils')'."
+"To read %s files directly, fread() requires 'R.utils' package which cannot "
+"be found. Please install 'R.utils' using 'install.packages('R.utils')'."
 msgstr ""
 "Pour lire directement les fichiers %s, fread() a besoin du package 'R.utils' "
-"qui n'a pas été trouvé. Veuillez installer 'R.utils' via 'install.packages('R."
-"utils')'."
+"qui n'a pas été trouvé. Veuillez installer 'R.utils' via 'install."
+"packages('R.utils')'."
 
-#: fread.R:125
-#, c-format
+#: fread.R:127
+#, fuzzy, c-format
+#| msgid ""
+#| "'autostart' is now deprecated and ignored. Consider skip='string' or "
+#| "skip=n"
 msgid ""
-"'autostart' is now deprecated and ignored. Consider skip='string' or skip=n"
+"'autostart' is deprecated. Consider skip='string' or skip=n. This argument "
+"will be removed in the next release."
 msgstr ""
-"'autostart' est maintenant obsolète et ignoré. Remplacer par skip='chaîne' ou "
-"skip=n"
+"'autostart' est maintenant obsolète et ignoré. Remplacer par skip='chaîne' "
+"ou skip=n"
 
-#: fread.R:127
+#: fread.R:129
 #, c-format
 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."
+"FALSE values in it which is not allowed. Please consider the drop= or "
+"select= argument instead. See ?fread."
 msgstr ""
 "colClasses est de type booléen, ce qui est acceptable si toutes les valeurs "
 "sont NA, mais il contient des valeurs TRUE ou FALSE, ce qui n'est pas "
 "autorisé. Veuillez considérer l'argument drop= ou select= à la place. Voir ?"
 "fread."
 
-#: fread.R:131
+#: fread.R:133
 #, c-format
 msgid "colClasses is not type list or character vector"
-msgstr "colClasses n'est ni du type liste ni un vecteur de chaînes de caractères"
+msgstr ""
+"colClasses n'est ni du type liste ni un vecteur de chaînes de caractères"
 
-#: fread.R:136
+#: fread.R:138
 #, c-format
 msgid ""
 "colClasses=\"NULL\" (quoted) is interpreted as colClasses=NULL (the default) "
 "as opposed to dropping every column."
 msgstr ""
-"colClasses=\"NULL\" (avec des guillemets) est interprété comme colClasses=NULL "
-"(la valeur par défaut) contrairement à la suppression de toutes les colonnes."
+"colClasses=\"NULL\" (avec des guillemets) est interprété comme "
+"colClasses=NULL (la valeur par défaut) contrairement à la suppression de "
+"toutes les colonnes."
 
-#: fread.R:148
+#: fread.R:150
 #, c-format
 msgid "na.strings[%d]==\"%s\" consists only of whitespace, ignoring"
 msgstr "na.strings[%d]==\"%s\" n'est formé que d'espaces, il est ignoré"
 
-#: fread.R:151
+#: fread.R:153
 #, c-format
 msgid ""
-"%s. Since strip.white=TRUE (default), use na.strings=\"\" to specify that any "
-"number of spaces in a string column should be read as <NA>."
+"%s. Since strip.white=TRUE (default), use na.strings=\"\" to specify that "
+"any number of spaces in a string column should be read as <NA>."
 msgstr ""
 "%s. Parce que strip.white=TRUE (valeur par défaut), utilisez na.strings=\"\" "
 "pour spécifier que toute suite d'espaces d'une colonne de chaînes doit être "
 "lue comme <NA>."
 
-#: fread.R:153
+#: fread.R:155
 #, c-format
 msgid ""
 "%s. strip.white==TRUE (default) and \"\" is present in na.strings, so any "
 "number of spaces in string columns will already be read as <NA>."
 msgstr ""
-"%s. strip.white==TRUE (par défault) et \"\" est présent dans na.strings, donc "
-"toute suite d'espaces dans les colonnes de chaînes de caractères est déjà lue "
-"comme étant <NA>."
+"%s. strip.white==TRUE (par défault) et \"\" est présent dans na.strings, "
+"donc toute suite d'espaces dans les colonnes de chaînes de caractères est "
+"déjà lue comme étant <NA>."
 
-#: fread.R:157
+#: fread.R:159
 #, c-format
 msgid ""
 "%s. But strip.white=FALSE. Use strip.white=TRUE (default) together with na."
@@ -2181,46 +2548,47 @@ msgstr ""
 "strings=\"\" pour transformer les suites d'espaces en <NA> dans les colonnes "
 "de chaînes de caractères"
 
-#: fread.R:163
+#: fread.R:166
 #, c-format
 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."
+"'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' dépend du package 'yaml' pour analyser l'entête du fichier ; "
 "Veuillez l’ajouter dans votre bibliothèque avec install.packages('yaml') et "
 "recommencer."
 
-#: fread.R:167
+#: fread.R:170
 #, c-format
 msgid ""
-"Combining a search string as 'skip' and reading a YAML header may not work as "
-"expected -- currently, reading will proceed to search for 'skip' from the "
-"beginning of the file, NOT from the end of the metadata; please file an issue "
-"on GitHub if you'd like to see more intuitive behavior supported."
+"Combining a search string as 'skip' and reading a YAML header may not work "
+"as expected -- currently, reading will proceed to search for 'skip' from the "
+"beginning of the file, NOT from the end of the metadata; please file an "
+"issue on GitHub if you'd like to see more intuitive behavior supported."
 msgstr ""
 "La combinaison d'une chaîne de recherche comme 'skip' et la lecture d'un "
-"entête YAML peuvent ne pas fonctionner comme prévu -- actuellement, la lecture "
-"va rechercher 'skip' à partir du début du fichier, PAS à partir de la fin des "
-"métadonnées ; Veuillez renseigner ce problème sur GitHub si vous souhaitez "
-"qu'un comportement plus intuitif soit pris en charge."
+"entête YAML peuvent ne pas fonctionner comme prévu -- actuellement, la "
+"lecture va rechercher 'skip' à partir du début du fichier, PAS à partir de "
+"la fin des métadonnées ; Veuillez renseigner ce problème sur GitHub si vous "
+"souhaitez qu'un comportement plus intuitif soit pris en charge."
 
-#: fread.R:177
+#: fread.R:180
 #, c-format
 msgid ""
-"Encountered <%s%s> at the first unskipped line (%d), which does not constitute "
-"the start to a valid YAML header (expecting something matching regex \"%s\"); "
-"please check your input and try again."
+"Encountered <%s%s> at the first unskipped line (%d), which does not "
+"constitute the start to a valid YAML header (expecting something matching "
+"regex \"%s\"); please check your input and try again."
 msgstr ""
-"<%s%s> trouvé à la première ligne non sautée (%d), ce qui ne constitue pas le "
-"début d'un entête YAML valide (on s'attendait à quelque chose correspondant à "
-"l'expression régulière \"%s\") ; veuillez vérifier votre entrée et réessayer."
+"<%s%s> trouvé à la première ligne non sautée (%d), ce qui ne constitue pas "
+"le début d'un entête YAML valide (on s'attendait à quelque chose "
+"correspondant à l'expression régulière \"%s\") ; veuillez vérifier votre "
+"entrée et réessayer."
 
-#: fread.R:189
+#: fread.R:192
 #, c-format
 msgid ""
-"Reached the end of the file before finding a completion to the YAML header. A "
-"valid YAML header is bookended by lines matching the regex \"%s\". Please "
+"Reached the end of the file before finding a completion to the YAML header. "
+"A valid YAML header is bookended by lines matching the regex \"%s\". Please "
 "double check the input file is a valid csvy."
 msgstr ""
 "La fin du fichier est atteinte avant de trouver la fin de l'entête YAML. Un "
@@ -2229,13 +2597,18 @@ msgstr ""
 "valide."
 
 #: fread.R:203
+msgid ""
+"Processed %d lines of YAML metadata with the following top-level fields: %s"
+msgstr ""
+
+#: fread.R:206
 #, c-format
 msgid "User-supplied 'header' will override that found in metadata."
 msgstr ""
 "Le 'header' fourni par l'utilisateur redéfinira celui trouvé dans les "
 "métadonnées."
 
-#: fread.R:221
+#: fread.R:224
 #, c-format
 msgid ""
 "User-supplied column names in 'col.names' will override those found in YAML "
@@ -2244,7 +2617,7 @@ msgstr ""
 "Les noms de colonnes fournis par l'utilisateur dans 'col.names' remplaceront "
 "ceux trouvés dans les métadonnées YAML."
 
-#: fread.R:230
+#: fread.R:233
 #, c-format
 msgid ""
 "colClasses dictated by user input and those read from YAML header are in "
@@ -2254,41 +2627,68 @@ msgid ""
 "unintentional."
 msgstr ""
 "les colClasses imposées par les entrées de l'utilisateur et celles lues dans "
-"l'entête YAML sont en conflit (en particulier, pour la/les colonne(s) [%s]) ; "
-"La procédure suppose que la proposition de l'utilisateur est une modification "
-"intentionnelle et ignore le(s) type(s) défini(s) par l'entête YAML ; veuillez "
-"exclure la/les colonne(s) des colClasses si cela n'est pas intentionnel."
+"l'entête YAML sont en conflit (en particulier, pour la/les colonne(s) "
+"[%s]) ; La procédure suppose que la proposition de l'utilisateur est une "
+"modification intentionnelle et ignore le(s) type(s) défini(s) par l'entête "
+"YAML ; veuillez exclure la/les colonne(s) des colClasses si cela n'est pas "
+"intentionnel."
 
-#: fread.R:251
+#: fread.R:254
 #, c-format
 msgid "User-supplied 'sep' will override that found in metadata."
 msgstr ""
-"Le 'sep' fourni par l'utilisateur redéfinira celui trouvé dans les métadonnées."
+"Le 'sep' fourni par l'utilisateur redéfinira celui trouvé dans les "
+"métadonnées."
 
-#: fread.R:256
+#: fread.R:259
 #, c-format
 msgid "User-supplied 'quote' will override that found in metadata."
 msgstr ""
 "Le 'quote' fourni par l'utilisateur redéfinira celui trouvé dans les "
 "métadonnées."
 
-#: fread.R:261
+#: fread.R:264
 #, c-format
 msgid "User-supplied 'dec' will override that found in metadata."
 msgstr ""
-"Le 'dec' fourni par l'utilisateur redéfinira celui trouvé dans les métadonnées."
+"Le 'dec' fourni par l'utilisateur redéfinira celui trouvé dans les "
+"métadonnées."
 
-#: fread.R:265
+#: fread.R:268
 #, c-format
 msgid "User-supplied 'na.strings' will override that found in metadata."
 msgstr ""
 "Le 'na.strings' fourni par l'utilisateur redéfinira celui trouvé dans les "
 "métadonnées."
 
-#: fread.R:314
-#, c-format
+#: fread.R:320
+#, fuzzy
+#| msgid ""
+#| "Column '%s' was requested to be '%s' but fread encountered the following "
+#| "%s:\n"
+#| "\t%s\n"
+#| "so the column has been left as type '%s'"
+msgid ""
+"Column '%s' was requested to be '%s' but fread encountered the following "
+"warning:\n"
+"\t%s\n"
+"so the column has been left as type '%s'"
+msgstr ""
+"La colonne '%s' devait être '%s' mais fread a rencontré le problème suivant "
+"%s :\n"
+"\t%s\n"
+"la colonne a donc été laissée au type '%s'"
+
+#: fread.R:322
+#, fuzzy
+#| msgid ""
+#| "Column '%s' was requested to be '%s' but fread encountered the following "
+#| "%s:\n"
+#| "\t%s\n"
+#| "so the column has been left as type '%s'"
 msgid ""
-"Column '%s' was requested to be '%s' but fread encountered the following %s:\n"
+"Column '%s' was requested to be '%s' but fread encountered the following "
+"error:\n"
 "\t%s\n"
 "so the column has been left as type '%s'"
 msgstr ""
@@ -2297,88 +2697,72 @@ msgstr ""
 "\t%s\n"
 "la colonne a donc été laissée au type '%s'"
 
-#: fread.R:337
+#: fread.R:349
 #, c-format
 msgid ""
 "key argument of data.table() must be a character vector naming columns (NB: "
 "col.names are applied before this)"
 msgstr ""
-"l'argument clé de data.table() doit être un vecteur de caractères nommant les "
-"colonnes (NB : col.names est appliqué avant cela)"
+"l'argument clé de data.table() doit être un vecteur de caractères nommant "
+"les colonnes (NB : col.names est appliqué avant cela)"
 
-#: fread.R:345
+#: fread.R:357
 #, c-format
 msgid ""
-"index argument of data.table() must be a character vector naming columns (NB: "
-"col.names are applied before this)"
+"index argument of data.table() must be a character vector naming columns "
+"(NB: col.names are applied before this)"
 msgstr ""
-"l'argument index de data.table() doit être un vecteur de chaînes de caractères "
-"qui nomme les colonnes (NB: col.names est appliqué avant)"
+"l'argument index de data.table() doit être un vecteur de chaînes de "
+"caractères qui nomme les colonnes (NB: col.names est appliqué avant)"
 
-#: fwrite.R:19
+#: fwrite.R:20
 #, c-format
 msgid "Argument 'encoding' must be '', 'UTF-8' or 'native'."
 msgstr "L'argument 'encoding' doit être '', 'UTF-8' ou 'native'."
 
-#: fwrite.R:24
-#, c-format
-msgid "dateTimeAs must be a single string"
-msgstr "dateTimeAs doit être une seule chaîne de caractères"
-
-#: fwrite.R:26
-#, c-format
-msgid "dateTimeAs must be 'ISO','squash','epoch' or 'write.csv'"
-msgstr "dateTimeAs doit être 'ISO', 'squash', 'epoch' ou 'write.csv'"
-
-#: fwrite.R:28
-#, c-format
-msgid "logicalAsInt has been renamed logical01. Use logical01 only, not both."
+#: fwrite.R:27
+#, fuzzy, c-format
+#| msgid ""
+#| "logicalAsInt has been renamed logical01. Use logical01 only, not both."
+msgid "logicalAsInt has been renamed logical01 for consistency with fread."
 msgstr ""
 "logicalAsInt a été renommé logical01. Utiliser logical01 uniquement, pas les "
 "deux."
 
-#: fwrite.R:30
-#, c-format
-msgid ""
-"logicalAsInt has been renamed logical01 for consistency with fread. It works "
-"fine for now but please change to logical01 at your convenience so we can "
-"remove logicalAsInt in future."
-msgstr ""
-"logicalAsInt a été renommé logical01 pour des raisons de cohérence avec fread. "
-"Cela fonctionne bien pour l'instant, mais nous vous invitons à passer à "
-"logical01 à votre convenance afin que nous puissions supprimer logicalAsInt à "
-"l'avenir."
-
-#: fwrite.R:40
+#: fwrite.R:36
 #, c-format
 msgid "x being coerced from class: matrix to data.table"
 msgstr "conversion automatique de classe pour x : matrix vers data.table"
 
-#: fwrite.R:85
+#: fwrite.R:70
+msgid "Appending to existing file so setting bom=FALSE and yaml=FALSE"
+msgstr ""
+
+#: fwrite.R:83
 #, c-format
 msgid ""
-"If you intended to overwrite the file at %s with an empty one, please use file."
-"remove first."
+"If you intended to overwrite the file at %s with an empty one, please use "
+"file.remove first."
 msgstr ""
-"Si vous souhaitiez écraser le fichier %s par un fichier vide, utilisez d'abord "
-"file.remove."
+"Si vous souhaitiez écraser le fichier %s par un fichier vide, utilisez "
+"d'abord file.remove."
 
-#: fwrite.R:86
+#: fwrite.R:84
 #, c-format
 msgid "Input has no columns; doing nothing.%s"
 msgstr "L'entrée n'a pas de colonne ; aucune action réalisée. %s"
 
-#: fwrite.R:89
+#: fwrite.R:87
 #, c-format
 msgid "Input has no columns; creating an empty file at '%s' and exiting."
 msgstr ""
 "L'entrée n'a pas de colonne ; Création d'un fichier vide à '%s' et sortie."
 
-#: fwrite.R:96
+#: fwrite.R:95
 #, c-format
 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."
+"'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' dépend du package 'yaml' pour écrire l'entête du fichier ; "
 "Veuillez l’ajouter à votre bibliothèque avec install.packages('yaml') et "
@@ -2394,8 +2778,8 @@ msgstr "L'argument 'x' doit être un objet data.table"
 msgid ""
 "Argument 'by' must be a character vector of column names used in grouping."
 msgstr ""
-"L'argument 'by' doit être un vecteur de chaînes de caractères composé de noms "
-"de colonnes utilisées pour le groupement."
+"L'argument 'by' doit être un vecteur de chaînes de caractères composé de "
+"noms de colonnes utilisées pour le groupement."
 
 #: groupingsets.R:11 groupingsets.R:29 groupingsets.R:59
 #, c-format
@@ -2409,7 +2793,8 @@ msgstr "L'argument 'j' est obligatoire"
 
 #: groupingsets.R:49
 #, c-format
-msgid "Argument 'x' is a 0-column data.table; no measure to apply grouping over."
+msgid ""
+"Argument 'x' is a 0-column data.table; no measure to apply grouping over."
 msgstr ""
 "L'argument 'x' est une data.table à 0 colonne ; Aucune possibilité de "
 "groupement."
@@ -2417,7 +2802,8 @@ msgstr ""
 #: groupingsets.R:51
 #, c-format
 msgid "Input data.table must not contain duplicate column names."
-msgstr "L'entrée data.table ne doit pas contenir de noms de colonnes dupliqués."
+msgstr ""
+"L'entrée data.table ne doit pas contenir de noms de colonnes dupliqués."
 
 #: groupingsets.R:55
 #, c-format
@@ -2431,16 +2817,41 @@ msgid "Argument 'sets' must be a list of character vectors."
 msgstr ""
 "L'argument 'sets' doit être une liste de vecteurs de chaînes de caractères."
 
-#: groupingsets.R:62
+#: groupingsets.R:63
+#, fuzzy, c-format
+#| msgid ""
+#| "Argument 'value.name' must be scalar character, non-NA and at least one "
+#| "character"
+msgid ""
+"Argument 'label', if not NULL, must be a scalar or a named list of scalars."
+msgstr ""
+"L'argument 'value.name' doit être un caractère scalaire, pas NA et d'au "
+"moins un caractère"
+
+#: groupingsets.R:65
+#, c-format
+msgid ""
+"When argument 'label' is a list, all of the list elements must be named."
+msgstr ""
+
+#: groupingsets.R:67
+#, c-format
+msgid ""
+"When argument 'label' is a list, the element names must not contain "
+"duplicates."
+msgstr ""
+
+#: groupingsets.R:70
 #, c-format
 msgid ""
 "All columns used in 'sets' argument must be in 'by' too. Columns used in "
 "'sets' but not present in 'by': %s"
 msgstr ""
-"Toutes les colonnes utilisées dans l'argument 'sets' doivent également figurer "
-"dans 'by'. Colonnes utilisées dans 'sets' mais non présentes dans 'by' : %s"
+"Toutes les colonnes utilisées dans l'argument 'sets' doivent également "
+"figurer dans 'by'. Colonnes utilisées dans 'sets' mais non présentes dans "
+"'by' : %s"
 
-#: groupingsets.R:64
+#: groupingsets.R:72
 #, c-format
 msgid ""
 "When using `id=TRUE` the 'x' data.table must not have a column named "
@@ -2449,68 +2860,121 @@ msgstr ""
 "Lorsqu'on utilise `id=TRUE`, le data.table 'x' ne doit pas avoir de colonne "
 "nommée 'grouping'."
 
-#: groupingsets.R:66
+#: groupingsets.R:74
 #, c-format
 msgid ""
-"Character vectors in 'sets' list must not have duplicated column names within "
-"a single grouping set."
+"Character vectors in 'sets' list must not have duplicated column names "
+"within a single grouping set."
 msgstr ""
-"Les vecteurs de chaînes de caractères de la liste 'sets' ne doivent pas avoir "
-"de noms de colonnes dupliqués au sein d'un même ensemble de regroupement."
+"Les vecteurs de chaînes de caractères de la liste 'sets' ne doivent pas "
+"avoir de noms de colonnes dupliqués au sein d'un même ensemble de "
+"regroupement."
 
-#: groupingsets.R:68
+#: groupingsets.R:76
 #, c-format
 msgid ""
-"'sets' contains a duplicate (i.e., equivalent up to sorting) element at index "
-"%d; 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' contains a duplicate (i.e., equivalent up to sorting) element at "
+"index %d; 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 ""
 "'sets' contient un élément dupliqué (c'est-à-dire équivalent lors du tri) à "
-"l'index %d ; Il y aura donc des lignes dupliquées dans la sortie -- notez que "
-"le regroupement par A,B et B,A produira les mêmes agrégations. Utiliser "
+"l'index %d ; Il y aura donc des lignes dupliquées dans la sortie -- notez "
+"que le regroupement par A,B et B,A produira les mêmes agrégations. Utiliser "
 "`sets=unique(lapply(sets, sort))` pour éliminer les doublons."
 
-#: groupingsets.R:73
+#: groupingsets.R:82
+#, c-format
+msgid ""
+"When argument 'label' is a list, all element names must be (1) in 'by', or "
+"(2) the first element of the class in the data.table 'x' of a variable in "
+"'by', or (3) one of %s. Element names not satisfying this condition: %s"
+msgstr ""
+
+#: groupingsets.R:92
+#, c-format
+msgid "%s (label: %s; data: %s)"
+msgstr ""
+
+#: groupingsets.R:96
+#, c-format
+msgid ""
+"When argument 'label' is a list, the class of each 'label' element with name "
+"in 'by' must match the class of the corresponding column of the data.table "
+"'x'. Class mismatch for: %s"
+msgstr ""
+
+#: groupingsets.R:100
+#, c-format
+msgid "(label name: %s; label class[1]: %s)"
+msgstr ""
+
+#: groupingsets.R:103
 #, c-format
 msgid ""
-"Expression passed to grouping sets function must not update by reference. Use "
-"':=' on results of your grouping function."
+"When argument 'label' is a list, the name of each element of 'label' not in "
+"'by' must match the first element of the class of the element value. "
+"Mismatches: %s"
 msgstr ""
-"L'expression transmise à la fonction de regroupement des ensembles ne doit pas "
-"être mise à jour par référence. Utilisez ':=' sur les résultats de votre "
+
+#: groupingsets.R:110
+#, c-format
+msgid ""
+"Expression passed to grouping sets function must not update by reference. "
+"Use ':=' on results of your grouping function."
+msgstr ""
+"L'expression transmise à la fonction de regroupement des ensembles ne doit "
+"pas être mise à jour par référence. Utilisez ':=' sur les résultats de votre "
 "fonction de regroupement."
 
-#: groupingsets.R:80
+#: groupingsets.R:117
 #, c-format
 msgid ""
 "When using `id=TRUE` the 'j' expression must not evaluate to a column named "
 "'grouping'."
 msgstr ""
-"Lors de l'utilisation de `id=TRUE`, l'expression 'j' ne doit pas être évaluée "
-"à une colonne nommée 'grouping'."
+"Lors de l'utilisation de `id=TRUE`, l'expression 'j' ne doit pas être "
+"évaluée à une colonne nommée 'grouping'."
 
-#: groupingsets.R:82
+#: groupingsets.R:119
 #, c-format
 msgid ""
-"There exists duplicated column names in the results, ensure the column passed/"
-"evaluated in `j` and those in `by` are not overlapping."
+"There exists duplicated column names in the results, ensure the column "
+"passed/evaluated in `j` and those in `by` are not overlapping."
 msgstr ""
-"Le résultat comporte des doublons parmi les noms de colonnes, vérifier que les "
-"colonnes passées ou évaluées dans 'j' et celles du 'by' ne se recouvrent pas."
+"Le résultat comporte des doublons parmi les noms de colonnes, vérifier que "
+"les colonnes passées ou évaluées dans 'j' et celles du 'by' ne se recouvrent "
+"pas."
 
-#: groupingsets.R:92
+#: groupingsets.R:142
+#, c-format
+msgid "%s (label: %s)"
+msgstr ""
+
+#: groupingsets.R:143
+#, c-format
+msgid ""
+"For the following variables, the 'label' value was already in the data: %s"
+msgstr ""
+
+#: groupingsets.R:150
 #, c-format
-msgid "Using integer64 class columns require to have 'bit64' package installed."
+msgid ""
+"Using integer64 class columns require to have 'bit64' package installed."
 msgstr ""
 "L'utilisation de colonnes de classe integer64 nécessite d'avoir installé le "
 "package 'bit64'."
 
-#: last.R:38 last.R:79
+#: last.R:11 last.R:16 last.R:24 last.R:29 last.R:33 last.R:41 last.R:52
+#: last.R:57 last.R:65 last.R:70 last.R:74 last.R:82
+msgid "%s: using %s: %s"
+msgstr ""
+
+#: last.R:39 last.R:80
 #, c-format
 msgid ""
-"'xts' class passed to %s function but 'xts' is not available, you should have "
-"'xts' installed already"
+"'xts' class passed to %s function but 'xts' is not available, you should "
+"have 'xts' installed already"
 msgstr ""
 "la classe 'xts' est passée à la fonction %s mais le package 'xts' n'est pas "
 "présent; 'xts' doit être installé auparavant"
@@ -2535,60 +2999,47 @@ msgstr "Lors de la jointure, aucune des data.tables d'entrée n'a de colonne."
 msgid "Input data.table '%s' has no columns."
 msgstr "La data.table d'entrée '%s' n'a pas de colonne."
 
-#: merge.R:31
+#: merge.R:32
 #, c-format
 msgid "`by.x` and `by.y` must be of same length."
 msgstr "'by.x' et 'by.y' doivent avoir la même longueur."
 
-#: merge.R:33
-#, c-format
-msgid "Supplied both `by` and `by.x/by.y`. `by` argument will be ignored."
+#: merge.R:34
+#, fuzzy, c-format
+#| msgid "Supplied both `by` and `by.x/by.y`. `by` argument will be ignored."
+msgid "Supplied both `by` and `by.x`/`by.y`. `by` argument will be ignored."
 msgstr ""
 "Quand 'by' et 'by.x/by.y' sont présents simultanément, l'argument 'by' est "
 "ignoré."
 
-#: merge.R:36
+#: merge.R:37
 #, c-format
 msgid "A non-empty vector of column names is required for `by.x` and `by.y`."
 msgstr ""
 "'by.x' et 'by.y' doivent être des vecteurs non vides comportant des noms de "
 "colonnes."
 
-#: merge.R:38
-#, c-format
-msgid "Elements listed in `by.x` must be valid column names in x."
-msgstr ""
-"Les éléments listés dans 'by.x' doivent être des noms de colonnes valides de x."
-
-#: merge.R:40
+#: merge.R:39 merge.R:42 merge.R:56 merge.R:59
 #, c-format
-msgid "Elements listed in `by.y` must be valid column names in y."
+msgid "The following columns listed in `%s` are missing from %s: %s"
 msgstr ""
-"Les éléments listés dans 'by.y' doivent être des noms de colonnes valides de y."
 
-#: merge.R:51
+#: merge.R:54
 #, c-format
 msgid "A non-empty vector of column names for `by` is required."
 msgstr "'by' doit être un vecteur non vide de noms de colonnes."
 
-#: merge.R:53
-#, c-format
-msgid "Elements listed in `by` must be valid column names in x and y"
-msgstr ""
-"Les éléments listés dans 'by' doivent être des noms de colonnes valides de x "
-"et de y"
-
-#: merge.R:61
+#: merge.R:68
 #, c-format
 msgid "Unknown argument '%s' has been passed."
 msgstr "L'argument '%s' fourni n'est pas connu."
 
-#: merge.R:64
+#: merge.R:71
 #, c-format
 msgid "Passed %d unknown and unnamed arguments."
 msgstr "Les %d arguments fournis sont inconnus et non nommés."
 
-#: merge.R:114
+#: merge.R:121
 #, c-format
 msgid "column names %s are duplicated in the result"
 msgstr "noms de colonnes en doublon %s dans le résultat"
@@ -2615,39 +3066,48 @@ msgstr "Dernières actualités : r-datatable.com"
 msgid "TRANSLATION CHECK"
 msgstr "CONTROLE DE TRADUCTION"
 
-#: onAttach.R:28
-#, c-format
+#: onAttach.R:29
+#, fuzzy, c-format
+#| msgid ""
+#| "**********\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-"
+#| "<locale>.po and po/<locale>.po files in the package source, where the "
+#| "native language and English error messages can be found side-by-side\n"
+#| "**********"
 msgid ""
 "**********\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-<locale>.po and po/"
-"<locale>.po files in the package source, where the native language and English "
-"error messages can be found side-by-side\n"
+"<locale>.po files in the package source, where the native language and "
+"English error messages can be found side-by-side.%s\n"
 "**********"
 msgstr ""
 "**********\n"
-"Exécution de data.table en anglais ; L'aide du package n'est disponible qu'en "
-"anglais. Lorsque vous recherchez de l'aide en ligne, veillez à vérifier "
-"également le message d'erreur en anglais. Pour ce faire, consultez les "
-"fichiers po/R-<locale>.po et po/<locale>.po dans le source du package, où les "
-"messages d'erreur en langue native et en anglais sont mis côte à côte\n"
+"Exécution de data.table en anglais ; L'aide du package n'est disponible "
+"qu'en anglais. Lorsque vous recherchez de l'aide en ligne, veillez à "
+"vérifier également le message d'erreur en anglais. Pour ce faire, consultez "
+"les fichiers po/R-<locale>.po et po/<locale>.po dans le source du package, "
+"où les messages d'erreur en langue native et en anglais sont mis côte à "
+"côte\n"
 "**********"
 
-#: onAttach.R:30
+#: onAttach.R:34
 #, c-format
 msgid ""
 "**********\n"
-"This development version of data.table was built more than 4 weeks ago. Please "
-"update: data.table::update_dev_pkg()\n"
+"This development version of data.table was built more than 4 weeks ago. "
+"Please update: data.table::update_dev_pkg()\n"
 "**********"
 msgstr ""
 "**********\n"
-"Cette version de développement de data.table a été construite il y a plus de 4 "
-"semaines. Veuillez mettre à jour : data.table::update_dev_pkg()\n"
+"Cette version de développement de data.table a été construite il y a plus de "
+"4 semaines. Veuillez mettre à jour : data.table::update_dev_pkg()\n"
 "**********"
 
-#: onAttach.R:32
+#: onAttach.R:36
 #, c-format
 msgid ""
 "**********\n"
@@ -2658,27 +3118,27 @@ msgstr ""
 "Cette installation de data.table n'a pas détecté le support OpenMP. Elle "
 "devrait fonctionner, mais en mode monotâche."
 
-#: onAttach.R:34
+#: onAttach.R:38
 #, c-format
 msgid ""
 "This is a Mac. Please read https://mac.r-project.org/openmp/. Please engage "
 "with Apple and ask them for support. Check r-datatable.com for updates, and "
 "our Mac instructions here: https://github.com/Rdatatable/data.table/wiki/"
-"Installation. After several years of many reports of installation problems on "
-"Mac, it's time to gingerly point out that there have been no similar problems "
-"on Windows or Linux.\n"
+"Installation. After several years of many reports of installation problems "
+"on Mac, it's time to gingerly point out that there have been no similar "
+"problems on Windows or Linux.\n"
 "**********"
 msgstr ""
-"Il s'agit d'un Mac. Veuillez lire https://mac.r-project.org/openmp/. Contactez "
-"Apple et demandez-lui de mieux supporter OpenMP. Consultez r-datable.com pour "
-"les mises à jour, et nos instructions pour Mac ici : https://github.com/"
-"Rdatatable/data.table/wiki/Installation. Après plusieurs années de rapports "
-"faisant état de problèmes d'installation sur Mac, il est temps de souligner "
-"avec insistance qu'il n'y a pas eu de problèmes similaires sous Windows ou "
-"Linux.\n"
+"Il s'agit d'un Mac. Veuillez lire https://mac.r-project.org/openmp/. "
+"Contactez Apple et demandez-lui de mieux supporter OpenMP. Consultez r-"
+"datable.com pour les mises à jour, et nos instructions pour Mac ici : "
+"https://github.com/Rdatatable/data.table/wiki/Installation. Après plusieurs "
+"années de rapports faisant état de problèmes d'installation sur Mac, il est "
+"temps de souligner avec insistance qu'il n'y a pas eu de problèmes "
+"similaires sous Windows ou Linux.\n"
 "**********"
 
-#: onAttach.R:36
+#: onAttach.R:40
 #, c-format
 msgid ""
 "This is %s. This warning should not normally occur on Windows or Linux where "
@@ -2689,12 +3149,12 @@ msgid ""
 msgstr ""
 "Il s'agit de %s. Cet avertissement ne doit pas se produire normalement sous "
 "Windows ou Linux où OpenMP est activé par le script de configuration de data."
-"table en passant -fopenmp au compilateur. Si vous voyez cet avertissement sous "
-"Windows ou Linux, veuillez reporter le problème dans le gestionnaire de "
+"table en passant -fopenmp au compilateur. Si vous voyez cet avertissement "
+"sous Windows ou Linux, veuillez reporter le problème dans le gestionnaire de "
 "tickets (issue tracker) sur GitHub.\n"
 "**********"
 
-#: onAttach.R:40
+#: onAttach.R:44
 #, c-format
 msgid ""
 "**********\n"
@@ -2707,13 +3167,13 @@ msgid ""
 "**********"
 msgstr ""
 "**********\n"
-"Cette installation de data.table a été compilée pour R < 3.4.0 (avril 2017) et "
-"elle est connue pour avoir des fuites mémoire. Veuillez mettre à jour R et "
-"réinstaller data.table pour corriger ces fuites. Maintenir et tester des "
-"branches de code pour supporter de très anciennes versions augmentent le temps "
-"de développement, veuillez donc mettre à jour R. Nous avons l'intention de "
-"faire passer la dépendance de data.table du R 3.1.0 (avril 2014) d'il y a 8 "
-"ans au R 3.4.0 (avril 2017) d'il y a 5 ans.\n"
+"Cette installation de data.table a été compilée pour R < 3.4.0 (avril 2017) "
+"et elle est connue pour avoir des fuites mémoire. Veuillez mettre à jour R "
+"et réinstaller data.table pour corriger ces fuites. Maintenir et tester des "
+"branches de code pour supporter de très anciennes versions augmentent le "
+"temps de développement, veuillez donc mettre à jour R. Nous avons "
+"l'intention de faire passer la dépendance de data.table du R 3.1.0 (avril "
+"2014) d'il y a 8 ans au R 3.4.0 (avril 2017) d'il y a 5 ans.\n"
 "**********"
 
 #: onLoad.R:9
@@ -2725,65 +3185,76 @@ msgstr ""
 "L'option 'datatable.nomatch' est définie mais est désormais ignorée. Voir la "
 "note 11 dans la v1.12.4 NEWS (Oct 2019), et la note 14 dans la v1.14.2."
 
-#: onLoad.R:27
-#, c-format
+#: onLoad.R:28
+#, fuzzy, c-format
+#| msgid ""
+#| "The data_table.%s version (%s) does not match the package (%s). Please "
+#| "close all R sessions to release the old %s 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."
 msgid ""
 "The data_table.%s version (%s) does not match the package (%s). Please close "
 "all R sessions to release the old %s 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."
+"session. Prior to R version 3.6.0 patched, R's package installer could leave "
+"a package in an apparently functional state where new R code was 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. 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 ""
 "La data_table.%s version (%s) ne correspond pas au package (%s). Veuillez "
 "fermer toutes les sessions R pour libérer l'ancien %s et réinstaller data."
-"table dans une nouvelle session R. La cause principale est que l'installateur "
-"de packages de R peut, dans certaines circonstances non confirmées, laisser un "
-"package dans un état apparemment fonctionnel, mais où le nouveau code R "
-"appelle silencieusement l'ancien code C : https://bugs.r-project.org/bugzilla/"
-"show_bug.cgi?id=17478. Une fois qu'un package est dans cet état instable, il "
-"peut produire des résultats erronés en silence jusqu'à la prochaine mise à "
-"jour du package. Merci de nous aider en ajoutant des circonstances précises au "
-"17478 pour faire passer le statut à confirmé. Cette incompatibilité entre le "
-"code R et le code C peut se produire avec n'importe quel package, et pas "
-"seulement avec data.table. C'est juste que data.table a ajouté cette "
-"vérification."
+"table dans une nouvelle session R. La cause principale est que "
+"l'installateur de packages de R peut, dans certaines circonstances non "
+"confirmées, laisser un package dans un état apparemment fonctionnel, mais où "
+"le nouveau code R appelle silencieusement l'ancien code C : https://bugs.r-"
+"project.org/bugzilla/show_bug.cgi?id=17478. Une fois qu'un package est dans "
+"cet état instable, il peut produire des résultats erronés en silence jusqu'à "
+"la prochaine mise à jour du package. Merci de nous aider en ajoutant des "
+"circonstances précises au 17478 pour faire passer le statut à confirmé. "
+"Cette incompatibilité entre le code R et le code C peut se produire avec "
+"n'importe quel package, et pas seulement avec data.table. C'est juste que "
+"data.table a ajouté cette vérification."
 
-#: onLoad.R:31
+#: onLoad.R:32
 #, c-format
 msgid ""
 "This is R %s but data.table has been installed using R %s. The major version "
 "must match. Please reinstall data.table."
 msgstr ""
-"Il s'agit de R %s mais data.table a été installé avec R %s. La version majeure "
-"doit correspondre. Veuillez réinstaller data.table."
+"Il s'agit de R %s mais data.table a été installé avec R %s. La version "
+"majeure doit correspondre. Veuillez réinstaller data.table."
 
-#: onLoad.R:98
+#: onLoad.R:108
 #, c-format
 msgid "Unexpected base R behaviour: list(x) has copied x"
 msgstr "Comportement inattendu de R de base : list(x) a recopié x"
 
-#: onLoad.R:106
+#: onLoad.R:116
 #, c-format
 msgid "Unexpected base R behaviour: names<- has copied column contents"
 msgstr ""
 "Comportement inattendu de R de base : names<- a recopié le contenu de la "
 "colonne"
 
-#: onLoad.R:116
+#: onLoad.R:126
 #, c-format
 msgid ""
 "Unexpected base R behaviour: DF[2,2]<- did not copy column 2 which was "
 "assigned to"
 msgstr ""
-"Comportement inattendu de la base R : DF[2,2]<- n'a pas copié la colonne 2 qui "
-"était assignée à"
+"Comportement inattendu de la base R : DF[2,2]<- n'a pas copié la colonne 2 "
+"qui était assignée à"
 
-#: onLoad.R:117
+#: onLoad.R:127
 #, c-format
 msgid ""
 "Unexpected base R behaviour: DF[2,2]<- copied the first column which was not "
@@ -2792,7 +3263,7 @@ msgstr ""
 "Comportement inattendu de la base R : DF[2,2]<- a copié la première colonne "
 "qui n'a pas non plus été affectée à"
 
-#: onLoad.R:119
+#: onLoad.R:129
 #, c-format
 msgid "Unexpected base R behaviour: DF[2,2]<- has not copied address(DF)"
 msgstr ""
@@ -2828,7 +3299,19 @@ msgstr "Les options valides pour trunc.cols sont TRUE ou FALSE"
 msgid "Column classes will be suppressed when col.names is 'none'"
 msgstr "Les classes des colonnes seront supprimées si col.names est 'none'"
 
-#: print.data.table.R:156
+#: print.data.table.R:47
+msgid "Key: <%s>"
+msgstr ""
+
+#: print.data.table.R:57
+msgid "Null data.%s (0 rows and 0 cols)"
+msgstr ""
+
+#: print.data.table.R:59
+msgid "Empty data.%s (%d rows and %d cols)"
+msgstr ""
+
+#: print.data.table.R:153
 #, c-format
 msgid ""
 "Internal structure doesn't seem to be a list. Possibly corrupt data.table."
@@ -2881,6 +3364,30 @@ msgstr "l'argument 'env' comporte des noms à NA"
 msgid "'env' argument has duplicated names"
 msgstr "l'argument 'env' contient des noms dupliqués"
 
+#: rowwiseDT.R:4
+#, c-format
+msgid ""
+"Must provide at least one column (use `name=`). See ?rowwiseDT for details"
+msgstr ""
+
+#: rowwiseDT.R:7
+#, fuzzy, c-format
+#| msgid "x argument must be a data.table"
+msgid "Named arguments must be empty"
+msgstr "l'argument x doit être une data.table"
+
+#: rowwiseDT.R:9
+#, c-format
+msgid "Header must be the first N arguments"
+msgstr ""
+
+#: rowwiseDT.R:15
+#, c-format
+msgid ""
+"There are %d columns but the number of cells is %d, which is not an integer "
+"multiple of the columns"
+msgstr ""
+
 #: setkey.R:3
 #, c-format
 msgid ""
@@ -2890,21 +3397,12 @@ msgstr ""
 "x ne peut plus être le nom sous forme de chaîne de caractère de data.table. "
 "Cette possibilité n'était pas documentée et a été supprimée."
 
-#: setkey.R:23
-#, c-format
-msgid ""
-"key(x)<-value is deprecated and not supported. Please change to use setkey() "
-"with perhaps copy(). Has been warning since 2012."
-msgstr ""
-"key(x)<-valeur est obsolète et n'est pas supporté. Veuillez changer pour "
-"utiliser setkey() avec peut-être copy(). Avertissement depuis 2012."
-
-#: setkey.R:39
+#: setkey.R:34
 #, c-format
 msgid "x is not a data.table"
 msgstr "x n'est pas une data.table"
 
-#: setkey.R:40
+#: setkey.R:35
 #, c-format
 msgid ""
 "cols is not a character vector. Please see further information in ?setkey."
@@ -2912,18 +3410,19 @@ msgstr ""
 "cols n'est pas un vecteur de chaînes de caractères. Voir les informations "
 "supplémentaires dans ?setkey."
 
-#: setkey.R:41
+#: setkey.R:36
 #, c-format
 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 ""
-"La définition d'une clé physique sur .SD est réservée à une utilisation future "
-"possible, pour modifier l'ordre des données d'origine par groupe. Essayez "
-"plutôt setindex(), ou encore, set*(copy(.SD)) en dernier recours (lent)."
+"La définition d'une clé physique sur .SD est réservée à une utilisation "
+"future possible, pour modifier l'ordre des données d'origine par groupe. "
+"Essayez plutôt setindex(), ou encore, set*(copy(.SD)) en dernier recours "
+"(lent)."
 
-#: setkey.R:43
+#: setkey.R:38
 #, c-format
 msgid ""
 "cols is a character vector of zero length. Removed the key, but use NULL "
@@ -2933,79 +3432,108 @@ msgstr ""
 "clé à remplacer par NULL, ou encadrer le code dans suppressWarnings() pour "
 "éviter cet avertissement."
 
-#: setkey.R:47
+#: setkey.R:42
 #, c-format
 msgid "cols is the empty string. Use NULL to remove the key."
 msgstr "cols est une chaîne vide. Utiliser NULL pour supprimer la clé."
 
-#: setkey.R:48 setkey.R:262
+#: setkey.R:43 setkey.R:267
 #, c-format
 msgid "cols contains some blanks."
 msgstr "cols contient des blancs."
 
-#: setkey.R:51 setkey.R:266
+#: setkey.R:46 setkey.R:271
 #, c-format
 msgid "some columns are not in the data.table: %s"
 msgstr "certaines colonnes n'appartiennent pas à la data.table : %s"
 
-#: setkey.R:59 setkey.R:267
+#: setkey.R:54 setkey.R:272
 #, c-format
 msgid ""
 "x contains a column called '.xi'. Conflicts with internal use by data.table."
 msgstr ""
-"x contient une colonne appelée '.xi'. Ceci entre en conflit avec l'utilisation "
-"interne de data.table."
+"x contient une colonne appelée '.xi'. Ceci entre en conflit avec "
+"l'utilisation interne de data.table."
 
-#: setkey.R:62
+#: setkey.R:57
 #, c-format
 msgid ""
 "Column '%s' is type '%s' which is not supported as a key column type, "
 "currently."
 msgstr ""
-"La colonne '%s' a pour type '%s' qui n'est pas reconnu actuellement comme type "
-"de clé de colonne."
+"La colonne '%s' a pour type '%s' qui n'est pas reconnu actuellement comme "
+"type de clé de colonne."
 
-#: setkey.R:137
+#: setkey.R:65
+msgid "forder took %.03f sec"
+msgstr ""
+
+#: setkey.R:77
+msgid "reorder took %s"
+msgstr ""
+
+#: setkey.R:79
+msgid "x is already ordered by these columns, no need to call reorder"
+msgstr ""
+
+#: setkey.R:132
 #, c-format
 msgid "x is vector but 'by' is supplied"
 msgstr "x est un vecteur mais 'by' est fourni"
 
-#: setkey.R:153
+#: setkey.R:148
 #, c-format
 msgid "x is a single vector, non-NULL 'by' doesn't make sense"
 msgstr "x est un vecteur colonne, 'by' non NULL n'a pas de sens"
 
-#: setkey.R:184
+#: setkey.R:160
+#, c-format
+msgid ""
+"data.table has no support for sorting by method='%s'. Use base::order(), not "
+"order(), if you really need this."
+msgstr ""
+
+#: setkey.R:181
 #, c-format
 msgid "Attempting to order a 0-column data.table or data.frame."
 msgstr ""
 "Tentative de tri d'une data.table ou d'un data.frame qui n'a pas de colonne."
 
-#: setkey.R:189
+#: setkey.R:186
 #, c-format
 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."
+"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 ""
 "Le premier élément transmis à [f]order est une simple liste, mais il y a "
 "d'autres éléments. Il faut un data.table ou un data.frame."
 
-#: setkey.R:206
+#: setkey.R:194
+#, c-format
+msgid "Mixing '-' with vector decreasing= is not supported."
+msgstr ""
+
+#: setkey.R:195
+#, c-format
+msgid "decreasing= has length %d applied to sorting %d columns."
+msgstr ""
+
+#: setkey.R:211
 #, c-format
 msgid "Internal code should not be being called on type double"
 msgstr "Le code interne ne doit pas être appelé avec un type double"
 
-#: setkey.R:214
+#: setkey.R:219
 #, c-format
 msgid ""
-"Input is not a vector of type double. New parallel sort has only been done for "
-"double vectors so far. Using one thread."
+"Input is not a vector of type double. New parallel sort has only been done "
+"for double vectors so far. Using one thread."
 msgstr ""
-"L'entrée n'est pas un vecteur de type double. Le nouveau tri parallèle n'a été "
-"implémenté que pour les vecteurs de doubles jusqu'à présent. Utilisation d'un "
-"seul thread."
+"L'entrée n'est pas un vecteur de type double. Le nouveau tri parallèle n'a "
+"été implémenté que pour les vecteurs de doubles jusqu'à présent. Utilisation "
+"d'un seul thread."
 
-#: setkey.R:215
+#: setkey.R:220
 #, c-format
 msgid ""
 "New parallel sort has not been implemented for decreasing=TRUE so far. Using "
@@ -3014,26 +3542,26 @@ msgstr ""
 "Le nouveau tri parallèle n'a pas été implémenté pour decreasing=TRUE jusqu'à "
 "présent. Utilisation d'un seul thread."
 
-#: setkey.R:216
+#: setkey.R:221
 #, c-format
 msgid ""
-"New parallel sort has not been implemented for vectors containing NA values so "
-"far. Using one thread."
+"New parallel sort has not been implemented for vectors containing NA values "
+"so far. Using one thread."
 msgstr ""
 "Le nouveau tri parallèle n'a pas été implémenté pour les vecteurs contenant "
 "des valeurs NA jusqu'à présent. Utilisation d'un seul thread."
 
-#: setkey.R:228 setkey.R:254
+#: setkey.R:233 setkey.R:259
 #, c-format
 msgid "x must be a data.frame or data.table"
 msgstr "x doit être un data.frame ou une data.table"
 
-#: setkey.R:256
+#: setkey.R:261
 #, c-format
 msgid "na.last must be logical TRUE/FALSE"
 msgstr "na.last doit être un booléen TRUE ou FALSE"
 
-#: setkey.R:257
+#: setkey.R:262
 #, c-format
 msgid ""
 "cols is not a character vector. Please see further information in ?setorder."
@@ -3041,23 +3569,23 @@ msgstr ""
 "cols n'est pas un vecteur de chaînes de caractères. Voir les informations "
 "supplémentaires dans ?setorder."
 
-#: setkey.R:259
+#: setkey.R:264
 #, c-format
 msgid ""
 "cols is a character vector of zero length. Use NULL instead, or wrap with "
 "suppressWarnings() to avoid this warning."
 msgstr ""
-"cols est un vecteur de caractères de longueur nulle. Utilisez NULL à la place, "
-"ou utilisez suppressWarnings() pour éviter cet avertissement."
+"cols est un vecteur de caractères de longueur nulle. Utilisez NULL à la "
+"place, ou utilisez suppressWarnings() pour éviter cet avertissement."
 
-#: setkey.R:270
+#: setkey.R:275
 #, c-format
 msgid "Column '%s' is type '%s' which is not supported for ordering currently."
 msgstr ""
 "La colonne '%s' a pour type '%s' qui n'est pas reconnu actuellement pour le "
 "classement."
 
-#: setkey.R:314
+#: setkey.R:319
 #, c-format
 msgid ""
 "'sorted' is TRUE but element %d is non-atomic, which can't be sorted; try "
@@ -3066,7 +3594,7 @@ msgstr ""
 "'sorted' vaut TRUE mais l'élément %d n'est pas atomique, on ne peut donc pas "
 "le trier ; Essayez sorted = FALSE"
 
-#: setkey.R:329
+#: setkey.R:334
 #, c-format
 msgid ""
 "Cross product of elements provided to CJ() would result in %.0f rows which "
@@ -3080,11 +3608,6 @@ msgstr ""
 msgid "x and y must both be data.tables"
 msgstr "x et y doivent être tous deux des data.tables"
 
-#: setops.R:9
-#, c-format
-msgid "length(by.x) != length(by.y)"
-msgstr "length(by.x) != length(by.y)"
-
 #: setops.R:17
 #, c-format
 msgid ""
@@ -3098,18 +3621,19 @@ msgstr ""
 #: setops.R:19
 #, c-format
 msgid ""
-"When x's column ('%s') is factor, the corresponding column in y ('%s') should "
-"be character or factor, but found incompatible type '%s'."
+"When x's column ('%s') is factor, the corresponding column in y ('%s') "
+"should be character or factor, but found incompatible type '%s'."
 msgstr ""
-"Lorsque la colonne de x ('%s') est un facteur, la colonne correspondante dans "
-"y ('%s') doit aussi être de type caractère ou facteur, mais un type "
+"Lorsque la colonne de x ('%s') est un facteur, la colonne correspondante "
+"dans y ('%s') doit aussi être de type caractère ou facteur, mais un type "
 "incompatible '%s' est rencontré."
 
 #: setops.R:21
 #, c-format
 msgid ""
 "When x's column ('%s') is integer or numeric, the corresponding column in y "
-"('%s') can not be character or logical types, but found incompatible type '%s'."
+"('%s') can not be character or logical types, but found incompatible type "
+"'%s'."
 msgstr ""
 "Lorsque la colonne de x ('%s') est entière ou numérique, la colonne "
 "correspondante dans y ('%s') ne peut pas être de type caractère ou booléen, "
@@ -3130,61 +3654,64 @@ msgstr "x et y doivent avoir les mêmes noms de colonnes"
 msgid "x and y must have the same column order"
 msgstr "x et y doivent avoir les colonnes dans le même ordre"
 
-#: setops.R:45
-#, c-format
-msgid "unsupported column type(s) found in x or y: %s"
-msgstr "type(s) de colonne non supporté(s) trouvé(s) dans x ou y : %s"
-
-#: setops.R:53
+#: setops.R:55
 #, c-format
 msgid "Item %d of x is '%s' but the corresponding item of y is '%s'."
 msgstr "L'élément %d de x est '%s' mais l'élément correspondant de y est '%s'."
 
-#: setops.R:55
+#: setops.R:57
 #, c-format
 msgid "None of the datasets should contain a column named '.seqn'"
 msgstr "Aucun jeu de données ne doit contenir de colonne nommée '.seqn'"
 
-#: setops.R:159 setops.R:170
-#, c-format
-msgid "Datasets have different %s. 'target': %s. 'current': %s."
+#: setops.R:162
+#, fuzzy
+#| msgid "Datasets have different %s. 'target': %s. 'current': %s."
+msgid "Datasets have different keys"
 msgstr "Les jeux de données ont différents %s. 'target': %s. 'current': %s."
 
-#: setops.R:161 setops.R:162
+#: setops.R:163 setops.R:164
 #, c-format
 msgid "has no key"
 msgstr "n’a pas de clé"
 
-#: setops.R:172 setops.R:173
+#: setops.R:173
+#, fuzzy
+#| msgid "Datasets have different %s. 'target': %s. 'current': %s."
+msgid "Datasets have different indices"
+msgstr "Les jeux de données ont différents %s. 'target': %s. 'current': %s."
+
+#: setops.R:174 setops.R:175
 #, c-format
 msgid "has no index"
 msgstr "n’a pas d’index"
 
-#: setops.R:190
+#: setops.R:192
 #, c-format
 msgid "None of the datasets to compare should contain a column named '.seqn'"
 msgstr ""
-"Aucun des jeux de données à comparer ne doit contenir de colonne nommée '.seqn'"
+"Aucun des jeux de données à comparer ne doit contenir de colonne nommée '."
+"seqn'"
 
-#: setops.R:193
+#: setops.R:195
 #, c-format
 msgid ""
 "Datasets to compare with 'ignore.row.order' must not have unsupported column "
 "types: %s"
 msgstr ""
-"Les jeux de données à comparer avec 'ignore.row.order' ne doivent pas avoir de "
-"types de colonnes non supportés : %s"
+"Les jeux de données à comparer avec 'ignore.row.order' ne doivent pas avoir "
+"de types de colonnes non supportés : %s"
 
-#: setops.R:195
+#: setops.R:197
 #, c-format
 msgid ""
-"Argument 'tolerance' was forced to lowest accepted value `sqrt(.Machine$double."
-"eps)` from provided %s"
+"Argument 'tolerance' was forced to lowest accepted value `sqrt(."
+"Machine$double.eps)` from provided %s"
 msgstr ""
 "L'argument 'tolerance' a été forcé à la plus petite valeur acceptable `sqrt(."
 "Machine$double.eps)` de %s fourni"
 
-#: setops.R:208
+#: setops.R:210
 #, c-format
 msgid ""
 "Duplicate rows in datasets, numeric columns and ignore.row.order cannot be "
@@ -3194,25 +3721,33 @@ msgstr ""
 "ignore.row.order ne peuvent pas être utilisés avec un argument de tolérance "
 "différent de 0"
 
-#: setops.R:222
+#: setops.R:224
 #, c-format
 msgid ""
 "Factor columns and ignore.row.order cannot be used with non 0 tolerance "
 "argument"
 msgstr ""
-"Les colonnes de type facteur et ignore.row.order ne peuvent pas être utilisés "
-"avec un argument de tolérance différent de 0"
+"Les colonnes de type facteur et ignore.row.order ne peuvent pas être "
+"utilisés avec un argument de tolérance différent de 0"
 
 #: shift.R:3
 #, c-format
 msgid "Provided argument fill=%s will be ignored since type='cyclic'."
 msgstr "L'argument fourni fill=%s sera ignoré puisque le type='cyclique'."
 
+#: tables.R:31
+msgid "No objects of class data.table exist in %s"
+msgstr ""
+
 #: tables.R:46
 #, c-format
 msgid "order.col='%s' not a column name of info"
 msgstr "order.col='%s' n'est pas un nom de colonne de info"
 
+#: tables.R:59
+msgid "Total: %sMB using %s"
+msgstr ""
+
 #: test.data.table.R:17
 #, c-format
 msgid "data.table package is loaded. Unload or start a fresh R session."
@@ -3226,51 +3761,85 @@ msgid ""
 "script must end with '.Rraw'. If a file ending '.Rraw.bz2' exists, that will "
 "be found and used."
 msgstr ""
-"le script doit se terminer par '.Rraw'. Si un fichier se terminant par '.Rraw."
-"bz2' existe, il sera trouvé et utilisé."
+"le script doit se terminer par '.Rraw'. Si un fichier se terminant par '."
+"Rraw.bz2' existe, il sera trouvé et utilisé."
 
 #: test.data.table.R:63
 #, c-format
 msgid "Neither %s nor %s exist in %s"
 msgstr "Ni %s, ni %s n’est trouvé dans %s"
 
-#: test.data.table.R:118
+#: test.data.table.R:115
+msgid "test.data.table() running: %s"
+msgstr ""
+
+#: test.data.table.R:119
 msgid "object '%s' not found"
 msgstr "objet '%s' introuvable"
 
+#: test.data.table.R:122
+msgid ""
+"**** This R session's language is not English. Each test will still check "
+"that the correct number of errors and/or\n"
+"**** warnings are produced. However, to test the text of each error/warning "
+"too, please restart R with LANGUAGE=en"
+msgstr ""
+
 #: test.data.table.R:142
+msgid ""
+"***\n"
+"*** memtest=%d. This should be the first call in a fresh R_GC_MEM_GROW=0 R "
+"session for best results. Ctrl-C now if not.\n"
+"***"
+msgstr ""
+
+#: test.data.table.R:143
 #, c-format
 msgid ""
 "memtest intended for Linux. Step through data.table:::rss() to see what went "
 "wrong."
 msgstr ""
-"memtest est prévu pour Linux. Investiguer à l'aide de data.table:::rss() pour "
-"localiser le problème."
+"memtest est prévu pour Linux. Investiguer à l'aide de data.table:::rss() "
+"pour localiser le problème."
 
-#: test.data.table.R:196
+#: test.data.table.R:197
 #, c-format
 msgid "Attempt to subset to %d tests matching '%s' failed, running full suite."
 msgstr ""
-"La tentative de création d’un sous-ensemble de %d tests correspondant à '%s' a "
-"échoué, la suite complète est en cours d'exécution."
+"La tentative de création d’un sous-ensemble de %d tests correspondant à '%s' "
+"a échoué, la suite complète est en cours d'exécution."
+
+#: test.data.table.R:202
+msgid "Running %d of %d tests matching '%s'"
+msgstr ""
 
-#: test.data.table.R:245
+#: test.data.table.R:248
 #, c-format
 msgid "Failed in %s after test %s before the next test() call in %s"
 msgstr "Echec dans %s après le test %s avant l'appel suivant de test() dans %s"
 
-#: test.data.table.R:255
-#, c-format
-msgid "%d error(s) out of %d. Search %s for test number(s) %s. Duration: %s."
-msgstr ""
-"%d erreur(s) sur %d. Recherche de %s pour le(s) test(s) numéro %s. Durée : %s."
-
-#: test.data.table.R:268
+#: test.data.table.R:271
 #, c-format
 msgid "Timings count mismatch: %d vs %d"
 msgstr "Différence dans les délais enregistrés : %d versus %d"
 
-#: test.data.table.R:399
+#: test.data.table.R:273
+msgid "10 longest running tests took %ds (%d%% of %ds)"
+msgstr ""
+
+#: test.data.table.R:279
+msgid "10 largest RAM increases (MB); see plot for cumulative effect (if any)"
+msgstr ""
+
+#: test.data.table.R:289
+msgid "All %d tests (last %.8g) in %s completed ok in %s"
+msgstr ""
+
+#: test.data.table.R:388
+msgid "Running test id"
+msgstr ""
+
+#: test.data.table.R:404
 #, c-format
 msgid ""
 "Test %s is invalid: when error= is provided it does not make sense to pass y "
@@ -3279,6 +3848,76 @@ msgstr ""
 "Le test %s n 'est pas valide : Si error= est fourni alors il n'a pas de sens "
 "dans ce cas"
 
+#: test.data.table.R:439
+msgid "Test id %s is not in increasing order"
+msgstr ""
+
+#: test.data.table.R:456
+msgid ""
+"Test %s produced %d %ss but expected %d\n"
+"%s\n"
+"%s"
+msgstr ""
+
+#: test.data.table.R:464
+msgid ""
+"Test %s didn't produce the correct %s:\n"
+"Expected: %s\n"
+"Observed: %s"
+msgstr ""
+
+#: test.data.table.R:473
+msgid "Output captured before unexpected warning/error/message:"
+msgstr ""
+
+#: test.data.table.R:483
+msgid "Test %s did not produce correct output:"
+msgstr ""
+
+#: test.data.table.R:484
+msgid "Expected: <<%s>>"
+msgstr ""
+
+#: test.data.table.R:485 test.data.table.R:497
+msgid "Observed: <<%s>>"
+msgstr ""
+
+#: test.data.table.R:487
+msgid "Expected (raw): <<%s>>"
+msgstr ""
+
+#: test.data.table.R:488 test.data.table.R:500
+msgid "Observed (raw): <<%s>>"
+msgstr ""
+
+#: test.data.table.R:495
+msgid "Test %s produced output but should not have:"
+msgstr ""
+
+#: test.data.table.R:496
+msgid "Expected absent (case insensitive): <<%s>>"
+msgstr ""
+
+#: test.data.table.R:499
+msgid "Expected absent (raw): <<%s>>"
+msgstr ""
+
+#: test.data.table.R:513
+msgid "Test %s ran without errors but selfrefok(%s) is FALSE"
+msgstr ""
+
+#: test.data.table.R:538
+msgid "Test %s ran without errors but failed check that x equals y:"
+msgstr ""
+
+#: test.data.table.R:543
+msgid "First %d of %d (type '%s'):"
+msgstr ""
+
+#: test.data.table.R:548
+msgid "Non-ASCII string detected, raw representation:"
+msgstr ""
+
 #: timetaken.R:3
 #, c-format
 msgid "Use started.at=proc.time() not Sys.time() (POSIXt and slow)"
@@ -3298,7 +3937,8 @@ msgstr "make.names=%d hors limites [1,ncol=%d]"
 #: transpose.R:28
 #, c-format
 msgid "'names' must be TRUE/FALSE or a character vector."
-msgstr "'names' doit être TRUE ou FALSE ou un vecteur de chaînes de caractères."
+msgstr ""
+"'names' doit être TRUE ou FALSE ou un vecteur de chaînes de caractères."
 
 #: transpose.R:34
 #, c-format
@@ -3314,34 +3954,36 @@ msgstr "L'argument 'type.convert' n'accepte pas de liste vide."
 #, c-format
 msgid ""
 "When the argument 'type.convert' contains an unnamed element, it is expected "
-"to be the last element and should be a function. More than one unnamed element "
-"is not allowed unless all elements are functions with length equal to %d (the "
-"length of the transpose list or 'keep' argument if it is specified)."
+"to be the last element and should be a function. More than one unnamed "
+"element is not allowed unless all elements are functions with length equal "
+"to %d (the length of the transpose list or 'keep' argument if it is "
+"specified)."
 msgstr ""
-"Lorsque l'argument 'type.convert' contient un élément non nommé, il est censé "
-"être le dernier élément et doit être une fonction. Plus d'un élément non nommé "
-"n'est pas autorisé, sauf si tous les éléments sont des fonctions de longueur "
-"égale à %d (la longueur de la liste de transpositions ou de l'argument 'keep' "
-"s'il est spécifié)."
+"Lorsque l'argument 'type.convert' contient un élément non nommé, il est "
+"censé être le dernier élément et doit être une fonction. Plus d'un élément "
+"non nommé n'est pas autorisé, sauf si tous les éléments sont des fonctions "
+"de longueur égale à %d (la longueur de la liste de transpositions ou de "
+"l'argument 'keep' s'il est spécifié)."
 
 #: transpose.R:66
 #, c-format
 msgid ""
-"When the argument 'type.convert' contains transpose list indices, it should be "
-"a named list of non-missing integer values (with no duplicate) except the last "
-"element that should be unnamed if it is a function."
+"When the argument 'type.convert' contains transpose list indices, it should "
+"be a named list of non-missing integer values (with no duplicate) except the "
+"last element that should be unnamed if it is a function."
 msgstr ""
 "Lorsque l'argument 'type.convert' contient des indices de liste de "
 "transposition, il doit être une liste nommée de valeurs entières sans valeur "
-"manquante (et sans doublons), à l'exception du dernier élément qui ne doit pas "
-"être nommé s'il s'agit d'une fonction."
+"manquante (et sans doublons), à l'exception du dernier élément qui ne doit "
+"pas être nommé s'il s'agit d'une fonction."
 
 #: transpose.R:68
 #, c-format
 msgid ""
-"When the argument 'type.convert' contains transpose list indices, they should "
-"be integer values contained in the argument 'keep' (if it is specified) or be "
-"between %d and %d (if it is not). But '%s' is/are not contained in '%s'."
+"When the argument 'type.convert' contains transpose list indices, they "
+"should be integer values contained in the argument 'keep' (if it is "
+"specified) or be between %d and %d (if it is not). But '%s' is/are not "
+"contained in '%s'."
 msgstr ""
 "Lorsque l'argument 'type.convert' contient des indices de liste de "
 "transposition, ceux-ci doivent être des valeurs entières contenues dans "
@@ -3355,16 +3997,16 @@ msgid ""
 "transpose list or elements corresponding to indices specified in the 'keep' "
 "argument have already been converted."
 msgstr ""
-"Dans l'argument 'type.convert', '%s' a été ignoré parce que tous les éléments "
-"de la liste de transposition ou les éléments correspondant aux indices "
-"spécifiés dans l'argument 'keep' ont déjà été convertis."
+"Dans l'argument 'type.convert', '%s' a été ignoré parce que tous les "
+"éléments de la liste de transposition ou les éléments correspondant aux "
+"indices spécifiés dans l'argument 'keep' ont déjà été convertis."
 
 #: transpose.R:83
 #, c-format
 msgid ""
 "The argument 'type.convert' should be TRUE/FALSE, a function, a list of "
-"functions, or a named list of pairs 'fun=indices' with optionally one unnamed "
-"element (a function) but an object of type '%s' was provided."
+"functions, or a named list of pairs 'fun=indices' with optionally one "
+"unnamed element (a function) but an object of type '%s' was provided."
 msgstr ""
 "L'argument 'type.convert' doit être TRUE/FALSE, une fonction, une liste de "
 "fonctions ou une liste nommée de paires 'fun=indices' avec éventuellement un "
@@ -3397,20 +4039,20 @@ msgstr "Erreur interne dans"
 #: utils.R:28
 msgid "Please report to the data.table issues tracker."
 msgstr ""
-"Veuillez signaler l'erreur au gestionnaire de tickets (issue tracker) de data."
-"table."
+"Veuillez signaler l'erreur au gestionnaire de tickets (issue tracker) de "
+"data.table."
 
-#: utils.R:57 utils.R:66
+#: utils.R:72 utils.R:81
 #, c-format
 msgid "x not boolean"
 msgstr "x n'est pas un booléen"
 
-#: utils.R:77
+#: utils.R:92
 #, c-format
 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 "
+"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 ""
 "Certaines colonnes sont de type 'integer64' mais le package bit64 n'est pas "
@@ -3419,17 +4061,17 @@ msgstr ""
 "données. Il suffit d'installer.packages('bit64') pour obtenir la méthode "
 "d'impression integer64 et imprimer à nouveau les données."
 
-#: xts.R:3
+#: xts.R:4
 #, c-format
 msgid "keep.rownames must be length 1"
 msgstr "keep.rownames doit être de longueur 1"
 
-#: xts.R:4
+#: xts.R:5
 #, c-format
 msgid "keep.rownames must not be NA"
 msgstr "keep.rownames ne peut pas être NA"
 
-#: xts.R:10
+#: xts.R:11
 #, c-format
 msgid ""
 "Input xts object should not have '%s' column because it would result in "
@@ -3440,34 +4082,221 @@ msgstr ""
 "une duplication des noms de colonnes. Renommez la colonne '%s' dans l'objet "
 "xts ou utilisez `keep.rownames` pour changer le nom de la colonne d'index."
 
-#: xts.R:20
+#: xts.R:21
 #, c-format
 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"
+"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 doit avoir une colonne basée sur le temps en première position, "
 "utiliser la fonction `setcolorder` pour changer l'ordre, ou voir ?timeBased "
 "pour les types pris en charge"
 
-#: xts.R:24
+#: xts.R:25
 #, c-format
 msgid "Following columns are not numeric and will be omitted: %s"
 msgstr "Les colonnes suivantes ne sont pas numériques et seront omises : %s"
 
-#: print.data.table.R:53
+#: bmerge.R:214
+msgid "  Found %d non-equi group ...\n"
+msgid_plural "  Found %d non-equi groups ...\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: data.table.R:712
+#, fuzzy
+#| msgid "column(s) not removed because not found: %s"
+msgid "column not removed because not found: %s"
+msgid_plural "columns not removed because not found: %s"
+msgstr[0] "colonne(s) non supprimée(s) car manquante(s) : %s"
+msgstr[1] "colonne(s) non supprimée(s) car manquante(s) : %s"
+
+#: data.table.R:727
+#, fuzzy
+#| msgid "column(s) not found: %s"
+msgid "column not found: %s"
+msgid_plural "columns not found: %s"
+msgstr[0] "colonnes(s) absente(s) : %s"
+msgstr[1] "colonnes(s) absente(s) : %s"
+
+#: data.table.R:895
+#, fuzzy
+#| 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)."
+msgid ""
+"The item in the 'by' or 'keyby' list is length %s. Each must be length %d; "
+"the same length as there are rows in x (after subsetting if i is provided)."
+msgid_plural ""
+"The items in the 'by' or 'keyby' list have lengths %s. Each must be length "
+"%d; the same length as there are rows in x (after subsetting if i is "
+"provided)."
+msgstr[0] ""
+"Les éléments de la liste ‘by’ ou ‘keyby’ sont de longueur(s) %s. Chacun "
+"d'eux doit être de longueur %d ; la même longueur que celle des lignes de x "
+"(après le sous-ensemble si i est fourni)."
+msgstr[1] ""
+"Les éléments de la liste ‘by’ ou ‘keyby’ sont de longueur(s) %s. Chacun "
+"d'eux doit être de longueur %d ; la même longueur que celle des lignes de x "
+"(après le sous-ensemble si i est fourni)."
+
+#: fmelt.R:27
+#, fuzzy
+#| msgid "Pattern(s) not found: [%s]"
+msgid "Pattern not found: [%s]"
+msgid_plural "Patterns not found: [%s]"
+msgstr[0] "Motif(s) non trouvé(s) : [%s]"
+msgstr[1] "Motif(s) non trouvé(s) : [%s]"
+
+#: fread.R:340
+msgid "stringsAsFactors=%s converted %d column: %s\n"
+msgid_plural "stringsAsFactors=%s converted %d columns: %s\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: print.data.table.R:50
 msgid "Index: %s\n"
 msgid_plural "Indices: %s\n"
 msgstr[0] "Indice : %s\n"
 msgstr[1] "Indices : %s\n"
 
+#: print.data.table.R:285
+msgid "%d variable not shown: %s\n"
+msgid_plural "%d variables not shown: %s\n"
+msgstr[0] ""
+msgstr[1] ""
+
+#: setops.R:46
+#, fuzzy
+#| msgid "unsupported column type(s) found in x or y: %s"
+msgid "unsupported column type found in x or y: %s"
+msgid_plural "unsupported column types found in x or y: %s"
+msgstr[0] "type(s) de colonne non supporté(s) trouvé(s) dans x ou y : %s"
+msgstr[1] "type(s) de colonne non supporté(s) trouvé(s) dans x ou y : %s"
+
+#: test.data.table.R:258
+#, fuzzy
+#| msgid ""
+#| "%d error(s) out of %d. Search %s for test number(s) %s. Duration: %s."
+msgid "%d error out of %d. Search %s for test number %s. Duration: %s."
+msgid_plural ""
+"%d errors out of %d. Search %s for test numbers %s. Duration: %s."
+msgstr[0] ""
+"%d erreur(s) sur %d. Recherche de %s pour le(s) test(s) numéro %s. Durée : "
+"%s."
+msgstr[1] ""
+"%d erreur(s) sur %d. Recherche de %s pour le(s) test(s) numéro %s. Durée : "
+"%s."
+
+#: utils.R:36
+#, fuzzy
+#| msgid ""
+#| "%s has some duplicated column name(s): %s. Please remove or rename the "
+#| "duplicate(s) and try again."
+msgid ""
+"%s has duplicated column name %s. Please remove or rename the duplicate and "
+"try again."
+msgid_plural ""
+"%s has duplicated column names %s. Please remove or rename the duplicates "
+"and try again."
+msgstr[0] ""
+"%s comporte certains noms de colonnes dupliqués : %s. Veuillez supprimer les "
+"doublons ou les renommer et recommencer."
+msgstr[1] ""
+"%s comporte certains noms de colonnes dupliqués : %s. Veuillez supprimer les "
+"doublons ou les renommer et recommencer."
+
+#, c-format
+#~ msgid ""
+#~ "with=FALSE ignored, it isn't needed when using :=. See ?':=' for examples."
+#~ msgstr ""
+#~ "with=FALSE est ignoré quand := est utilisé. Voir ?':=' pour les exemples."
+
+#, c-format
+#~ msgid ""
+#~ "x has some duplicated column name(s): %s. Please remove or rename the "
+#~ "duplicate(s) and try again."
+#~ msgstr ""
+#~ "x comporte des doublons de noms de colonnes : %s. Veuillez les supprimer "
+#~ "ou les renommer et recommencer."
+
+#, c-format
+#~ msgid ""
+#~ "The %1$s generic in data.table has been passed a %2$s and will attempt to "
+#~ "redirect to the relevant reshape2 method; please note that reshape2 is "
+#~ "superseded and is no longer actively developed, and this redirection is "
+#~ "now deprecated. Please do this redirection yourself like reshape2::"
+#~ "%1$s(%3$s). In the next version, this warning will become an error."
+#~ msgstr ""
+#~ "Le générique %1$s dans data.table s'est vu passer un %2$s et tentera de "
+#~ "rediriger vers la méthode reshape2 correspondante ; veuillez noter que "
+#~ "reshape2 est dépassé et n'est plus activement développé, et que cette "
+#~ "redirection est désormais obsolète. Veuillez effectuer cette redirection "
+#~ "vous-même comme reshape2: :%1$s(%3$s). Dans la prochaine version, cet "
+#~ "avertissement deviendra une erreur."
+
+#, c-format
+#~ msgid "number of %s =%d must be same as %s =%d"
+#~ msgstr "le nombre de %s =%d doit être le même que %s =%d"
+
+#, c-format
+#~ msgid "dateTimeAs must be a single string"
+#~ msgstr "dateTimeAs doit être une seule chaîne de caractères"
+
+#, c-format
+#~ msgid "dateTimeAs must be 'ISO','squash','epoch' or 'write.csv'"
+#~ msgstr "dateTimeAs doit être 'ISO', 'squash', 'epoch' ou 'write.csv'"
+
+#, c-format
+#~ msgid ""
+#~ "logicalAsInt has been renamed logical01 for consistency with fread. It "
+#~ "works fine for now but please change to logical01 at your convenience so "
+#~ "we can remove logicalAsInt in future."
+#~ msgstr ""
+#~ "logicalAsInt a été renommé logical01 pour des raisons de cohérence avec "
+#~ "fread. Cela fonctionne bien pour l'instant, mais nous vous invitons à "
+#~ "passer à logical01 à votre convenance afin que nous puissions supprimer "
+#~ "logicalAsInt à l'avenir."
+
+#, c-format
+#~ msgid "Elements listed in `by.x` must be valid column names in x."
+#~ msgstr ""
+#~ "Les éléments listés dans 'by.x' doivent être des noms de colonnes valides "
+#~ "de x."
+
+#, c-format
+#~ msgid "Elements listed in `by.y` must be valid column names in y."
+#~ msgstr ""
+#~ "Les éléments listés dans 'by.y' doivent être des noms de colonnes valides "
+#~ "de y."
+
+#, c-format
+#~ msgid "Elements listed in `by` must be valid column names in x and y"
+#~ msgstr ""
+#~ "Les éléments listés dans 'by' doivent être des noms de colonnes valides "
+#~ "de x et de y"
+
+#, c-format
+#~ msgid ""
+#~ "key(x)<-value is deprecated and not supported. Please change to use "
+#~ "setkey() with perhaps copy(). Has been warning since 2012."
+#~ msgstr ""
+#~ "key(x)<-valeur est obsolète et n'est pas supporté. Veuillez changer pour "
+#~ "utiliser setkey() avec peut-être copy(). Avertissement depuis 2012."
+
+#, c-format
+#~ msgid "length(by.x) != length(by.y)"
+#~ msgstr "length(by.x) != length(by.y)"
+
 #, c-format
 #~ msgid ""
 #~ "Internal error -- difftime objects may not be added to IDate, but Ops "
 #~ "dispatch should have intervened to prevent this"
 #~ msgstr ""
-#~ "Erreur interne -- les objets difftime ne peuvent pas être ajoutés à IDate, "
-#~ "mais le dispatching de méthode Ops aurait dû empêcher cela"
+#~ "Erreur interne -- les objets difftime ne peuvent pas être ajoutés à "
+#~ "IDate, mais le dispatching de méthode Ops aurait dû empêcher cela"
 
 #, c-format
 #~ msgid "Internal error: storage mode of IDate is somehow no longer integer"
@@ -3493,8 +4322,8 @@ msgstr[1] "Indices : %s\n"
 #, c-format
 #~ msgid "Internal error. Cannot by=.EACHI when joining to an index, yet"
 #~ msgstr ""
-#~ "Erreur interne. Il n'est pas encore possible d'utiliser by=.EACHI pour une "
-#~ "jointure vers un index"
+#~ "Erreur interne. Il n'est pas encore possible d'utiliser by=.EACHI pour "
+#~ "une jointure vers un index"
 
 #, c-format
 #~ msgid "Internal error. irows has length in by=.EACHI"
@@ -3505,9 +4334,9 @@ msgstr[1] "Indices : %s\n"
 #~ "internal error: notjoin and which=NA (non-matches), huh? please provide "
 #~ "reproducible example to issue tracker"
 #~ msgstr ""
-#~ "erreur interne : notjoin et which=NA (ne vont pas ensemble), n’est-ce-pas ? "
-#~ "Veuillez fournir un exemple reproductible pour le gestionnaire de tickets "
-#~ "(issue tracker)"
+#~ "erreur interne : notjoin et which=NA (ne vont pas ensemble), n’est-ce-"
+#~ "pas ? Veuillez fournir un exemple reproductible pour le gestionnaire de "
+#~ "tickets (issue tracker)"
 
 #, c-format
 #~ msgid "Internal error: notjoin but byjoin or !integer or nomatch==NA"
@@ -3523,7 +4352,8 @@ msgstr[1] "Indices : %s\n"
 
 #, c-format
 #~ msgid "Internal error -- item '%s' not found in names of list"
-#~ msgstr "Erreur interne -- élément '%s' non trouvé parmi les noms de la liste"
+#~ msgstr ""
+#~ "Erreur interne -- élément '%s' non trouvé parmi les noms de la liste"
 
 #, c-format
 #~ msgid "Internal error -- column(s) not found: %s"
@@ -3538,9 +4368,9 @@ msgstr[1] "Indices : %s\n"
 #~ msgstr ""
 #~ "l'utilisation de strptime() est détectée et enveloppée par as.POSIXct(). "
 #~ "Ceci afin de minimiser le risque d'assigner des colonnes POSIXlt, qui "
-#~ "utilisent plus de 40 octets pour stocker une date (contre 8 pour POSIXct). "
-#~ "Utilisez as.POSIXct() (qui appellera strptime() si nécessaire en interne) "
-#~ "pour éviter cet avertissement."
+#~ "utilisent plus de 40 octets pour stocker une date (contre 8 pour "
+#~ "POSIXct). Utilisez as.POSIXct() (qui appellera strptime() si nécessaire "
+#~ "en interne) pour éviter cet avertissement."
 
 #, c-format
 #~ msgid "Internal error: xcolAns does not pass checks: %d/%d/%d/%s"
@@ -3548,12 +4378,12 @@ msgstr[1] "Indices : %s\n"
 
 #, c-format
 #~ msgid ""
-#~ "Internal error: irows is NULL when making join result at R level. Should no "
-#~ "longer happen now we use CsubsetDT earlier."
+#~ "Internal error: irows is NULL when making join result at R level. Should "
+#~ "no longer happen now we use CsubsetDT earlier."
 #~ msgstr ""
 #~ "Erreur interne : irows est NULL lors de la création d'un résultat de "
-#~ "jointure au niveau R. Cela ne devrait plus se produire maintenant que nous "
-#~ "utilisons CsubsetDT plus tôt."
+#~ "jointure au niveau R. Cela ne devrait plus se produire maintenant que "
+#~ "nous utilisons CsubsetDT plus tôt."
 
 #, c-format
 #~ msgid ""
@@ -3584,8 +4414,8 @@ msgstr[1] "Indices : %s\n"
 #~ msgid ""
 #~ "Internal error: as.matrix.data.table length(X)==%d but a dimension is zero"
 #~ msgstr ""
-#~ "Erreur interne : as.matrix.data.table length(X)==%d mais une dimension est "
-#~ "à zéro"
+#~ "Erreur interne : as.matrix.data.table length(X)==%d mais une dimension "
+#~ "est à zéro"
 
 #, c-format
 #~ msgid "Internal error: length(i)!=length(new)"
@@ -3594,9 +4424,9 @@ msgstr[1] "Indices : %s\n"
 #, c-format
 #~ msgid ""
 #~ "Some columns are a multi-column type (such as a matrix column): %s. 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."
+#~ "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 ""
 #~ "Certaines colonnes sont de type multi-colonnes (comme une colonne de "
 #~ "matrice) : %s. setDT conservera ces colonnes telles quelles, mais les "
@@ -3606,9 +4436,9 @@ msgstr[1] "Indices : %s\n"
 
 #, c-format
 #~ msgid ""
-#~ "Column %d 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."
+#~ "Column %d 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 ""
 #~ "La colonne %d est de type POSIXlt. Veuillez la convertir en POSIXct en "
 #~ "utilisant as.POSIXct et relancez setDT. Nous ne recommandons pas "
@@ -3621,13 +4451,14 @@ msgstr[1] "Indices : %s\n"
 #~ "The first entry with fewer than %d entries is %d."
 #~ msgstr ""
 #~ "Tous les éléments de l'argument 'x' de 'setDT' doivent avoir la même "
-#~ "longueur, mais le profil des longueurs d'entrée (longueur:fréquence) est : "
-#~ "%s\n"
+#~ "longueur, mais le profil des longueurs d'entrée (longueur:fréquence) "
+#~ "est : %s\n"
 #~ "La première entrée avec moins de %d entrées est %d."
 
 #, c-format
 #~ msgid ""
-#~ "Internal error in .isFastSubsettable. Please report to data.table developers"
+#~ "Internal error in .isFastSubsettable. Please report to data.table "
+#~ "developers"
 #~ msgstr ""
 #~ "Erreur interne dans .isFastSubsettable. Veuillez rapporter ce point aux "
 #~ "développeurs de data.table"
@@ -3637,11 +4468,11 @@ msgstr[1] "Indices : %s\n"
 #~ msgstr "Fonction d’agrégation absente, repli par défaut sur 'length'"
 
 #~ msgid ""
-#~ "Aggregating function(s) should take vector inputs and return a single value "
-#~ "(length=1). However, function(s) returns length!=1. This value will have to "
-#~ "be used to fill any missing combinations, and therefore must be length=1. "
-#~ "Either override by setting the 'fill' argument explicitly or modify your "
-#~ "function to handle this case appropriately."
+#~ "Aggregating function(s) should take vector inputs and return a single "
+#~ "value (length=1). However, function(s) returns length!=1. This value will "
+#~ "have to be used to fill any missing combinations, and therefore must be "
+#~ "length=1. Either override by setting the 'fill' argument explicitly or "
+#~ "modify your function to handle this case appropriately."
 #~ msgstr ""
 #~ "La (les) fonction(s) d'agrégation doit (doivent) prendre des entrées "
 #~ "vectorielles et renvoyer une seule valeur (length=1). Cependant, la "
@@ -3662,9 +4493,9 @@ msgstr[1] "Indices : %s\n"
 #~ "URL requires download.file functionalities from R >=3.2.2. You can still "
 #~ "manually download the file and fread the downloaded file."
 #~ msgstr ""
-#~ "L’URL nécessite les fonctionnalités de download.file à partir de R >=3.2.2. "
-#~ "Il est encore possible de télécharger manuellement le fichier et de faire "
-#~ "un fread dessus."
+#~ "L’URL nécessite les fonctionnalités de download.file à partir de R "
+#~ ">=3.2.2. Il est encore possible de télécharger manuellement le fichier et "
+#~ "de faire un fread dessus."
 
 #, c-format
 #~ msgid ""
@@ -3673,13 +4504,13 @@ msgstr[1] "Indices : %s\n"
 #~ "still prefer the old behavior."
 #~ msgstr ""
 #~ "L'option 'datatable.CJ.names' n'a plus d'effet, comme explicité depuis 4 "
-#~ "ans. Elle est maintenant ignorée. Nommez manuellement les entrées `...` si "
-#~ "nécessaire si vous préférez toujours l'ancien comportement."
+#~ "ans. Elle est maintenant ignorée. Nommez manuellement les entrées `...` "
+#~ "si nécessaire si vous préférez toujours l'ancien comportement."
 
 #, c-format
 #~ msgid ""
-#~ "Internal error. 'cols' should be character at this point in setkey; please "
-#~ "report."
+#~ "Internal error. 'cols' should be character at this point in setkey; "
+#~ "please report."
 #~ msgstr ""
 #~ "Erreur interne. 'cols' doit être de type caractère à ce niveau dans "
 #~ "setkey ; Veuillez rapporter le problème."
@@ -3690,13 +4521,14 @@ msgstr[1] "Indices : %s\n"
 
 #, c-format
 #~ msgid "Internal error: ncol(current)==ncol(target) was checked above"
-#~ msgstr "Erreur interne : ncol(current)==ncol(target) a été vérifié ci-dessus"
+#~ msgstr ""
+#~ "Erreur interne : ncol(current)==ncol(target) a été vérifié ci-dessus"
 
 #, c-format
 #~ msgid "Internal error: factor type mismatch should have been caught earlier"
 #~ msgstr ""
-#~ "Erreur interne : type factor incohérent ; Cela aurait dû être détecté plus "
-#~ "tôt"
+#~ "Erreur interne : type factor incohérent ; Cela aurait dû être détecté "
+#~ "plus tôt"
 
 #~ msgid "Provided argument fill="
 #~ msgstr "L’argument fill= fourni"
diff --git a/po/fr.po b/po/fr.po
index e63209de3..4adc4faf9 100644
--- a/po/fr.po
+++ b/po/fr.po
@@ -1,7 +1,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: data.table 1.16.99\n"
-"POT-Creation-Date: 2024-08-28 21:08+0000\n"
+"POT-Creation-Date: 2025-02-02 23:58-0800\n"
 "PO-Revision-Date: 2024-09-02 20:11+0200\n"
 "Last-Translator: Elise Maigné <elise.maigne@inrae.fr>\n"
 "Language-Team: \n"
@@ -11,13 +11,20 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: Poedit 3.5\n"
 
-#: 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 "
-"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"
+#: assign.c:122
+#, fuzzy
+#| 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"
+msgid ""
+"The data.table internal attributes of this table are invalid. 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 the data.table issue tracker.\n"
 msgstr ""
 ".internal.selfref ptr est NULL. Ceci est normal et attendu pour une table de "
 "données chargée depuis le disque. Rappelez-vous de toujours exécuter setDT() "
@@ -26,7 +33,7 @@ msgstr ""
 "exécuté setDT(), veuillez le signaler dans le gestionnaire de tickets (issue "
 "tracker) de data.table.\n"
 
-#: assign.c:202
+#: assign.c:203
 #, c-format
 msgid ""
 "Some columns are a multi-column type (such as a matrix column), for example "
@@ -40,7 +47,7 @@ msgstr ""
 "jointure peuvent échouer. Pensez plutôt à utiliser as.data.table() qui "
 "créera une nouvelle colonne pour chaque colonne intégrée."
 
-#: assign.c:219
+#: assign.c:220
 #, c-format
 msgid ""
 "Column %d has class 'POSIXlt'. Please convert it to POSIXct (using as."
@@ -52,7 +59,7 @@ msgstr ""
 "pas du tout l'utilisation de POSIXlt parce qu'il utilise 40 octets pour "
 "stocker une date."
 
-#: assign.c:239
+#: assign.c:240
 #, c-format
 msgid ""
 "All elements in argument 'x' to 'setDT' must be of equal length, but input "
@@ -62,15 +69,15 @@ msgstr ""
 "longueur, mais l'entrée %d a une longueur de %d alors que la première entrée "
 "non vide a une longueur de %d"
 
-#: assign.c:249
+#: assign.c:250
 msgid "alloccol has been passed a NULL dt"
 msgstr "'alloccol' a reçu un dt NULL"
 
-#: assign.c:250
+#: assign.c:251
 msgid "dt passed to alloccol isn't type VECSXP"
 msgstr "dt transmis à 'alloccol' n'est pas de type VECSXP"
 
-#: assign.c:252
+#: assign.c:253
 msgid ""
 "dt passed to alloccol has no class attribute. Please report result of "
 "traceback() to data.table issue tracker."
@@ -79,7 +86,7 @@ msgstr ""
 "résultat de 'traceback()' dans le gestionnaire de tickets (issue tracker) de "
 "data.table."
 
-#: assign.c:269
+#: assign.c:270
 #, c-format
 msgid ""
 "tl (%d) is greater than 10,000 items over-allocated (l = %d). If you didn't "
@@ -91,7 +98,7 @@ msgstr ""
 "rapporter ce problème dans le gestionnaire de tickets (issue tracker) de "
 "data.table en incluant le résultat de sessionInfo()."
 
-#: assign.c:271
+#: assign.c:272
 #, c-format
 msgid ""
 "Attempt to reduce allocation from %d to %d ignored. Can only increase "
@@ -102,7 +109,7 @@ msgstr ""
 "peut être augmentée que par une copie superficielle (shallow). N'utilisez "
 "pas DT[...]<- ou DT$someCol<-. Utilisez plutôt := à l'intérieur de DT[...]."
 
-#: assign.c:279
+#: assign.c:280
 msgid ""
 "Has getOption('datatable.alloccol') somehow become unset? It should be a "
 "number, by default 1024."
@@ -110,7 +117,7 @@ msgstr ""
 "Est-ce que getOption('datatable.alloccol') est devenu indéfini ? Il devrait "
 "s'agir d'un nombre, par défaut 1024."
 
-#: assign.c:281
+#: assign.c:282
 #, c-format
 msgid ""
 "getOption('datatable.alloccol') should be a number, by default 1024. But its "
@@ -119,7 +126,7 @@ msgstr ""
 "getOption('datatable.alloccol') devrait être un nombre, par défaut 1024. "
 "Mais son type est '%s'."
 
-#: assign.c:283
+#: assign.c:284
 #, c-format
 msgid ""
 "getOption('datatable.alloc') is a numeric vector ok but its length is %d. "
@@ -128,27 +135,27 @@ msgstr ""
 "getOption('datatable.alloc') est un vecteur numérique ok mais sa longueur "
 "est %d. Sa longueur devrait être de 1."
 
-#: assign.c:286
+#: assign.c:287
 #, c-format
 msgid "getOption('datatable.alloc')==%d.  It must be >=0 and not NA."
 msgstr "getOption('datatable.alloc')==%d. Doit être >=0 et non NA."
 
-#: assign.c:292 between.c:16 between.c:22 frollR.c:41 frollR.c:95 fsort.c:105
-#: gsumm.c:346 gsumm.c:582 gsumm.c:728 gsumm.c:865 gsumm.c:1020 gsumm.c:1112
-#: nafill.c:103 openmp-utils.c:79 uniqlist.c:354 utils.c:107 utils.c:109
+#: assign.c:293 between.c:22 between.c:28 frollR.c:41 frollR.c:95 fsort.c:119
+#: gsumm.c:351 gsumm.c:587 gsumm.c:733 gsumm.c:870 gsumm.c:1025 gsumm.c:1117
+#: nafill.c:108 openmp-utils.c:79 uniqlist.c:354 utils.c:117 utils.c:119
 #, c-format
 msgid "%s must be TRUE or FALSE"
 msgstr "%s doit être TRUE ou FALSE"
 
-#: assign.c:340
+#: assign.c:341
 msgid "assign has been passed a NULL dt"
 msgstr "'assign' a reçu un dt NULL"
 
-#: assign.c:341
+#: assign.c:342
 msgid "dt passed to assign isn't type VECSXP"
 msgstr "le dt transmis à 'assign' n'est pas du type VECSXP"
 
-#: assign.c:343
+#: assign.c:344
 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, "
@@ -159,11 +166,11 @@ msgstr ""
 "j. Ou utilisez copy(.SD) en dernier recours (lent), jusqu'à ce que shallow() "
 "soit exporté."
 
-#: assign.c:355
+#: assign.c:356
 msgid "dt passed to assign has no names"
 msgstr "le dt transmis à 'assign' n'a pas de noms"
 
-#: assign.c:359
+#: assign.c:360
 msgid ""
 "data.table is NULL; malformed. A null data.table should be an empty list. "
 "typeof() should always return 'list' for data.table."
@@ -171,12 +178,12 @@ msgstr ""
 "data.table est NULL ; malformé. Un data.table nul devrait être une liste "
 "vide. typeof() devrait toujours retourner 'list' pour data.table."
 
-#: assign.c:369
+#: assign.c:370
 #, c-format
 msgid "Assigning to all %d rows\n"
 msgstr "Affectation à toutes les lignes %d\n"
 
-#: assign.c:374
+#: assign.c:375
 msgid ""
 "Coerced i from numeric to integer. Please pass integer for efficiency; e.g., "
 "2L rather than 2"
@@ -184,7 +191,7 @@ msgstr ""
 "I a été converti automatiquement de numérique à entier. Par souci "
 "d'efficacité, passez un entier ; par exemple, 2L au lieu de 2"
 
-#: assign.c:377
+#: assign.c:378
 #, c-format
 msgid ""
 "i is type '%s'. Must be integer, or numeric is coerced with warning. If i is "
@@ -196,28 +203,23 @@ msgstr ""
 "suffit de l'envelopper avec which(), et de placer which() en dehors de la "
 "boucle si possible pour plus d'efficacité."
 
-#: assign.c:383 subset.c:170
+#: assign.c:384 subset.c:170
 #, c-format
 msgid "i[%d] is %d which is out of range [1,nrow=%d]"
 msgstr "i[%d] est %d, ce qui est en dehors de l'intervalle [1,nrow=%d]"
 
-#: assign.c:386
+#: assign.c:387
 #, c-format
 msgid "Assigning to %d row subset of %d rows\n"
 msgstr "Affectation à un sous-ensemble de %d lignes parmi %d lignes\n"
 
-#: assign.c:395
-#, c-format
-msgid "Added %d new column%s initialized with all-NA\n"
-msgstr "Ajout de %d nouvelle(s) colonne(s) initialisée%s avec all-NA\n"
-
-#: assign.c:400
+#: assign.c:403
 msgid "length(LHS)==0; no columns to delete or assign RHS to."
 msgstr ""
 "length(LHS)==0 ; aucune colonne à supprimer ou à laquelle assigner le membre "
 "de droite (RHS)."
 
-#: assign.c:414
+#: assign.c:417
 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 "
@@ -228,7 +230,7 @@ msgstr ""
 "table sont sur-alloués et ne permettent pas de copier les données de façon "
 "superficielle (shallow)."
 
-#: assign.c:425
+#: assign.c:428
 msgid ""
 "Coerced j from numeric to integer. Please pass integer for efficiency; e.g., "
 "2L rather than 2"
@@ -236,7 +238,7 @@ msgstr ""
 "J converti automatiquement de numérique à entier. Par souci d'efficacité, "
 "passez un entier ; par exemple, 2L au lieu de 2"
 
-#: assign.c:428
+#: assign.c:431
 #, c-format
 msgid ""
 "j is type '%s'. Must be integer, character, or numeric is coerced with "
@@ -245,7 +247,7 @@ msgstr ""
 "j est de type '%s'. Il doit être entier. Caractère, ou numérique sont "
 "convertis automatiquement avec un avis."
 
-#: assign.c:430
+#: assign.c:433
 msgid ""
 "Can't assign to the same column twice in the same query (duplicates "
 "detected)."
@@ -253,11 +255,11 @@ msgstr ""
 "Impossible d'affecter deux fois la même colonne dans la même requête "
 "(détection des doublons)."
 
-#: assign.c:431
+#: assign.c:434
 msgid "newcolnames is supplied but isn't a character vector"
 msgstr "newcolnames est fourni mais n'est pas un vecteur de caractères"
 
-#: assign.c:433
+#: assign.c:436
 msgid ""
 "Values of type POSIXlt detected and converted to POSIXct. We do not "
 "recommend the use of POSIXlt at all because it typically takes more than 6 "
@@ -269,12 +271,7 @@ msgstr ""
 "plus de 6 fois l'espace de stockage qu’une colonne POSIXct équivalente. "
 "Utilisez as.POSIXct() pour éviter cet avertissement."
 
-#: assign.c:437
-#, c-format
-msgid "RHS_list_of_columns == %s\n"
-msgstr "RHS_list_of_columns == %s\n"
-
-#: assign.c:442
+#: assign.c:446
 #, c-format
 msgid ""
 "RHS_list_of_columns revised to true because RHS list has 1 item which is "
@@ -284,7 +281,7 @@ msgstr ""
 "a un élement NULL, ou dont la longueur %d est soit 1 soit targetlen (%d). "
 "Veuillez déplier le RHS.\n"
 
-#: assign.c:447
+#: assign.c:451
 #, c-format
 msgid ""
 "Supplied %d columns to be assigned an empty list (which may be an empty data."
@@ -296,20 +293,20 @@ msgstr ""
 "Pour supprimer plusieurs colonnes, utilisez NULL à la place. Pour ajouter "
 "plusieurs colonnes vides de type liste, utilisez list(list())."
 
-#: assign.c:452
+#: assign.c:456
 #, c-format
 msgid "Recycling single RHS list item across %d columns. Please unwrap RHS.\n"
 msgstr ""
 "Recyclage d'un seul élément de liste du membre de droite (RHS) sur %d "
 "colonnes. Veuillez déplier le RHS.\n"
 
-#: assign.c:454
+#: assign.c:458
 #, c-format
 msgid ""
 "Supplied %d columns to be assigned %d items. Please see NEWS for v1.12.2."
 msgstr "%d colonnes fournies à affecter à %d éléments. Voir NEWS pour v1.12.2."
 
-#: assign.c:462
+#: assign.c:466
 #, c-format
 msgid ""
 "Item %d of column numbers in j is %d which is outside range [1,ncol=%d]. "
@@ -321,7 +318,7 @@ msgstr ""
 "colonnes existantes, pas à en ajouter de nouvelles. Veuillez utiliser un "
 "data.table pour cela."
 
-#: assign.c:463
+#: assign.c:467
 #, c-format
 msgid ""
 "Item %d of column numbers in j is %d which is outside range [1,ncol=%d]. Use "
@@ -331,11 +328,23 @@ msgstr ""
 "l'intervalle [1,ncol=%d]. Utilisez plutôt les noms de colonnes dans j pour "
 "ajouter de nouvelles colonnes."
 
-#: assign.c:468
+#: assign.c:473
+msgid ""
+"Doubly-invalid attempt to delete a non-existent column while also providing i"
+msgstr ""
+
+#: assign.c:475
+msgid ""
+"Invalid attempt to delete a list column while also providing i; did you "
+"intend to add NULL to those rows instead? If so, use list_col := "
+"list(list(NULL))."
+msgstr ""
+
+#: assign.c:476
 msgid "When deleting columns, i should not be provided"
 msgstr "Lors de la suppression de colonnes, i ne doit pas être fourni"
 
-#: assign.c:474
+#: assign.c:484
 #, c-format
 msgid ""
 "RHS of assignment to existing column '%s' is zero length but not NULL. If "
@@ -354,7 +363,7 @@ msgstr ""
 "tel que vector('list',nrow(DT)) ; c'est-à-dire, remplacez ('plonk') la "
 "nouvelle colonne."
 
-#: assign.c:481
+#: assign.c:491
 #, c-format
 msgid ""
 "Tried to assign NULL to column '%s', but this column does not exist to remove"
@@ -362,14 +371,14 @@ msgstr ""
 "Tentative d’affectation de NULL à la colonne ‘%s’, mais cette colonne "
 "n’existe pas et ne peut donc pas être éliminée"
 
-#: assign.c:489
+#: assign.c:499
 #, c-format
 msgid "%d column matrix RHS of := will be treated as one vector"
 msgstr ""
 "%d la matrice colonne du membre de droite (RHS) de := sera traitée comme un "
 "vecteur"
 
-#: assign.c:494
+#: assign.c:504
 #, c-format
 msgid ""
 "Can't assign to column '%s' (type 'factor') a value of type '%s' (not "
@@ -378,7 +387,7 @@ msgstr ""
 "Impossible d'affecter à la colonne '%s' (type 'factor') une valeur de type "
 "'%s' (ni caractère, ni facteur, ni entier, ni numérique)"
 
-#: assign.c:500
+#: assign.c:510
 #, c-format
 msgid ""
 "Supplied %d items to be assigned to %d items of column '%s'. If you wish to "
@@ -389,7 +398,7 @@ msgstr ""
 "souhaitez 'recycler' le membre de droite (RHS), veuillez utiliser rep() pour "
 "indiquer clairement votre intention aux lecteurs de votre code."
 
-#: assign.c:510
+#: assign.c:520
 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() "
@@ -402,7 +411,7 @@ msgstr ""
 "tableau (pour pré-allouer de l'espace pour les nouvelles colonnes) avant de "
 "l'assigner par référence."
 
-#: assign.c:513
+#: assign.c:523
 #, c-format
 msgid ""
 "truelength (%d) is greater than 10,000 items over-allocated (length = %d). "
@@ -416,7 +425,7 @@ msgstr ""
 "tickets (issue tracker) de data.table en incluant le résultat de "
 "sessionInfo()."
 
-#: assign.c:517
+#: assign.c:527
 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 "
@@ -427,18 +436,39 @@ msgstr ""
 "Dans le cas contraire, signalez le problème dans le gestionnaire de tickets "
 "(issue tracker) de data.table."
 
-#: assign.c:552
-#, c-format
+#: assign.c:534
+#, fuzzy
+#| 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."
+msgid ""
+"It appears that at some earlier point, attributes of this data.table have "
+"been reassigned. Please use setattr(DT, name, value) rather than attr(DT, "
+"name) <- value. If that doesn't apply to you, please report your case to the "
+"data.table issue tracker."
+msgstr ""
+"Il semble qu'à un moment donné, les noms de cette table data.table aient été "
+"réattribués. Veillez à utiliser setnames() plutôt que names<- ou colnames<-. "
+"Dans le cas contraire, signalez le problème dans le gestionnaire de tickets "
+"(issue tracker) de data.table."
+
+#: assign.c:564
+#, fuzzy, c-format
+#| msgid ""
+#| "RHS for item %d has been duplicated because MAYBE_REFERENCED==%d "
+#| "MAYBE_SHARED==%d, but then is being plonked. length(values)==%d; "
+#| "length(cols)==%d)\n"
 msgid ""
 "RHS for item %d has been duplicated because MAYBE_REFERENCED==%d "
 "MAYBE_SHARED==%d, but then is being plonked. length(values)==%d; "
-"length(cols)==%d)\n"
+"length(cols)==%d\n"
 msgstr ""
 "Le membre de droite (RHS) pour l'élément %d a été dupliqué parce que "
 "MAYBE_REFERENCED==%d MAYBE_SHARED==%d, mais il est ensuite remplacé "
 "('plonk'). length(values)==%d ; length(cols)==%d)\n"
 
-#: assign.c:557
+#: assign.c:569
 #, c-format
 msgid ""
 "Direct plonk of unnamed RHS, no copy. MAYBE_REFERENCED==%d, "
@@ -447,7 +477,7 @@ msgstr ""
 "Remplacement ('plonk') du membre de droite (RHS) sans nom, pas de copie. "
 "MAYBE_REFERENCED==%d, MAYBE_SHARED==%d\n"
 
-#: assign.c:626
+#: assign.c:638
 #, c-format
 msgid ""
 "Dropping index '%s' as it doesn't have '__' at the beginning of its name. It "
@@ -456,30 +486,26 @@ msgstr ""
 "Suppression de l'indice '%s' car il n'a pas '__' au début de son nom. Il a "
 "très probablement été créé par la version 1.9.4 de data.table.\n"
 
-#: assign.c:671 assign.c:687
+#: assign.c:683 assign.c:699
 #, c-format
 msgid "Dropping index '%s' due to an update on a key column\n"
 msgstr ""
 "Suppression de l'indice '%s' suite à une mise à jour d'une colonne clé\n"
 
-#: assign.c:680
+#: assign.c:692
 #, c-format
 msgid "Shortening index '%s' to '%s' due to an update on a key column\n"
 msgstr ""
 "Raccourcissement de l'indice '%s' en '%s' suite à une mise à jour d'une "
 "colonne clé\n"
 
-#: assign.c:738
-#, c-format
-msgid "target vector"
-msgstr "vecteur cible"
-
-#: assign.c:738
-#, c-format
-msgid "column %d named '%s'"
+#: assign.c:750
+#, fuzzy, c-format
+#| msgid "column %d named '%s'"
+msgid "(column %d named '%s')"
 msgstr "colonne %d nommée '%s'"
 
-#: assign.c:772
+#: assign.c:784
 #, c-format
 msgid ""
 "Cannot assign 'factor' to '%s'. Factors can only be assigned to factor, "
@@ -488,24 +514,53 @@ msgstr ""
 "Impossible d'affecter 'factor' à '%s'. Les facteurs ne peuvent être affectés "
 "qu'à des colonnes de facteurs, de caractères ou de listes."
 
-#: assign.c:786
-#, c-format
+#: assign.c:799
+#, fuzzy, c-format
+#| msgid ""
+#| "Assigning factor numbers to %s. But %d is outside the level range [1,%d]"
 msgid ""
-"Assigning factor numbers to %s. But %d is outside the level range [1,%d]"
+"Assigning factor numbers to target vector. But %d is outside the level range "
+"[1,%d]"
 msgstr ""
 "Attribution de numéros de facteurs à %s. Mais %d est en dehors de "
 "l'intervalle [1,%d]"
 
-#: assign.c:795
-#, c-format
+#: assign.c:801
+#, fuzzy, c-format
+#| msgid ""
+#| "Assigning factor numbers to %s. But %d is outside the level range [1,%d]"
+msgid ""
+"Assigning factor numbers to column %d named '%s'. But %d is outside the "
+"level range [1,%d]"
+msgstr ""
+"Attribution de numéros de facteurs à %s. Mais %d est en dehors de "
+"l'intervalle [1,%d]"
+
+#: assign.c:811
+#, fuzzy, c-format
+#| msgid ""
+#| "Assigning factor numbers to %s. But %f is outside the level range [1,%d], "
+#| "or is not a whole number."
 msgid ""
-"Assigning factor numbers to %s. But %f is outside the level range [1,%d], or "
-"is not a whole number."
+"Assigning factor numbers to target vector. But %f is outside the level range "
+"[1,%d], or is not a whole number."
 msgstr ""
 "Attribution de numéros de facteurs à %s. Mais %f est en dehors de "
 "l'intervalle [1,%d], ou n'est pas un nombre entier."
 
-#: assign.c:801
+#: assign.c:813
+#, fuzzy, c-format
+#| msgid ""
+#| "Assigning factor numbers to %s. But %f is outside the level range [1,%d], "
+#| "or is not a whole number."
+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 ""
+"Attribution de numéros de facteurs à %s. Mais %f est en dehors de "
+"l'intervalle [1,%d], ou n'est pas un nombre entier."
+
+#: assign.c:819
 #, c-format
 msgid ""
 "Cannot assign '%s' to 'factor'. Factor columns can be assigned factor, "
@@ -515,88 +570,197 @@ msgstr ""
 "être assignées aux types facteur, caractère, NA dans n'importe quel type, ou "
 "numéros de niveaux."
 
-#: assign.c:861
+#: assign.c:879
 msgid "Unable to allocate working memory of %zu bytes to combine factor levels"
 msgstr ""
 "Impossible d'allouer une mémoire de travail de %zu octets pour combiner les "
 "niveaux de facteurs"
 
-#: assign.c:887
-#, c-format
-msgid "Coercing 'character' RHS to '%s' to match the type of %s."
+#: assign.c:906
+#, fuzzy, c-format
+#| msgid "Coercing 'character' RHS to '%s' to match the type of %s."
+msgid "Coercing 'character' RHS to '%s' to match the type of target vector."
 msgstr ""
 "Le membre de droite (RHS) 'character' a été automatiquement converti en '%s' "
 "pour qu'il corresponde au type de %s."
 
-#: assign.c:894
-#, c-format
-msgid "Cannot coerce 'list' RHS to 'integer64' to match the type of %s."
+#: assign.c:908
+#, fuzzy, c-format
+#| msgid "Coercing 'character' RHS to '%s' to match the type of %s."
+msgid ""
+"Coercing 'character' RHS to '%s' to match the type of column %d named '%s'."
+msgstr ""
+"Le membre de droite (RHS) 'character' a été automatiquement converti en '%s' "
+"pour qu'il corresponde au type de %s."
+
+#: assign.c:916
+#, fuzzy
+#| msgid "Cannot coerce 'list' RHS to 'integer64' to match the type of %s."
+msgid ""
+"Cannot coerce 'list' RHS to 'integer64' to match the type of target vector."
 msgstr ""
 "Impossible de convertir le membre de droite (RHS) de 'list' à 'integer64' "
 "pour qu'il corresponde au type de %s."
 
-#: assign.c:899
-#, c-format
-msgid "Coercing 'list' RHS to '%s' to match the type of %s."
+#: assign.c:918
+#, fuzzy, c-format
+#| msgid "Cannot coerce 'list' RHS to 'integer64' to match the type of %s."
+msgid ""
+"Cannot coerce 'list' RHS to 'integer64' to match the type of column %d named "
+"'%s'."
+msgstr ""
+"Impossible de convertir le membre de droite (RHS) de 'list' à 'integer64' "
+"pour qu'il corresponde au type de %s."
+
+#: assign.c:924
+#, fuzzy, c-format
+#| msgid "Coercing 'list' RHS to '%s' to match the type of %s."
+msgid "Coercing 'list' RHS to '%s' to match the type of target vector."
 msgstr ""
 "Le membre de droite (RHS) 'list' a été automatiquement converti en '%s' pour "
 "qu'il corresponde au type de %s."
 
-#: assign.c:904
-#, c-format
-msgid "Zero-copy coerce when assigning '%s' to '%s' %s.\n"
+#: assign.c:926
+#, fuzzy, c-format
+#| msgid "Coercing 'list' RHS to '%s' to match the type of %s."
+msgid "Coercing 'list' RHS to '%s' to match the type of column %d named '%s'."
+msgstr ""
+"Le membre de droite (RHS) 'list' a été automatiquement converti en '%s' pour "
+"qu'il corresponde au type de %s."
+
+#: assign.c:934
+#, fuzzy, c-format
+#| msgid "Zero-copy coerce when assigning '%s' to '%s' %s.\n"
+msgid "Zero-copy coerce when assigning '%s' to '%s' target vector.\n"
+msgstr "Conversion sans copie lors de l'affectation de '%s' à '%s' %s.\n"
+
+#: assign.c:936
+#, fuzzy, c-format
+#| msgid "Zero-copy coerce when assigning '%s' to '%s' %s.\n"
+msgid ""
+"Zero-copy coerce when assigning '%s' to column %d named '%s' which is '%s'.\n"
 msgstr "Conversion sans copie lors de l'affectation de '%s' à '%s' %s.\n"
 
-#: assign.c:1006
+#: assign.c:952
+#, fuzzy, c-format
+#| msgid "target vector"
+msgid "(target vector)"
+msgstr "vecteur cible"
+
+#: assign.c:962 assign.c:963
+#, c-format
+msgid ""
+"%d (type '%s') at RHS position %d taken as TRUE when assigning to type '%s' "
+"%s"
+msgstr ""
+
+#: assign.c:965
+#, c-format
+msgid ""
+"%<PRId64> (type '%s') at RHS position %d taken as TRUE when assigning to "
+"type '%s' %s"
+msgstr ""
+
+#: assign.c:966
+#, c-format
+msgid ""
+"%f (type '%s') at RHS position %d taken as TRUE when assigning to type '%s' "
+"%s"
+msgstr ""
+
+#: assign.c:970
+#, c-format
+msgid ""
+"%d (type '%s') at RHS position %d taken as 0 when assigning to type '%s' %s"
+msgstr ""
+
+#: assign.c:972
+#, c-format
+msgid ""
+"%<PRId64> (type '%s') at RHS position %d taken as 0 when assigning to type "
+"'%s' %s"
+msgstr ""
+
+#: assign.c:973
+#, c-format
+msgid ""
+"%f (type '%s') at RHS position %d either truncated (precision lost) or taken "
+"as 0 when assigning to type '%s' %s"
+msgstr ""
+
+#: assign.c:978
+#, c-format
+msgid ""
+"%<PRId64> (type '%s') at RHS position %d out-of-range (NA) when assigning to "
+"type '%s' %s"
+msgstr ""
+
+#: assign.c:979 assign.c:986
+#, c-format
+msgid ""
+"%f (type '%s') at RHS position %d out-of-range(NA) or truncated (precision "
+"lost) when assigning to type '%s' %s"
+msgstr ""
+
+#: assign.c:981 assign.c:990
+#, c-format
+msgid ""
+"%f (type '%s') at RHS position %d either imaginary part discarded or real "
+"part truncated (precision lost) when assigning to type '%s' %s"
+msgstr ""
+
+#: assign.c:991
+#, c-format
+msgid ""
+"%f (type '%s') at RHS position %d imaginary part discarded when assigning to "
+"type '%s' %s"
+msgstr ""
+
+#: assign.c:1036
 #, c-format
 msgid "type '%s' cannot be coerced to '%s'"
 msgstr "le type '%s' ne peut pas être converti automatiquement en '%s'"
 
-#: assign.c:1164
+#: assign.c:1194
 #, c-format
 msgid "Unsupported column type in assign.c:memrecycle '%s'"
 msgstr "Type de colonne non pris en charge dans assign.c:memrecycle '%s'"
 
-#: assign.c:1249
-#, c-format
-msgid "savetl_init checks failed (%d %d %p %p)"
-msgstr "les vérifications de savetl_init ont échoué (%d %d %p %p)"
-
-#: assign.c:1258
+#: assign.c:1288
 #, c-format
 msgid "Failed to allocate initial %d items in savetl_init"
 msgstr "Échec de l'allocation des éléments initiaux %d dans savetl_init"
 
-#: assign.c:1274
+#: assign.c:1304
 #, c-format
 msgid "Failed to realloc saveds to %d items in savetl"
 msgstr "Échec de la réaffectation de saveds à %d éléments dans savetl"
 
-#: assign.c:1280
+#: assign.c:1310
 #, c-format
 msgid "Failed to realloc savedtl to %d items in savetl"
 msgstr "Échec de la réaffectation de savedtl à %d éléments dans savetl"
 
-#: assign.c:1303
+#: assign.c:1333
 msgid "x must be a character vector"
 msgstr "x doit être un vecteur de caractères"
 
-#: assign.c:1304
+#: assign.c:1334
 msgid "'which' must be an integer vector"
 msgstr "'which' doit être un vecteur entier"
 
-#: assign.c:1305
+#: assign.c:1335
 msgid "'new' must be a character vector"
 msgstr "'new' doit être un vecteur de caractères"
 
-#: assign.c:1306
+#: assign.c:1336
 #, c-format
 msgid "'new' is length %d. Should be the same as length of 'which' (%d)"
 msgstr ""
 "La longueur de 'new' est de %d. Elle doit être identique à la longueur de "
 "'which' (%d)"
 
-#: assign.c:1309
+#: assign.c:1339
 #, c-format
 msgid ""
 "Item %d of 'which' is %d which is outside range of the length %d character "
@@ -605,7 +769,7 @@ msgstr ""
 "L'élément %d de 'which' est %d, ce qui est en dehors de la plage de valeurs "
 "du vecteur de caractères qui est de longueur %d"
 
-#: between.c:12
+#: between.c:18
 #, c-format
 msgid ""
 "Incompatible vector lengths: length(x)==%d length(lower)==%d "
@@ -616,26 +780,26 @@ msgstr ""
 "length(upper)==%d. Chaque vecteur doit avoir la longueur 1 ou la longueur du "
 "vecteur le plus long."
 
-#: between.c:19
+#: between.c:25
 msgid "NAbounds must be TRUE or NA"
 msgstr "NAbounds doit être TRUE ou NA"
 
-#: between.c:64
+#: between.c:70
 #, c-format
 msgid "Item %d of lower (%d) is greater than item %d of upper (%d)"
 msgstr "L'élément %d de lower (%d) est supérieur à l'élément %d de upper (%d)"
 
-#: between.c:82
+#: between.c:88
 #, c-format
 msgid "between parallel processing of integer took %8.3fs\n"
 msgstr ""
 "le traitement parallèle par 'between' des nombres entiers a pris %8.3fs\n"
 
-#: between.c:88
+#: between.c:94
 msgid "x is integer64 but lower and/or upper are not."
 msgstr "x est un integer64 mais lower et/ou upper ne le sont pas."
 
-#: between.c:95
+#: between.c:101
 #, c-format
 msgid ""
 "Item %d of lower (%<PRId64>) is greater than item %d of upper (%<PRId64>)"
@@ -643,45 +807,45 @@ msgstr ""
 "L'élément %d de lower (%<PRId64>) est supérieur à l'élément %d de upper "
 "(%<PRId64>)"
 
-#: between.c:112
+#: between.c:118
 #, c-format
 msgid "between parallel processing of integer64 took %8.3fs\n"
 msgstr ""
 "le traitement parallèle par 'between' des entiers 64 bits a pris %8.3fs\n"
 
-#: between.c:115
+#: between.c:121
 msgid ""
 "x is not integer64 but lower and/or upper is integer64. Please align classes."
 msgstr ""
 "x n'est pas un entier 64 bits mais lower et/ou upper en sont un. Veuillez "
 "uniformiser les classes."
 
-#: between.c:122
+#: between.c:128
 #, c-format
 msgid "Item %d of lower (%f) is greater than item %d of upper (%f)"
 msgstr "L'élément %d de lower (%f) est supérieur à l'élément %d de upper (%f)"
 
-#: between.c:140
+#: between.c:146
 #, c-format
 msgid "between parallel processing of double with open bounds took %8.3fs\n"
 msgstr ""
 "le traitement parallèle par 'between' des 'double' (nombres à virgule "
 "flottante) avec des bornes ouvertes a pris %8.3fs\n"
 
-#: between.c:157
+#: between.c:163
 #, c-format
 msgid "between parallel processing of double with closed bounds took %8.3fs\n"
 msgstr ""
 "le traitement parallèle par 'between' des doubles (nombres à virgule "
 "flottante) avec des bornes fermées a pris %8.3fs\n"
 
-#: between.c:172
+#: between.c:178
 #, c-format
 msgid "Item %d of lower ('%s') is greater than item %d of upper ('%s')"
 msgstr ""
 "L'élément %d de lower ('%s') est supérieur à l'élément %d de upper ('%s')"
 
-#: between.c:187
+#: between.c:193
 #, c-format
 msgid "between non-parallel processing of character took %8.3fs\n"
 msgstr ""
@@ -697,34 +861,40 @@ msgstr "icols[%d]=%d en dehors de l'intervalle [1,length(i)=%d]"
 msgid "xcols[%d]=%d outside range [1,length(x)=%d]"
 msgstr "xcols[%d]=%d en dehors de l'intervalle [1,length(x)=%d]"
 
-#: bmerge.c:69
-#, c-format
-msgid "typeof x.%s (%s) != typeof i.%s (%s)"
-msgstr "typeof x.%s (%s) != typeof i.%s (%s)"
-
-#: bmerge.c:71 bmerge.c:383
+#: bmerge.c:72
 #, c-format
 msgid "Type '%s' is not supported for joining/merging"
 msgstr "Le type '%s' n'est pas pris en charge pour la jonction/fusion"
 
-#: bmerge.c:77
+#: bmerge.c:78
 msgid "roll is character but not 'nearest'"
 msgstr "'roll' est un caractère, mais pas 'nearest'"
 
-#: bmerge.c:78
+#: bmerge.c:79
 msgid "roll='nearest' can't be applied to a character column, yet."
 msgstr ""
 "roll='nearest' ne peut pas encore être appliqué à une colonne de caractères."
 
-#: bmerge.c:86
+#: bmerge.c:87
 msgid "rollends must be a length 2 logical vector"
 msgstr "'rollends' doit être un vecteur booléen de longueur 2"
 
-#: bmerge.c:115
+#: bmerge.c:116
 msgid "Only '==' operator is supported for columns of type character."
 msgstr ""
 "Seul l'opérateur '==' est pris en charge pour les colonnes de type caractère."
 
+#: bmerge.c:190
+#, c-format
+msgid "bmerge: looping bmerge_r took %.3fs\n"
+msgstr ""
+
+#: bmerge.c:222
+#, fuzzy, c-format
+#| msgid "%s: took %.3fs\n"
+msgid "bmerge: took %.3fs\n"
+msgstr "%s : a pris %.3fs\n"
+
 #: chmatch.c:5
 #, c-format
 msgid "table is type '%s' (must be 'character' or NULL)"
@@ -735,7 +905,7 @@ msgstr "table est de type '%s' (doit être 'character' ou NULL)"
 msgid "x is type '%s' (must be 'character' or NULL)"
 msgstr "x est le type '%s' (doit être 'character' ou NULL)"
 
-#: chmatch.c:105
+#: chmatch.c:106
 #, c-format
 msgid ""
 "Failed to allocate %<PRIu64> bytes working memory in chmatchdup: "
@@ -744,12 +914,12 @@ msgstr ""
 "Échec de l'allocation de %<PRIu64> octets de mémoire de travail dans "
 "chmatchdup : length(table)=%d length(unique(table))=%d"
 
-#: cj.c:89
+#: cj.c:95
 #, c-format
 msgid "Type '%s' is not supported by CJ."
 msgstr "Le type '%s' n'est pas pris en charge par CJ."
 
-#: coalesce.c:14
+#: coalesce.c:20
 msgid ""
 "The first argument is a list, data.table or data.frame. In this case there "
 "should be no other arguments provided."
@@ -757,7 +927,7 @@ msgstr ""
 "Le premier argument est une liste, un data.table ou un data.frame. Dans ce "
 "cas, aucun autre argument ne doit être fourni."
 
-#: coalesce.c:30
+#: coalesce.c:36
 #, c-format
 msgid ""
 "Item 1 is a factor but item %d is not a factor. When factors are involved, "
@@ -766,7 +936,7 @@ msgstr ""
 "L'élément 1 est un facteur mais l'élément %d n'en est pas un. Lorsqu'il "
 "s'agit de facteurs, tous les éléments doivent être des facteurs."
 
-#: coalesce.c:32
+#: coalesce.c:38
 #, c-format
 msgid ""
 "Item %d is a factor but its levels are not identical to the first item's "
@@ -775,7 +945,7 @@ msgstr ""
 "L'élément %d est un facteur mais ses niveaux ne sont pas identiques à ceux "
 "du premier élément."
 
-#: coalesce.c:36
+#: coalesce.c:42
 #, c-format
 msgid ""
 "Item %d is a factor but item 1 is not a factor. When factors are involved, "
@@ -784,7 +954,7 @@ msgstr ""
 "L'élément %d est un facteur mais l'élément 1 n'en est pas un. Lorsqu'il "
 "s'agit de facteurs, tous les éléments doivent être des facteurs."
 
-#: coalesce.c:39
+#: coalesce.c:45
 #, c-format
 msgid ""
 "Item %d is type %s but the first item is type %s. Please coerce before "
@@ -793,12 +963,12 @@ msgstr ""
 "L'élément %d est de type %s mais le premier élément est de type %s. Veuillez "
 "convertir avant la consolidation."
 
-#: coalesce.c:41
+#: coalesce.c:47
 #, c-format
 msgid "Item %d has a different class than item 1."
 msgstr "L'élément %d a une classe différente de celle de l'élément 1."
 
-#: coalesce.c:44
+#: coalesce.c:50
 #, c-format
 msgid ""
 "Item %d is length %d but the first item is length %d. Only singletons are "
@@ -807,30 +977,25 @@ msgstr ""
 "L'élément %d est de longueur %d mais le premier élément est de longueur %d. "
 "Seuls les singletons sont recyclés."
 
-#: coalesce.c:48
+#: coalesce.c:54
 msgid "coalesce copied first item (inplace=FALSE)\n"
 msgstr "coalesce a copié le premier élément (inplace=FALSE)\n"
 
-#: coalesce.c:164 fifelse.c:193 shift.c:171 uniqlist.c:98 uniqlist.c:130
+#: coalesce.c:170 fifelse.c:199 shift.c:171 uniqlist.c:98 uniqlist.c:130
 #: uniqlist.c:211 uniqlist.c:248 uniqlist.c:321
 #, c-format
 msgid "Type '%s' is not supported"
 msgstr "Le type '%s' n'est pas pris en charge"
 
-#: dogroups.c:85 gsumm.c:43
+#: dogroups.c:82 gsumm.c:48
 msgid "env is not an environment"
 msgstr "env n'est pas un environnement"
 
-#: dogroups.c:109
-#, c-format
-msgid "!length(bynames)[%d]==length(groups)[%d]==length(grpcols)[%d]"
-msgstr "!length(bynames)[%d]==length(groups)[%d]==length(grpcols)[%d]"
-
-#: dogroups.c:131
+#: dogroups.c:133
 msgid "row.names attribute of .SD not found"
 msgstr "l'attribut row.names de .SD n'a pas été trouvé"
 
-#: dogroups.c:133
+#: dogroups.c:135
 #, c-format
 msgid ""
 "row.names of .SD isn't integer length 2 with NA as first item; i.e., ."
@@ -839,32 +1004,24 @@ msgstr ""
 "row.names de .SD n'est pas un entier de longueur 2 avec NA comme premier "
 "élément ; c'est-à-dire, .set_row_names(). [%s %d %d]"
 
-#: dogroups.c:138
-msgid "length(names)!=length(SD)"
-msgstr "length(names)!=length(SD)"
-
-#: dogroups.c:154
-msgid "length(xknames)!=length(xSD)"
-msgstr "length(xknames)!=length(xSD)"
-
-#: dogroups.c:162
+#: dogroups.c:166
 #, c-format
 msgid "length(iSD)[%d] != length(jiscols)[%d]"
 msgstr "length(iSD)[%d] != length(jiscols)[%d]"
 
-#: dogroups.c:163
+#: dogroups.c:167
 #, c-format
 msgid "length(xSD)[%d] != length(xjiscols)[%d]"
 msgstr "length(xSD)[%d] != length(xjiscols)[%d]"
 
-#: dogroups.c:274
+#: dogroups.c:278
 #, c-format
 msgid "j evaluates to type '%s'. Must evaluate to atomic vector or list."
 msgstr ""
 "j évalue le type '%s'. Doit être évalué comme un vecteur atomique ou une "
 "liste."
 
-#: dogroups.c:283
+#: dogroups.c:287
 #, c-format
 msgid ""
 "Entry %d for group %d in j=list(...) should be atomic vector or list. If you "
@@ -876,7 +1033,7 @@ msgstr ""
 "utilisez plutôt := par groupe (beaucoup plus rapide), ou cbind ou merge "
 "ensuite."
 
-#: dogroups.c:290
+#: dogroups.c:294
 #, c-format
 msgid ""
 "Entry %d for group %d in j=list(...) is an array with %d dimensions > 1, "
@@ -887,7 +1044,7 @@ msgstr ""
 "dimensions > 1, ce qui est interdit. \"Déconstruisez\" vous-même le tableau "
 "en un vecteur avec c() ou as.vector() si c'est intentionnel."
 
-#: dogroups.c:300
+#: dogroups.c:304
 msgid ""
 "RHS of := is NULL during grouped assignment, but it's not possible to delete "
 "parts of a column."
@@ -895,7 +1052,7 @@ msgstr ""
 "L'élement de droite (RHS) de := est NULL pendant l'affectation groupée, mais "
 "il n'est pas possible de supprimer des parties d'une colonne."
 
-#: dogroups.c:304
+#: dogroups.c:308
 #, c-format
 msgid ""
 "Supplied %d items to be assigned to group %d of size %d in column '%s'. The "
@@ -910,16 +1067,16 @@ msgstr ""
 "l'élément de droite, utilisez explicitement rep() pour que les lecteurs de "
 "votre code comprennent bien votre intention."
 
-#: dogroups.c:336
+#: dogroups.c:340
 #, c-format
 msgid "Group %d column '%s': %s"
 msgstr "Groupe %d colonne '%s' : %s"
 
-#: dogroups.c:343
+#: dogroups.c:347
 msgid "j doesn't evaluate to the same number of columns for each group"
 msgstr "j n'évalue pas le même nombre de colonnes pour chaque groupe"
 
-#: dogroups.c:377
+#: dogroups.c:381
 #, c-format
 msgid ""
 "Column %d of j's result for the first group is NULL. We rely on the column "
@@ -936,7 +1093,7 @@ msgstr ""
 "du type approprié et recyclé) mais pas pour le premier. Veuillez utiliser un "
 "vecteur vide typé à la place, comme integer() ou numeric()."
 
-#: dogroups.c:380
+#: dogroups.c:384
 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 "
@@ -947,7 +1104,7 @@ msgstr ""
 "passer une liste nommée (que data.table optimise) ou une list() sans nom à "
 "la place.\n"
 
-#: dogroups.c:382
+#: dogroups.c:386
 #, c-format
 msgid ""
 "Column %d of j is a named vector (each item down the rows is named, "
@@ -959,7 +1116,7 @@ msgstr ""
 "raisons d'efficacité (afin d'éviter de les créer à plusieurs reprises pour "
 "chaque groupe). Ils sont de toute façon ignorés.\n"
 
-#: dogroups.c:390
+#: dogroups.c:394
 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 "
@@ -974,17 +1131,12 @@ msgstr ""
 "exemple, empêche cette accélération (envisagez de changer pour :=). Ce "
 "message pourrait être transformé en avis à l'avenir.\n"
 
-#: dogroups.c:402
+#: dogroups.c:406
 #, c-format
 msgid "dogroups: growing from %d to %d rows\n"
 msgstr "dogroups : augmentation de %d à %d lignes\n"
 
-#: dogroups.c:403
-#, c-format
-msgid "dogroups: length(ans)[%d]!=ngrpcols[%d]+njval[%d]"
-msgstr "dogroups: length(ans)[%d]!=ngrpcols[%d]+njval[%d]"
-
-#: dogroups.c:421
+#: dogroups.c:426
 #, c-format
 msgid ""
 "Item %d of j's result for group %d is zero length. This will be filled with "
@@ -997,7 +1149,7 @@ msgstr ""
 "résultat. Les groupes suivants peuvent avoir un problème similaire, mais "
 "seul le premier est signalé pour éviter de remplir le tampon d'avis."
 
-#: dogroups.c:428
+#: dogroups.c:433
 #, c-format
 msgid ""
 "Column %d of result for group %d is type '%s' but expecting type '%s'. "
@@ -1006,7 +1158,7 @@ msgstr ""
 "La colonne %d du résultat pour le groupe %d est de type '%s' mais attend le "
 "type '%s'. Les types de colonnes doivent être cohérents pour chaque groupe."
 
-#: dogroups.c:430
+#: dogroups.c:435
 #, c-format
 msgid ""
 "Supplied %d items for column %d of group %d which has %d rows. The RHS "
@@ -1021,46 +1173,55 @@ msgstr ""
 "utilisez explicitement rep() pour que les lecteurs de votre code comprennent "
 "bien votre intention."
 
-#: dogroups.c:448 fsort.c:250 fwrite.c:707
+#: dogroups.c:453 fsort.c:266 fwrite.c:733
 msgid "\n"
 msgstr "\n"
 
-#: dogroups.c:449
-#, c-format
+#: dogroups.c:455 dogroups.c:470
+#, fuzzy, c-format
+#| msgid ""
+#| "\rProcessed %d groups out of %d. %.0f%% done. Time elapsed: %ds. ETA: %ds."
 msgid ""
-"\rProcessed %d groups out of %d. %.0f%% done. Time elapsed: %ds. ETA: %ds."
+"Processed %d groups out of %d. %.0f%% done. Time elapsed: %ds. ETA: %ds."
 msgstr ""
 "\rTraitement de %d groupes sur %d. %.0f%% terminé. Temps écoulé : %ds. Heure "
 "d'arrivée prévue : %ds."
 
-#: dogroups.c:462
-#, c-format
-msgid ""
-"\rProcessed %d groups out of %d. %.0f%% done. Time elapsed: %ds. ETA: %ds.\n"
-msgstr ""
-"\rTraitement de %d groupes sur %d. %.0f%% terminé. Temps écoulé : %ds. Heure "
-"d'arrivée prévue : %ds.\n"
-
-#: dogroups.c:465
+#: dogroups.c:475
 #, c-format
 msgid "Wrote less rows (%d) than allocated (%d).\n"
 msgstr "Moins de lignes écrites (%d) que de lignes allouées (%d).\n"
 
-#: dogroups.c:489
-#, c-format
+#: dogroups.c:499
+#, fuzzy, c-format
+#| msgid ""
+#| "\n"
+#| "  %s took %.3fs for %d groups\n"
 msgid ""
 "\n"
-"  %s took %.3fs for %d groups\n"
+"  collecting discontiguous groups took %.3fs for %d groups\n"
 msgstr ""
 "\n"
 "  %s a pris %.3fs pour %d groupes\n"
 
-#: dogroups.c:491
+#: dogroups.c:500
+#, fuzzy, c-format
+#| msgid ""
+#| "\n"
+#| "  %s took %.3fs for %d groups\n"
+msgid ""
+"\n"
+"  memcpy contiguous groups took %.3fs for %d groups\n"
+msgstr ""
+"\n"
+"  %s a pris %.3fs pour %d groupes\n"
+
+#: dogroups.c:502
 #, c-format
 msgid "  eval(j) took %.3fs for %d calls\n"
 msgstr "  eval(j) a pris %.3fs pour %d appels\n"
 
-#: dogroups.c:520
+#: dogroups.c:531
 msgid "growVector passed NULL"
 msgstr "'growVector' transmis NULL"
 
@@ -1079,15 +1240,15 @@ msgstr "'fastmean' a été transmis au type %s, non numérique ou booléen"
 msgid "Unsupported column type in fcast val: '%s'"
 msgstr "Type de colonne non pris en charge dans fcast val : '%s'"
 
-#: fifelse.c:5
+#: fifelse.c:11
 msgid "Argument 'test' must be logical."
 msgstr "L'argument 'test' doit être de type booléen."
 
-#: fifelse.c:9
+#: fifelse.c:15
 msgid "S4 class objects (except nanotime) are not supported."
 msgstr "Les objets de la classe S4 (sauf nanotime) ne sont pas pris en charge."
 
-#: fifelse.c:24
+#: fifelse.c:30
 #, c-format
 msgid ""
 "Length of 'yes' is %<PRId64> but must be 1 or length of 'test' (%<PRId64>)."
@@ -1095,7 +1256,7 @@ msgstr ""
 "La longueur de 'yes' est %<PRId64> mais doit être égale à 1 ou à la longueur "
 "de 'test' (%<PRId64>)."
 
-#: fifelse.c:26
+#: fifelse.c:32
 #, c-format
 msgid ""
 "Length of 'no' is %<PRId64> but must be 1 or length of 'test' (%<PRId64>)."
@@ -1103,7 +1264,7 @@ msgstr ""
 "La longueur de 'no' est %<PRId64> mais doit être 1 ou la longueur de 'test' "
 "(%<PRId64>)."
 
-#: fifelse.c:28
+#: fifelse.c:34
 #, c-format
 msgid ""
 "Length of 'na' is %<PRId64> but must be 1 or length of 'test' (%<PRId64>)."
@@ -1111,7 +1272,7 @@ msgstr ""
 "La longueur de 'na' est %<PRId64> mais doit être 1 ou la longueur de 'test' "
 "(%<PRId64>)."
 
-#: fifelse.c:46
+#: fifelse.c:52
 #, c-format
 msgid ""
 "'no' is of type %s but '%s' is %s. Please make all arguments have the same "
@@ -1120,7 +1281,7 @@ msgstr ""
 "'no' est de type %s mais '%s' est de type %s. Veuillez faire en sorte que "
 "tous les arguments aient le même type."
 
-#: fifelse.c:52
+#: fifelse.c:58
 #, c-format
 msgid ""
 "'na' is of type %s but '%s' is %s. Please make all arguments have the same "
@@ -1129,7 +1290,7 @@ msgstr ""
 "'na' est de type %s mais '%s' est de type %s. Veuillez faire en sorte que "
 "tous les arguments aient le même type."
 
-#: fifelse.c:57
+#: fifelse.c:63
 msgid ""
 "'yes' has different class than 'no'. Please make sure that both arguments "
 "have the same class."
@@ -1137,7 +1298,7 @@ msgstr ""
 "la classe de 'yes' est différente de celle de 'no'. Veuillez vous assurer "
 "que les deux arguments ont la même classe."
 
-#: fifelse.c:62
+#: fifelse.c:68
 msgid ""
 "'yes' has different class than 'na'. Please make sure that both arguments "
 "have the same class."
@@ -1145,7 +1306,7 @@ msgstr ""
 "la classe de 'yes' est différente de celle de 'na'. Veuillez vous assurer "
 "que les deux arguments ont la même classe."
 
-#: fifelse.c:67
+#: fifelse.c:73
 msgid ""
 "'no' has different class than 'na'. Please make sure that both arguments "
 "have the same class."
@@ -1153,25 +1314,25 @@ msgstr ""
 "la classe de 'no' est différente de celle de 'na'. Veuillez vous assurer que "
 "les deux arguments ont la même classe."
 
-#: fifelse.c:74
+#: fifelse.c:80
 msgid "'yes' and 'no' are both type factor but their levels are different."
 msgstr ""
 "'oui' et 'non' sont tous les deux de type facteur, mais leurs niveaux sont "
 "différents."
 
-#: fifelse.c:79
+#: fifelse.c:85
 msgid "'yes' and 'na' are both type factor but their levels are different."
 msgstr ""
 "'oui' et 'na' sont tous les deux de type facteur, mais leurs niveaux sont "
 "différents."
 
-#: fifelse.c:84
+#: fifelse.c:90
 msgid "'no' and 'na' are both type factor but their levels are different."
 msgstr ""
 "'no' et 'na' sont tous les deux de type facteur, mais leurs niveaux sont "
 "différents."
 
-#: fifelse.c:207
+#: fifelse.c:213
 #, c-format
 msgid ""
 "Received %d inputs; please supply an even number of arguments in ..., "
@@ -1183,7 +1344,7 @@ msgstr ""
 "(dans cet ordre). Notez que l'argument par défaut doit être nommé "
 "explicitement, par exemple, default=0"
 
-#: fifelse.c:227
+#: fifelse.c:235
 msgid ""
 "S4 class objects (except nanotime) are not supported. Please see https://"
 "github.com/Rdatatable/data.table/issues/4131."
@@ -1191,12 +1352,12 @@ msgstr ""
 "Les objets de la classe S4 (sauf nanotime) ne sont pas pris en charge. "
 "Veuillez consulter https://github.com/Rdatatable/data.table/issues/4131."
 
-#: fifelse.c:230
+#: fifelse.c:238
 #, c-format
 msgid "Argument #%d must be logical but was of type %s."
 msgstr "L'argument #%d doit être booléen, mais il est de type %s."
 
-#: fifelse.c:248
+#: fifelse.c:260
 #, c-format
 msgid ""
 "Argument #%d has length %lld which differs from that of argument #1 (%lld). "
@@ -1205,7 +1366,7 @@ msgstr ""
 "L'argument #%d a une longueur %lld différente de l'argument #1 (%lld). "
 "Veillez à ce que toutes les conditions logiques aient la même longueur."
 
-#: fifelse.c:254
+#: fifelse.c:266
 #, c-format
 msgid ""
 "Resulting value is of type %s but 'default' is of type %s. Please make sure "
@@ -1214,7 +1375,7 @@ msgstr ""
 "La valeur résultat est de type %s mais 'default' est de type %s. Veuillez "
 "vous assurer que les deux arguments ont le même type."
 
-#: fifelse.c:257
+#: fifelse.c:269
 #, c-format
 msgid ""
 "Argument #%d is of type %s, however argument #2 is of type %s. Please make "
@@ -1223,7 +1384,7 @@ msgstr ""
 "L'argument #%d est de type %s, mais l'argument #2 est de type %s. Veuillez "
 "vous assurer que toutes les valeurs de sortie ont le même type."
 
-#: fifelse.c:265
+#: fifelse.c:277
 msgid ""
 "Resulting value has different class than 'default'. Please make sure that "
 "both arguments have the same class."
@@ -1231,7 +1392,7 @@ msgstr ""
 "La valeur résultat a une classe différente de celle de 'default'. Veuillez "
 "vous assurer que les deux arguments ont la même classe."
 
-#: fifelse.c:268
+#: fifelse.c:280
 #, c-format
 msgid ""
 "Argument #%d has different class than argument #2, Please make sure all "
@@ -1240,7 +1401,7 @@ msgstr ""
 "L'argument #%d n'est pas de la même classe que l'argument #2, veuillez vous "
 "assurer que toutes les valeurs de sortie ont la même classe."
 
-#: fifelse.c:277
+#: fifelse.c:289
 msgid ""
 "Resulting value and 'default' are both type factor but their levels are "
 "different."
@@ -1248,7 +1409,7 @@ msgstr ""
 "La valeur résultat et la valeur 'default' sont toutes deux des facteurs, "
 "mais leurs niveaux sont différents."
 
-#: fifelse.c:279
+#: fifelse.c:291
 #, c-format
 msgid ""
 "Argument #2 and argument #%d are both factor but their levels are different."
@@ -1256,12 +1417,12 @@ msgstr ""
 "L'argument #2 et l'argument #%d sont tous deux des facteurs, mais leurs "
 "niveaux sont différents."
 
-#: fifelse.c:288
+#: fifelse.c:300
 #, c-format
 msgid "Length of 'default' must be 1 or %lld."
 msgstr "La longueur de 'default' doit être de 1 ou %lld."
 
-#: fifelse.c:290
+#: fifelse.c:302
 #, c-format
 msgid ""
 "Length of output value #%d (%lld) must either be 1 or match the length of "
@@ -1270,7 +1431,7 @@ msgstr ""
 "La longueur de la valeur de sortie #%d (%lld) doit être soit 1, soit la "
 "longueur de la condition logique (%lld)."
 
-#: fifelse.c:395
+#: fifelse.c:407
 #, c-format
 msgid "Type '%s' is not supported."
 msgstr "Le type '%s' n'est pas pris en charge."
@@ -1291,24 +1452,26 @@ msgstr "L'argument passé à 'which' doit être booléen"
 msgid "concat: 'vec' must be a character vector"
 msgstr "concat : 'vec' doit être un vecteur de caractères"
 
-#: fmelt.c:66
-msgid "concat: 'idx' must be an integer vector of length >= 0"
+#: fmelt.c:67
+#, fuzzy
+#| msgid "concat: 'idx' must be an integer vector of length >= 0"
+msgid "concat: 'idx' must be an integer vector"
 msgstr "concat : 'idx' doit être un vecteur entier de longueur >= 0"
 
-#: fmelt.c:134
+#: fmelt.c:135
 #, c-format
 msgid "Unknown 'measure.vars' type %s at index %d of list"
 msgstr "Type inconnu de 'measure.vars' %s à l'indice %d de la liste"
 
-#: fmelt.c:187
+#: fmelt.c:188
 msgid "One or more values in 'measure.vars' is invalid."
 msgstr "Une ou plusieurs valeurs de 'measure.vars' ne sont pas valides."
 
-#: fmelt.c:189
+#: fmelt.c:190
 msgid "One or more values in 'id.vars' is invalid."
 msgstr "Une ou plusieurs valeurs de 'id.vars' ne sont pas valides."
 
-#: fmelt.c:213
+#: fmelt.c:214
 #, c-format
 msgid ""
 "Unknown 'measure.vars' type %s, must be character or integer vector/list"
@@ -1316,14 +1479,14 @@ msgstr ""
 "Le type de 'measure.vars' %s est inconnu, ça doit être un vecteur/list de "
 "caractères ou d'entiers"
 
-#: fmelt.c:215
+#: fmelt.c:216
 #, c-format
 msgid "Unknown 'id.vars' type %s, must be character or integer vector"
 msgstr ""
 "Le type de 'id.vars' %s est inconnu, ça doit être un vecteur de caractères "
 "ou d'entiers"
 
-#: fmelt.c:240
+#: fmelt.c:241
 #, c-format
 msgid ""
 "id.vars and measure.vars are internally guessed when both are 'NULL'. All "
@@ -1337,7 +1500,7 @@ msgstr ""
 "Envisagez de fournir au moins l'une des variables 'id' ou 'measure' à "
 "l'avenir."
 
-#: fmelt.c:246
+#: fmelt.c:247
 msgid ""
 "'measure.vars' is missing. Assigning all columns other than 'id.vars' "
 "columns as 'measure.vars'.\n"
@@ -1345,12 +1508,12 @@ msgstr ""
 "'measure.vars' est manquant. Affectation de toutes les colonnes autres que "
 "les colonnes 'id.vars' à 'measure.vars'.\n"
 
-#: fmelt.c:248
+#: fmelt.c:249
 #, c-format
 msgid "Assigned 'measure.vars' are [%s].\n"
 msgstr "Les 'measure.vars' attribués sont [%s].\n"
 
-#: fmelt.c:259
+#: fmelt.c:260
 msgid ""
 "'id.vars' is missing. Assigning all columns other than 'measure.vars' "
 "columns as 'id.vars'.\n"
@@ -1358,12 +1521,12 @@ msgstr ""
 "'id.vars' est manquant. Affectation de toutes les colonnes autres que les "
 "colonnes 'measure.vars' à 'id.vars'.\n"
 
-#: fmelt.c:260
+#: fmelt.c:261
 #, c-format
 msgid "Assigned 'id.vars' are [%s].\n"
 msgstr "Les 'id.vars' attribués sont [%s].\n"
 
-#: fmelt.c:314
+#: fmelt.c:315
 msgid ""
 "When 'measure.vars' is a list, 'value.name' must be a character vector of "
 "length =1 or =length(measure.vars)."
@@ -1371,7 +1534,7 @@ msgstr ""
 "Lorsque 'measure.vars' est une liste, 'value.name' doit être un vecteur de "
 "caractères de longueur =1 ou =length(measure.vars)."
 
-#: fmelt.c:315
+#: fmelt.c:316
 msgid ""
 "When 'measure.vars' is either not specified or a character/integer vector, "
 "'value.name' must be a character vector of length =1."
@@ -1380,12 +1543,12 @@ msgstr ""
 "caractères/de nombres entiers, 'value.name' doit être un vecteur de "
 "caractères de longueur =1."
 
-#: fmelt.c:318
+#: fmelt.c:319
 msgid "'variable.name' must be a character/integer vector of length 1."
 msgstr ""
 "'variable.name' doit être un vecteur de caractères/entiers de longueur 1."
 
-#: fmelt.c:371
+#: fmelt.c:372
 msgid ""
 "variable_table attribute of measure.vars should be a data table with at "
 "least one column"
@@ -1393,7 +1556,7 @@ msgstr ""
 "l'attribut variable_table de measure.vars doit être un tableau de données "
 "comportant au moins une colonne"
 
-#: fmelt.c:376
+#: fmelt.c:377
 #, c-format
 msgid ""
 "variable_table attribute of measure.vars should be a data table with same "
@@ -1403,7 +1566,7 @@ msgstr ""
 "avec le même nombre de lignes que la longueur maximale de measure.vars "
 "vectors =%d"
 
-#: fmelt.c:380
+#: fmelt.c:381
 msgid ""
 "variable_table attribute of measure.vars should be either NULL or a data "
 "table"
@@ -1411,7 +1574,7 @@ msgstr ""
 "l'attribut variable_table de measure.vars doit être soit NULL, soit un "
 "tableau de données"
 
-#: fmelt.c:463
+#: fmelt.c:464
 #, c-format
 msgid ""
 "'measure.vars' [%s] are not all of the same type. By order of hierarchy, the "
@@ -1425,67 +1588,74 @@ msgstr ""
 "également converties automatiquement. Consultez DETAILS dans ?melt.data."
 "table pour en savoir plus sur la conversion automatique.\n"
 
-#: fmelt.c:575
+#: fmelt.c:576
 #, c-format
 msgid "Unknown column type '%s' for column '%s'."
 msgstr "Type de colonne inconnu '%s' pour la colonne '%s'."
 
-#: fmelt.c:685
+#: fmelt.c:600
+msgid ""
+"measure.vars is a list with length=1, which as long documented should return "
+"integer indices in the 'variable' column, but currently returns character "
+"column names. To increase consistency in the next release, we plan to change "
+"'variable' to integer, so users who were relying on this behavior should "
+"change measure.vars=list('col_name') (output variable is column name now, "
+"but will become column index/integer) to measure.vars='col_name' (variable "
+"is column name before and after the planned change)."
+msgstr ""
+
+#: fmelt.c:686
 #, c-format
 msgid "variable_table does not support column type '%s' for column '%s'."
 msgstr ""
 "variable_table ne prend pas en charge le type de colonne '%s' pour la "
 "colonne '%s'."
 
-#: fmelt.c:779
+#: fmelt.c:780
 #, c-format
 msgid "Unknown column type '%s' for column '%s' in 'data'"
 msgstr "Type de colonne inconnu '%s' pour la colonne '%s' dans 'data'"
 
-#: fmelt.c:790
+#: fmelt.c:791
 msgid "Input is not of type VECSXP, expected a data.table, data.frame or list"
 msgstr ""
 "L'entrée n'est pas de type VECSXP, un data.table, un data.frame ou une liste "
 "est attendu"
 
-#: fmelt.c:791
+#: fmelt.c:792
 msgid "Argument 'value.factor' should be logical TRUE/FALSE"
 msgstr "L'argument 'value.factor' doit être booléen TRUE/FALSE"
 
-#: fmelt.c:792
+#: fmelt.c:793
 msgid "Argument 'variable.factor' should be logical TRUE/FALSE"
 msgstr "L'argument 'variable.factor' doit être booléen TRUE/FALSE"
 
-#: fmelt.c:793
+#: fmelt.c:794
 msgid "Argument 'na.rm' should be logical TRUE/FALSE."
 msgstr "L'argument 'na.rm' doit être booléen TRUE/FALSE."
 
-#: fmelt.c:794
+#: fmelt.c:795
 msgid "Argument 'variable.name' must be a character vector"
 msgstr "L'argument 'variable.name' doit être un vecteur de caractères"
 
-#: fmelt.c:795
+#: fmelt.c:796
 msgid "Argument 'value.name' must be a character vector"
 msgstr "L'argument 'value.name' doit être un vecteur de caractères"
 
-#: fmelt.c:796
+#: fmelt.c:797
 msgid "Argument 'verbose' should be logical TRUE/FALSE"
 msgstr "L'argument 'verbose' doit être un booléen TRUE/FALSE"
 
-#: fmelt.c:800
+#: fmelt.c:801
 msgid "ncol(data) is 0. Nothing to melt. Returning original data.table."
 msgstr ""
 "ncol(data) est 0. Rien à transformer. Renvoi du tableau de données original."
 
-#: fmelt.c:805
-msgid "names(data) is NULL. Please report to data.table-help"
-msgstr "names(data) est NULL. Veuillez signaler ce problème à data.table-help"
-
-#: forder.c:111 fread.c:2587 utils.c:446
+#: forder.c:111 utils.c:460
 msgid "Internal error in"
 msgstr "Erreur interne dans"
 
-#: forder.c:111 utils.c:446
+#: forder.c:111 utils.c:460
 msgid "Please report to the data.table issues tracker."
 msgstr ""
 "Veuillez signaler l'erreur au gestionnaire de tickets (issue tracker) de "
@@ -1546,7 +1716,7 @@ msgstr "Doit être égal à 2, 1 ou 0"
 msgid "Unknown non-finite value; not NA, NaN, -Inf or +Inf"
 msgstr "Valeur inconnue (non-finie) ; pas NA, NaN, -Inf ou +Inf"
 
-#: forder.c:457
+#: forder.c:470
 msgid ""
 "Input is an atomic vector (not a list of columns) but order= is not a length "
 "1 integer"
@@ -1554,22 +1724,22 @@ msgstr ""
 "L'entrée est un vecteur atomique (pas une liste de colonnes) mais order= "
 "n'est pas un entier de longueur 1"
 
-#: forder.c:459
+#: forder.c:472
 #, c-format
 msgid "forder.c received a vector type '%s' length %d\n"
 msgstr "forder.c a reçu un vecteur de type '%s' de longueur %d\n"
 
-#: forder.c:467
+#: forder.c:480
 #, c-format
 msgid "forder.c received %d rows and %d columns\n"
 msgstr "forder.c a reçu %d lignes et %d colonnes\n"
 
-#: forder.c:477
+#: forder.c:490
 #, c-format
 msgid "'order' length (%d) is different to by='s length (%d)"
 msgstr "La longueur de 'order' (%d) est différente de la longueur de by= (%d)"
 
-#: forder.c:491
+#: forder.c:504
 #, c-format
 msgid ""
 "Column %d is length %d which differs from length of column 1 (%d), are you "
@@ -1578,39 +1748,45 @@ msgstr ""
 "La colonne %d a une longueur %d qui diffère de la longueur de la colonne 1 "
 "(%d), essayez-vous d'ordonner par une colonne de type liste ?\n"
 
-#: forder.c:495
+#: forder.c:508 forder.c:1654
 msgid "retGrp must be TRUE or FALSE"
 msgstr "retGrp doit être TRUE ou FALSE"
 
-#: forder.c:498
+#: forder.c:511 forder.c:1657
 msgid "retStats must be TRUE or FALSE"
 msgstr "retStats doit être TRUE ou FALSE"
 
-#: forder.c:503
+#: forder.c:514 forder.c:1660
+#, fuzzy
+#| msgid "retStats must be TRUE or FALSE"
+msgid "retStats must be TRUE whenever retGrp is TRUE"
+msgstr "retStats doit être TRUE ou FALSE"
+
+#: forder.c:516 forder.c:1662
 msgid "sort must be TRUE or FALSE"
 msgstr "sort doit être TRUE ou FALSE"
 
-#: forder.c:506
+#: forder.c:519
 msgid "At least one of retGrp= or sort= must be TRUE"
 msgstr "Au moins l'un des deux, retGrp= ou sort=, doit être TRUE"
 
-#: forder.c:508
+#: forder.c:521 forder.c:1665
 msgid "na.last must be logical TRUE, FALSE or NA of length 1"
 msgstr "na.last doit être un booléen TRUE, FALSE ou NA de longueur 1"
 
-#: forder.c:542 forder.c:656
+#: forder.c:555 forder.c:669
 #, c-format
 msgid "Unable to allocate %<PRIu64> bytes of working memory"
 msgstr "Impossible d'allouer %<PRIu64> octets de mémoire de travail"
 
-#: forder.c:560
+#: forder.c:573
 #, c-format
 msgid "Item %d of order (ascending/descending) is %d. Must be +1 or -1."
 msgstr ""
 "L'élément %d dans l’ordre (croissant/décroissant) est %d. Il doit être égale "
 "à +1 ou -1."
 
-#: forder.c:586
+#: forder.c:603
 #, c-format
 msgid ""
 "\n"
@@ -1624,19 +1800,14 @@ msgstr ""
 "n'est présente. Pour gagner du temps et de l'espace mémoire, il est "
 "préférable d'utiliser une date entière sur 4 octets, telle que IDate.\n"
 
-#: forder.c:602
+#: forder.c:615
 #, c-format
 msgid "Column %d passed to [f]order is type '%s', not yet supported."
 msgstr ""
 "La colonne %d transmise à '[f]order' est de type '%s', type non encore pris "
 "en charge."
 
-#: forder.c:771
-#, c-format
-msgid "nradix=%d\n"
-msgstr "nradix=%d\n"
-
-#: forder.c:780
+#: forder.c:792
 #, c-format
 msgid ""
 "Failed to allocate TMP or UGRP or they weren't cache line aligned: nth=%d"
@@ -1644,77 +1815,153 @@ msgstr ""
 "Échec de l'allocation de TMP ou UGRP ou ils n'étaient pas alignés sur la "
 "ligne de cache : nth=%d"
 
-#: forder.c:789
+#: forder.c:801
 msgid "Could not allocate (very tiny) group size thread buffers"
 msgstr ""
 "Impossible d’allouer la mémoire tampon du thread pour des (très petites) "
 "tailles de groupes"
 
-#: forder.c:857
+#: forder.c:869
 #, c-format
 msgid "Timing block %2d%s = %8.3f   %8d\n"
 msgstr "Bloc de synchronisation %2d%s = %8.3f %8d\n"
 
-#: forder.c:860
-#, c-format
-msgid "stat[%03d]==%20<PRIu64>\n"
-msgstr "stat[%03d]==%20<PRIu64>\n"
-
-#: forder.c:908 forder.c:978 forder.c:1000 forder.c:1102 forder.c:1233
-#: forder.c:1289 fread.c:2573
+#: forder.c:919 forder.c:989 forder.c:1011 forder.c:1113 forder.c:1244
+#: forder.c:1300 fread.c:2643
 #, c-format
 msgid "Failed to allocate %d bytes for '%s'."
 msgstr "Échec de l'allocation de %d octets pour '%s'."
 
-#: forder.c:1133
+#: forder.c:1144
 #, c-format
 msgid "Failed to allocate parallel counts. my_n=%d, nBatch=%d"
 msgstr "Échec de l'allocation des comptages parallèles. my_n=%d, nBatch=%d"
 
-#: forder.c:1145
+#: forder.c:1156
 #, c-format
 msgid "Failed to allocate 'my_otmp' and/or 'my_ktmp' arrays (%d bytes)."
 msgstr ""
 "Échec de l'allocation des tableaux 'my_otmp' et/ou 'my_ktmp' (%d octets)."
 
-#: forder.c:1250
+#: forder.c:1261
 #, c-format
 msgid "Unable to allocate TMP for my_n=%d items in parallel batch counting"
 msgstr ""
 "Impossible d'allouer un TMP pour my_n=%d éléments dans le comptage par lots "
 "en parallèle"
 
-#: forder.c:1365 forder.c:1416
+#: forder.c:1376 forder.c:1427
 #, c-format
 msgid "issorted 'by' [%d] out of range [1,%d]"
 msgstr "issorted 'by' [%d] en dehors de l’intervalle [1,%d]"
 
-#: forder.c:1370
+#: forder.c:1381
 msgid "is.sorted does not work on list columns"
 msgstr "is.sorted ne fonctionne pas sur les colonnes de type liste"
 
-#: forder.c:1403 forder.c:1433 forder.c:1467
+#: forder.c:1414 forder.c:1444 forder.c:1478
 #, c-format
 msgid "type '%s' is not yet supported"
 msgstr "le type '%s' n'est pas encore pris en charge"
 
-#: forder.c:1480
+#: forder.c:1491
 msgid "x must be either NULL or an integer vector"
 msgstr "x doit être NULL ou un vecteur entier"
 
-#: forder.c:1482
+#: forder.c:1493
 msgid "nrow must be integer vector length 1"
 msgstr "nrow doit être un vecteur d’entiers de longueur 1"
 
-#: forder.c:1484
+#: forder.c:1495
 #, c-format
 msgid "nrow==%d but must be >=0"
 msgstr "nrow==%d mais doit être >=0"
 
-#: forder.c:1501
+#: forder.c:1512
 msgid "x must be type 'double'"
 msgstr "x doit être de type ‘double’ (nombre à virgule flottante)"
 
+#: forder.c:1622
+#, fuzzy
+#| msgid "sort must be TRUE or FALSE"
+msgid "'datatable.use.index' option must be TRUE or FALSE"
+msgstr "sort doit être TRUE ou FALSE"
+
+#: forder.c:1635
+#, fuzzy
+#| msgid "retGrp must be TRUE or FALSE"
+msgid "'datatable.forder.auto.index' option must be TRUE or FALSE"
+msgstr "retGrp doit être TRUE ou FALSE"
+
+#: forder.c:1652
+msgid "DT is NULL"
+msgstr ""
+
+#: forder.c:1668
+#, fuzzy
+#| msgid "n must be integer"
+msgid "order must be integer"
+msgstr "n doit être un nombre entier"
+
+#: forder.c:1670
+#, fuzzy
+#| msgid "na.last must be logical TRUE, FALSE or NA of length 1"
+msgid "reuseSorting must be logical TRUE, FALSE or NA of length 1"
+msgstr "na.last doit être un booléen TRUE, FALSE ou NA de longueur 1"
+
+#: forder.c:1682
+#, c-format
+msgid ""
+"forderReuseSorting: opt not possible: is.data.table(DT)=%d, sortGroups=%d, "
+"all1(ascArg)=%d\n"
+msgstr ""
+
+#: forder.c:1701
+#, c-format
+msgid "forderReuseSorting: using key: %s\n"
+msgstr ""
+
+#: forder.c:1736
+#, c-format
+msgid "forderReuseSorting: index found but not for retGrp and retStats: %s\n"
+msgstr ""
+
+#: forder.c:1739
+#, c-format
+msgid "forderReuseSorting: index found but not for retGrp: %s\n"
+msgstr ""
+
+#: forder.c:1742
+#, c-format
+msgid "forderReuseSorting: index found but not for retStats: %s\n"
+msgstr ""
+
+#: forder.c:1749
+#, c-format
+msgid ""
+"forderReuseSorting: index found but na.last=TRUE and no stats available: %s\n"
+msgstr ""
+
+#: forder.c:1752
+#, c-format
+msgid "forderReuseSorting: index found but na.last=TRUE and NAs present: %s\n"
+msgstr ""
+
+#: forder.c:1760
+#, c-format
+msgid "forderReuseSorting: using existing index: %s\n"
+msgstr ""
+
+#: forder.c:1772
+#, c-format
+msgid "forderReuseSorting: setting index (retGrp=%d, retStats=%d) on DT: %s\n"
+msgstr ""
+
+#: forder.c:1776
+#, c-format
+msgid "forderReuseSorting: opt=%d, took %.3fs\n"
+msgstr ""
+
 #: frank.c:14 frank.c:192
 #, c-format
 msgid "Item %d of 'cols' is %d which is outside 1-based range [1,ncol(x)=%d]"
@@ -1736,32 +1983,17 @@ msgstr ""
 msgid "Unsupported column type '%s'"
 msgstr "Type de colonne non prise en charge ‘%s’"
 
-#: fread.c:154
+#: fread.c:155
 #, c-format
 msgid "System error %lu unmapping view of file\n"
 msgstr "Erreur système %lu : annulation du mappage de la vue du fichier\n"
 
-#: fread.c:157
+#: fread.c:158
 #, c-format
 msgid "System errno %d unmapping file: %s\n"
 msgstr "Erreur système %d annulation du mappage du fichier : %s\n"
 
-#: fread.c:446
-#, c-format
-msgid "Unable to allocate %s of contiguous virtual RAM. %s allocation."
-msgstr "Impossible d'allouer %s de RAM virtuelle contiguë. Allocation de %s."
-
-#: fread.c:451
-#, c-format
-msgid "Avoidable %.3f seconds. %s time to copy.\n"
-msgstr "%.3f secondes évitables. %s temps de copie.\n"
-
-#: fread.c:452
-#, c-format
-msgid "  File copy in RAM took %.3f seconds.\n"
-msgstr "  La copie du fichier dans la RAM a pris %.3f secondes.\n"
-
-#: fread.c:1283
+#: fread.c:1308
 msgid ""
 "Previous fread() session was not cleaned up properly. Cleaned up ok at the "
 "beginning of this fread() call.\n"
@@ -1769,21 +2001,21 @@ msgstr ""
 "La session fread() précédente n'a pas été nettoyée correctement. Elle a été "
 "correctement nettoyé au début de cet appel à fread().\n"
 
-#: fread.c:1286
+#: fread.c:1311
 msgid "[01] Check arguments\n"
 msgstr "[01] Vérifier les arguments\n"
 
-#: fread.c:1293
+#: fread.c:1318
 #, c-format
 msgid "  Using %d threads (omp_get_max_threads()=%d, nth=%d)\n"
 msgstr "  Utilisation de %d threads (omp_get_max_threads()=%d, nth=%d)\n"
 
-#: fread.c:1315
+#: fread.c:1340
 #, c-format
 msgid "freadMain: NAstring <<%s>> has whitespace at the beginning or end"
 msgstr "freadMain : NAstring <<%s>> contient des espaces au début ou à la fin"
 
-#: fread.c:1319
+#: fread.c:1344
 #, c-format
 msgid ""
 "freadMain: NAstring <<%s>> is recognized as type boolean, this is not "
@@ -1792,71 +2024,71 @@ msgstr ""
 "freadMain : NAstring <<%s>> est reconnu comme étant de type booléen, ce qui "
 "n'est pas autorisé."
 
-#: fread.c:1321
-#, c-format
-msgid "freadMain: NAstring <<%s>> and logical01=TRUE, this is not permitted."
+#: fread.c:1346 fread.c:1348
+#, fuzzy, c-format
+#| msgid ""
+#| "freadMain: NAstring <<%s>> and logical01=TRUE, this is not permitted."
+msgid "freadMain: NAstring <<%s>> and %s=TRUE, this is not permitted."
 msgstr "freadMain : NAstring <<%s>> et logical01=TRUE, ce n'est pas autorisé."
 
-#: fread.c:1333
+#: fread.c:1361
 msgid "  No NAstrings provided.\n"
 msgstr "  Aucun NAstrings n'est fourni.\n"
 
-#: fread.c:1335
-msgid "  NAstrings = ["
-msgstr "  NAstrings = ["
-
-#: fread.c:1338
-msgid "]\n"
-msgstr "]\n"
-
-#: fread.c:1340
+#: fread.c:1368
 msgid "  One or more of the NAstrings looks like a number.\n"
 msgstr "  Une ou plusieurs des NAstrings ressemblent à un nombre.\n"
 
-#: fread.c:1342
+#: fread.c:1370
 msgid "  None of the NAstrings look like numbers.\n"
 msgstr "  Aucun des NAstrings ne ressemble à un nombre.\n"
 
-#: fread.c:1344
+#: fread.c:1372
 #, c-format
 msgid "  skip num lines = %<PRId64>\n"
 msgstr "  saute au numéro de lignes = %<PRId64>\n"
 
-#: fread.c:1345
+#: fread.c:1373
 #, c-format
 msgid "  skip to string = <<%s>>\n"
 msgstr "  passer à la chaîne de caractères = <<%s>>\n"
 
-#: fread.c:1346
+#: fread.c:1374
 #, c-format
 msgid "  show progress = %d\n"
 msgstr "  afficher l'état d'avancement = %d\n"
 
-#: fread.c:1347
+#: fread.c:1375
 #, c-format
 msgid "  0/1 column will be read as %s\n"
 msgstr "  la colonne 0/1 sera lue comme %s\n"
 
-#: fread.c:1359
+#: fread.c:1376
+#, fuzzy, c-format
+#| msgid "  0/1 column will be read as %s\n"
+msgid "  Y/N column will be read as %s\n"
+msgstr "  la colonne 0/1 sera lue comme %s\n"
+
+#: fread.c:1388
 #, c-format
 msgid "sep == quote ('%c') is not allowed"
 msgstr "sep == quote ('%c') n'est pas autorisé"
 
-#: fread.c:1360
+#: fread.c:1389
 #, c-format
 msgid "sep == dec ('%c') is not allowed"
 msgstr "sep == dec ('%c') n'est pas autorisé"
 
-#: fread.c:1361
+#: fread.c:1390
 #, c-format
 msgid "quote == dec ('%c') is not allowed"
 msgstr "quote == dec ('%c') n'est pas autorisé"
 
-#: fread.c:1378
+#: fread.c:1407
 msgid "[02] Opening the file\n"
 msgstr "[02] Ouverture du fichier\n"
 
-#: fread.c:1381
+#: fread.c:1410
 msgid ""
 "  `input` argument is provided rather than a file name, interpreting as raw "
 "text to read\n"
@@ -1864,49 +2096,49 @@ msgstr ""
 "  l'argument ‘input’ est fourni au lieu d'un nom de fichier, ce qui est "
 "interprété comme du texte brut à lire\n"
 
-#: fread.c:1388
+#: fread.c:1417
 #, c-format
 msgid "  Opening file %s\n"
 msgstr "  Ouverture du fichier %s\n"
 
-#: fread.c:1392 fread.c:1421
+#: fread.c:1421 fread.c:1450
 #, c-format
 msgid "File not found: %s"
 msgstr "Le fichier n'a pas été trouvé : %s"
 
-#: fread.c:1396
+#: fread.c:1425
 #, c-format
 msgid "Opened file ok but couldn't obtain its size: %s"
 msgstr ""
 "Ouverture du fichier correcte mais impossibilité d'obtenir sa taille : %s"
 
-#: fread.c:1399 fread.c:1431
+#: fread.c:1428 fread.c:1460
 #, c-format
 msgid "File is empty: %s"
 msgstr "Le fichier est vide : %s"
 
-#: fread.c:1400 fread.c:1432
+#: fread.c:1429 fread.c:1461
 #, c-format
 msgid "  File opened, size = %s.\n"
 msgstr "  Fichier ouvert, taille = %s.\n"
 
-#: fread.c:1427
+#: fread.c:1456
 #, c-format
 msgid "Unable to open file after %d attempts (error %lu): %s"
 msgstr "Impossible d'ouvrir le fichier après %d tentatives (erreur %lu) : %s"
 
-#: fread.c:1429
+#: fread.c:1458
 #, c-format
 msgid "GetFileSizeEx failed (returned 0) on file: %s"
 msgstr "GetFileSizeEx a échoué (a retourné 0) sur le fichier : %s"
 
-#: fread.c:1434
+#: fread.c:1463
 #, c-format
 msgid "This is Windows, CreateFileMapping returned error %lu for file %s"
 msgstr ""
 "C'est Windows, CreateFileMapping a renvoyé l'erreur %lu pour le fichier %s"
 
-#: fread.c:1441
+#: fread.c:1470
 #, c-format
 msgid ""
 "Opened %s file ok but could not memory map it. This is a %dbit process. %s."
@@ -1914,24 +2146,24 @@ msgstr ""
 "Le fichier %s s'est ouvert correctement, mais il n'a pas été possible de le "
 "mapper avec la mémoire. Il s'agit d'un processus %dbit. %s."
 
-#: fread.c:1442
+#: fread.c:1471
 msgid "Please upgrade to 64bit"
 msgstr "Veuillez passer à la version 64 bits"
 
-#: fread.c:1442
+#: fread.c:1471
 msgid "There is probably not enough contiguous virtual memory available"
 msgstr ""
 "Il n'y a probablement pas assez de mémoire virtuelle contiguë disponible"
 
-#: fread.c:1445
+#: fread.c:1474
 msgid "  Memory mapped ok\n"
 msgstr "  Mémoire mappée ok\n"
 
-#: fread.c:1464
+#: fread.c:1493
 msgid "[03] Detect and skip BOM\n"
 msgstr "[03] Détecte et saute le BOM (indicateur d’ordre des octets)\n"
 
-#: fread.c:1468
+#: fread.c:1497
 msgid ""
 "  UTF-8 byte order mark EF BB BF found at the start of the file and "
 "skipped.\n"
@@ -1939,7 +2171,7 @@ msgstr ""
 "  UTF-8 BOM (indicateur d’ordre des octets) EF BB BF trouvé au début du "
 "fichier et ignoré.\n"
 
-#: fread.c:1473
+#: fread.c:1502
 msgid ""
 "GB-18030 encoding detected, however fread() is unable to decode it. Some "
 "character fields may be garbled.\n"
@@ -1947,7 +2179,7 @@ msgstr ""
 "L'encodage GB-18030 a été détecté, mais fread() n'est pas en mesure de le "
 "décoder. Certains champs de caractères peuvent être corrompus.\n"
 
-#: fread.c:1476
+#: fread.c:1505
 msgid ""
 "File is encoded in UTF-16, this encoding is not supported by fread(). Please "
 "recode the file to UTF-8."
@@ -1955,24 +2187,24 @@ msgstr ""
 "Le fichier est encodé en UTF-16, cet encodage n'est pas supporté par "
 "fread(). Veuillez réencoder le fichier en UTF-8."
 
-#: fread.c:1481
+#: fread.c:1510
 #, c-format
 msgid "  Last byte(s) of input found to be %s and removed.\n"
 msgstr ""
 "  Le(s) dernier(s) octet(s) de l'entrée est (sont) %s et a (ont) été "
 "supprimé(s).\n"
 
-#: fread.c:1484
+#: fread.c:1513
 msgid "Input is empty or only contains BOM or terminal control characters"
 msgstr ""
 "L'entrée est vide ou ne contient que le BOM (indicateur d’ordre des octets) "
 "ou des caractères de séquence d’échappement"
 
-#: fread.c:1491
+#: fread.c:1520
 msgid "[04] Arrange mmap to be \\0 terminated\n"
 msgstr "[04] Organiser mmap pour être terminé par \\0 \n"
 
-#: fread.c:1498
+#: fread.c:1527
 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 "
@@ -1983,7 +2215,7 @@ msgstr ""
 "produit normalement lorsqu'il n'y a pas non plus de \\r ; par exemple, une "
 "seule ligne qui n'a pas de fin de ligne.\n"
 
-#: fread.c:1499
+#: fread.c:1528
 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 "
@@ -1993,7 +2225,7 @@ msgstr ""
 "par des fins de ligne différentes (par exemple, \\n et \\r\\n mélangés dans "
 "un fichier). Cette situation est courante et idéale.\n"
 
-#: fread.c:1523
+#: fread.c:1552
 #, c-format
 msgid ""
 "  File ends abruptly with '%c'. Final end-of-line is missing. Using cow page "
@@ -2002,29 +2234,61 @@ msgstr ""
 "  Le fichier se termine brusquement par '%c'. La fin de ligne est manquante. "
 "Utilisation d'une page ‘Copy-On-Write’ pour écrire 0 sur le dernier octet.\n"
 
-#: fread.c:1529
+#: fread.c:1558
+#, fuzzy
+#| 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 "
 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 "
+"with a newline using for example 'echo >> file'"
 msgstr ""
 "Ce fichier est très inhabituel : il se termine brusquement sans nouvelle "
 "ligne finale et sa taille est un multiple de 4096 octets. Veuillez terminer "
 "correctement la dernière ligne par une nouvelle ligne en utilisant par "
 "exemple 'echo >> file’ pour éviter ce problème "
 
-#: fread.c:1530
+#: fread.c:1560
+#, fuzzy, 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"
+msgid ""
+"  File ends abruptly with '%c'. Final end-of-line is missing. Copying file "
+"in RAM. %s.\n"
+msgstr ""
+"  Le fichier se termine brusquement par '%c'. La fin de ligne est manquante. "
+"Utilisation d'une page ‘Copy-On-Write’ pour écrire 0 sur le dernier octet.\n"
+
+#: fread.c:1566 fread.c:1850
 #, c-format
-msgid "  File ends abruptly with '%c'. Copying file in RAM. %s copy.\n"
+msgid "%s. Attempt to copy file in RAM failed."
 msgstr ""
-"  Le fichier se termine brusquement par '%c'. Copie d'un fichier en RAM. %s "
-"copie.\n"
 
-#: fread.c:1564
+#: fread.c:1567 fread.c:1851
+#, fuzzy, c-format
+#| msgid "Unable to allocate %s of contiguous virtual RAM. %s allocation."
+msgid "Unable to allocate %s of contiguous virtual RAM."
+msgstr "Impossible d'allouer %s de RAM virtuelle contiguë. Allocation de %s."
+
+#: fread.c:1571 fread.c:1855
+#, c-format
+msgid "  File copy in RAM took %.3f seconds.\n"
+msgstr "  La copie du fichier dans la RAM a pris %.3f secondes.\n"
+
+#: fread.c:1573 fread.c:1857
+#, fuzzy, c-format
+#| msgid "  File copy in RAM took %.3f seconds.\n"
+msgid "Avoidable file copy in RAM took %.3f seconds. %s.\n"
+msgstr "  La copie du fichier dans la RAM a pris %.3f secondes.\n"
+
+#: fread.c:1605
 msgid "[05] Skipping initial rows if needed\n"
 msgstr "[05] Sauter les premières lignes si nécessaire\n"
 
-#: fread.c:1570
+#: fread.c:1611
 #, c-format
 msgid ""
 "skip='%s' not found in input (it is case sensitive and literal; i.e., no "
@@ -2034,7 +2298,7 @@ msgstr ""
 "littéral, c'est-à-dire qu'il n'y a pas de motifs, de caractères génériques "
 "ou d'expressions rationnelles)"
 
-#: fread.c:1576
+#: fread.c:1617
 #, c-format
 msgid ""
 "Found skip='%s' on line %<PRIu64>. Taking this to be header row or first row "
@@ -2043,17 +2307,12 @@ msgstr ""
 "A trouvé skip='%s' sur la ligne %<PRIu64>. Il s'agit de la ligne d'en-tête "
 "ou de la première ligne de données.\n"
 
-#: fread.c:1589
+#: fread.c:1631
 #, c-format
 msgid "  Skipped to line %<PRIu64> in the file"
 msgstr " A Sauté à la ligne %<PRIu64> dans le fichier"
 
-#: fread.c:1590
-#, c-format
-msgid "skip=%<PRIu64> but the input only has %<PRIu64> line%s"
-msgstr "skip=%<PRIu64> mais l'entrée ne contient que la ligne %<PRIu64>%s"
-
-#: fread.c:1599
+#: fread.c:1645
 msgid ""
 "Input is either empty, fully whitespace, or skip has been set after the last "
 "non-whitespace."
@@ -2061,47 +2320,47 @@ msgstr ""
 "L'entrée est soit vide, soit pleine d'espaces blancs, soit le saut a été "
 "activé après le dernier espace non blanc."
 
-#: fread.c:1601
+#: fread.c:1647
 #, c-format
 msgid "  Moved forward to first non-blank line (%d)\n"
 msgstr "  A avancé à la première ligne non vide (%d)\n"
 
-#: fread.c:1602
+#: fread.c:1648
 #, c-format
 msgid "  Positioned on line %d starting: <<%s>>\n"
 msgstr "  Positionné sur la ligne %d à partir de : <<%s>>\n"
 
-#: fread.c:1624
+#: fread.c:1670
 msgid "[06] Detect separator, quoting rule, and ncolumns\n"
 msgstr "[06] Détecte le séparateur, la règle des guillemets et ‘ncolumns’\n"
 
-#: fread.c:1628
+#: fread.c:1674
 msgid "  sep='\\n' passed in meaning read lines as single character column\n"
 msgstr ""
 "  sep='\\n' passé en argument, ce qui signifie que les lignes sont lues "
 "comme une seule colonne de caractères\n"
 
-#: fread.c:1647
+#: fread.c:1693
 msgid "  Detecting sep automatically ...\n"
 msgstr "  Détection automatique du séparateur ...\n"
 
-#: fread.c:1654
+#: fread.c:1700
 #, c-format
 msgid "  Using supplied sep '%s'\n"
 msgstr "  Utilisation du séparateur fourni '%s'\n"
 
-#: fread.c:1688
+#: fread.c:1734
 #, c-format
 msgid "  with %d fields using quote rule %d\n"
 msgstr "  avec des champs %d en utilisant la règle des guillemets %d\n"
 
-#: fread.c:1738
+#: fread.c:1784
 #, c-format
 msgid "  with %d lines of %d fields using quote rule %d\n"
 msgstr ""
 "  avec %d lignes de %d champs en utilisant la règle des guillemets %d\n"
 
-#: fread.c:1745
+#: fread.c:1791
 msgid ""
 "  No sep and quote rule found a block of 2x2 or greater. Single column "
 "input.\n"
@@ -2109,7 +2368,7 @@ msgstr ""
 "  Aucune règle de séparateur et de guillemets n'a été trouvée dans un bloc "
 "de taille 2 x 2 ou plus. Saisie d'une seule colonne.\n"
 
-#: fread.c:1761
+#: fread.c:1807
 msgid ""
 "Single column input contains invalid quotes. Self healing only effective "
 "when ncol>1"
@@ -2117,7 +2376,7 @@ msgstr ""
 "La saisie d'une seule colonne contient des guillemets non valides. L'auto-"
 "réparation n'est effective que lorsque ncol>1"
 
-#: fread.c:1766
+#: fread.c:1812
 #, c-format
 msgid ""
 "Found and resolved improper quoting in first %d rows. If the fields are not "
@@ -2129,7 +2388,7 @@ msgstr ""
 "séparateur de champ n'apparaît dans aucun champ), essayez quote=\"\" pour "
 "éviter cet avis."
 
-#: fread.c:1787
+#: fread.c:1833
 #, c-format
 msgid ""
 "  Detected %d columns on line %d. This line is either column names or first "
@@ -2139,31 +2398,37 @@ msgstr ""
 "colonnes, soit la première ligne des données. La ligne commence comme suit : "
 "<<%s>>\n"
 
-#: fread.c:1789
+#: fread.c:1835
 #, c-format
 msgid "  Quote rule picked = %d\n"
 msgstr "  Règle de guillemets choisie = %d\n"
 
-#: fread.c:1790
+#: fread.c:1836
 #, c-format
 msgid "  fill=%s and the most number of columns found is %d\n"
 msgstr "  fill=%s et le plus grand nombre de colonnes trouvées est %d\n"
 
-#: fread.c:1796
+#: fread.c:1842
+#, fuzzy
+#| 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."
 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."
+"of-line (representing several NA at the end), and the file size is a "
+"multiple of 4096, too"
 msgstr ""
 "Ce fichier est très inhabituel : il ne comporte qu'une seule colonne, se "
 "termine par 2 ou plusieurs fins de ligne (représentant plusieurs NA à la "
 "fin), et est également un multiple de 4096."
 
-#: fread.c:1797
+#: fread.c:1844
 #, c-format
 msgid "  Copying file in RAM. %s\n"
 msgstr "  Copie du fichier dans la RAM. %s\n"
 
-#: fread.c:1803
+#: fread.c:1861
 msgid ""
 "  1-column file ends with 2 or more end-of-line. Restoring last eol using "
 "extra byte in cow page.\n"
@@ -2172,7 +2437,7 @@ msgstr ""
 "Restauration de la dernière ligne en utilisant un octet supplémentaire dans "
 "la page ‘Copy-On-Write’.\n"
 
-#: fread.c:1822
+#: fread.c:1880
 msgid ""
 "[07] Detect column types, dec, good nrow estimate and whether first row is "
 "column names\n"
@@ -2180,78 +2445,88 @@ msgstr ""
 "[07] Détecte les types des colonnes, le séparateur dec, une bonne estimation "
 "de nrows et si la première ligne est constituée de noms de colonnes\n"
 
-#: fread.c:1823
+#: fread.c:1881
 #, c-format
 msgid "  'header' changed by user from 'auto' to %s\n"
 msgstr "  'header' changé par l'utilisateur de 'auto' à %s\n"
 
-#: fread.c:1829
+#: fread.c:1887
 #, c-format
 msgid "Failed to allocate 2 x %d bytes for type and tmpType: %s"
 msgstr "Échec de l'allocation de 2 x %d octets pour le type et tmpType : %s"
 
-#: fread.c:1834
+#: fread.c:1892
 msgid "  sep=',' so dec set to '.'\n"
 msgstr "  sep=',' donc dec est fixé à '.'\n"
 
-#: fread.c:1858
-#, c-format
-msgid "  Number of sampling jump points = %d because "
+#: fread.c:1917
+#, fuzzy, c-format
+#| msgid "  Number of sampling jump points = %d because "
+msgid ""
+"  Number of sampling jump points = %d because nrow limit (%<PRIu64>) "
+"supplied\n"
 msgstr "  Nombre de points de saut d'échantillonnage = %d car "
 
-#: fread.c:1859
-#, c-format
-msgid "nrow limit (%<PRIu64>) supplied\n"
-msgstr "limite pour nrow (%<PRIu64>) fournie\n"
-
-#: fread.c:1860
-msgid "jump0size==0\n"
-msgstr "jump0size==0\n"
+#: fread.c:1919
+#, fuzzy, c-format
+#| msgid "  Number of sampling jump points = %d because "
+msgid "  Number of sampling jump points = %d because jump0size==0\n"
+msgstr "  Nombre de points de saut d'échantillonnage = %d car "
 
-#: fread.c:1861
-#, c-format
+#: fread.c:1921
+#, fuzzy, c-format
+#| msgid ""
+#| "(%<PRIu64> bytes from row 1 to eof) / (2 * %<PRIu64> jump0size) == "
+#| "%<PRIu64>\n"
 msgid ""
-"(%<PRIu64> bytes from row 1 to eof) / (2 * %<PRIu64> jump0size) == "
-"%<PRIu64>\n"
+"  Number of sampling jump points = %d because (%<PRIu64> bytes from row 1 to "
+"eof) / (2 * %<PRIu64> jump0size) == %<PRIu64>\n"
 msgstr ""
 "(%<PRIu64> octets de la ligne 1 à eof) / (2 * %<PRIu64> jump0size) == "
 "%<PRIu64>\n"
 
-#: fread.c:1900
-#, c-format
+#: fread.c:1962
+#, fuzzy, c-format
+#| msgid ""
+#| "  A line with too-%s fields (%d/%d) was found on line %d of sample jump "
+#| "%d. %s\n"
 msgid ""
-"  A line with too-%s fields (%d/%d) was found on line %d of sample jump %d. "
+"  A line with too-few fields (%d/%d) was found on line %d of sample jump %d. "
 "%s\n"
 msgstr ""
 "  Une ligne avec trop de champs %s (%d/%d) a été trouvée sur la ligne %d du "
 "saut d'échantillon %d. %s\n"
 
-#: fread.c:1901
-msgid "few"
-msgstr "peu"
-
-#: fread.c:1901
-msgid "many"
-msgstr "beaucoup"
+#: fread.c:1963
+#, fuzzy, c-format
+#| msgid ""
+#| "  A line with too-%s fields (%d/%d) was found on line %d of sample jump "
+#| "%d. %s\n"
+msgid ""
+"  A line with too-many fields (%d/%d) was found on line %d of sample jump "
+"%d. %s\n"
+msgstr ""
+"  Une ligne avec trop de champs %s (%d/%d) a été trouvée sur la ligne %d du "
+"saut d'échantillon %d. %s\n"
 
-#: fread.c:1901
+#: fread.c:1964
 msgid ""
 "Most likely this jump landed awkwardly so type bumps here will be skipped."
 msgstr ""
 "Il est probable que ce saut soit présent par erreur, les changements de type "
 "seront donc ignorés."
 
-#: fread.c:1924 fread.c:1950
+#: fread.c:1987 fread.c:2013
 #, c-format
 msgid "  dec='%c' detected based on a balance of %d parsed fields\n"
 msgstr "  dec='%c' détecté sur la base d'un solde de %d champs analysés\n"
 
-#: fread.c:1934
+#: fread.c:1997
 #, c-format
 msgid "  Type codes (jump %03d)    : %s  Quote rule %d\n"
 msgstr "  Codes de type (saut %03d) : %s  guillemets %d\n"
 
-#: fread.c:1956
+#: fread.c:2019
 #, c-format
 msgid ""
 "  'header' determined to be true due to column %d containing a string on row "
@@ -2261,7 +2536,7 @@ msgstr ""
 "caractères à la ligne 1 et un type inférieur (%s) dans le reste des lignes "
 "de l'échantillon %<PRId64> \n"
 
-#: fread.c:1970
+#: fread.c:2033
 #, c-format
 msgid ""
 "Types in 1st data row match types in 2nd data row but previous row has %d "
@@ -2271,32 +2546,38 @@ msgstr ""
 "deuxième ligne de données, mais la ligne précédente comporte %d champs. "
 "Prendre la ligne précédente comme celle des noms de colonne."
 
-#: fread.c:1973
-#, c-format
+#: fread.c:2037
+#, fuzzy, c-format
+#| 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."
 msgid ""
 "Detected %d column names but the data has %d columns (i.e. invalid file). "
-"Added %d extra default column name%s\n"
-msgstr ""
-"A détecté %d noms de colonnes mais les données ont %d colonnes (c.-à-d. "
-"fichier invalide). Ajout de %d noms de colonnes supplémentaires par "
-"défaut%s\n"
-
-#: fread.c:1974
-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."
+"Added an extra default column name 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.\n"
 msgstr ""
 " pour la première colonne qui est supposée être un nom de ligne ou un "
 "indice. Utilisez setnames() par la suite si cette proposition n'est pas "
 "correcte, ou corrigez la commande d'écriture du fichier qui a créé le "
 "fichier afin de créer un fichier valide."
 
-#: fread.c:1974
-msgid "s at the end."
-msgstr "’s’ à la fin."
+#: fread.c:2040
+#, fuzzy, 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"
+msgid ""
+"Detected %d column names but the data has %d columns (i.e. invalid file). "
+"Added %d extra default column names at the end.\n"
+msgstr ""
+"A détecté %d noms de colonnes mais les données ont %d colonnes (c.-à-d. "
+"fichier invalide). Ajout de %d noms de colonnes supplémentaires par "
+"défaut%s\n"
 
-#: fread.c:1977
+#: fread.c:2044
 #, c-format
 msgid ""
 "Detected %d column names but the data has %d columns. Filling rows "
@@ -2306,25 +2587,36 @@ msgstr ""
 "automatique des lignes. Définir explicitement fill=TRUE pour éviter cet "
 "avis.\n"
 
-#: fread.c:1981
+#: fread.c:2048
 #, c-format
 msgid "Failed to realloc 2 x %d bytes for type and tmpType: %s"
 msgstr "Échec de la réallocation de 2 x %d octets pour type et tmpType : %s"
 
-#: fread.c:2001
-#, c-format
+#: fread.c:2069
+#, fuzzy
+#| msgid ""
+#| "  'header' determined to be %s because there are%s number fields in the "
+#| "first and only row\n"
 msgid ""
-"  'header' determined to be %s because there are%s number fields in the "
+"  'header' determined to be TRUE because there are no number fields in the "
 "first and only row\n"
 msgstr ""
 "  l'en-tête est déterminé comme étant %s parce qu'il y a des champs "
 "numériques %s dans la première et unique ligne\n"
 
-#: fread.c:2001
-msgid " no"
-msgstr " non"
+#: fread.c:2071
+#, fuzzy
+#| msgid ""
+#| "  'header' determined to be %s because there are%s number fields in the "
+#| "first and only row\n"
+msgid ""
+"  'header' determined to be FALSE because there are number fields in the "
+"first and only row\n"
+msgstr ""
+"  l'en-tête est déterminé comme étant %s parce qu'il y a des champs "
+"numériques %s dans la première et unique ligne\n"
 
-#: fread.c:2004
+#: fread.c:2074
 msgid ""
 "  'header' determined to be true because all columns are type string and a "
 "better guess is not possible\n"
@@ -2332,7 +2624,7 @@ msgstr ""
 "  'header' défini à comme TRUE parce que toutes les colonnes sont de type "
 "string et un meilleur choix n'est pas possible\n"
 
-#: fread.c:2006
+#: fread.c:2076
 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"
@@ -2340,12 +2632,12 @@ msgstr ""
 "  'header' défini à FALSE parce qu'il y a des colonnes de nombres et que ces "
 "colonnes n'ont pas de champ de type 'string' en haut de celles-ci\n"
 
-#: fread.c:2022
+#: fread.c:2092
 #, c-format
 msgid "  Type codes (first row)   : %s  Quote rule %d\n"
 msgstr "  Codes de type (première ligne) : %s Règle des guillemets %d\n"
 
-#: fread.c:2031
+#: fread.c:2101
 #, c-format
 msgid ""
 "  All rows were sampled since file is small so we know nrow=%<PRIu64> "
@@ -2354,11 +2646,7 @@ msgstr ""
 "  Toutes les lignes ont été échantillonnées car le fichier est petit et nous "
 "savons exactement que nrow=%<PRIu64> \n"
 
-#: fread.c:2043 fread.c:2050
-msgid "  =====\n"
-msgstr "  =====\n"
-
-#: fread.c:2044
+#: fread.c:2114
 #, c-format
 msgid ""
 "  Sampled %<PRIu64> rows (handled \\n inside quoted fields) at %d jump "
@@ -2367,7 +2655,7 @@ msgstr ""
 " %<PRIu64> lignes échantillonnés (traitées à l'intérieur de champs entre "
 "guillemets) aux %d points de saut \n"
 
-#: fread.c:2045
+#: fread.c:2115
 #, c-format
 msgid ""
 "  Bytes from first data row on line %d to the end of last row: %<PRIu64>\n"
@@ -2375,17 +2663,17 @@ msgstr ""
 "  Octets de la première ligne de données de la ligne %d à la fin de la "
 "dernière ligne : %<PRIu64>\n"
 
-#: fread.c:2046
+#: fread.c:2116
 #, c-format
 msgid "  Line length: mean=%.2f sd=%.2f min=%d max=%d\n"
 msgstr "  Longueur de la ligne : mean=%.2f sd=%.2f min=%d max=%d\n"
 
-#: fread.c:2047
+#: fread.c:2117
 #, c-format
 msgid "  Estimated number of rows: %<PRIu64> / %.2f = %<PRIu64>\n"
 msgstr "  Nombre estimé de lignes : %<PRIu64> / %.2f = %<PRIu64>\n"
 
-#: fread.c:2048
+#: fread.c:2118
 #, c-format
 msgid ""
 "  Initial alloc = %<PRIu64> rows (%<PRIu64> + %d%%) using bytes/"
@@ -2394,38 +2682,38 @@ msgstr ""
 "  Allocation initiale = %<PRIu64> lignes (%<PRIu64> + %d%%) en utilisant des "
 "octets/max(mean-2*sd,min), restreint à l’intervalle [1.1*estn, 2.0*estn]\n"
 
-#: fread.c:2056
+#: fread.c:2126
 #, c-format
 msgid "  Alloc limited to lower nrows=%<PRIu64> passed in.\n"
 msgstr ""
 "  Allocation limitée aux nrows inférieurs=%<PRIu64> passé en argument.\n"
 
-#: fread.c:2068
+#: fread.c:2138
 msgid "[08] Assign column names\n"
 msgstr "[08] Attribuez des noms de colonnes\n"
 
-#: fread.c:2077
+#: fread.c:2147
 #, c-format
 msgid "Unable to allocate %d*%d bytes for column name pointers: %s"
 msgstr ""
 "Impossible d'allouer %d*%d octets pour les pointeurs des noms de colonnes : "
 "%s"
 
-#: fread.c:2117
+#: fread.c:2187
 msgid "[09] Apply user overrides on column types\n"
 msgstr ""
 "[09] Appliquer les substitutions de l'utilisateur aux types de colonnes\n"
 
-#: fread.c:2121
+#: fread.c:2191
 msgid "  Cancelled by user: userOverride() returned false."
 msgstr "  Annulé par l'utilisateur : userOverride() a retourné false."
 
-#: fread.c:2132
+#: fread.c:2202
 #, c-format
 msgid "Failed to allocate %d bytes for '%s': %s"
 msgstr "Échec de l'allocation de %d octets pour '%s' : %s"
 
-#: fread.c:2139
+#: fread.c:2209
 #, c-format
 msgid ""
 "Attempt to override column %d%s%.*s%s of inherent type '%s' down to '%s' "
@@ -2437,38 +2725,33 @@ msgstr ""
 "prises en charge. Si c'est ce qui était prévu, veuillez contraindre un type "
 "inférieur par la suite."
 
-#: fread.c:2154
+#: fread.c:2224
 #, c-format
 msgid "  After %d type and %d drop user overrides : %s\n"
 msgstr ""
 "  Après %d remplacements de type et %d suppressions par l’utilisateur : %s\n"
 
-#: fread.c:2162
+#: fread.c:2232
 msgid "[10] Allocate memory for the datatable\n"
 msgstr "[10] Allouer de la mémoire pour le tableau de données\n"
 
-#: fread.c:2163
+#: fread.c:2233
 #, c-format
 msgid "  Allocating %d column slots (%d - %d dropped) with %<PRIu64> rows\n"
 msgstr ""
 "  Attribution des emplacements de colonne %d (%d - %d abandonnés) avec "
 "%<PRIu64> lignes \n"
 
-#: fread.c:2218
+#: fread.c:2288
 #, c-format
 msgid "Buffer size %<PRId64> is too large\n"
 msgstr "La taille de la mémoire tampon %<PRId64> est trop grande\n"
 
-#: fread.c:2221
+#: fread.c:2291
 msgid "[11] Read the data\n"
 msgstr "[11] Lire les données\n"
 
-#: fread.c:2224
-#, c-format
-msgid "  jumps=[%d..%d), chunk_size=%<PRIu64>, total_size=%<PRIu64>\n"
-msgstr "  jumps=[%d..%d), chunk_size=%<PRIu64>, total_size=%<PRIu64>\n"
-
-#: fread.c:2450
+#: fread.c:2520
 #, c-format
 msgid ""
 "Column %d%s%.*s%s bumped from '%s' to '%s' due to <<%.*s>> on row %<PRIu64>\n"
@@ -2476,25 +2759,28 @@ msgstr ""
 "La colonne %d%s%.*s%s a été augmentée de ‘%s’ à ‘%s’ en raison de <<%.*s>> à "
 "la ligne %<PRIu64>\n"
 
-#: fread.c:2568
+#: fread.c:2638
 #, c-format
 msgid "  Provided number of fill columns: %d but only found %d\n"
 msgstr ""
 "  Nombre de colonnes \"fill\" fournies : %d, mais je n’en ai rencontré que "
 "%d\n"
 
-#: fread.c:2569
+#: fread.c:2639
 #, c-format
 msgid "  Dropping %d overallocated columns\n"
 msgstr "  Suppression de %d colonnes surallouées\n"
 
-#: fread.c:2587
-msgid "Please report to the data.table issues tracker"
+#: fread.c:2657
+#, fuzzy, c-format
+#| msgid "Please report to the data.table issues tracker"
+msgid ""
+"Internal error in %s: %s. Please report to the data.table issues tracker"
 msgstr ""
 "Veuillez signaler l'erreur au gestionnaire de tickets (issue tracker) de "
 "data.table"
 
-#: fread.c:2594
+#: fread.c:2664
 #, c-format
 msgid ""
 "  Too few rows allocated. Allocating additional %<PRIu64> rows (now "
@@ -2504,18 +2790,18 @@ msgstr ""
 "supplémentaires (maintenant nrows=%<PRIu64>) et poursuite de la lecture à "
 "partir du saut %d\n"
 
-#: fread.c:2601
+#: fread.c:2671
 #, c-format
 msgid "  Restarting team from jump %d. nSwept==%d quoteRule==%d\n"
 msgstr ""
 "  Redémarrage de ‘team’ à partir du saut %d. nSwept==%d quoteRule==%d\n"
 
-#: fread.c:2621
+#: fread.c:2691
 #, c-format
 msgid "  %d out-of-sample type bumps: %s\n"
 msgstr " %d changement de type hors échantillon : %s\n"
 
-#: fread.c:2656
+#: fread.c:2726
 #, c-format
 msgid ""
 "Read %<PRIu64> rows x %d columns from %s file in %02d:%06.3f wall clock "
@@ -2524,25 +2810,25 @@ msgstr ""
 "Lire %<PRIu64> lignes x %d colonnes du fichier %s dans %02d:%06.3f heure de "
 "l'horloge\n"
 
-#: fread.c:2663
+#: fread.c:2733
 msgid "[12] Finalizing the datatable\n"
 msgstr "[12] Finalisation de la table de données\n"
 
-#: fread.c:2664
+#: fread.c:2734
 msgid "  Type counts:\n"
 msgstr " Comptage des types :\n"
 
-#: fread.c:2666
+#: fread.c:2736
 #, c-format
 msgid "%10d : %-9s '%c'\n"
 msgstr "%10d : %-9s '%c'\n"
 
-#: fread.c:2682
+#: fread.c:2752
 #, c-format
 msgid "Discarded single-line footer: <<%s>>"
 msgstr "Pied de page d'une seule ligne supprimé : <<%s>>"
 
-#: fread.c:2688
+#: fread.c:2758
 #, c-format
 msgid ""
 "Stopped early on line %<PRIu64>. Expected %d fields but found %d. Consider "
@@ -2556,7 +2842,7 @@ msgstr ""
 "fichier afin de détecter le nombre de champs. Première ligne non vide "
 "supprimée : <<%s>>"
 
-#: fread.c:2691
+#: fread.c:2761
 #, c-format
 msgid ""
 "Stopped early on line %<PRIu64>. Expected %d fields but found %d. Consider "
@@ -2566,7 +2852,7 @@ msgstr ""
 "Considérer fill=TRUE et comment.char=. Première ligne non vide supprimée : "
 "<<%s>"
 
-#: fread.c:2698
+#: fread.c:2768
 #, c-format
 msgid ""
 "Found and resolved improper quoting out-of-sample. First healed line "
@@ -2578,33 +2864,24 @@ msgstr ""
 "(par exemple, le séparateur de champ n'apparaît dans aucun champ), essayez "
 "quote=\"\" pour éviter cet avis."
 
-#: fread.c:2702
-msgid "=============================\n"
-msgstr "=============================\n"
-
-#: fread.c:2704
+#: fread.c:2774
 #, c-format
 msgid "%8.3fs (%3.0f%%) Memory map %.3fGB file\n"
 msgstr "%8.3fs (%3.0f%%) mappage de mémoire du fichier %.3fGo\n"
 
-#: fread.c:2705
-#, c-format
-msgid "%8.3fs (%3.0f%%) sep="
-msgstr "%8.3fs (%3.0f%%) sep="
-
-#: fread.c:2707
+#: fread.c:2777
 #, c-format
 msgid " ncol=%d and header detection\n"
 msgstr " ncol=%d et détection de l'en-tête\n"
 
-#: fread.c:2708
+#: fread.c:2778
 #, c-format
 msgid "%8.3fs (%3.0f%%) Column type detection using %<PRIu64> sample rows\n"
 msgstr ""
 "%8.3fs (%3.0f%%) Détection du type de colonne à l'aide de %<PRIu64> lignes "
 "d'échantillons\n"
 
-#: fread.c:2710
+#: fread.c:2780
 #, c-format
 msgid ""
 "%8.3fs (%3.0f%%) Allocation of %<PRIu64> rows x %d cols (%.3fGB) of which "
@@ -2613,7 +2890,7 @@ msgstr ""
 "%8.3fs (%3.0f%%) Allocation de %<PRIu64> lignes x %d colonnes (%.3fGB) dont "
 "%<PRIu64> (%3.0f%%) lignes utilisées\n"
 
-#: fread.c:2714
+#: fread.c:2784
 #, c-format
 msgid ""
 "%8.3fs (%3.0f%%) Reading %d chunks (%d swept) of %.3fMB (each chunk %d rows) "
@@ -2622,7 +2899,7 @@ msgstr ""
 "%8.3fs (%3.0f%%) Lecture de %d morceaux (%d balayés) de %.3fMo (chaque "
 "morceau comporte %d lignes) à l'aide de %d threads\n"
 
-#: fread.c:2716
+#: fread.c:2786
 #, c-format
 msgid ""
 "   + %8.3fs (%3.0f%%) Parse to row-major thread buffers (grown %d times)\n"
@@ -2630,17 +2907,17 @@ msgstr ""
 "   + %8.3fs (%3.0f%%) Analyse en mémoire tampons de threads en format 'row-"
 "major' (augmenté %d fois)\n"
 
-#: fread.c:2717
+#: fread.c:2787
 #, c-format
 msgid "   + %8.3fs (%3.0f%%) Transpose\n"
 msgstr "   + %8.3fs (%3.0f%%) Transposition\n"
 
-#: fread.c:2718
+#: fread.c:2788
 #, c-format
 msgid "   + %8.3fs (%3.0f%%) Waiting\n"
 msgstr "   + %8.3fs (%3.0f%%) Attente\n"
 
-#: fread.c:2719
+#: fread.c:2789
 #, c-format
 msgid ""
 "%8.3fs (%3.0f%%) Rereading %d columns due to out-of-sample type exceptions\n"
@@ -2648,36 +2925,31 @@ msgstr ""
 "%8.3fs (%3.0f%%) Relecture de %d colonnes en raison d'exceptions de type "
 "hors échantillon\n"
 
-#: fread.c:2721
+#: fread.c:2791
 #, c-format
 msgid "%8.3fs        Total\n"
 msgstr "%8.3fs Total\n"
 
-#: freadR.c:92
+#: freadR.c:94
 #, c-format
 msgid "freadR.c has been passed a filename: %s\n"
 msgstr "'freadR.c' a reçu pour argument un nom de fichier : %s\n"
 
-#: freadR.c:96
+#: freadR.c:98
 msgid "freadR.c has been passed the data as text input (not a filename)\n"
 msgstr ""
 "'freadR.c' a reçu pour argument les données sous forme de texte (et non pas "
 "un nom de fichier)\n"
 
-#: freadR.c:114
+#: freadR.c:116
 msgid "quote= must be a single character, blank \"\", or FALSE"
 msgstr "quote= doit être un caractère unique, un blanc \"\", ou FALSE"
 
-#: freadR.c:158
-#, c-format
-msgid "nThread(%d)<1"
-msgstr "nThread(%d)<1"
-
-#: freadR.c:166
+#: freadR.c:170
 msgid "'integer64' must be a single character string"
 msgstr "'integer64' doit être une chaîne de caractères unique"
 
-#: freadR.c:174
+#: freadR.c:178
 #, c-format
 msgid ""
 "Invalid value integer64='%s'. Must be 'integer64', 'character', 'double' or "
@@ -2686,11 +2958,11 @@ msgstr ""
 "Valeur non valide integer64='%s'. Doit être 'integer64', 'character', "
 "'double' (nombre à virgule flottante) ou 'numeric'"
 
-#: freadR.c:182
+#: freadR.c:186
 msgid "Use either select= or drop= but not both."
 msgstr "Utilisez soit select=, soit drop=, mais pas les deux."
 
-#: freadR.c:185
+#: freadR.c:189
 msgid ""
 "select= is type list for specifying types in select=, but colClasses= has "
 "been provided as well. Please remove colClasses=."
@@ -2698,7 +2970,7 @@ msgstr ""
 "select= est de type list permettant de spécifier des types dans select=, "
 "mais colClasses= a également été fourni. Veuillez supprimer colClasses=."
 
-#: freadR.c:187
+#: freadR.c:191
 msgid ""
 "select= is type list but has no names; expecting list(type1=cols1, "
 "type2=cols2, ...)"
@@ -2706,7 +2978,7 @@ msgstr ""
 "select= est de type list mais n'a pas de nom ; il est attendu "
 "list(type1=cols1, type2=cols2, ...)"
 
-#: freadR.c:194
+#: freadR.c:198
 msgid ""
 "select= is a named vector specifying the columns to select and their types, "
 "but colClasses= has been provided as well. Please remove colClasses=."
@@ -2715,31 +2987,31 @@ msgstr ""
 "types, mais colClasses= a également été fourni. Veuillez supprimer "
 "colClasses=."
 
-#: freadR.c:202 freadR.c:368
+#: freadR.c:206 freadR.c:372
 msgid "colClasses is type list but has no names"
 msgstr "colClasses est de type list mais n'a pas de nom"
 
-#: freadR.c:212
+#: freadR.c:216
 #, c-format
 msgid "encoding='%s' invalid. Must be 'unknown', 'Latin-1' or 'UTF-8'"
 msgstr "encoding='%s' invalide. Doit être 'unknown', 'Latin-1' ou 'UTF-8'"
 
-#: freadR.c:235
+#: freadR.c:239
 #, c-format
 msgid "Column name '%s' (%s) not found"
 msgstr "Nom de colonne '%s' (%s) introuvable"
 
-#: freadR.c:237
+#: freadR.c:241
 #, c-format
 msgid "%s is NA"
 msgstr "%s est NA"
 
-#: freadR.c:239
+#: freadR.c:243
 #, c-format
 msgid "%s is %d which is out of range [1,ncol=%d]"
 msgstr "%s est %d, ce qui est en dehors de l’intervalle [1,ncol=%d]"
 
-#: freadR.c:288
+#: freadR.c:292
 #, c-format
 msgid ""
 "Column name '%s' not found in column name header (case sensitive), skipping."
@@ -2747,7 +3019,7 @@ msgstr ""
 "Le nom de colonne '%s' n'a pas été trouvé dans l'en-tête du nom de colonne "
 "(sensible à la casse), il est ignoré."
 
-#: freadR.c:298
+#: freadR.c:302
 #, c-format
 msgid ""
 "Column number %d (select[%d]) is negative but should be in the range [1,"
@@ -2756,7 +3028,7 @@ msgstr ""
 "Le numéro de colonne %d (select[%d]) est négatif mais devrait être compris "
 "dans l'intervalle [1,ncol=%d]. Envisager drop= pour l'exclusion de colonnes."
 
-#: freadR.c:299
+#: freadR.c:303
 #, c-format
 msgid ""
 "select = 0 (select[%d]) has no meaning. All values of select should be in "
@@ -2765,7 +3037,7 @@ msgstr ""
 "select = 0 (select[%d]) n'a aucune signification. Toutes les valeurs de "
 "select doivent être comprises dans l'intervalle [1,ncol=%d]."
 
-#: freadR.c:300
+#: freadR.c:304
 #, c-format
 msgid ""
 "Column number %d (select[%d]) is too large for this table, which only has %d "
@@ -2774,12 +3046,12 @@ msgstr ""
 "Le numéro de colonne %d (select[%d]) est trop grand pour ce tableau, il ne "
 "comporte que %d colonnes."
 
-#: freadR.c:301
+#: freadR.c:305
 #, c-format
 msgid "Column number %d ('%s') has been selected twice by select="
 msgstr "Le numéro de colonne %d ('%s') a été sélectionné deux fois par select="
 
-#: freadR.c:324
+#: freadR.c:328
 #, c-format
 msgid ""
 "colClasses= is an unnamed vector of types, length %d, but there are %d "
@@ -2793,30 +3065,30 @@ msgstr ""
 "spécifier des types en utilisant select= au lieu de colClasses=. Voir les "
 "exemples dans ?fread."
 
-#: freadR.c:366
+#: freadR.c:370
 #, c-format
 msgid "colClasses is type '%s' but should be list or character"
 msgstr ""
 "colClasses est de type '%s' mais devrait être une liste ou un caractère"
 
-#: freadR.c:390
+#: freadR.c:394
 #, c-format
 msgid "Column name '%s' (colClasses[[%d]][%d]) not found"
 msgstr "Nom de colonne '%s' (colClasses[[%d]][%d]) introuvable"
 
-#: freadR.c:392
+#: freadR.c:396
 #, c-format
 msgid "colClasses[[%d]][%d] is NA"
 msgstr "colClasses[[%d]][%d] est NA"
 
-#: freadR.c:396
+#: freadR.c:400
 #, c-format
 msgid "Column number %d (colClasses[[%d]][%d]) is out of range [1,ncol=%d]"
 msgstr ""
 "Le numéro de colonne %d (colClasses[[%d]][%d]) est en dehors de l’intervalle "
 "[1,ncol=%d]"
 
-#: freadR.c:400
+#: freadR.c:404
 #, c-format
 msgid ""
 "Column %d ('%s') appears more than once in colClasses. The second time is "
@@ -2825,41 +3097,36 @@ msgstr ""
 "La colonne %d ('%s') apparaît plusieurs fois dans colClasses. La deuxième "
 "fois est colClasses[[%d]][%d]."
 
-#: freadR.c:640
+#: freadR.c:646
 #, c-format
 msgid "Field size is 1 but the field is of type %d\n"
 msgstr "La taille du champ est de 1 mais le champ est de type %d\n"
 
-#: freadR.c:717 utils.c:387
-#, c-format
-msgid "%s"
-msgstr "%s"
-
-#: froll.c:14 froll.c:223 froll.c:407
+#: froll.c:23 froll.c:232 froll.c:416
 #, c-format
 msgid "%s: window width longer than input vector, returning all NA vector\n"
 msgstr ""
 "%s : la largeur de la fenêtre est supérieure au vecteur d'entrée, ce qui "
 "renvoie tout le vecteur en NA\n"
 
-#: froll.c:32 froll.c:240 froll.c:456
+#: froll.c:41 froll.c:249 froll.c:465
 #, c-format
 msgid "%s: align %d, shift answer by %d\n"
 msgstr "%s : aligner %d, décaler la réponse de %d\n"
 
-#: froll.c:39 froll.c:247 frolladaptive.c:19 frolladaptive.c:214
+#: froll.c:48 froll.c:256 frolladaptive.c:19 frolladaptive.c:214
 #, c-format
 msgid "%s: processing algo %u took %.3fs\n"
 msgstr "%s : le traitement de l'algo %u a pris %.3fs\n"
 
-#: froll.c:48 froll.c:251
+#: froll.c:57 froll.c:260
 #, c-format
 msgid "%s: running for input length %<PRIu64>, window %d, hasna %d, narm %d\n"
 msgstr ""
 "%s: exécution pour la longueur de l'entrée %<PRIu64>, window %d, hasna %d, "
 "narm %d\n"
 
-#: froll.c:68 froll.c:78 froll.c:169 froll.c:271 froll.c:281 froll.c:362
+#: froll.c:77 froll.c:87 froll.c:178 froll.c:280 froll.c:290 froll.c:371
 #: frolladaptive.c:58 frolladaptive.c:147 frolladaptive.c:247
 #: frolladaptive.c:326
 #, c-format
@@ -2871,7 +3138,7 @@ msgstr ""
 "sont présentes dans l'entrée, utiliser la valeur par défaut hasNA=NA pour "
 "éviter cet avis"
 
-#: froll.c:71 froll.c:173 froll.c:274 froll.c:366 frolladaptive.c:61
+#: froll.c:80 froll.c:182 froll.c:283 froll.c:375 frolladaptive.c:61
 #: frolladaptive.c:151 frolladaptive.c:250 frolladaptive.c:330
 #, c-format
 msgid ""
@@ -2881,7 +3148,7 @@ msgstr ""
 "%s : Des NA (ou autre(s) valeur(s) non finie(s)) sont présentes dans "
 "l'entrée, ré-exécution avec une attention particulière pour les NA\n"
 
-#: froll.c:81 froll.c:284
+#: froll.c:90 froll.c:293
 #, c-format
 msgid ""
 "%s: NA (or other non-finite) value(s) are present in input, skip non-NA "
@@ -2891,7 +3158,7 @@ msgstr ""
 "l'entrée, ignorer la tentative sans NA et exécuter avec une attention "
 "particulière pour les NA\n"
 
-#: froll.c:137 froll.c:335
+#: froll.c:146 froll.c:344
 #, c-format
 msgid ""
 "%s: running in parallel for input length %<PRIu64>, window %d, hasna %d, "
@@ -2900,7 +3167,7 @@ msgstr ""
 "%s: exécution en parallèle pour une longueur d'entrée %<PRIu64>, window %d, "
 "hasna %d, narm %d\n"
 
-#: froll.c:175 froll.c:368 frolladaptive.c:153 frolladaptive.c:332
+#: froll.c:184 froll.c:377 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 "
@@ -2910,12 +3177,12 @@ msgstr ""
 "l'entrée, na.rm était FALSE donc dans l'implémentation ‘exacte’ les NA ont "
 "déjà été traités, pas besoin de ré-exécuter\n"
 
-#: froll.c:424
+#: froll.c:433
 #, c-format
 msgid "%s: results from provided FUN are not length 1"
 msgstr "%s : les résultats de FUN obtenus ne sont pas de longueur 1"
 
-#: froll.c:431
+#: froll.c:440
 #, c-format
 msgid ""
 "%s: results from provided FUN are not of type double, coercion from integer "
@@ -2925,14 +3192,14 @@ msgstr ""
 "virgule flottante), un forçage pour les types entier et booléen sera "
 "appliquée à chaque itération\n"
 
-#: froll.c:434
+#: froll.c:443
 #, c-format
 msgid "%s: results from provided FUN are not of type double"
 msgstr ""
 "%s : les résultats de FUN obtenus ne sont pas de type ‘double’ (nombre à "
 "virgule flottante)"
 
-#: froll.c:463 nafill.c:87
+#: froll.c:472 nafill.c:43 nafill.c:65 nafill.c:87
 #, c-format
 msgid "%s: took %.3fs\n"
 msgstr "%s : a pris %.3fs\n"
@@ -2985,7 +3252,7 @@ msgstr ""
 "l'utilisation de adaptative TRUE et d'un argument align différent de ‘right’ "
 "n'est pas implémentée"
 
-#: frollR.c:117 frollR.c:267 types.c:64
+#: frollR.c:117 frollR.c:267
 #, c-format
 msgid "%s: allocating memory for results %dx%d\n"
 msgstr "%s : allocation de mémoire pour les résultats %dx%d\n"
@@ -3010,7 +3277,7 @@ msgstr ""
 "la longueur du (des) vecteur(s) d’entier(s) fourni(s) sous forme de liste à "
 "l'argument ’n’ doit être égale au nombre d'observations fourni dans 'x'"
 
-#: frollR.c:146 frollR.c:259 gsumm.c:1198 shift.c:21
+#: frollR.c:146 frollR.c:259 gsumm.c:1203 shift.c:21
 msgid "fill must be a vector of length 1"
 msgstr "fill doit être un vecteur de longueur 1"
 
@@ -3066,36 +3333,32 @@ msgstr ""
 "%s: exécution en parallèle pour la longueur de l'entrée %<PRIu64>, hasna %d, "
 "narm %d\n"
 
+#: fsort.c:106
+#, fuzzy
+#| msgid "%zu by excluding 0 and 1 counts\n"
+msgid "Reduced MSBsize from %zu to %zu by excluding 0 and 1 counts\n"
+msgstr "%zu en excluant les comptages pour 0 et 1\n"
+
 # Doit-t-on traduire le currently, le test est isNumeric(x)
-#: fsort.c:107
+#: fsort.c:121
 msgid "x must be a vector of type double currently"
 msgstr "x doit être un vecteur de type 'double' (nombre à virgule flottante)"
 
-#: fsort.c:118
-#, c-format
-msgid "nth=%d, nBatch=%d\n"
-msgstr "nth=%d, nBatch=%d\n"
-
-#: fsort.c:132
+#: fsort.c:147
 #, c-format
 msgid "Failed to allocate %d bytes in fsort()."
 msgstr "Échec de l'allocation de %d octets dans fsort()."
 
-#: fsort.c:158
+#: fsort.c:173
 #, c-format
 msgid "Range = [%g,%g]\n"
 msgstr "Intervalle = [%g,%g]\n"
 
-#: fsort.c:159
+#: fsort.c:174
 msgid "Cannot yet handle negatives."
 msgstr "Ne peux pas encore gérer les valeurs négatives."
 
-#: fsort.c:174
-#, c-format
-msgid "maxBit=%d; MSBNbits=%d; shift=%d; MSBsize=%zu\n"
-msgstr "maxBit=%d ; MSBNbits=%d ; shift=%d ; MSBsize=%zu\n"
-
-#: fsort.c:180
+#: fsort.c:196
 #, c-format
 msgid ""
 "counts is %dMB (%d pages per nBatch=%d, batchSize=%<PRIu64>, "
@@ -3104,24 +3367,16 @@ msgstr ""
 "le comptage est %dMB (%d pages par nBatch=%d, batchSize=%<PRIu64>, "
 "lastBatchSize=%<PRIu64>)\n"
 
-#: fsort.c:250
+#: fsort.c:266
 msgid "Top 20 MSB counts: "
 msgstr "Top 20 des bits de poids fort (MSB) : "
 
-#: fsort.c:250
+#: fsort.c:266
 #, c-format
 msgid "%<PRId64> "
 msgstr "%<PRId64> "
 
-#: fsort.c:251
-msgid "Reduced MSBsize from %zu to "
-msgstr "Réduction de MSBsize de %zu à "
-
-#: fsort.c:255
-msgid "%zu by excluding 0 and 1 counts\n"
-msgstr "%zu en excluant les comptages pour 0 et 1\n"
-
-#: fsort.c:321
+#: fsort.c:333
 #, c-format
 msgid ""
 "OpenMP %d did not assign threads to iterations monotonically. Please search "
@@ -3130,21 +3385,27 @@ msgstr ""
 "OpenMP %d n'a pas assigné les threads aux itérations de manière monotone. "
 "Veuillez rechercher ce message sur Stack Overflow."
 
-#: fsort.c:323
+#: fsort.c:335
 msgid "Unable to allocate working memory"
 msgstr "Impossible d'allouer de la mémoire de travail"
 
-#: fsort.c:333
+#: fsort.c:345
 #, c-format
 msgid "%d: %.3f (%4.1f%%)\n"
 msgstr "%d : %.3f (%4.1f%%)\n"
 
-#: fwrite.c:612
-#, c-format
-msgid "buffMB=%d outside [1,1024]"
-msgstr "buffMB=%d hors limites [1,1024]"
+#: fwrite.c:625
+msgid ""
+"Compression in fwrite uses zlib library. Its header files were not found at "
+"the time data.table was compiled. To enable fwrite compression, please "
+"reinstall data.table and study the output for further guidance."
+msgstr ""
+"La compression dans fwrite utilise la bibliothèque zlib. Ses fichiers d'en-"
+"tête n'ont pas été trouvés au moment de la compilation de data.table. Pour "
+"activer la compression de fwrite, veuillez réinstaller data.table et étudier "
+"la sortie console pour plus d'informations."
 
-#: fwrite.c:619
+#: fwrite.c:641
 #, c-format
 msgid ""
 "eol must be 1 or more bytes (usually either \\n or \\r\\n) but is length %d"
@@ -3152,36 +3413,24 @@ msgstr ""
 "eol doit être de taille 1 ou plusieurs octets (généralement \\n ou \\r\\n) "
 "mais est de longueur %d"
 
-#: fwrite.c:622
+#: fwrite.c:644
 msgid "Column writers: "
 msgstr "Créateur de colonne : "
 
-#: fwrite.c:624 fwrite.c:626 fwrite.c:628
-#, c-format
-msgid "%d "
-msgstr "%d "
-
-#: fwrite.c:627
-msgid "... "
-msgstr "... "
-
-#: fwrite.c:630
-#, c-format
-msgid ""
-"\n"
-"args.doRowNames=%d args.rowNames=%p args.rowNameFun=%d doQuote=%d args."
-"nrow=%<PRId64> args.ncol=%d eolLen=%d\n"
+#: fwrite.c:690
+#, fuzzy, c-format
+#| msgid "Internal error: type %d has no max length method implemented"
+msgid "type %d has no max length method implemented"
 msgstr ""
-"\n"
-"args.doRowNames=%d args.rowNames=%p args.rowNameFun=%d doQuote=%d args."
-"nrow=%<PRId64> args.ncol=%d eolLen=%d\n"
+"Erreur interne : le type %d n'a pas de méthode implémentée pour calculer la "
+"taille maximale"
 
-#: fwrite.c:672
+#: fwrite.c:702
 #, c-format
 msgid "maxLineLen=%<PRIu64>. Found in %.3fs\n"
 msgstr "maxLineLen=%<PRIu64>. Trouvé dans %.3fs\n"
 
-#: fwrite.c:692
+#: fwrite.c:721
 #, c-format
 msgid ""
 "%s: '%s'. Failed to open existing file for writing. Do you have write "
@@ -3192,7 +3441,7 @@ msgstr ""
 "l'autorisation d'écrire dans ce fichier ? Êtes-vous sur Windows et un autre "
 "processus tel qu'Excel l'a-t-il ouvert ?"
 
-#: fwrite.c:693
+#: fwrite.c:722
 #, c-format
 msgid ""
 "%s: '%s'. Unable to create new file for writing (it does not exist already). "
@@ -3203,107 +3452,121 @@ msgstr ""
 "n'existe pas déjà). Avez-vous la permission d'écrire dans le fichier, y a-t-"
 "il de l'espace sur le disque et le chemin d'accès existe-t-il ?"
 
-#: fwrite.c:700
+#: fwrite.c:730
+#, fuzzy, c-format
+#| msgid "Writing bom (%s), yaml (%d characters) and column names (%s) ... "
+msgid "Writing bom (%s), yaml (%d characters) and column names (%s)\n"
+msgstr ""
+"Écriture de BOM (indicateur d’ordre des octets) (%s), yaml (%d caractères) "
+"et noms de colonnes (%s) ... "
+
+#: fwrite.c:782
+#, fuzzy, c-format
+#| msgid ""
+#| "Writing %<PRId64> rows in %d batches of %d rows (each buffer size %dMB, "
+#| "showProgress=%d, nth=%d)\n"
 msgid ""
-"Compression in fwrite uses zlib library. Its header files were not found at "
-"the time data.table was compiled. To enable fwrite compression, please "
-"reinstall data.table and study the output for further guidance."
+"Writing %<PRId64> rows in %d batches of %d rows, each buffer size %zu bytes "
+"(%zu MiB), showProgress=%d, nth=%d\n"
 msgstr ""
-"La compression dans fwrite utilise la bibliothèque zlib. Ses fichiers d'en-"
-"tête n'ont pas été trouvés au moment de la compilation de data.table. Pour "
-"activer la compression de fwrite, veuillez réinstaller data.table et étudier "
-"la sortie console pour plus d'informations."
+"Écriture de %<PRId64> lignes en %d lots de %d lignes (taille de chaque "
+"tampon %d Mo, showProgress=%d, nth=%d)\n"
 
-#: fwrite.c:705
-#, c-format
-msgid "Writing bom (%s), yaml (%d characters) and column names (%s) ... "
+#: fwrite.c:790
+msgid "Allocate %zu bytes (%zu MiB) for buffPool\n"
 msgstr ""
-"Écriture de BOM (indicateur d’ordre des octets) (%s), yaml (%d caractères) "
-"et noms de colonnes (%s) ... "
 
-#: fwrite.c:719
+#: fwrite.c:794
 #, c-format
-msgid "Unable to allocate %zu MiB for header: %s"
-msgstr "Impossible d'allouer %zu mébioctets (MiB) pour l'en-tête : %s"
+msgid ""
+"Unable to allocate %zu MB * %d thread buffers; '%d: %s'. Please read ?fwrite "
+"for nThread, buffMB and verbose options."
+msgstr ""
+"Impossible d'allouer %zu Mo * %d pour la mémoire tampon des threads; '%d : "
+"%s'. Veuillez lire ?fwrite pour les options nThread, buffMB et verbose."
 
-#: fwrite.c:753 fwrite.c:817
-msgid "Can't allocate gzip stream structure"
+#: fwrite.c:810
+#, fuzzy
+#| msgid "Can't allocate gzip stream structure"
+msgid "Can't init stream structure for deflateBound"
 msgstr "Impossible d'allouer une structure de flux gzip"
 
-#: fwrite.c:761
+#: fwrite.c:815
+#, c-format
+msgid "zbuffSize=%d returned from deflateBound\n"
+msgstr "zbuffSize=%d renvoyé par deflateBound\n"
+
+#: fwrite.c:821
+msgid "Allocate %zu bytes (%zu MiB) for zbuffPool\n"
+msgstr ""
+
+#: fwrite.c:828
+#, fuzzy, c-format
+#| msgid ""
+#| "Unable to allocate %zu MB * %d thread compressed buffers; '%d: %s'. "
+#| "Please read ?fwrite for nThread, buffMB and verbose options."
+msgid ""
+"Unable to allocate %zu MiB * %d thread compressed buffers; '%d: %s'. Please "
+"read ?fwrite for nThread, buffMB and verbose options."
+msgstr ""
+"Impossible d'allouer %zu Mo * %d pour la mémoire tampon compressée des "
+"threads; '%d : %s'. Veuillez lire ?fwrite pour les options nThread, buffMB "
+"et verbose."
+
+#: fwrite.c:909
 #, c-format
-msgid "Unable to allocate %zu MiB for zbuffer: %s"
+msgid "Failed to write gzip header. Write returned %d"
 msgstr ""
-"Impossible d'allouer %zu mébioctets (MiB) pour la mémoire tampon de zlib "
-"(zbuffer) : %s"
 
-#: fwrite.c:777
+#: fwrite.c:910
 #, c-format
-msgid "Compress gzip error: %d"
-msgstr "Erreur de compression gzip : %d"
+msgid "Failed to compress gzip. compressbuff() returned %d"
+msgstr ""
 
-#: fwrite.c:778 fwrite.c:786
+#: fwrite.c:911 fwrite.c:928
 #, c-format
 msgid "%s: '%s'"
 msgstr "%s : '%s'"
 
-#: fwrite.c:783
-#, c-format
-msgid "done in %.3fs\n"
+#: fwrite.c:917
+#, fuzzy, c-format
+#| msgid "done in %.3fs\n"
+msgid "Initialization done in %.3fs\n"
 msgstr "fait en %.3fs\n"
 
-#: fwrite.c:785
+#: fwrite.c:922
 msgid "No data rows present (nrow==0)\n"
 msgstr "Aucune ligne de données présente\n"
 
-#: fwrite.c:803
-#, c-format
-msgid ""
-"Writing %<PRId64> rows in %d batches of %d rows (each buffer size %dMB, "
-"showProgress=%d, nth=%d)\n"
+#: fwrite.c:1096
+msgid "Failed to write gzip trailer"
 msgstr ""
-"Écriture de %<PRId64> lignes en %d lots de %d lignes (taille de chaque "
-"tampon %d Mo, showProgress=%d, nth=%d)\n"
-
-#: fwrite.c:819
-#, c-format
-msgid "zbuffSize=%d returned from deflateBound\n"
-msgstr "zbuffSize=%d renvoyé par deflateBound\n"
 
-#: fwrite.c:828
+#: fwrite.c:1115
 #, c-format
 msgid ""
-"Unable to allocate %zu MB * %d thread buffers; '%d: %s'. Please read ?fwrite "
-"for nThread, buffMB and verbose options."
+"zlib: uncompressed length=%zu (%zu MiB), compressed length=%zu (%zu MiB), "
+"ratio=%.1f%%, crc=%x\n"
 msgstr ""
-"Impossible d'allouer %zu Mo * %d pour la mémoire tampon des threads; '%d : "
-"%s'. Veuillez lire ?fwrite pour les options nThread, buffMB et verbose."
 
-#: fwrite.c:839
+#: fwrite.c:1119
 #, c-format
 msgid ""
-"Unable to allocate %zu MB * %d thread compressed buffers; '%d: %s'. Please "
-"read ?fwrite for nThread, buffMB and verbose options."
+"Written %<PRId64> rows in %.3f secs using %d thread%s. MaxBuffUsed=%d%%\n"
 msgstr ""
-"Impossible d'allouer %zu Mo * %d pour la mémoire tampon compressée des "
-"threads; '%d : %s'. Veuillez lire ?fwrite pour les options nThread, buffMB "
-"et verbose."
-
-#: fwrite.c:853
-#, c-format
-msgid "Failed to allocated %d bytes for '%s'."
-msgstr "Échec de l'allocation de %d octets pour ‘%s’."
 
-#: fwrite.c:1019
-#, c-format
+#: fwrite.c:1133
+#, fuzzy, c-format
+#| msgid ""
+#| "zlib %s (zlib.h %s) deflate() returned error %d with z_stream-"
+#| ">msg==\"%s\" Z_FINISH=%d Z_BLOCK=%d. %s"
 msgid ""
-"zlib %s (zlib.h %s) deflate() returned error %d with z_stream->msg==\"%s\" "
-"Z_FINISH=%d Z_BLOCK=%d. %s"
+"zlib %s (zlib.h %s) deflate() returned error %d Z_FINISH=%d Z_BLOCK=%d. %s"
 msgstr ""
 "zlib %s (zlib.h %s) deflate() renvoie l'erreur %d avec z_stream->msg==\"%s\" "
 "Z_FINISH=%d Z_BLOCK=%d. %s"
 
-#: fwrite.c:1021
+#: fwrite.c:1135
 msgid ""
 "Please include the full output above and below this message in your data."
 "table bug report."
@@ -3311,7 +3574,7 @@ msgstr ""
 "Veuillez inclure la sortie complète au-dessus et au-dessous de ce message "
 "dans votre rapport de bogue data.table."
 
-#: fwrite.c:1022
+#: fwrite.c:1136
 msgid ""
 "Please retry fwrite() with verbose=TRUE and include the full output with "
 "your data.table bug report."
@@ -3331,18 +3594,18 @@ msgstr ""
 "éléments qui sont des vecteurs atomiques de type booléen, entier, integer64, "
 "double, complexe et caractère."
 
-#: fwriteR.c:176
+#: fwriteR.c:177
 msgid ""
 "fwrite must be passed an object of type list; e.g. data.frame, data.table"
 msgstr ""
 "'fwrite' doit recevoir un objet de type liste ; par exemple data.frame, data."
 "table"
 
-#: fwriteR.c:186
+#: fwriteR.c:188
 msgid "fwrite was passed an empty list of no columns. Nothing to write."
 msgstr "'fwrite' a reçu une liste vide sans colonnes. Rien à écrire."
 
-#: fwriteR.c:240
+#: fwriteR.c:242
 #, c-format
 msgid ""
 "Column %d's length (%d) is not the same as column 1's length (%<PRId64>)"
@@ -3350,12 +3613,12 @@ msgstr ""
 "La longueur de la colonne %d(%d) n'est pas la même que celle de la colonne 1 "
 "(%<PRId64>)"
 
-#: fwriteR.c:244
+#: fwriteR.c:246
 #, c-format
 msgid "Column %d's type is '%s' - not yet implemented in fwrite."
 msgstr "Le type de la colonne %d est '%s' - pas encore implémenté dans fwrite."
 
-#: fwriteR.c:267
+#: fwriteR.c:269
 #, c-format
 msgid ""
 "input has specific integer rownames but their length (%lld) != nrow "
@@ -3364,7 +3627,7 @@ msgstr ""
 "l'entrée a des entiers comme noms de lignes mais leur longueur (%lld) != "
 "nrow (%<PRId64>)"
 
-#: fwriteR.c:282
+#: fwriteR.c:284
 msgid ""
 "No list columns are present. Setting sep2='' otherwise quote='auto' would "
 "quote fields containing sep2.\n"
@@ -3372,7 +3635,7 @@ msgstr ""
 "Aucune colonne de type liste n'est présente. Si l'on définit sep2='' ou "
 "quote='auto', les champs contenant sep2 seront mis entre guillemets.\n"
 
-#: fwriteR.c:286
+#: fwriteR.c:288
 #, c-format
 msgid ""
 "If quote='auto', fields will be quoted if the field contains either sep "
@@ -3382,7 +3645,7 @@ msgstr ""
 "soit sep ('%c') soit sep2 ('%c') parce que la colonne %d est une colonne de "
 "type liste.\n"
 
-#: fwriteR.c:290
+#: fwriteR.c:292
 #, c-format
 msgid ""
 "sep ('%c'), sep2 ('%c') and dec ('%c') must all be different. Column %d is a "
@@ -3391,78 +3654,70 @@ msgstr ""
 "sep ('%c'), sep2 ('%c') et dec ('%c') doivent tous être différents. La "
 "colonne %d est une colonne de type liste."
 
-#: gsumm.c:45 gsumm.c:46 gsumm.c:47
+#: gsumm.c:50 gsumm.c:51 gsumm.c:52
 #, c-format
 msgid "%s is not an integer vector"
 msgstr "%s n'est pas un vecteur entier"
 
-#: gsumm.c:56
+#: gsumm.c:61
 msgid "irowsArg is neither an integer vector nor NULL"
 msgstr "irowsArg n'est ni un vecteur d'entiers ni NULL"
 
-#: gsumm.c:58
-#, c-format
-msgid "length(f)=%d != length(l)=%d"
-msgstr "length(f)=%d != length(l)=%d"
-
-#: gsumm.c:66
+#: gsumm.c:72
 #, c-format
 msgid "o has length %d but sum(l)=%d"
 msgstr "o a la longueur %d mais sum(l)=%d"
 
-#: gsumm.c:98
+#: gsumm.c:104
 #, c-format
 msgid "gforce initial population of grp took %.3f\n"
 msgstr "la population initiale de grp dans gforce a pris %.3f\n"
 
-#: gsumm.c:118
+#: gsumm.c:124
 msgid "Failed to allocate counts or TMP when assigning g in gforce"
 msgstr ""
 "Échec de l'allocation de comptages ou de TMP lors de l'affectation de g dans "
 "gforce"
 
-#: gsumm.c:197
+#: gsumm.c:203
 #, c-format
 msgid "gforce assign high and low took %.3f\n"
 msgstr "l'assignation de high et low dans a pris %.3f\n"
 
-#: gsumm.c:203
+#: gsumm.c:209
 #, c-format
 msgid "gforce eval took %.3f\n"
 msgstr "l'évaluation de gforce a pris %.3f\n"
 
-#: gsumm.c:219
-msgid "gather took ... "
-msgstr "gather a pris ... "
-
-#: gsumm.c:337
+#: gsumm.c:342
 #, c-format
 msgid "gather implemented for INTSXP, REALSXP, and CPLXSXP but not '%s'"
 msgstr ""
 "gather mis en œuvre pour INTSXP, REALSXP et CPLXSXP, mais pas pour '%s'"
 
-#: gsumm.c:339 gsumm.c:572 gsumm.c:720
-#, c-format
-msgid "%.3fs\n"
-msgstr "%.3fs\n"
+#: gsumm.c:344
+#, fuzzy, c-format
+#| msgid "gather took ... "
+msgid "gather took %.3fs\n"
+msgstr "gather a pris ... "
 
-#: gsumm.c:349 gsumm.c:580 gsumm.c:731 gsumm.c:868 gsumm.c:1023 gsumm.c:1117
+#: gsumm.c:354 gsumm.c:585 gsumm.c:736 gsumm.c:873 gsumm.c:1028 gsumm.c:1122
 #, c-format
 msgid "%s is not meaningful for factors."
 msgstr "%s n'a pas de sens pour les facteurs."
 
-#: gsumm.c:353
+#: gsumm.c:358
 #, c-format
 msgid "This gsum (narm=%s) took ... "
 msgstr "Ce gsum (narm=%s) a pris ... "
 
-#: gsumm.c:354 gsumm.c:588 gsumm.c:736 gsumm.c:871 gsumm.c:923 gsumm.c:1025
-#: gsumm.c:1121
+#: gsumm.c:359 gsumm.c:593 gsumm.c:741 gsumm.c:876 gsumm.c:928 gsumm.c:1030
+#: gsumm.c:1126
 #, c-format
 msgid "nrow [%d] != length(x) [%d] in %s"
 msgstr "nrow [%d] != length(x) [%d] in %s"
 
-#: gsumm.c:408
+#: gsumm.c:413
 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 "
@@ -3472,7 +3727,7 @@ msgstr ""
 "type 'integer', donc le résultat a été automatiquement converti en 'numeric' "
 "pour plus de commodité."
 
-#: gsumm.c:569 gsumm.c:843 gsumm.c:909 gsumm.c:1094 gsumm.c:1166
+#: gsumm.c:574 gsumm.c:848 gsumm.c:914 gsumm.c:1099 gsumm.c:1171
 #, c-format
 msgid ""
 "Type '%s' is not supported by GForce %s. Either add the prefix %s or turn "
@@ -3482,19 +3737,24 @@ msgstr ""
 "désactivez l'optimisation de GForce en utilisant options(datatable."
 "optimize=1)"
 
-#: gsumm.c:587
+#: gsumm.c:577 gsumm.c:725
+#, c-format
+msgid "%.3fs\n"
+msgstr "%.3fs\n"
+
+#: gsumm.c:592
 #, c-format
 msgid "This gmean took (narm=%s) ... "
 msgstr "Ce gmean a pris (narm=%s) ... "
 
-#: gsumm.c:625 gsumm.c:681
+#: gsumm.c:630 gsumm.c:686
 #, c-format
 msgid "Unable to allocate %d * %zu bytes for non-NA counts in gmean na.rm=TRUE"
 msgstr ""
 "Impossible d'allouer %d * %zu octets pour les comptages non NA dans gmean na."
 "rm=TRUE"
 
-#: gsumm.c:717
+#: gsumm.c:722
 #, c-format
 msgid ""
 "Type '%s' not supported by GForce mean (gmean). Either add the prefix base::"
@@ -3504,7 +3764,7 @@ msgstr ""
 "base::mean(.) ou désactivez l'optimisation de GForce en utilisant "
 "options(datatable.optimize=1)"
 
-#: gsumm.c:729
+#: gsumm.c:734
 msgid ""
 "GForce min/max can only be applied to columns, not .SD or similar. To find "
 "min/max of all items in a list such as .SD, either add the prefix base::min(."
@@ -3517,11 +3777,11 @@ msgstr ""
 "GForce en utilisant options(datatable.optimize=1). Il est plus probable que "
 "vous recherchiez 'DT[,lapply(.SD,min),by=,.SDcols=]'"
 
-#: gsumm.c:840
+#: gsumm.c:845
 msgid "Type 'complex' has no well-defined min/max"
 msgstr "Le type 'complexe' n'a pas de valeur min/max bien définie"
 
-#: gsumm.c:866
+#: gsumm.c:871
 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::"
@@ -3535,7 +3795,7 @@ msgstr ""
 "GForce en utilisant options(datatable.optimize=1). Il est plus probable que "
 "vous recherchiez 'DT[,lapply(.SD,median),by=,.SDcols=]'"
 
-#: gsumm.c:983
+#: gsumm.c:988
 #, c-format
 msgid ""
 "Type '%s' is not supported by GForce head/tail/first/last/`[`. Either add "
@@ -3547,7 +3807,7 @@ msgstr ""
 "soit vous désactivez l'optimisation de GForce en utilisant options(datatable."
 "optimize=1)"
 
-#: gsumm.c:1021
+#: gsumm.c:1026
 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 "
@@ -3564,7 +3824,7 @@ msgstr ""
 "diagonaux, 'DT[,lapply(.SD,var),by=,.SDcols=]' est la manière optimisée de "
 "procéder."
 
-#: gsumm.c:1115
+#: gsumm.c:1120
 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 "
@@ -3577,17 +3837,17 @@ msgstr ""
 "utilisant options(datatable.optimize=1). Il est plus probable que vous "
 "recherchiez 'DT[,lapply(.SD,prod),by=,.SDcols=]'"
 
-#: gsumm.c:1124
+#: gsumm.c:1129
 #, c-format
 msgid "Unable to allocate %d * %zu bytes for gprod"
 msgstr "Impossible d'allouer %d * %zu octets pour gprod"
 
-#: gsumm.c:1215 shift.c:34
+#: gsumm.c:1220 shift.c:34
 #, c-format
 msgid "Item %d of n is NA"
 msgstr "L'élément %d de n est NA"
 
-#: gsumm.c:1272
+#: gsumm.c:1277
 #, c-format
 msgid ""
 "Type '%s' is not supported by GForce gshift. Either add the namespace prefix "
@@ -3639,7 +3899,7 @@ msgstr ""
 "Dernière étape, récupération des indices dans les chevauchements ... fait en "
 "%8.3f secondes\n"
 
-#: init.c:172
+#: init.c:173
 msgid ""
 "Pointers are %zu bytes, greater than 8. We have not tested on any "
 "architecture greater than 64bit yet."
@@ -3647,129 +3907,139 @@ msgstr ""
 "Les pointeurs sont des octets %zu, supérieurs à 8. Nous n'avons pas encore "
 "testé sur une architecture supérieure à 64 bits."
 
-#: init.c:186
+#: init.c:187
 msgid "... failed. Please forward this message to maintainer('data.table')."
 msgstr ""
 "... a échoué. Veuillez transmettre ce message à maintainer('data.table')."
 
-#: init.c:187
+#: init.c:188
 #, c-format
 msgid "Checking NA_INTEGER [%d] == INT_MIN [%d] %s"
 msgstr "Vérification de NA_INTEGER [%d] == INT_MIN [%d] %s"
 
-#: init.c:188
+#: init.c:189
 #, c-format
 msgid "Checking NA_INTEGER [%d] == NA_LOGICAL [%d] %s"
 msgstr "Vérification de NA_INTEGER [%d] == NA_LOGICAL [%d] %s"
 
-#: init.c:189 init.c:190 init.c:192 init.c:195 init.c:196 init.c:197 init.c:198
-#: init.c:199 init.c:200 init.c:201
+#: init.c:190 init.c:191 init.c:193 init.c:196 init.c:197 init.c:198 init.c:199
+#: init.c:200 init.c:201 init.c:202
 #, c-format
 msgid "Checking sizeof(%s) [%zu] is %d %s"
 msgstr "Vérification que sizeof(%s) [%zu] est %d %s"
 
-#: init.c:193
+#: init.c:194
 #, c-format
 msgid "Checking sizeof(pointer) [%zu] is 4 or 8 %s"
 msgstr "Vérification que sizeof(pointeur) [%zu] est 4 ou 8 %s"
 
-#: init.c:194
+#: init.c:195
 #, c-format
 msgid "Checking sizeof(SEXP) [%zu] == sizeof(pointer) [%zu] %s"
 msgstr "Vérification de sizeof(SEXP) [%zu] == sizeof(pointeur) [%zu] %s"
 
-#: init.c:204
+#: init.c:205
 #, c-format
 msgid "Checking LENGTH(allocVector(INTSXP,2)) [%d] is 2 %s"
 msgstr "Vérification que LENGTH(allocVector(INTSXP,2)) [%d] est 2 %s"
 
-#: init.c:206
+#: init.c:207
 #, c-format
 msgid "Checking TRUELENGTH(allocVector(INTSXP,2)) [%lld] is 0 %s"
 msgstr "Vérification que TRUELENGTH(allocVector(INTSXP,2)) [%lld] est 0 %s"
 
-#: init.c:213
+#: init.c:214
 #, c-format
 msgid "Checking memset(&i,0,sizeof(int)); i == (int)0 %s"
 msgstr "Vérification que memset(&i,0,sizeof(int)) ; i == (int)0 %s"
 
-#: init.c:216
+#: init.c:217
 #, c-format
 msgid "Checking memset(&ui, 0, sizeof(unsigned int)); ui == (unsigned int)0 %s"
 msgstr ""
 "Vérification que memset(&ui, 0, sizeof(unsigned int)) ; ui == (unsigned "
 "int)0 %s"
 
-#: init.c:219
+#: init.c:220
 #, c-format
 msgid "Checking memset(&d, 0, sizeof(double)); d == (double)0.0 %s"
 msgstr "Vérification que memset(&d, 0, sizeof(double)) ; d == (double)0.0 %s"
 
-#: init.c:222
+#: init.c:223
 #, c-format
 msgid "Checking memset(&ld, 0, sizeof(long double)); ld == (long double)0.0 %s"
 msgstr ""
 "Vérification que memset(&ld, 0, sizeof(long double)) ; ld == (long "
 "double)0.0 %s"
 
-#: init.c:225
-msgid "The ascii character '/' is not just before '0'"
+#: init.c:226
+#, fuzzy
+#| msgid "The ascii character '/' is not just before '0'"
+msgid ""
+"Unlike the very common case, e.g. ASCII, the character '/' is not just "
+"before '0'."
 msgstr "Le caractère ascii '/' ne se trouve pas juste avant '0'"
 
-#: init.c:226
+#: init.c:227
 msgid "The C expression (uint_fast8_t)('/'-'0')<10 is true. Should be false."
 msgstr ""
 "L'expression C (uint_fast8_t)('/'-'0')<10 est vraie. Elle devrait être "
 "fausse."
 
-#: init.c:227
-msgid "The ascii character ':' is not just after '9'"
+#: init.c:228
+#, fuzzy
+#| msgid "The ascii character ':' is not just after '9'"
+msgid ""
+"Unlike the very common case, e.g. ASCII, the character ':' is not just after "
+"'9'."
 msgstr "Le caractère ascii ':' n'est pas juste après '9'"
 
-#: init.c:228
+#: init.c:229
 msgid "The C expression (uint_fast8_t)('9'-':')<10 is true. Should be false."
 msgstr ""
 "L'expression C (uint_fast8_t)('9'-':')<10 est vraie. Elle devrait être "
 "fausse."
 
-#: init.c:233
+#: init.c:234
 #, c-format
 msgid "Conversion of NA_INT64 via double failed %<PRId64>!=%<PRId64>"
 msgstr ""
 "La conversion de NA_INT64 via 'double' (nombre à virgule flottante) a échoué "
 "%<PRId64>!=%<PRId64>"
 
-#: init.c:237
+#: init.c:238
 msgid "NA_INT64_D (negative -0.0) is not == 0.0."
 msgstr "NA_INT64_D (négatif -0,0) n'est pas == 0,0."
 
-#: init.c:238
+#: init.c:239
 msgid "NA_INT64_D (negative -0.0) is not ==-0.0."
 msgstr "NA_INT64_D (négatif -0,0) n'est pas ==-0,0."
 
-#: init.c:239
+#: init.c:240
 msgid "ISNAN(NA_INT64_D) is TRUE but should not be"
 msgstr "ISNAN(NA_INT64_D) est TRUE mais ne devrait pas l'être"
 
-#: init.c:240
+#: init.c:241
 msgid "isnan(NA_INT64_D) is TRUE but should not be"
 msgstr "isnan(NA_INT64_D) est TRUE mais ne devrait pas l'être"
 
-#: init.c:274
+#: init.c:275
 #, c-format
 msgid "PRINTNAME(install(\"integer64\")) has returned %s not %s"
 msgstr "PRINTNAME(install(\"integer64\")) a retourné %s et non %s"
 
-#: init.c:333
+#: init.c:334
 msgid "verbose option must be length 1 non-NA logical or integer"
 msgstr ""
 "l'option verbose doit être de longueur 1 et de type booléen non-NA ou entier"
 
-#: init.c:367
-msgid ".Last.value in namespace is not a length 1 integer"
+#: init.c:368
+#, fuzzy
+#| msgid ".Last.value in namespace is not a length 1 integer"
+msgid ".Last.updated in namespace is not a length 1 integer"
 msgstr ".Last.value dans l'espace des noms n'est pas un entier de longueur 1"
 
-#: nafill.c:110
+#: nafill.c:115
 msgid ""
 "'x' argument is atomic vector, in-place update is supported only for list/"
 "data.table"
@@ -3777,21 +4047,21 @@ msgstr ""
 "l'argument 'x' est un vecteur atomique, la mise à jour sur place n'est "
 "possible que pour list/data.table"
 
-#: nafill.c:112 nafill.c:123
+#: nafill.c:117 nafill.c:128
 msgid "'x' argument must be numeric type, or list/data.table of numeric types"
 msgstr ""
 "l'argument 'x' doit être un type numérique ou une liste/data.table de types "
 "numériques"
 
-#: nafill.c:179
+#: nafill.c:184
 msgid "fill must be a vector of length 1 or a list of length of x"
 msgstr "fill doit être un vecteur de longueur 1 ou une liste de longueur x"
 
-#: nafill.c:226
-#, c-format
-msgid "%s: parallel processing of %d column(s) took %.3fs\n"
-msgstr ""
-"%s : le traitement en parallèle de %d colonne(s) a pris %.3f secondes\n"
+#: negate.c:5
+#, fuzzy
+#| msgid "%s is not an integer vector"
+msgid "not logical or integer vector"
+msgstr "%s n'est pas un vecteur entier"
 
 #: openmp-utils.c:23
 #, c-format
@@ -3825,59 +4095,14 @@ msgstr ""
 msgid "  OpenMP version (_OPENMP)       %d\n"
 msgstr "  Version OpenMP (_OPENMP) %d\n"
 
-#: openmp-utils.c:89
-#, c-format
-msgid "  omp_get_num_procs()            %d\n"
-msgstr "  omp_get_num_procs() %d\n"
-
-#: openmp-utils.c:90
-#, c-format
-msgid "  R_DATATABLE_NUM_PROCS_PERCENT  %s\n"
-msgstr "  R_DATABLE_NUM_PROCS_PERCENT %s\n"
-
-#: openmp-utils.c:91
-#, c-format
-msgid "  R_DATATABLE_NUM_THREADS        %s\n"
-msgstr "  R_DATABLE_NUM_THREADS %s\n"
-
-#: openmp-utils.c:92
-#, c-format
-msgid "  R_DATATABLE_THROTTLE           %s\n"
-msgstr "  R_DATABLE_THROTTLE %s\n"
-
-#: openmp-utils.c:93
-#, c-format
-msgid "  omp_get_thread_limit()         %d\n"
-msgstr "  omp_get_thread_limit() %d\n"
-
-#: openmp-utils.c:94
-#, c-format
-msgid "  omp_get_max_threads()          %d\n"
-msgstr "  omp_get_max_threads() %d\n"
-
-#: openmp-utils.c:95
-#, c-format
-msgid "  OMP_THREAD_LIMIT               %s\n"
-msgstr "  OMP_THREAD_LIMIT %s\n"
-
-#: openmp-utils.c:96
-#, c-format
-msgid "  OMP_NUM_THREADS                %s\n"
-msgstr "  OMP_NUM_THREADS %s\n"
-
-#: openmp-utils.c:97
-#, c-format
-msgid "  RestoreAfterFork               %s\n"
-msgstr "  RestoreAfterFork               %s\n"
-
-#: openmp-utils.c:98
+#: openmp-utils.c:100
 #, c-format
 msgid ""
 "  data.table is using %d threads with throttle==%d. See ?setDTthreads.\n"
 msgstr ""
 "  data.table utilise %d threads avec throttle==%d. Voir ?setDTthreads.\n"
 
-#: openmp-utils.c:106
+#: openmp-utils.c:108
 msgid ""
 "restore_after_fork= must be TRUE, FALSE, or NULL (default). "
 "getDTthreads(verbose=TRUE) reports the current setting.\n"
@@ -3885,17 +4110,17 @@ msgstr ""
 "restore_after_fork= doit être TRUE, FALSE ou NULL (par défaut). "
 "getDTthreads(verbose=TRUE) indique la configuration actuelle.\n"
 
-#: openmp-utils.c:112
+#: openmp-utils.c:114
 msgid "'throttle' must be a single number, non-NA, and >=1"
 msgstr "'throttle' doit être un nombre unique, non NA, et >=1"
 
-#: openmp-utils.c:126
+#: openmp-utils.c:128
 msgid ""
 "threads= must be either NULL or a single number >= 0. See ?setDTthreads."
 msgstr ""
 "threads= doit être soit NULL soit un nombre unique >= 0. Voir ?setDTthreads."
 
-#: programming.c:16
+#: programming.c:17
 #, c-format
 msgid ""
 "Attempting to substitute '%s' element with object of type '%s' but it has to "
@@ -3951,17 +4176,7 @@ msgstr ""
 "La colonne %d de l'élément %d a une longueur %d incompatible avec la colonne "
 "%d qui a une longueur %d. Seules les colonnes de longueur 1 sont recyclées."
 
-#: rbindlist.c:60
-#, 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 ""
-"La colonne %d ['%s'] de l'élément %d a une longueur de 0. Cette colonne (et "
-"les %d autres %s similaires) a été remplie avec NA (NULL pour les colonnes "
-"de type liste) afin d'uniformiser chaque élément."
-
-#: rbindlist.c:64
+#: rbindlist.c:66
 #, c-format
 msgid ""
 "Total rows in the list is %<PRId64> which is larger than the maximum number "
@@ -3970,11 +4185,11 @@ msgstr ""
 "Le nombre total de lignes dans la liste est %<PRId64>, ce qui est supérieur "
 "au nombre maximum de lignes, actuellement de %d"
 
-#: rbindlist.c:65
+#: rbindlist.c:67
 msgid "use.names=TRUE but no item of input list has any names"
 msgstr "use.names=TRUE mais aucun élément de la liste d'entrée n'a de nom"
 
-#: rbindlist.c:74
+#: rbindlist.c:76
 #, c-format
 msgid ""
 "Failed to allocate upper bound of %<PRId64> unique column names "
@@ -3990,14 +4205,14 @@ msgstr ""
 "Échec de l'allocation de la mémoire de travail pour nuniq=%d éléments dans "
 "rbindlist.c"
 
-#: rbindlist.c:139
+#: rbindlist.c:140
 #, c-format
 msgid "Failed to allocate ncol=%d items working memory in rbindlist.c"
 msgstr ""
 "Échec de l'allocation de la mémoire de travail pour ncol=%d éléments dans "
 "rbindlist.c"
 
-#: rbindlist.c:199
+#: rbindlist.c:201
 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 "
@@ -4008,7 +4223,7 @@ msgstr ""
 "rétrocompatibilité. Voir le point 5 dans les nouveautés de la version 1.12.2 "
 "pour les options permettant de contrôler ce message."
 
-#: rbindlist.c:213
+#: rbindlist.c:215
 #, c-format
 msgid ""
 "Column %d ['%s'] of item %d is missing in item %d. Use fill=TRUE to fill "
@@ -4018,7 +4233,7 @@ msgstr ""
 "Utilisez fill=TRUE pour remplir avec NA (NULL pour les colonnes de type "
 "liste), ou use.names=FALSE pour ignorer les noms de colonnes.%s"
 
-#: rbindlist.c:222
+#: rbindlist.c:224
 #, c-format
 msgid ""
 "Column %d ['%s'] of item %d appears in position %d in item %d. Set use."
@@ -4029,7 +4244,7 @@ msgstr ""
 "%d. Définissez use.names=TRUE pour une correspondance par nom de colonne, ou "
 "use.names=FALSE pour ignorer les noms de colonnes.%s"
 
-#: rbindlist.c:231
+#: rbindlist.c:233
 msgid ""
 "options()$datatable.rbindlist.check is set but is not a single string. See "
 "news item 5 in v1.12.2."
@@ -4037,7 +4252,7 @@ msgstr ""
 "options()$datable.rbindlist.check est défini mais n'est pas une chaîne "
 "unique. Voir le point 5 dans les nouveautés de la v1.12.2."
 
-#: rbindlist.c:238
+#: rbindlist.c:240
 #, c-format
 msgid ""
 "options()$datatable.rbindlist.check=='%s' which is not "
@@ -4047,7 +4262,7 @@ msgstr ""
 "'message'|'warning'|'error'|'none'. Voir le point 5 dans les nouveautés de "
 "la v1.12.2."
 
-#: rbindlist.c:301
+#: rbindlist.c:303
 #, c-format
 msgid ""
 "Column %d of item %d has type 'factor' but has no levels; i.e. malformed."
@@ -4055,7 +4270,7 @@ msgstr ""
 "La colonne %d de l'élément %d est de type 'facteur' mais n'a pas de niveaux, "
 "c'est-à-dire qu'il est malformé."
 
-#: rbindlist.c:330
+#: rbindlist.c:332
 #, c-format
 msgid ""
 "Class attribute on column %d of item %d does not match with column %d of "
@@ -4065,7 +4280,7 @@ msgstr ""
 "colonne %d de l'élément %d. Vous pouvez désactiver cette vérification en "
 "utilisant ignore.attr=TRUE"
 
-#: rbindlist.c:380
+#: rbindlist.c:383
 #, c-format
 msgid ""
 "Failed to allocate working memory for %d ordered factor levels of result "
@@ -4074,7 +4289,7 @@ msgstr ""
 "Échec de l'allocation de la mémoire de travail pour %d niveaux de facteurs "
 "ordonnés pour la colonne de résultats %d"
 
-#: rbindlist.c:403
+#: rbindlist.c:406
 #, c-format
 msgid ""
 "Column %d of item %d is an ordered factor but level %d ['%s'] is missing "
@@ -4088,7 +4303,7 @@ msgstr ""
 "ordonné du premier et plus long. Un facteur régulier sera créé pour cette "
 "colonne."
 
-#: rbindlist.c:408
+#: rbindlist.c:411
 #, c-format
 msgid ""
 "Column %d of item %d is an ordered factor with '%s'<'%s' in its levels. But "
@@ -4100,7 +4315,7 @@ msgstr ""
 "de l'élément %d. Un facteur régulier sera créé pour cette colonne en raison "
 "de cette ambiguïté."
 
-#: rbindlist.c:453
+#: rbindlist.c:456
 #, c-format
 msgid ""
 "Failed to allocate working memory for %d factor levels of result column %d "
@@ -4110,19 +4325,19 @@ msgstr ""
 "de la colonne de résultats %d lors de la lecture de l'élément %d de "
 "l'élément %d"
 
-#: rbindlist.c:544 rbindlist.c:547
+#: rbindlist.c:548 rbindlist.c:551
 #, c-format
 msgid "Column %d of item %d: %s"
 msgstr "Colonne %d de l'élément %d : %s"
 
-#: reorder.c:17
+#: reorder.c:22
 #, c-format
 msgid "Item %d of list is type '%s' which isn't yet supported (SIZEOF=%zu)"
 msgstr ""
 "L'élément %d de la liste est du type '%s' qui n'est pas encore pris en "
 "charge (SIZEOF=%zu)"
 
-#: reorder.c:19
+#: reorder.c:24
 #, c-format
 msgid ""
 "Column %d is length %d which differs from length of column 1 (%d). Invalid "
@@ -4131,7 +4346,7 @@ msgstr ""
 "La colonne %d est de longueur %d, ce qui diffère de la longueur de la "
 "colonne 1 (%d). Objet data.table invalide."
 
-#: reorder.c:27
+#: reorder.c:32
 #, c-format
 msgid ""
 "reorder accepts vectors but this non-VECSXP is type '%s' which isn't yet "
@@ -4140,16 +4355,11 @@ msgstr ""
 "reorder accepte les vecteurs mais non-VECSXP est de type '%s' qui n'est pas "
 "encore supporté (SIZEOF=%zu)"
 
-#: reorder.c:33
+#: reorder.c:39
 msgid "order must be an integer vector"
 msgstr "l'ordre doit être un vecteur entier"
 
-#: reorder.c:34
-#, c-format
-msgid "nrow(x)[%d]!=length(order)[%d]"
-msgstr "nrow(x)[%d]!=length(order)[%d]"
-
-#: reorder.c:51
+#: reorder.c:58
 #, c-format
 msgid ""
 "Item %d of order (%d) is either NA, out of range [1,%d], or is duplicated. "
@@ -4158,7 +4368,7 @@ msgstr ""
 "L'élément %d de l'ordre (%d) est soit NA, soit hors de l'intervalle [1,%d], "
 "soit dupliqué. Le nouvel ordre doit être une permutation stricte de 1:n"
 
-#: reorder.c:111
+#: reorder.c:118
 msgid "dt passed to setcolorder has no names"
 msgstr "dt transmis à 'setcolorder' n'a pas de noms"
 
@@ -4245,7 +4455,7 @@ msgstr ""
 "La colonne %d ['%s'] est de longueur %d mais la colonne 1 est de longueur "
 "%d ; data.table malformé."
 
-#: subset.c:295
+#: subset.c:296
 #, c-format
 msgid "Item %d of cols is %d which is outside the range [1,ncol(x)=%d]"
 msgstr ""
@@ -4319,16 +4529,16 @@ msgstr ""
 msgid "x is not a logical vector"
 msgstr "x n'est pas un vecteur de booléens"
 
-#: utils.c:85
+#: utils.c:95
 #, c-format
 msgid "Unsupported type '%s' passed to allNA()"
 msgstr "Type '%s' non pris en charge dans allNA()"
 
-#: utils.c:105
+#: utils.c:115
 msgid "'x' argument must be data.table compatible"
 msgstr "l'argument 'x' doit être compatible avec data.table"
 
-#: utils.c:129
+#: utils.c:139
 msgid ""
 "argument specifying columns is type 'double' and one or more items in it are "
 "not whole integers"
@@ -4336,7 +4546,7 @@ msgstr ""
 "l'argument spécifiant les colonnes est de type 'double' (nombre à virgule "
 "flottante) et un ou plusieurs éléments ne sont pas des entiers"
 
-#: utils.c:135
+#: utils.c:145
 #, c-format
 msgid ""
 "argument specifying columns received non-existing column(s): cols[%d]=%d"
@@ -4344,11 +4554,11 @@ msgstr ""
 "l'argument spécifiant les colonnes a reçu des colonnes inexistantes : "
 "cols[%d]=%d"
 
-#: utils.c:142
+#: utils.c:152
 msgid "'x' argument data.table has no names"
 msgstr "l'argument 'x' de data.table n'a pas de nom"
 
-#: utils.c:148
+#: utils.c:158
 #, c-format
 msgid ""
 "argument specifying columns received non-existing column(s): cols[%d]='%s'"
@@ -4356,46 +4566,40 @@ msgstr ""
 "l'argument spécifiant les colonnes a reçu des colonnes inexistantes : "
 "cols[%d]='%s'"
 
-#: utils.c:152
+#: utils.c:162
 msgid "argument specifying columns must be character or numeric"
 msgstr "l'argument spécifiant les colonnes doit être un caractère ou un nombre"
 
-#: utils.c:155
+#: utils.c:165
 msgid "argument specifying columns received duplicate column(s)"
 msgstr ""
 "l'argument spécifiant les colonnes a reçu une ou plusieurs colonnes "
 "dupliquée(s)"
 
-#: utils.c:289
-#, c-format
-msgid "Found and copied %d column%s with a shared memory address\n"
-msgstr ""
-"Trouvé et copié la colonne %d %s avec une adresse de mémoire partagée\n"
-
-#: utils.c:369
+#: utils.c:383
 msgid "'x' is not atomic"
 msgstr "'x' n'est pas un vecteur atomique"
 
-#: utils.c:371
+#: utils.c:385
 msgid "'x' must not be matrix or array"
 msgstr "'x' ne doit pas être une matrice ou un tableau"
 
-#: utils.c:373
+#: utils.c:387
 msgid "input must not be matrix or array"
 msgstr "l'entrée ne doit pas être une matrice ou un tableau"
 
-#: utils.c:377
+#: utils.c:391
 #, c-format
 msgid "copy=false and input already of expected type and class %s[%s]\n"
 msgstr ""
 "copy=false et l'entrée est déjà du type et de la classe attendus %s[%s]\n"
 
-#: utils.c:384
+#: utils.c:398
 #, c-format
 msgid "Coercing %s[%s] into %s[%s]\n"
 msgstr "Conversion de %s[%s] en %s[%s]\n"
 
-#: utils.c:400
+#: utils.c:414
 #, c-format
 msgid "zlib header files were not found when data.table was compiled"
 msgstr ""
@@ -4470,26 +4674,16 @@ msgstr ""
 "classe comme étant 'data.table' ou 'data.frame'. Utilisez plutôt les "
 "méthodes 'as.data.table()' ou 'as.data.frame()'."
 
-#: wrappers.c:66
-msgid "First argument to setlistelt must be a list()"
-msgstr "Le premier argument de setlistelt doit être de type list()"
-
-#: wrappers.c:67
-msgid "Second argument to setlistelt must a length 1 integer vector"
-msgstr ""
-"Le deuxième argument de setlistelt doit être un vecteur d'entier de longueur "
-"1"
-
-#: wrappers.c:69
+#: wrappers.c:68
 #, c-format
 msgid "i (%d) is outside the range of items [1,%d]"
 msgstr "i (%d) est en dehors de l'intervalle des éléments [1,%d]"
 
-#: wrappers.c:91
+#: wrappers.c:99
 msgid "x isn't a VECSXP"
 msgstr "x n'est pas un VECSXP"
 
-#: wrappers.c:106
+#: wrappers.c:114
 #, c-format
 msgid ""
 "dim.data.table expects a data.table as input (which is a list), but seems to "
@@ -4498,6 +4692,238 @@ msgstr ""
 "dim.data.table attend un data.table en entrée (qui est de type liste), mais "
 "semble être de type %s"
 
+#, c-format
+#~ msgid "Added %d new column%s initialized with all-NA\n"
+#~ msgstr "Ajout de %d nouvelle(s) colonne(s) initialisée%s avec all-NA\n"
+
+#, c-format
+#~ msgid "RHS_list_of_columns == %s\n"
+#~ msgstr "RHS_list_of_columns == %s\n"
+
+#, c-format
+#~ msgid "savetl_init checks failed (%d %d %p %p)"
+#~ msgstr "les vérifications de savetl_init ont échoué (%d %d %p %p)"
+
+#, c-format
+#~ msgid "typeof x.%s (%s) != typeof i.%s (%s)"
+#~ msgstr "typeof x.%s (%s) != typeof i.%s (%s)"
+
+#, c-format
+#~ msgid "!length(bynames)[%d]==length(groups)[%d]==length(grpcols)[%d]"
+#~ msgstr "!length(bynames)[%d]==length(groups)[%d]==length(grpcols)[%d]"
+
+#~ msgid "length(names)!=length(SD)"
+#~ msgstr "length(names)!=length(SD)"
+
+#~ msgid "length(xknames)!=length(xSD)"
+#~ msgstr "length(xknames)!=length(xSD)"
+
+#, c-format
+#~ msgid "dogroups: length(ans)[%d]!=ngrpcols[%d]+njval[%d]"
+#~ msgstr "dogroups: length(ans)[%d]!=ngrpcols[%d]+njval[%d]"
+
+#, c-format
+#~ msgid ""
+#~ "\rProcessed %d groups out of %d. %.0f%% done. Time elapsed: %ds. ETA: "
+#~ "%ds.\n"
+#~ msgstr ""
+#~ "\rTraitement de %d groupes sur %d. %.0f%% terminé. Temps écoulé : %ds. "
+#~ "Heure d'arrivée prévue : %ds.\n"
+
+#~ msgid "names(data) is NULL. Please report to data.table-help"
+#~ msgstr ""
+#~ "names(data) est NULL. Veuillez signaler ce problème à data.table-help"
+
+#, c-format
+#~ msgid "nradix=%d\n"
+#~ msgstr "nradix=%d\n"
+
+#, c-format
+#~ msgid "stat[%03d]==%20<PRIu64>\n"
+#~ msgstr "stat[%03d]==%20<PRIu64>\n"
+
+#, c-format
+#~ msgid "Avoidable %.3f seconds. %s time to copy.\n"
+#~ msgstr "%.3f secondes évitables. %s temps de copie.\n"
+
+#~ msgid "  NAstrings = ["
+#~ msgstr "  NAstrings = ["
+
+#~ msgid "]\n"
+#~ msgstr "]\n"
+
+#, c-format
+#~ msgid "  File ends abruptly with '%c'. Copying file in RAM. %s copy.\n"
+#~ msgstr ""
+#~ "  Le fichier se termine brusquement par '%c'. Copie d'un fichier en RAM. "
+#~ "%s copie.\n"
+
+#, c-format
+#~ msgid "skip=%<PRIu64> but the input only has %<PRIu64> line%s"
+#~ msgstr "skip=%<PRIu64> mais l'entrée ne contient que la ligne %<PRIu64>%s"
+
+#, c-format
+#~ msgid "nrow limit (%<PRIu64>) supplied\n"
+#~ msgstr "limite pour nrow (%<PRIu64>) fournie\n"
+
+#~ msgid "jump0size==0\n"
+#~ msgstr "jump0size==0\n"
+
+#~ msgid "few"
+#~ msgstr "peu"
+
+#~ msgid "many"
+#~ msgstr "beaucoup"
+
+#~ msgid "s at the end."
+#~ msgstr "’s’ à la fin."
+
+#~ msgid " no"
+#~ msgstr " non"
+
+#~ msgid "  =====\n"
+#~ msgstr "  =====\n"
+
+#, c-format
+#~ msgid "  jumps=[%d..%d), chunk_size=%<PRIu64>, total_size=%<PRIu64>\n"
+#~ msgstr "  jumps=[%d..%d), chunk_size=%<PRIu64>, total_size=%<PRIu64>\n"
+
+#~ msgid "=============================\n"
+#~ msgstr "=============================\n"
+
+#, c-format
+#~ msgid "%8.3fs (%3.0f%%) sep="
+#~ msgstr "%8.3fs (%3.0f%%) sep="
+
+#, c-format
+#~ msgid "nThread(%d)<1"
+#~ msgstr "nThread(%d)<1"
+
+#, c-format
+#~ msgid "%s"
+#~ msgstr "%s"
+
+#, c-format
+#~ msgid "nth=%d, nBatch=%d\n"
+#~ msgstr "nth=%d, nBatch=%d\n"
+
+#, c-format
+#~ msgid "maxBit=%d; MSBNbits=%d; shift=%d; MSBsize=%zu\n"
+#~ msgstr "maxBit=%d ; MSBNbits=%d ; shift=%d ; MSBsize=%zu\n"
+
+#~ msgid "Reduced MSBsize from %zu to "
+#~ msgstr "Réduction de MSBsize de %zu à "
+
+#, c-format
+#~ msgid "buffMB=%d outside [1,1024]"
+#~ msgstr "buffMB=%d hors limites [1,1024]"
+
+#, c-format
+#~ msgid "%d "
+#~ msgstr "%d "
+
+#~ msgid "... "
+#~ msgstr "... "
+
+#, c-format
+#~ msgid ""
+#~ "\n"
+#~ "args.doRowNames=%d args.rowNames=%p args.rowNameFun=%d doQuote=%d args."
+#~ "nrow=%<PRId64> args.ncol=%d eolLen=%d\n"
+#~ msgstr ""
+#~ "\n"
+#~ "args.doRowNames=%d args.rowNames=%p args.rowNameFun=%d doQuote=%d args."
+#~ "nrow=%<PRId64> args.ncol=%d eolLen=%d\n"
+
+#, c-format
+#~ msgid "Unable to allocate %zu MiB for header: %s"
+#~ msgstr "Impossible d'allouer %zu mébioctets (MiB) pour l'en-tête : %s"
+
+#, c-format
+#~ msgid "Unable to allocate %zu MiB for zbuffer: %s"
+#~ msgstr ""
+#~ "Impossible d'allouer %zu mébioctets (MiB) pour la mémoire tampon de zlib "
+#~ "(zbuffer) : %s"
+
+#, c-format
+#~ msgid "Compress gzip error: %d"
+#~ msgstr "Erreur de compression gzip : %d"
+
+#, c-format
+#~ msgid "Failed to allocated %d bytes for '%s'."
+#~ msgstr "Échec de l'allocation de %d octets pour ‘%s’."
+
+#, c-format
+#~ msgid "length(f)=%d != length(l)=%d"
+#~ msgstr "length(f)=%d != length(l)=%d"
+
+#, c-format
+#~ msgid "%s: parallel processing of %d column(s) took %.3fs\n"
+#~ msgstr ""
+#~ "%s : le traitement en parallèle de %d colonne(s) a pris %.3f secondes\n"
+
+#, c-format
+#~ msgid "  omp_get_num_procs()            %d\n"
+#~ msgstr "  omp_get_num_procs() %d\n"
+
+#, c-format
+#~ msgid "  R_DATATABLE_NUM_PROCS_PERCENT  %s\n"
+#~ msgstr "  R_DATABLE_NUM_PROCS_PERCENT %s\n"
+
+#, c-format
+#~ msgid "  R_DATATABLE_NUM_THREADS        %s\n"
+#~ msgstr "  R_DATABLE_NUM_THREADS %s\n"
+
+#, c-format
+#~ msgid "  R_DATATABLE_THROTTLE           %s\n"
+#~ msgstr "  R_DATABLE_THROTTLE %s\n"
+
+#, c-format
+#~ msgid "  omp_get_thread_limit()         %d\n"
+#~ msgstr "  omp_get_thread_limit() %d\n"
+
+#, c-format
+#~ msgid "  omp_get_max_threads()          %d\n"
+#~ msgstr "  omp_get_max_threads() %d\n"
+
+#, c-format
+#~ msgid "  OMP_THREAD_LIMIT               %s\n"
+#~ msgstr "  OMP_THREAD_LIMIT %s\n"
+
+#, c-format
+#~ msgid "  OMP_NUM_THREADS                %s\n"
+#~ msgstr "  OMP_NUM_THREADS %s\n"
+
+#, c-format
+#~ msgid "  RestoreAfterFork               %s\n"
+#~ msgstr "  RestoreAfterFork               %s\n"
+
+#, 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 ""
+#~ "La colonne %d ['%s'] de l'élément %d a une longueur de 0. Cette colonne "
+#~ "(et les %d autres %s similaires) a été remplie avec NA (NULL pour les "
+#~ "colonnes de type liste) afin d'uniformiser chaque élément."
+
+#, c-format
+#~ msgid "nrow(x)[%d]!=length(order)[%d]"
+#~ msgstr "nrow(x)[%d]!=length(order)[%d]"
+
+#, c-format
+#~ msgid "Found and copied %d column%s with a shared memory address\n"
+#~ msgstr ""
+#~ "Trouvé et copié la colonne %d %s avec une adresse de mémoire partagée\n"
+
+#~ msgid "First argument to setlistelt must be a list()"
+#~ msgstr "Le premier argument de setlistelt doit être de type list()"
+
+#~ msgid "Second argument to setlistelt must a length 1 integer vector"
+#~ msgstr ""
+#~ "Le deuxième argument de setlistelt doit être un vecteur d'entier de "
+#~ "longueur 1"
+
 #~ msgid "Internal error: finalizer hasn't received an ExternalPtr"
 #~ msgstr "Erreur interne : le finalisateur n'a pas reçu de ExternalPtr"
 
@@ -5086,12 +5512,6 @@ msgstr ""
 #~ msgid "Internal error: counts[nBatch-1][MSBsize-1] != length(x)"
 #~ msgstr "Erreur interne : counts[nBatch-1][MSBsize-1] != length(x)"
 
-#, c-format
-#~ msgid "Internal error: type %d has no max length method implemented"
-#~ msgstr ""
-#~ "Erreur interne : le type %d n'a pas de méthode implémentée pour calculer "
-#~ "la taille maximale"
-
 #~ msgid "Internal error: col passed to getMaxCategLen is missing levels"
 #~ msgstr ""
 #~ "Erreur interne : la colonne transmise à 'getMaxCategLen' manque de niveaux"