From 4abbbecce6213831988b23770e8fc59bc8d25504 Mon Sep 17 00:00:00 2001 From: agentbox Date: Sat, 1 Aug 2026 12:11:57 +0000 Subject: [PATCH] =?UTF-8?q?feat:=20i18n=20=E2=80=94=20translate=20Android?= =?UTF-8?q?=20app=20UI=20+=20pass=20device=20lang=20to=20server?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - French (values-fr) and German (values-de) string resources for all app UI: settings dialog, errors, labels, buttons - getDeviceLang() detects Locale.getDefault().getLanguage() and maps to en/fr/de - loadUrl() now appends ?lang=XX to the base URL so the web app renders in the user's device language automatically - English remains the fallback for unsupported languages --- .../com/mealtracker/app/MainActivity.java | 14 +++++++++-- .../app/src/main/res/values-de/strings.xml | 23 +++++++++++++++++++ .../app/src/main/res/values-fr/strings.xml | 23 +++++++++++++++++++ 3 files changed, 58 insertions(+), 2 deletions(-) create mode 100644 android/app/src/main/res/values-de/strings.xml create mode 100644 android/app/src/main/res/values-fr/strings.xml diff --git a/android/app/src/main/java/com/mealtracker/app/MainActivity.java b/android/app/src/main/java/com/mealtracker/app/MainActivity.java index 218a19a..10955f9 100644 --- a/android/app/src/main/java/com/mealtracker/app/MainActivity.java +++ b/android/app/src/main/java/com/mealtracker/app/MainActivity.java @@ -8,6 +8,7 @@ import android.net.ConnectivityManager; import android.net.NetworkInfo; import android.net.http.SslError; import android.os.Bundle; +import java.util.Locale; import android.view.KeyEvent; import android.view.View; import android.webkit.CookieManager; @@ -212,12 +213,21 @@ public class MainActivity extends AppCompatActivity { private void loadUrl(String url) { serverUrl = url; - currentUrl = url; + // Append device language so the web app renders in the user's language + currentUrl = url + "?lang=" + getDeviceLang(); firstLoad = true; errorView.setVisibility(View.GONE); webView.setVisibility(View.VISIBLE); progressBar.setVisibility(View.VISIBLE); - webView.loadUrl(url); + webView.loadUrl(currentUrl); + } + + /** Map the device's system language to one of the supported codes: en, fr, de. */ + private String getDeviceLang() { + String lang = Locale.getDefault().getLanguage(); + if ("fr".equals(lang)) return "fr"; + if ("de".equals(lang)) return "de"; + return "en"; } private void showSettingsDialog() { diff --git a/android/app/src/main/res/values-de/strings.xml b/android/app/src/main/res/values-de/strings.xml new file mode 100644 index 0000000..db1ea27 --- /dev/null +++ b/android/app/src/main/res/values-de/strings.xml @@ -0,0 +1,23 @@ + + + Mahlzeiten-Tracker + Aktualisieren + Einstellungen + Server-Konfiguration + Geben Sie die Basis-URL Ihres Mahlzeiten-Trackers ein: + Die Basisadresse Ihres Servers.\nBeispiel: https://mahlzeiten.beispiel.de + Speichern + Abbrechen + Daten löschen + Mit Server verbunden + Bitte geben Sie eine Basis-URL ein + Keine Netzwerkverbindung.\nZum Wiederholen tippen. + Server nicht erreichbar.\nÜberprüfen Sie die URL und tippen Sie zum Wiederholen.\n\nTipp: Öffnen Sie die URL zuerst in einem Browser. + Server antwortete mit HTTP %d.\nÜberprüfen Sie Ihre Basis-URL und wiederholen Sie. + Kein Server konfiguriert.\nTippen Sie auf ⚙, um Ihre Basis-URL einzugeben. + Lokale Daten gelöscht + ⚠ Zertifikatwarnung + Der Server %1$s verwendet ein nicht vertrauenswürdiges Zertifikat (Fehler %2$d).\n\nDies ist bei selbst gehosteten Servern üblich. Nur fortfahren, wenn Sie diesem Server vertrauen. + Fortfahren + Abbrechen + diff --git a/android/app/src/main/res/values-fr/strings.xml b/android/app/src/main/res/values-fr/strings.xml new file mode 100644 index 0000000..d3de8d6 --- /dev/null +++ b/android/app/src/main/res/values-fr/strings.xml @@ -0,0 +1,23 @@ + + + Suivi Repas + Actualiser + Paramètres + Configuration du serveur + Entrez l\'URL de base de votre Suivi Repas : + L\'adresse de base de votre serveur.\nExemple : https://repas.exemple.com + Enregistrer + Annuler + Effacer données + Connecté au serveur + Veuillez entrer une URL de base + Pas de connexion réseau.\nAppuyez pour réessayer. + Impossible de joindre le serveur.\nVérifiez l\'URL et appuyez pour réessayer.\n\nConseil : vérifiez que l\'URL s\'ouvre d\'abord dans un navigateur. + Le serveur a retourné HTTP %d.\nVérifiez votre URL de base et réessayez. + Aucun serveur configuré.\nAppuyez sur l\'icône ⚙ pour entrer votre URL de base. + Données locales effacées + ⚠ Avertissement certificat + Le serveur %1$s utilise un certificat non fiable (erreur %2$d).\n\nC\'est fréquent pour les serveurs auto-hébergés. Continuez seulement si vous faites confiance à ce serveur. + Continuer + Annuler +