Index: tmp/org.txm.statsengine.core/src/org/txm/statsengine/core/messages/messages.properties
===================================================================
--- tmp/org.txm.statsengine.core/src/org/txm/statsengine/core/messages/messages.properties	(revision 1364)
+++ tmp/org.txm.statsengine.core/src/org/txm/statsengine/core/messages/messages.properties	(revision 1365)
@@ -10,23 +10,23 @@
 
 cannotDeleteANonexistingObject = ** Cannot delete a non-existing object.
 
-cannotDeleteAllLines = Cannot delete all lines
+cannotDeleteAllLines = Cannot delete all lines.
 
-colIndex = Col index (
+colIndex = Col index ({0}) too big (max {1}).
 
 columnIndex = Column index (
 
-columnNamesOfAContingencyTableCannotBeNull = Column names of a contingency table cannot be null
+columnNamesOfAContingencyTableCannotBeNull = Column names of a contingency table cannot be null.
 
 error_statsEngineNotReadyCancelingCommand = Statistics Engine is not ready, canceling command.
 
-failedToGetRowNames = Failed to get row names
+failedToGetRowNames = Failed to get row names.
 
 innerArraysMustBeOfDimensionSup0 = ** Inner arrays must be of dimension > 0.
 
 matrixDDotFailedToGetNrowDDot = Matrix: failed to get nrow: {0}.
 
-matrixImplDDotErrorDDotColumnSizeDiffersDDotOriginal = MatrixImpl: Error: column size differs: original
+matrixImplDDotErrorDDotColumnSizeDiffersDDotOriginal = MatrixImpl: Error: column sizes differ: original {0}, imported {1}.
 
 mode = mode
 
@@ -36,12 +36,10 @@
 
 rObjectEvaluatedToNull = R object evaluated to null.
 
-rowIndex = Row index ({0}) too big (max {1})
+rowIndex = Row index ({0}) too big (max {1}).
 
 rowNamesOfAContingencyTableCannotBeNull = Row names of a contingency table cannot be null.
 
 theIndexArrayCanNotBeNullOrEmpty = ** The index array can not be null or empty.
 
-tooBigMax = ) too big (max 
-
 unknownTypeDDot = Unknown type: {0}.
Index: tmp/org.txm.statsengine.core/src/org/txm/statsengine/core/messages/StatsEngineCoreMessages.java
===================================================================
--- tmp/org.txm.statsengine.core/src/org/txm/statsengine/core/messages/StatsEngineCoreMessages.java	(revision 1364)
+++ tmp/org.txm.statsengine.core/src/org/txm/statsengine/core/messages/StatsEngineCoreMessages.java	(revision 1365)
@@ -25,7 +25,6 @@
 	public static String aZerobasedIndexCannotBeInf0OrSupToTheNumberOfIndexedElements; 
 	public static String notImplemented; 
 	public static String rowIndex; 
-	public static String tooBigMax; 
 	public static String colIndex; 
 	public static String rObjectEvaluatedToNull; 
 	public static String unknownTypeDDot; 
Index: tmp/org.txm.statsengine.core/src/org/txm/statsengine/core/messages/messages_fr.properties
===================================================================
--- tmp/org.txm.statsengine.core/src/org/txm/statsengine/core/messages/messages_fr.properties	(revision 1364)
+++ tmp/org.txm.statsengine.core/src/org/txm/statsengine/core/messages/messages_fr.properties	(revision 1365)
@@ -10,9 +10,9 @@
 
 cannotDeleteANonexistingObject = ** Impossible de supprimer un objet qui n'existe pas.
 
-cannotDeleteAllLines = Impossible de supprimer toutes les lignes
+cannotDeleteAllLines = Impossible de supprimer toutes les lignes.
 
-colIndex = Index de colonne (
+colIndex = .Index de colonne ({0}) trop grand (max {1}).
 
 columnIndex = Index de colonne (
 
@@ -20,13 +20,13 @@
 
 error_statsEngineNotReadyCancelingCommand = Le moteur de statistiques n'est pas initialisé, annulation de la commande.
 
-failedToGetRowNames = Impossible d'obtenir les noms de lignes
+failedToGetRowNames = Impossible d'obtenir les noms de lignes.
 
 innerArraysMustBeOfDimensionSup0 = ** Les tableaux internes doivent avoir une dimension supérieure à 0
 
 matrixDDotFailedToGetNrowDDot = Matrice: impossible d'obtenir le nombre de lignes: {0}.
 
-matrixImplDDotErrorDDotColumnSizeDiffersDDotOriginal = MatrixImpl: Erreur: la taille des colonnes diffère de l'originale
+matrixImplDDotErrorDDotColumnSizeDiffersDDotOriginal = MatrixImpl: Erreur: la taille des colonnes diffère de l'originale : originale {0}, importée {1}.
 
 mode = mode
 
@@ -36,12 +36,10 @@
 
 rObjectEvaluatedToNull = L'objet R a une valeur nulle.
 
-rowIndex = Index de ligne ({0}) trop grand (max {1})
+rowIndex = Index de ligne ({0}) trop grand (max {1}).
 
 rowNamesOfAContingencyTableCannotBeNull = Les noms de lignes d'une matrice de contingence ne peuvent pas être nuls.
 
 theIndexArrayCanNotBeNullOrEmpty = ** Le tableau d'index ne peut pas être nul ou vide.
 
-tooBigMax = ) trop grand (max 
-
 unknownTypeDDot = Type inconnu : {0}.
Index: tmp/org.txm.statsengine.r.core/src/org/txm/statsengine/r/core/data/MatrixImpl.java
===================================================================
--- tmp/org.txm.statsengine.r.core/src/org/txm/statsengine/r/core/data/MatrixImpl.java	(revision 1364)
+++ tmp/org.txm.statsengine.r.core/src/org/txm/statsengine/r/core/data/MatrixImpl.java	(revision 1365)
@@ -38,6 +38,7 @@
 
 import org.rosuda.REngine.REXP;
 import org.rosuda.REngine.REXPMismatchException;
+import org.txm.core.messages.TXMCoreMessages;
 import org.txm.statsengine.core.StatException;
 import org.txm.statsengine.core.data.Matrix;
 import org.txm.statsengine.core.data.Vector;
@@ -48,6 +49,7 @@
 import org.txm.statsengine.r.core.exceptions.RWorkspaceException;
 import org.txm.utils.CharsetDetector;
 import org.txm.utils.OSDetector;
+import org.txm.utils.io.IOUtils;
 import org.txm.utils.logger.Log;
 
 import cern.colt.matrix.DoubleMatrix2D;
@@ -434,8 +436,7 @@
 		int ncol = this.getNColumns();
 
 		if (index < 0 || index >= ncol) {
-			throw new IllegalArgumentException(StatsEngineCoreMessages.columnIndex + index
-					+ StatsEngineCoreMessages.tooBigMax + ncol + ")"); //$NON-NLS-1$ 
+			throw new IllegalArgumentException(StatsEngineCoreMessages.bind(StatsEngineCoreMessages.columnIndex, index, ncol)); 
 		}
 		String colName = createSymbole(Vector.class);
 		rw.voidEval(colName + "<- " + symbol + "[ ," + (index + 1) + "];"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
@@ -460,7 +461,6 @@
 		try {
 			return new VectorImpl("colnames("+this.getSymbol()+")"); //$NON-NLS-1$ //$NON-NLS-2$
 		} catch (RWorkspaceException e) {
-			// TODO Auto-generated catch block
 			org.txm.utils.logger.Log.printStackTrace(e);
 			return null;
 		}
@@ -471,10 +471,8 @@
 			REXP rexp = RWorkspace.getRWorkspaceInstance().eval(this.symbol);
 			return asIntMatrix(rexp);
 		} catch (RWorkspaceException e) {
-			// TODO Auto-generated catch block
 			org.txm.utils.logger.Log.printStackTrace(e);
 		} catch (REXPMismatchException e) {
-			// TODO Auto-generated catch block
 			org.txm.utils.logger.Log.printStackTrace(e);
 		}
 		return null;
@@ -538,7 +536,6 @@
 		try {
 			return new VectorImpl("rownames("+this.getSymbol()+")"); //$NON-NLS-1$ //$NON-NLS-2$
 		} catch (RWorkspaceException e) {
-			// TODO Auto-generated catch block
 			org.txm.utils.logger.Log.printStackTrace(e);
 			return null;
 		}
@@ -579,19 +576,19 @@
 		String path = f.getAbsolutePath();
 
 		CharsetDetector guesser = new CharsetDetector(f);
-		if (!("UTF-8".equals(guesser.getEncoding().toUpperCase()))) {
-			System.out.println("Warning: file encoding seems to not be 'UTF-8' but '"+guesser.getEncoding()+"'");
+		if (!(IOUtils.UTF8.equals(guesser.getEncoding().toUpperCase()))) {
+			System.out.println(TXMCoreMessages.bind("Warning: file encoding seems to not be 'UTF-8' but '{0}'", guesser.getEncoding()));
 		}
 
 		int nline = 0;
 		try {
-			BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(f), "UTF-8"));
+			BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(f), IOUtils.UTF8));
 			while(reader.readLine() != null) nline++;
 			reader.close();
 		} catch(Exception e) { }
 
 		if (nline == 0) {
-			System.out.println("Error: the file is empty");
+			Log.severe(TXMCoreMessages.bind("Error: the file {0} is empty.", f));
 			return false;
 		}
 
@@ -610,7 +607,7 @@
 		int linesize = rw.eval("dim(tmpmat)[1]").asInteger(); //$NON-NLS-1$
 		int ncol = this.getNColumns();
 		if (colsize != ncol) {
-			System.out.println(StatsEngineCoreMessages.matrixImplDDotErrorDDotColumnSizeDiffersDDotOriginal+ncol+" imported="+colsize); //$NON-NLS-2$
+			Log.severe(TXMCoreMessages.bind(StatsEngineCoreMessages.matrixImplDDotErrorDDotColumnSizeDiffersDDotOriginal, ncol, colsize));
 			return false;
 		}
 
@@ -618,9 +615,9 @@
 
 		nline--;
 		if (nline != linesize) {
-			System.out.println("Warning: some lines have not been read. Check your file format (header, encoding=UTF-8, separator=TAB)");
-			System.out.println("Number of lines in the file="+nline);
-			System.out.println("Number of lines in the matrix="+linesize);
+			System.out.println("Warning: some lines have not been read. Check your file format (header, encoding=UTF-8, separator=TAB).");
+			System.out.println(TXMCoreMessages.bind("Number of lines in the file={0}.", nline));
+			System.out.println(TXMCoreMessages.bind("Number of lines in the matrix={0}.", linesize));
 		}
 		return true;
 	}
@@ -917,12 +914,10 @@
 		int nrow = this.getNRows();
 		int ncol = this.getNColumns();
 		if (row < 0 || row >= nrow) {
-			throw new IllegalArgumentException(StatsEngineCoreMessages.rowIndex + row
-					+ StatsEngineCoreMessages.tooBigMax + nrow + ")"); //$NON-NLS-1$ 
+			throw new IllegalArgumentException(StatsEngineCoreMessages.bind(StatsEngineCoreMessages.rowIndex, row, nrow)); 
 		}
 		if (col < 0 || col >= ncol) {
-			throw new IllegalArgumentException(StatsEngineCoreMessages.colIndex + col
-					+ StatsEngineCoreMessages.tooBigMax + ncol + ")"); //$NON-NLS-1$ 
+			throw new IllegalArgumentException(StatsEngineCoreMessages.bind(StatsEngineCoreMessages.colIndex, col, ncol)); 
 		}
 		// appel à R
 		try {
