mastered translations

This commit is contained in:
2025-06-27 22:57:41 +02:00
parent 6ef4576cb2
commit f81fa50f27
6 changed files with 57 additions and 42 deletions

View File

@@ -3,13 +3,17 @@ package de.srsoftware.umbrella.translations;
import static java.lang.System.Logger.Level.INFO;
import static java.lang.System.Logger.Level.WARNING;
import static java.nio.charset.StandardCharsets.UTF_8;
import com.sun.net.httpserver.HttpExchange;
import de.srsoftware.tools.Path;
import de.srsoftware.tools.PathHandler;
import org.json.JSONObject;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.net.URL;
import java.nio.charset.StandardCharsets;
import java.util.HashMap;
import java.util.Map;
@@ -18,29 +22,31 @@ public class Translations extends PathHandler {
private HashMap<String, JSONObject> translations = new HashMap<>();
public Translations(){
translations.put("en", new JSONObject(Map.of("Login",Map.of("Login","Nooo!"))));
}
@Override
public boolean doGet(Path path, HttpExchange ex) throws IOException {
LOG.log(INFO,"doGet({0},ex)",path);
allowOrigin(ex,"*");
if (path.empty())return sendContent(ex,501,"Language missing");
var lang = path.pop();
if (path.empty())return sendContent(ex,501,"Page missing");
var page = path.pop();
var translationsForLang = translations.get(lang);
if (translationsForLang == null) translations.put(lang,translationsForLang = loadTranslations(lang));
if (!translationsForLang.has(page)) return sendContent(ex,404,new JSONObject());
var translations = translationsForLang.get(page);
if (translations instanceof JSONObject json) sendContent(ex,json);
return sendContent(ex,500,translations);
return sendContent(ex,translationsForLang);
}
private JSONObject loadTranslations(String lang) {
private JSONObject loadTranslations(String lang) throws IOException {
LOG.log(WARNING,"loadTranslations({0} not implemented!",lang);
return new JSONObject();
var filename = lang + ".json";
URL url = getClass().getClassLoader().getResource(filename);
if (url == null) return new JSONObject();
var bos = new ByteArrayOutputStream();
var conn = url.openConnection();
try (var stream = conn.getInputStream()){
stream.transferTo(bos);
return new JSONObject(bos.toString(UTF_8));
} catch (Exception e) {
LOG.log(WARNING,"Failed to load {0}",url);
return new JSONObject();
}
}
}

View File

@@ -0,0 +1,5 @@
{
'login' : {
'Login' : "Mist!"
}
}