Files
overtime-guard/Localization.bas

293 lines
9.7 KiB
QBasic

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("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("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("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("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("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("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("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("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("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("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