package com.constellio.sdk.dev.tools; import java.io.File; import java.io.IOException; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import org.apache.commons.io.FileUtils; import com.constellio.data.utils.LangUtils; import com.constellio.data.utils.LangUtils.ListComparisonResults; import com.constellio.model.conf.FoldersLocator; import com.constellio.model.entities.Language; public class CompareI18nKeys { public static void main(String argv[]) throws Exception { ListComparisonResults<String> results = compare(Language.English); System.out.println(getComparisonMessage(Language.English, results)); } public static String getComparisonMessage(Language language, ListComparisonResults<String> comparisonResults) { StringBuilder result = new StringBuilder(""); String languageFilename = "i18n_" + language.getCode() + ".properties"; result.append("Keys in i18n.properties that are not in " + languageFilename); for (String key : comparisonResults.getRemovedItems()) { result.append("\n\t" + key); } result.append("\n\n\nKeys in " + languageFilename + " that are not in i18n.properties"); for (String key : comparisonResults.getNewItems()) { result.append("\n\t" + key); } return result.toString(); } public static ListComparisonResults<String> compare(Language language) throws Exception { FoldersLocator foldersLocator = new FoldersLocator(); File i18nFolder = foldersLocator.getI18nFolder(); String languageFilename = "i18n_" + language.getCode() + ".properties"; List<String> defaultKeys = loadI18nKeys(new File(i18nFolder, "i18n.properties")); List<String> englishKeys = loadI18nKeys(new File(i18nFolder, languageFilename)); return LangUtils.compare(defaultKeys, englishKeys); } private static List<String> loadI18nKeys(File file) throws IOException { List<String> keys = new ArrayList<>(); Iterator<String> linesIterator = FileUtils.readLines(file).iterator(); while(linesIterator.hasNext()) { String line = linesIterator.next(); while(line.endsWith("\\")) { line += linesIterator.next(); } if (line.contains("=")) { keys.add(line.split("=")[0]); } } return keys; } }