B4A=true Group=Default Group ModulesStructureVersion=1 Type=StaticCode Version=13 @EndOfDesignText@ Sub Process_Globals Private translations As Map Private currentLanguage As String Private initialized As Boolean End Sub Public Sub Initialize If initialized Then Return translations.Initialize LoadLanguage("en", CreateEnglishMap) LoadLanguage("it", CreateItalianMap) LoadLanguage("fr", CreateFrenchMap) LoadLanguage("de", CreateGermanMap) LoadLanguage("es", CreateSpanishMap) currentLanguage = NormalizeLanguage(DetectDeviceLanguage) initialized = True End Sub Public Sub T(Key As String) As String If initialized = False Then Initialize Dim languageMap As Map = translations.Get(currentLanguage) If languageMap.IsInitialized And languageMap.ContainsKey(Key) Then Return languageMap.Get(Key) Dim fallback As Map = translations.Get("en") If fallback.IsInitialized And fallback.ContainsKey(Key) Then Return fallback.Get(Key) Return Key End Sub Public Sub CurrentLanguageCode As String If initialized = False Then Initialize Return currentLanguage End Sub Private Sub LoadLanguage(Code As String, Values As Map) translations.Put(Code, Values) End Sub Private Sub NormalizeLanguage(Code As String) As String Code = Code.ToLowerCase Select True Case Code.StartsWith("it") Return "it" Case Code.StartsWith("fr") Return "fr" Case Code.StartsWith("de") Return "de" Case Code.StartsWith("es") Return "es" Case Else Return "en" End Select End Sub Private Sub DetectDeviceLanguage As String Dim context As JavaObject context.InitializeContext Dim resources As JavaObject = context.RunMethod("getResources", Null) Dim configuration As JavaObject = resources.RunMethod("getConfiguration", Null) Dim locale As JavaObject = configuration.GetField("locale") Dim code As String = locale.RunMethod("getLanguage", Null) If code <> "" Then Return code Dim jo As JavaObject jo.InitializeStatic("java.util.Locale") locale = jo.RunMethod("getDefault", Null) Return locale.RunMethod("getLanguage", Null) End Sub Private Sub CreateEnglishMap As Map Dim m As Map m.Initialize m.Put("app_title", "Overtime Guard") m.Put("start", "Start") m.Put("end", "End") m.Put("pause", "Pause") m.Put("end_pause", "End pause") m.Put("stats", "Stats") m.Put("config", "Config") m.Put("bg", "Bg") m.Put("help", "Help") m.Put("statistics", "Statistics") m.Put("close", "Close") m.Put("work_start", "Work start") m.Put("pause_start", "Pause start") m.Put("pause_end", "Pause end") m.Put("work_end", "Work end") m.Put("set_config", "Set config") m.Put("reset_config", "Reset config") m.Put("clear_today", "Clear today") m.Put("include_pause_total", "Include breaks in total") m.Put("date", "Date") m.Put("work", "Work") m.Put("pause_col", "Pause") m.Put("overtime", "Overtime") m.Put("totals", "Totals") m.Put("manual_mode", "Manual mode") m.Put("auto_recording", "Auto: recording...") m.Put("auto_paused", "Auto: paused...") m.Put("auto_stopped", "Auto: stopped...") m.Put("use_hhmm", "Use HH:MM times.") m.Put("times_order", "Times must be in order.") m.Put("work_exceed", "Configured work cannot exceed 8 hours.") m.Put("auto_enabled", "Automatic config enabled.") m.Put("auto_disabled", "Automatic config disabled.") m.Put("no_day_to_clear", "No day to clear.") m.Put("clear_today_title", "Clear today") m.Put("clear_today_confirm", "Clear all recorded data for") m.Put("clear_button", "Clear") m.Put("cancel", "Cancel") m.Put("today_cleared", "Today cleared.") m.Put("limit_reached", "9-hour limit already reached for this workday.") Return m End Sub Private Sub CreateItalianMap As Map Dim m As Map m.Initialize m.Put("app_title", "Overtime Guard") m.Put("start", "Start") m.Put("end", "End") m.Put("pause", "Pausa") m.Put("end_pause", "Fine pausa") m.Put("stats", "Statistiche") m.Put("config", "Config") m.Put("bg", "Sfondo") m.Put("help", "Help") m.Put("statistics", "Statistiche") m.Put("close", "Chiudi") m.Put("work_start", "Inizio lavoro") m.Put("pause_start", "Inizio pausa") m.Put("pause_end", "Fine pausa") m.Put("work_end", "Fine lavoro") m.Put("set_config", "Imposta config") m.Put("reset_config", "Reset config") m.Put("clear_today", "Azzera oggi") m.Put("include_pause_total", "Includi pause nel totale") m.Put("date", "Data") m.Put("work", "Lavoro") m.Put("pause_col", "Pausa") m.Put("overtime", "Straord.") m.Put("totals", "Totali") m.Put("manual_mode", "Modalita manuale") m.Put("auto_recording", "Auto: registrazione...") m.Put("auto_paused", "Auto: pausa...") m.Put("auto_stopped", "Auto: fermo...") m.Put("use_hhmm", "Usa orari HH:MM.") m.Put("times_order", "Gli orari devono essere in ordine.") m.Put("work_exceed", "Il lavoro configurato non puo superare 8 ore.") m.Put("auto_enabled", "Configurazione automatica attiva.") m.Put("auto_disabled", "Configurazione automatica disattivata.") m.Put("no_day_to_clear", "Nessun giorno da azzerare.") m.Put("clear_today_title", "Azzera oggi") m.Put("clear_today_confirm", "Cancellare tutti i dati registrati per") m.Put("clear_button", "Azzera") m.Put("cancel", "Annulla") m.Put("today_cleared", "Giornata azzerata.") m.Put("limit_reached", "Limite di 9 ore gia raggiunto per questa giornata.") Return m End Sub Private Sub CreateFrenchMap As Map Dim m As Map m.Initialize m.Put("app_title", "Overtime Guard") m.Put("start", "Demarrer") m.Put("end", "Arreter") m.Put("pause", "Pause") m.Put("end_pause", "Fin pause") m.Put("stats", "Stats") m.Put("config", "Config") m.Put("bg", "Fond") m.Put("help", "Aide") m.Put("statistics", "Statistiques") m.Put("close", "Fermer") m.Put("work_start", "Debut travail") m.Put("pause_start", "Debut pause") m.Put("pause_end", "Fin pause") m.Put("work_end", "Fin travail") m.Put("set_config", "Activer config") m.Put("reset_config", "Reinit config") m.Put("clear_today", "Effacer aujourd'hui") m.Put("include_pause_total", "Inclure les pauses dans le total") m.Put("date", "Date") m.Put("work", "Travail") m.Put("pause_col", "Pause") m.Put("overtime", "Heures sup.") m.Put("totals", "Totaux") m.Put("manual_mode", "Mode manuel") m.Put("auto_recording", "Auto: enregistrement...") m.Put("auto_paused", "Auto: pause...") m.Put("auto_stopped", "Auto: arrete...") m.Put("use_hhmm", "Utilisez des heures HH:MM.") m.Put("times_order", "Les heures doivent etre dans l'ordre.") m.Put("work_exceed", "Le travail configure ne peut pas depasser 8 heures.") m.Put("auto_enabled", "Configuration automatique activee.") m.Put("auto_disabled", "Configuration automatique desactivee.") m.Put("no_day_to_clear", "Aucun jour a effacer.") m.Put("clear_today_title", "Effacer aujourd'hui") m.Put("clear_today_confirm", "Effacer toutes les donnees enregistrees pour") m.Put("clear_button", "Effacer") m.Put("cancel", "Annuler") m.Put("today_cleared", "Journee effacee.") m.Put("limit_reached", "Limite de 9 heures deja atteinte pour cette journee.") Return m End Sub Private Sub CreateGermanMap As Map Dim m As Map m.Initialize m.Put("app_title", "Overtime Guard") m.Put("start", "Start") m.Put("end", "Stopp") m.Put("pause", "Pause") m.Put("end_pause", "Pause beenden") m.Put("stats", "Statistik") m.Put("config", "Konfig") m.Put("bg", "Hint.") m.Put("help", "Hilfe") m.Put("statistics", "Statistik") m.Put("close", "Schliessen") m.Put("work_start", "Arbeitsbeginn") m.Put("pause_start", "Pausenbeginn") m.Put("pause_end", "Pausenende") m.Put("work_end", "Arbeitsende") m.Put("set_config", "Konfig setzen") m.Put("reset_config", "Konfig reset") m.Put("clear_today", "Heute loschen") m.Put("include_pause_total", "Pausen in Summe einbeziehen") m.Put("date", "Datum") m.Put("work", "Arbeit") m.Put("pause_col", "Pause") m.Put("overtime", "Uberzeit") m.Put("totals", "Summen") m.Put("manual_mode", "Manueller Modus") m.Put("auto_recording", "Auto: Aufnahme...") m.Put("auto_paused", "Auto: Pause...") m.Put("auto_stopped", "Auto: gestoppt...") m.Put("use_hhmm", "Bitte HH:MM verwenden.") m.Put("times_order", "Die Zeiten muessen in Reihenfolge sein.") m.Put("work_exceed", "Die konfigurierte Arbeit darf 8 Stunden nicht uberschreiten.") m.Put("auto_enabled", "Automatische Konfiguration aktiviert.") m.Put("auto_disabled", "Automatische Konfiguration deaktiviert.") m.Put("no_day_to_clear", "Kein Tag zum Loschen.") m.Put("clear_today_title", "Heute loschen") m.Put("clear_today_confirm", "Alle erfassten Daten loschen fur") m.Put("clear_button", "Loschen") m.Put("cancel", "Abbrechen") m.Put("today_cleared", "Heutige Daten geloscht.") m.Put("limit_reached", "9-Stunden-Limit fur diesen Arbeitstag bereits erreicht.") Return m End Sub Private Sub CreateSpanishMap As Map Dim m As Map m.Initialize m.Put("app_title", "Overtime Guard") m.Put("start", "Iniciar") m.Put("end", "Detener") m.Put("pause", "Pausa") m.Put("end_pause", "Fin pausa") m.Put("stats", "Stats") m.Put("config", "Config") m.Put("bg", "Fondo") m.Put("help", "Ayuda") m.Put("statistics", "Estadisticas") m.Put("close", "Cerrar") m.Put("work_start", "Inicio trabajo") m.Put("pause_start", "Inicio pausa") m.Put("pause_end", "Fin pausa") m.Put("work_end", "Fin trabajo") m.Put("set_config", "Activar config") m.Put("reset_config", "Reset config") m.Put("clear_today", "Borrar hoy") m.Put("include_pause_total", "Incluir pausas en el total") m.Put("date", "Fecha") m.Put("work", "Trabajo") m.Put("pause_col", "Pausa") m.Put("overtime", "Extra") m.Put("totals", "Totales") m.Put("manual_mode", "Modo manual") m.Put("auto_recording", "Auto: grabando...") m.Put("auto_paused", "Auto: pausa...") m.Put("auto_stopped", "Auto: detenido...") m.Put("use_hhmm", "Usa horas HH:MM.") m.Put("times_order", "Las horas deben estar en orden.") m.Put("work_exceed", "El trabajo configurado no puede superar 8 horas.") m.Put("auto_enabled", "Configuracion automatica activada.") m.Put("auto_disabled", "Configuracion automatica desactivada.") m.Put("no_day_to_clear", "No hay dia para borrar.") m.Put("clear_today_title", "Borrar hoy") m.Put("clear_today_confirm", "Borrar todos los datos registrados de") m.Put("clear_button", "Borrar") m.Put("cancel", "Cancelar") m.Put("today_cleared", "Dia borrado.") m.Put("limit_reached", "Limite de 9 horas ya alcanzado para esta jornada.") Return m End Sub