Author: fdesbois Date: 2011-05-04 21:30:55 +0200 (Wed, 04 May 2011) New Revision: 1903 Url: http://nuiton.org/repositories/revision/i18n/1903 Log: #1505 : UTF-8 is default encoding. Only one parameter in maven plugin is sufficient. Definition file will be used by DefaultI18nInitializer. Modified: trunk/maven-i18n-plugin/src/it/ano-encoding/iso-8859-1/pom.xml trunk/maven-i18n-plugin/src/it/ano-encoding/iso-8859-1/verify.groovy trunk/maven-i18n-plugin/src/it/ano-encoding/utf-8/pom.xml trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/AbstractI18nMojo.java trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/GenerateMojo.java trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/GetterMojo.java trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/BundleMojo.java trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/CollectI18nArtifactsMojo.java trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/TapestryBundleMojo.java trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/AbstractI18nParserMojo.java trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/AbstractParserXmlMojo.java trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserGWTJavaMojo.java trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserJavaMojo.java trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserJspMojo.java trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserTapestryMojo.java trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserValidationMojo.java trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserXmlUserMojo.java trunk/nuiton-i18n/src/main/java/org/nuiton/i18n/I18nLanguage.java trunk/nuiton-i18n/src/main/java/org/nuiton/i18n/I18nUtil.java trunk/nuiton-i18n/src/main/java/org/nuiton/i18n/init/DefaultI18nInitializer.java trunk/nuiton-i18n/src/main/java/org/nuiton/i18n/init/I18nInitializer.java trunk/nuiton-i18n/src/test/java/org/nuiton/i18n/I18nTest.java trunk/nuiton-i18n/src/test/resources/META-INF/I18nStoreTest-definition.properties trunk/nuiton-i18n/src/test/resources/META-INF/I18nStoreTest_fr_FR.properties trunk/src/site/apt/index.apt trunk/src/site/en/apt/index.apt Modified: trunk/maven-i18n-plugin/src/it/ano-encoding/iso-8859-1/pom.xml =================================================================== --- trunk/maven-i18n-plugin/src/it/ano-encoding/iso-8859-1/pom.xml 2011-05-04 15:40:06 UTC (rev 1902) +++ trunk/maven-i18n-plugin/src/it/ano-encoding/iso-8859-1/pom.xml 2011-05-04 19:30:55 UTC (rev 1903) @@ -70,7 +70,7 @@ <version>@pom.version@</version> <configuration> <verbose>true</verbose> - <srcEncoding>iso-8859-1</srcEncoding> + <encoding>iso-8859-1</encoding> <bundleOutputName>ResultBundle</bundleOutputName> <bundleOutputPackage>org.nuiton</bundleOutputPackage> </configuration> Modified: trunk/maven-i18n-plugin/src/it/ano-encoding/iso-8859-1/verify.groovy =================================================================== --- trunk/maven-i18n-plugin/src/it/ano-encoding/iso-8859-1/verify.groovy 2011-05-04 15:40:06 UTC (rev 1902) +++ trunk/maven-i18n-plugin/src/it/ano-encoding/iso-8859-1/verify.groovy 2011-05-04 19:30:55 UTC (rev 1903) @@ -36,7 +36,6 @@ content = file.text; for (value in values) { - println("VALUE : " + value); if (!content.contains(value)) { println("Could not find " + value + " in file " + file); return false; Modified: trunk/maven-i18n-plugin/src/it/ano-encoding/utf-8/pom.xml =================================================================== --- trunk/maven-i18n-plugin/src/it/ano-encoding/utf-8/pom.xml 2011-05-04 15:40:06 UTC (rev 1902) +++ trunk/maven-i18n-plugin/src/it/ano-encoding/utf-8/pom.xml 2011-05-04 19:30:55 UTC (rev 1903) @@ -81,7 +81,7 @@ <version>@pom.version@</version> <configuration> <verbose>true</verbose> - <srcEncoding>utf-8</srcEncoding> + <encoding>utf-8</encoding> <bundleOutputName>ResultBundle</bundleOutputName> <bundleOutputPackage>org.nuiton</bundleOutputPackage> </configuration> Modified: trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/AbstractI18nMojo.java =================================================================== --- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/AbstractI18nMojo.java 2011-05-04 15:40:06 UTC (rev 1902) +++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/AbstractI18nMojo.java 2011-05-04 19:30:55 UTC (rev 1903) @@ -47,7 +47,7 @@ * @author tchemit <chemit@codelutin.com> * @author jruchaud <ruchaud@codelutin.com> */ -public abstract class AbstractI18nMojo extends AbstractPlugin { +public abstract class AbstractI18nMojo extends AbstractPlugin implements PluginWithEncoding { /** Le nombre de getters détectés pendant le cycle de vie du build. */ private static int NB_GETTER_FILES; @@ -99,37 +99,14 @@ protected File out; /** - * Deprecated param. + * Encoding used to load and store properties. * * @parameter expression="${i18n.encoding}" default-value="${project.build.sourceEncoding}" * @required - * @deprecated since 2.4, not used anymore, use srcEncoding or outEncoding instead */ protected String encoding; /** - * Encoding used to load files. All external bundle files or from user - * sources will be load using this encoding. The merge in sources (from - * generate goal) will not change this encoding. - * <p/> - * <b>Note:</b> If nothing is filled here, we will use the system - * property {@code file.encoding}. - * - * @parameter expression="${i18n.srcEncoding}" default-value="${project.build.sourceEncoding}" - * @required - */ - protected String srcEncoding; - - /** - * Encoding used to load and store files. Default is iso-8859-1 for - * properties file. - * - * @parameter expression="${i18n.outEncoding}" default-value="iso-8859-1" - * @required - */ - protected String outEncoding; - - /** * To update generated files to user i18n files. * <p/> * <b>Note :</b> By default, this is active, in order to have a project uptodate @@ -346,4 +323,14 @@ public boolean isStrictMode() { return strictMode; } + + @Override + public String getEncoding() { + return encoding; + } + + @Override + public void setEncoding(String encoding) { + this.encoding = encoding; + } } Modified: trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/GenerateMojo.java =================================================================== --- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/GenerateMojo.java 2011-05-04 15:40:06 UTC (rev 1902) +++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/GenerateMojo.java 2011-05-04 19:30:55 UTC (rev 1903) @@ -94,7 +94,6 @@ if (!silent) { getLog().info("config - src basedir : " + src.getAbsolutePath()); getLog().info("config - out basedir : " + out.getAbsolutePath()); - getLog().info("config - src and out encoding : " + srcEncoding); getLog().info("config - locales : " + Arrays.toString(locales)); } for (Locale locale : locales) { @@ -107,13 +106,13 @@ File bundleGetterOut = getI18nFile( out, artifactId + GetterMojo.FROM_GETTERS, locale, false); - SortedProperties propertiesSrc = new SortedProperties(srcEncoding); + SortedProperties propertiesSrc = new SortedProperties(encoding); if (bundleSrc.exists()) { propertiesSrc.load(bundleSrc); } - SortedProperties propertiesOut = new SortedProperties(); + SortedProperties propertiesOut = new SortedProperties(encoding); if (!strictMode) { // si on n'est pas en mode strict, on doit push back in @@ -121,9 +120,7 @@ propertiesOut.putAll(propertiesSrc); } - // Les parser utilisent outEncoding pour gérer les fichiers, donc - // la lecture se fera avec cet encoding et non pas le srcEncoding - propertiesOut.load(bundleGetterOut, outEncoding); + propertiesOut.load(bundleGetterOut); // Parcours des clés for (Object key : propertiesOut.keySet()) { @@ -142,9 +139,7 @@ } } - // La sauvegarde doit assurer l'encoding de départ pour ne pas - // transformer les fichiers sources. - propertiesOut.store(bundleOut, srcEncoding); + propertiesOut.store(bundleOut); // Sauvegarde avant copie if (genSrc && keepBackup) { @@ -160,7 +155,10 @@ if (genSrc) { // Copie des fichiers dans les sources - copyFile(bundleOut, bundleSrc); +// copyFile(bundleOut, bundleSrc); + + propertiesOut.store(bundleSrc); + if (!silent) { getLog().info("copy bundle " + locale + " to src"); } Modified: trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/GetterMojo.java =================================================================== --- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/GetterMojo.java 2011-05-04 15:40:06 UTC (rev 1902) +++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/GetterMojo.java 2011-05-04 19:30:55 UTC (rev 1903) @@ -76,7 +76,7 @@ createDirectoryIfNecessary(bundleGetters.getParentFile()); - SortedProperties propertiesOut = new SortedProperties(outEncoding); + SortedProperties propertiesOut = new SortedProperties(encoding); DirectoryScanner ds = new DirectoryScanner(); ds.setBasedir(out); @@ -91,7 +91,7 @@ // chargement du getter SortedProperties propertiesIn = - new SortedProperties(outEncoding).load(bundleGetter); + new SortedProperties(encoding).load(bundleGetter); // ajout des entrées dans le bundle propertiesOut.putAll(propertiesIn); Modified: trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/BundleMojo.java =================================================================== --- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/BundleMojo.java 2011-05-04 15:40:06 UTC (rev 1902) +++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/BundleMojo.java 2011-05-04 19:30:55 UTC (rev 1903) @@ -116,7 +116,7 @@ ); SortedProperties propertiesOut = - new SortedProperties(outEncoding, false); + new SortedProperties(encoding, false); StringBuilder buffer = new StringBuilder(); URL[] urls = getCollectI18nResources(locale); @@ -131,15 +131,12 @@ } List<String> bundlesUrls = new ArrayList<String>(); - Charset loadEncoding = Charset.forName(srcEncoding); + + Charset loadEncoding = Charset.forName(encoding); for (URL url : urls) { long t000 = System.nanoTime(); I18nBundleEntry bundleEntry = new I18nBundleEntry(url, locale, null); - // Use srcEncoding, i18n files are generated using this encoding - // If bundle are from other libs, maybe encoding could be uncompatible :/ - // Generally those files are ISO Latin1 or UTF-8, reading in - // UTF8 ISO Latin1 files will be Ok. bundleEntry.load(propertiesOut, loadEncoding); String strPath = bundleEntry.getPath().toString(); int index = strPath.indexOf("i18n/"); @@ -215,9 +212,10 @@ getLog().info("prepare i18n definition file in " + defOut.getAbsolutePath()); } - SortedProperties p = new SortedProperties(outEncoding, false); + SortedProperties p = new SortedProperties(encoding, false); p.setProperty(DefaultI18nInitializer.BUNDLE_DEF_LOCALES, bundles); p.setProperty(DefaultI18nInitializer.BUNDLE_DEF_VERSION, version); + p.setProperty(DefaultI18nInitializer.BUNDLE_DEF_ENCODING, encoding); for (Entry<Locale, String> e : bundleDico.entrySet()) { p.setProperty(DefaultI18nInitializer.BUNDLES_FOR_LOCALE + e.getKey().toString(), e.getValue()); Modified: trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/CollectI18nArtifactsMojo.java =================================================================== --- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/CollectI18nArtifactsMojo.java 2011-05-04 15:40:06 UTC (rev 1902) +++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/CollectI18nArtifactsMojo.java 2011-05-04 19:30:55 UTC (rev 1903) @@ -183,7 +183,7 @@ getLog().info("add " + path); } } - writeFile(bundleOut, buffer.toString(), outEncoding); + writeFile(bundleOut, buffer.toString(), encoding); } /** Modified: trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/TapestryBundleMojo.java =================================================================== --- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/TapestryBundleMojo.java 2011-05-04 15:40:06 UTC (rev 1902) +++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/bundle/TapestryBundleMojo.java 2011-05-04 19:30:55 UTC (rev 1903) @@ -86,7 +86,7 @@ } SortedProperties propertiesOut = - new SortedProperties(outEncoding, false); + new SortedProperties(encoding, false); StringBuilder buffer = new StringBuilder(); URL[] urls = getCollectI18nResources(locale); @@ -95,7 +95,7 @@ continue; } - Charset loadEncoding = Charset.forName(outEncoding); + Charset loadEncoding = Charset.forName(encoding); for (URL url : urls) { long t000 = System.nanoTime(); I18nBundleEntry bundleEntry = Modified: trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/AbstractI18nParserMojo.java =================================================================== --- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/AbstractI18nParserMojo.java 2011-05-04 15:40:06 UTC (rev 1902) +++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/AbstractI18nParserMojo.java 2011-05-04 19:30:55 UTC (rev 1903) @@ -139,9 +139,9 @@ public void init() throws Exception { super.init(); t0 = System.nanoTime(); - result = new SortedProperties(outEncoding); - oldParser = new SortedProperties(outEncoding); - oldLanguage = new SortedProperties(outEncoding); + result = new SortedProperties(encoding); + oldParser = new SortedProperties(encoding); + oldLanguage = new SortedProperties(encoding); createDirectoryIfNecessary(out); // // evenements // if (keysModifier) { Modified: trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/AbstractParserXmlMojo.java =================================================================== --- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/AbstractParserXmlMojo.java 2011-05-04 15:40:06 UTC (rev 1902) +++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/AbstractParserXmlMojo.java 2011-05-04 19:30:55 UTC (rev 1903) @@ -258,7 +258,7 @@ private String readInputStream(InputStream in) throws IOException { StringBuilder sb = new StringBuilder(); BufferedReader reader = new BufferedReader( - new InputStreamReader(in, outEncoding)); + new InputStreamReader(in, encoding)); try { String line; Modified: trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserGWTJavaMojo.java =================================================================== --- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserGWTJavaMojo.java 2011-05-04 15:40:06 UTC (rev 1902) +++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserGWTJavaMojo.java 2011-05-04 19:30:55 UTC (rev 1903) @@ -143,7 +143,7 @@ public FileParser newFileParser() { return new GWTJavaFileParser(getLog(), - outEncoding, + encoding, oldParser, isShowTouchedFiles() ); Modified: trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserJavaMojo.java =================================================================== --- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserJavaMojo.java 2011-05-04 15:40:06 UTC (rev 1902) +++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserJavaMojo.java 2011-05-04 19:30:55 UTC (rev 1903) @@ -109,7 +109,7 @@ public FileParser newFileParser() { return new JavaFileParser(getLog(), - outEncoding, + encoding, oldParser, isShowTouchedFiles() ); Modified: trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserJspMojo.java =================================================================== --- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserJspMojo.java 2011-05-04 15:40:06 UTC (rev 1902) +++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserJspMojo.java 2011-05-04 19:30:55 UTC (rev 1903) @@ -152,7 +152,7 @@ final DocumentBuilder builder) { return new XmlFileParser(getLog(), - outEncoding, + encoding, oldParser, showTouchedFiles, rules, Modified: trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserTapestryMojo.java =================================================================== --- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserTapestryMojo.java 2011-05-04 15:40:06 UTC (rev 1902) +++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserTapestryMojo.java 2011-05-04 19:30:55 UTC (rev 1903) @@ -141,7 +141,7 @@ public FileParser newFileParser() { return new TapestryFileParser(getLog(), - outEncoding, + encoding, oldParser, isShowTouchedFiles() ); Modified: trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserValidationMojo.java =================================================================== --- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserValidationMojo.java 2011-05-04 15:40:06 UTC (rev 1902) +++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserValidationMojo.java 2011-05-04 19:30:55 UTC (rev 1903) @@ -144,7 +144,7 @@ builder.setEntityResolver(getEntityResolver()); return new XmlFileParser(getLog(), - outEncoding, + encoding, oldParser, showTouchedFiles, rules, Modified: trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserXmlUserMojo.java =================================================================== --- trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserXmlUserMojo.java 2011-05-04 15:40:06 UTC (rev 1902) +++ trunk/maven-i18n-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserXmlUserMojo.java 2011-05-04 19:30:55 UTC (rev 1903) @@ -106,7 +106,7 @@ @Override protected XmlFileParser newXmlFileParser(XPath xpath, DocumentBuilder builder) { XmlFileParser fileParser = new XmlFileParser(getLog(), - outEncoding, + encoding, oldParser, showTouchedFiles, rules, Modified: trunk/nuiton-i18n/src/main/java/org/nuiton/i18n/I18nLanguage.java =================================================================== --- trunk/nuiton-i18n/src/main/java/org/nuiton/i18n/I18nLanguage.java 2011-05-04 15:40:06 UTC (rev 1902) +++ trunk/nuiton-i18n/src/main/java/org/nuiton/i18n/I18nLanguage.java 2011-05-04 19:30:55 UTC (rev 1903) @@ -139,6 +139,9 @@ // load resources try { + if (log.isInfoEnabled()) { + log.info("Encoding " + encoding + " will be used to load files"); + } for (I18nBundleEntry e : bundleEntries) { e.load(resource, encoding); } Modified: trunk/nuiton-i18n/src/main/java/org/nuiton/i18n/I18nUtil.java =================================================================== --- trunk/nuiton-i18n/src/main/java/org/nuiton/i18n/I18nUtil.java 2011-05-04 15:40:06 UTC (rev 1902) +++ trunk/nuiton-i18n/src/main/java/org/nuiton/i18n/I18nUtil.java 2011-05-04 19:30:55 UTC (rev 1903) @@ -36,7 +36,11 @@ import java.net.URISyntaxException; import java.net.URL; import java.net.URLClassLoader; -import java.util.*; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.List; +import java.util.Locale; +import java.util.Stack; import java.util.jar.Attributes; import java.util.jar.JarFile; import java.util.jar.Manifest; @@ -52,7 +56,7 @@ public static final String UTF_8_ENCONDING = "UTF-8"; - public static final String DEFAULT_ENCODING = ISO_8859_1_ENCONDING; + public static final String DEFAULT_ENCODING = UTF_8_ENCONDING; public static final Locale DEFAULT_LOCALE = Locale.UK; Modified: trunk/nuiton-i18n/src/main/java/org/nuiton/i18n/init/DefaultI18nInitializer.java =================================================================== --- trunk/nuiton-i18n/src/main/java/org/nuiton/i18n/init/DefaultI18nInitializer.java 2011-05-04 15:40:06 UTC (rev 1902) +++ trunk/nuiton-i18n/src/main/java/org/nuiton/i18n/init/DefaultI18nInitializer.java 2011-05-04 19:30:55 UTC (rev 1903) @@ -60,6 +60,8 @@ public static String BUNDLE_DEF_VERSION = "version"; + public static String BUNDLE_DEF_ENCODING = "encoding"; + public static String BUNDLES_FOR_LOCALE = "bundles."; /** the name of the bundle */ @@ -89,14 +91,6 @@ public DefaultI18nInitializer(String bundleName, ClassLoader loader, String i18nPath) throws NullPointerException { - this(bundleName, loader, i18nPath, null); - } - - public DefaultI18nInitializer(String bundleName, - ClassLoader loader, - String i18nPath, - Charset encoding) throws NullPointerException { - super(encoding); if (bundleName == null) { throw new NullPointerException( "parameter 'bundleName' can not be null"); @@ -134,7 +128,7 @@ return url; } - public String resolvDefinition(Properties p) throws Exception { + public String resolvDefinition(Properties properties) throws Exception { String filename = String.format(UNIQUE_BUNDLE_DEF, getBundleName()); @@ -147,12 +141,19 @@ // load definition file InputStream stream = url.openStream(); try { - p.load(stream); + properties.load(stream); stream.close(); } finally { stream.close(); } + // Load encoding from definition file and use it as Charset encoding + if (encoding == null) { + String encoding = properties.getProperty(BUNDLE_DEF_ENCODING); + Charset charset = Charset.forName(encoding); + setEncoding(charset); + } + String prefix = url.toString(); prefix = prefix.substring(0, prefix.length() - filename.length()); Modified: trunk/nuiton-i18n/src/main/java/org/nuiton/i18n/init/I18nInitializer.java =================================================================== --- trunk/nuiton-i18n/src/main/java/org/nuiton/i18n/init/I18nInitializer.java 2011-05-04 15:40:06 UTC (rev 1902) +++ trunk/nuiton-i18n/src/main/java/org/nuiton/i18n/init/I18nInitializer.java 2011-05-04 19:30:55 UTC (rev 1903) @@ -47,10 +47,12 @@ /** Logger */ private static final Log log = LogFactory.getLog(I18nInitializer.class); + protected static Charset defaultEncoding = + Charset.forName(I18nUtil.DEFAULT_ENCODING); + protected Charset encoding; protected I18nInitializer() { - this(null); } /** @@ -59,8 +61,7 @@ * @param encoding Charset to use for Properties loading */ protected I18nInitializer(Charset encoding) { - Charset defaultEncoding = Charset.forName(I18nUtil.DEFAULT_ENCODING); - this.encoding = encoding == null ? defaultEncoding : encoding; + this.encoding = encoding; } /** @@ -90,7 +91,8 @@ } public Charset getEncoding() { - return encoding; + Charset result = encoding == null ? defaultEncoding : encoding; + return result; } public void setEncoding(Charset encoding) { Modified: trunk/nuiton-i18n/src/test/java/org/nuiton/i18n/I18nTest.java =================================================================== --- trunk/nuiton-i18n/src/test/java/org/nuiton/i18n/I18nTest.java 2011-05-04 15:40:06 UTC (rev 1902) +++ trunk/nuiton-i18n/src/test/java/org/nuiton/i18n/I18nTest.java 2011-05-04 19:30:55 UTC (rev 1903) @@ -29,9 +29,7 @@ import org.junit.BeforeClass; import org.junit.Test; import org.nuiton.i18n.init.DefaultI18nInitializer; -import org.nuiton.i18n.init.I18nInitializer; -import java.nio.charset.Charset; import java.util.Locale; /** @@ -106,15 +104,10 @@ } @Test - public void testEncodingUTF8() { + public void testJapanese() { - Charset utf8 = Charset.forName("utf-8"); + I18n.init(initializer, Locale.JAPAN); - I18nInitializer initializerUtf8 = new DefaultI18nInitializer( - I18nStoreTest.class.getSimpleName(), null, null, utf8); - - I18n.init(initializerUtf8, Locale.JAPAN); - Assert.assertNotNull(I18n.store.resolver.getEncoding()); Assert.assertEquals("最初の", I18n._("key.one")); } @@ -130,11 +123,11 @@ I18n.init(initializer, Locale.FRANCE); // I18n.getStore().setLanguage(Locale.FRANCE); - expected = "Clef avec %s"; + expected = "Clé avec %s"; actual = I18n._("key.with.param"); Assert.assertEquals(expected, actual); - expected = "Clef avec param"; + expected = "Clé avec param"; actual = I18n._("key.with.param", "param"); Assert.assertEquals(expected, actual); @@ -175,11 +168,11 @@ I18n.init(initializer, null); - expected = "Clef avec %s"; + expected = "Clé avec %s"; actual = I18n.l_(Locale.FRANCE, "key.with.param"); Assert.assertEquals(expected, actual); - expected = "Clef avec param"; + expected = "Clé avec param"; actual = I18n.l_(Locale.FRANCE, "key.with.param", "param"); Assert.assertEquals(expected, actual); Modified: trunk/nuiton-i18n/src/test/resources/META-INF/I18nStoreTest-definition.properties =================================================================== --- trunk/nuiton-i18n/src/test/resources/META-INF/I18nStoreTest-definition.properties 2011-05-04 15:40:06 UTC (rev 1902) +++ trunk/nuiton-i18n/src/test/resources/META-INF/I18nStoreTest-definition.properties 2011-05-04 19:30:55 UTC (rev 1903) @@ -26,4 +26,5 @@ bundles.en_GB=bundleTest/I18nStoreTest_en_GB.properties bundles.fr_FR=bundleTest/I18nStoreTest_fr_FR.properties bundles.ja_JP=bundleTest/I18nStoreTest_ja_JP.properties +encoding=utf-8 locales=fr_FR,en_GB,ja_JP Modified: trunk/nuiton-i18n/src/test/resources/META-INF/I18nStoreTest_fr_FR.properties =================================================================== --- trunk/nuiton-i18n/src/test/resources/META-INF/I18nStoreTest_fr_FR.properties 2011-05-04 15:40:06 UTC (rev 1902) +++ trunk/nuiton-i18n/src/test/resources/META-INF/I18nStoreTest_fr_FR.properties 2011-05-04 19:30:55 UTC (rev 1903) @@ -24,4 +24,4 @@ ### key.one=Premier key.two=Seconde -key.with.param=Clef avec %s +key.with.param=Clé avec %s Modified: trunk/src/site/apt/index.apt =================================================================== --- trunk/src/site/apt/index.apt 2011-05-04 15:40:06 UTC (rev 1902) +++ trunk/src/site/apt/index.apt 2011-05-04 19:30:55 UTC (rev 1903) @@ -53,33 +53,11 @@ Quoi de neuf dans la version 2.4 - La version 2.4 interprète désormais d'autres encoding que celui par défaut des - Properties (iso-8859-1). + La version 2.4 gère désormais les fichiers properties en UTF-8 par défaut. + Il est cependant possible de modifier cet encoding dans le plugin et via + le {{{/i18n/nuiton-i18n/apidocs/org/nuiton/i18n/init/I18nInitializer.html}I18nInitializer}} + pour l'api runtime. -* Nouveautés dans le plugin maven - - Nouveaux paramètres srcEncoding et outEncoding. - - Le srcEncoding correspond aux fichiers de Properties utilisateurs manipulés - et modifiés dans les ressources (src/main/resources), sa valeur par défaut - devient celle du projet qui est généralement de l'utf-8. Dans ce cas, les - projets qui migreront verront leurs fichiers sources i18n passés - automatiquement en utf-8 (sans caractères unicode échappés). - - Le outEncoding correspond aux fichiers de Properties générés par le plugin, - ces fichiers seront aussi utilisés potentiellement au runtime par l'api. Sa - valeur par défaut reste celle des Properties (iso-8859-1) pour garder le - comportement par défaut de l'api. Si vous changez ce paramètre, il sera - indispensable de changer l'initialisation d'I18n (voir après). - -* Nouveautés dans l'api - - Il est désormais possible de fournir un Charset encoding à l'initialisation - via le {{{/i18n/nuiton-i18n/apidocs/org/nuiton/i18n/init/I18nInitializer.html}I18nInitializer}}. - De cette manière, les fichiers de Properties I18n seront chargés en utilisant - cette encoding. Par défaut le chargement reste cohérent avec le plugin et - les précédentes versions en gardant l'iso-8859-1 comme encoding. - Quoi de neuf dans la version 2.3 La version 2.3 améliore de façon considérable les temps de détection des clefs Modified: trunk/src/site/en/apt/index.apt =================================================================== --- trunk/src/site/en/apt/index.apt 2011-05-04 15:40:06 UTC (rev 1902) +++ trunk/src/site/en/apt/index.apt 2011-05-04 19:30:55 UTC (rev 1903) @@ -51,6 +51,13 @@ - {{{./maven-i18n-plugin/index.html}I18n Maven Plugin}} +What's new in 2.4 version + + The 2.4 version manage properties file with UTF-8 encoding by default. + It's also possible to change this encoding with maven plugin and with + {{{/i18n/nuiton-i18n/apidocs/org/nuiton/i18n/init/I18nInitializer.html}I18nInitializer}} + for runtime api. + What's new in 2.3 version Version 2.3 improves a lot performance on detection of java file i18n keys