mirror of
https://github.com/keycloak/keycloak.git
synced 2026-01-09 23:12:06 -03:30
Add additional validations for placeholders in message properties
Closes #38540 Signed-off-by: Alexander Schwartz <alexander.schwartz@gmx.net>
This commit is contained in:
parent
29d3dcb49a
commit
04b8f690c4
@ -89,12 +89,12 @@ signedInDevices=Dispositius identificats
|
||||
missingPasswordMessage=«{{0}}»: Indiqueu la contrasenya.
|
||||
otp-help-text=Introduïu el codi de verificació de l'aplicació d'autenticació.
|
||||
error-invalid-uri-scheme=«{{0}}» té un esquema d’URL invàlid.
|
||||
error-user-attribute-read-only=El camp {0} és només de lectura.
|
||||
error-invalid-date=La data «{0}» no és vàlida.
|
||||
missingEmailMessage=«{0}»: Indiqueu una adreça electrònica.
|
||||
error-user-attribute-read-only=El camp {{0}} és només de lectura.
|
||||
error-invalid-date=La data «{{0}}» no és vàlida.
|
||||
missingEmailMessage=«{{0}}»: Indiqueu una adreça electrònica.
|
||||
applicationsIntroMessage=Feu seguiment i gestioneu els permisos de les aplicacions per a accedir al vostre compte
|
||||
error-invalid-length=«{{0}}» ha de tindre una llargària d’entre {{1}} i {{2}}.
|
||||
missingLastNameMessage=«{0}»: Indiqueu els vostres cognoms.
|
||||
missingLastNameMessage=«{{0}}»: Indiqueu els vostres cognoms.
|
||||
linkedLoginProviders=Proveïdors d'entrada enllaçats
|
||||
inUse=En ús
|
||||
client=Client
|
||||
@ -113,13 +113,13 @@ termsOfService=Condicions del servei
|
||||
requestor=Sol·licitant
|
||||
shareWith=Comparteix amb
|
||||
updateCredAriaLabel=Actualitza la credencial
|
||||
error-pattern-no-match=«{0}» no té el format requerit.
|
||||
error-pattern-no-match=«{{0}}» no té el format requerit.
|
||||
application=Aplicació
|
||||
unlinkedLoginProviders=Proveïdors d'entrada no enllaçats
|
||||
applicationDetails=Detalls de l'aplicació
|
||||
successRemovedMessage={{userLabel}} s'ha eliminat.
|
||||
deleteAccountWarning=Això és irreversible. Totes les vostres dades es destruiran permanentment i no seran accessibles.
|
||||
error-person-name-invalid-character=«{0}» conté un caràcter no vàlid.
|
||||
error-person-name-invalid-character=«{{0}}» conté un caràcter no vàlid.
|
||||
user=Usuari
|
||||
applications=Aplicacions
|
||||
username=Nom d'usuari
|
||||
|
||||
@ -17,20 +17,20 @@ edit=Επεξεργασία
|
||||
otp-display-name=εφαρμογή ταυτοποίησης
|
||||
linkedEmpty=Κανένας συνδεδεμένος πάροχος
|
||||
directMembership=Άμεση συμμετοχή
|
||||
error-invalid-length-too-short=Το χαρακτηριστικό {0} πρέπει να έχει ελάχιστο μήκος {1}.
|
||||
error-number-out-of-range-too-big=Το χαρακτηριστικό {0} πρέπει να έχει μέγιστη τιμή {2}.
|
||||
error-invalid-length-too-short=Το χαρακτηριστικό {{0}} πρέπει να έχει ελάχιστο μήκος {{1}}.
|
||||
error-number-out-of-range-too-big=Το χαρακτηριστικό {{0}} πρέπει να έχει μέγιστη τιμή {{2}}.
|
||||
updateEmail=Ενημέρωση email
|
||||
two-factor=Έλεγχος ταυτότητας δύο-παραγόντων
|
||||
signedInDevicesExplanation=Αποσύνδεση από όποια άγνωστη συσκευή.
|
||||
status=Κατάσταση
|
||||
error-number-out-of-range-too-small=Το χαρακτηριστικό {0} πρέπει να έχει ελάχιστη τιμή {1}.
|
||||
error-number-out-of-range-too-small=Το χαρακτηριστικό {{0}} πρέπει να έχει ελάχιστη τιμή {{1}}.
|
||||
removeModalMessage=Αυτό θα αφαιρέσει την τρέχουσα άδεια πρόσβαση που δόθηκε για το {{name}}. Θα πρέπει να δώσετε ξανά πρόσβαση αν θέλετε να χρησιμοποιήσετε αυτή την εφαρμογή.
|
||||
lastName=Επώνυμο
|
||||
invalidEmailMessage=Μη έγκυρη διεύθυνση email.
|
||||
clients=Πελάτες
|
||||
filterByName=Φιλτράρισμα Ανά Όνομα ...
|
||||
refreshPage=Ανανέωση σελίδας
|
||||
error-user-attribute-required=Παρακαλώ ορίστε το χαρακτηριστικό {0}.
|
||||
error-user-attribute-required=Παρακαλώ ορίστε το χαρακτηριστικό {{0}}.
|
||||
currentSession=Τρέχουσα συνεδρία
|
||||
error-empty=Παρακαλώ ορίστε τιμή.
|
||||
error-invalid-uri-fragment=Μη έγκυρο κομμάτι URL.
|
||||
@ -45,7 +45,7 @@ signOutAllDevicesWarning=Αυτή η ενέργεια θα αποσυνδέσε
|
||||
unShareSuccess=Επιτυχής διακοπή διαμοιρασμού πόρου.
|
||||
signingIn=Σε είσοδο
|
||||
stopUsingCred=Διακοπή χρήσης του {{name}};
|
||||
error-number-out-of-range=Το χαρακτηριστικό {0} πρέπει να είναι ένας αριθμός μεταξύ {1} και {2}.
|
||||
error-number-out-of-range=Το χαρακτηριστικό {{0}} πρέπει να είναι ένας αριθμός μεταξύ {{1}} και {{2}}.
|
||||
thirdPartyApp=Τρίτου-μέρους
|
||||
started=Ξεκίνησε
|
||||
updateSuccess=Ο πόρος ενημερώθηκε επιτυχώς.
|
||||
@ -58,7 +58,7 @@ myResources=Οι Πόροι Μου
|
||||
linkedAccountsIntroMessage=Διαχείριση των εισόδων μέσω λογαριασμών σε τρίτους.
|
||||
groupDescriptionLabel=Εμφάνιση ομάδων με τις οποίες έχετε συσχετισθεί
|
||||
resourceAlreadyShared=Ο πόρος ήδη μοιράζεται με αυτό το χρήστη.
|
||||
error-invalid-length-too-long=Το χαρακτηριστικό {0} πρέπει να έχει μέγιστο μήκος {2}.
|
||||
error-invalid-length-too-long=Το χαρακτηριστικό {{0}} πρέπει να έχει μέγιστο μήκος {{2}}.
|
||||
accountUpdatedMessage=Ο λογαριασμός σας έχει ενημερωθεί.
|
||||
logo=Λογότυπο
|
||||
password-help-text=Συνδεθείτε βάζοντας το κωδικό πρόσβασής σας.
|
||||
@ -89,11 +89,11 @@ signedInDevices=Συνδεδεμένες συσκευές
|
||||
missingPasswordMessage=Παρακαλώ ορίστε κωδικό πρόσβασης.
|
||||
otp-help-text=Εισάγετε ένα κωδικό επιβεβαίωσης από την εφαρμογή ταυτοποίησης.
|
||||
error-invalid-uri-scheme=Μη έγκυρο σχήμα URL.
|
||||
error-user-attribute-read-only=Το πεδίο {0} είναι μόνο για ανάγνωση.
|
||||
error-user-attribute-read-only=Το πεδίο {{0}} είναι μόνο για ανάγνωση.
|
||||
error-invalid-date=Μη έγκυρη ημερομηνία.
|
||||
missingEmailMessage=Παρακαλώ ορίστε email.
|
||||
applicationsIntroMessage=Διαχειριστείτε το δικαίωμα της εφαρμογής σας να έχει πρόσβαση στο λογαριασμό σας
|
||||
error-invalid-length=Το χαρακτηριστικό {0} πρέπει να έχει μήκος μεταξύ {1} και {2}.
|
||||
error-invalid-length=Το χαρακτηριστικό {[0}} πρέπει να έχει μήκος μεταξύ {{1}} και {{2}}.
|
||||
missingLastNameMessage=Παρακαλώ ορίστε επώνυμο.
|
||||
linkedLoginProviders=Συνδεδεμένοι πάροχοι εισόδου
|
||||
inUse=Σε χρήση
|
||||
|
||||
@ -5,16 +5,16 @@ backTo=Takaisin {{app}}
|
||||
error-invalid-email=Väärä sähköpostiosoite.
|
||||
myResources=Minun resurssini
|
||||
password=Salasana
|
||||
error-invalid-length-too-long=Ominaisuudella {0} täytyy olla maksimipituus {2}.
|
||||
error-invalid-length-too-long=Ominaisuudella {{0}} täytyy olla maksimipituus {{2}}.
|
||||
accountUpdatedMessage=Käyttäjätiedot päivitetty.
|
||||
error-username-invalid-character=Käyttäjänimi sisältää vääriä merkkejä.
|
||||
error-invalid-value=Väärä arvo.
|
||||
socialLogin=Kirjaudu sosiaalisen median tunnuksilla
|
||||
error-invalid-length-too-short=Ominaisuudella {0} täytyy olla minimipituus {1}.
|
||||
error-invalid-length-too-short=Ominaisuudella {{0}} täytyy olla minimipituus {{1}}.
|
||||
firstName=Etunimi
|
||||
error-number-out-of-range-too-big=Ominaisuudella {0} täytyy olla maksimiarvona {2}.
|
||||
error-number-out-of-range-too-big=Ominaisuudella {{0}} täytyy olla maksimiarvona {{2}}.
|
||||
name=Nimi
|
||||
error-number-out-of-range-too-small=Ominaisuudella {0} täytyy olla minimiarvona {1}.
|
||||
error-number-out-of-range-too-small=Ominaisuudella {{0}} täytyy olla minimiarvona {{1}}.
|
||||
invalidEmailMessage=Virheellinen sähköpostiosoite.
|
||||
lastName=Sukunimi
|
||||
expires=Vanhenee
|
||||
@ -23,13 +23,13 @@ filterByName=Suodata nimen mukaan ...
|
||||
error-invalid-number=Väärä numero.
|
||||
description=Kuvaus
|
||||
missingPasswordMessage=Anna salasana.
|
||||
error-user-attribute-required=Ole hyvä ja määritä ominaisuus {0}.
|
||||
error-user-attribute-required=Ole hyvä ja määritä ominaisuus {{0}}.
|
||||
error-invalid-uri-scheme=Väärä URL\:n malli.
|
||||
error-user-attribute-read-only=Kenttä {0} on "vain luku"-tilassa.
|
||||
error-user-attribute-read-only=Kenttä {{0}} on "vain luku"-tilassa.
|
||||
error-invalid-date=Väärä päivämäärä.
|
||||
missingEmailMessage=Anna sähköpostiosoite.
|
||||
applicationsIntroMessage=Seuraa ja hallitse sovelluksiasi, joilla on pääsy tilille
|
||||
error-invalid-length=Ominaisuudella {0} täytyy olla pituus väliltä {1} ja {2}.
|
||||
error-invalid-length=Ominaisuudella {{0}} täytyy olla pituus väliltä {{1}} ja {{2}}.
|
||||
error-empty=Ole hyvä ja määritä arvo.
|
||||
missingLastNameMessage=Anna sukunimi.
|
||||
error-invalid-uri-fragment=Väärä URL\:n osa.
|
||||
@ -40,7 +40,7 @@ share=Jaa
|
||||
error-invalid-uri=Väärä URL.
|
||||
email=Sähköposti
|
||||
permissionRequests=Lupapyynnöt
|
||||
error-number-out-of-range=Ominaisuuden {0} täytyy olla numero väliltä {1} ja {2}.
|
||||
error-number-out-of-range=Ominaisuuden {{0}} täytyy olla numero väliltä {{1}} ja {{2}}.
|
||||
missingUsernameMessage=Anna käyttäjätunnus.
|
||||
fullName={{givenName}} {{familyName}}
|
||||
resources=Resurssit
|
||||
|
||||
@ -18,20 +18,20 @@ otp-display-name=hitelesítő alkalmazás
|
||||
selectALocale=Nyelv kiválasztása
|
||||
linkedEmpty=Nincsenek összekapcsolt szolgáltatások
|
||||
directMembership=Közvetlen tagság
|
||||
error-invalid-length-too-short={0} minimális hossza {1} karakter.
|
||||
error-number-out-of-range-too-big={0} maximum értéke\: {2}.
|
||||
error-invalid-length-too-short={{0}} minimális hossza {{1}} karakter.
|
||||
error-number-out-of-range-too-big={{0}} maximum értéke\: {{2}}.
|
||||
updateEmail=E-mail cím módosítása
|
||||
two-factor=Kétlépcsős azonosítás
|
||||
signedInDevicesExplanation=Jelentkezzen ki minden ismeretlen eszközből.
|
||||
status=Státusz
|
||||
error-number-out-of-range-too-small={0} minimum értéke\: {1}.
|
||||
error-number-out-of-range-too-small={{0}} minimum értéke\: {{1}}.
|
||||
removeModalMessage=Ezzel törli a(z) {{name}} alkalmazás jelenlegi hozzáféréseit. A hozzáféréseket újra meg kell adni, ha hasznáni szeretné az alkalmazást.
|
||||
lastName=Vezetéknév
|
||||
invalidEmailMessage=Érvénytelen e-mail cím.
|
||||
clients=Kliensek
|
||||
filterByName=Név alapú keresés
|
||||
refreshPage=Oldal újratöltése
|
||||
error-user-attribute-required=Kérem, adja meg a(z) {0} értékét.
|
||||
error-user-attribute-required=Kérem, adja meg a(z) {{0}} értékét.
|
||||
currentSession=Ez a munkamenet
|
||||
error-empty=Kérem, adja meg a mező értékét.
|
||||
error-invalid-uri-fragment=Érvénytelen URL fragmens.
|
||||
@ -46,7 +46,7 @@ signOutAllDevicesWarning=Ezzel a művelettel kijelentkezik az összes bejelentke
|
||||
unShareSuccess=Az erőforrás megosztása megszüntetve
|
||||
signingIn=Bejelentkezés
|
||||
stopUsingCred=Eltávolítja\: {{name}}?
|
||||
error-number-out-of-range={0} értéke {1} és {2} közötti szám kell legyen.
|
||||
error-number-out-of-range={{0}} értéke {{1}} és {{2}} közötti szám kell legyen.
|
||||
thirdPartyApp=Harmadik fél
|
||||
started=Kezdete
|
||||
updateSuccess=Az erőforrás módosítva
|
||||
@ -59,7 +59,7 @@ myResources=Erőforrásaim
|
||||
linkedAccountsIntroMessage=Bejelentkezés kezelése harmadik féltől származó fiókokkal.
|
||||
groupDescriptionLabel=Az Önhöz tartozó csoportok megtekintése
|
||||
resourceAlreadyShared=Az erőforrás már meg van osztva ezzel a felhasználóval.
|
||||
error-invalid-length-too-long={0} maximális hossza {2} karakter.
|
||||
error-invalid-length-too-long={{0}} maximális hossza {{2}} karakter.
|
||||
accountUpdatedMessage=Felhasználói fiókját módosítottuk.
|
||||
logo=Logó
|
||||
password-help-text=Bejelentkezés jelszó segítségével.
|
||||
@ -90,11 +90,11 @@ signedInDevices=Bejelentkezett eszközök
|
||||
missingPasswordMessage=Kérem, adja meg a jelszót.
|
||||
otp-help-text=Hitelesítő kód használata alkalmazás segítségével.
|
||||
error-invalid-uri-scheme=Érvénytelen URL séma.
|
||||
error-user-attribute-read-only=A(z) {0} mező csak olvasható.
|
||||
error-user-attribute-read-only=A(z) {{0}} mező csak olvasható.
|
||||
error-invalid-date=Érvénytelen dátum.
|
||||
missingEmailMessage=Kérem, adja meg az e-mail címet.
|
||||
applicationsIntroMessage=Kezelje alkalmazás jogosultságait, hogy hozzáférjen a fiókjához
|
||||
error-invalid-length={0} hossza {1} és {2} karakter között kell legyen.
|
||||
error-invalid-length={{0}} hossza {{1}} és {{2}} karakter között kell legyen.
|
||||
missingLastNameMessage=Kérem, adja meg a vezetéknevet.
|
||||
linkedLoginProviders=Összekapcsolt hitelesítő szolgáltatások
|
||||
inUse=Használatban
|
||||
|
||||
@ -10,7 +10,7 @@ setUpNew=Impostazione {{name}}
|
||||
lastAccessedOn=Ultimo accesso
|
||||
permissions=Permessi
|
||||
credentialCreatedAt=<0>Creato</0> {{date}}.
|
||||
error-username-invalid-character='{0}' contiene caratteri non validi.
|
||||
error-username-invalid-character='{{0}}' contiene caratteri non validi.
|
||||
infoMessage=Cliccando su 'Rimuovi accesso', rimuoverai le autorizzazioni concesse a questa applicazione. Questa applicazione non utilizzerà più le tue informazioni.
|
||||
unknownOperatingSystem=Sistema operativo sconosciuto
|
||||
edit=Modifica
|
||||
@ -20,26 +20,26 @@ signOut=Esci
|
||||
linkedEmpty=Nessun provider collegato
|
||||
directMembership=Appartenenza diretta
|
||||
accept=Accetta
|
||||
error-invalid-length-too-short='{0}' deve avere una lunghezza minima di {1}.
|
||||
error-number-out-of-range-too-big='{0}' deve avere un valore massimo di {2}.
|
||||
error-invalid-length-too-short='{{0}}' deve avere una lunghezza minima di {{1}}.
|
||||
error-number-out-of-range-too-big='{{0}}' deve avere un valore massimo di {{2}}.
|
||||
updateEmail=Aggiorna email
|
||||
two-factor=Autenticazione a due fattori
|
||||
signedInDevicesExplanation=Uscire da tutti i dispositivi sconosciuti.
|
||||
status=Stato
|
||||
error-number-out-of-range-too-small='{0}' deve avere un valore minimo di {1}.
|
||||
error-number-out-of-range-too-small='{{0}}' deve avere un valore minimo di {{1}}.
|
||||
removeModalMessage=Questo rimuoverà l’autorizzazione di accesso attualmente concessa per {{name}}. Dovrai concedere nuovamente l’accesso se vuoi utilizzare questa applicazione.
|
||||
lastName=Cognome
|
||||
invalidEmailMessage='{{0}}': indirizzo email non valido.
|
||||
clients=Client
|
||||
filterByName=Filtra per nome ...
|
||||
refreshPage=Aggiornare la pagina
|
||||
error-user-attribute-required=Specificare '{0}'.
|
||||
error-user-attribute-required=Specificare '{{0}}'.
|
||||
currentSession=Sessione in corso
|
||||
error-empty=Specificare il valore di '{0}'.
|
||||
error-invalid-uri-fragment='{0}' è un frammento URL non valido.
|
||||
error-empty=Specificare il valore di '{{0}}'.
|
||||
error-invalid-uri-fragment='{{0}}' è un frammento URL non valido.
|
||||
signedOutSession=Disconnesso {{browser}}/{{os}}
|
||||
missingFirstNameMessage='{{0}}': inserisci il nome.
|
||||
error-invalid-blank=Specificare il valore di '{0}'.
|
||||
error-invalid-blank=Specificare il valore di '{{0}}'.
|
||||
share=Condiviso
|
||||
close=Chiudi
|
||||
email=Email
|
||||
@ -48,7 +48,7 @@ signOutAllDevicesWarning=Quest'azione disconnetterà tutti i dispositivi che han
|
||||
unShareSuccess=La condivisione della risorsa è stata rimossa.
|
||||
signingIn=Impostazioni di accesso
|
||||
stopUsingCred=Smettere di usare {{name}}?
|
||||
error-number-out-of-range='{0}' deve essere un numero compreso tra {1} e {2}.
|
||||
error-number-out-of-range='{{0}}' deve essere un numero compreso tra {{1}} e {{2}}.
|
||||
thirdPartyApp=Applicazioni di terze parti
|
||||
started=Iniziato
|
||||
updateSuccess=Risorsa aggiornata con successo.
|
||||
@ -61,13 +61,13 @@ myResources=Le mie risorse
|
||||
linkedAccountsIntroMessage=Gestire gli accessi tramite utenze di terzi.
|
||||
groupDescriptionLabel=Visualizza i gruppi con cui sei associato/a
|
||||
resourceAlreadyShared=La risorsa è già condivisa con questo utente.
|
||||
error-invalid-length-too-long='{0}' deve avere una lunghezza massima di {2}.
|
||||
error-invalid-length-too-long='{{0}}' deve avere una lunghezza massima di {{2}}.
|
||||
accountUpdatedMessage=Il tuo utente è stato aggiornato.
|
||||
logo=Logo
|
||||
password-help-text=Accedere inserendo la password.
|
||||
deleteAccount=Elimina utente
|
||||
add=Aggiungi
|
||||
error-invalid-value='{0}' ha un valore non valido.
|
||||
error-invalid-value='{{0}}' ha un valore non valido.
|
||||
ipAddress=Indirizzo IP
|
||||
resourceName=Nome della risorsa
|
||||
unlinkedEmpty=Nessun provider scollegato
|
||||
@ -84,23 +84,23 @@ password-display-name=Password
|
||||
expires=Scade
|
||||
noGroups=Nessun gruppo
|
||||
notSetUp={{name}} non è impostato.
|
||||
error-invalid-number='{0}' non è un numero valido.
|
||||
error-invalid-number='{{0}}' non è un numero valido.
|
||||
link=Utente collegato
|
||||
description=Descrizione
|
||||
update=Aggiorna
|
||||
signedInDevices=Dispositivi registrati
|
||||
missingPasswordMessage='{{0}}': inserisci la password.
|
||||
otp-help-text=Immettere un codice di verifica dall’applicazione Authenticator.
|
||||
error-invalid-uri-scheme='{0}' ha uno schema URL non valido.
|
||||
error-invalid-date='{0}' è una data non valida.
|
||||
error-invalid-uri-scheme='{{0}}' ha uno schema URL non valido.
|
||||
error-invalid-date='{{0}}' è una data non valida.
|
||||
missingEmailMessage='{{0}}': inserisci l’indirizzo email.
|
||||
applicationsIntroMessage=Traccia e gestisci i permessi delle applicazioni nell’accesso al tuo utente
|
||||
error-invalid-length='{0}' deve avere una lunghezza compresa tra {1} e {2}.
|
||||
error-invalid-length='{{0}}' deve avere una lunghezza compresa tra {{1}} e {{2}}.
|
||||
missingLastNameMessage='{{0}}': inserisci il cognome.
|
||||
linkedLoginProviders=Provider di accesso collegati
|
||||
inUse=In uso
|
||||
client=Client
|
||||
error-invalid-uri='{0}' è un URL non valido.
|
||||
error-invalid-uri='{{0}}' è un URL non valido.
|
||||
systemDefined=Sistema definito
|
||||
internalApp=Interna
|
||||
accessGrantedOn=Accesso concesso il:
|
||||
@ -115,13 +115,13 @@ termsOfService=Termini di servizio
|
||||
requestor=Richiedente
|
||||
shareWith=Condividi con
|
||||
updateCredAriaLabel=Aggiorna credenziali
|
||||
error-pattern-no-match='{0}' non corrisponde al formato richiesto.
|
||||
error-pattern-no-match='{{0}}' non corrisponde al formato richiesto.
|
||||
application=Applicazione
|
||||
unlinkedLoginProviders=Provider di accesso scollegati
|
||||
applicationDetails=Dettagli dell’applicazione
|
||||
successRemovedMessage={{userLabel}} è stato rimosso.
|
||||
deleteAccountWarning=Questa operazione è irreversibile. Tutti i tuoi dati saranno distrutti in modo permanente e non potranno essere recuperati.
|
||||
error-person-name-invalid-character='{0}' contiene caratteri non validi.
|
||||
error-person-name-invalid-character='{{0}}' contiene caratteri non validi.
|
||||
user=Utente
|
||||
applications=Applicazioni
|
||||
username=Nome utente
|
||||
@ -159,7 +159,7 @@ webauthn-help-text=Usa la tua Passkey per accedere.
|
||||
webauthn-passwordless-display-name=Passkey
|
||||
webauthn-passwordless-help-text=Usa la tua Passkey per l'accesso senza password.
|
||||
passwordless=Senza password
|
||||
error-invalid-multivalued-size=Il campo {0} deve avere almeno {1} e al più {2} valore/i.
|
||||
error-invalid-multivalued-size=Il campo {{0}} deve avere almeno {{1}} e al più {{2}} valore/i.
|
||||
recovery-codes-number-used={{0}} codici di recupero usati
|
||||
recovery-codes-number-remaining={{0}} codici di recupero rimanenti
|
||||
recovery-codes-generate-new-codes=Genera nuovi codici per assicurarti l'accesso di emergenza al tuo utente
|
||||
|
||||
@ -60,7 +60,7 @@ unShareAllConfirm=დარწმუნებული ბრძანდებ
|
||||
clientTypeHelp=ამ რესურსის ტიპი. შეიძლება გამოიყენოთ სხვადასხვა იგივე ტიპის რესურსების დასაჯგუფებლად.
|
||||
missingPasswordMessage='{{0}}': მიუთითეთ პაროლი.
|
||||
error-invalid-uri-scheme='{{0}}'-ის URL-ის სქემა არასწორია.
|
||||
error-user-attribute-read-only=ველი ({0}) მხოლოდ-წაკითხვადია.
|
||||
error-user-attribute-read-only=ველი ({{0}}) მხოლოდ-წაკითხვადია.
|
||||
otp-help-text=შეიყვანეთ გადამოწმების კოდი ავთენტიკატორი აპლიკაციიდან.
|
||||
missingLastNameMessage='{{0}}': მიუთითეთ გვარი.
|
||||
unLinkError=მოხსნა შეუძლებელია მიზეზით: {{error}}
|
||||
|
||||
@ -17,20 +17,20 @@ edit=แก้ไข
|
||||
otp-display-name=แอปพลิเคชันพิสูจน์ตัวจริง
|
||||
linkedEmpty=ไม่มีผู้ให้บริการที่เชื่อมโยง
|
||||
directMembership=การเป็นสมาชิกโดยตรง
|
||||
error-invalid-length-too-short=ลักษณะประจำ {0} จะต้องมีความยาวขั้นต่ำ {1}
|
||||
error-number-out-of-range-too-big=ลักษณะประจำ {0} จะต้องมีค่าสูงสุด {2}
|
||||
error-invalid-length-too-short=ลักษณะประจำ {{0}} จะต้องมีความยาวขั้นต่ำ {{1}}
|
||||
error-number-out-of-range-too-big=ลักษณะประจำ {{0}} จะต้องมีค่าสูงสุด {{2}}
|
||||
updateEmail=อัปเดตอีเมล
|
||||
two-factor=การตรวจสอบสิทธิ์แบบสองปัจจัย
|
||||
signedInDevicesExplanation=ลงชื่อออกจากอุปกรณ์ที่ไม่คุ้นเคย
|
||||
status=สถานะ
|
||||
error-number-out-of-range-too-small=ลักษณะประจำ {0} จะต้องมีค่าขั้นต่ำ {1}
|
||||
error-number-out-of-range-too-small=ลักษณะประจำ {{0}} จะต้องมีค่าขั้นต่ำ {{1}}
|
||||
removeModalMessage=การกระทำนี้จะลบสิทธิ์การเข้าถึงที่ให้ไว้แก่ {{name}} คุณจะต้องอนุญาตการเข้าถึงอีกครั้งหากต้องการใช้แอปพลิเคชันนี้
|
||||
lastName=นามสกุล
|
||||
invalidEmailMessage=ที่อยู่อีเมลไม่ถูกต้อง
|
||||
clients=ไคลเอนต์
|
||||
filterByName=กรองตามชื่อ ...
|
||||
refreshPage=รีเฟรชหน้า
|
||||
error-user-attribute-required=โปรดระบุลักษณะประจำ {0}
|
||||
error-user-attribute-required=โปรดระบุลักษณะประจำ {{0}}
|
||||
currentSession=เซสชันปัจจุบัน
|
||||
error-empty=โปรดระบุค่า
|
||||
error-invalid-uri-fragment=fragment URL ไม่ถูกต้อง
|
||||
@ -45,7 +45,7 @@ signOutAllDevicesWarning=การกระทำนี้จะลงชื่
|
||||
unShareSuccess=ยกเลิกการแบ่งปันทรัพยากรสำเร็จ
|
||||
signingIn=ลงชื่อเข้าใช้
|
||||
stopUsingCred=หยุดใช้ {{name}} หรือ?
|
||||
error-number-out-of-range=ลักษณะประจำ {0} จะต้องเป็นจำนวนระหว่าง {1} และ {2}
|
||||
error-number-out-of-range=ลักษณะประจำ {{0}} จะต้องเป็นจำนวนระหว่าง {{1}} และ {{2}}
|
||||
thirdPartyApp=บุคคลที่สาม
|
||||
started=เริ่มต้น
|
||||
updateSuccess=อัปเดตทรัพยากรสำเร็จ
|
||||
@ -58,7 +58,7 @@ myResources=ทรัพยากรของฉัน
|
||||
linkedAccountsIntroMessage=จัดการการเข้าสู่ระบบผ่านบัญชีของบุคคลที่สาม
|
||||
groupDescriptionLabel=ดูกลุ่มที่คุณเชื่อมโยงอยู่
|
||||
resourceAlreadyShared=ทรัพยากรถูกแบ่งปันกับผู้ใช้งานนี้อยู่แล้ว
|
||||
error-invalid-length-too-long=ลักษณะประจำ {0} จะต้องมีความยาวสูงสุด {2}
|
||||
error-invalid-length-too-long=ลักษณะประจำ {{0}} จะต้องมีความยาวสูงสุด {{2}}
|
||||
accountUpdatedMessage=ได้อัพเดตบัญชีของคุณแล้ว
|
||||
logo=โลโก้
|
||||
password-help-text=ลงชื่อเข้าใช้โดยป้อนรหัสผ่านของคุณ
|
||||
@ -89,11 +89,11 @@ signedInDevices=อุปกรณ์ที่ลงชื่อเข้าใ
|
||||
missingPasswordMessage=โปรดระบุรหัสผ่าน
|
||||
otp-help-text=ป้อนรหัสยืนยันจากแอปพลิเคชันพิสูจน์ตัวจริง
|
||||
error-invalid-uri-scheme=scheme URL ไม่ถูกต้อง
|
||||
error-user-attribute-read-only=เขตข้อมูล {0} เป็นแบบอ่านอย่างเดียว
|
||||
error-user-attribute-read-only=เขตข้อมูล {{0}} เป็นแบบอ่านอย่างเดียว
|
||||
error-invalid-date=วันที่ไม่ถูกต้อง
|
||||
missingEmailMessage=โปรดระบุอีเมล
|
||||
applicationsIntroMessage=ติดตามและจัดการการอนุญาตให้แอปพลิเคชันเข้าถึงบัญชีของคุณ
|
||||
error-invalid-length=ลักษณะประจำ {0} จะต้องมีความยาวระหว่าง {1} และ {2}
|
||||
error-invalid-length=ลักษณะประจำ {{0}} จะต้องมีความยาวระหว่าง {{1}} และ {{2}}
|
||||
missingLastNameMessage=โปรดระบุนามสกุล
|
||||
linkedLoginProviders=ผู้ให้บริการเข้าสู่ระบบที่เชื่อมโยง
|
||||
inUse=กำลังใช้งาน
|
||||
|
||||
@ -189,6 +189,6 @@ error-invalid-multivalued-size=屬性 {{0}} 必须至少有 {{1}} 且最多 {{2}
|
||||
recovery-authn-code=我的恢复验证码
|
||||
recovery-authn-codes-display-name=恢复验证码
|
||||
recovery-authn-codes-help-text=如果您的其他 2FA 方式不可用,这些验证码可用于重新获得访问权限。
|
||||
recovery-codes-number-used={0} 使用的恢复验证码
|
||||
recovery-codes-number-remaining={0} 剩余的恢复验证码
|
||||
recovery-codes-number-used={{0}} 使用的恢复验证码
|
||||
recovery-codes-number-remaining={{0}} 剩余的恢复验证码
|
||||
recovery-codes-generate-new-codes=生成新验证码以确保访问您的帐户
|
||||
|
||||
@ -53,8 +53,10 @@ public class VerifyMessageProperties {
|
||||
verifyProblematicBlanks();
|
||||
if (validateMessageFormatQuotes) {
|
||||
verifyMessageFormatQuotes();
|
||||
verifyMessageFormatPlaceholders();
|
||||
} else {
|
||||
verifyNotMessageFormatQuotes();
|
||||
verifyNotMessageFormatPlaceholders();
|
||||
}
|
||||
} catch (IOException e) {
|
||||
throw new MojoExecutionException("Can not read file " + file, e);
|
||||
@ -65,12 +67,7 @@ public class VerifyMessageProperties {
|
||||
private final static Pattern DOUBLE_SINGLE_QUOTES = Pattern.compile("''");
|
||||
|
||||
private void verifyNotMessageFormatQuotes() {
|
||||
PropertyResourceBundle bundle;
|
||||
try (FileInputStream fis = new FileInputStream(file)) {
|
||||
bundle = new PropertyResourceBundle(fis);
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException("unable to read file " + file, e);
|
||||
}
|
||||
PropertyResourceBundle bundle = getPropertyResourceBundle();
|
||||
|
||||
bundle.getKeys().asIterator().forEachRemaining(key -> {
|
||||
String value = bundle.getString(key);
|
||||
@ -87,12 +84,7 @@ public class VerifyMessageProperties {
|
||||
private static final Pattern SINGLE_QUOTE_START = Pattern.compile("^'[^']");
|
||||
|
||||
private void verifyMessageFormatQuotes() {
|
||||
PropertyResourceBundle bundle;
|
||||
try (FileInputStream fis = new FileInputStream(file)) {
|
||||
bundle = new PropertyResourceBundle(fis);
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException("unable to read file " + file, e);
|
||||
}
|
||||
PropertyResourceBundle bundle = getPropertyResourceBundle();
|
||||
|
||||
bundle.getKeys().asIterator().forEachRemaining(key -> {
|
||||
String value = bundle.getString(key);
|
||||
@ -106,6 +98,52 @@ public class VerifyMessageProperties {
|
||||
});
|
||||
}
|
||||
|
||||
private static final Pattern DOUBLE_CURLY_BRACES_START = Pattern.compile("\\{\\{[0-9]");
|
||||
private static final Pattern DOUBLE_CURLY_BRACES_END = Pattern.compile("[0-9]}}");
|
||||
|
||||
private void verifyMessageFormatPlaceholders() {
|
||||
PropertyResourceBundle bundle = getPropertyResourceBundle();
|
||||
|
||||
bundle.getKeys().asIterator().forEachRemaining(key -> {
|
||||
String value = bundle.getString(key);
|
||||
|
||||
if (DOUBLE_CURLY_BRACES_START.matcher(value).find()
|
||||
|| DOUBLE_CURLY_BRACES_END.matcher(value).find()) {
|
||||
messages.add("Double curly braces are not allowed in message formats in the backend for in '" + key + "' for file " + file + ": " + value);
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
private static final Pattern SINGLE_CURLY_BRACE_MIDDLE = Pattern.compile("[^{]\\{[0-9]");
|
||||
private static final Pattern SINGLE_CURLY_BRACE_END = Pattern.compile("[0-9]}$");
|
||||
private static final Pattern SINGLE_CURLY_BRACE_START = Pattern.compile("^\\{[0-9]");
|
||||
|
||||
private void verifyNotMessageFormatPlaceholders() {
|
||||
PropertyResourceBundle bundle = getPropertyResourceBundle();
|
||||
|
||||
bundle.getKeys().asIterator().forEachRemaining(key -> {
|
||||
String value = bundle.getString(key);
|
||||
|
||||
if (SINGLE_CURLY_BRACE_START.matcher(value).find()
|
||||
|| SINGLE_CURLY_BRACE_MIDDLE.matcher(value).find()
|
||||
|| SINGLE_CURLY_BRACE_END.matcher(value).find()) {
|
||||
messages.add("Single curly quotes are not supported as placeholders for the frontend in '" + key + "' for file " + file + ": " + value);
|
||||
}
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
private PropertyResourceBundle getPropertyResourceBundle() {
|
||||
PropertyResourceBundle bundle;
|
||||
try (FileInputStream fis = new FileInputStream(file)) {
|
||||
bundle = new PropertyResourceBundle(fis);
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException("unable to read file " + file, e);
|
||||
}
|
||||
return bundle;
|
||||
}
|
||||
|
||||
PolicyFactory POLICY_SOME_HTML = new org.owasp.html.HtmlPolicyBuilder()
|
||||
.allowElements(
|
||||
"br", "p", "strong", "b"
|
||||
@ -114,12 +152,7 @@ public class VerifyMessageProperties {
|
||||
PolicyFactory POLICY_NO_HTML = new org.owasp.html.HtmlPolicyBuilder().toFactory();
|
||||
|
||||
private void verifySafeHtml() {
|
||||
PropertyResourceBundle bundle;
|
||||
try (FileInputStream fis = new FileInputStream(file)) {
|
||||
bundle = new PropertyResourceBundle(fis);
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException("unable to read file " + file, e);
|
||||
}
|
||||
PropertyResourceBundle bundle = getPropertyResourceBundle();
|
||||
|
||||
PropertyResourceBundle bundleEnglish;
|
||||
String englishFile = file.getAbsolutePath().replaceAll("resources-community", "resources")
|
||||
@ -174,12 +207,7 @@ public class VerifyMessageProperties {
|
||||
// Only check EN original files, as the other files are checked by the translation tools
|
||||
return;
|
||||
}
|
||||
PropertyResourceBundle bundle;
|
||||
try (FileInputStream fis = new FileInputStream(file)) {
|
||||
bundle = new PropertyResourceBundle(fis);
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException("unable to read file " + file, e);
|
||||
}
|
||||
PropertyResourceBundle bundle = getPropertyResourceBundle();
|
||||
|
||||
bundle.getKeys().asIterator().forEachRemaining(key -> {
|
||||
String value = bundle.getString(key);
|
||||
|
||||
@ -51,6 +51,31 @@ class VerifyMessagePropertiesTest {
|
||||
MatcherAssert.assertThat(verify, Matchers.hasItem(Matchers.containsString("Didn't find anchor tag")));
|
||||
}
|
||||
|
||||
@Test
|
||||
void verifySingleCurlyBraces() throws MojoExecutionException {
|
||||
List<String> verify = getFile("doubleCurlyBraces_en.properties").withValidateMessageFormatQuotes(true).verify();
|
||||
MatcherAssert.assertThat(verify, Matchers.hasItem(Matchers.containsString("Double curly braces are not allowed")));
|
||||
}
|
||||
|
||||
@Test
|
||||
void verifyNoDoubleCurlyBrances() throws MojoExecutionException {
|
||||
List<String> verify = getFile("doubleCurlyBraces_en.properties").withValidateMessageFormatQuotes(true).verify();
|
||||
MatcherAssert.assertThat(verify, Matchers.hasItem(Matchers.containsString("Double curly braces are not allowed")));
|
||||
}
|
||||
|
||||
@Test
|
||||
void verifyNoSingleCurlyBraces() throws MojoExecutionException {
|
||||
List<String> verify = getFile("singleCurlyBracesEnd_en.properties").withValidateMessageFormatQuotes(false).verify();
|
||||
MatcherAssert.assertThat(verify, Matchers.hasItem(Matchers.containsString("Single curly quotes are not supported")));
|
||||
|
||||
verify = getFile("singleCurlyBracesMiddle_en.properties").withValidateMessageFormatQuotes(false).verify();
|
||||
MatcherAssert.assertThat(verify, Matchers.hasItem(Matchers.containsString("Single curly quotes are not supported")));
|
||||
|
||||
verify = getFile("singleCurlyBracesStart_en.properties").withValidateMessageFormatQuotes(false).verify();
|
||||
MatcherAssert.assertThat(verify, Matchers.hasItem(Matchers.containsString("Single curly quotes are not supported")));
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
void verifyNoSingleQuoteForMessageFormat() throws MojoExecutionException {
|
||||
List<String> verify = getFile("singleQuotesStart_en.properties").withValidateMessageFormatQuotes(true).verify();
|
||||
|
||||
@ -0,0 +1,17 @@
|
||||
#
|
||||
# Copyright 2025 Red Hat, Inc. and/or its affiliates
|
||||
# and other contributors as indicated by the @author tags.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
key={{0}}
|
||||
@ -0,0 +1,17 @@
|
||||
#
|
||||
# Copyright 2025 Red Hat, Inc. and/or its affiliates
|
||||
# and other contributors as indicated by the @author tags.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
key=x{0}
|
||||
@ -0,0 +1,17 @@
|
||||
#
|
||||
# Copyright 2025 Red Hat, Inc. and/or its affiliates
|
||||
# and other contributors as indicated by the @author tags.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
key=x{0}x
|
||||
@ -0,0 +1,17 @@
|
||||
#
|
||||
# Copyright 2025 Red Hat, Inc. and/or its affiliates
|
||||
# and other contributors as indicated by the @author tags.
|
||||
#
|
||||
# Licensed under the Apache License, Version 2.0 (the "License");
|
||||
# you may not use this file except in compliance with the License.
|
||||
# You may obtain a copy of the License at
|
||||
#
|
||||
# http://www.apache.org/licenses/LICENSE-2.0
|
||||
#
|
||||
# Unless required by applicable law or agreed to in writing, software
|
||||
# distributed under the License is distributed on an "AS IS" BASIS,
|
||||
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
#
|
||||
key={0}x
|
||||
Loading…
x
Reference in New Issue
Block a user