mirror of
https://github.com/Frooodle/Stirling-PDF.git
synced 2024-12-21 19:08:24 +01:00
81 lines
3.3 KiB
Java
81 lines
3.3 KiB
Java
|
package stirling.software.Stirling.Stats;
|
||
|
|
||
|
import java.nio.file.*;
|
||
|
import java.nio.charset.MalformedInputException;
|
||
|
import java.nio.charset.StandardCharsets;
|
||
|
import java.io.*;
|
||
|
import java.util.*;
|
||
|
|
||
|
public class PropSync {
|
||
|
|
||
|
public static void main(String[] args) throws IOException {
|
||
|
File folder = new File("C:\\Users\\systo\\git\\Stirling-PDF\\src\\main\\resources");
|
||
|
File[] files = folder.listFiles((dir, name) -> name.matches("messages_.*\\.properties"));
|
||
|
|
||
|
List<String> enLines = Files.readAllLines(Paths.get(folder + "\\messages_en_GB.properties"), StandardCharsets.UTF_8);
|
||
|
Map<String, String> enProps = linesToProps(enLines);
|
||
|
|
||
|
for (File file : files) {
|
||
|
if (!file.getName().equals("messages_en_GB.properties")) {
|
||
|
System.out.println("Processing file: " + file.getName());
|
||
|
List<String> lines;
|
||
|
try {
|
||
|
lines = Files.readAllLines(file.toPath(), StandardCharsets.UTF_8);
|
||
|
} catch (MalformedInputException e) {
|
||
|
System.out.println("Skipping due to not UTF8 format for file: " + file.getName());
|
||
|
continue;
|
||
|
} catch (IOException e) {
|
||
|
throw new UncheckedIOException(e);
|
||
|
}
|
||
|
|
||
|
Map<String, String> currentProps = linesToProps(lines);
|
||
|
List<String> newLines = syncPropsWithLines(enProps, currentProps, enLines);
|
||
|
|
||
|
Files.write(file.toPath(), newLines, StandardCharsets.UTF_8);
|
||
|
System.out.println("Finished processing file: " + file.getName());
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
private static Map<String, String> linesToProps(List<String> lines) {
|
||
|
Map<String, String> props = new LinkedHashMap<>();
|
||
|
for (String line : lines) {
|
||
|
if (!line.trim().isEmpty() && line.contains("=")) {
|
||
|
String[] parts = line.split("=", 2);
|
||
|
props.put(parts[0].trim(), parts[1].trim());
|
||
|
}
|
||
|
}
|
||
|
return props;
|
||
|
}
|
||
|
|
||
|
private static List<String> syncPropsWithLines(Map<String, String> enProps, Map<String, String> currentProps, List<String> enLines) {
|
||
|
List<String> newLines = new ArrayList<>();
|
||
|
boolean needsTranslateComment = false; // flag to check if we need to add "TODO: Translate"
|
||
|
|
||
|
for (String line : enLines) {
|
||
|
if (line.contains("=")) {
|
||
|
String key = line.split("=", 2)[0].trim();
|
||
|
|
||
|
if (currentProps.containsKey(key)) {
|
||
|
newLines.add(key + "=" + currentProps.get(key));
|
||
|
needsTranslateComment = false;
|
||
|
} else {
|
||
|
if (!needsTranslateComment) {
|
||
|
newLines.add("##########################");
|
||
|
newLines.add("### TODO: Translate ###");
|
||
|
newLines.add("##########################");
|
||
|
needsTranslateComment = true;
|
||
|
}
|
||
|
newLines.add(line);
|
||
|
}
|
||
|
} else {
|
||
|
// handle comments and other non-property lines
|
||
|
newLines.add(line);
|
||
|
needsTranslateComment = false; // reset the flag when we encounter comments or empty lines
|
||
|
}
|
||
|
}
|
||
|
|
||
|
return newLines;
|
||
|
}
|
||
|
}
|