From 2b2d57af464ed19f89a068e0176d5d11a9323dc1 Mon Sep 17 00:00:00 2001 From: erinn Date: Mon, 22 Feb 2021 18:55:10 -0800 Subject: [PATCH] translations wip --- l10n.yaml | 3 + lib/l10n/intl_de.arb | 135 ++++++++++++++++++++++++++++++++++ lib/l10n/intl_en.arb | 134 +++++++++++++++++++++++++++++++++ lib/l10n/intl_es.arb | 135 ++++++++++++++++++++++++++++++++++ lib/l10n/intl_fr.arb | 135 ++++++++++++++++++++++++++++++++++ lib/l10n/intl_it.arb | 135 ++++++++++++++++++++++++++++++++++ lib/l10n/intl_pt.arb | 135 ++++++++++++++++++++++++++++++++++ lib/main.dart | 6 +- lib/model.dart | 2 +- lib/views/profilemgrview.dart | 8 +- pubspec.lock | 111 +++++++++++++++++++++++++++- pubspec.yaml | 18 ++++- 12 files changed, 949 insertions(+), 8 deletions(-) create mode 100644 l10n.yaml create mode 100644 lib/l10n/intl_de.arb create mode 100644 lib/l10n/intl_en.arb create mode 100644 lib/l10n/intl_es.arb create mode 100644 lib/l10n/intl_fr.arb create mode 100644 lib/l10n/intl_it.arb create mode 100644 lib/l10n/intl_pt.arb diff --git a/l10n.yaml b/l10n.yaml new file mode 100644 index 0000000..4254456 --- /dev/null +++ b/l10n.yaml @@ -0,0 +1,3 @@ +arb-dir: lib/l10n +template-arb-file: intl_en.arb +output-localization-file: app_localizations.dart diff --git a/lib/l10n/intl_de.arb b/lib/l10n/intl_de.arb new file mode 100644 index 0000000..2487424 --- /dev/null +++ b/lib/l10n/intl_de.arb @@ -0,0 +1,135 @@ +{ + "@@locale": "de", + "acceptgroupbtn": "Annehmen", + "acceptgroupinvitelabel": "Möchtest Du die Einladung annehmen", + "acknowledgedlabel": "bestätigt", + "addlistitem": "Liste hinzufügen", + "addlistitembtn": "Element hinzufügen", + "addnewitem": "Ein neues Element zur Liste hinzufügen", + "addnewprofilebtn": "Neues Profil hinzufügen", + "addpeer": "Peer hinzufügen", + "addpeertab": "Einen Peer hinzufügen", + "addprofiletitle": "Neues Profil hinzufügen", + "addresslabel": "Adresse", + "blockbtn": "Peer blockieren", + "blockunknownlabel": "Unbekannte Peers blockieren", + "blocked": "Blockiert", + "builddate %2": "Aufgebaut auf: %2", + "bulletinsbtn": "Meldungen", + "chatbtn": "Chat", + "copiedclipboardnotification": "in die Zwischenablage kopiert", + "copiedtoclipboardnotification": "in die Zwischenablage kopiert", + "copybtn": "Kopieren", + "couldnotsendmsgerror": "Nachricht konnte nicht gesendet werden", + "creategroup": "Gruppe erstellen", + "creategroupbtn": "Anlegen", + "creategrouptab": "Eine Gruppe erstellen", + "creategrouptitle": "Gruppe Anlegen", + "createprofilebtn": "Profil speichern", + "currentpasswordlabel": "derzeitiges Passwort", + "cwtchsettingstitle": "Cwtch Einstellungen", + "cyclecatsandroid": "", + "cyclecatsdesktop": "", + "cyclecoloursandroid": "", + "cyclecoloursdesktop": "", + "cyclemorphsandroid": "", + "cyclemorphsdesktop": "", + "defaultgroupname": "Tolle Gruppe", + "defaultprofilename": "Alice", + "defaultscalingtext": "defaultmäßige Textgröße (Skalierungsfaktor:", + "deletebtn": "Löschen", + "deleteconfirmlabel": "Geben Sie LÖSCHEN zur Bestätigung ein", + "deleteconfirmtext": "LÖSCHEN", + "deleteprofilebtn": "Profil löschen", + "deleteprofileconfirmbtn": "Profil wirklich löschen", + "displaynamelabel": "Angezeigter Name", + "dmtooltip": "Klicken, um DM zu senden", + "dontsavepeerhistory": "PeerVerlauf löschen", + "editprofile": "Profil bearbeiten", + "editprofiletitle": "Profil bearbeiten", + "enterprofilepassword": "Geben Sie ein Passwort ein, um Ihre Profile anzuzeigen", + "error0profilesloadedforpassword": "0 Profile mit diesem Passwort geladen", + "experimentsenabled": "Experimente aktiviert", + "groupaddr": "Adresse", + "groupname": "Gruppenname", + "groupnamelabel": "Gruppenname", + "invitation": "Einladung", + "invitationlabel": "Einladung", + "invitebtn": "Einladen", + "invitetogrouplabel": "In die Gruppe einladen", + "joingroup": "Gruppe beitreten", + "joingrouptab": "Einer Gruppe beitreten", + "largetextlabel": "Groß", + "listsbtn": "Listen", + "loadingtor": "Tor wird geladen...", + "localede": "Deutsche", + "localeen": "", + "localees": "", + "localefr": "", + "localeit": "", + "localept": "", + "membershipdescription": "Unten steht eine Liste der Benutzer, die Nachrichten an die Gruppe gesendet haben. Möglicherweise enthält diese Benutzerzliste nicht alle, die Zugang zur Gruppe haben.", + "networkstatusattemptingtor": "Versuche, eine Verbindung mit dem TorNetzwerk herzustellen", + "networkstatusconnecting": "Verbinde zu Netzwerk und Peers ...", + "networkstatusdisconnected": "Vom Internet getrennt, überprüfen Sie Ihre Verbindung", + "networkstatusonline": "Online", + "newbulletinlabel": "Neue Meldung", + "newconnectionpanetitle": "Neue Verbindung", + "newgroupbtn": "Neue Gruppe anlegen", + "newprofile": "Neues Profil", + "nopasswordwarning": "Wenn für dieses Konto kein Passwort verwendet wird, bedeutet dies, dass alle lokal gespeicherten Daten nicht verschlüsselt werden.", + "password": "Passwort", + "passwordchangeerror": "Fehler beim Ändern des Passworts: Das Passwort wurde abgelehnt", + "passworderrorempty": "Passwort kann nicht leer sein", + "passworderrormatch": "Passwörter stimmen nicht überein", + "password1label": "Passwort", + "password2label": "Passwort erneut eingeben", + "pasteaddresstoaddcontact": "Adresse hier hinzufügen, um einen Kontakt aufzunehmen", + "peeraddress": "Adresse", + "peerblockedmessage": "Peer ist blockiert", + "peername": "Namen", + "peernotonline": "", + "peerofflinemessage": "Peer ist offline, Nachrichten können derzeit nicht zugestellt werden", + "pendinglabel": "Bestätigung ausstehend", + "postnewbulletinlabel": "Neue Meldung veröffentlichen", + "profilename": "Anzeigename", + "profileoniblonlabel": "Senden Sie diese Adresse an Peers, mit denen Sie sich verbinden möchten", + "profileonionlabel": "Senden Sie diese Adresse an Peers, mit denen Sie sich verbinden möchten", + "puzzlegamebtn": "Puzzlespiel", + "radionopassword": "Unverschlüsselt (kein Passwort)", + "radiousepassword": "Passwort", + "rejectgroupbtn": "Ablehnen", + "savebtn": "Speichern", + "savepeerhistory": "PeerVerlauf speichern", + "savepeerhistorydescription": "Legt fest, ob ein mit dem Peer verknüpfter Verlauf gelöscht werden soll oder nicht.", + "saveprofilebtn": "Profil speichern", + "search": "Suche...", + "searchlist": "", + "server": "Server", + "serverconnectivityconnected": "Server verbunden", + "serverconnectivitydisconnected": "Server getrennt", + "serverinfo": "ServerInformationen", + "serverlabel": "Server", + "servernotsynced": "", + "serversynced": "", + "settinginterfacezoom": "Zoomstufe", + "settinglanguage": "Sprache", + "settingtheme": "Thema", + "smalltextlabel": "Klein", + "themedark": "Dunkel", + "themelight": "Licht", + "titleplaceholder": "Titel...", + "todoplaceholder": "noch zu erledigen", + "unblockbtn": "Peer entblockieren", + "unlock": "Entsperren", + "Update": "", + "version %1": "Version %1", + "version %1 builddate %2": "Version: %1 Aufgebaut auf: %2", + "version %1 tor %2": "Version %1 mit tor %2", + "viewgroupmembershiptooltip": "Gruppenmitgliedschaft anzeigen", + "viewserverinfo": "", + "yourdisplayname": "Ihr Anzeigename", + "yourprofiles": "Ihre Profile", + "yourservers": "Ihre Server", + "zoomlabel": "BenutzeroberflächenZoom (betriftt hauptsächlich Text und Knopgrößen)" +} \ No newline at end of file diff --git a/lib/l10n/intl_en.arb b/lib/l10n/intl_en.arb new file mode 100644 index 0000000..574a089 --- /dev/null +++ b/lib/l10n/intl_en.arb @@ -0,0 +1,134 @@ +{ + "@@locale": "en", + "acceptgroupbtn": "Accept", + "acceptgroupinvitelabel": "Do you want to accept the invitation to", + "acknowledgedlabel": "Acknowledged", + "addlistitem": "Add a New List Item", + "addlistitembtn": "Add Item", + "addnewitem": "Add a new item to the list", + "addnewprofilebtn": "Add new profile", + "addpeer": "Add Peer", + "addpeertab": "Add a peer", + "addprofiletitle": "Add new profile", + "addresslabel": "Address", + "blockbtn": "Block Peer", + "blockunknownlabel": "Block Unknown Peers", + "blocked": "Blocked", + "builddate": "Built on: %2", + "bulletinsbtn": "Bulletins", + "chatbtn": "Chat", + "copiedclipboardnotification": "Copied to clipboard", + "copiedtoclipboardnotification": "Copied to Clipboard", + "copybtn": "Copy", + "couldnotsendmsgerror": "Could not send this message", + "creategroup": "Create group", + "creategroupbtn": "Create", + "creategrouptab": "Create a group", + "creategrouptitle": "Create Group", + "createprofilebtn": "Create Profile", + "currentpasswordlabel": "Current Password", + "cwtchsettingstitle": "Cwtch Settings", + "cyclecatsandroid": "Click to cycle category.\nLongpress to reset.", + "cyclecatsdesktop": "Click to cycle category.\nRightclick to reset.", + "cyclecoloursandroid": "Click to cycle colours.\nLongpress to reset.", + "cyclecoloursdesktop": "Click to cycle colours.\nRightclick to reset.", + "cyclemorphsandroid": "Click to cycle morphs.\nLongpress to reset.", + "cyclemorphsdesktop": "Click to cycle morphs.\nRightclick to reset.", + "defaultgroupname": "Awesome Group", + "defaultprofilename": "Alice", + "defaultscalingtext": "Default size text (scale factor:", + "deletebtn": "Delete", + "deleteconfirmlabel": "Type DELETE to confirm", + "deleteconfirmtext": "DELETE", + "deleteprofilebtn": "Delete Profile", + "deleteprofileconfirmbtn": "Really Delete Profile", + "displaynamelabel": "Display Name", + "dmtooltip": "Click to DM", + "dontsavepeerhistory": "Delete Peer History", + "editprofile": "Edit Profille", + "editprofiletitle": "Edit Profile", + "enterprofilepassword": "Enter a password to view your profiles", + "error0profilesloadedforpassword": "0 profiles loaded with that password", + "experimentsenabled": "Experiments enabled", + "groupaddr": "Address", + "groupname": "Group name", + "groupnamelabel": "Group Name", + "invitation": "Invitation", + "invitationlabel": "Invitation", + "invitebtn": "Invite", + "invitetogrouplabel": "Invite to group", + "joingroup": "Join group", + "joingrouptab": "Join a group", + "largetextlabel": "Large", + "listsbtn": "Lists", + "loadingtor": "Loading tor...", + "localede": "Deutsche", + "localeen": "English", + "localees": "Espanol", + "localefr": "Frances", + "localeit": "Italiana", + "localept": "Portuguesa", + "membershipdescription": "Below is a list of users who have sent messages to the group. This list may not reflect all users who have access to the group.", + "networkstatusattemptingtor": "Attempting to connect to Tor network", + "networkstatusconnecting": "Connecting to network and peers...", + "networkstatusdisconnected": "Disconnected from the internet, check your connection", + "networkstatusonline": "Online", + "newbulletinlabel": "New Bulletin", + "newconnectionpanetitle": "New Connection", + "newgroupbtn": "Create new group", + "newprofile": "New Profile", + "nopasswordwarning": "Not using a password on this account means that all data stored locally will not be encrypted", + "password": "Password", + "passwordchangeerror": "Error changing password: Supplied password rejected", + "passworderrorempty": "Password cannot be empty", + "passworderrormatch": "Passwords do not match", + "password1label": "Password", + "password2label": "Reenter password", + "pasteaddresstoaddcontact": "... paste an address here to add a contact...", + "peeraddress": "Address", + "peerblockedmessage": "Peer is blocked", + "peername": "Name", + "peernotonline": "Peer is Offline. Applications cannot be used right now.", + "peerofflinemessage": "Peer is offline, messages can't be delivered right now", + "pendinglabel": "Pending", + "postnewbulletinlabel": "Post new bulletin", + "profilename": "Display name", + "profileoniblonlabel": "Send this address to peers you want to connect with", + "profileonionlabel": "Send this address to peers you want to connect with", + "puzzlegamebtn": "Puzzle Game", + "radionopassword": "Unencrypted (No password)", + "radiousepassword": "Password", + "rejectgroupbtn": "Reject", + "savebtn": "Save", + "savepeerhistory": "Save Peer History", + "savepeerhistorydescription": "Determines whether or not to delete any history associated with the peer.", + "saveprofilebtn": "Save Profile", + "search": "Search...", + "searchlist": "Search List", + "server": "Server", + "serverconnectivityconnected": "Server Connected", + "serverconnectivitydisconnected": "Server Disconnected", + "serverinfo": "Server Information", + "serverlabel": "Server", + "servernotsynced": "Out of Sync", + "serversynced": "Synced", + "settinginterfacezoom": "Zoom level", + "settinglanguage": "Language", + "settingtheme": "Theme", + "smalltextlabel": "Small", + "themedark": "Dark", + "themelight": "Light", + "titleplaceholder": "title...", + "todoplaceholder": "Todo...", + "unblockbtn": "Unblock Peer", + "unlock": "Unlock", + "update": "Update", + "version": "Version %1", + "versiontor": "Version %1 with tor %2", + "viewgroupmembershiptooltip": "View Group Membership", + "viewserverinfo": "Server Info", + "yourdisplayname": "Your Display Name", + "yourprofiles": "Your Profiles", + "yourservers": "Your Servers", + "zoomlabel": "Interface zoom (mostly affects text and button sizes)" +} \ No newline at end of file diff --git a/lib/l10n/intl_es.arb b/lib/l10n/intl_es.arb new file mode 100644 index 0000000..1e6b8cb --- /dev/null +++ b/lib/l10n/intl_es.arb @@ -0,0 +1,135 @@ +{ + "@@locale": "es", + "acceptgroupbtn": "Aceptar", + "acceptgroupinvitelabel": "¿Quieres aceptar la invitación a ", + "acknowledgedlabel": "Reconocido", + "addlistitem": "Añadir un nuevo elemento a la lista", + "addlistitembtn": "Agregar artículo", + "addnewitem": "Añadir un nuevo elemento a la lista", + "addnewprofilebtn": "Agregar nuevo perfil", + "addpeer": "Agregar Contacto", + "addpeertab": "Agregar Contacto", + "addprofiletitle": "Agregar nuevo perfil", + "addresslabel": "Dirección", + "blockbtn": "Bloquear contacto", + "blockunknownlabel": "Bloquear conexiones desconocidas", + "blocked": "Bloqueado", + "builddate %2": "Basado en: %2", + "bulletinsbtn": "Boletines", + "chatbtn": "Chat", + "copiedclipboardnotification": "Copiado al portapapeles", + "copiedtoclipboardnotification": "Copiado al portapapeles", + "copybtn": "Copiar", + "couldnotsendmsgerror": "No se pudo enviar este mensaje", + "creategroup": "Crear perfil", + "creategroupbtn": "Crear", + "creategrouptab": "Crear un grupo", + "creategrouptitle": "Crear un grupo", + "createprofilebtn": "Crear perfil", + "currentpasswordlabel": "Contraseña actual", + "cwtchsettingstitle": "Configuración de Cwtch", + "cyclecatsandroid": "Click para cambiar categoría. Mantenga pulsado para reiniciar.", + "cyclecatsdesktop": "Click para cambiar categoría. Click derecho para reiniciar.", + "cyclecoloursandroid": "Click para cambiar colores. Mantenga pulsado para reiniciar.", + "cyclecoloursdesktop": "Click para cambiar colores. Click derecho para reiniciar.", + "cyclemorphsandroid": "Click para cambiar transformaciones. Mantenga pulsado para reiniciar.", + "cyclemorphsdesktop": "Click para cambiar transformaciones. Click derecho para reiniciar.", + "defaultgroupname": "El Grupo Asombroso", + "defaultprofilename": "Alicia", + "defaultscalingtext": "Tamaño predeterminado de texto (factor de escala:", + "deletebtn": "Eliminar", + "deleteconfirmlabel": "Escribe ELIMINAR para confirmar", + "deleteconfirmtext": "ELIMINAR", + "deleteprofilebtn": "Eliminar Perfil", + "deleteprofileconfirmbtn": "Confirmar eliminar perfil", + "displaynamelabel": "Nombre de Usuario", + "dmtooltip": "Haz clic para enviar mensaje directo", + "dontsavepeerhistory": "Eliminar historial de contacto", + "editprofile": "Editar perfil", + "editprofiletitle": "Editar perfil", + "enterprofilepassword": "Ingresa tu contraseña para ver tus perfiles", + "error0profilesloadedforpassword": "0 perfiles cargados con esa contraseña", + "experimentsenabled": "Experimentos habilitados", + "groupaddr": "Dirección", + "groupname": "Nombre del grupo", + "groupnamelabel": "Nombre del grupo", + "invitation": "Invitación", + "invitationlabel": "Invitación", + "invitebtn": "Invitar", + "invitetogrouplabel": "Invitar al grupo", + "joingroup": "Únete al grupo", + "joingrouptab": "Únete a un grupo", + "largetextlabel": "Grande", + "listsbtn": "Listas", + "loadingtor": "Cargando tor...", + "localede": "Alemán", + "localeen": "Inglés", + "localees": "Español", + "localefr": "Francés", + "localeit": "Italiano", + "localept": "Portugués", + "membershipdescription": "La lista a continuación solo muestra los miembros que han enviado mensajes al grupo, no incluye a todos los usuarios dentro del grupo", + "networkstatusattemptingtor": "Intentando conectarse a la red Tor", + "networkstatusconnecting": "Conectando a la red y a los contactos...", + "networkstatusdisconnected": "Sin conexión, comprueba tu conexión", + "networkstatusonline": "En línea", + "newbulletinlabel": "Nuevo Boletín", + "newconnectionpanetitle": "Nueva conexión", + "newgroupbtn": "Crear un nuevo grupo de chat", + "newprofile": "Nuevo perfil", + "nopasswordwarning": "No usar una contraseña para esta cuenta significa que los datos almacenados localmente no serán encriptados", + "password": "Contraseña", + "passwordchangeerror": "Hubo un error cambiando tu contraseña: la contraseña ingresada fue rechazada", + "passworderrorempty": "El campo de contraseña no puede estar vacío", + "passworderrormatch": "Las contraseñas no coinciden", + "password1label": "Contraseña", + "password2label": "Vuelve a ingresar tu contraseña", + "pasteaddresstoaddcontact": "...pegar una dirección aquí para añadir un contacto...", + "peeraddress": "Dirección", + "peerblockedmessage": "Contacto bloqueado", + "peername": "Nombre", + "peernotonline": "Este contacto no está en línea, la aplicación no puede ser usada en este momento", + "peerofflinemessage": "Este contacto no está en línea, los mensajes no pueden ser entregados en este momento", + "pendinglabel": "Pendiente", + "postnewbulletinlabel": "Publicar nuevo boletín", + "profilename": "Nombre de Usuario", + "profileoniblonlabel": "Envía esta dirección a los contactos con los que quieras conectarte", + "profileonionlabel": "Envía esta dirección a los contactos con los que quieras conectarte", + "puzzlegamebtn": "Juego de rompecabezas", + "radionopassword": "Sin cifrado (sin contraseña)", + "radiousepassword": "Contraseña", + "rejectgroupbtn": "Rechazar", + "savebtn": "Guardar", + "savepeerhistory": "Guardar el historial con contacto", + "savepeerhistorydescription": "Determina si eliminar o no el historial asociado con el contacto.", + "saveprofilebtn": "Guardar perfil", + "search": "Búsqueda...", + "searchlist": "Buscar en la lista", + "server": "Servidor", + "serverconnectivityconnected": "Servidor conectado", + "serverconnectivitydisconnected": "Servidor desconectado", + "serverinfo": "Información del servidor", + "serverlabel": "Servidor", + "servernotsynced": "Fuera de sincronización con el servidor", + "serversynced": "Sincronizado", + "settinginterfacezoom": "Nivel de zoom", + "settinglanguage": "Idioma", + "settingtheme": "Tema", + "smalltextlabel": "Pequeño", + "themedark": "Oscuro", + "themelight": "Claro", + "titleplaceholder": "título...", + "todoplaceholder": "Por hacer...", + "unblockbtn": "Desbloquear contacto", + "unlock": "Desbloquear", + "Update": "Actualizar", + "version %1": "Versión %1", + "version %1 builddate %2": "Versión: %1 Basado en %2", + "version %1 tor %2": "Versión %1 con tor %2", + "viewgroupmembershiptooltip": "Ver membresía del grupo", + "viewserverinfo": "Información del servidor", + "yourdisplayname": "Tu nombre de usuario", + "yourprofiles": "Tus perfiles", + "yourservers": "Tus servidores", + "zoomlabel": "Zoom de la interfaz (afecta principalmente el tamaño del texto y de los botones)" +} \ No newline at end of file diff --git a/lib/l10n/intl_fr.arb b/lib/l10n/intl_fr.arb new file mode 100644 index 0000000..73e8f0a --- /dev/null +++ b/lib/l10n/intl_fr.arb @@ -0,0 +1,135 @@ +{ + "@@locale": "fr", + "acceptgroupbtn": "Accepter", + "acceptgroupinvitelabel": "Voulezvous accepter l'invitation au groupe", + "acknowledgedlabel": "Confirmé", + "addlistitem": "Ajouter un nouvel élément", + "addlistitembtn": "", + "addnewitem": "Ajouter un nouvel élément à la liste", + "addnewprofilebtn": "", + "addpeer": "", + "addpeertab": "", + "addprofiletitle": "", + "addresslabel": "Adresse", + "blockbtn": "", + "blockunknownlabel": "", + "blocked": "", + "builddate %2": "", + "bulletinsbtn": "Bulletins", + "chatbtn": "Discuter", + "copiedclipboardnotification": "Copié dans le pressepapier", + "copiedtoclipboardnotification": "Copié dans le pressepapier", + "copybtn": "Copier", + "couldnotsendmsgerror": "Impossible d'envoyer ce message", + "creategroup": "", + "creategroupbtn": "Créer", + "creategrouptab": "", + "creategrouptitle": "Créer un groupe", + "createprofilebtn": "", + "currentpasswordlabel": "", + "cwtchsettingstitle": "Préférences Cwtch", + "cyclecatsandroid": "", + "cyclecatsdesktop": "", + "cyclecoloursandroid": "", + "cyclecoloursdesktop": "", + "cyclemorphsandroid": "", + "cyclemorphsdesktop": "", + "defaultgroupname": "Un super groupe", + "defaultprofilename": "", + "defaultscalingtext": "Taille par défaut du texte (échelle:", + "deletebtn": "Effacer", + "deleteconfirmlabel": "", + "deleteconfirmtext": "", + "deleteprofilebtn": "", + "deleteprofileconfirmbtn": "", + "displaynamelabel": "Pseudo", + "dmtooltip": "Envoyer un message privé", + "dontsavepeerhistory": "", + "editprofile": "", + "editprofiletitle": "", + "enterprofilepassword": "", + "error0profilesloadedforpassword": "", + "experimentsenabled": "", + "groupaddr": "", + "groupname": "", + "groupnamelabel": "Nom du groupe", + "invitation": "", + "invitationlabel": "Invitation", + "invitebtn": "Invitation", + "invitetogrouplabel": "Inviter quelqu'un", + "joingroup": "", + "joingrouptab": "", + "largetextlabel": "Large", + "listsbtn": "Listes", + "loadingtor": "", + "localede": "", + "localeen": "", + "localees": "", + "localefr": "", + "localeit": "", + "localept": "", + "membershipdescription": "Liste des utilisateurs ayant envoyés un ou plusieurs messages au groupe. Cette liste peut ne pas être representatives de l'ensemble des membres du groupe.", + "networkstatusattemptingtor": "", + "networkstatusconnecting": "", + "networkstatusdisconnected": "", + "networkstatusonline": "", + "newbulletinlabel": "Nouveau bulletin", + "newconnectionpanetitle": "", + "newgroupbtn": "Créer un nouveau groupe", + "newprofile": "", + "nopasswordwarning": "", + "password": "", + "passwordchangeerror": "", + "passworderrorempty": "", + "passworderrormatch": "", + "password1label": "", + "password2label": "", + "pasteaddresstoaddcontact": "... coller une adresse ici pour ajouter un contact...", + "peeraddress": "", + "peerblockedmessage": "", + "peername": "", + "peernotonline": "", + "peerofflinemessage": "", + "pendinglabel": "En attente", + "postnewbulletinlabel": "Envoyer un nouveau bulletin", + "profilename": "", + "profileoniblonlabel": "", + "profileonionlabel": "", + "puzzlegamebtn": "Puzzle", + "radionopassword": "", + "radiousepassword": "", + "rejectgroupbtn": "Refuser", + "savebtn": "Sauvegarder", + "savepeerhistory": "", + "savepeerhistorydescription": "", + "saveprofilebtn": "", + "search": "", + "searchlist": "", + "server": "", + "serverconnectivityconnected": "", + "serverconnectivitydisconnected": "", + "serverinfo": "", + "serverlabel": "Serveur", + "servernotsynced": "", + "serversynced": "", + "settinginterfacezoom": "", + "settinglanguage": "", + "settingtheme": "", + "smalltextlabel": "Petit", + "themedark": "", + "themelight": "", + "titleplaceholder": "titre...", + "todoplaceholder": "A faire...", + "unblockbtn": "", + "unlock": "", + "Update": "", + "version %1": "", + "version %1 builddate %2": "", + "version %1 tor %2": "", + "viewgroupmembershiptooltip": "", + "viewserverinfo": "", + "yourdisplayname": "", + "yourprofiles": "", + "yourservers": "", + "zoomlabel": "Interface zoom (essentiellement la taille du texte et des composants de l'interface)" +} \ No newline at end of file diff --git a/lib/l10n/intl_it.arb b/lib/l10n/intl_it.arb new file mode 100644 index 0000000..e3e2a5c --- /dev/null +++ b/lib/l10n/intl_it.arb @@ -0,0 +1,135 @@ +{ + "@@locale": "it", + "acceptgroupbtn": "Accetta", + "acceptgroupinvitelabel": "Vuoi accettare l'invito a", + "acknowledgedlabel": "Riconosciuto", + "addlistitem": "Aggiungi un nuovo elemento alla lista", + "addlistitembtn": "Aggiungi elemento", + "addnewitem": "Aggiungi un nuovo elemento alla lista", + "addnewprofilebtn": "Aggiungi nuovo profilo", + "addpeer": "Aggiungi peer", + "addpeertab": "Aggiungi un peer", + "addprofiletitle": "Aggiungi nuovo profilo", + "addresslabel": "Indirizzo", + "blockbtn": "Blocca il peer", + "blockunknownlabel": "Blocca peer sconosciuti", + "blocked": "Bloccato", + "builddate %2": "Costruito il: %2", + "bulletinsbtn": "Bollettini", + "chatbtn": "Chat", + "copiedclipboardnotification": "Copiato negli Appunti", + "copiedtoclipboardnotification": "Copiato negli Appunti", + "copybtn": "Copia", + "couldnotsendmsgerror": "Impossibile inviare questo messaggio", + "creategroup": "Crea un gruppo", + "creategroupbtn": "Crea", + "creategrouptab": "Crea un gruppo", + "creategrouptitle": "Crea un gruppo", + "createprofilebtn": "Crea un profilo", + "currentpasswordlabel": "Password corrente", + "cwtchsettingstitle": "Impostazioni di Cwtch", + "cyclecatsandroid": "Fare clic per scorrere le categorie.\nPressione lunga per resettare.", + "cyclecatsdesktop": "Fare clic per scorrere le categorie.\nCliccare con il tasto destro per resettare.", + "cyclecoloursandroid": "Fare clic per scorrere i colori.\nPressione lunga per resettare.", + "cyclecoloursdesktop": "Fare clic per scorrere i colori.\nCliccare con il tasto destro per resettare.", + "cyclemorphsandroid": "Fare clic per scorrere i morph.\nPressione lunga per resettare.", + "cyclemorphsdesktop": "Fare clic per scorrere i morph.\nCliccare con il tasto destro per resettare.", + "defaultgroupname": "Gruppo fantastico", + "defaultprofilename": "Alice", + "defaultscalingtext": "Testo di dimensioni predefinite (fattore di scala:", + "deletebtn": "Elimina", + "deleteconfirmlabel": "Digita ELIMINA per confermare", + "deleteconfirmtext": "ELIMINA", + "deleteprofilebtn": "Elimina profilo", + "deleteprofileconfirmbtn": "Elimina realmente il profilo", + "displaynamelabel": "Nome visualizzato", + "dmtooltip": "Clicca per inviare un Messagio Diretto", + "dontsavepeerhistory": "Elimina cronologia dei peer", + "editprofile": "Modifica profilo", + "editprofiletitle": "Modifica profilo", + "enterprofilepassword": "Inserisci una password per visualizzare i tuoi profili", + "error0profilesloadedforpassword": "0 profili caricati con quella password", + "experimentsenabled": "Esperimenti abilitati", + "groupaddr": "Indirizzo", + "groupname": "Nome del gruppo", + "groupnamelabel": "Nome del gruppo", + "invitation": "Invito", + "invitationlabel": "Invito", + "invitebtn": "Invitare", + "invitetogrouplabel": "Invitare nel gruppo", + "joingroup": "Unisciti al gruppo", + "joingrouptab": "Unisciti a un gruppo", + "largetextlabel": "Grande", + "listsbtn": "Liste", + "loadingtor": "Caricamento di tor...", + "localede": "Tedesco", + "localeen": "Inglese", + "localees": "Spagnolo", + "localefr": "Francese", + "localeit": "Italiano", + "localept": "Portoghese", + "membershipdescription": "Di seguito è riportato un elenco di utenti che hanno inviato messaggi al gruppo. Questo elenco potrebbe non corrispondere a tutti gli utenti che hanno accesso al gruppo.", + "networkstatusattemptingtor": "Tentativo di connessione alla rete Tor", + "networkstatusconnecting": "Connessione alla rete e ai peer ...", + "networkstatusdisconnected": "Disconnesso da Internet, controlla la tua connessione", + "networkstatusonline": "Online", + "newbulletinlabel": "Nuovo bollettino", + "newconnectionpanetitle": "Nuova connessione", + "newgroupbtn": "Crea un nuovo gruppo", + "newprofile": "Nuovo profilo", + "nopasswordwarning": "Non utilizzare una password su questo account significa che tutti i dati archiviati localmente non verranno criptati", + "password": "Password", + "passwordchangeerror": "Errore durante la modifica della password: password fornita rifiutata", + "passworderrorempty": "La password non può essere vuota", + "passworderrormatch": "Le password non corrispondono", + "password1label": "Password", + "password2label": "Reinserire la password", + "pasteaddresstoaddcontact": "... incolla qui un indirizzo per aggiungere un contatto ...", + "peeraddress": "Indirizzo", + "peerblockedmessage": "Il peer è bloccato", + "peername": "Nome", + "peernotonline": "Il peer è offline. Le applicazioni non possono essere utilizzate in questo momento.", + "peerofflinemessage": "Il peer è offline, i messaggi non possono essere recapitati in questo momento", + "pendinglabel": "In corso", + "postnewbulletinlabel": "Pubblica un nuovo bollettino", + "profilename": "Nome visualizzato", + "profileoniblonlabel": "Inviare questo indirizzo ai peer con cui si desidera connettersi", + "profileonionlabel": "Inviare questo indirizzo ai peer con cui si desidera connettersi", + "puzzlegamebtn": "Gioco di puzzle", + "radionopassword": "Non criptato (senza password)", + "radiousepassword": "Password", + "rejectgroupbtn": "Rifiuta", + "savebtn": "Salva", + "savepeerhistory": "Salva cronologia peer", + "savepeerhistorydescription": "Determina se eliminare o meno ogni cronologia eventualmente associata al peer.", + "saveprofilebtn": "Salva il profilo", + "search": "Ricerca...", + "searchlist": "Cerca nella lista", + "server": "Server", + "serverconnectivityconnected": "Server connesso", + "serverconnectivitydisconnected": "Server disconnesso", + "serverinfo": "Informazioni sul server", + "serverlabel": "Server", + "servernotsynced": "Non sincronizzato", + "serversynced": "Sincronizzato", + "settinginterfacezoom": "Livello di zoom", + "settinglanguage": "Lingua", + "settingtheme": "Tema", + "smalltextlabel": "Piccolo", + "themedark": "Scuro", + "themelight": "Chiaro", + "titleplaceholder": "titolo...", + "todoplaceholder": "Da fare...", + "unblockbtn": "Sblocca il peer", + "unlock": "Sblocca", + "Update": "Aggiornamento", + "version %1": "Versione %1", + "version %1 builddate %2": "Versione: %1 Costruito il: %2", + "version %1 tor %2": "Versione %1 con tor %2", + "viewgroupmembershiptooltip": "Visualizza i membri del gruppo", + "viewserverinfo": "Informazioni sul server", + "yourdisplayname": "Il tuo nome visualizzato", + "yourprofiles": "I tuoi profili", + "yourservers": "I tuoi server", + "zoomlabel": "Zoom dell'interfaccia (influisce principalmente sulle dimensioni del testo e dei pulsanti)" +} \ No newline at end of file diff --git a/lib/l10n/intl_pt.arb b/lib/l10n/intl_pt.arb new file mode 100644 index 0000000..3b673e9 --- /dev/null +++ b/lib/l10n/intl_pt.arb @@ -0,0 +1,135 @@ +{ + "@@locale": "pt", + "acceptgroupbtn": "Aceitar", + "acceptgroupinvitelabel": "Você quer aceitar o convite para", + "acknowledgedlabel": "Confirmada", + "addlistitem": "Adicionar Item à Lista", + "addlistitembtn": "", + "addnewitem": "Adicionar novo item à lista", + "addnewprofilebtn": "", + "addpeer": "", + "addpeertab": "", + "addprofiletitle": "", + "addresslabel": "Endereço", + "blockbtn": "", + "blockunknownlabel": "", + "blocked": "", + "builddate %2": "", + "bulletinsbtn": "Boletins", + "chatbtn": "Chat", + "copiedclipboardnotification": "Copiado", + "copiedtoclipboardnotification": "Copiado", + "copybtn": "Copiar", + "couldnotsendmsgerror": "Não deu para enviar esta mensagem", + "creategroup": "", + "creategroupbtn": "Criar", + "creategrouptab": "", + "creategrouptitle": "Criar Grupo", + "createprofilebtn": "", + "currentpasswordlabel": "", + "cwtchsettingstitle": "Configurações do Cwtch", + "cyclecatsandroid": "", + "cyclecatsdesktop": "", + "cyclecoloursandroid": "", + "cyclecoloursdesktop": "", + "cyclemorphsandroid": "", + "cyclemorphsdesktop": "", + "defaultgroupname": "Grupo incrível", + "defaultprofilename": "", + "defaultscalingtext": "Texto tamanho padrão (fator de escala: ", + "deletebtn": "Deletar", + "deleteconfirmlabel": "", + "deleteconfirmtext": "", + "deleteprofilebtn": "", + "deleteprofileconfirmbtn": "", + "displaynamelabel": "Nome de Exibição", + "dmtooltip": "Clique para DM", + "dontsavepeerhistory": "", + "editprofile": "", + "editprofiletitle": "", + "enterprofilepassword": "", + "error0profilesloadedforpassword": "", + "experimentsenabled": "", + "groupaddr": "", + "groupname": "", + "groupnamelabel": "Nome do Grupo", + "invitation": "", + "invitationlabel": "Convite", + "invitebtn": "Convidar", + "invitetogrouplabel": "Convidar ao grupo", + "joingroup": "", + "joingrouptab": "", + "largetextlabel": "Grande", + "listsbtn": "Listas", + "loadingtor": "", + "localede": "", + "localeen": "", + "localees": "", + "localefr": "", + "localeit": "", + "localept": "", + "membershipdescription": "A lista abaixo é de usuários que enviaram mensagens ao grupo. Essa lista pode não refletir todos os usuários que têm acesso ao grupo.", + "networkstatusattemptingtor": "", + "networkstatusconnecting": "", + "networkstatusdisconnected": "", + "networkstatusonline": "", + "newbulletinlabel": "Novo Boletim", + "newconnectionpanetitle": "", + "newgroupbtn": "Criar novo grupo", + "newprofile": "", + "nopasswordwarning": "", + "password": "", + "passwordchangeerror": "", + "passworderrorempty": "", + "passworderrormatch": "", + "password1label": "", + "password2label": "", + "pasteaddresstoaddcontact": "… cole um endereço aqui para adicionar um contato…", + "peeraddress": "", + "peerblockedmessage": "", + "peername": "", + "peernotonline": "", + "peerofflinemessage": "", + "pendinglabel": "Pendente", + "postnewbulletinlabel": "Postar novo boletim", + "profilename": "", + "profileoniblonlabel": "", + "profileonionlabel": "", + "puzzlegamebtn": "Jogo de Adivinhação", + "radionopassword": "", + "radiousepassword": "", + "rejectgroupbtn": "Recusar", + "savebtn": "Salvar", + "savepeerhistory": "", + "savepeerhistorydescription": "", + "saveprofilebtn": "", + "search": "", + "searchlist": "", + "server": "", + "serverconnectivityconnected": "", + "serverconnectivitydisconnected": "", + "serverinfo": "", + "serverlabel": "Servidor", + "servernotsynced": "", + "serversynced": "", + "settinginterfacezoom": "", + "settinglanguage": "", + "settingtheme": "", + "smalltextlabel": "Pequeno", + "themedark": "", + "themelight": "", + "titleplaceholder": "título…", + "todoplaceholder": "Afazer…", + "unblockbtn": "", + "unlock": "", + "Update": "", + "version %1": "", + "version %1 builddate %2": "", + "version %1 tor %2": "", + "viewgroupmembershiptooltip": "", + "viewserverinfo": "", + "yourdisplayname": "", + "yourprofiles": "", + "yourservers": "", + "zoomlabel": "Zoom da interface (afeta principalmente tamanho de texto e botões)" +} \ No newline at end of file diff --git a/lib/main.dart b/lib/main.dart index 76b4646..d4916fd 100644 --- a/lib/main.dart +++ b/lib/main.dart @@ -11,7 +11,8 @@ import 'views/profilemgrview.dart'; import 'views/splashView.dart'; import 'dart:io' show Platform; import 'opaque.dart'; - +import 'package:flutter_localizations/flutter_localizations.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; void main() => runApp(Flwtch()); class Flwtch extends StatefulWidget { @@ -72,6 +73,9 @@ class FlwtchState extends State { builder: (context, widget) { return Consumer( builder: (context, opaque, child) => MaterialApp( + locale: Locale("es",''), + localizationsDelegates: AppLocalizations.localizationsDelegates, + supportedLocales: AppLocalizations.supportedLocales, title: 'Cwtch', theme: ThemeData( visualDensity: VisualDensity.adaptivePlatformDensity, diff --git a/lib/model.dart b/lib/model.dart index 3ec229c..aa5162a 100644 --- a/lib/model.dart +++ b/lib/model.dart @@ -140,7 +140,7 @@ class ProfileInfoState extends ChangeNotifier { String get nickname => this._nickname; set nickname(String newValue) { - this.nickname = newValue; + this._nickname = newValue; notifyListeners(); } diff --git a/lib/views/profilemgrview.dart b/lib/views/profilemgrview.dart index f075eb2..7ee8c2f 100644 --- a/lib/views/profilemgrview.dart +++ b/lib/views/profilemgrview.dart @@ -1,4 +1,5 @@ import 'package:flutter/material.dart'; +import 'package:flutter_gen/gen_l10n/app_localizations.dart'; import 'package:flutter_app/widgets/profilerow.dart'; import 'package:provider/provider.dart'; import '../main.dart'; @@ -26,8 +27,9 @@ class _ProfileMgrViewState extends State { Widget build(BuildContext context) { return Scaffold ( appBar: AppBar( - title: Text('Profiles'), + title: Text(AppLocalizations.of(context).profilename), actions: [ + IconButton(icon: Icon(Icons.bug_report_outlined), onPressed: _testChangingContactInfo), IconButton(icon: Icon(Icons.lock_open), onPressed: _modalUnlockProfiles,), IconButton(icon: Icon(Icons.settings), onPressed: _pushGlobalSettings), ], @@ -41,6 +43,10 @@ class _ProfileMgrViewState extends State { ); } + void _testChangingContactInfo() { + Provider.of(context, listen:false).onions.first.nickname = "yay!"; + } + void _pushGlobalSettings() { Navigator.of(context).push( MaterialPageRoute( diff --git a/pubspec.lock b/pubspec.lock index cd0d8d7..e96e324 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -1,6 +1,20 @@ # Generated by pub # See https://dart.dev/tools/pub/glossary#lockfile packages: + archive: + dependency: transitive + description: + name: archive + url: "https://pub.dartlang.org" + source: hosted + version: "2.0.13" + args: + dependency: transitive + description: + name: args + url: "https://pub.dartlang.org" + source: hosted + version: "1.6.0" async: dependency: transitive description: @@ -43,6 +57,20 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.15.0-nullsafety.5" + convert: + dependency: transitive + description: + name: convert + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.1" + crypto: + dependency: transitive + description: + name: crypto + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.5" cupertino_icons: dependency: "direct main" description: @@ -70,24 +98,71 @@ packages: name: file url: "https://pub.dartlang.org" source: hosted - version: "5.2.1" + version: "6.0.0-nullsafety.4" flutter: dependency: "direct main" description: flutter source: sdk version: "0.0.0" + flutter_localizations: + dependency: "direct main" + description: flutter + source: sdk + version: "0.0.0" + flutter_lokalise: + dependency: "direct dev" + description: + name: flutter_lokalise + url: "https://pub.dartlang.org" + source: hosted + version: "0.1.1" flutter_test: dependency: "direct dev" description: flutter source: sdk version: "0.0.0" + freezed_annotation: + dependency: transitive + description: + name: freezed_annotation + url: "https://pub.dartlang.org" + source: hosted + version: "0.7.1" + http: + dependency: transitive + description: + name: http + url: "https://pub.dartlang.org" + source: hosted + version: "0.12.2" + http_parser: + dependency: transitive + description: + name: http_parser + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.4" intl: dependency: transitive description: name: intl url: "https://pub.dartlang.org" source: hosted - version: "0.16.1" + version: "0.17.0-nullsafety.2" + json_annotation: + dependency: transitive + description: + name: json_annotation + url: "https://pub.dartlang.org" + source: hosted + version: "3.1.1" + logging: + dependency: transitive + description: + name: logging + url: "https://pub.dartlang.org" + source: hosted + version: "0.11.4" matcher: dependency: transitive description: @@ -151,13 +226,20 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.0.4+3" + pedantic: + dependency: transitive + description: + name: pedantic + url: "https://pub.dartlang.org" + source: hosted + version: "1.10.0" platform: dependency: transitive description: name: platform url: "https://pub.dartlang.org" source: hosted - version: "2.2.1" + version: "3.0.0" plugin_platform_interface: dependency: transitive description: @@ -171,7 +253,7 @@ packages: name: process url: "https://pub.dartlang.org" source: hosted - version: "3.0.13" + version: "4.0.0-nullsafety.4" provider: dependency: "direct main" description: @@ -179,6 +261,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "4.3.2+3" + quiver: + dependency: transitive + description: + name: quiver + url: "https://pub.dartlang.org" + source: hosted + version: "2.1.5" sky_engine: dependency: transitive description: flutter @@ -212,6 +301,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "1.1.0-nullsafety.3" + string_unescape: + dependency: transitive + description: + name: string_unescape + url: "https://pub.dartlang.org" + source: hosted + version: "1.5.1" term_glyph: dependency: transitive description: @@ -254,6 +350,13 @@ packages: url: "https://pub.dartlang.org" source: hosted version: "0.1.2" + yaml: + dependency: transitive + description: + name: yaml + url: "https://pub.dartlang.org" + source: hosted + version: "2.2.1" sdks: dart: ">=2.12.0-0.0 <3.0.0" flutter: ">=1.16.0" diff --git a/pubspec.yaml b/pubspec.yaml index 61c15f8..e93ce47 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -24,7 +24,9 @@ dependencies: flutter: sdk: flutter provider: "4.3.2+3" - + #intl_translation: any + flutter_localizations: + sdk: flutter # The following adds the Cupertino Icons font to your application. # Use with the CupertinoIcons class for iOS style icons. @@ -35,12 +37,26 @@ dependencies: dev_dependencies: flutter_test: sdk: flutter + flutter_lokalise: any + +# alternatively: flutter pub run intl_translation:generate_from_arb --output-dir=lib/l10n --no-use-deferred-loading lib/intl/app_localizations.dart lib/l10n/intl_*.arb --api-token X --project-id Y +#flutter_lokalise: +# project_id: "" +# api_token: "" +# include_tags: +# - tag1 +# - tag2 + +flutter_intl: + enabled: true # For information on the generic Dart part of this file, see the # following page: https://dart.dev/tools/pub/pubspec # The following section is specific to Flutter. flutter: + # makes flutter build/run generate app_localizations.dart (per l10n.yaml) + generate: true # The following line ensures that the Material Icons font is # included with your application, so that you can use the icons in