Skip to content

Commit

Permalink
FormattedTextParser implemented (addressing #107)
Browse files Browse the repository at this point in the history
  • Loading branch information
GleammerRay committed Jun 5, 2024
1 parent da025c2 commit 65a5bd4
Show file tree
Hide file tree
Showing 22 changed files with 416 additions and 583 deletions.
9 changes: 7 additions & 2 deletions LOCALIZATION.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,17 @@ All keys starting with '@' are comments that may help you understand what each m

The rest of the entries need translation.

`<b></b>` tags make text <b>bold</b>.
For example, in `Hello <b>world</b>!`, `Hello` will be displayed in regular font and `world` will be bold.

In `%x`, `x` is a placeholder variable, which will be replaced during runtime. You can find more information on such variables in localization comments.

If you need to escape `<`, `%` or any other symbol, and prevent the formatter from recognizing them, you may prefix it with `\\`.

If you wish to test your localization, we offer to build the app with your localization files for you to test on Windows/Linux/Android with unlimited test builds, but do make sure that your translation is complete before asking for a new build. If you are familiar with Git/GitHub, you may take advantage of our GitHub build workflow by submitting a pull request (see [How to submit](#how-to-submit)).

Please keep to same capitalization as original if possible, e.g. if the English localization says 'Hello world' then your localization should have the first letter in uppercase and the rest of the first letters in lowercase, if applicable.

Make sure to keep trailing spaces where it makes sense, some localizations make up multiple messages in the app and have to end with a trailing space for word separation.

## How to submit

### Git/GitHub
Expand Down
90 changes: 27 additions & 63 deletions lib/l10n/app_de.arb

Large diffs are not rendered by default.

99 changes: 31 additions & 68 deletions lib/l10n/app_en.arb

Large diffs are not rendered by default.

68 changes: 18 additions & 50 deletions lib/l10n/app_it.arb
Original file line number Diff line number Diff line change
Expand Up @@ -25,45 +25,27 @@
"biometricAuthentication": "Autenticazione biometrica",
"accountPassword": "Password account",
"changePassword": "Modifica password",
"youAreChangingPasswordFor": "Stai modificando la password per ",
"@youAreChangingPasswordFor": { "description": "This message is followed by a username in the Change password screen" },
"youAreChangingPasswordFor": "Stai modificando la password per %u.",
"@youAreChangingPasswordFor": { "description": "%u is a placeholder that will be found and replaced with the account username." },
"currentPassword": "Password attuale",
"newPassword": "Nuova password",
"changeUsername": "Cambia nome utente",
"newUsername": "Nuovo nome utente",
"currentUsernameIs": "Il nome utente attuale è ",
"@currentUsernameIs": { "description": "This message is followed by a username in the Change username screen" },
"currentUsernameIs": "Il nome utente attuale è %u.",
"@currentUsernameIs": { "description": "%u is a placeholder that will be found and replaced with the account username." },
"typeInTheNewUsername": "Digita il nuovo nome utente",
"couldNotImportAccount": "Impossibile importare l'account",
"passyImport": "Passy - Importazione",
"confirmImport1": "Se l'account che stai importando esiste già, allora ",
"confirmImport2Highlighted": "i relativi dati attuali andranno persi ",
"confirmImport3": "e saranno sostituiti con i dati importati",
"@confirmImport1": { "description": "confirmImport1, confirmImport2Highlighted and confirmImport3 make up a single message used in the Confirm import screen. confirmImport2Highlighted is shown in a more noticeable color to increase user attention." },
"@confirmImport2Highlighted": { "description": "confirmImport1, confirmImport2Highlighted and confirmImport3 make up a single message used in the Confirm import screen. confirmImport2Highlighted is shown in a more noticeable color to increase user attention." },
"@confirmImport3": { "description": "confirmImport1, confirmImport2Highlighted and confirmImport3 make up a single message used in the Confirm import screen. confirmImport2Highlighted is shown in a more noticeable color to increase user attention." },
"enterAccountPasswordToImport": "Inserisci la password dell'account da importare",
"confirmImportMsg": "Se l'account che stai importando esiste già, allora <b>i relativi dati attuali andranno persi</b> e saranno sostituiti con i dati importati.",
"enterAccountPasswordToImport": "Inserisci la password dell'account da importare.",
"enterPassword": "Inserisci la password",
"passyRestore": "Passy - Ripristino",
"confirmRestore1": "Se l'account che stai ripristinando esiste già, allora ",
"confirmRestore2Highlighted": "i relativi dati andranno persi ",
"confirmRestore3": "e sostituiti con quelli del backup",
"@confirmRestore1": { "description": "confirmRestore1, confirmRestore2Highlighted and confirmRestore3 make up a single message used in the Confirm restore screen. confirmImport2Highlighted is shown in a more noticeable color to increase user attention." },
"@confirmRestore2Highlighted": { "description": "confirmRestore1, confirmRestore2Highlighted and confirmRestore3 make up a single message used in the Confirm restore screen. confirmImport2Highlighted is shown in a more noticeable color to increase user attention." },
"@confirmRestore3": { "description": "confirmRestore1, confirmRestore2Highlighted and confirmRestore3 make up a single message used in the Confirm restore screen. confirmImport2Highlighted is shown in a more noticeable color to increase user attention." },
"enterAccountPasswordToRestore": "Inserisci la password dell'account da ripristinare",
"confirmRestoreMsg": "Se l'account che stai ripristinando esiste già, allora <b>i relativi dati andranno persi</b> e sostituiti con quelli del backup.",
"enterAccountPasswordToRestore": "Inserisci la password dell'account da ripristinare.",
"couldNotRestoreAccount": "Impossibile ripristinare l'account",
"connect": "Connetti",
"connect1": "Devi essere nella ",
"connect2Highlighted": "stessa rete ",
"connect3": "come quella dell'host a cui connettersi",
"connect4": "Inserisci l'indirizzo host come visualizzato ",
"connect5Highlighted": "sotto il codice QR",
"@connect1": { "description": "connect1, connect2Highlighted, connect3, connect4 and connect5Highlighted make up a single message used in the Connect screen. The keys ending with 'Highlighted' are shown in a more noticeable color to increase user attention" },
"@connect2Highlighted": { "description": "connect1, connect2Highlighted, connect3, connect4 and connect5Highlighted make up a single message used in the Connect screen. The keys ending with 'Highlighted' are shown in a more noticeable color to increase user attention" },
"@connect3": { "description": "connect1, connect2Highlighted, connect3, connect4 and connect5Highlighted make up a single message used in the Connect screen. The keys ending with 'Highlighted' are shown in a more noticeable color to increase user attention" },
"@connect4": { "description": "connect1, connect2Highlighted, connect3, connect4 and connect5Highlighted make up a single message used in the Connect screen. The keys ending with 'Highlighted' are shown in a more noticeable color to increase user attention" },
"@connect5Highlighted": { "description": "connect1, connect2Highlighted, connect3, connect4 and connect5Highlighted make up a single message used in the Connect screen. The keys ending with 'Highlighted' are shown in a more noticeable color to increase user attention" },
"connectMsg1": "Devi essere nella <b>stessa rete</b> come quella dell'host a cui connettersi.",
"connectMsg2": "Inserisci l'indirizzo host come visualizzato <b>sotto il codice QR</b>.",
"hostAddress": "Indirizzo host",
"credentials": "Credenziali",
"customField": "Campo personalizzato",
Expand Down Expand Up @@ -106,12 +88,8 @@
"export": "Esporta",
"import": "Importa",
"confirmExport": "Conferma esportazione",
"confirmExport1": "Una volta esportati, i dati dell'account diventano ",
"confirmExport2Highlighted": "non crittografati",
"confirmExport3": "Se il file risultato dell'esportazione cade nelle mani sbagliate, tutte le tue informazioni salvate in Passy saranno in pericolo",
"@confirmExport1": { "description": "confirmExport1, confirmExport2Highlighted and confirmExport3 make up a single message used in the Confirm export screen. confirmExport2Highlighted is shown in a more noticeable color to increase user attention." },
"@confirmExport2Highlighted": { "description": "confirmExport1, confirmExport2Highlighted and confirmExport3 make up a single message used in the Confirm export screen. confirmExport2Highlighted is shown in a more noticeable color to increase user attention." },
"@confirmExport3": { "description": "confirmExport1, confirmExport2Highlighted and confirmExport3 make up a single message used in the Confirm export screen. confirmExport2Highlighted is shown in a more noticeable color to increase user attention." },
"confirmExportMsg1": "Una volta esportati, i dati dell'account diventano <b>non crittografati</b>.",
"confirmExportMsg2": "Se il file risultato dell'esportazione cade nelle mani sbagliate, tutte le tue informazioni salvate in Passy saranno in pericolo.",
"cancel": "Annulla",
"confirm": "Conferma",
"exportPassy": "Esporta Passy",
Expand Down Expand Up @@ -163,14 +141,8 @@
"tfaCode": "Codice 2FA",
"visit": "Visita",
"removeAccount": "Rimuovi account",
"confirmRemoveAccount1": "Conferma la rimozione dell'account ",
"confirmRemoveAccount2": "digitando il suo nome utente",
"confirmRemoveAccount3": "Questa azione è ",
"confirmRemoveAccount4Highlighted": "irreversibile",
"@confirmRemoveAccount1": { "description": "confirmRemoveAccount1, confirmRemoveAccount2, confirmRemoveAccount3 and confirmRemoveAccount4Highlighted make up a single message used in the Remove account screen. confirmRemoveAccount1 is followed by the account username. The keys ending with 'Highlighted' are shown in a more noticeable color to increase user attention" },
"@confirmRemoveAccount2": { "description": "confirmRemoveAccount1, confirmRemoveAccount2, confirmRemoveAccount3 and confirmRemoveAccount4Highlighted make up a single message used in the Remove account screen. confirmRemoveAccount1 is followed by the account username. The keys ending with 'Highlighted' are shown in a more noticeable color to increase user attention" },
"@confirmRemoveAccount3": { "description": "confirmRemoveAccount1, confirmRemoveAccount2, confirmRemoveAccount3 and confirmRemoveAccount4Highlighted make up a single message used in the Remove account screen. confirmRemoveAccount1 is followed by the account username. The keys ending with 'Highlighted' are shown in a more noticeable color to increase user attention" },
"@confirmRemoveAccount4Highlighted": { "description": "confirmRemoveAccount1, confirmRemoveAccount2, confirmRemoveAccount3 and confirmRemoveAccount4Highlighted make up a single message used in the Remove account screen. confirmRemoveAccount1 is followed by the account username. The keys ending with 'Highlighted' are shown in a more noticeable color to increase user attention" },
"confirmRemoveAccountMsg": "Conferma la rimozione dell'account %u digitando il suo nome utente.",
"thisActionIsIrreversible": "Questa azione è <b>irreversibile</b>.",
"confirmUsername": "Conferma nome utente",
"usernamesDoNotMatch": "I nomi utente non corrispondono",
"security": "Sicurezza",
Expand All @@ -193,10 +165,8 @@
"searchAllEntries": "Cerca tutte le voci",
"favorites": "Preferiti",
"noFavorites": "Nessun preferito",
"noFavorites1": "È possibile aggiungere preferiti premendo il ",
"noFavorites2": " pulsante nella barra superiore di qualsiasi schermata di immissione",
"@noFavorites1": { "description": "noFavorites, noFavorites1 and noFavorites2 make up a single message used in the Favorites search screen. noFavorites1 is followed by a star icon." },
"@noFavorites2": { "description": "noFavorites, noFavorites1 and noFavorites2 make up a single message used in the Favorites search screen. noFavorites1 is followed by a star icon." },
"noFavoritesMsg": "È possibile aggiungere preferiti premendo il %f pulsante nella barra superiore di qualsiasi schermata di immissione.",
"@noFavoritesMsg": { "description": "%f is a placeholder that will be replaced by the favorites icon." },
"addToFavorites": "Aggiungi ai preferiti",
"removeFromFavorites": "Rimuovi dai preferiti",
"addedToFavorites": "Aggiunto ai preferiti",
Expand All @@ -217,8 +187,6 @@
"importIDCards": "Importa carte d'identità",
"importIdentities": "Importa identità",
"noCSVDataFound": "Nessun dato CSV trovato",
"csvImportMessage1":"Seleziona i valori dei campi CSV in modo che corrispondano alle variabili di insrimento",
"csvImportMessage2": "Questo modello verrà usato per tutte le voci CSV",
"@csvImportMessage1": { "description": "csvImportMessage1 and csvImportMessage2 make up a single message used in the CSV import entries screen" },
"@csvImportMessage2": { "description": "csvImportMessage1 and csvImportMessage2 make up a single message used in the CSV import entries screen" }
"csvImportMsg1":"Seleziona i valori dei campi CSV in modo che corrispondano alle variabili di insrimento.",
"csvImportMsg2": "Questo modello verrà usato per tutte le voci CSV."
}
Loading

0 comments on commit 65a5bd4

Please sign in to comment.